diff --git "a/camxes-mh.js" "b/camxes-mh.js" new file mode 100644--- /dev/null +++ "b/camxes-mh.js" @@ -0,0 +1,55251 @@ +var camxes = (function(){ + /* + * Generated by PEG.js 0.7.0. + * + * http://pegjs.majda.cz/ + */ + + function quote(s) { + /* + * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a + * string literal except for the closing quote character, backslash, + * carriage return, line separator, paragraph separator, and line feed. + * Any character may appear in the form of an escape sequence. + * + * For portability, we also escape escape all control and non-ASCII + * characters. Note that "\0" and "\v" escape sequences are not used + * because JSHint does not like the first and IE the second. + */ + return '"' + s + .replace(/\\/g, '\\\\') // backslash + .replace(/"/g, '\\"') // closing quote character + .replace(/\x08/g, '\\b') // backspace + .replace(/\t/g, '\\t') // horizontal tab + .replace(/\n/g, '\\n') // line feed + .replace(/\f/g, '\\f') // form feed + .replace(/\r/g, '\\r') // carriage return + .replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape) + + '"'; + } + + var result = { + /* + * Parses the input with a generated parser. If the parsing is successfull, + * returns a value explicitly or implicitly specified by the grammar from + * which the parser was generated (see |PEG.buildParser|). If the parsing is + * unsuccessful, throws |PEG.parser.SyntaxError| describing the error. + */ + parse: function(input, startRule) { + var parseFunctions = { + "text": parse_text, + "intro_null": parse_intro_null, + "text_part_2": parse_text_part_2, + "intro_si_clause": parse_intro_si_clause, + "faho_clause": parse_faho_clause, + "text_1": parse_text_1, + "paragraphs": parse_paragraphs, + "paragraph": parse_paragraph, + "statement": parse_statement, + "statement_1": parse_statement_1, + "statement_2": parse_statement_2, + "statement_3": parse_statement_3, + "fragment": parse_fragment, + "prenex": parse_prenex, + "sentence": parse_sentence, + "sentence_sa": parse_sentence_sa, + "sentence_start": parse_sentence_start, + "subsentence": parse_subsentence, + "bridi_tail": parse_bridi_tail, + "bridi_tail_sa": parse_bridi_tail_sa, + "bridi_tail_start": parse_bridi_tail_start, + "bridi_tail_1": parse_bridi_tail_1, + "bridi_tail_2": parse_bridi_tail_2, + "bridi_tail_3": parse_bridi_tail_3, + "gek_sentence": parse_gek_sentence, + "tail_terms": parse_tail_terms, + "terms": parse_terms, + "terms_1": parse_terms_1, + "terms_2": parse_terms_2, + "pehe_sa": parse_pehe_sa, + "cehe_sa": parse_cehe_sa, + "term": parse_term, + "term_1": parse_term_1, + "term_sa": parse_term_sa, + "term_start": parse_term_start, + "termset": parse_termset, + "gek_termset": parse_gek_termset, + "terms_gik_terms": parse_terms_gik_terms, + "sumti": parse_sumti, + "sumti_1": parse_sumti_1, + "sumti_2": parse_sumti_2, + "sumti_3": parse_sumti_3, + "sumti_4": parse_sumti_4, + "sumti_5": parse_sumti_5, + "sumti_6": parse_sumti_6, + "li_clause": parse_li_clause, + "sumti_tail": parse_sumti_tail, + "sumti_tail_1": parse_sumti_tail_1, + "relative_clauses": parse_relative_clauses, + "relative_clause": parse_relative_clause, + "relative_clause_sa": parse_relative_clause_sa, + "relative_clause_1": parse_relative_clause_1, + "relative_clause_start": parse_relative_clause_start, + "selbri": parse_selbri, + "selbri_1": parse_selbri_1, + "selbri_2": parse_selbri_2, + "selbri_3": parse_selbri_3, + "selbri_4": parse_selbri_4, + "selbri_5": parse_selbri_5, + "selbri_6": parse_selbri_6, + "tanru_unit": parse_tanru_unit, + "tanru_unit_1": parse_tanru_unit_1, + "tanru_unit_2": parse_tanru_unit_2, + "linkargs": parse_linkargs, + "linkargs_1": parse_linkargs_1, + "linkargs_sa": parse_linkargs_sa, + "linkargs_start": parse_linkargs_start, + "links": parse_links, + "links_1": parse_links_1, + "links_sa": parse_links_sa, + "links_start": parse_links_start, + "quantifier": parse_quantifier, + "mex": parse_mex, + "mex_0": parse_mex_0, + "mex_sa": parse_mex_sa, + "mex_start": parse_mex_start, + "rp_clause": parse_rp_clause, + "mex_1": parse_mex_1, + "mex_2": parse_mex_2, + "mex_forethought": parse_mex_forethought, + "fore_operands": parse_fore_operands, + "rp_expression": parse_rp_expression, + "rp_expression_tail": parse_rp_expression_tail, + "operator": parse_operator, + "operator_0": parse_operator_0, + "operator_sa": parse_operator_sa, + "operator_start": parse_operator_start, + "operator_1": parse_operator_1, + "operator_2": parse_operator_2, + "mex_operator": parse_mex_operator, + "operand": parse_operand, + "operand_0": parse_operand_0, + "operand_sa": parse_operand_sa, + "operand_start": parse_operand_start, + "operand_1": parse_operand_1, + "operand_2": parse_operand_2, + "operand_3": parse_operand_3, + "number": parse_number, + "lerfu_string": parse_lerfu_string, + "lerfu_word": parse_lerfu_word, + "ek": parse_ek, + "gihek": parse_gihek, + "gihek_1": parse_gihek_1, + "gihek_sa": parse_gihek_sa, + "jek": parse_jek, + "joik": parse_joik, + "interval": parse_interval, + "joik_ek": parse_joik_ek, + "joik_ek_1": parse_joik_ek_1, + "joik_ek_sa": parse_joik_ek_sa, + "joik_jek": parse_joik_jek, + "gek": parse_gek, + "guhek": parse_guhek, + "gik": parse_gik, + "tag": parse_tag, + "stag": parse_stag, + "tense_modal": parse_tense_modal, + "simple_tense_modal": parse_simple_tense_modal, + "time": parse_time, + "time_offset": parse_time_offset, + "space": parse_space, + "space_offset": parse_space_offset, + "space_interval": parse_space_interval, + "space_int_props": parse_space_int_props, + "interval_property": parse_interval_property, + "free": parse_free, + "xi_clause": parse_xi_clause, + "vocative": parse_vocative, + "indicators": parse_indicators, + "indicator": parse_indicator, + "zei_clause": parse_zei_clause, + "zei_clause_no_pre": parse_zei_clause_no_pre, + "bu_clause": parse_bu_clause, + "bu_clause_no_pre": parse_bu_clause_no_pre, + "zei_tail": parse_zei_tail, + "bu_tail": parse_bu_tail, + "pre_zei_bu": parse_pre_zei_bu, + "dot_star": parse_dot_star, + "post_clause": parse_post_clause, + "pre_clause": parse_pre_clause, + "any_word_SA_handling": parse_any_word_SA_handling, + "known_cmavo_SA": parse_known_cmavo_SA, + "su_clause": parse_su_clause, + "si_clause": parse_si_clause, + "erasable_clause": parse_erasable_clause, + "su_word": parse_su_word, + "BRIVLA_clause": parse_BRIVLA_clause, + "BRIVLA_pre": parse_BRIVLA_pre, + "CMENE_clause": parse_CMENE_clause, + "CMENE_pre": parse_CMENE_pre, + "CMAVO_clause": parse_CMAVO_clause, + "CMAVO_pre": parse_CMAVO_pre, + "A_clause": parse_A_clause, + "A_pre": parse_A_pre, + "BAI_clause": parse_BAI_clause, + "BAI_pre": parse_BAI_pre, + "BAhE_clause": parse_BAhE_clause, + "BAhE_pre": parse_BAhE_pre, + "BAhE_post": parse_BAhE_post, + "BE_clause": parse_BE_clause, + "BE_pre": parse_BE_pre, + "BEI_clause": parse_BEI_clause, + "BEI_pre": parse_BEI_pre, + "BEhO_clause": parse_BEhO_clause, + "BEhO_pre": parse_BEhO_pre, + "BIhE_clause": parse_BIhE_clause, + "BIhE_pre": parse_BIhE_pre, + "BIhI_clause": parse_BIhI_clause, + "BIhI_pre": parse_BIhI_pre, + "BO_clause": parse_BO_clause, + "BO_pre": parse_BO_pre, + "BOI_clause": parse_BOI_clause, + "BOI_pre": parse_BOI_pre, + "BU_clause": parse_BU_clause, + "BU_pre": parse_BU_pre, + "BU_post": parse_BU_post, + "BY_clause": parse_BY_clause, + "BY_pre": parse_BY_pre, + "CAhA_clause": parse_CAhA_clause, + "CAhA_pre": parse_CAhA_pre, + "CAI_clause": parse_CAI_clause, + "CAI_pre": parse_CAI_pre, + "CEI_clause": parse_CEI_clause, + "CEI_pre": parse_CEI_pre, + "CEhE_clause": parse_CEhE_clause, + "CEhE_pre": parse_CEhE_pre, + "CO_clause": parse_CO_clause, + "CO_pre": parse_CO_pre, + "COI_clause": parse_COI_clause, + "COI_pre": parse_COI_pre, + "CU_clause": parse_CU_clause, + "CU_pre": parse_CU_pre, + "CUhE_clause": parse_CUhE_clause, + "CUhE_pre": parse_CUhE_pre, + "DAhO_clause": parse_DAhO_clause, + "DAhO_pre": parse_DAhO_pre, + "DOI_clause": parse_DOI_clause, + "DOI_pre": parse_DOI_pre, + "DOhU_clause": parse_DOhU_clause, + "DOhU_pre": parse_DOhU_pre, + "FA_clause": parse_FA_clause, + "FA_pre": parse_FA_pre, + "FAhA_clause": parse_FAhA_clause, + "FAhA_pre": parse_FAhA_pre, + "FAhO_clause": parse_FAhO_clause, + "FEhE_clause": parse_FEhE_clause, + "FEhE_pre": parse_FEhE_pre, + "FEhU_clause": parse_FEhU_clause, + "FEhU_pre": parse_FEhU_pre, + "FIhO_clause": parse_FIhO_clause, + "FIhO_pre": parse_FIhO_pre, + "FOI_clause": parse_FOI_clause, + "FOI_pre": parse_FOI_pre, + "FUhA_clause": parse_FUhA_clause, + "FUhA_pre": parse_FUhA_pre, + "FUhE_clause": parse_FUhE_clause, + "FUhE_pre": parse_FUhE_pre, + "FUhE_post": parse_FUhE_post, + "FUhO_clause": parse_FUhO_clause, + "FUhO_pre": parse_FUhO_pre, + "GA_clause": parse_GA_clause, + "GA_pre": parse_GA_pre, + "GAhO_clause": parse_GAhO_clause, + "GAhO_pre": parse_GAhO_pre, + "GEhU_clause": parse_GEhU_clause, + "GEhU_pre": parse_GEhU_pre, + "GI_clause": parse_GI_clause, + "GI_pre": parse_GI_pre, + "GIhA_clause": parse_GIhA_clause, + "GIhA_pre": parse_GIhA_pre, + "GOI_clause": parse_GOI_clause, + "GOI_pre": parse_GOI_pre, + "GOhA_clause": parse_GOhA_clause, + "GOhA_pre": parse_GOhA_pre, + "GUhA_clause": parse_GUhA_clause, + "GUhA_pre": parse_GUhA_pre, + "I_clause": parse_I_clause, + "I_pre": parse_I_pre, + "JA_clause": parse_JA_clause, + "JA_pre": parse_JA_pre, + "JAI_clause": parse_JAI_clause, + "JAI_pre": parse_JAI_pre, + "JOhI_clause": parse_JOhI_clause, + "JOhI_pre": parse_JOhI_pre, + "JOI_clause": parse_JOI_clause, + "JOI_pre": parse_JOI_pre, + "KE_clause": parse_KE_clause, + "KE_pre": parse_KE_pre, + "KEhE_clause": parse_KEhE_clause, + "KEhE_pre": parse_KEhE_pre, + "KEI_clause": parse_KEI_clause, + "KEI_pre": parse_KEI_pre, + "KEI_no_SA_handling": parse_KEI_no_SA_handling, + "KI_clause": parse_KI_clause, + "KI_pre": parse_KI_pre, + "KOhA_clause": parse_KOhA_clause, + "KOhA_pre": parse_KOhA_pre, + "KU_clause": parse_KU_clause, + "KU_pre": parse_KU_pre, + "KUhE_clause": parse_KUhE_clause, + "KUhE_pre": parse_KUhE_pre, + "KUhO_clause": parse_KUhO_clause, + "KUhO_pre": parse_KUhO_pre, + "LA_clause": parse_LA_clause, + "LA_pre": parse_LA_pre, + "LAU_clause": parse_LAU_clause, + "LAU_pre": parse_LAU_pre, + "LAhE_clause": parse_LAhE_clause, + "LAhE_pre": parse_LAhE_pre, + "LE_clause": parse_LE_clause, + "LE_pre": parse_LE_pre, + "LEhU_clause": parse_LEhU_clause, + "LEhU_pre": parse_LEhU_pre, + "LEhU_post": parse_LEhU_post, + "LI_clause": parse_LI_clause, + "LI_pre": parse_LI_pre, + "LIhU_clause": parse_LIhU_clause, + "LIhU_pre": parse_LIhU_pre, + "LOhO_clause": parse_LOhO_clause, + "LOhO_pre": parse_LOhO_pre, + "LOhU_clause": parse_LOhU_clause, + "LOhU_pre": parse_LOhU_pre, + "LU_clause": parse_LU_clause, + "LU_pre": parse_LU_pre, + "LUhU_clause": parse_LUhU_clause, + "LUhU_pre": parse_LUhU_pre, + "MAhO_clause": parse_MAhO_clause, + "MAhO_pre": parse_MAhO_pre, + "MAI_clause": parse_MAI_clause, + "MAI_pre": parse_MAI_pre, + "ME_clause": parse_ME_clause, + "ME_pre": parse_ME_pre, + "MEhU_clause": parse_MEhU_clause, + "MEhU_pre": parse_MEhU_pre, + "MOhE_clause": parse_MOhE_clause, + "MOhE_pre": parse_MOhE_pre, + "MOhI_clause": parse_MOhI_clause, + "MOhI_pre": parse_MOhI_pre, + "MOI_clause": parse_MOI_clause, + "MOI_pre": parse_MOI_pre, + "NA_clause": parse_NA_clause, + "NA_pre": parse_NA_pre, + "NAI_clause": parse_NAI_clause, + "NAI_pre": parse_NAI_pre, + "NAhE_clause": parse_NAhE_clause, + "NAhE_pre": parse_NAhE_pre, + "NAhU_clause": parse_NAhU_clause, + "NAhU_pre": parse_NAhU_pre, + "NIhE_clause": parse_NIhE_clause, + "NIhE_pre": parse_NIhE_pre, + "NIhO_clause": parse_NIhO_clause, + "NIhO_pre": parse_NIhO_pre, + "NIhO_post": parse_NIhO_post, + "NOI_clause": parse_NOI_clause, + "NOI_pre": parse_NOI_pre, + "NU_clause": parse_NU_clause, + "NU_pre": parse_NU_pre, + "NUhA_clause": parse_NUhA_clause, + "NUhA_pre": parse_NUhA_pre, + "NUhI_clause": parse_NUhI_clause, + "NUhI_pre": parse_NUhI_pre, + "NUhU_clause": parse_NUhU_clause, + "NUhU_pre": parse_NUhU_pre, + "PA_clause": parse_PA_clause, + "PA_pre": parse_PA_pre, + "PEhE_clause": parse_PEhE_clause, + "PEhE_pre": parse_PEhE_pre, + "PEhO_clause": parse_PEhO_clause, + "PEhO_pre": parse_PEhO_pre, + "PU_clause": parse_PU_clause, + "PU_pre": parse_PU_pre, + "RAhO_clause": parse_RAhO_clause, + "RAhO_pre": parse_RAhO_pre, + "ROI_clause": parse_ROI_clause, + "ROI_pre": parse_ROI_pre, + "SA_clause": parse_SA_clause, + "SA_pre": parse_SA_pre, + "SA_post": parse_SA_post, + "SE_clause": parse_SE_clause, + "SE_pre": parse_SE_pre, + "SEI_clause": parse_SEI_clause, + "SEI_pre": parse_SEI_pre, + "SEhU_clause": parse_SEhU_clause, + "SEhU_pre": parse_SEhU_pre, + "SI_clause": parse_SI_clause, + "SOI_clause": parse_SOI_clause, + "SOI_pre": parse_SOI_pre, + "SU_clause": parse_SU_clause, + "SU_pre": parse_SU_pre, + "TAhE_clause": parse_TAhE_clause, + "TAhE_pre": parse_TAhE_pre, + "TEhU_clause": parse_TEhU_clause, + "TEhU_pre": parse_TEhU_pre, + "TEI_clause": parse_TEI_clause, + "TEI_pre": parse_TEI_pre, + "TO_clause": parse_TO_clause, + "TO_pre": parse_TO_pre, + "TOI_clause": parse_TOI_clause, + "TOI_pre": parse_TOI_pre, + "TUhE_clause": parse_TUhE_clause, + "TUhE_pre": parse_TUhE_pre, + "TUhE_post": parse_TUhE_post, + "TUhU_clause": parse_TUhU_clause, + "TUhU_pre": parse_TUhU_pre, + "UI_clause": parse_UI_clause, + "UI_pre": parse_UI_pre, + "VA_clause": parse_VA_clause, + "VA_pre": parse_VA_pre, + "VAU_clause": parse_VAU_clause, + "VAU_pre": parse_VAU_pre, + "VEI_clause": parse_VEI_clause, + "VEI_pre": parse_VEI_pre, + "VEhO_clause": parse_VEhO_clause, + "VEhO_pre": parse_VEhO_pre, + "VUhU_clause": parse_VUhU_clause, + "VUhU_pre": parse_VUhU_pre, + "VEhA_clause": parse_VEhA_clause, + "VEhA_pre": parse_VEhA_pre, + "VIhA_clause": parse_VIhA_clause, + "VIhA_pre": parse_VIhA_pre, + "VUhO_clause": parse_VUhO_clause, + "VUhO_pre": parse_VUhO_pre, + "XI_clause": parse_XI_clause, + "XI_pre": parse_XI_pre, + "ZAhO_clause": parse_ZAhO_clause, + "ZAhO_pre": parse_ZAhO_pre, + "ZEhA_clause": parse_ZEhA_clause, + "ZEhA_pre": parse_ZEhA_pre, + "ZEI_clause": parse_ZEI_clause, + "ZEI_pre": parse_ZEI_pre, + "ZEI_post": parse_ZEI_post, + "ZI_clause": parse_ZI_clause, + "ZI_pre": parse_ZI_pre, + "ZIhE_clause": parse_ZIhE_clause, + "ZIhE_pre": parse_ZIhE_pre, + "ZO_clause": parse_ZO_clause, + "ZO_pre": parse_ZO_pre, + "ZOI_clause": parse_ZOI_clause, + "ZOI_pre": parse_ZOI_pre, + "ZOhU_clause": parse_ZOhU_clause, + "ZOhU_pre": parse_ZOhU_pre, + "CMENE": parse_CMENE, + "BRIVLA": parse_BRIVLA, + "gismu_2": parse_gismu_2, + "CMAVO": parse_CMAVO, + "lojban_word": parse_lojban_word, + "any_word": parse_any_word, + "cmene": parse_cmene, + "consonant_final": parse_consonant_final, + "cmavo": parse_cmavo, + "CVCy_lujvo": parse_CVCy_lujvo, + "cmavo_form": parse_cmavo_form, + "brivla": parse_brivla, + "brivla_core": parse_brivla_core, + "stressed_initial_rafsi": parse_stressed_initial_rafsi, + "initial_rafsi": parse_initial_rafsi, + "any_extended_rafsi": parse_any_extended_rafsi, + "fuhivla": parse_fuhivla, + "stressed_extended_rafsi": parse_stressed_extended_rafsi, + "extended_rafsi": parse_extended_rafsi, + "stressed_brivla_rafsi": parse_stressed_brivla_rafsi, + "brivla_rafsi": parse_brivla_rafsi, + "stressed_fuhivla_rafsi": parse_stressed_fuhivla_rafsi, + "fuhivla_rafsi": parse_fuhivla_rafsi, + "fuhivla_head": parse_fuhivla_head, + "brivla_head": parse_brivla_head, + "slinkuhi": parse_slinkuhi, + "rafsi_string": parse_rafsi_string, + "gismu": parse_gismu, + "CVV_final_rafsi": parse_CVV_final_rafsi, + "short_final_rafsi": parse_short_final_rafsi, + "stressed_y_rafsi": parse_stressed_y_rafsi, + "stressed_y_less_rafsi": parse_stressed_y_less_rafsi, + "stressed_long_rafsi": parse_stressed_long_rafsi, + "stressed_CVC_rafsi": parse_stressed_CVC_rafsi, + "stressed_CCV_rafsi": parse_stressed_CCV_rafsi, + "stressed_CVV_rafsi": parse_stressed_CVV_rafsi, + "y_rafsi": parse_y_rafsi, + "y_less_rafsi": parse_y_less_rafsi, + "long_rafsi": parse_long_rafsi, + "CVC_rafsi": parse_CVC_rafsi, + "CCV_rafsi": parse_CCV_rafsi, + "CVV_rafsi": parse_CVV_rafsi, + "r_hyphen": parse_r_hyphen, + "final_syllable": parse_final_syllable, + "stressed_syllable": parse_stressed_syllable, + "stressed_diphthong": parse_stressed_diphthong, + "stressed_vowel": parse_stressed_vowel, + "unstressed_syllable": parse_unstressed_syllable, + "unstressed_diphthong": parse_unstressed_diphthong, + "unstressed_vowel": parse_unstressed_vowel, + "stress": parse_stress, + "stressed": parse_stressed, + "any_syllable": parse_any_syllable, + "syllable": parse_syllable, + "consonantal_syllable": parse_consonantal_syllable, + "coda": parse_coda, + "onset": parse_onset, + "nucleus": parse_nucleus, + "glide": parse_glide, + "diphthong": parse_diphthong, + "vowel": parse_vowel, + "a": parse_a, + "e": parse_e, + "i": parse_i, + "o": parse_o, + "u": parse_u, + "y": parse_y, + "cluster": parse_cluster, + "initial_pair": parse_initial_pair, + "initial": parse_initial, + "affricate": parse_affricate, + "liquid": parse_liquid, + "other": parse_other, + "sibilant": parse_sibilant, + "consonant": parse_consonant, + "syllabic": parse_syllabic, + "voiced": parse_voiced, + "unvoiced": parse_unvoiced, + "l": parse_l, + "m": parse_m, + "n": parse_n, + "r": parse_r, + "b": parse_b, + "d": parse_d, + "g": parse_g, + "v": parse_v, + "j": parse_j, + "z": parse_z, + "s": parse_s, + "c": parse_c, + "x": parse_x, + "k": parse_k, + "f": parse_f, + "p": parse_p, + "t": parse_t, + "h": parse_h, + "digit": parse_digit, + "post_word": parse_post_word, + "pause": parse_pause, + "EOF": parse_EOF, + "comma": parse_comma, + "non_lojban_word": parse_non_lojban_word, + "non_space": parse_non_space, + "space_char": parse_space_char, + "spaces": parse_spaces, + "initial_spaces": parse_initial_spaces, + "ybu": parse_ybu, + "lujvo": parse_lujvo, + "A": parse_A, + "BAI": parse_BAI, + "BAhE": parse_BAhE, + "BE": parse_BE, + "BEI": parse_BEI, + "BEhO": parse_BEhO, + "BIhE": parse_BIhE, + "BIhI": parse_BIhI, + "BO": parse_BO, + "BOI": parse_BOI, + "BU": parse_BU, + "BY": parse_BY, + "CAhA": parse_CAhA, + "CAI": parse_CAI, + "CEI": parse_CEI, + "CEhE": parse_CEhE, + "CO": parse_CO, + "COI": parse_COI, + "CU": parse_CU, + "CUhE": parse_CUhE, + "DAhO": parse_DAhO, + "DOI": parse_DOI, + "DOhU": parse_DOhU, + "FA": parse_FA, + "FAhA": parse_FAhA, + "FAhO": parse_FAhO, + "FEhE": parse_FEhE, + "FEhU": parse_FEhU, + "FIhO": parse_FIhO, + "FOI": parse_FOI, + "FUhA": parse_FUhA, + "FUhE": parse_FUhE, + "FUhO": parse_FUhO, + "GA": parse_GA, + "GAhO": parse_GAhO, + "GEhU": parse_GEhU, + "GI": parse_GI, + "GIhA": parse_GIhA, + "GOI": parse_GOI, + "GOhA": parse_GOhA, + "GUhA": parse_GUhA, + "I": parse_I, + "JA": parse_JA, + "JAI": parse_JAI, + "JOhI": parse_JOhI, + "JOI": parse_JOI, + "KE": parse_KE, + "KEhE": parse_KEhE, + "KEI": parse_KEI, + "KI": parse_KI, + "KOhA": parse_KOhA, + "KU": parse_KU, + "KUhE": parse_KUhE, + "KUhO": parse_KUhO, + "LA": parse_LA, + "LAU": parse_LAU, + "LAhE": parse_LAhE, + "LE": parse_LE, + "LEhU": parse_LEhU, + "LI": parse_LI, + "LIhU": parse_LIhU, + "LOhO": parse_LOhO, + "LOhU": parse_LOhU, + "LU": parse_LU, + "LUhU": parse_LUhU, + "MAhO": parse_MAhO, + "MAI": parse_MAI, + "ME": parse_ME, + "MEhU": parse_MEhU, + "MOhE": parse_MOhE, + "MOhI": parse_MOhI, + "MOI": parse_MOI, + "NA": parse_NA, + "NAI": parse_NAI, + "NAhE": parse_NAhE, + "NAhU": parse_NAhU, + "NIhE": parse_NIhE, + "NIhO": parse_NIhO, + "NOI": parse_NOI, + "NU": parse_NU, + "NUhA": parse_NUhA, + "NUhI": parse_NUhI, + "NUhU": parse_NUhU, + "PA": parse_PA, + "PEhE": parse_PEhE, + "PEhO": parse_PEhO, + "PU": parse_PU, + "RAhO": parse_RAhO, + "ROI": parse_ROI, + "SA": parse_SA, + "SE": parse_SE, + "SEI": parse_SEI, + "SEhU": parse_SEhU, + "SI": parse_SI, + "SOI": parse_SOI, + "SU": parse_SU, + "TAhE": parse_TAhE, + "TEhU": parse_TEhU, + "TEI": parse_TEI, + "TO": parse_TO, + "TOI": parse_TOI, + "TUhE": parse_TUhE, + "TUhU": parse_TUhU, + "UI": parse_UI, + "VA": parse_VA, + "VAU": parse_VAU, + "VEI": parse_VEI, + "VEhO": parse_VEhO, + "VUhU": parse_VUhU, + "VEhA": parse_VEhA, + "VIhA": parse_VIhA, + "VUhO": parse_VUhO, + "XI": parse_XI, + "Y": parse_Y, + "ZAhO": parse_ZAhO, + "ZEhA": parse_ZEhA, + "ZEI": parse_ZEI, + "ZI": parse_ZI, + "ZIhE": parse_ZIhE, + "ZO": parse_ZO, + "ZOI": parse_ZOI, + "ZOhU": parse_ZOhU + }; + + if (startRule !== undefined) { + if (parseFunctions[startRule] === undefined) { + throw new Error("Invalid rule name: " + quote(startRule) + "."); + } + } else { + startRule = "text"; + } + + var pos = 0; + var reportFailures = 0; + var rightmostFailuresPos = 0; + var rightmostFailuresExpected = []; + var cache = {}; + + function padLeft(input, padding, length) { + var result = input; + + var padLength = length - input.length; + for (var i = 0; i < padLength; i++) { + result = padding + result; + } + + return result; + } + + function escape(ch) { + var charCode = ch.charCodeAt(0); + var escapeChar; + var length; + + if (charCode <= 0xFF) { + escapeChar = 'x'; + length = 2; + } else { + escapeChar = 'u'; + length = 4; + } + + return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length); + } + + function matchFailed(failure) { + if (pos < rightmostFailuresPos) { + return; + } + + if (pos > rightmostFailuresPos) { + rightmostFailuresPos = pos; + rightmostFailuresExpected = []; + } + + rightmostFailuresExpected.push(failure); + } + + function parse_text() { + var cacheKey = "text@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1, pos2, pos3; + + reportFailures++; + pos0 = pos; + pos1 = pos; + result0 = parse_intro_null(); + if (result0 !== null) { + result1 = []; + result2 = parse_NAI_clause(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_NAI_clause(); + } + if (result1 !== null) { + result2 = parse_text_part_2(); + if (result2 !== null) { + pos2 = pos; + pos3 = pos; + reportFailures++; + result3 = parse_text_1(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos3; + } + if (result3 !== null) { + result4 = parse_joik_jek(); + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos2; + } + } else { + result3 = null; + pos = pos2; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_text_1(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = parse_faho_clause(); + if (result5 !== null) { + result6 = parse_EOF(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("text", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("text"); + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_intro_null() { + var cacheKey = "intro_null@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_su_clause(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_su_clause(); + } + if (result1 !== null) { + result2 = parse_intro_si_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node_nonempty("intro_null", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_text_part_2() { + var cacheKey = "text_part_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result1 = parse_CMENE_clause(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_CMENE_clause(); + } + } else { + result0 = null; + } + if (result0 === null) { + result0 = parse_indicators(); + result0 = result0 !== null ? result0 : ""; + } + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node_nonempty("text_part_2", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_intro_si_clause() { + var cacheKey = "intro_si_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_si_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_SI_clause(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_SI_clause(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node_nonempty("intro_si_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_faho_clause() { + var cacheKey = "faho_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FAhO_clause(); + if (result0 !== null) { + result1 = parse_dot_star(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("faho_clause", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_text_1() { + var cacheKey = "text_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_I_clause(); + if (result0 !== null) { + result1 = parse_jek(); + if (result1 === null) { + result1 = parse_joik(); + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + pos2 = pos; + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_BO_clause(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_text_1(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result1 = parse_NIhO_clause(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_NIhO_clause(); + } + } else { + result0 = null; + } + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = []; + result3 = parse_su_clause(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_su_clause(); + } + if (result2 !== null) { + result3 = parse_paragraphs(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_paragraphs(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("text_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_paragraphs() { + var cacheKey = "paragraphs@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_paragraph(); + if (result0 !== null) { + pos2 = pos; + result2 = parse_NIhO_clause(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_NIhO_clause(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = []; + result4 = parse_su_clause(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_su_clause(); + } + if (result3 !== null) { + result4 = parse_paragraphs(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("paragraphs", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_paragraph() { + var cacheKey = "paragraph@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + result0 = parse_statement(); + if (result0 === null) { + result0 = parse_fragment(); + } + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_I_clause(); + if (result2 !== null) { + pos3 = pos; + reportFailures++; + result3 = parse_jek(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos3; + } + if (result3 !== null) { + pos3 = pos; + reportFailures++; + result4 = parse_joik(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos3; + } + if (result4 !== null) { + pos3 = pos; + reportFailures++; + result5 = parse_joik_jek(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos3; + } + if (result5 !== null) { + result6 = []; + result7 = parse_free(); + while (result7 !== null) { + result6.push(result7); + result7 = parse_free(); + } + if (result6 !== null) { + result7 = parse_statement(); + if (result7 === null) { + result7 = parse_fragment(); + } + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result2 = [result2, result3, result4, result5, result6, result7]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_I_clause(); + if (result2 !== null) { + pos3 = pos; + reportFailures++; + result3 = parse_jek(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos3; + } + if (result3 !== null) { + pos3 = pos; + reportFailures++; + result4 = parse_joik(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos3; + } + if (result4 !== null) { + pos3 = pos; + reportFailures++; + result5 = parse_joik_jek(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos3; + } + if (result5 !== null) { + result6 = []; + result7 = parse_free(); + while (result7 !== null) { + result6.push(result7); + result7 = parse_free(); + } + if (result6 !== null) { + result7 = parse_statement(); + if (result7 === null) { + result7 = parse_fragment(); + } + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result2 = [result2, result3, result4, result5, result6, result7]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("paragraph", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_statement() { + var cacheKey = "statement@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + result0 = parse_statement_1(); + if (result0 === null) { + pos1 = pos; + result0 = parse_prenex(); + if (result0 !== null) { + result1 = parse_statement(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("statement", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_statement_1() { + var cacheKey = "statement_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_statement_2(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_I_clause(); + if (result2 !== null) { + result3 = parse_joik_jek(); + if (result3 !== null) { + result4 = parse_statement_2(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_I_clause(); + if (result2 !== null) { + result3 = parse_joik_jek(); + if (result3 !== null) { + result4 = parse_statement_2(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("statement_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_statement_2() { + var cacheKey = "statement_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_statement_3(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_I_clause(); + if (result1 !== null) { + result2 = parse_jek(); + if (result2 === null) { + result2 = parse_joik(); + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_BO_clause(); + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_statement_2(); + if (result6 !== null) { + result1 = [result1, result2, result3, result4, result5, result6]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_statement_3(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_I_clause(); + if (result1 !== null) { + result2 = parse_jek(); + if (result2 === null) { + result2 = parse_joik(); + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_BO_clause(); + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result1 = [result1, result2, result3, result4, result5]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("statement_2", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_statement_3() { + var cacheKey = "statement_3@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1; + + pos0 = pos; + result0 = parse_sentence(); + if (result0 === null) { + pos1 = pos; + result0 = parse_tag(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_TUhE_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = parse_text_1(); + if (result3 !== null) { + result4 = parse_TUhU_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("statement_3", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_fragment() { + var cacheKey = "fragment@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_prenex(); + if (result0 === null) { + pos1 = pos; + result0 = parse_terms(); + if (result0 !== null) { + result1 = parse_VAU_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ek(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_gihek(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_quantifier(); + if (result0 === null) { + pos1 = pos; + result0 = parse_NA_clause(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_JA_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_relative_clauses(); + if (result0 === null) { + result0 = parse_links(); + if (result0 === null) { + result0 = parse_linkargs(); + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("prenex", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_prenex() { + var cacheKey = "prenex@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_terms(); + if (result0 !== null) { + result1 = parse_ZOhU_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("prenex", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sentence() { + var cacheKey = "sentence@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + result0 = parse_terms(); + if (result0 !== null) { + result1 = []; + result2 = parse_bridi_tail_sa(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_bridi_tail_sa(); + } + if (result1 !== null) { + result2 = parse_CU_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_bridi_tail_sa(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_bridi_tail_sa(); + } + if (result1 !== null) { + result2 = parse_bridi_tail(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sentence", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sentence_sa() { + var cacheKey = "sentence_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_sentence_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_sentence_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_sentence_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_sentence_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_sentence_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_text_1(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sentence_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sentence_start() { + var cacheKey = "sentence_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_I_pre(); + if (result0 === null) { + result0 = parse_NIhO_pre(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sentence_start", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_subsentence() { + var cacheKey = "subsentence@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + result0 = parse_sentence(); + if (result0 === null) { + pos1 = pos; + result0 = parse_prenex(); + if (result0 !== null) { + result1 = parse_subsentence(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("subsentence", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bridi_tail() { + var cacheKey = "bridi_tail@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_bridi_tail_1(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_gihek(); + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_KE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_bridi_tail(); + if (result5 !== null) { + result6 = parse_KEhE_clause(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result7 = []; + result8 = parse_free(); + while (result8 !== null) { + result7.push(result8); + result8 = parse_free(); + } + if (result7 !== null) { + result8 = parse_tail_terms(); + if (result8 !== null) { + result1 = [result1, result2, result3, result4, result5, result6, result7, result8]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bridi_tail", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bridi_tail_sa() { + var cacheKey = "bridi_tail_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_bridi_tail_start(); + if (result0 !== null) { + result1 = []; + result2 = parse_term(); + if (result2 === null) { + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_bridi_tail_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_bridi_tail_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + while (result2 !== null) { + result1.push(result2); + result2 = parse_term(); + if (result2 === null) { + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_bridi_tail_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_bridi_tail_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_bridi_tail(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bridi_tail_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bridi_tail_start() { + var cacheKey = "bridi_tail_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_ME_clause(); + if (result0 === null) { + result0 = parse_NUhA_clause(); + if (result0 === null) { + result0 = parse_NU_clause(); + if (result0 === null) { + pos1 = pos; + result0 = parse_NA_clause(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_KU_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NAhE_clause(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_BO_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_selbri(); + if (result0 === null) { + pos1 = pos; + result0 = parse_tag(); + if (result0 !== null) { + result1 = parse_bridi_tail_start(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_KE_clause(); + if (result0 !== null) { + result1 = parse_bridi_tail_start(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_bridi_tail(); + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bridi_tail_start", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bridi_tail_1() { + var cacheKey = "bridi_tail_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_bridi_tail_2(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_gihek(); + if (result2 !== null) { + pos3 = pos; + reportFailures++; + pos4 = pos; + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_BO_clause(); + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos4; + } + } else { + result3 = null; + pos = pos4; + } + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos3; + } + if (result3 !== null) { + pos3 = pos; + reportFailures++; + pos4 = pos; + result4 = parse_stag(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = parse_KE_clause(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos4; + } + } else { + result4 = null; + pos = pos4; + } + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos3; + } + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_bridi_tail_2(); + if (result6 !== null) { + result7 = parse_tail_terms(); + if (result7 !== null) { + result2 = [result2, result3, result4, result5, result6, result7]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_gihek(); + if (result2 !== null) { + pos3 = pos; + reportFailures++; + pos4 = pos; + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_BO_clause(); + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos4; + } + } else { + result3 = null; + pos = pos4; + } + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos3; + } + if (result3 !== null) { + pos3 = pos; + reportFailures++; + pos4 = pos; + result4 = parse_stag(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = parse_KE_clause(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos4; + } + } else { + result4 = null; + pos = pos4; + } + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos3; + } + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_bridi_tail_2(); + if (result6 !== null) { + result7 = parse_tail_terms(); + if (result7 !== null) { + result2 = [result2, result3, result4, result5, result6, result7]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bridi_tail_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bridi_tail_2() { + var cacheKey = "bridi_tail_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_bridi_tail_3(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_gihek(); + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_BO_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_bridi_tail_2(); + if (result5 !== null) { + result6 = parse_tail_terms(); + if (result6 !== null) { + result1 = [result1, result2, result3, result4, result5, result6]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bridi_tail_2", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bridi_tail_3() { + var cacheKey = "bridi_tail_3@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_selbri(); + if (result0 !== null) { + result1 = parse_tail_terms(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_gek_sentence(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bridi_tail_3", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gek_sentence() { + var cacheKey = "gek_sentence@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_gek(); + if (result0 !== null) { + result1 = parse_subsentence(); + if (result1 !== null) { + result2 = parse_gik(); + if (result2 !== null) { + result3 = parse_subsentence(); + if (result3 !== null) { + result4 = parse_tail_terms(); + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_tag(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_KE_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = parse_gek_sentence(); + if (result3 !== null) { + result4 = parse_KEhE_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_gek_sentence(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gek_sentence", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_tail_terms() { + var cacheKey = "tail_terms@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_terms(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_VAU_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node_nonempty("tail_terms", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_terms() { + var cacheKey = "terms@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result1 = parse_terms_1(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_terms_1(); + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("terms", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_terms_1() { + var cacheKey = "terms_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_terms_2(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = []; + result3 = parse_pehe_sa(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_pehe_sa(); + } + if (result2 !== null) { + result3 = parse_PEhE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_joik_jek(); + if (result5 !== null) { + result6 = parse_terms_2(); + if (result6 !== null) { + result2 = [result2, result3, result4, result5, result6]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = []; + result3 = parse_pehe_sa(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_pehe_sa(); + } + if (result2 !== null) { + result3 = parse_PEhE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_joik_jek(); + if (result5 !== null) { + result6 = parse_terms_2(); + if (result6 !== null) { + result2 = [result2, result3, result4, result5, result6]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("terms_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_terms_2() { + var cacheKey = "terms_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_term(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = []; + result3 = parse_cehe_sa(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_cehe_sa(); + } + if (result2 !== null) { + result3 = parse_CEhE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_term(); + if (result5 !== null) { + result2 = [result2, result3, result4, result5]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = []; + result3 = parse_cehe_sa(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_cehe_sa(); + } + if (result2 !== null) { + result3 = parse_CEhE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_term(); + if (result5 !== null) { + result2 = [result2, result3, result4, result5]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("terms_2", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_pehe_sa() { + var cacheKey = "pehe_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_PEhE_clause(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_PEhE_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_PEhE_clause(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_PEhE_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_PEhE_clause(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("pehe_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_cehe_sa() { + var cacheKey = "cehe_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_CEhE_clause(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_CEhE_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_CEhE_clause(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_CEhE_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_CEhE_clause(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("cehe_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_term() { + var cacheKey = "term@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_term_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_term_sa(); + } + if (result0 !== null) { + result1 = parse_term_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("term", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_term_1() { + var cacheKey = "term_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_sumti(); + if (result0 === null) { + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_gek(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_tag(); + if (result1 === null) { + pos2 = pos; + result1 = parse_FA_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_sumti(); + if (result2 === null) { + pos2 = pos; + result2 = parse_KU_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_termset(); + if (result0 === null) { + pos1 = pos; + result0 = parse_NA_clause(); + if (result0 !== null) { + result1 = parse_KU_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("term_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_term_sa() { + var cacheKey = "term_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_term_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_term_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_term_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_term_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_term_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_term_1(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("term_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_term_start() { + var cacheKey = "term_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + result0 = parse_term_1(); + if (result0 === null) { + result0 = parse_LA_clause(); + if (result0 === null) { + result0 = parse_LE_clause(); + if (result0 === null) { + result0 = parse_LI_clause(); + if (result0 === null) { + result0 = parse_LU_clause(); + if (result0 === null) { + result0 = parse_LAhE_clause(); + if (result0 === null) { + pos1 = pos; + result0 = parse_quantifier(); + if (result0 !== null) { + result1 = parse_term_start(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_gek(); + if (result0 !== null) { + result1 = parse_sumti(); + if (result1 !== null) { + result2 = parse_gik(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_FA_clause(); + if (result0 === null) { + pos1 = pos; + result0 = parse_tag(); + if (result0 !== null) { + result1 = parse_term_start(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("term_start", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_termset() { + var cacheKey = "termset@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10; + var pos0, pos1; + + pos0 = pos; + result0 = parse_gek_termset(); + if (result0 === null) { + pos1 = pos; + result0 = parse_NUhI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_gek(); + if (result2 !== null) { + result3 = parse_terms(); + if (result3 !== null) { + result4 = parse_NUhU_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_gik(); + if (result6 !== null) { + result7 = parse_terms(); + if (result7 !== null) { + result8 = parse_NUhU_clause(); + result8 = result8 !== null ? result8 : ""; + if (result8 !== null) { + result9 = []; + result10 = parse_free(); + while (result10 !== null) { + result9.push(result10); + result10 = parse_free(); + } + if (result9 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NUhI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_terms(); + if (result2 !== null) { + result3 = parse_NUhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, termset) {return _node("termset", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gek_termset() { + var cacheKey = "gek_termset@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_gek(); + if (result0 !== null) { + result1 = parse_terms_gik_terms(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gek_termset", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_terms_gik_terms() { + var cacheKey = "terms_gik_terms@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_term(); + if (result0 !== null) { + result1 = parse_gik(); + if (result1 === null) { + result1 = parse_terms_gik_terms(); + } + if (result1 !== null) { + result2 = parse_term(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("terms_gik_terms", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti() { + var cacheKey = "sumti@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_sumti_1(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_VUhO_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = parse_relative_clauses(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_1() { + var cacheKey = "sumti_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_sumti_2(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_joik_ek(); + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_KE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_sumti(); + if (result5 !== null) { + result6 = parse_KEhE_clause(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result7 = []; + result8 = parse_free(); + while (result8 !== null) { + result7.push(result8); + result8 = parse_free(); + } + if (result7 !== null) { + result1 = [result1, result2, result3, result4, result5, result6, result7]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_2() { + var cacheKey = "sumti_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_sumti_3(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_joik_ek(); + if (result2 !== null) { + result3 = parse_sumti_3(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_joik_ek(); + if (result2 !== null) { + result3 = parse_sumti_3(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_2", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_3() { + var cacheKey = "sumti_3@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_sumti_4(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_joik_ek(); + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_BO_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_sumti_3(); + if (result5 !== null) { + result1 = [result1, result2, result3, result4, result5]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_3", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_4() { + var cacheKey = "sumti_4@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + result0 = parse_sumti_5(); + if (result0 === null) { + pos1 = pos; + result0 = parse_gek(); + if (result0 !== null) { + result1 = parse_sumti(); + if (result1 !== null) { + result2 = parse_gik(); + if (result2 !== null) { + result3 = parse_sumti_4(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_4", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_5() { + var cacheKey = "sumti_5@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_quantifier(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_sumti_6(); + if (result1 !== null) { + result2 = parse_relative_clauses(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_quantifier(); + if (result0 !== null) { + result1 = parse_selbri(); + if (result1 !== null) { + result2 = parse_KU_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_relative_clauses(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_5", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_6() { + var cacheKey = "sumti_6@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZO_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ZOI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_LOhU_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_lerfu_string(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_MOI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_BOI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_LU_clause(); + if (result0 !== null) { + result1 = parse_text(); + if (result1 !== null) { + result2 = parse_LIhU_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + pos2 = pos; + result0 = parse_LAhE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 === null) { + pos2 = pos; + result0 = parse_NAhE_clause(); + if (result0 !== null) { + result1 = parse_BO_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } + if (result0 !== null) { + result1 = parse_relative_clauses(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_sumti(); + if (result2 !== null) { + result3 = parse_LUhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_KOhA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_LA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_relative_clauses(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result4 = parse_CMENE_clause(); + if (result4 !== null) { + result3 = []; + while (result4 !== null) { + result3.push(result4); + result4 = parse_CMENE_clause(); + } + } else { + result3 = null; + } + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_LA_clause(); + if (result0 === null) { + result0 = parse_LE_clause(); + } + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_sumti_tail(); + if (result2 !== null) { + result3 = parse_KU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_li_clause(); + } + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_6", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_li_clause() { + var cacheKey = "li_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_mex(); + if (result2 !== null) { + result3 = parse_LOhO_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("li_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_tail() { + var cacheKey = "sumti_tail@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + result0 = parse_sumti_6(); + if (result0 !== null) { + result1 = parse_relative_clauses(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_sumti_tail_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_relative_clauses(); + if (result0 !== null) { + result1 = parse_sumti_tail_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_tail", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sumti_tail_1() { + var cacheKey = "sumti_tail_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_selbri(); + if (result0 !== null) { + result1 = parse_relative_clauses(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_quantifier(); + if (result0 !== null) { + result1 = parse_selbri(); + if (result1 !== null) { + result2 = parse_relative_clauses(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_quantifier(); + if (result0 !== null) { + result1 = parse_sumti(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("sumti_tail_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_relative_clauses() { + var cacheKey = "relative_clauses@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_relative_clause(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_ZIhE_clause(); + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_relative_clause(); + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_ZIhE_clause(); + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_relative_clause(); + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("relative_clauses", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_relative_clause() { + var cacheKey = "relative_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_relative_clause_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_relative_clause_sa(); + } + if (result0 !== null) { + result1 = parse_relative_clause_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("relative_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_relative_clause_sa() { + var cacheKey = "relative_clause_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_relative_clause_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_relative_clause_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_relative_clause_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_relative_clause_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_relative_clause_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_relative_clause_1(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("relative_clause_sa", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_relative_clause_1() { + var cacheKey = "relative_clause_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GOI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_term(); + if (result2 !== null) { + result3 = parse_GEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NOI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_subsentence(); + if (result2 !== null) { + result3 = parse_KUhO_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("relative_clause_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_relative_clause_start() { + var cacheKey = "relative_clause_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_GOI_clause(); + if (result0 === null) { + result0 = parse_NOI_clause(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("relative_clause_start", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri() { + var cacheKey = "selbri@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_tag(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_selbri_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri_1() { + var cacheKey = "selbri_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + result0 = parse_selbri_2(); + if (result0 === null) { + pos1 = pos; + result0 = parse_NA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_selbri(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri_2() { + var cacheKey = "selbri_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_selbri_3(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_CO_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = parse_selbri_2(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri_2", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri_3() { + var cacheKey = "selbri_3@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result1 = parse_selbri_4(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_selbri_4(); + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri_3", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri_4() { + var cacheKey = "selbri_4@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_selbri_5(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_selbri_5(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + if (result2 === null) { + pos2 = pos; + result2 = parse_joik(); + if (result2 !== null) { + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_KE_clause(); + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_selbri_3(); + if (result6 !== null) { + result7 = parse_KEhE_clause(); + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result8 = []; + result9 = parse_free(); + while (result9 !== null) { + result8.push(result9); + result9 = parse_free(); + } + if (result8 !== null) { + result2 = [result2, result3, result4, result5, result6, result7, result8]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_selbri_5(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + if (result2 === null) { + pos2 = pos; + result2 = parse_joik(); + if (result2 !== null) { + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_KE_clause(); + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_selbri_3(); + if (result6 !== null) { + result7 = parse_KEhE_clause(); + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result8 = []; + result9 = parse_free(); + while (result9 !== null) { + result8.push(result9); + result9 = parse_free(); + } + if (result8 !== null) { + result2 = [result2, result3, result4, result5, result6, result7, result8]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri_4", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri_5() { + var cacheKey = "selbri_5@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_selbri_6(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_jek(); + if (result1 === null) { + result1 = parse_joik(); + } + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_BO_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_selbri_5(); + if (result5 !== null) { + result1 = [result1, result2, result3, result4, result5]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri_5", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_selbri_6() { + var cacheKey = "selbri_6@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_tanru_unit(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_BO_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = parse_selbri_6(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NAhE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_guhek(); + if (result2 !== null) { + result3 = parse_selbri(); + if (result3 !== null) { + result4 = parse_gik(); + if (result4 !== null) { + result5 = parse_selbri_6(); + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("selbri_6", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_tanru_unit() { + var cacheKey = "tanru_unit@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_tanru_unit_1(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_CEI_clause(); + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_tanru_unit_1(); + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_CEI_clause(); + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_tanru_unit_1(); + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("tanru_unit", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_tanru_unit_1() { + var cacheKey = "tanru_unit_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_tanru_unit_2(); + if (result0 !== null) { + result1 = parse_linkargs(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("tanru_unit_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_tanru_unit_2() { + var cacheKey = "tanru_unit_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_BRIVLA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_GOhA_clause(); + if (result0 !== null) { + result1 = parse_RAhO_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_KE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_selbri_3(); + if (result2 !== null) { + result3 = parse_KEhE_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ME_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_sumti(); + if (result2 === null) { + result2 = parse_lerfu_string(); + } + if (result2 !== null) { + result3 = parse_MEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_MOI_clause(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result6 = []; + result7 = parse_free(); + while (result7 !== null) { + result6.push(result7); + result7 = parse_free(); + } + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_number(); + if (result0 === null) { + result0 = parse_lerfu_string(); + } + if (result0 !== null) { + result1 = parse_MOI_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NUhA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_mex_operator(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_SE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_tanru_unit_2(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_JAI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_tag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_tanru_unit_2(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NAhE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_tanru_unit_2(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NU_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = []; + pos2 = pos; + result4 = parse_joik_jek(); + if (result4 !== null) { + result5 = parse_NU_clause(); + if (result5 !== null) { + result6 = parse_NAI_clause(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result7 = []; + result8 = parse_free(); + while (result8 !== null) { + result7.push(result8); + result8 = parse_free(); + } + if (result7 !== null) { + result4 = [result4, result5, result6, result7]; + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + while (result4 !== null) { + result3.push(result4); + pos2 = pos; + result4 = parse_joik_jek(); + if (result4 !== null) { + result5 = parse_NU_clause(); + if (result5 !== null) { + result6 = parse_NAI_clause(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result7 = []; + result8 = parse_free(); + while (result8 !== null) { + result7.push(result8); + result8 = parse_free(); + } + if (result7 !== null) { + result4 = [result4, result5, result6, result7]; + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } + if (result3 !== null) { + result4 = parse_subsentence(); + if (result4 !== null) { + result5 = parse_KEI_clause(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result6 = []; + result7 = parse_free(); + while (result7 !== null) { + result6.push(result7); + result7 = parse_free(); + } + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("tanru_unit_2", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_linkargs() { + var cacheKey = "linkargs@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_linkargs_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_linkargs_sa(); + } + if (result0 !== null) { + result1 = parse_linkargs_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("linkargs", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_linkargs_1() { + var cacheKey = "linkargs_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_term(); + if (result2 !== null) { + result3 = parse_links(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_BEhO_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("linkargs_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_linkargs_sa() { + var cacheKey = "linkargs_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_linkargs_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_linkargs_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_linkargs_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_linkargs_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_linkargs_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_linkargs_1(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("linkargs_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_linkargs_start() { + var cacheKey = "linkargs_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_BE_clause(); + if (result0 !== null) { + result0 = (function(offset, expr) {return ["linkargs_start", expr];})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_links() { + var cacheKey = "links@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_links_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_links_sa(); + } + if (result0 !== null) { + result1 = parse_links_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("links", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_links_1() { + var cacheKey = "links_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BEI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_term(); + if (result2 !== null) { + result3 = parse_links(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("links_1", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_links_sa() { + var cacheKey = "links_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_links_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_links_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_links_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_links_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_links_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_links_1(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("links_sa", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_links_start() { + var cacheKey = "links_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_BEI_clause(); + if (result0 !== null) { + result0 = (function(offset, expr) {return ["links_start", expr];})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_quantifier() { + var cacheKey = "quantifier@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_number(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_MOI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_BOI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_VEI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_mex(); + if (result2 !== null) { + result3 = parse_VEhO_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("quantifier", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex() { + var cacheKey = "mex@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_mex_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_mex_sa(); + } + if (result0 !== null) { + result1 = parse_mex_0(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_0() { + var cacheKey = "mex_0@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_mex_1(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_operator(); + if (result2 !== null) { + result3 = parse_mex_1(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_operator(); + if (result2 !== null) { + result3 = parse_mex_1(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_rp_clause(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex_0", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_sa() { + var cacheKey = "mex_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_mex_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_mex_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_mex_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_mex_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_mex_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_mex_0(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex_sa", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_start() { + var cacheKey = "mex_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_FUhA_clause(); + if (result0 === null) { + result0 = parse_PEhO_clause(); + if (result0 === null) { + result0 = parse_operand_start(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex_start", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rp_clause() { + var cacheKey = "rp_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FUhA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_rp_expression(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("rp_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_1() { + var cacheKey = "mex_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_mex_2(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_BIhE_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result3 = parse_operator(); + if (result3 !== null) { + result4 = parse_mex_1(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_2() { + var cacheKey = "mex_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_operand(); + if (result0 === null) { + result0 = parse_mex_forethought(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex_2", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_forethought() { + var cacheKey = "mex_forethought@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0; + + pos0 = pos; + result0 = parse_PEhO_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_operator(); + if (result2 !== null) { + result3 = parse_fore_operands(); + if (result3 !== null) { + result4 = parse_KUhE_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_fore_operands() { + var cacheKey = "fore_operands@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result1 = parse_mex_2(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_mex_2(); + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("fore_operands", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rp_expression() { + var cacheKey = "rp_expression@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_operand(); + if (result0 !== null) { + result1 = parse_rp_expression_tail(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("rp_expression", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rp_expression_tail() { + var cacheKey = "rp_expression_tail@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_rp_expression(); + if (result0 !== null) { + result1 = parse_operator(); + if (result1 !== null) { + result2 = parse_rp_expression_tail(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = []; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("rp_expression_tail", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operator() { + var cacheKey = "operator@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_operator_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_operator_sa(); + } + if (result0 !== null) { + result1 = parse_operator_0(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operator", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operator_0() { + var cacheKey = "operator_0@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_operator_1(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_operator_1(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + if (result2 === null) { + pos2 = pos; + result2 = parse_joik(); + if (result2 !== null) { + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_KE_clause(); + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_operator(); + if (result6 !== null) { + result7 = parse_KEhE_clause(); + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result8 = []; + result9 = parse_free(); + while (result9 !== null) { + result8.push(result9); + result9 = parse_free(); + } + if (result8 !== null) { + result2 = [result2, result3, result4, result5, result6, result7, result8]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_operator_1(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + if (result2 === null) { + pos2 = pos; + result2 = parse_joik(); + if (result2 !== null) { + result3 = parse_stag(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_KE_clause(); + if (result4 !== null) { + result5 = []; + result6 = parse_free(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_free(); + } + if (result5 !== null) { + result6 = parse_operator(); + if (result6 !== null) { + result7 = parse_KEhE_clause(); + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result8 = []; + result9 = parse_free(); + while (result9 !== null) { + result8.push(result9); + result9 = parse_free(); + } + if (result8 !== null) { + result2 = [result2, result3, result4, result5, result6, result7, result8]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operator_0", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operator_sa() { + var cacheKey = "operator_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_operator_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_operator_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_operator_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_operator_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_operator_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_operator_0(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operator_sa", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operator_start() { + var cacheKey = "operator_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + result0 = parse_guhek(); + if (result0 === null) { + result0 = parse_KE_clause(); + if (result0 === null) { + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_NAhE_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_MAhO_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_VUhU_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operator_start", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operator_1() { + var cacheKey = "operator_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + result0 = parse_operator_2(); + if (result0 === null) { + pos1 = pos; + result0 = parse_guhek(); + if (result0 !== null) { + result1 = parse_operator_1(); + if (result1 !== null) { + result2 = parse_gik(); + if (result2 !== null) { + result3 = parse_operator_2(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_operator_2(); + if (result0 !== null) { + result1 = parse_jek(); + if (result1 === null) { + result1 = parse_joik(); + } + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_BO_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_operator_1(); + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operator_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operator_2() { + var cacheKey = "operator_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + result0 = parse_mex_operator(); + if (result0 === null) { + pos1 = pos; + result0 = parse_KE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_operator(); + if (result2 !== null) { + result3 = parse_KEhE_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operator_2", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_mex_operator() { + var cacheKey = "mex_operator@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_mex_operator(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NAhE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_mex_operator(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_MAhO_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_mex(); + if (result2 !== null) { + result3 = parse_TEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NAhU_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_selbri(); + if (result2 !== null) { + result3 = parse_TEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_VUhU_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("mex_operator", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand() { + var cacheKey = "operand@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_operand_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_operand_sa(); + } + if (result0 !== null) { + result1 = parse_operand_0(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand_0() { + var cacheKey = "operand_0@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7, result8; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_operand_1(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_joik_ek(); + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_KE_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_operand(); + if (result5 !== null) { + result6 = parse_KEhE_clause(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result7 = []; + result8 = parse_free(); + while (result8 !== null) { + result7.push(result8); + result8 = parse_free(); + } + if (result7 !== null) { + result1 = [result1, result2, result3, result4, result5, result6, result7]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand_0", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand_sa() { + var cacheKey = "operand_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_operand_start(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_operand_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_operand_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_operand_start(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_operand_start(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_operand_0(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand_sa", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand_start() { + var cacheKey = "operand_start@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_quantifier(); + if (result0 === null) { + result0 = parse_lerfu_word(); + if (result0 === null) { + result0 = parse_NIhE_clause(); + if (result0 === null) { + result0 = parse_MOhE_clause(); + if (result0 === null) { + result0 = parse_JOhI_clause(); + if (result0 === null) { + result0 = parse_gek(); + if (result0 === null) { + result0 = parse_LAhE_clause(); + if (result0 === null) { + result0 = parse_NAhE_clause(); + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand_start", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand_1() { + var cacheKey = "operand_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_operand_2(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_joik_ek(); + if (result2 !== null) { + result3 = parse_operand_2(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_joik_ek(); + if (result2 !== null) { + result3 = parse_operand_2(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand_2() { + var cacheKey = "operand_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_operand_3(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_joik_ek(); + if (result1 !== null) { + result2 = parse_stag(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_BO_clause(); + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result5 = parse_operand_2(); + if (result5 !== null) { + result1 = [result1, result2, result3, result4, result5]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand_2", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_operand_3() { + var cacheKey = "operand_3@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_quantifier(); + if (result0 === null) { + pos1 = pos; + result0 = parse_lerfu_string(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_MOI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_BOI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NIhE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_selbri(); + if (result2 !== null) { + result3 = parse_TEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_MOhE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_sumti(); + if (result2 !== null) { + result3 = parse_TEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_JOhI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result3 = parse_mex_2(); + if (result3 !== null) { + result2 = []; + while (result3 !== null) { + result2.push(result3); + result3 = parse_mex_2(); + } + } else { + result2 = null; + } + if (result2 !== null) { + result3 = parse_TEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_gek(); + if (result0 !== null) { + result1 = parse_operand(); + if (result1 !== null) { + result2 = parse_gik(); + if (result2 !== null) { + result3 = parse_operand_3(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + pos2 = pos; + result0 = parse_LAhE_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 === null) { + pos2 = pos; + result0 = parse_NAhE_clause(); + if (result0 !== null) { + result1 = parse_BO_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } + if (result0 !== null) { + result1 = parse_operand(); + if (result1 !== null) { + result2 = parse_LUhU_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("operand_3", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_number() { + var cacheKey = "number@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_PA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_PA_clause(); + if (result2 === null) { + result2 = parse_lerfu_word(); + } + while (result2 !== null) { + result1.push(result2); + result2 = parse_PA_clause(); + if (result2 === null) { + result2 = parse_lerfu_word(); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("number", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_lerfu_string() { + var cacheKey = "lerfu_string@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_lerfu_word(); + if (result0 !== null) { + result1 = []; + result2 = parse_PA_clause(); + if (result2 === null) { + result2 = parse_lerfu_word(); + } + while (result2 !== null) { + result1.push(result2); + result2 = parse_PA_clause(); + if (result2 === null) { + result2 = parse_lerfu_word(); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("lerfu_string", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_lerfu_word() { + var cacheKey = "lerfu_word@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + result0 = parse_BY_clause(); + if (result0 === null) { + pos1 = pos; + result0 = parse_LAU_clause(); + if (result0 !== null) { + result1 = parse_lerfu_word(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_TEI_clause(); + if (result0 !== null) { + result1 = parse_lerfu_string(); + if (result1 !== null) { + result2 = parse_FOI_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("lerfu_word", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ek() { + var cacheKey = "ek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NA_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_SE_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_A_clause(); + if (result2 !== null) { + result3 = parse_NAI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("ek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gihek() { + var cacheKey = "gihek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_gihek_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_gihek_sa(); + } + if (result0 !== null) { + result1 = parse_gihek_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gihek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gihek_1() { + var cacheKey = "gihek_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NA_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_SE_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_GIhA_clause(); + if (result2 !== null) { + result3 = parse_NAI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gihek_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gihek_sa() { + var cacheKey = "gihek_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_gihek_1(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_gihek_1(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_gihek_1(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_gihek_1(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_gihek_1(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_gihek(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gihek_sa", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_jek() { + var cacheKey = "jek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NA_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_SE_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_JA_clause(); + if (result2 !== null) { + result3 = parse_NAI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("jek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_joik() { + var cacheKey = "joik@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_JOI_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_interval(); + if (result0 === null) { + pos1 = pos; + result0 = parse_GAhO_clause(); + if (result0 !== null) { + result1 = parse_interval(); + if (result1 !== null) { + result2 = parse_GAhO_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("joik", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_interval() { + var cacheKey = "interval@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_BIhI_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("interval", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_joik_ek() { + var cacheKey = "joik_ek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_joik_ek_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_joik_ek_sa(); + } + if (result0 !== null) { + result1 = parse_joik_ek_1(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("joik_ek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_joik_ek_1() { + var cacheKey = "joik_ek_1@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_joik(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ek(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("joik_ek_1", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_joik_ek_sa() { + var cacheKey = "joik_ek_sa@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3, pos4; + + pos0 = pos; + pos1 = pos; + result0 = parse_joik_ek_1(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_joik_ek_1(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_joik_ek_1(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + pos3 = pos; + reportFailures++; + result2 = parse_joik_ek_1(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result3 = parse_pre_zei_bu(); + if (result3 === null) { + pos3 = pos; + result3 = parse_SA_clause(); + if (result3 !== null) { + pos4 = pos; + reportFailures++; + result4 = parse_joik_ek_1(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos4; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_SA_clause(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_joik_ek(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("joik_ek_sa", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_joik_jek() { + var cacheKey = "joik_jek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_joik(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_jek(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("joik_jek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gek() { + var cacheKey = "gek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_GA_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_joik(); + if (result0 !== null) { + result1 = parse_GI_clause(); + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_stag(); + if (result0 !== null) { + result1 = parse_gik(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_guhek() { + var cacheKey = "guhek@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_GUhA_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("guhek", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gik() { + var cacheKey = "gik@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GI_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = []; + result3 = parse_free(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_free(); + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("gik", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_tag() { + var cacheKey = "tag@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_tense_modal(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_tense_modal(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_tense_modal(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("tag", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stag() { + var cacheKey = "stag@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_simple_tense_modal(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_jek(); + if (result2 === null) { + result2 = parse_joik(); + } + if (result2 !== null) { + result3 = parse_simple_tense_modal(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_jek(); + if (result2 === null) { + result2 = parse_joik(); + } + if (result2 !== null) { + result3 = parse_simple_tense_modal(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_tense_modal(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_tense_modal(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_joik_jek(); + if (result2 !== null) { + result3 = parse_tense_modal(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("stag", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_tense_modal() { + var cacheKey = "tense_modal@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_simple_tense_modal(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_FIhO_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_selbri(); + if (result2 !== null) { + result3 = parse_FEhU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("tense_modal", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_simple_tense_modal() { + var cacheKey = "simple_tense_modal@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + result0 = parse_NAhE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_SE_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_BAI_clause(); + if (result2 !== null) { + result3 = parse_NAI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_KI_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_NAhE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + pos2 = pos; + pos3 = pos; + result1 = parse_time(); + if (result1 !== null) { + result2 = parse_space(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos3; + } + } else { + result1 = null; + pos = pos3; + } + if (result1 === null) { + pos3 = pos; + result1 = parse_space(); + if (result1 !== null) { + result2 = parse_time(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos3; + } + } else { + result1 = null; + pos = pos3; + } + } + if (result1 !== null) { + result2 = parse_CAhA_clause(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_time(); + if (result1 !== null) { + result2 = parse_space(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_space(); + if (result1 !== null) { + result2 = parse_time(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 === null) { + result1 = parse_CAhA_clause(); + } + } + if (result1 !== null) { + result2 = parse_KI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_KI_clause(); + if (result0 === null) { + result0 = parse_CUhE_clause(); + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("simple_tense_modal", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_time() { + var cacheKey = "time@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_time_offset(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_time_offset(); + } + if (result1 !== null) { + pos2 = pos; + result2 = parse_ZEhA_clause(); + if (result2 !== null) { + pos3 = pos; + result3 = parse_PU_clause(); + if (result3 !== null) { + result4 = parse_NAI_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_interval_property(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_interval_property(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ZI_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result2 = parse_time_offset(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_time_offset(); + } + } else { + result1 = null; + } + if (result1 !== null) { + pos2 = pos; + result2 = parse_ZEhA_clause(); + if (result2 !== null) { + pos3 = pos; + result3 = parse_PU_clause(); + if (result3 !== null) { + result4 = parse_NAI_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_interval_property(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_interval_property(); + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ZI_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_time_offset(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_time_offset(); + } + if (result1 !== null) { + result2 = parse_ZEhA_clause(); + if (result2 !== null) { + pos2 = pos; + result3 = parse_PU_clause(); + if (result3 !== null) { + result4 = parse_NAI_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos2; + } + } else { + result3 = null; + pos = pos2; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_interval_property(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_interval_property(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ZI_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_time_offset(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_time_offset(); + } + if (result1 !== null) { + pos2 = pos; + result2 = parse_ZEhA_clause(); + if (result2 !== null) { + pos3 = pos; + result3 = parse_PU_clause(); + if (result3 !== null) { + result4 = parse_NAI_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos3; + } + } else { + result3 = null; + pos = pos3; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result4 = parse_interval_property(); + if (result4 !== null) { + result3 = []; + while (result4 !== null) { + result3.push(result4); + result4 = parse_interval_property(); + } + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("time", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_time_offset() { + var cacheKey = "time_offset@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_PU_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_ZI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("time_offset", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_space() { + var cacheKey = "space@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_VA_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_space_offset(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_space_offset(); + } + if (result1 !== null) { + result2 = parse_space_interval(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + pos2 = pos; + result3 = parse_MOhI_clause(); + if (result3 !== null) { + result4 = parse_space_offset(); + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos2; + } + } else { + result3 = null; + pos = pos2; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_VA_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result2 = parse_space_offset(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_space_offset(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result2 = parse_space_interval(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + pos2 = pos; + result3 = parse_MOhI_clause(); + if (result3 !== null) { + result4 = parse_space_offset(); + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos2; + } + } else { + result3 = null; + pos = pos2; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_VA_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_space_offset(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_space_offset(); + } + if (result1 !== null) { + result2 = parse_space_interval(); + if (result2 !== null) { + pos2 = pos; + result3 = parse_MOhI_clause(); + if (result3 !== null) { + result4 = parse_space_offset(); + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos2; + } + } else { + result3 = null; + pos = pos2; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_VA_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = []; + result2 = parse_space_offset(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_space_offset(); + } + if (result1 !== null) { + result2 = parse_space_interval(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_MOhI_clause(); + if (result3 !== null) { + result4 = parse_space_offset(); + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("space", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_space_offset() { + var cacheKey = "space_offset@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FAhA_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_VA_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("space_offset", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_space_interval() { + var cacheKey = "space_interval@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_VEhA_clause(); + if (result0 === null) { + result0 = parse_VIhA_clause(); + if (result0 === null) { + pos2 = pos; + result0 = parse_VEhA_clause(); + if (result0 !== null) { + result1 = parse_VIhA_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_FAhA_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_space_int_props(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_VEhA_clause(); + if (result0 === null) { + result0 = parse_VIhA_clause(); + if (result0 === null) { + pos2 = pos; + result0 = parse_VEhA_clause(); + if (result0 !== null) { + result1 = parse_VIhA_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_FAhA_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_space_int_props(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("space_interval", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_space_int_props() { + var cacheKey = "space_int_props@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result1 = parse_FEhE_clause(); + if (result1 !== null) { + result2 = parse_interval_property(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos1; + } + } else { + result1 = null; + pos = pos1; + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos1 = pos; + result1 = parse_FEhE_clause(); + if (result1 !== null) { + result2 = parse_interval_property(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos1; + } + } else { + result1 = null; + pos = pos1; + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("space_int_props", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_interval_property() { + var cacheKey = "interval_property@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_number(); + if (result0 !== null) { + result1 = parse_ROI_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_TAhE_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_ZAhO_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("interval_property", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_free() { + var cacheKey = "free@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_SEI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + pos2 = pos; + result2 = parse_terms(); + if (result2 !== null) { + result3 = parse_CU_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = []; + result5 = parse_free(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_free(); + } + if (result4 !== null) { + result2 = [result2, result3, result4]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_selbri(); + if (result3 !== null) { + result4 = parse_SEhU_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_SOI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_sumti(); + if (result2 !== null) { + result3 = parse_sumti(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_SEhU_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_vocative(); + if (result0 !== null) { + result1 = parse_relative_clauses(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_selbri(); + if (result2 !== null) { + result3 = parse_relative_clauses(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result4 = parse_DOhU_clause(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_vocative(); + if (result0 !== null) { + result1 = parse_relative_clauses(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result3 = parse_CMENE_clause(); + if (result3 !== null) { + result2 = []; + while (result3 !== null) { + result2.push(result3); + result3 = parse_CMENE_clause(); + } + } else { + result2 = null; + } + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_relative_clauses(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result5 = parse_DOhU_clause(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_vocative(); + if (result0 !== null) { + result1 = parse_sumti(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_DOhU_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_number(); + if (result0 === null) { + result0 = parse_lerfu_string(); + } + if (result0 !== null) { + result1 = parse_MAI_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_TO_clause(); + if (result0 !== null) { + result1 = parse_text(); + if (result1 !== null) { + result2 = parse_TOI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_xi_clause(); + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("free", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_xi_clause() { + var cacheKey = "xi_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_XI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_number(); + if (result2 === null) { + result2 = parse_lerfu_string(); + } + if (result2 !== null) { + result3 = parse_BOI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_XI_clause(); + if (result0 !== null) { + result1 = []; + result2 = parse_free(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_free(); + } + if (result1 !== null) { + result2 = parse_VEI_clause(); + if (result2 !== null) { + result3 = []; + result4 = parse_free(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_free(); + } + if (result3 !== null) { + result4 = parse_mex(); + if (result4 !== null) { + result5 = parse_VEhO_clause(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("xi_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_vocative() { + var cacheKey = "vocative@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + result1 = parse_COI_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos2 = pos; + result1 = parse_COI_clause(); + if (result1 !== null) { + result2 = parse_NAI_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_DOI_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + pos2 = pos; + result0 = parse_COI_clause(); + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_COI_clause(); + if (result2 !== null) { + result3 = parse_NAI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_COI_clause(); + if (result2 !== null) { + result3 = parse_NAI_clause(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_DOI_clause(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("vocative", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_indicators() { + var cacheKey = "indicators@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FUhE_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result2 = parse_indicator(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_indicator(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("indicators", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_indicator() { + var cacheKey = "indicator@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + result0 = parse_UI_clause(); + if (result0 === null) { + result0 = parse_CAI_clause(); + } + if (result0 !== null) { + result1 = parse_NAI_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 === null) { + result0 = parse_DAhO_clause(); + if (result0 === null) { + result0 = parse_FUhO_clause(); + } + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_BU_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("indicator", expr); })(pos0, result0[0]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_zei_clause() { + var cacheKey = "zei_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_zei_clause_no_pre(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("zei_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_zei_clause_no_pre() { + var cacheKey = "zei_clause_no_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_pre_zei_bu(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_zei_tail(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_bu_tail(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_zei_tail(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_bu_tail(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_zei_tail(); + if (result2 !== null) { + result3 = parse_post_clause(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("zei_clause_no_pre", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bu_clause() { + var cacheKey = "bu_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_bu_clause_no_pre(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bu_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bu_clause_no_pre() { + var cacheKey = "bu_clause_no_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_pre_zei_bu(); + if (result0 !== null) { + result1 = []; + pos2 = pos; + result2 = parse_bu_tail(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_zei_tail(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + while (result2 !== null) { + result1.push(result2); + pos2 = pos; + result2 = parse_bu_tail(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_zei_tail(); + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = pos2; + } + } else { + result2 = null; + pos = pos2; + } + } + if (result1 !== null) { + result2 = parse_bu_tail(); + if (result2 !== null) { + result3 = parse_post_clause(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bu_clause_no_pre", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_zei_tail() { + var cacheKey = "zei_tail@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result1 = parse_ZEI_clause(); + if (result1 !== null) { + result2 = parse_any_word(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos1; + } + } else { + result1 = null; + pos = pos1; + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos1 = pos; + result1 = parse_ZEI_clause(); + if (result1 !== null) { + result2 = parse_any_word(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos1; + } + } else { + result1 = null; + pos = pos1; + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("zei_tail", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_bu_tail() { + var cacheKey = "bu_tail@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result1 = parse_BU_clause(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_BU_clause(); + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("bu_tail", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_pre_zei_bu() { + var cacheKey = "pre_zei_bu@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6, result7; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_BU_clause(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_ZEI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_SI_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_SA_clause(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_SU_clause(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_FAhO_clause(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + result6 = parse_any_word_SA_handling(); + if (result6 !== null) { + result7 = parse_si_clause(); + result7 = result7 !== null ? result7 : ""; + if (result7 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6, result7]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("pre_zei_bu", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_dot_star() { + var cacheKey = "dot_star@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + + result0 = []; + if (input.length > pos) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + while (result1 !== null) { + result0.push(result1); + if (input.length > pos) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_post_clause() { + var cacheKey = "post_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_si_clause(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_ZEI_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_BU_clause(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + result4 = []; + result5 = parse_indicators(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_indicators(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node_nonempty("post_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_pre_clause() { + var cacheKey = "pre_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + + result0 = parse_BAhE_clause(); + result0 = result0 !== null ? result0 : ""; + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_any_word_SA_handling() { + var cacheKey = "any_word_SA_handling@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_BRIVLA_pre(); + if (result0 === null) { + result0 = parse_known_cmavo_SA(); + if (result0 === null) { + result0 = parse_CMAVO_pre(); + if (result0 === null) { + result0 = parse_CMENE_pre(); + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("any_word_SA_handling", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_known_cmavo_SA() { + var cacheKey = "known_cmavo_SA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + + result0 = parse_A_pre(); + if (result0 === null) { + result0 = parse_BAI_pre(); + if (result0 === null) { + result0 = parse_BAhE_pre(); + if (result0 === null) { + result0 = parse_BE_pre(); + if (result0 === null) { + result0 = parse_BEI_pre(); + if (result0 === null) { + result0 = parse_BEhO_pre(); + if (result0 === null) { + result0 = parse_BIhE_pre(); + if (result0 === null) { + result0 = parse_BIhI_pre(); + if (result0 === null) { + result0 = parse_BO_pre(); + if (result0 === null) { + result0 = parse_BOI_pre(); + if (result0 === null) { + result0 = parse_BU_pre(); + if (result0 === null) { + result0 = parse_BY_pre(); + if (result0 === null) { + result0 = parse_CAI_pre(); + if (result0 === null) { + result0 = parse_CAhA_pre(); + if (result0 === null) { + result0 = parse_CEI_pre(); + if (result0 === null) { + result0 = parse_CEhE_pre(); + if (result0 === null) { + result0 = parse_CO_pre(); + if (result0 === null) { + result0 = parse_COI_pre(); + if (result0 === null) { + result0 = parse_CU_pre(); + if (result0 === null) { + result0 = parse_CUhE_pre(); + if (result0 === null) { + result0 = parse_DAhO_pre(); + if (result0 === null) { + result0 = parse_DOI_pre(); + if (result0 === null) { + result0 = parse_DOhU_pre(); + if (result0 === null) { + result0 = parse_FA_pre(); + if (result0 === null) { + result0 = parse_FAhA_pre(); + if (result0 === null) { + result0 = parse_FEhE_pre(); + if (result0 === null) { + result0 = parse_FEhU_pre(); + if (result0 === null) { + result0 = parse_FIhO_pre(); + if (result0 === null) { + result0 = parse_FOI_pre(); + if (result0 === null) { + result0 = parse_FUhA_pre(); + if (result0 === null) { + result0 = parse_FUhE_pre(); + if (result0 === null) { + result0 = parse_FUhO_pre(); + if (result0 === null) { + result0 = parse_GA_pre(); + if (result0 === null) { + result0 = parse_GAhO_pre(); + if (result0 === null) { + result0 = parse_GEhU_pre(); + if (result0 === null) { + result0 = parse_GI_pre(); + if (result0 === null) { + result0 = parse_GIhA_pre(); + if (result0 === null) { + result0 = parse_GOI_pre(); + if (result0 === null) { + result0 = parse_GOhA_pre(); + if (result0 === null) { + result0 = parse_GUhA_pre(); + if (result0 === null) { + result0 = parse_I_pre(); + if (result0 === null) { + result0 = parse_JA_pre(); + if (result0 === null) { + result0 = parse_JAI_pre(); + if (result0 === null) { + result0 = parse_JOI_pre(); + if (result0 === null) { + result0 = parse_JOhI_pre(); + if (result0 === null) { + result0 = parse_KE_pre(); + if (result0 === null) { + result0 = parse_KEI_pre(); + if (result0 === null) { + result0 = parse_KEhE_pre(); + if (result0 === null) { + result0 = parse_KI_pre(); + if (result0 === null) { + result0 = parse_KOhA_pre(); + if (result0 === null) { + result0 = parse_KU_pre(); + if (result0 === null) { + result0 = parse_KUhE_pre(); + if (result0 === null) { + result0 = parse_KUhO_pre(); + if (result0 === null) { + result0 = parse_LA_pre(); + if (result0 === null) { + result0 = parse_LAU_pre(); + if (result0 === null) { + result0 = parse_LAhE_pre(); + if (result0 === null) { + result0 = parse_LE_pre(); + if (result0 === null) { + result0 = parse_LEhU_pre(); + if (result0 === null) { + result0 = parse_LI_pre(); + if (result0 === null) { + result0 = parse_LIhU_pre(); + if (result0 === null) { + result0 = parse_LOhO_pre(); + if (result0 === null) { + result0 = parse_LOhU_pre(); + if (result0 === null) { + result0 = parse_LU_pre(); + if (result0 === null) { + result0 = parse_LUhU_pre(); + if (result0 === null) { + result0 = parse_MAI_pre(); + if (result0 === null) { + result0 = parse_MAhO_pre(); + if (result0 === null) { + result0 = parse_ME_pre(); + if (result0 === null) { + result0 = parse_MEhU_pre(); + if (result0 === null) { + result0 = parse_MOI_pre(); + if (result0 === null) { + result0 = parse_MOhE_pre(); + if (result0 === null) { + result0 = parse_MOhI_pre(); + if (result0 === null) { + result0 = parse_NA_pre(); + if (result0 === null) { + result0 = parse_NAI_pre(); + if (result0 === null) { + result0 = parse_NAhE_pre(); + if (result0 === null) { + result0 = parse_NAhU_pre(); + if (result0 === null) { + result0 = parse_NIhE_pre(); + if (result0 === null) { + result0 = parse_NIhO_pre(); + if (result0 === null) { + result0 = parse_NOI_pre(); + if (result0 === null) { + result0 = parse_NU_pre(); + if (result0 === null) { + result0 = parse_NUhA_pre(); + if (result0 === null) { + result0 = parse_NUhI_pre(); + if (result0 === null) { + result0 = parse_NUhU_pre(); + if (result0 === null) { + result0 = parse_PA_pre(); + if (result0 === null) { + result0 = parse_PEhE_pre(); + if (result0 === null) { + result0 = parse_PEhO_pre(); + if (result0 === null) { + result0 = parse_PU_pre(); + if (result0 === null) { + result0 = parse_RAhO_pre(); + if (result0 === null) { + result0 = parse_ROI_pre(); + if (result0 === null) { + result0 = parse_SA_pre(); + if (result0 === null) { + result0 = parse_SE_pre(); + if (result0 === null) { + result0 = parse_SEI_pre(); + if (result0 === null) { + result0 = parse_SEhU_pre(); + if (result0 === null) { + result0 = parse_SI_clause(); + if (result0 === null) { + result0 = parse_SOI_pre(); + if (result0 === null) { + result0 = parse_SU_pre(); + if (result0 === null) { + result0 = parse_TAhE_pre(); + if (result0 === null) { + result0 = parse_TEI_pre(); + if (result0 === null) { + result0 = parse_TEhU_pre(); + if (result0 === null) { + result0 = parse_TO_pre(); + if (result0 === null) { + result0 = parse_TOI_pre(); + if (result0 === null) { + result0 = parse_TUhE_pre(); + if (result0 === null) { + result0 = parse_TUhU_pre(); + if (result0 === null) { + result0 = parse_UI_pre(); + if (result0 === null) { + result0 = parse_VA_pre(); + if (result0 === null) { + result0 = parse_VAU_pre(); + if (result0 === null) { + result0 = parse_VEI_pre(); + if (result0 === null) { + result0 = parse_VEhA_pre(); + if (result0 === null) { + result0 = parse_VEhO_pre(); + if (result0 === null) { + result0 = parse_VIhA_pre(); + if (result0 === null) { + result0 = parse_VUhO_pre(); + if (result0 === null) { + result0 = parse_VUhU_pre(); + if (result0 === null) { + result0 = parse_XI_pre(); + if (result0 === null) { + result0 = parse_ZAhO_pre(); + if (result0 === null) { + result0 = parse_ZEI_pre(); + if (result0 === null) { + result0 = parse_ZEhA_pre(); + if (result0 === null) { + result0 = parse_ZI_pre(); + if (result0 === null) { + result0 = parse_ZIhE_pre(); + if (result0 === null) { + result0 = parse_ZO_pre(); + if (result0 === null) { + result0 = parse_ZOI_pre(); + if (result0 === null) { + result0 = parse_ZOhU_pre(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_su_clause() { + var cacheKey = "su_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result0 = []; + result1 = parse_erasable_clause(); + if (result1 === null) { + result1 = parse_su_word(); + } + while (result1 !== null) { + result0.push(result1); + result1 = parse_erasable_clause(); + if (result1 === null) { + result1 = parse_su_word(); + } + } + if (result0 !== null) { + result1 = parse_SU_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_si_clause() { + var cacheKey = "si_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0; + + pos0 = pos; + result1 = parse_erasable_clause(); + if (result1 === null) { + result1 = parse_pre_zei_bu(); + if (result1 === null) { + result1 = parse_SA_clause(); + } + } + if (result1 !== null) { + result2 = parse_si_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_SI_clause(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos0; + } + } else { + result1 = null; + pos = pos0; + } + } else { + result1 = null; + pos = pos0; + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos0 = pos; + result1 = parse_erasable_clause(); + if (result1 === null) { + result1 = parse_pre_zei_bu(); + if (result1 === null) { + result1 = parse_SA_clause(); + } + } + if (result1 !== null) { + result2 = parse_si_clause(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_SI_clause(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos0; + } + } else { + result1 = null; + pos = pos0; + } + } else { + result1 = null; + pos = pos0; + } + } + } else { + result0 = null; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_erasable_clause() { + var cacheKey = "erasable_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_bu_clause_no_pre(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_ZEI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_BU_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_zei_clause_no_pre(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_ZEI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_BU_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("erasable_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_su_word() { + var cacheKey = "su_word@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + reportFailures++; + result0 = parse_NIhO_clause(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + pos1 = pos; + reportFailures++; + result1 = parse_LU_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos1; + } + if (result1 !== null) { + pos1 = pos; + reportFailures++; + result2 = parse_TUhE_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos1; + } + if (result2 !== null) { + pos1 = pos; + reportFailures++; + result3 = parse_TO_clause(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos1; + } + if (result3 !== null) { + pos1 = pos; + reportFailures++; + result4 = parse_SU_clause(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos1; + } + if (result4 !== null) { + pos1 = pos; + reportFailures++; + result5 = parse_FAhO_clause(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos1; + } + if (result5 !== null) { + result6 = parse_any_word_SA_handling(); + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BRIVLA_clause() { + var cacheKey = "BRIVLA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BRIVLA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_zei_clause(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return (expr.length == 2) ? _node2("BRIVLA_clause", expr[0], expr[1]) : _node("BRIVLA_clause", expr[0]); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BRIVLA_pre() { + var cacheKey = "BRIVLA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BRIVLA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CMENE_clause() { + var cacheKey = "CMENE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CMENE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CMENE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CMENE_pre() { + var cacheKey = "CMENE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CMENE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CMAVO_clause() { + var cacheKey = "CMAVO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CMAVO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CMAVO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CMAVO_pre() { + var cacheKey = "CMAVO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CMAVO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_A_clause() { + var cacheKey = "A_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_A_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("A_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_A_pre() { + var cacheKey = "A_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_A(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAI_clause() { + var cacheKey = "BAI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BAI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BAI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAI_pre() { + var cacheKey = "BAI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BAI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAhE_clause() { + var cacheKey = "BAhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result1 = parse_BAhE_pre(); + if (result1 !== null) { + result2 = parse_BAhE_post(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos1; + } + } else { + result1 = null; + pos = pos1; + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos1 = pos; + result1 = parse_BAhE_pre(); + if (result1 !== null) { + result2 = parse_BAhE_post(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos1; + } + } else { + result1 = null; + pos = pos1; + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("BAhE_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAhE_pre() { + var cacheKey = "BAhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result0 = parse_BAhE(); + if (result0 !== null) { + result1 = parse_spaces(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAhE_post() { + var cacheKey = "BAhE_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + result0 = parse_si_clause(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + pos1 = pos; + reportFailures++; + result1 = parse_ZEI_clause(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos1; + } + if (result1 !== null) { + pos1 = pos; + reportFailures++; + result2 = parse_BU_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos1; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BE_clause() { + var cacheKey = "BE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BE_pre() { + var cacheKey = "BE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BEI_clause() { + var cacheKey = "BEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BEI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BEI_pre() { + var cacheKey = "BEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BEhO_clause() { + var cacheKey = "BEhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BEhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BEhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BEhO_pre() { + var cacheKey = "BEhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BEhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BIhE_clause() { + var cacheKey = "BIhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BIhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BIhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BIhE_pre() { + var cacheKey = "BIhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BIhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BIhI_clause() { + var cacheKey = "BIhI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BIhI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BIhI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BIhI_pre() { + var cacheKey = "BIhI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BIhI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BO_clause() { + var cacheKey = "BO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BO_pre() { + var cacheKey = "BO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BOI_clause() { + var cacheKey = "BOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BOI_pre() { + var cacheKey = "BOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BU_clause() { + var cacheKey = "BU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BU_pre(); + if (result0 !== null) { + result1 = parse_BU_post(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("BU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BU_pre() { + var cacheKey = "BU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BU_post() { + var cacheKey = "BU_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BY_clause() { + var cacheKey = "BY_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_BY_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_bu_clause(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return (expr[0] == "bu_clause") ? ["BY_clause", expr] : _node2("BY_clause", expr[0], expr[1]); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BY_pre() { + var cacheKey = "BY_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_BY(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CAhA_clause() { + var cacheKey = "CAhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CAhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CAhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CAhA_pre() { + var cacheKey = "CAhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CAhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CAI_clause() { + var cacheKey = "CAI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CAI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CAI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CAI_pre() { + var cacheKey = "CAI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CAI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CEI_clause() { + var cacheKey = "CEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CEI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CEI_pre() { + var cacheKey = "CEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CEhE_clause() { + var cacheKey = "CEhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CEhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CEhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CEhE_pre() { + var cacheKey = "CEhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CEhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CO_clause() { + var cacheKey = "CO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CO_pre() { + var cacheKey = "CO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_COI_clause() { + var cacheKey = "COI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_COI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("COI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_COI_pre() { + var cacheKey = "COI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_COI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CU_clause() { + var cacheKey = "CU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CU_pre() { + var cacheKey = "CU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CUhE_clause() { + var cacheKey = "CUhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CUhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("CUhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CUhE_pre() { + var cacheKey = "CUhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_CUhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DAhO_clause() { + var cacheKey = "DAhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_DAhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("DAhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DAhO_pre() { + var cacheKey = "DAhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_DAhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DOI_clause() { + var cacheKey = "DOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_DOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("DOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DOI_pre() { + var cacheKey = "DOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_DOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DOhU_clause() { + var cacheKey = "DOhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_DOhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("DOhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DOhU_pre() { + var cacheKey = "DOhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_DOhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FA_clause() { + var cacheKey = "FA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FA_pre() { + var cacheKey = "FA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FAhA_clause() { + var cacheKey = "FAhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FAhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FAhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FAhA_pre() { + var cacheKey = "FAhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FAhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FAhO_clause() { + var cacheKey = "FAhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FAhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("FAhO_clause", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FEhE_clause() { + var cacheKey = "FEhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FEhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FEhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FEhE_pre() { + var cacheKey = "FEhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FEhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FEhU_clause() { + var cacheKey = "FEhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FEhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FEhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FEhU_pre() { + var cacheKey = "FEhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FEhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FIhO_clause() { + var cacheKey = "FIhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FIhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FIhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FIhO_pre() { + var cacheKey = "FIhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FIhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FOI_clause() { + var cacheKey = "FOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FOI_pre() { + var cacheKey = "FOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhA_clause() { + var cacheKey = "FUhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FUhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FUhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhA_pre() { + var cacheKey = "FUhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FUhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhE_clause() { + var cacheKey = "FUhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FUhE_pre(); + if (result0 !== null) { + result1 = parse_FUhE_post(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FUhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhE_pre() { + var cacheKey = "FUhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FUhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhE_post() { + var cacheKey = "FUhE_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + reportFailures++; + result0 = parse_BU_clause(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result1 = parse_spaces(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + pos1 = pos; + reportFailures++; + result2 = parse_ZEI_clause(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos1; + } + if (result2 !== null) { + pos1 = pos; + reportFailures++; + result3 = parse_BU_clause(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos1; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhO_clause() { + var cacheKey = "FUhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_FUhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("FUhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhO_pre() { + var cacheKey = "FUhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_FUhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GA_clause() { + var cacheKey = "GA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GA_pre() { + var cacheKey = "GA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GAhO_clause() { + var cacheKey = "GAhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GAhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GAhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GAhO_pre() { + var cacheKey = "GAhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GAhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GEhU_clause() { + var cacheKey = "GEhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GEhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GEhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GEhU_pre() { + var cacheKey = "GEhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GEhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GI_clause() { + var cacheKey = "GI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GI_pre() { + var cacheKey = "GI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GIhA_clause() { + var cacheKey = "GIhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GIhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GIhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GIhA_pre() { + var cacheKey = "GIhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GIhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GOI_clause() { + var cacheKey = "GOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GOI_pre() { + var cacheKey = "GOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GOhA_clause() { + var cacheKey = "GOhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GOhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GOhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GOhA_pre() { + var cacheKey = "GOhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GOhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GUhA_clause() { + var cacheKey = "GUhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_GUhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("GUhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GUhA_pre() { + var cacheKey = "GUhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_GUhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_I_clause() { + var cacheKey = "I_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_sentence_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_sentence_sa(); + } + if (result0 !== null) { + result1 = parse_I_pre(); + if (result1 !== null) { + result2 = parse_post_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("I_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_I_pre() { + var cacheKey = "I_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_I(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JA_clause() { + var cacheKey = "JA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_JA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("JA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JA_pre() { + var cacheKey = "JA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_JA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JAI_clause() { + var cacheKey = "JAI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_JAI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("JAI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JAI_pre() { + var cacheKey = "JAI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_JAI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JOhI_clause() { + var cacheKey = "JOhI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_JOhI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("JOhI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JOhI_pre() { + var cacheKey = "JOhI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_JOhI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JOI_clause() { + var cacheKey = "JOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_JOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("JOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JOI_pre() { + var cacheKey = "JOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_JOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KE_clause() { + var cacheKey = "KE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KE_pre() { + var cacheKey = "KE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEhE_clause() { + var cacheKey = "KEhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KEhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KEhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEhE_pre() { + var cacheKey = "KEhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KEhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEI_clause() { + var cacheKey = "KEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KEI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEI_pre() { + var cacheKey = "KEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEI_no_SA_handling() { + var cacheKey = "KEI_no_SA_handling@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KEI(); + if (result1 !== null) { + result2 = parse_post_clause(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KI_clause() { + var cacheKey = "KI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KI_pre() { + var cacheKey = "KI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KOhA_clause() { + var cacheKey = "KOhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KOhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KOhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KOhA_pre() { + var cacheKey = "KOhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KOhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KU_clause() { + var cacheKey = "KU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KU_pre() { + var cacheKey = "KU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KUhE_clause() { + var cacheKey = "KUhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KUhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KUhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KUhE_pre() { + var cacheKey = "KUhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KUhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KUhO_clause() { + var cacheKey = "KUhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_KUhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("KUhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KUhO_pre() { + var cacheKey = "KUhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_KUhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LA_clause() { + var cacheKey = "LA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LA_pre() { + var cacheKey = "LA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LAU_clause() { + var cacheKey = "LAU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LAU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LAU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LAU_pre() { + var cacheKey = "LAU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LAU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LAhE_clause() { + var cacheKey = "LAhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LAhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LAhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LAhE_pre() { + var cacheKey = "LAhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LAhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LE_clause() { + var cacheKey = "LE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LE_pre() { + var cacheKey = "LE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LEhU_clause() { + var cacheKey = "LEhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LEhU_pre(); + if (result0 !== null) { + result1 = parse_LEhU_post(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LEhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LEhU_pre() { + var cacheKey = "LEhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LEhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LEhU_post() { + var cacheKey = "LEhU_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LI_clause() { + var cacheKey = "LI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LI_pre() { + var cacheKey = "LI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LIhU_clause() { + var cacheKey = "LIhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LIhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LIhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LIhU_pre() { + var cacheKey = "LIhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LIhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LOhO_clause() { + var cacheKey = "LOhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LOhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LOhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LOhO_pre() { + var cacheKey = "LOhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LOhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LOhU_clause() { + var cacheKey = "LOhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LOhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LOhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LOhU_pre() { + var cacheKey = "LOhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LOhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + pos1 = pos; + pos2 = pos; + reportFailures++; + result4 = parse_LEhU(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result5 = parse_any_word(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos1; + } + } else { + result4 = null; + pos = pos1; + } + while (result4 !== null) { + result3.push(result4); + pos1 = pos; + pos2 = pos; + reportFailures++; + result4 = parse_LEhU(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result5 = parse_any_word(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos1; + } + } else { + result4 = null; + pos = pos1; + } + } + if (result3 !== null) { + result4 = parse_LEhU_clause(); + if (result4 !== null) { + result5 = parse_spaces(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LU_clause() { + var cacheKey = "LU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LU_pre() { + var cacheKey = "LU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LUhU_clause() { + var cacheKey = "LUhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_LUhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("LUhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LUhU_pre() { + var cacheKey = "LUhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_LUhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MAhO_clause() { + var cacheKey = "MAhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_MAhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("MAhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MAhO_pre() { + var cacheKey = "MAhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_MAhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MAI_clause() { + var cacheKey = "MAI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_MAI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("MAI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MAI_pre() { + var cacheKey = "MAI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_MAI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ME_clause() { + var cacheKey = "ME_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ME_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ME_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ME_pre() { + var cacheKey = "ME_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ME(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MEhU_clause() { + var cacheKey = "MEhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_MEhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("MEhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MEhU_pre() { + var cacheKey = "MEhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_MEhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOhE_clause() { + var cacheKey = "MOhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_MOhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("MOhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOhE_pre() { + var cacheKey = "MOhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_MOhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOhI_clause() { + var cacheKey = "MOhI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_MOhI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("MOhI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOhI_pre() { + var cacheKey = "MOhI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_MOhI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOI_clause() { + var cacheKey = "MOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_MOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("MOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOI_pre() { + var cacheKey = "MOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_MOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NA_clause() { + var cacheKey = "NA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NA_pre() { + var cacheKey = "NA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAI_clause() { + var cacheKey = "NAI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NAI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NAI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAI_pre() { + var cacheKey = "NAI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NAI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAhE_clause() { + var cacheKey = "NAhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NAhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NAhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAhE_pre() { + var cacheKey = "NAhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NAhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAhU_clause() { + var cacheKey = "NAhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NAhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NAhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAhU_pre() { + var cacheKey = "NAhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NAhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhE_clause() { + var cacheKey = "NIhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NIhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NIhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhE_pre() { + var cacheKey = "NIhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NIhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhO_clause() { + var cacheKey = "NIhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_sentence_sa(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_sentence_sa(); + } + if (result0 !== null) { + result1 = parse_NIhO_pre(); + if (result1 !== null) { + result2 = parse_NIhO_post(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("NIhO_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhO_pre() { + var cacheKey = "NIhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NIhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhO_post() { + var cacheKey = "NIhO_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result0 = []; + result1 = parse_su_clause(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_su_clause(); + } + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NOI_clause() { + var cacheKey = "NOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NOI_pre() { + var cacheKey = "NOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NU_clause() { + var cacheKey = "NU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NU_pre() { + var cacheKey = "NU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhA_clause() { + var cacheKey = "NUhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NUhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NUhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhA_pre() { + var cacheKey = "NUhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NUhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhI_clause() { + var cacheKey = "NUhI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NUhI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NUhI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhI_pre() { + var cacheKey = "NUhI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NUhI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhU_clause() { + var cacheKey = "NUhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_NUhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("NUhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhU_pre() { + var cacheKey = "NUhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_NUhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PA_clause() { + var cacheKey = "PA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_PA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("PA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PA_pre() { + var cacheKey = "PA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_PA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PEhE_clause() { + var cacheKey = "PEhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_PEhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("PEhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PEhE_pre() { + var cacheKey = "PEhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_PEhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PEhO_clause() { + var cacheKey = "PEhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_PEhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("PEhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PEhO_pre() { + var cacheKey = "PEhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_PEhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PU_clause() { + var cacheKey = "PU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_PU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("PA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PU_pre() { + var cacheKey = "PU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_PU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_RAhO_clause() { + var cacheKey = "RAhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_RAhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("RAhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_RAhO_pre() { + var cacheKey = "RAhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_RAhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ROI_clause() { + var cacheKey = "ROI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ROI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ROI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ROI_pre() { + var cacheKey = "ROI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ROI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SA_clause() { + var cacheKey = "SA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SA_pre(); + if (result0 !== null) { + result1 = parse_SA_post(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("SA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SA_pre() { + var cacheKey = "SA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_SA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SA_post() { + var cacheKey = "SA_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SE_clause() { + var cacheKey = "SE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("SE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SE_pre() { + var cacheKey = "SE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_SE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SEI_clause() { + var cacheKey = "SEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SEI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("SEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SEI_pre() { + var cacheKey = "SEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_SEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SEhU_clause() { + var cacheKey = "SEhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SEhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("SEhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SEhU_pre() { + var cacheKey = "SEhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_SEhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SI_clause() { + var cacheKey = "SI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_SI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("SI_clause", expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SOI_clause() { + var cacheKey = "SOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("SOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SOI_pre() { + var cacheKey = "SOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_SOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SU_clause() { + var cacheKey = "SU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_SU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("SU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SU_pre() { + var cacheKey = "SU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_SU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TAhE_clause() { + var cacheKey = "TAhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TAhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("TAhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TAhE_pre() { + var cacheKey = "TAhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TAhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TEhU_clause() { + var cacheKey = "TEhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TEhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("TEhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TEhU_pre() { + var cacheKey = "TEhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TEhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TEI_clause() { + var cacheKey = "TEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TEI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("TEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TEI_pre() { + var cacheKey = "TEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TO_clause() { + var cacheKey = "TO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("TO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TO_pre() { + var cacheKey = "TO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TOI_clause() { + var cacheKey = "TOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("TOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TOI_pre() { + var cacheKey = "TOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhE_clause() { + var cacheKey = "TUhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TUhE_pre(); + if (result0 !== null) { + result1 = parse_TUhE_post(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("TUhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhE_pre() { + var cacheKey = "TUhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TUhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhE_post() { + var cacheKey = "TUhE_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0; + + pos0 = pos; + result0 = []; + result1 = parse_su_clause(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_su_clause(); + } + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhU_clause() { + var cacheKey = "TUhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_TUhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("TUhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhU_pre() { + var cacheKey = "TUhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_TUhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_UI_clause() { + var cacheKey = "UI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_UI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("UI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_UI_pre() { + var cacheKey = "UI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_UI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VA_clause() { + var cacheKey = "VA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("VA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VA_pre() { + var cacheKey = "VA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VAU_clause() { + var cacheKey = "VAU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VAU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("VAU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VAU_pre() { + var cacheKey = "VAU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VAU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEI_clause() { + var cacheKey = "VEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VEI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("VEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEI_pre() { + var cacheKey = "VEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEhO_clause() { + var cacheKey = "VEhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VEhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node("VEhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEhO_pre() { + var cacheKey = "VEhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VEhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VUhU_clause() { + var cacheKey = "VUhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VUhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("VUhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VUhU_pre() { + var cacheKey = "VUhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VUhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEhA_clause() { + var cacheKey = "VEhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VEhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("VEhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEhA_pre() { + var cacheKey = "VEhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VEhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VIhA_clause() { + var cacheKey = "VIhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VIhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("VIhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VIhA_pre() { + var cacheKey = "VIhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VIhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VUhO_clause() { + var cacheKey = "VUhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_VUhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("VUhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VUhO_pre() { + var cacheKey = "VUhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_VUhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_XI_clause() { + var cacheKey = "XI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_XI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("XI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_XI_pre() { + var cacheKey = "XI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_XI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZAhO_clause() { + var cacheKey = "ZAhO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZAhO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZAhO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZAhO_pre() { + var cacheKey = "ZAhO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZAhO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEhA_clause() { + var cacheKey = "ZEhA_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZEhA_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZEhA_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEhA_pre() { + var cacheKey = "ZEhA_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZEhA(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEI_clause() { + var cacheKey = "ZEI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZEI_pre(); + if (result0 !== null) { + result1 = parse_ZEI_post(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZEI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEI_pre() { + var cacheKey = "ZEI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZEI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEI_post() { + var cacheKey = "ZEI_post@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + + result0 = parse_spaces(); + result0 = result0 !== null ? result0 : ""; + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZI_clause() { + var cacheKey = "ZI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZI_pre() { + var cacheKey = "ZI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZIhE_clause() { + var cacheKey = "ZIhE_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZIhE_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZIhE_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZIhE_pre() { + var cacheKey = "ZIhE_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZIhE(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZO_clause() { + var cacheKey = "ZO_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZO_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZO_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZO_pre() { + var cacheKey = "ZO_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZO(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_any_word(); + if (result3 !== null) { + result4 = parse_spaces(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZOI_clause() { + var cacheKey = "ZOI_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZOI_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZOI_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZOI_pre() { + var cacheKey = "ZOI_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZOI(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = parse_lojban_word(); + if (result3 !== null) { + result4 = []; + result5 = parse_non_lojban_word(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_non_lojban_word(); + } + if (result4 !== null) { + result5 = parse_lojban_word(); + if (result5 !== null) { + result6 = parse_spaces(); + result6 = result6 !== null ? result6 : ""; + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZOhU_clause() { + var cacheKey = "ZOhU_clause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_ZOhU_pre(); + if (result0 !== null) { + result1 = parse_post_clause(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, pre, post) {return _node2("ZOhU_clause", pre, post); })(pos0, result0[0], result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZOhU_pre() { + var cacheKey = "ZOhU_pre@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0; + + pos0 = pos; + result0 = parse_pre_clause(); + if (result0 !== null) { + result1 = parse_ZOhU(); + if (result1 !== null) { + result2 = parse_spaces(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + } else { + result0 = null; + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CMENE() { + var cacheKey = "CMENE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_cmene(); + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CMENE", expr];})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BRIVLA() { + var cacheKey = "BRIVLA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_gismu_2(); + if (result0 === null) { + result0 = parse_lujvo(); + if (result0 === null) { + result0 = parse_fuhivla(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BRIVLA", expr];})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gismu_2() { + var cacheKey = "gismu_2@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_gismu(); + if (result0 !== null) { + result0 = (function(offset, expr) {return ["gismu", expr];})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CMAVO() { + var cacheKey = "CMAVO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_A(); + if (result0 === null) { + result0 = parse_BAI(); + if (result0 === null) { + result0 = parse_BAhE(); + if (result0 === null) { + result0 = parse_BE(); + if (result0 === null) { + result0 = parse_BEI(); + if (result0 === null) { + result0 = parse_BEhO(); + if (result0 === null) { + result0 = parse_BIhE(); + if (result0 === null) { + result0 = parse_BIhI(); + if (result0 === null) { + result0 = parse_BO(); + if (result0 === null) { + result0 = parse_BOI(); + if (result0 === null) { + result0 = parse_BU(); + if (result0 === null) { + result0 = parse_BY(); + if (result0 === null) { + result0 = parse_CAhA(); + if (result0 === null) { + result0 = parse_CAI(); + if (result0 === null) { + result0 = parse_CEI(); + if (result0 === null) { + result0 = parse_CEhE(); + if (result0 === null) { + result0 = parse_CO(); + if (result0 === null) { + result0 = parse_COI(); + if (result0 === null) { + result0 = parse_CU(); + if (result0 === null) { + result0 = parse_CUhE(); + if (result0 === null) { + result0 = parse_DAhO(); + if (result0 === null) { + result0 = parse_DOI(); + if (result0 === null) { + result0 = parse_DOhU(); + if (result0 === null) { + result0 = parse_FA(); + if (result0 === null) { + result0 = parse_FAhA(); + if (result0 === null) { + result0 = parse_FAhO(); + if (result0 === null) { + result0 = parse_FEhE(); + if (result0 === null) { + result0 = parse_FEhU(); + if (result0 === null) { + result0 = parse_FIhO(); + if (result0 === null) { + result0 = parse_FOI(); + if (result0 === null) { + result0 = parse_FUhA(); + if (result0 === null) { + result0 = parse_FUhE(); + if (result0 === null) { + result0 = parse_FUhO(); + if (result0 === null) { + result0 = parse_GA(); + if (result0 === null) { + result0 = parse_GAhO(); + if (result0 === null) { + result0 = parse_GEhU(); + if (result0 === null) { + result0 = parse_GI(); + if (result0 === null) { + result0 = parse_GIhA(); + if (result0 === null) { + result0 = parse_GOI(); + if (result0 === null) { + result0 = parse_GOhA(); + if (result0 === null) { + result0 = parse_GUhA(); + if (result0 === null) { + result0 = parse_I(); + if (result0 === null) { + result0 = parse_JA(); + if (result0 === null) { + result0 = parse_JAI(); + if (result0 === null) { + result0 = parse_JOhI(); + if (result0 === null) { + result0 = parse_JOI(); + if (result0 === null) { + result0 = parse_KE(); + if (result0 === null) { + result0 = parse_KEhE(); + if (result0 === null) { + result0 = parse_KEI(); + if (result0 === null) { + result0 = parse_KI(); + if (result0 === null) { + result0 = parse_KOhA(); + if (result0 === null) { + result0 = parse_KU(); + if (result0 === null) { + result0 = parse_KUhE(); + if (result0 === null) { + result0 = parse_KUhO(); + if (result0 === null) { + result0 = parse_LA(); + if (result0 === null) { + result0 = parse_LAU(); + if (result0 === null) { + result0 = parse_LAhE(); + if (result0 === null) { + result0 = parse_LE(); + if (result0 === null) { + result0 = parse_LEhU(); + if (result0 === null) { + result0 = parse_LI(); + if (result0 === null) { + result0 = parse_LIhU(); + if (result0 === null) { + result0 = parse_LOhO(); + if (result0 === null) { + result0 = parse_LOhU(); + if (result0 === null) { + result0 = parse_LU(); + if (result0 === null) { + result0 = parse_LUhU(); + if (result0 === null) { + result0 = parse_MAhO(); + if (result0 === null) { + result0 = parse_MAI(); + if (result0 === null) { + result0 = parse_ME(); + if (result0 === null) { + result0 = parse_MEhU(); + if (result0 === null) { + result0 = parse_MOhE(); + if (result0 === null) { + result0 = parse_MOhI(); + if (result0 === null) { + result0 = parse_MOI(); + if (result0 === null) { + result0 = parse_NA(); + if (result0 === null) { + result0 = parse_NAI(); + if (result0 === null) { + result0 = parse_NAhE(); + if (result0 === null) { + result0 = parse_NAhU(); + if (result0 === null) { + result0 = parse_NIhE(); + if (result0 === null) { + result0 = parse_NIhO(); + if (result0 === null) { + result0 = parse_NOI(); + if (result0 === null) { + result0 = parse_NU(); + if (result0 === null) { + result0 = parse_NUhA(); + if (result0 === null) { + result0 = parse_NUhI(); + if (result0 === null) { + result0 = parse_NUhU(); + if (result0 === null) { + result0 = parse_PA(); + if (result0 === null) { + result0 = parse_PEhE(); + if (result0 === null) { + result0 = parse_PEhO(); + if (result0 === null) { + result0 = parse_PU(); + if (result0 === null) { + result0 = parse_RAhO(); + if (result0 === null) { + result0 = parse_ROI(); + if (result0 === null) { + result0 = parse_SA(); + if (result0 === null) { + result0 = parse_SE(); + if (result0 === null) { + result0 = parse_SEI(); + if (result0 === null) { + result0 = parse_SEhU(); + if (result0 === null) { + result0 = parse_SI(); + if (result0 === null) { + result0 = parse_SOI(); + if (result0 === null) { + result0 = parse_SU(); + if (result0 === null) { + result0 = parse_TAhE(); + if (result0 === null) { + result0 = parse_TEhU(); + if (result0 === null) { + result0 = parse_TEI(); + if (result0 === null) { + result0 = parse_TO(); + if (result0 === null) { + result0 = parse_TOI(); + if (result0 === null) { + result0 = parse_TUhE(); + if (result0 === null) { + result0 = parse_TUhU(); + if (result0 === null) { + result0 = parse_UI(); + if (result0 === null) { + result0 = parse_VA(); + if (result0 === null) { + result0 = parse_VAU(); + if (result0 === null) { + result0 = parse_VEI(); + if (result0 === null) { + result0 = parse_VEhO(); + if (result0 === null) { + result0 = parse_VUhU(); + if (result0 === null) { + result0 = parse_VEhA(); + if (result0 === null) { + result0 = parse_VIhA(); + if (result0 === null) { + result0 = parse_VUhO(); + if (result0 === null) { + result0 = parse_XI(); + if (result0 === null) { + result0 = parse_ZAhO(); + if (result0 === null) { + result0 = parse_ZEhA(); + if (result0 === null) { + result0 = parse_ZEI(); + if (result0 === null) { + result0 = parse_ZI(); + if (result0 === null) { + result0 = parse_ZIhE(); + if (result0 === null) { + result0 = parse_ZO(); + if (result0 === null) { + result0 = parse_ZOI(); + if (result0 === null) { + result0 = parse_ZOhU(); + if (result0 === null) { + result0 = parse_cmavo(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CMAVO", expr];})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_lojban_word() { + var cacheKey = "lojban_word@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_CMENE(); + if (result0 === null) { + result0 = parse_CMAVO(); + if (result0 === null) { + result0 = parse_BRIVLA(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return expr; })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_any_word() { + var cacheKey = "any_word@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_lojban_word(); + if (result0 !== null) { + result1 = parse_spaces(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return expr; })(pos0, result0[0]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_cmene() { + var cacheKey = "cmene@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_h(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_consonant_final(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result2 = parse_coda(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_any_syllable(); + if (result4 === null) { + result4 = parse_digit(); + } + while (result4 !== null) { + result3.push(result4); + result4 = parse_any_syllable(); + if (result4 === null) { + result4 = parse_digit(); + } + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_pause(); + reportFailures--; + if (result4 !== null) { + result4 = ""; + pos = pos2; + } else { + result4 = null; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return ["cmene", _join(expr)]; })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_consonant_final() { + var cacheKey = "consonant_final@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + result0 = []; + pos2 = pos; + result1 = parse_non_space(); + if (result1 !== null) { + pos3 = pos; + reportFailures++; + result2 = parse_non_space(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos3; + } else { + result2 = null; + } + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + while (result1 !== null) { + result0.push(result1); + pos2 = pos; + result1 = parse_non_space(); + if (result1 !== null) { + pos3 = pos; + reportFailures++; + result2 = parse_non_space(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos3; + } else { + result2 = null; + } + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result0 !== null) { + result1 = parse_consonant(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_pause(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_cmavo() { + var cacheKey = "cmavo@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmene(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_CVCy_lujvo(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_cmavo_form(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_post_word(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CVCy_lujvo() { + var cacheKey = "CVCy_lujvo@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CVC_rafsi(); + if (result0 !== null) { + result1 = parse_y(); + if (result1 !== null) { + result2 = parse_h(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result3 = []; + result4 = parse_initial_rafsi(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_initial_rafsi(); + } + if (result3 !== null) { + result4 = parse_brivla_core(); + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_stressed_CVC_rafsi(); + if (result0 !== null) { + result1 = parse_y(); + if (result1 !== null) { + result2 = parse_short_final_rafsi(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_cmavo_form() { + var cacheKey = "cmavo_form@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_h(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_cluster(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_onset(); + if (result2 !== null) { + result3 = []; + pos2 = pos; + result4 = parse_nucleus(); + if (result4 !== null) { + result5 = parse_h(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + while (result4 !== null) { + result3.push(result4); + pos2 = pos; + result4 = parse_nucleus(); + if (result4 !== null) { + result5 = parse_h(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } + if (result3 !== null) { + pos2 = pos; + pos3 = pos; + reportFailures++; + result4 = parse_stressed(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos3; + } + if (result4 !== null) { + result5 = parse_nucleus(); + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + if (result4 === null) { + pos2 = pos; + result4 = parse_nucleus(); + if (result4 !== null) { + pos3 = pos; + reportFailures++; + result5 = parse_cluster(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos3; + } + if (result5 !== null) { + result4 = [result4, result5]; + } else { + result4 = null; + pos = pos2; + } + } else { + result4 = null; + pos = pos2; + } + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result1 = parse_y(); + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + result1 = parse_y(); + } + } else { + result0 = null; + } + if (result0 === null) { + result0 = parse_digit(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_brivla() { + var cacheKey = "brivla@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = []; + result2 = parse_initial_rafsi(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_initial_rafsi(); + } + if (result1 !== null) { + result2 = parse_brivla_core(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_brivla_core() { + var cacheKey = "brivla_core@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + result0 = parse_fuhivla(); + if (result0 === null) { + result0 = parse_gismu(); + if (result0 === null) { + result0 = parse_CVV_final_rafsi(); + if (result0 === null) { + pos1 = pos; + result0 = parse_stressed_initial_rafsi(); + if (result0 !== null) { + result1 = parse_short_final_rafsi(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_initial_rafsi() { + var cacheKey = "stressed_initial_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_stressed_extended_rafsi(); + if (result0 === null) { + result0 = parse_stressed_y_rafsi(); + if (result0 === null) { + result0 = parse_stressed_y_less_rafsi(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_initial_rafsi() { + var cacheKey = "initial_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_extended_rafsi(); + if (result0 === null) { + result0 = parse_y_rafsi(); + if (result0 === null) { + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_any_extended_rafsi(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_y_less_rafsi(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_any_extended_rafsi() { + var cacheKey = "any_extended_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_fuhivla(); + if (result0 === null) { + result0 = parse_extended_rafsi(); + if (result0 === null) { + result0 = parse_stressed_extended_rafsi(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_fuhivla() { + var cacheKey = "fuhivla@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_fuhivla_head(); + if (result0 !== null) { + result1 = parse_stressed_syllable(); + if (result1 !== null) { + result2 = []; + result3 = parse_consonantal_syllable(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_consonantal_syllable(); + } + if (result2 !== null) { + result3 = parse_final_syllable(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_extended_rafsi() { + var cacheKey = "stressed_extended_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_stressed_brivla_rafsi(); + if (result0 === null) { + result0 = parse_stressed_fuhivla_rafsi(); + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_extended_rafsi() { + var cacheKey = "extended_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_brivla_rafsi(); + if (result0 === null) { + result0 = parse_fuhivla_rafsi(); + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_brivla_rafsi() { + var cacheKey = "stressed_brivla_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_unstressed_syllable(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_brivla_head(); + if (result1 !== null) { + result2 = parse_stressed_syllable(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_y(); + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_brivla_rafsi() { + var cacheKey = "brivla_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + pos3 = pos; + result0 = parse_syllable(); + if (result0 !== null) { + result1 = []; + result2 = parse_consonantal_syllable(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_consonantal_syllable(); + } + if (result1 !== null) { + result2 = parse_syllable(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos3; + } + } else { + result0 = null; + pos = pos3; + } + } else { + result0 = null; + pos = pos3; + } + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_brivla_head(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_y(); + if (result3 !== null) { + result4 = parse_h(); + result4 = result4 !== null ? result4 : ""; + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_fuhivla_rafsi() { + var cacheKey = "stressed_fuhivla_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_fuhivla_head(); + if (result0 !== null) { + result1 = parse_stressed_syllable(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_consonant(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result3 = parse_onset(); + if (result3 !== null) { + result4 = parse_y(); + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_fuhivla_rafsi() { + var cacheKey = "fuhivla_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_unstressed_syllable(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_fuhivla_head(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_consonant(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result3 = parse_onset(); + if (result3 !== null) { + result4 = parse_y(); + if (result4 !== null) { + result5 = parse_h(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_fuhivla_head() { + var cacheKey = "fuhivla_head@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_rafsi_string(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_brivla_head(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_brivla_head() { + var cacheKey = "brivla_head@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_slinkuhi(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_onset(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result4 = []; + result5 = parse_unstressed_syllable(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_unstressed_syllable(); + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_slinkuhi() { + var cacheKey = "slinkuhi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + result1 = parse_rafsi_string(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_rafsi_string() { + var cacheKey = "rafsi_string@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_y_less_rafsi(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_y_less_rafsi(); + } + if (result0 !== null) { + result1 = parse_gismu(); + if (result1 === null) { + result1 = parse_CVV_final_rafsi(); + if (result1 === null) { + pos2 = pos; + result1 = parse_stressed_y_less_rafsi(); + if (result1 !== null) { + result2 = parse_short_final_rafsi(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + result1 = parse_y_rafsi(); + if (result1 === null) { + result1 = parse_stressed_y_rafsi(); + if (result1 === null) { + pos2 = pos; + result1 = parse_stressed_y_less_rafsi(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_initial_pair(); + if (result2 !== null) { + result3 = parse_y(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_gismu() { + var cacheKey = "gismu@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_stressed_long_rafsi(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_final_syllable(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result2 = parse_vowel(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_post_word(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CVV_final_rafsi() { + var cacheKey = "CVV_final_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + result1 = parse_stressed_vowel(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_final_syllable(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result4 = parse_vowel(); + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_post_word(); + reportFailures--; + if (result5 !== null) { + result5 = ""; + pos = pos2; + } else { + result5 = null; + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_short_final_rafsi() { + var cacheKey = "short_final_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_final_syllable(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_consonant(); + if (result1 !== null) { + result2 = parse_diphthong(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_initial_pair(); + if (result1 !== null) { + result2 = parse_vowel(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_y_rafsi() { + var cacheKey = "stressed_y_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_stressed_long_rafsi(); + if (result0 === null) { + result0 = parse_stressed_CVC_rafsi(); + } + if (result0 !== null) { + result1 = parse_y(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_y_less_rafsi() { + var cacheKey = "stressed_y_less_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_stressed_CVC_rafsi(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_y(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_stressed_CCV_rafsi(); + if (result0 === null) { + result0 = parse_stressed_CVV_rafsi(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_long_rafsi() { + var cacheKey = "stressed_long_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_stressed_CCV_rafsi(); + if (result0 === null) { + result0 = parse_stressed_CVC_rafsi(); + } + if (result0 !== null) { + result1 = parse_consonant(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_CVC_rafsi() { + var cacheKey = "stressed_CVC_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + result1 = parse_stressed_vowel(); + if (result1 !== null) { + result2 = parse_consonant(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_CCV_rafsi() { + var cacheKey = "stressed_CCV_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_initial_pair(); + if (result0 !== null) { + result1 = parse_stressed_vowel(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_CVV_rafsi() { + var cacheKey = "stressed_CVV_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_unstressed_vowel(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_stressed_vowel(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + result1 = parse_stressed_diphthong(); + } + if (result1 !== null) { + result2 = parse_r_hyphen(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_y_rafsi() { + var cacheKey = "y_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_long_rafsi(); + if (result0 === null) { + result0 = parse_CVC_rafsi(); + } + if (result0 !== null) { + result1 = parse_y(); + if (result1 !== null) { + result2 = parse_h(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_y_less_rafsi() { + var cacheKey = "y_less_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_y_rafsi(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_CVC_rafsi(); + if (result1 !== null) { + pos3 = pos; + reportFailures++; + result2 = parse_y(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos3; + } + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + result1 = parse_CCV_rafsi(); + if (result1 === null) { + result1 = parse_CVV_rafsi(); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_any_extended_rafsi(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_long_rafsi() { + var cacheKey = "long_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_CCV_rafsi(); + if (result0 === null) { + result0 = parse_CVC_rafsi(); + } + if (result0 !== null) { + result1 = parse_consonant(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CVC_rafsi() { + var cacheKey = "CVC_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + result1 = parse_unstressed_vowel(); + if (result1 !== null) { + result2 = parse_consonant(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CCV_rafsi() { + var cacheKey = "CCV_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_initial_pair(); + if (result0 !== null) { + result1 = parse_unstressed_vowel(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CVV_rafsi() { + var cacheKey = "CVV_rafsi@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + pos2 = pos; + result1 = parse_unstressed_vowel(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_unstressed_vowel(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + result1 = parse_unstressed_diphthong(); + } + if (result1 !== null) { + result2 = parse_r_hyphen(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_r_hyphen() { + var cacheKey = "r_hyphen@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_r(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_consonant(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_n(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_r(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) { return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_final_syllable() { + var cacheKey = "final_syllable@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_onset(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_y(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_stressed(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result3 = parse_nucleus(); + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_cmene(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_post_word(); + reportFailures--; + if (result5 !== null) { + result5 = ""; + pos = pos2; + } else { + result5 = null; + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_syllable() { + var cacheKey = "stressed_syllable@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_stressed(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_syllable(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_syllable(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_stress(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_diphthong() { + var cacheKey = "stressed_diphthong@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_stressed(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_diphthong(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_diphthong(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_stress(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed_vowel() { + var cacheKey = "stressed_vowel@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_stressed(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_vowel(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_vowel(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_stress(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_unstressed_syllable() { + var cacheKey = "unstressed_syllable@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_stressed(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_syllable(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_stress(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_consonantal_syllable(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_unstressed_diphthong() { + var cacheKey = "unstressed_diphthong@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_stressed(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_diphthong(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_stress(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_unstressed_vowel() { + var cacheKey = "unstressed_vowel@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_stressed(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_vowel(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_stress(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stress() { + var cacheKey = "stress@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_consonant(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_consonant(); + } + if (result0 !== null) { + result1 = parse_y(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_syllable(); + if (result2 !== null) { + result3 = parse_pause(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_stressed() { + var cacheKey = "stressed@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_onset(); + if (result0 !== null) { + result1 = []; + result2 = parse_comma(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_comma(); + } + if (result1 !== null) { + if (/^[AEIOU]/.test(input.charAt(pos))) { + result2 = input.charAt(pos); + pos++; + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[AEIOU]"); + } + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_any_syllable() { + var cacheKey = "any_syllable@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_onset(); + if (result0 !== null) { + result1 = parse_nucleus(); + if (result1 !== null) { + result2 = parse_coda(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_consonantal_syllable(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_syllable() { + var cacheKey = "syllable@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_onset(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_y(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_nucleus(); + if (result2 !== null) { + result3 = parse_coda(); + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_consonantal_syllable() { + var cacheKey = "consonantal_syllable@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + result1 = parse_syllabic(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_consonantal_syllable(); + if (result2 === null) { + result2 = parse_onset(); + } + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + pos2 = pos; + result3 = parse_consonant(); + if (result3 !== null) { + pos3 = pos; + reportFailures++; + result4 = parse_spaces(); + reportFailures--; + if (result4 !== null) { + result4 = ""; + pos = pos3; + } else { + result4 = null; + } + if (result4 !== null) { + result3 = [result3, result4]; + } else { + result3 = null; + pos = pos2; + } + } else { + result3 = null; + pos = pos2; + } + result3 = result3 !== null ? result3 : ""; + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_coda() { + var cacheKey = "coda@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_any_syllable(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_consonant(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_any_syllable(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_syllabic(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_consonant(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_pause(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_onset() { + var cacheKey = "onset@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + result0 = parse_h(); + if (result0 === null) { + pos1 = pos; + result0 = parse_consonant(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_glide(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_initial(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_nucleus() { + var cacheKey = "nucleus@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_vowel(); + if (result0 === null) { + result0 = parse_diphthong(); + if (result0 === null) { + pos1 = pos; + result0 = parse_y(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_nucleus(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_glide() { + var cacheKey = "glide@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_i(); + if (result0 === null) { + result0 = parse_u(); + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_nucleus(); + reportFailures--; + if (result1 !== null) { + result1 = ""; + pos = pos2; + } else { + result1 = null; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_glide(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return expr;})(pos0, result0[0]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_diphthong() { + var cacheKey = "diphthong@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + result0 = parse_a(); + if (result0 !== null) { + result1 = parse_i(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 === null) { + pos2 = pos; + result0 = parse_a(); + if (result0 !== null) { + result1 = parse_u(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 === null) { + pos2 = pos; + result0 = parse_e(); + if (result0 !== null) { + result1 = parse_i(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + if (result0 === null) { + pos2 = pos; + result0 = parse_o(); + if (result0 !== null) { + result1 = parse_i(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } + } + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_nucleus(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_glide(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0[0]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_vowel() { + var cacheKey = "vowel@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_a(); + if (result0 === null) { + result0 = parse_e(); + if (result0 === null) { + result0 = parse_i(); + if (result0 === null) { + result0 = parse_o(); + if (result0 === null) { + result0 = parse_u(); + } + } + } + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_nucleus(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return expr;})(pos0, result0[0]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_a() { + var cacheKey = "a@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[aA]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[aA]"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "a";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_e() { + var cacheKey = "e@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[eE]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[eE]"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "e";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_i() { + var cacheKey = "i@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[iI]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[iI]"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "i";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_o() { + var cacheKey = "o@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[oO]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[oO]"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "o";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_u() { + var cacheKey = "u@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[uU]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[uU]"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "u";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_y() { + var cacheKey = "y@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[yY]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[yY]"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "y";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_cluster() { + var cacheKey = "cluster@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_consonant(); + if (result0 !== null) { + result2 = parse_consonant(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_consonant(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_initial_pair() { + var cacheKey = "initial_pair@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_initial(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_consonant(); + if (result1 !== null) { + result2 = parse_consonant(); + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_consonant(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_initial() { + var cacheKey = "initial@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = parse_affricate(); + if (result0 === null) { + pos2 = pos; + result0 = parse_sibilant(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result1 = parse_other(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result2 = parse_liquid(); + result2 = result2 !== null ? result2 : ""; + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } else { + result0 = null; + pos = pos2; + } + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_consonant(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_glide(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0[0]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_affricate() { + var cacheKey = "affricate@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_t(); + if (result0 !== null) { + result1 = parse_c(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_t(); + if (result0 !== null) { + result1 = parse_s(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_d(); + if (result0 !== null) { + result1 = parse_j(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_d(); + if (result0 !== null) { + result1 = parse_z(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_liquid() { + var cacheKey = "liquid@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_l(); + if (result0 === null) { + result0 = parse_r(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_other() { + var cacheKey = "other@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_p(); + if (result0 === null) { + pos1 = pos; + result0 = parse_t(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_l(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_k(); + if (result0 === null) { + result0 = parse_f(); + if (result0 === null) { + result0 = parse_x(); + if (result0 === null) { + result0 = parse_b(); + if (result0 === null) { + pos1 = pos; + result0 = parse_d(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_l(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_g(); + if (result0 === null) { + result0 = parse_v(); + if (result0 === null) { + result0 = parse_m(); + if (result0 === null) { + pos1 = pos; + result0 = parse_n(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_liquid(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + } + } + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_sibilant() { + var cacheKey = "sibilant@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_c(); + if (result0 === null) { + pos1 = pos; + result0 = parse_s(); + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_x(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + pos1 = pos; + result0 = parse_j(); + if (result0 === null) { + result0 = parse_z(); + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_n(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_liquid(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr); })(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_consonant() { + var cacheKey = "consonant@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_voiced(); + if (result0 === null) { + result0 = parse_unvoiced(); + if (result0 === null) { + result0 = parse_syllabic(); + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return expr;})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_syllabic() { + var cacheKey = "syllabic@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_l(); + if (result0 === null) { + result0 = parse_m(); + if (result0 === null) { + result0 = parse_n(); + if (result0 === null) { + result0 = parse_r(); + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return expr;})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_voiced() { + var cacheKey = "voiced@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_b(); + if (result0 === null) { + result0 = parse_d(); + if (result0 === null) { + result0 = parse_g(); + if (result0 === null) { + result0 = parse_j(); + if (result0 === null) { + result0 = parse_v(); + if (result0 === null) { + result0 = parse_z(); + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return expr;})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_unvoiced() { + var cacheKey = "unvoiced@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + result0 = parse_c(); + if (result0 === null) { + result0 = parse_f(); + if (result0 === null) { + result0 = parse_k(); + if (result0 === null) { + result0 = parse_p(); + if (result0 === null) { + result0 = parse_s(); + if (result0 === null) { + result0 = parse_t(); + if (result0 === null) { + result0 = parse_x(); + } + } + } + } + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return expr;})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_l() { + var cacheKey = "l@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[lL]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[lL]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_l(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "l";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_m() { + var cacheKey = "m@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[mM]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[mM]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_m(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_z(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "m";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_n() { + var cacheKey = "n@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[nN]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[nN]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_n(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_affricate(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "n";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_r() { + var cacheKey = "r@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[rR]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[rR]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_r(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "r";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_b() { + var cacheKey = "b@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[bB]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[bB]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_b(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_unvoiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "b";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_d() { + var cacheKey = "d@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[dD]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[dD]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_d(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_unvoiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "d";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_g() { + var cacheKey = "g@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[gG]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[gG]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_g(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_unvoiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "g";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_v() { + var cacheKey = "v@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[vV]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[vV]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_v(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_unvoiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "v";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_j() { + var cacheKey = "j@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[jJ]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[jJ]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_j(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_z(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_unvoiced(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "j";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_z() { + var cacheKey = "z@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[zZ]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[zZ]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_z(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_j(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_unvoiced(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "z";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_s() { + var cacheKey = "s@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[sS]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[sS]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_s(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_c(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_voiced(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "s";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_c() { + var cacheKey = "c@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[cC]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[cC]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_c(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_s(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_x(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + pos2 = pos; + reportFailures++; + result6 = parse_voiced(); + reportFailures--; + if (result6 === null) { + result6 = ""; + } else { + result6 = null; + pos = pos2; + } + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "c";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_x() { + var cacheKey = "x@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[xX]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[xX]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_x(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_c(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_k(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + pos2 = pos; + reportFailures++; + result6 = parse_voiced(); + reportFailures--; + if (result6 === null) { + result6 = ""; + } else { + result6 = null; + pos = pos2; + } + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "x";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_k() { + var cacheKey = "k@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[kK]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[kK]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_k(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_x(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + pos2 = pos; + reportFailures++; + result5 = parse_voiced(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = pos2; + } + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "k";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_f() { + var cacheKey = "f@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[fF]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[fF]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_f(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_voiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "f";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_p() { + var cacheKey = "p@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[pP]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[pP]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_p(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_voiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "p";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_t() { + var cacheKey = "t@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[tT]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[tT]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_t(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + pos2 = pos; + reportFailures++; + result4 = parse_voiced(); + reportFailures--; + if (result4 === null) { + result4 = ""; + } else { + result4 = null; + pos = pos2; + } + if (result4 !== null) { + result0 = [result0, result1, result2, result3, result4]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "t";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_h() { + var cacheKey = "h@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^['h]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("['h]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_nucleus(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset) {return "'";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_digit() { + var cacheKey = "digit@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + if (/^[0123456789]/.test(input.charAt(pos))) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[0123456789]"); + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_h(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = pos2; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_nucleus(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = pos2; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_post_word() { + var cacheKey = "post_word@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + result0 = parse_pause(); + if (result0 === null) { + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_nucleus(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_lojban_word(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_pause() { + var cacheKey = "pause@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + result1 = parse_space_char(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_EOF(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_EOF() { + var cacheKey = "EOF@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + result0 = []; + result1 = parse_comma(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_comma(); + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + if (input.length > pos) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_comma() { + var cacheKey = "comma@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + if (/^[,]/.test(input.charAt(pos))) { + result0 = input.charAt(pos); + pos++; + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("[,]"); + } + } + if (result0 !== null) { + result0 = (function(offset) {return "";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_non_lojban_word() { + var cacheKey = "non_lojban_word@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_lojban_word(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result2 = parse_non_space(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_non_space(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_non_space() { + var cacheKey = "non_space@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_space_char(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + if (input.length > pos) { + result1 = input.charAt(pos); + pos++; + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_space_char() { + var cacheKey = "space_char@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0; + var pos0; + + pos0 = pos; + if (/^[.\t\n\r?! ]/.test(input.charAt(pos))) { + result0 = input.charAt(pos); + pos++; + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("[.\\t\\n\\r?! ]"); + } + } + if (result0 !== null) { + result0 = (function(offset) {return "";})(pos0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_spaces() { + var cacheKey = "spaces@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_Y(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + result1 = parse_initial_spaces(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_initial_spaces() { + var cacheKey = "initial_spaces@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2, pos3; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + result1 = []; + result2 = parse_comma(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_comma(); + } + if (result1 !== null) { + result2 = parse_space_char(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + pos3 = pos; + reportFailures++; + result1 = parse_ybu(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos3; + } + if (result1 !== null) { + result2 = parse_Y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos2 = pos; + result1 = []; + result2 = parse_comma(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_comma(); + } + if (result1 !== null) { + result2 = parse_space_char(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + pos3 = pos; + reportFailures++; + result1 = parse_ybu(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos3; + } + if (result1 !== null) { + result2 = parse_Y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_EOF(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 === null) { + result0 = parse_EOF(); + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ybu() { + var cacheKey = "ybu@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1; + + pos0 = pos; + pos1 = pos; + result0 = parse_Y(); + if (result0 !== null) { + result1 = []; + result2 = parse_space_char(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_space_char(); + } + if (result1 !== null) { + result2 = parse_BU(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _join(expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_lujvo() { + var cacheKey = "lujvo@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_gismu(); + reportFailures--; + if (result0 === null) { + result0 = ""; + } else { + result0 = null; + pos = pos2; + } + if (result0 !== null) { + pos2 = pos; + reportFailures++; + result1 = parse_fuhivla(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + result2 = parse_brivla(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return _node("lujvo", expr);})(pos0, result0); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_A() { + var cacheKey = "A@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_a(); + if (result1 === null) { + result1 = parse_e(); + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + result1 = parse_o(); + if (result1 === null) { + result1 = parse_u(); + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["A", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAI() { + var cacheKey = "BAI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BAI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BAhE() { + var cacheKey = "BAhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BAhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BE() { + var cacheKey = "BE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BEI() { + var cacheKey = "BEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BEhO() { + var cacheKey = "BEhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BEhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BIhE() { + var cacheKey = "BIhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BIhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BIhI() { + var cacheKey = "BIhI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BIhI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BO() { + var cacheKey = "BO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BOI() { + var cacheKey = "BOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BU() { + var cacheKey = "BU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_BY() { + var cacheKey = "BY@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + result0 = parse_ybu(); + if (result0 === null) { + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_y(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_y(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_x(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["BY", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CAhA() { + var cacheKey = "CAhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CAhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CAI() { + var cacheKey = "CAI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CAI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CEI() { + var cacheKey = "CEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CEhE() { + var cacheKey = "CEhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CEhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CO() { + var cacheKey = "CO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_COI() { + var cacheKey = "COI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["COI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CU() { + var cacheKey = "CU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_CUhE() { + var cacheKey = "CUhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["CUhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DAhO() { + var cacheKey = "DAhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["DAhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DOI() { + var cacheKey = "DOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["DOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_DOhU() { + var cacheKey = "DOhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["DOhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FA() { + var cacheKey = "FA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FAhA() { + var cacheKey = "FAhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + pos2 = pos; + reportFailures++; + result3 = parse_post_word(); + reportFailures--; + if (result3 !== null) { + result3 = ""; + pos = pos2; + } else { + result3 = null; + } + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FAhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FAhO() { + var cacheKey = "FAhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FAhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FEhE() { + var cacheKey = "FEhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FEhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FEhU() { + var cacheKey = "FEhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FEhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FIhO() { + var cacheKey = "FIhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FIhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FOI() { + var cacheKey = "FOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhA() { + var cacheKey = "FUhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FUhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhE() { + var cacheKey = "FUhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FUhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_FUhO() { + var cacheKey = "FUhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["FUhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GA() { + var cacheKey = "GA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GAhO() { + var cacheKey = "GAhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GAhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GEhU() { + var cacheKey = "GEhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GEhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GI() { + var cacheKey = "GI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GIhA() { + var cacheKey = "GIhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GIhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GOI() { + var cacheKey = "GOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GOhA() { + var cacheKey = "GOhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GOhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_GUhA() { + var cacheKey = "GUhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["GUhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_I() { + var cacheKey = "I@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_i(); + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["I", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JA() { + var cacheKey = "JA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return ["JA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JAI() { + var cacheKey = "JAI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["JAI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JOhI() { + var cacheKey = "JOhI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["JOhI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_JOI() { + var cacheKey = "JOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["JOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KE() { + var cacheKey = "KE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEhE() { + var cacheKey = "KEhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KEhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KEI() { + var cacheKey = "KEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KI() { + var cacheKey = "KI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KOhA() { + var cacheKey = "KOhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return ["KOhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KU() { + var cacheKey = "KU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KUhE() { + var cacheKey = "KUhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KUhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_KUhO() { + var cacheKey = "KUhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["KUhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LA() { + var cacheKey = "LA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return ["LA", _join(expr)]; })(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LAU() { + var cacheKey = "LAU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LAU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LAhE() { + var cacheKey = "LAhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LAhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LE() { + var cacheKey = "LE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) { return ["LE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LEhU() { + var cacheKey = "LEhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LEhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LI() { + var cacheKey = "LI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LIhU() { + var cacheKey = "LIhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LIhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LOhO() { + var cacheKey = "LOhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LOhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LOhU() { + var cacheKey = "LOhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LOhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LU() { + var cacheKey = "LU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_LUhU() { + var cacheKey = "LUhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["LUhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MAhO() { + var cacheKey = "MAhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MAhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MAI() { + var cacheKey = "MAI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MAI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ME() { + var cacheKey = "ME@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ME", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MEhU() { + var cacheKey = "MEhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MEhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOhE() { + var cacheKey = "MOhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MOhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOhI() { + var cacheKey = "MOhI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MOhI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_MOI() { + var cacheKey = "MOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NA() { + var cacheKey = "NA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["MA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAI() { + var cacheKey = "NAI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NAI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAhE() { + var cacheKey = "NAhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NAhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NAhU() { + var cacheKey = "NAhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NAhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhE() { + var cacheKey = "NIhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NIhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NIhO() { + var cacheKey = "NIhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NIhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NOI() { + var cacheKey = "NOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NU() { + var cacheKey = "NU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhA() { + var cacheKey = "NUhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NUhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhI() { + var cacheKey = "NUhI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NUhI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_NUhU() { + var cacheKey = "NUhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["NUhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PA() { + var cacheKey = "PA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_x(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_x(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + result1 = parse_digit(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["PA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PEhE() { + var cacheKey = "PEhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["PEhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PEhO() { + var cacheKey = "PEhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["PEhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_PU() { + var cacheKey = "PU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["PU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_RAhO() { + var cacheKey = "RAhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["RAhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ROI() { + var cacheKey = "ROI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ROI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SA() { + var cacheKey = "SA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SE() { + var cacheKey = "SE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_x(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SEI() { + var cacheKey = "SEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SEhU() { + var cacheKey = "SEhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SEhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SI() { + var cacheKey = "SI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SOI() { + var cacheKey = "SOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_SU() { + var cacheKey = "SU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["SU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TAhE() { + var cacheKey = "TAhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TAhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TEhU() { + var cacheKey = "TEhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TEhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TEI() { + var cacheKey = "TEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TO() { + var cacheKey = "TO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TOI() { + var cacheKey = "TOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhE() { + var cacheKey = "TUhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TUhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_TUhU() { + var cacheKey = "TUhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["TUhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_UI() { + var cacheKey = "UI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_a(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_e(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_o(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_e(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_a(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_o(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_o(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_e(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_e(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_e(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_o(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_e(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_o(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_a(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_o(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_a(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_e(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_o(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_o(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_e(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_a(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_o(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_a(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_o(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_e(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_o(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_e(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_i(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_u(); + if (result1 !== null) { + result2 = parse_h(); + if (result2 !== null) { + result3 = parse_e(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_k(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_x(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["UI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VA() { + var cacheKey = "VA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VAU() { + var cacheKey = "VAU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_u(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VAU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEI() { + var cacheKey = "VEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEhO() { + var cacheKey = "VEhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VEhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VUhU() { + var cacheKey = "VUhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_j(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_g(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_t(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_n(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_f(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_r(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_s(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VUhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VEhA() { + var cacheKey = "VEhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VEhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VIhA() { + var cacheKey = "VIhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VIhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_VUhO() { + var cacheKey = "VUhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_v(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["VUhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_XI() { + var cacheKey = "XI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_x(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["XI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_Y() { + var cacheKey = "Y@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + result2 = parse_y(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_y(); + } + } else { + result1 = null; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["Y", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZAhO() { + var cacheKey = "ZAhO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_p(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_m(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_c(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_b(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_d(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + } + } + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZAhO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEhA() { + var cacheKey = "ZEhA@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_a(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_i(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZEhA", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZEI() { + var cacheKey = "ZEI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_e(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZEI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZI() { + var cacheKey = "ZI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_u(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZIhE() { + var cacheKey = "ZIhE@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_i(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_e(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZIhE", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZO() { + var cacheKey = "ZO@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZO", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZOI() { + var cacheKey = "ZOI@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_i(); + if (result3 !== null) { + result1 = [result1, result2, result3]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 === null) { + pos2 = pos; + result1 = parse_l(); + if (result1 !== null) { + result2 = parse_a(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_o(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZOI", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + function parse_ZOhU() { + var cacheKey = "ZOhU@" + pos; + var cachedResult = cache[cacheKey]; + if (cachedResult) { + pos = cachedResult.nextPos; + return cachedResult.result; + } + + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + pos0 = pos; + pos1 = pos; + pos2 = pos; + reportFailures++; + result0 = parse_cmavo(); + reportFailures--; + if (result0 !== null) { + result0 = ""; + pos = pos2; + } else { + result0 = null; + } + if (result0 !== null) { + pos2 = pos; + result1 = parse_z(); + if (result1 !== null) { + result2 = parse_o(); + if (result2 !== null) { + result3 = parse_h(); + if (result3 !== null) { + result4 = parse_u(); + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + } else { + result1 = null; + pos = pos2; + } + if (result1 !== null) { + pos2 = pos; + reportFailures++; + result2 = parse_post_word(); + reportFailures--; + if (result2 !== null) { + result2 = ""; + pos = pos2; + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + } else { + result0 = null; + pos = pos1; + } + if (result0 !== null) { + result0 = (function(offset, expr) {return ["ZOhU", _join(expr)];})(pos0, result0[1]); + } + if (result0 === null) { + pos = pos0; + } + + cache[cacheKey] = { + nextPos: pos, + result: result0 + }; + return result0; + } + + + function cleanupExpected(expected) { + expected.sort(); + + var lastExpected = null; + var cleanExpected = []; + for (var i = 0; i < expected.length; i++) { + if (expected[i] !== lastExpected) { + cleanExpected.push(expected[i]); + lastExpected = expected[i]; + } + } + return cleanExpected; + } + + function computeErrorPosition() { + /* + * The first idea was to use |String.split| to break the input up to the + * error position along newlines and derive the line and column from + * there. However IE's |split| implementation is so broken that it was + * enough to prevent it. + */ + + var line = 1; + var column = 1; + var seenCR = false; + + for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) { + var ch = input.charAt(i); + if (ch === "\n") { + if (!seenCR) { line++; } + column = 1; + seenCR = false; + } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { + line++; + column = 1; + seenCR = true; + } else { + column++; + seenCR = false; + } + } + + return { line: line, column: column }; + } + + + function _join(arg) + { + if (typeof(arg) == "string") + return arg; + else + { + ret = ""; + for (v in arg) { ret += _join(arg[v]); } + return ret; + } + } + + function _node(label, arg) + { + var ret = []; + if (label != undefined) ret.push( label ); + if (typeof( arg ) == "object" && typeof( arg[0] ) == "string" && arg[0] != "") + { + ret.push( arg ); + return ret; + } + return _node_int(label, arg); + } + + function _node_int(label, arg) + { + if (typeof( arg ) == "string") + return arg; + var ret = []; + if (label != undefined) ret.push( label ); + for (v in arg) + { + if (arg[v].length != 0) + ret.push( _node_int( undefined, arg[v] ) ); + } + return ret; + } + + function _node2(label, arg1, arg2) + { + return [label].concat(_node(arg1)).concat(_node(arg2)); + } + + function _node_nonempty(label, arg) + { + var _n = _node(label, arg); + return (_n.length == 1 && _n[0] == label) ? [] : _n; + } + + + var result = parseFunctions[startRule](); + + /* + * The parser is now in one of the following three states: + * + * 1. The parser successfully parsed the whole input. + * + * - |result !== null| + * - |pos === input.length| + * - |rightmostFailuresExpected| may or may not contain something + * + * 2. The parser successfully parsed only a part of the input. + * + * - |result !== null| + * - |pos < input.length| + * - |rightmostFailuresExpected| may or may not contain something + * + * 3. The parser did not successfully parse any part of the input. + * + * - |result === null| + * - |pos === 0| + * - |rightmostFailuresExpected| contains at least one failure + * + * All code following this comment (including called functions) must + * handle these states. + */ + if (result === null || pos !== input.length) { + var offset = Math.max(pos, rightmostFailuresPos); + var found = offset < input.length ? input.charAt(offset) : null; + var errorPosition = computeErrorPosition(); + + throw new this.SyntaxError( + cleanupExpected(rightmostFailuresExpected), + found, + offset, + errorPosition.line, + errorPosition.column + ); + } + + return result; + }, + + /* Returns the parser source code. */ + toSource: function() { return this._source; } + }; + + /* Thrown when a parser encounters a syntax error. */ + + result.SyntaxError = function(expected, found, offset, line, column) { + function buildMessage(expected, found) { + var expectedHumanized, foundHumanized; + + switch (expected.length) { + case 0: + expectedHumanized = "end of input"; + break; + case 1: + expectedHumanized = expected[0]; + break; + default: + expectedHumanized = expected.slice(0, expected.length - 1).join(", ") + + " or " + + expected[expected.length - 1]; + } + + foundHumanized = found ? quote(found) : "end of input"; + + return "Expected " + expectedHumanized + " but " + foundHumanized + " found."; + } + + this.name = "SyntaxError"; + this.expected = expected; + this.found = found; + this.message = buildMessage(expected, found); + this.offset = offset; + this.line = line; + this.column = column; + }; + + result.SyntaxError.prototype = Error.prototype; + + return result; +})() \ No newline at end of file