multiple_non_comments = ( (atomic.paragraphs_marker | atomic.paragraph_marker | atomic.sections_marker | atomic.section_marker) + _inner_non_comment.copy().setParseAction(keep_pos).setResultsName("head") + _inner_non_comment_tail) multiple_section_paragraphs = ( section_paragraph.copy().setParseAction(keep_pos).setResultsName("head") + _inner_non_comment_tail) multiple_period_sections = ( atomic.sections_marker + part_section.copy().setParseAction(keep_pos).setResultsName("head") + OneOrMore( atomic.conj_phrases + period_section.copy().setParseAction(keep_pos).setResultsName( "tail", listAllMatches=True))) multiple_appendix_section = ( appendix_with_section.copy().setParseAction(keep_pos).setResultsName( "head") + OneOrMore( Optional(Suppress('(')) + atomic.conj_phrases + _inner_non_comment.copy().setParseAction(keep_pos).setResultsName( "tail", listAllMatches=True) + Optional(Suppress(')')))) # Use "Empty" so we don't rename atomic.appendix multiple_appendices = ( atomic.appendices_marker + (atomic.appendix + Empty()).setParseAction(keep_pos).setResultsName(
"tail", listAllMatches=True) + Optional(Suppress(')'))) multiple_non_comments = ( (atomic.paragraphs_marker | atomic.paragraph_marker | atomic.sections_marker | atomic.section_marker) + _inner_non_comment.copy().setParseAction(keep_pos).setResultsName("head") + _inner_non_comment_tail) multiple_section_paragraphs = ( section_paragraph.copy().setParseAction(keep_pos).setResultsName("head") + _inner_non_comment_tail) multiple_period_sections = ( atomic.sections_marker + part_section.copy().setParseAction(keep_pos).setResultsName("head") + OneOrMore(atomic.conj_phrases + period_section.copy().setParseAction( keep_pos).setResultsName("tail", listAllMatches=True))) multiple_appendix_section = (appendix_with_section.copy().setParseAction( keep_pos).setResultsName("head") + OneOrMore( Optional(Suppress('(')) + atomic.conj_phrases + _inner_non_comment.copy().setParseAction(keep_pos).setResultsName( "tail", listAllMatches=True) + Optional(Suppress(')')))) # Use "Empty" so we don't rename atomic.appendix multiple_appendices = ( atomic.appendices_marker + (atomic.appendix + Empty()).setParseAction(keep_pos).setResultsName("head") + OneOrMore(atomic.conj_phrases + (atomic.appendix + Empty()).setParseAction( keep_pos).setResultsName("tail", listAllMatches=True)))