diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRE.interp b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRE.interp new file mode 100644 index 0000000..e9d4fd5 --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRE.interp @@ -0,0 +1,298 @@ +token literal names: +null +null +null +'\\a' +null +'\\e' +'\\f' +'\\n' +'\\r' +'\\t' +'\\' +null +'.' +'\\C' +'\\d' +'\\D' +'\\h' +'\\H' +'\\N' +null +null +'\\R' +'\\s' +'\\S' +'\\v' +'\\V' +'\\w' +'\\W' +'\\X' +'[' +']' +'^' +'-' +null +null +'?' +'+' +'*' +'{' +'}' +',' +'\\b' +'\\B' +'\\A' +'$' +'\\Z' +'\\z' +'\\G' +'\\K' +'\\g' +'\\k' +'|' +'(' +')' +'<' +'>' +'\'' +'_' +':' +'#' +'=' +'!' +'&' +'a' +'b' +'c' +'d' +'e' +'f' +'g' +'h' +'i' +'j' +'k' +'l' +'m' +'n' +'o' +'p' +'q' +'r' +'s' +'t' +'u' +'v' +'w' +'x' +'y' +'z' +'A' +'B' +'C' +'D' +'E' +'F' +'G' +'H' +'I' +'J' +'K' +'L' +'M' +'N' +'O' +'P' +'Q' +'R' +'S' +'T' +'U' +'V' +'W' +'X' +'Y' +'Z' +'1' +'2' +'3' +'4' +'5' +'6' +'7' +'8' +'9' +'0' +null + +token symbolic names: +null +Quoted +BlockQuoted +BellChar +ControlChar +EscapeChar +FormFeed +NewLine +CarriageReturn +Tab +Backslash +HexChar +Dot +OneDataUnit +DecimalDigit +NotDecimalDigit +HorizontalWhiteSpace +NotHorizontalWhiteSpace +NotNewLine +CharWithProperty +CharWithoutProperty +NewLineSequence +WhiteSpace +NotWhiteSpace +VerticalWhiteSpace +NotVerticalWhiteSpace +WordChar +NotWordChar +ExtendedUnicodeChar +CharacterClassStart +CharacterClassEnd +Caret +Hyphen +POSIXNamedSet +POSIXNegatedNamedSet +QuestionMark +Plus +Star +OpenBrace +CloseBrace +Comma +WordBoundary +NonWordBoundary +StartOfSubject +EndOfSubjectOrLine +EndOfSubjectOrLineEndOfSubject +EndOfSubject +PreviousMatchInSubject +ResetStartMatch +SubroutineOrNamedReferenceStartG +NamedReferenceStartK +Pipe +OpenParen +CloseParen +LessThan +GreaterThan +SingleQuote +Underscore +Colon +Hash +Equals +Exclamation +Ampersand +ALC +BLC +CLC +DLC +ELC +FLC +GLC +HLC +ILC +JLC +KLC +LLC +MLC +NLC +OLC +PLC +QLC +RLC +SLC +TLC +ULC +VLC +WLC +XLC +YLC +ZLC +AUC +BUC +CUC +DUC +EUC +FUC +GUC +HUC +IUC +JUC +KUC +LUC +MUC +NUC +OUC +PUC +QUC +RUC +SUC +TUC +UUC +VUC +WUC +XUC +YUC +ZUC +D1 +D2 +D3 +D4 +D5 +D6 +D7 +D8 +D9 +D0 +OtherChar + +rule names: +parse +alternation +expr +element +quantifier +quantifier_type +character_class +backreference +backreference_or_octal +capture +non_capture +comment +option +option_flags +option_flag +look_around +subroutine_reference +conditional +backtrack_control +newline_convention +callout +atom +cc_atom +shared_atom +literal +cc_literal +shared_literal +number +octal_char +octal_digit +digits +digit +name +alpha_nums +non_close_parens +non_close_paren +letter + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 127, 950, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 7, 3, 83, 10, 3, 12, 3, 14, 3, 86, 11, 3, 3, 4, 7, 4, 89, 10, 4, 12, 4, 14, 4, 92, 11, 4, 3, 5, 3, 5, 5, 5, 96, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 122, 10, 6, 3, 7, 3, 7, 3, 7, 5, 7, 127, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 6, 8, 134, 10, 8, 13, 8, 14, 8, 135, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 144, 10, 8, 12, 8, 14, 8, 147, 11, 8, 3, 8, 3, 8, 3, 8, 3, 8, 6, 8, 153, 10, 8, 13, 8, 14, 8, 154, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 6, 8, 163, 10, 8, 13, 8, 14, 8, 164, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 172, 10, 8, 12, 8, 14, 8, 175, 11, 8, 3, 8, 3, 8, 3, 8, 6, 8, 180, 10, 8, 13, 8, 14, 8, 181, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 229, 10, 9, 3, 10, 3, 10, 3, 10, 5, 10, 234, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 265, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 292, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 354, 10, 14, 3, 15, 6, 15, 357, 10, 15, 13, 15, 14, 15, 358, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 389, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 469, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 479, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 492, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 505, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 519, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 533, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 546, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 558, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 572, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 589, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 606, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 618, 10, 19, 3, 19, 3, 19, 5, 19, 622, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 639, 10, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 648, 10, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 724, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 787, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 799, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 827, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 836, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 857, 10, 25, 3, 26, 3, 26, 5, 26, 861, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 875, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 903, 10, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 916, 10, 30, 3, 31, 3, 31, 3, 32, 6, 32, 921, 10, 32, 13, 32, 14, 32, 922, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 5, 35, 931, 10, 35, 3, 35, 3, 35, 3, 35, 7, 35, 936, 10, 35, 12, 35, 14, 35, 939, 11, 35, 3, 36, 6, 36, 942, 10, 36, 13, 36, 14, 36, 943, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 2, 2, 39, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 2, 8, 8, 2, 73, 73, 77, 77, 83, 83, 88, 88, 100, 100, 111, 111, 4, 2, 117, 119, 126, 126, 4, 2, 117, 123, 126, 126, 3, 2, 117, 126, 3, 2, 55, 55, 3, 2, 65, 116, 2, 1099, 2, 76, 3, 2, 2, 2, 4, 79, 3, 2, 2, 2, 6, 90, 3, 2, 2, 2, 8, 93, 3, 2, 2, 2, 10, 121, 3, 2, 2, 2, 12, 126, 3, 2, 2, 2, 14, 185, 3, 2, 2, 2, 16, 228, 3, 2, 2, 2, 18, 233, 3, 2, 2, 2, 20, 264, 3, 2, 2, 2, 22, 291, 3, 2, 2, 2, 24, 293, 3, 2, 2, 2, 26, 353, 3, 2, 2, 2, 28, 356, 3, 2, 2, 2, 30, 360, 3, 2, 2, 2, 32, 388, 3, 2, 2, 2, 34, 468, 3, 2, 2, 2, 36, 621, 3, 2, 2, 2, 38, 723, 3, 2, 2, 2, 40, 786, 3, 2, 2, 2, 42, 798, 3, 2, 2, 2, 44, 826, 3, 2, 2, 2, 46, 835, 3, 2, 2, 2, 48, 856, 3, 2, 2, 2, 50, 860, 3, 2, 2, 2, 52, 874, 3, 2, 2, 2, 54, 902, 3, 2, 2, 2, 56, 904, 3, 2, 2, 2, 58, 915, 3, 2, 2, 2, 60, 917, 3, 2, 2, 2, 62, 920, 3, 2, 2, 2, 64, 924, 3, 2, 2, 2, 66, 926, 3, 2, 2, 2, 68, 930, 3, 2, 2, 2, 70, 941, 3, 2, 2, 2, 72, 945, 3, 2, 2, 2, 74, 947, 3, 2, 2, 2, 76, 77, 5, 4, 3, 2, 77, 78, 7, 2, 2, 3, 78, 3, 3, 2, 2, 2, 79, 84, 5, 6, 4, 2, 80, 81, 7, 53, 2, 2, 81, 83, 5, 6, 4, 2, 82, 80, 3, 2, 2, 2, 83, 86, 3, 2, 2, 2, 84, 82, 3, 2, 2, 2, 84, 85, 3, 2, 2, 2, 85, 5, 3, 2, 2, 2, 86, 84, 3, 2, 2, 2, 87, 89, 5, 8, 5, 2, 88, 87, 3, 2, 2, 2, 89, 92, 3, 2, 2, 2, 90, 88, 3, 2, 2, 2, 90, 91, 3, 2, 2, 2, 91, 7, 3, 2, 2, 2, 92, 90, 3, 2, 2, 2, 93, 95, 5, 44, 23, 2, 94, 96, 5, 10, 6, 2, 95, 94, 3, 2, 2, 2, 95, 96, 3, 2, 2, 2, 96, 9, 3, 2, 2, 2, 97, 98, 7, 37, 2, 2, 98, 122, 5, 12, 7, 2, 99, 100, 7, 38, 2, 2, 100, 122, 5, 12, 7, 2, 101, 102, 7, 39, 2, 2, 102, 122, 5, 12, 7, 2, 103, 104, 7, 40, 2, 2, 104, 105, 5, 56, 29, 2, 105, 106, 7, 41, 2, 2, 106, 107, 5, 12, 7, 2, 107, 122, 3, 2, 2, 2, 108, 109, 7, 40, 2, 2, 109, 110, 5, 56, 29, 2, 110, 111, 7, 42, 2, 2, 111, 112, 7, 41, 2, 2, 112, 113, 5, 12, 7, 2, 113, 122, 3, 2, 2, 2, 114, 115, 7, 40, 2, 2, 115, 116, 5, 56, 29, 2, 116, 117, 7, 42, 2, 2, 117, 118, 5, 56, 29, 2, 118, 119, 7, 41, 2, 2, 119, 120, 5, 12, 7, 2, 120, 122, 3, 2, 2, 2, 121, 97, 3, 2, 2, 2, 121, 99, 3, 2, 2, 2, 121, 101, 3, 2, 2, 2, 121, 103, 3, 2, 2, 2, 121, 108, 3, 2, 2, 2, 121, 114, 3, 2, 2, 2, 122, 11, 3, 2, 2, 2, 123, 127, 7, 38, 2, 2, 124, 127, 7, 37, 2, 2, 125, 127, 3, 2, 2, 2, 126, 123, 3, 2, 2, 2, 126, 124, 3, 2, 2, 2, 126, 125, 3, 2, 2, 2, 127, 13, 3, 2, 2, 2, 128, 129, 7, 31, 2, 2, 129, 130, 7, 33, 2, 2, 130, 131, 7, 32, 2, 2, 131, 133, 7, 34, 2, 2, 132, 134, 5, 46, 24, 2, 133, 132, 3, 2, 2, 2, 134, 135, 3, 2, 2, 2, 135, 133, 3, 2, 2, 2, 135, 136, 3, 2, 2, 2, 136, 137, 3, 2, 2, 2, 137, 138, 7, 32, 2, 2, 138, 186, 3, 2, 2, 2, 139, 140, 7, 31, 2, 2, 140, 141, 7, 33, 2, 2, 141, 145, 7, 32, 2, 2, 142, 144, 5, 46, 24, 2, 143, 142, 3, 2, 2, 2, 144, 147, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 145, 146, 3, 2, 2, 2, 146, 148, 3, 2, 2, 2, 147, 145, 3, 2, 2, 2, 148, 186, 7, 32, 2, 2, 149, 150, 7, 31, 2, 2, 150, 152, 7, 33, 2, 2, 151, 153, 5, 46, 24, 2, 152, 151, 3, 2, 2, 2, 153, 154, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 154, 155, 3, 2, 2, 2, 155, 156, 3, 2, 2, 2, 156, 157, 7, 32, 2, 2, 157, 186, 3, 2, 2, 2, 158, 159, 7, 31, 2, 2, 159, 160, 7, 32, 2, 2, 160, 162, 7, 34, 2, 2, 161, 163, 5, 46, 24, 2, 162, 161, 3, 2, 2, 2, 163, 164, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 166, 3, 2, 2, 2, 166, 167, 7, 32, 2, 2, 167, 186, 3, 2, 2, 2, 168, 169, 7, 31, 2, 2, 169, 173, 7, 32, 2, 2, 170, 172, 5, 46, 24, 2, 171, 170, 3, 2, 2, 2, 172, 175, 3, 2, 2, 2, 173, 171, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 176, 3, 2, 2, 2, 175, 173, 3, 2, 2, 2, 176, 186, 7, 32, 2, 2, 177, 179, 7, 31, 2, 2, 178, 180, 5, 46, 24, 2, 179, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 179, 3, 2, 2, 2, 181, 182, 3, 2, 2, 2, 182, 183, 3, 2, 2, 2, 183, 184, 7, 32, 2, 2, 184, 186, 3, 2, 2, 2, 185, 128, 3, 2, 2, 2, 185, 139, 3, 2, 2, 2, 185, 149, 3, 2, 2, 2, 185, 158, 3, 2, 2, 2, 185, 168, 3, 2, 2, 2, 185, 177, 3, 2, 2, 2, 186, 15, 3, 2, 2, 2, 187, 229, 5, 18, 10, 2, 188, 189, 7, 51, 2, 2, 189, 229, 5, 56, 29, 2, 190, 191, 7, 51, 2, 2, 191, 192, 7, 40, 2, 2, 192, 193, 5, 56, 29, 2, 193, 194, 7, 41, 2, 2, 194, 229, 3, 2, 2, 2, 195, 196, 7, 51, 2, 2, 196, 197, 7, 40, 2, 2, 197, 198, 7, 34, 2, 2, 198, 199, 5, 56, 29, 2, 199, 200, 7, 41, 2, 2, 200, 229, 3, 2, 2, 2, 201, 202, 7, 52, 2, 2, 202, 203, 7, 56, 2, 2, 203, 204, 5, 66, 34, 2, 204, 205, 7, 57, 2, 2, 205, 229, 3, 2, 2, 2, 206, 207, 7, 52, 2, 2, 207, 208, 7, 58, 2, 2, 208, 209, 5, 66, 34, 2, 209, 210, 7, 58, 2, 2, 210, 229, 3, 2, 2, 2, 211, 212, 7, 51, 2, 2, 212, 213, 7, 40, 2, 2, 213, 214, 5, 66, 34, 2, 214, 215, 7, 41, 2, 2, 215, 229, 3, 2, 2, 2, 216, 217, 7, 52, 2, 2, 217, 218, 7, 40, 2, 2, 218, 219, 5, 66, 34, 2, 219, 220, 7, 41, 2, 2, 220, 229, 3, 2, 2, 2, 221, 222, 7, 54, 2, 2, 222, 223, 7, 37, 2, 2, 223, 224, 7, 106, 2, 2, 224, 225, 7, 62, 2, 2, 225, 226, 5, 66, 34, 2, 226, 227, 7, 55, 2, 2, 227, 229, 3, 2, 2, 2, 228, 187, 3, 2, 2, 2, 228, 188, 3, 2, 2, 2, 228, 190, 3, 2, 2, 2, 228, 195, 3, 2, 2, 2, 228, 201, 3, 2, 2, 2, 228, 206, 3, 2, 2, 2, 228, 211, 3, 2, 2, 2, 228, 216, 3, 2, 2, 2, 228, 221, 3, 2, 2, 2, 229, 17, 3, 2, 2, 2, 230, 234, 5, 58, 30, 2, 231, 232, 7, 12, 2, 2, 232, 234, 5, 64, 33, 2, 233, 230, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 234, 19, 3, 2, 2, 2, 235, 236, 7, 54, 2, 2, 236, 237, 7, 37, 2, 2, 237, 238, 7, 56, 2, 2, 238, 239, 5, 66, 34, 2, 239, 240, 7, 57, 2, 2, 240, 241, 5, 4, 3, 2, 241, 242, 7, 55, 2, 2, 242, 265, 3, 2, 2, 2, 243, 244, 7, 54, 2, 2, 244, 245, 7, 37, 2, 2, 245, 246, 7, 58, 2, 2, 246, 247, 5, 66, 34, 2, 247, 248, 7, 58, 2, 2, 248, 249, 5, 4, 3, 2, 249, 250, 7, 55, 2, 2, 250, 265, 3, 2, 2, 2, 251, 252, 7, 54, 2, 2, 252, 253, 7, 37, 2, 2, 253, 254, 7, 106, 2, 2, 254, 255, 7, 56, 2, 2, 255, 256, 5, 66, 34, 2, 256, 257, 7, 57, 2, 2, 257, 258, 5, 4, 3, 2, 258, 259, 7, 55, 2, 2, 259, 265, 3, 2, 2, 2, 260, 261, 7, 54, 2, 2, 261, 262, 5, 4, 3, 2, 262, 263, 7, 55, 2, 2, 263, 265, 3, 2, 2, 2, 264, 235, 3, 2, 2, 2, 264, 243, 3, 2, 2, 2, 264, 251, 3, 2, 2, 2, 264, 260, 3, 2, 2, 2, 265, 21, 3, 2, 2, 2, 266, 267, 7, 54, 2, 2, 267, 268, 7, 37, 2, 2, 268, 269, 7, 60, 2, 2, 269, 270, 5, 4, 3, 2, 270, 271, 7, 55, 2, 2, 271, 292, 3, 2, 2, 2, 272, 273, 7, 54, 2, 2, 273, 274, 7, 37, 2, 2, 274, 275, 7, 53, 2, 2, 275, 276, 5, 4, 3, 2, 276, 277, 7, 55, 2, 2, 277, 292, 3, 2, 2, 2, 278, 279, 7, 54, 2, 2, 279, 280, 7, 37, 2, 2, 280, 281, 7, 57, 2, 2, 281, 282, 5, 4, 3, 2, 282, 283, 7, 55, 2, 2, 283, 292, 3, 2, 2, 2, 284, 285, 7, 54, 2, 2, 285, 286, 7, 37, 2, 2, 286, 287, 5, 28, 15, 2, 287, 288, 7, 60, 2, 2, 288, 289, 5, 4, 3, 2, 289, 290, 7, 55, 2, 2, 290, 292, 3, 2, 2, 2, 291, 266, 3, 2, 2, 2, 291, 272, 3, 2, 2, 2, 291, 278, 3, 2, 2, 2, 291, 284, 3, 2, 2, 2, 292, 23, 3, 2, 2, 2, 293, 294, 7, 54, 2, 2, 294, 295, 7, 37, 2, 2, 295, 296, 7, 61, 2, 2, 296, 297, 5, 70, 36, 2, 297, 298, 7, 55, 2, 2, 298, 25, 3, 2, 2, 2, 299, 300, 7, 54, 2, 2, 300, 301, 7, 37, 2, 2, 301, 302, 5, 28, 15, 2, 302, 303, 7, 34, 2, 2, 303, 304, 5, 28, 15, 2, 304, 305, 7, 55, 2, 2, 305, 354, 3, 2, 2, 2, 306, 307, 7, 54, 2, 2, 307, 308, 7, 37, 2, 2, 308, 309, 5, 28, 15, 2, 309, 310, 7, 55, 2, 2, 310, 354, 3, 2, 2, 2, 311, 312, 7, 54, 2, 2, 312, 313, 7, 37, 2, 2, 313, 314, 7, 34, 2, 2, 314, 315, 5, 28, 15, 2, 315, 316, 7, 55, 2, 2, 316, 354, 3, 2, 2, 2, 317, 318, 7, 54, 2, 2, 318, 319, 7, 39, 2, 2, 319, 320, 7, 104, 2, 2, 320, 321, 7, 105, 2, 2, 321, 322, 7, 59, 2, 2, 322, 323, 7, 109, 2, 2, 323, 324, 7, 110, 2, 2, 324, 325, 7, 91, 2, 2, 325, 326, 7, 108, 2, 2, 326, 327, 7, 110, 2, 2, 327, 328, 7, 59, 2, 2, 328, 329, 7, 105, 2, 2, 329, 330, 7, 106, 2, 2, 330, 331, 7, 110, 2, 2, 331, 354, 7, 55, 2, 2, 332, 333, 7, 54, 2, 2, 333, 334, 7, 39, 2, 2, 334, 335, 7, 111, 2, 2, 335, 336, 7, 110, 2, 2, 336, 337, 7, 96, 2, 2, 337, 338, 7, 124, 2, 2, 338, 354, 7, 55, 2, 2, 339, 340, 7, 54, 2, 2, 340, 341, 7, 39, 2, 2, 341, 342, 7, 111, 2, 2, 342, 343, 7, 110, 2, 2, 343, 344, 7, 96, 2, 2, 344, 345, 7, 117, 2, 2, 345, 346, 7, 122, 2, 2, 346, 354, 7, 55, 2, 2, 347, 348, 7, 54, 2, 2, 348, 349, 7, 39, 2, 2, 349, 350, 7, 111, 2, 2, 350, 351, 7, 93, 2, 2, 351, 352, 7, 106, 2, 2, 352, 354, 7, 55, 2, 2, 353, 299, 3, 2, 2, 2, 353, 306, 3, 2, 2, 2, 353, 311, 3, 2, 2, 2, 353, 317, 3, 2, 2, 2, 353, 332, 3, 2, 2, 2, 353, 339, 3, 2, 2, 2, 353, 347, 3, 2, 2, 2, 354, 27, 3, 2, 2, 2, 355, 357, 5, 30, 16, 2, 356, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 356, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 29, 3, 2, 2, 2, 360, 361, 9, 2, 2, 2, 361, 31, 3, 2, 2, 2, 362, 363, 7, 54, 2, 2, 363, 364, 7, 37, 2, 2, 364, 365, 7, 62, 2, 2, 365, 366, 5, 4, 3, 2, 366, 367, 7, 55, 2, 2, 367, 389, 3, 2, 2, 2, 368, 369, 7, 54, 2, 2, 369, 370, 7, 37, 2, 2, 370, 371, 7, 63, 2, 2, 371, 372, 5, 4, 3, 2, 372, 373, 7, 55, 2, 2, 373, 389, 3, 2, 2, 2, 374, 375, 7, 54, 2, 2, 375, 376, 7, 37, 2, 2, 376, 377, 7, 56, 2, 2, 377, 378, 7, 62, 2, 2, 378, 379, 5, 4, 3, 2, 379, 380, 7, 55, 2, 2, 380, 389, 3, 2, 2, 2, 381, 382, 7, 54, 2, 2, 382, 383, 7, 37, 2, 2, 383, 384, 7, 56, 2, 2, 384, 385, 7, 63, 2, 2, 385, 386, 5, 4, 3, 2, 386, 387, 7, 55, 2, 2, 387, 389, 3, 2, 2, 2, 388, 362, 3, 2, 2, 2, 388, 368, 3, 2, 2, 2, 388, 374, 3, 2, 2, 2, 388, 381, 3, 2, 2, 2, 389, 33, 3, 2, 2, 2, 390, 391, 7, 54, 2, 2, 391, 392, 7, 37, 2, 2, 392, 393, 7, 108, 2, 2, 393, 469, 7, 55, 2, 2, 394, 395, 7, 54, 2, 2, 395, 396, 7, 37, 2, 2, 396, 397, 5, 56, 29, 2, 397, 398, 7, 55, 2, 2, 398, 469, 3, 2, 2, 2, 399, 400, 7, 54, 2, 2, 400, 401, 7, 37, 2, 2, 401, 402, 7, 38, 2, 2, 402, 403, 5, 56, 29, 2, 403, 404, 7, 55, 2, 2, 404, 469, 3, 2, 2, 2, 405, 406, 7, 54, 2, 2, 406, 407, 7, 37, 2, 2, 407, 408, 7, 34, 2, 2, 408, 409, 5, 56, 29, 2, 409, 410, 7, 55, 2, 2, 410, 469, 3, 2, 2, 2, 411, 412, 7, 54, 2, 2, 412, 413, 7, 37, 2, 2, 413, 414, 7, 64, 2, 2, 414, 415, 5, 66, 34, 2, 415, 416, 7, 55, 2, 2, 416, 469, 3, 2, 2, 2, 417, 418, 7, 54, 2, 2, 418, 419, 7, 37, 2, 2, 419, 420, 7, 106, 2, 2, 420, 421, 7, 57, 2, 2, 421, 422, 5, 66, 34, 2, 422, 423, 7, 55, 2, 2, 423, 469, 3, 2, 2, 2, 424, 425, 7, 51, 2, 2, 425, 426, 7, 56, 2, 2, 426, 427, 5, 66, 34, 2, 427, 428, 7, 57, 2, 2, 428, 469, 3, 2, 2, 2, 429, 430, 7, 51, 2, 2, 430, 431, 7, 58, 2, 2, 431, 432, 5, 66, 34, 2, 432, 433, 7, 58, 2, 2, 433, 469, 3, 2, 2, 2, 434, 435, 7, 51, 2, 2, 435, 436, 7, 56, 2, 2, 436, 437, 5, 56, 29, 2, 437, 438, 7, 57, 2, 2, 438, 469, 3, 2, 2, 2, 439, 440, 7, 51, 2, 2, 440, 441, 7, 58, 2, 2, 441, 442, 5, 56, 29, 2, 442, 443, 7, 58, 2, 2, 443, 469, 3, 2, 2, 2, 444, 445, 7, 51, 2, 2, 445, 446, 7, 56, 2, 2, 446, 447, 7, 38, 2, 2, 447, 448, 5, 56, 29, 2, 448, 449, 7, 57, 2, 2, 449, 469, 3, 2, 2, 2, 450, 451, 7, 51, 2, 2, 451, 452, 7, 58, 2, 2, 452, 453, 7, 38, 2, 2, 453, 454, 5, 56, 29, 2, 454, 455, 7, 58, 2, 2, 455, 469, 3, 2, 2, 2, 456, 457, 7, 51, 2, 2, 457, 458, 7, 56, 2, 2, 458, 459, 7, 34, 2, 2, 459, 460, 5, 56, 29, 2, 460, 461, 7, 57, 2, 2, 461, 469, 3, 2, 2, 2, 462, 463, 7, 51, 2, 2, 463, 464, 7, 58, 2, 2, 464, 465, 7, 34, 2, 2, 465, 466, 5, 56, 29, 2, 466, 467, 7, 58, 2, 2, 467, 469, 3, 2, 2, 2, 468, 390, 3, 2, 2, 2, 468, 394, 3, 2, 2, 2, 468, 399, 3, 2, 2, 2, 468, 405, 3, 2, 2, 2, 468, 411, 3, 2, 2, 2, 468, 417, 3, 2, 2, 2, 468, 424, 3, 2, 2, 2, 468, 429, 3, 2, 2, 2, 468, 434, 3, 2, 2, 2, 468, 439, 3, 2, 2, 2, 468, 444, 3, 2, 2, 2, 468, 450, 3, 2, 2, 2, 468, 456, 3, 2, 2, 2, 468, 462, 3, 2, 2, 2, 469, 35, 3, 2, 2, 2, 470, 471, 7, 54, 2, 2, 471, 472, 7, 37, 2, 2, 472, 473, 7, 54, 2, 2, 473, 474, 5, 56, 29, 2, 474, 475, 7, 55, 2, 2, 475, 478, 5, 4, 3, 2, 476, 477, 7, 53, 2, 2, 477, 479, 5, 4, 3, 2, 478, 476, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 480, 3, 2, 2, 2, 480, 481, 7, 55, 2, 2, 481, 622, 3, 2, 2, 2, 482, 483, 7, 54, 2, 2, 483, 484, 7, 37, 2, 2, 484, 485, 7, 54, 2, 2, 485, 486, 7, 38, 2, 2, 486, 487, 5, 56, 29, 2, 487, 488, 7, 55, 2, 2, 488, 491, 5, 4, 3, 2, 489, 490, 7, 53, 2, 2, 490, 492, 5, 4, 3, 2, 491, 489, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 494, 7, 55, 2, 2, 494, 622, 3, 2, 2, 2, 495, 496, 7, 54, 2, 2, 496, 497, 7, 37, 2, 2, 497, 498, 7, 54, 2, 2, 498, 499, 7, 34, 2, 2, 499, 500, 5, 56, 29, 2, 500, 501, 7, 55, 2, 2, 501, 504, 5, 4, 3, 2, 502, 503, 7, 53, 2, 2, 503, 505, 5, 4, 3, 2, 504, 502, 3, 2, 2, 2, 504, 505, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 507, 7, 55, 2, 2, 507, 622, 3, 2, 2, 2, 508, 509, 7, 54, 2, 2, 509, 510, 7, 37, 2, 2, 510, 511, 7, 54, 2, 2, 511, 512, 7, 56, 2, 2, 512, 513, 5, 66, 34, 2, 513, 514, 7, 57, 2, 2, 514, 515, 7, 55, 2, 2, 515, 518, 5, 4, 3, 2, 516, 517, 7, 53, 2, 2, 517, 519, 5, 4, 3, 2, 518, 516, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 521, 7, 55, 2, 2, 521, 622, 3, 2, 2, 2, 522, 523, 7, 54, 2, 2, 523, 524, 7, 37, 2, 2, 524, 525, 7, 54, 2, 2, 525, 526, 7, 58, 2, 2, 526, 527, 5, 66, 34, 2, 527, 528, 7, 58, 2, 2, 528, 529, 7, 55, 2, 2, 529, 532, 5, 4, 3, 2, 530, 531, 7, 53, 2, 2, 531, 533, 5, 4, 3, 2, 532, 530, 3, 2, 2, 2, 532, 533, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 535, 7, 55, 2, 2, 535, 622, 3, 2, 2, 2, 536, 537, 7, 54, 2, 2, 537, 538, 7, 37, 2, 2, 538, 539, 7, 54, 2, 2, 539, 540, 7, 108, 2, 2, 540, 541, 5, 56, 29, 2, 541, 542, 7, 55, 2, 2, 542, 545, 5, 4, 3, 2, 543, 544, 7, 53, 2, 2, 544, 546, 5, 4, 3, 2, 545, 543, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 548, 7, 55, 2, 2, 548, 622, 3, 2, 2, 2, 549, 550, 7, 54, 2, 2, 550, 551, 7, 37, 2, 2, 551, 552, 7, 54, 2, 2, 552, 553, 7, 108, 2, 2, 553, 554, 7, 55, 2, 2, 554, 557, 5, 4, 3, 2, 555, 556, 7, 53, 2, 2, 556, 558, 5, 4, 3, 2, 557, 555, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 559, 3, 2, 2, 2, 559, 560, 7, 55, 2, 2, 560, 622, 3, 2, 2, 2, 561, 562, 7, 54, 2, 2, 562, 563, 7, 37, 2, 2, 563, 564, 7, 54, 2, 2, 564, 565, 7, 108, 2, 2, 565, 566, 7, 64, 2, 2, 566, 567, 5, 66, 34, 2, 567, 568, 7, 55, 2, 2, 568, 571, 5, 4, 3, 2, 569, 570, 7, 53, 2, 2, 570, 572, 5, 4, 3, 2, 571, 569, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 574, 7, 55, 2, 2, 574, 622, 3, 2, 2, 2, 575, 576, 7, 54, 2, 2, 576, 577, 7, 37, 2, 2, 577, 578, 7, 54, 2, 2, 578, 579, 7, 94, 2, 2, 579, 580, 7, 95, 2, 2, 580, 581, 7, 96, 2, 2, 581, 582, 7, 99, 2, 2, 582, 583, 7, 104, 2, 2, 583, 584, 7, 95, 2, 2, 584, 585, 7, 55, 2, 2, 585, 588, 5, 4, 3, 2, 586, 587, 7, 53, 2, 2, 587, 589, 5, 4, 3, 2, 588, 586, 3, 2, 2, 2, 588, 589, 3, 2, 2, 2, 589, 590, 3, 2, 2, 2, 590, 591, 7, 55, 2, 2, 591, 622, 3, 2, 2, 2, 592, 593, 7, 54, 2, 2, 593, 594, 7, 37, 2, 2, 594, 595, 7, 54, 2, 2, 595, 596, 7, 65, 2, 2, 596, 597, 7, 83, 2, 2, 597, 598, 7, 83, 2, 2, 598, 599, 7, 69, 2, 2, 599, 600, 7, 82, 2, 2, 600, 601, 7, 84, 2, 2, 601, 602, 7, 55, 2, 2, 602, 605, 5, 4, 3, 2, 603, 604, 7, 53, 2, 2, 604, 606, 5, 4, 3, 2, 605, 603, 3, 2, 2, 2, 605, 606, 3, 2, 2, 2, 606, 607, 3, 2, 2, 2, 607, 608, 7, 55, 2, 2, 608, 622, 3, 2, 2, 2, 609, 610, 7, 54, 2, 2, 610, 611, 7, 37, 2, 2, 611, 612, 7, 54, 2, 2, 612, 613, 5, 66, 34, 2, 613, 614, 7, 55, 2, 2, 614, 617, 5, 4, 3, 2, 615, 616, 7, 53, 2, 2, 616, 618, 5, 4, 3, 2, 617, 615, 3, 2, 2, 2, 617, 618, 3, 2, 2, 2, 618, 619, 3, 2, 2, 2, 619, 620, 7, 55, 2, 2, 620, 622, 3, 2, 2, 2, 621, 470, 3, 2, 2, 2, 621, 482, 3, 2, 2, 2, 621, 495, 3, 2, 2, 2, 621, 508, 3, 2, 2, 2, 621, 522, 3, 2, 2, 2, 621, 536, 3, 2, 2, 2, 621, 549, 3, 2, 2, 2, 621, 561, 3, 2, 2, 2, 621, 575, 3, 2, 2, 2, 621, 592, 3, 2, 2, 2, 621, 609, 3, 2, 2, 2, 622, 37, 3, 2, 2, 2, 623, 624, 7, 54, 2, 2, 624, 625, 7, 39, 2, 2, 625, 626, 7, 91, 2, 2, 626, 627, 7, 93, 2, 2, 627, 628, 7, 93, 2, 2, 628, 629, 7, 95, 2, 2, 629, 630, 7, 106, 2, 2, 630, 631, 7, 110, 2, 2, 631, 724, 7, 55, 2, 2, 632, 633, 7, 54, 2, 2, 633, 634, 7, 39, 2, 2, 634, 638, 7, 96, 2, 2, 635, 636, 7, 91, 2, 2, 636, 637, 7, 99, 2, 2, 637, 639, 7, 102, 2, 2, 638, 635, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 640, 3, 2, 2, 2, 640, 724, 7, 55, 2, 2, 641, 642, 7, 54, 2, 2, 642, 647, 7, 39, 2, 2, 643, 644, 7, 103, 2, 2, 644, 645, 7, 91, 2, 2, 645, 646, 7, 108, 2, 2, 646, 648, 7, 101, 2, 2, 647, 643, 3, 2, 2, 2, 647, 648, 3, 2, 2, 2, 648, 649, 3, 2, 2, 2, 649, 650, 7, 60, 2, 2, 650, 651, 7, 104, 2, 2, 651, 652, 7, 91, 2, 2, 652, 653, 7, 103, 2, 2, 653, 654, 7, 95, 2, 2, 654, 724, 7, 55, 2, 2, 655, 656, 7, 54, 2, 2, 656, 657, 7, 39, 2, 2, 657, 658, 7, 93, 2, 2, 658, 659, 7, 105, 2, 2, 659, 660, 7, 103, 2, 2, 660, 661, 7, 103, 2, 2, 661, 662, 7, 99, 2, 2, 662, 663, 7, 110, 2, 2, 663, 724, 7, 55, 2, 2, 664, 665, 7, 54, 2, 2, 665, 666, 7, 39, 2, 2, 666, 667, 7, 106, 2, 2, 667, 668, 7, 108, 2, 2, 668, 669, 7, 111, 2, 2, 669, 670, 7, 104, 2, 2, 670, 671, 7, 95, 2, 2, 671, 724, 7, 55, 2, 2, 672, 673, 7, 54, 2, 2, 673, 674, 7, 39, 2, 2, 674, 675, 7, 106, 2, 2, 675, 676, 7, 108, 2, 2, 676, 677, 7, 111, 2, 2, 677, 678, 7, 104, 2, 2, 678, 679, 7, 95, 2, 2, 679, 680, 7, 60, 2, 2, 680, 681, 7, 104, 2, 2, 681, 682, 7, 91, 2, 2, 682, 683, 7, 103, 2, 2, 683, 684, 7, 95, 2, 2, 684, 724, 7, 55, 2, 2, 685, 686, 7, 54, 2, 2, 686, 687, 7, 39, 2, 2, 687, 688, 7, 109, 2, 2, 688, 689, 7, 101, 2, 2, 689, 690, 7, 99, 2, 2, 690, 691, 7, 106, 2, 2, 691, 724, 7, 55, 2, 2, 692, 693, 7, 54, 2, 2, 693, 694, 7, 39, 2, 2, 694, 695, 7, 109, 2, 2, 695, 696, 7, 101, 2, 2, 696, 697, 7, 99, 2, 2, 697, 698, 7, 106, 2, 2, 698, 699, 7, 60, 2, 2, 699, 700, 7, 104, 2, 2, 700, 701, 7, 91, 2, 2, 701, 702, 7, 103, 2, 2, 702, 703, 7, 95, 2, 2, 703, 724, 7, 55, 2, 2, 704, 705, 7, 54, 2, 2, 705, 706, 7, 39, 2, 2, 706, 707, 7, 110, 2, 2, 707, 708, 7, 98, 2, 2, 708, 709, 7, 95, 2, 2, 709, 710, 7, 104, 2, 2, 710, 724, 7, 55, 2, 2, 711, 712, 7, 54, 2, 2, 712, 713, 7, 39, 2, 2, 713, 714, 7, 110, 2, 2, 714, 715, 7, 98, 2, 2, 715, 716, 7, 95, 2, 2, 716, 717, 7, 104, 2, 2, 717, 718, 7, 60, 2, 2, 718, 719, 7, 104, 2, 2, 719, 720, 7, 91, 2, 2, 720, 721, 7, 103, 2, 2, 721, 722, 7, 95, 2, 2, 722, 724, 7, 55, 2, 2, 723, 623, 3, 2, 2, 2, 723, 632, 3, 2, 2, 2, 723, 641, 3, 2, 2, 2, 723, 655, 3, 2, 2, 2, 723, 664, 3, 2, 2, 2, 723, 672, 3, 2, 2, 2, 723, 685, 3, 2, 2, 2, 723, 692, 3, 2, 2, 2, 723, 704, 3, 2, 2, 2, 723, 711, 3, 2, 2, 2, 724, 39, 3, 2, 2, 2, 725, 726, 7, 54, 2, 2, 726, 727, 7, 39, 2, 2, 727, 728, 7, 93, 2, 2, 728, 729, 7, 108, 2, 2, 729, 787, 7, 55, 2, 2, 730, 731, 7, 54, 2, 2, 731, 732, 7, 39, 2, 2, 732, 733, 7, 102, 2, 2, 733, 734, 7, 96, 2, 2, 734, 787, 7, 55, 2, 2, 735, 736, 7, 54, 2, 2, 736, 737, 7, 39, 2, 2, 737, 738, 7, 93, 2, 2, 738, 739, 7, 108, 2, 2, 739, 740, 7, 102, 2, 2, 740, 741, 7, 96, 2, 2, 741, 787, 7, 55, 2, 2, 742, 743, 7, 54, 2, 2, 743, 744, 7, 39, 2, 2, 744, 745, 7, 91, 2, 2, 745, 746, 7, 104, 2, 2, 746, 747, 7, 115, 2, 2, 747, 748, 7, 93, 2, 2, 748, 749, 7, 108, 2, 2, 749, 750, 7, 102, 2, 2, 750, 751, 7, 96, 2, 2, 751, 787, 7, 55, 2, 2, 752, 753, 7, 54, 2, 2, 753, 754, 7, 39, 2, 2, 754, 755, 7, 91, 2, 2, 755, 756, 7, 104, 2, 2, 756, 757, 7, 115, 2, 2, 757, 787, 7, 55, 2, 2, 758, 759, 7, 54, 2, 2, 759, 760, 7, 39, 2, 2, 760, 761, 7, 92, 2, 2, 761, 762, 7, 109, 2, 2, 762, 763, 7, 108, 2, 2, 763, 764, 7, 59, 2, 2, 764, 765, 7, 91, 2, 2, 765, 766, 7, 104, 2, 2, 766, 767, 7, 115, 2, 2, 767, 768, 7, 93, 2, 2, 768, 769, 7, 108, 2, 2, 769, 770, 7, 102, 2, 2, 770, 771, 7, 96, 2, 2, 771, 787, 7, 55, 2, 2, 772, 773, 7, 54, 2, 2, 773, 774, 7, 39, 2, 2, 774, 775, 7, 92, 2, 2, 775, 776, 7, 109, 2, 2, 776, 777, 7, 108, 2, 2, 777, 778, 7, 59, 2, 2, 778, 779, 7, 111, 2, 2, 779, 780, 7, 104, 2, 2, 780, 781, 7, 99, 2, 2, 781, 782, 7, 93, 2, 2, 782, 783, 7, 105, 2, 2, 783, 784, 7, 94, 2, 2, 784, 785, 7, 95, 2, 2, 785, 787, 7, 55, 2, 2, 786, 725, 3, 2, 2, 2, 786, 730, 3, 2, 2, 2, 786, 735, 3, 2, 2, 2, 786, 742, 3, 2, 2, 2, 786, 752, 3, 2, 2, 2, 786, 758, 3, 2, 2, 2, 786, 772, 3, 2, 2, 2, 787, 41, 3, 2, 2, 2, 788, 789, 7, 54, 2, 2, 789, 790, 7, 37, 2, 2, 790, 791, 7, 93, 2, 2, 791, 799, 7, 55, 2, 2, 792, 793, 7, 54, 2, 2, 793, 794, 7, 37, 2, 2, 794, 795, 7, 93, 2, 2, 795, 796, 5, 56, 29, 2, 796, 797, 7, 55, 2, 2, 797, 799, 3, 2, 2, 2, 798, 788, 3, 2, 2, 2, 798, 792, 3, 2, 2, 2, 799, 43, 3, 2, 2, 2, 800, 827, 5, 34, 18, 2, 801, 827, 5, 48, 25, 2, 802, 827, 5, 50, 26, 2, 803, 827, 5, 14, 8, 2, 804, 827, 5, 20, 11, 2, 805, 827, 5, 22, 12, 2, 806, 827, 5, 24, 13, 2, 807, 827, 5, 26, 14, 2, 808, 827, 5, 32, 17, 2, 809, 827, 5, 16, 9, 2, 810, 827, 5, 36, 19, 2, 811, 827, 5, 38, 20, 2, 812, 827, 5, 40, 21, 2, 813, 827, 5, 42, 22, 2, 814, 827, 7, 14, 2, 2, 815, 827, 7, 33, 2, 2, 816, 827, 7, 45, 2, 2, 817, 827, 7, 43, 2, 2, 818, 827, 7, 44, 2, 2, 819, 827, 7, 46, 2, 2, 820, 827, 7, 47, 2, 2, 821, 827, 7, 48, 2, 2, 822, 827, 7, 49, 2, 2, 823, 827, 7, 50, 2, 2, 824, 827, 7, 15, 2, 2, 825, 827, 7, 30, 2, 2, 826, 800, 3, 2, 2, 2, 826, 801, 3, 2, 2, 2, 826, 802, 3, 2, 2, 2, 826, 803, 3, 2, 2, 2, 826, 804, 3, 2, 2, 2, 826, 805, 3, 2, 2, 2, 826, 806, 3, 2, 2, 2, 826, 807, 3, 2, 2, 2, 826, 808, 3, 2, 2, 2, 826, 809, 3, 2, 2, 2, 826, 810, 3, 2, 2, 2, 826, 811, 3, 2, 2, 2, 826, 812, 3, 2, 2, 2, 826, 813, 3, 2, 2, 2, 826, 814, 3, 2, 2, 2, 826, 815, 3, 2, 2, 2, 826, 816, 3, 2, 2, 2, 826, 817, 3, 2, 2, 2, 826, 818, 3, 2, 2, 2, 826, 819, 3, 2, 2, 2, 826, 820, 3, 2, 2, 2, 826, 821, 3, 2, 2, 2, 826, 822, 3, 2, 2, 2, 826, 823, 3, 2, 2, 2, 826, 824, 3, 2, 2, 2, 826, 825, 3, 2, 2, 2, 827, 45, 3, 2, 2, 2, 828, 829, 5, 52, 27, 2, 829, 830, 7, 34, 2, 2, 830, 831, 5, 52, 27, 2, 831, 836, 3, 2, 2, 2, 832, 836, 5, 48, 25, 2, 833, 836, 5, 52, 27, 2, 834, 836, 5, 18, 10, 2, 835, 828, 3, 2, 2, 2, 835, 832, 3, 2, 2, 2, 835, 833, 3, 2, 2, 2, 835, 834, 3, 2, 2, 2, 836, 47, 3, 2, 2, 2, 837, 857, 7, 35, 2, 2, 838, 857, 7, 36, 2, 2, 839, 857, 7, 6, 2, 2, 840, 857, 7, 16, 2, 2, 841, 857, 7, 17, 2, 2, 842, 857, 7, 18, 2, 2, 843, 857, 7, 19, 2, 2, 844, 857, 7, 20, 2, 2, 845, 857, 7, 21, 2, 2, 846, 857, 7, 22, 2, 2, 847, 857, 7, 23, 2, 2, 848, 857, 7, 24, 2, 2, 849, 857, 7, 25, 2, 2, 850, 857, 7, 26, 2, 2, 851, 857, 7, 27, 2, 2, 852, 857, 7, 28, 2, 2, 853, 857, 7, 29, 2, 2, 854, 855, 7, 12, 2, 2, 855, 857, 11, 2, 2, 2, 856, 837, 3, 2, 2, 2, 856, 838, 3, 2, 2, 2, 856, 839, 3, 2, 2, 2, 856, 840, 3, 2, 2, 2, 856, 841, 3, 2, 2, 2, 856, 842, 3, 2, 2, 2, 856, 843, 3, 2, 2, 2, 856, 844, 3, 2, 2, 2, 856, 845, 3, 2, 2, 2, 856, 846, 3, 2, 2, 2, 856, 847, 3, 2, 2, 2, 856, 848, 3, 2, 2, 2, 856, 849, 3, 2, 2, 2, 856, 850, 3, 2, 2, 2, 856, 851, 3, 2, 2, 2, 856, 852, 3, 2, 2, 2, 856, 853, 3, 2, 2, 2, 856, 854, 3, 2, 2, 2, 857, 49, 3, 2, 2, 2, 858, 861, 5, 54, 28, 2, 859, 861, 7, 32, 2, 2, 860, 858, 3, 2, 2, 2, 860, 859, 3, 2, 2, 2, 861, 51, 3, 2, 2, 2, 862, 875, 5, 54, 28, 2, 863, 875, 7, 14, 2, 2, 864, 875, 7, 31, 2, 2, 865, 875, 7, 33, 2, 2, 866, 875, 7, 37, 2, 2, 867, 875, 7, 38, 2, 2, 868, 875, 7, 39, 2, 2, 869, 875, 7, 43, 2, 2, 870, 875, 7, 46, 2, 2, 871, 875, 7, 53, 2, 2, 872, 875, 7, 54, 2, 2, 873, 875, 7, 55, 2, 2, 874, 862, 3, 2, 2, 2, 874, 863, 3, 2, 2, 2, 874, 864, 3, 2, 2, 2, 874, 865, 3, 2, 2, 2, 874, 866, 3, 2, 2, 2, 874, 867, 3, 2, 2, 2, 874, 868, 3, 2, 2, 2, 874, 869, 3, 2, 2, 2, 874, 870, 3, 2, 2, 2, 874, 871, 3, 2, 2, 2, 874, 872, 3, 2, 2, 2, 874, 873, 3, 2, 2, 2, 875, 53, 3, 2, 2, 2, 876, 903, 5, 58, 30, 2, 877, 903, 5, 74, 38, 2, 878, 903, 5, 64, 33, 2, 879, 903, 7, 5, 2, 2, 880, 903, 7, 7, 2, 2, 881, 903, 7, 8, 2, 2, 882, 903, 7, 9, 2, 2, 883, 903, 7, 10, 2, 2, 884, 903, 7, 11, 2, 2, 885, 903, 7, 13, 2, 2, 886, 903, 7, 3, 2, 2, 887, 903, 7, 4, 2, 2, 888, 903, 7, 40, 2, 2, 889, 903, 7, 41, 2, 2, 890, 903, 7, 42, 2, 2, 891, 903, 7, 34, 2, 2, 892, 903, 7, 56, 2, 2, 893, 903, 7, 57, 2, 2, 894, 903, 7, 58, 2, 2, 895, 903, 7, 59, 2, 2, 896, 903, 7, 60, 2, 2, 897, 903, 7, 61, 2, 2, 898, 903, 7, 62, 2, 2, 899, 903, 7, 63, 2, 2, 900, 903, 7, 64, 2, 2, 901, 903, 7, 127, 2, 2, 902, 876, 3, 2, 2, 2, 902, 877, 3, 2, 2, 2, 902, 878, 3, 2, 2, 2, 902, 879, 3, 2, 2, 2, 902, 880, 3, 2, 2, 2, 902, 881, 3, 2, 2, 2, 902, 882, 3, 2, 2, 2, 902, 883, 3, 2, 2, 2, 902, 884, 3, 2, 2, 2, 902, 885, 3, 2, 2, 2, 902, 886, 3, 2, 2, 2, 902, 887, 3, 2, 2, 2, 902, 888, 3, 2, 2, 2, 902, 889, 3, 2, 2, 2, 902, 890, 3, 2, 2, 2, 902, 891, 3, 2, 2, 2, 902, 892, 3, 2, 2, 2, 902, 893, 3, 2, 2, 2, 902, 894, 3, 2, 2, 2, 902, 895, 3, 2, 2, 2, 902, 896, 3, 2, 2, 2, 902, 897, 3, 2, 2, 2, 902, 898, 3, 2, 2, 2, 902, 899, 3, 2, 2, 2, 902, 900, 3, 2, 2, 2, 902, 901, 3, 2, 2, 2, 903, 55, 3, 2, 2, 2, 904, 905, 5, 62, 32, 2, 905, 57, 3, 2, 2, 2, 906, 907, 7, 12, 2, 2, 907, 908, 9, 3, 2, 2, 908, 909, 5, 60, 31, 2, 909, 910, 5, 60, 31, 2, 910, 916, 3, 2, 2, 2, 911, 912, 7, 12, 2, 2, 912, 913, 5, 60, 31, 2, 913, 914, 5, 60, 31, 2, 914, 916, 3, 2, 2, 2, 915, 906, 3, 2, 2, 2, 915, 911, 3, 2, 2, 2, 916, 59, 3, 2, 2, 2, 917, 918, 9, 4, 2, 2, 918, 61, 3, 2, 2, 2, 919, 921, 5, 64, 33, 2, 920, 919, 3, 2, 2, 2, 921, 922, 3, 2, 2, 2, 922, 920, 3, 2, 2, 2, 922, 923, 3, 2, 2, 2, 923, 63, 3, 2, 2, 2, 924, 925, 9, 5, 2, 2, 925, 65, 3, 2, 2, 2, 926, 927, 5, 68, 35, 2, 927, 67, 3, 2, 2, 2, 928, 931, 5, 74, 38, 2, 929, 931, 7, 59, 2, 2, 930, 928, 3, 2, 2, 2, 930, 929, 3, 2, 2, 2, 931, 937, 3, 2, 2, 2, 932, 936, 5, 74, 38, 2, 933, 936, 7, 59, 2, 2, 934, 936, 5, 64, 33, 2, 935, 932, 3, 2, 2, 2, 935, 933, 3, 2, 2, 2, 935, 934, 3, 2, 2, 2, 936, 939, 3, 2, 2, 2, 937, 935, 3, 2, 2, 2, 937, 938, 3, 2, 2, 2, 938, 69, 3, 2, 2, 2, 939, 937, 3, 2, 2, 2, 940, 942, 5, 72, 37, 2, 941, 940, 3, 2, 2, 2, 942, 943, 3, 2, 2, 2, 943, 941, 3, 2, 2, 2, 943, 944, 3, 2, 2, 2, 944, 71, 3, 2, 2, 2, 945, 946, 10, 6, 2, 2, 946, 73, 3, 2, 2, 2, 947, 948, 9, 7, 2, 2, 948, 75, 3, 2, 2, 2, 51, 84, 90, 95, 121, 126, 135, 145, 154, 164, 173, 181, 185, 228, 233, 264, 291, 353, 358, 388, 468, 478, 491, 504, 518, 532, 545, 557, 571, 588, 605, 617, 621, 638, 647, 723, 786, 798, 826, 835, 856, 860, 874, 902, 915, 922, 930, 935, 937, 943] \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREBaseListener.java b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREBaseListener.java new file mode 100644 index 0000000..cf6c36f --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREBaseListener.java @@ -0,0 +1,482 @@ +package ru.touchin.roboswag.textprocessing.pcre.parser; + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link PCREListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class PCREBaseListener implements PCREListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParse(PCREParser.ParseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParse(PCREParser.ParseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlternation(PCREParser.AlternationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlternation(PCREParser.AlternationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpr(PCREParser.ExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpr(PCREParser.ExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElement(PCREParser.ElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElement(PCREParser.ElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuantifier(PCREParser.QuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuantifier(PCREParser.QuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuantifier_type(PCREParser.Quantifier_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuantifier_type(PCREParser.Quantifier_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCharacter_class(PCREParser.Character_classContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCharacter_class(PCREParser.Character_classContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBackreference(PCREParser.BackreferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBackreference(PCREParser.BackreferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBackreference_or_octal(PCREParser.Backreference_or_octalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBackreference_or_octal(PCREParser.Backreference_or_octalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCapture(PCREParser.CaptureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCapture(PCREParser.CaptureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNon_capture(PCREParser.Non_captureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNon_capture(PCREParser.Non_captureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComment(PCREParser.CommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComment(PCREParser.CommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOption(PCREParser.OptionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOption(PCREParser.OptionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOption_flags(PCREParser.Option_flagsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOption_flags(PCREParser.Option_flagsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOption_flag(PCREParser.Option_flagContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOption_flag(PCREParser.Option_flagContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLook_around(PCREParser.Look_aroundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLook_around(PCREParser.Look_aroundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubroutine_reference(PCREParser.Subroutine_referenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubroutine_reference(PCREParser.Subroutine_referenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditional(PCREParser.ConditionalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditional(PCREParser.ConditionalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBacktrack_control(PCREParser.Backtrack_controlContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBacktrack_control(PCREParser.Backtrack_controlContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNewline_convention(PCREParser.Newline_conventionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNewline_convention(PCREParser.Newline_conventionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCallout(PCREParser.CalloutContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCallout(PCREParser.CalloutContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAtom(PCREParser.AtomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAtom(PCREParser.AtomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCc_atom(PCREParser.Cc_atomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCc_atom(PCREParser.Cc_atomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShared_atom(PCREParser.Shared_atomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShared_atom(PCREParser.Shared_atomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteral(PCREParser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteral(PCREParser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCc_literal(PCREParser.Cc_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCc_literal(PCREParser.Cc_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShared_literal(PCREParser.Shared_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShared_literal(PCREParser.Shared_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumber(PCREParser.NumberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumber(PCREParser.NumberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOctal_char(PCREParser.Octal_charContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOctal_char(PCREParser.Octal_charContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOctal_digit(PCREParser.Octal_digitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOctal_digit(PCREParser.Octal_digitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDigits(PCREParser.DigitsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDigits(PCREParser.DigitsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDigit(PCREParser.DigitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDigit(PCREParser.DigitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterName(PCREParser.NameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitName(PCREParser.NameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlpha_nums(PCREParser.Alpha_numsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlpha_nums(PCREParser.Alpha_numsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNon_close_parens(PCREParser.Non_close_parensContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNon_close_parens(PCREParser.Non_close_parensContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNon_close_paren(PCREParser.Non_close_parenContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNon_close_paren(PCREParser.Non_close_parenContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLetter(PCREParser.LetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLetter(PCREParser.LetterContext ctx) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREBaseVisitor.java b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREBaseVisitor.java new file mode 100644 index 0000000..5479df1 --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREBaseVisitor.java @@ -0,0 +1,272 @@ +package ru.touchin.roboswag.textprocessing.pcre.parser; +import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; + +/** + * This class provides an empty implementation of {@link PCREVisitor}, + * which can be extended to create a visitor which only needs to handle a subset + * of the available methods. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public class PCREBaseVisitor extends AbstractParseTreeVisitor implements PCREVisitor { + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParse(PCREParser.ParseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAlternation(PCREParser.AlternationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpr(PCREParser.ExprContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElement(PCREParser.ElementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQuantifier(PCREParser.QuantifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQuantifier_type(PCREParser.Quantifier_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCharacter_class(PCREParser.Character_classContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBackreference(PCREParser.BackreferenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBackreference_or_octal(PCREParser.Backreference_or_octalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCapture(PCREParser.CaptureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNon_capture(PCREParser.Non_captureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitComment(PCREParser.CommentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOption(PCREParser.OptionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOption_flags(PCREParser.Option_flagsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOption_flag(PCREParser.Option_flagContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLook_around(PCREParser.Look_aroundContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubroutine_reference(PCREParser.Subroutine_referenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConditional(PCREParser.ConditionalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBacktrack_control(PCREParser.Backtrack_controlContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNewline_convention(PCREParser.Newline_conventionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCallout(PCREParser.CalloutContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAtom(PCREParser.AtomContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCc_atom(PCREParser.Cc_atomContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShared_atom(PCREParser.Shared_atomContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLiteral(PCREParser.LiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCc_literal(PCREParser.Cc_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitShared_literal(PCREParser.Shared_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNumber(PCREParser.NumberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOctal_char(PCREParser.Octal_charContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOctal_digit(PCREParser.Octal_digitContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDigits(PCREParser.DigitsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDigit(PCREParser.DigitContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitName(PCREParser.NameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAlpha_nums(PCREParser.Alpha_numsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNon_close_parens(PCREParser.Non_close_parensContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNon_close_paren(PCREParser.Non_close_parenContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLetter(PCREParser.LetterContext ctx) { return visitChildren(ctx); } +} \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRELexer.interp b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRELexer.interp new file mode 100644 index 0000000..053e7ad --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRELexer.interp @@ -0,0 +1,398 @@ +token literal names: +null +null +null +'\\a' +null +'\\e' +'\\f' +'\\n' +'\\r' +'\\t' +'\\' +null +'.' +'\\C' +'\\d' +'\\D' +'\\h' +'\\H' +'\\N' +null +null +'\\R' +'\\s' +'\\S' +'\\v' +'\\V' +'\\w' +'\\W' +'\\X' +'[' +']' +'^' +'-' +null +null +'?' +'+' +'*' +'{' +'}' +',' +'\\b' +'\\B' +'\\A' +'$' +'\\Z' +'\\z' +'\\G' +'\\K' +'\\g' +'\\k' +'|' +'(' +')' +'<' +'>' +'\'' +'_' +':' +'#' +'=' +'!' +'&' +'a' +'b' +'c' +'d' +'e' +'f' +'g' +'h' +'i' +'j' +'k' +'l' +'m' +'n' +'o' +'p' +'q' +'r' +'s' +'t' +'u' +'v' +'w' +'x' +'y' +'z' +'A' +'B' +'C' +'D' +'E' +'F' +'G' +'H' +'I' +'J' +'K' +'L' +'M' +'N' +'O' +'P' +'Q' +'R' +'S' +'T' +'U' +'V' +'W' +'X' +'Y' +'Z' +'1' +'2' +'3' +'4' +'5' +'6' +'7' +'8' +'9' +'0' +null + +token symbolic names: +null +Quoted +BlockQuoted +BellChar +ControlChar +EscapeChar +FormFeed +NewLine +CarriageReturn +Tab +Backslash +HexChar +Dot +OneDataUnit +DecimalDigit +NotDecimalDigit +HorizontalWhiteSpace +NotHorizontalWhiteSpace +NotNewLine +CharWithProperty +CharWithoutProperty +NewLineSequence +WhiteSpace +NotWhiteSpace +VerticalWhiteSpace +NotVerticalWhiteSpace +WordChar +NotWordChar +ExtendedUnicodeChar +CharacterClassStart +CharacterClassEnd +Caret +Hyphen +POSIXNamedSet +POSIXNegatedNamedSet +QuestionMark +Plus +Star +OpenBrace +CloseBrace +Comma +WordBoundary +NonWordBoundary +StartOfSubject +EndOfSubjectOrLine +EndOfSubjectOrLineEndOfSubject +EndOfSubject +PreviousMatchInSubject +ResetStartMatch +SubroutineOrNamedReferenceStartG +NamedReferenceStartK +Pipe +OpenParen +CloseParen +LessThan +GreaterThan +SingleQuote +Underscore +Colon +Hash +Equals +Exclamation +Ampersand +ALC +BLC +CLC +DLC +ELC +FLC +GLC +HLC +ILC +JLC +KLC +LLC +MLC +NLC +OLC +PLC +QLC +RLC +SLC +TLC +ULC +VLC +WLC +XLC +YLC +ZLC +AUC +BUC +CUC +DUC +EUC +FUC +GUC +HUC +IUC +JUC +KUC +LUC +MUC +NUC +OUC +PUC +QUC +RUC +SUC +TUC +UUC +VUC +WUC +XUC +YUC +ZUC +D1 +D2 +D3 +D4 +D5 +D6 +D7 +D8 +D9 +D0 +OtherChar + +rule names: +Quoted +BlockQuoted +BellChar +ControlChar +EscapeChar +FormFeed +NewLine +CarriageReturn +Tab +Backslash +HexChar +Dot +OneDataUnit +DecimalDigit +NotDecimalDigit +HorizontalWhiteSpace +NotHorizontalWhiteSpace +NotNewLine +CharWithProperty +CharWithoutProperty +NewLineSequence +WhiteSpace +NotWhiteSpace +VerticalWhiteSpace +NotVerticalWhiteSpace +WordChar +NotWordChar +ExtendedUnicodeChar +CharacterClassStart +CharacterClassEnd +Caret +Hyphen +POSIXNamedSet +POSIXNegatedNamedSet +QuestionMark +Plus +Star +OpenBrace +CloseBrace +Comma +WordBoundary +NonWordBoundary +StartOfSubject +EndOfSubjectOrLine +EndOfSubjectOrLineEndOfSubject +EndOfSubject +PreviousMatchInSubject +ResetStartMatch +SubroutineOrNamedReferenceStartG +NamedReferenceStartK +Pipe +OpenParen +CloseParen +LessThan +GreaterThan +SingleQuote +Underscore +Colon +Hash +Equals +Exclamation +Ampersand +ALC +BLC +CLC +DLC +ELC +FLC +GLC +HLC +ILC +JLC +KLC +LLC +MLC +NLC +OLC +PLC +QLC +RLC +SLC +TLC +ULC +VLC +WLC +XLC +YLC +ZLC +AUC +BUC +CUC +DUC +EUC +FUC +GUC +HUC +IUC +JUC +KUC +LUC +MUC +NUC +OUC +PUC +QUC +RUC +SUC +TUC +UUC +VUC +WUC +XUC +YUC +ZUC +D1 +D2 +D3 +D4 +D5 +D6 +D7 +D8 +D9 +D0 +OtherChar +UnderscoreAlphaNumerics +AlphaNumerics +AlphaNumeric +NonAlphaNumeric +HexDigit +ASCII + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 127, 619, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 273, 10, 3, 12, 3, 14, 3, 276, 11, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 288, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 6, 12, 317, 10, 12, 13, 12, 14, 12, 318, 3, 12, 3, 12, 5, 12, 323, 10, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 82, 3, 82, 3, 83, 3, 83, 3, 84, 3, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 89, 3, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 102, 3, 102, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 3, 110, 3, 110, 3, 111, 3, 111, 3, 112, 3, 112, 3, 113, 3, 113, 3, 114, 3, 114, 3, 115, 3, 115, 3, 116, 3, 116, 3, 117, 3, 117, 3, 118, 3, 118, 3, 119, 3, 119, 3, 120, 3, 120, 3, 121, 3, 121, 3, 122, 3, 122, 3, 123, 3, 123, 3, 124, 3, 124, 3, 125, 3, 125, 3, 126, 3, 126, 3, 127, 3, 127, 6, 127, 603, 10, 127, 13, 127, 14, 127, 604, 3, 128, 6, 128, 608, 10, 128, 13, 128, 14, 128, 609, 3, 129, 3, 129, 3, 130, 3, 130, 3, 131, 3, 131, 3, 132, 3, 132, 3, 274, 2, 133, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 117, 233, 118, 235, 119, 237, 120, 239, 121, 241, 122, 243, 123, 245, 124, 247, 125, 249, 126, 251, 127, 253, 2, 255, 2, 257, 2, 259, 2, 261, 2, 263, 2, 3, 2, 5, 5, 2, 50, 59, 67, 92, 99, 124, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 2, 129, 2, 619, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 3, 265, 3, 2, 2, 2, 5, 268, 3, 2, 2, 2, 7, 280, 3, 2, 2, 2, 9, 283, 3, 2, 2, 2, 11, 289, 3, 2, 2, 2, 13, 292, 3, 2, 2, 2, 15, 295, 3, 2, 2, 2, 17, 298, 3, 2, 2, 2, 19, 301, 3, 2, 2, 2, 21, 304, 3, 2, 2, 2, 23, 306, 3, 2, 2, 2, 25, 324, 3, 2, 2, 2, 27, 326, 3, 2, 2, 2, 29, 329, 3, 2, 2, 2, 31, 332, 3, 2, 2, 2, 33, 335, 3, 2, 2, 2, 35, 338, 3, 2, 2, 2, 37, 341, 3, 2, 2, 2, 39, 344, 3, 2, 2, 2, 41, 351, 3, 2, 2, 2, 43, 358, 3, 2, 2, 2, 45, 361, 3, 2, 2, 2, 47, 364, 3, 2, 2, 2, 49, 367, 3, 2, 2, 2, 51, 370, 3, 2, 2, 2, 53, 373, 3, 2, 2, 2, 55, 376, 3, 2, 2, 2, 57, 379, 3, 2, 2, 2, 59, 382, 3, 2, 2, 2, 61, 384, 3, 2, 2, 2, 63, 386, 3, 2, 2, 2, 65, 388, 3, 2, 2, 2, 67, 390, 3, 2, 2, 2, 69, 399, 3, 2, 2, 2, 71, 409, 3, 2, 2, 2, 73, 411, 3, 2, 2, 2, 75, 413, 3, 2, 2, 2, 77, 415, 3, 2, 2, 2, 79, 417, 3, 2, 2, 2, 81, 419, 3, 2, 2, 2, 83, 421, 3, 2, 2, 2, 85, 424, 3, 2, 2, 2, 87, 427, 3, 2, 2, 2, 89, 430, 3, 2, 2, 2, 91, 432, 3, 2, 2, 2, 93, 435, 3, 2, 2, 2, 95, 438, 3, 2, 2, 2, 97, 441, 3, 2, 2, 2, 99, 444, 3, 2, 2, 2, 101, 447, 3, 2, 2, 2, 103, 450, 3, 2, 2, 2, 105, 452, 3, 2, 2, 2, 107, 454, 3, 2, 2, 2, 109, 456, 3, 2, 2, 2, 111, 458, 3, 2, 2, 2, 113, 460, 3, 2, 2, 2, 115, 462, 3, 2, 2, 2, 117, 464, 3, 2, 2, 2, 119, 466, 3, 2, 2, 2, 121, 468, 3, 2, 2, 2, 123, 470, 3, 2, 2, 2, 125, 472, 3, 2, 2, 2, 127, 474, 3, 2, 2, 2, 129, 476, 3, 2, 2, 2, 131, 478, 3, 2, 2, 2, 133, 480, 3, 2, 2, 2, 135, 482, 3, 2, 2, 2, 137, 484, 3, 2, 2, 2, 139, 486, 3, 2, 2, 2, 141, 488, 3, 2, 2, 2, 143, 490, 3, 2, 2, 2, 145, 492, 3, 2, 2, 2, 147, 494, 3, 2, 2, 2, 149, 496, 3, 2, 2, 2, 151, 498, 3, 2, 2, 2, 153, 500, 3, 2, 2, 2, 155, 502, 3, 2, 2, 2, 157, 504, 3, 2, 2, 2, 159, 506, 3, 2, 2, 2, 161, 508, 3, 2, 2, 2, 163, 510, 3, 2, 2, 2, 165, 512, 3, 2, 2, 2, 167, 514, 3, 2, 2, 2, 169, 516, 3, 2, 2, 2, 171, 518, 3, 2, 2, 2, 173, 520, 3, 2, 2, 2, 175, 522, 3, 2, 2, 2, 177, 524, 3, 2, 2, 2, 179, 526, 3, 2, 2, 2, 181, 528, 3, 2, 2, 2, 183, 530, 3, 2, 2, 2, 185, 532, 3, 2, 2, 2, 187, 534, 3, 2, 2, 2, 189, 536, 3, 2, 2, 2, 191, 538, 3, 2, 2, 2, 193, 540, 3, 2, 2, 2, 195, 542, 3, 2, 2, 2, 197, 544, 3, 2, 2, 2, 199, 546, 3, 2, 2, 2, 201, 548, 3, 2, 2, 2, 203, 550, 3, 2, 2, 2, 205, 552, 3, 2, 2, 2, 207, 554, 3, 2, 2, 2, 209, 556, 3, 2, 2, 2, 211, 558, 3, 2, 2, 2, 213, 560, 3, 2, 2, 2, 215, 562, 3, 2, 2, 2, 217, 564, 3, 2, 2, 2, 219, 566, 3, 2, 2, 2, 221, 568, 3, 2, 2, 2, 223, 570, 3, 2, 2, 2, 225, 572, 3, 2, 2, 2, 227, 574, 3, 2, 2, 2, 229, 576, 3, 2, 2, 2, 231, 578, 3, 2, 2, 2, 233, 580, 3, 2, 2, 2, 235, 582, 3, 2, 2, 2, 237, 584, 3, 2, 2, 2, 239, 586, 3, 2, 2, 2, 241, 588, 3, 2, 2, 2, 243, 590, 3, 2, 2, 2, 245, 592, 3, 2, 2, 2, 247, 594, 3, 2, 2, 2, 249, 596, 3, 2, 2, 2, 251, 598, 3, 2, 2, 2, 253, 602, 3, 2, 2, 2, 255, 607, 3, 2, 2, 2, 257, 611, 3, 2, 2, 2, 259, 613, 3, 2, 2, 2, 261, 615, 3, 2, 2, 2, 263, 617, 3, 2, 2, 2, 265, 266, 7, 94, 2, 2, 266, 267, 5, 259, 130, 2, 267, 4, 3, 2, 2, 2, 268, 269, 7, 94, 2, 2, 269, 270, 7, 83, 2, 2, 270, 274, 3, 2, 2, 2, 271, 273, 11, 2, 2, 2, 272, 271, 3, 2, 2, 2, 273, 276, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 274, 272, 3, 2, 2, 2, 275, 277, 3, 2, 2, 2, 276, 274, 3, 2, 2, 2, 277, 278, 7, 94, 2, 2, 278, 279, 7, 71, 2, 2, 279, 6, 3, 2, 2, 2, 280, 281, 7, 94, 2, 2, 281, 282, 7, 99, 2, 2, 282, 8, 3, 2, 2, 2, 283, 284, 7, 94, 2, 2, 284, 285, 7, 101, 2, 2, 285, 287, 3, 2, 2, 2, 286, 288, 5, 263, 132, 2, 287, 286, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 10, 3, 2, 2, 2, 289, 290, 7, 94, 2, 2, 290, 291, 7, 103, 2, 2, 291, 12, 3, 2, 2, 2, 292, 293, 7, 94, 2, 2, 293, 294, 7, 104, 2, 2, 294, 14, 3, 2, 2, 2, 295, 296, 7, 94, 2, 2, 296, 297, 7, 112, 2, 2, 297, 16, 3, 2, 2, 2, 298, 299, 7, 94, 2, 2, 299, 300, 7, 116, 2, 2, 300, 18, 3, 2, 2, 2, 301, 302, 7, 94, 2, 2, 302, 303, 7, 118, 2, 2, 303, 20, 3, 2, 2, 2, 304, 305, 7, 94, 2, 2, 305, 22, 3, 2, 2, 2, 306, 307, 7, 94, 2, 2, 307, 308, 7, 122, 2, 2, 308, 322, 3, 2, 2, 2, 309, 310, 5, 261, 131, 2, 310, 311, 5, 261, 131, 2, 311, 323, 3, 2, 2, 2, 312, 313, 7, 125, 2, 2, 313, 314, 5, 261, 131, 2, 314, 316, 5, 261, 131, 2, 315, 317, 5, 261, 131, 2, 316, 315, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 321, 7, 127, 2, 2, 321, 323, 3, 2, 2, 2, 322, 309, 3, 2, 2, 2, 322, 312, 3, 2, 2, 2, 323, 24, 3, 2, 2, 2, 324, 325, 7, 48, 2, 2, 325, 26, 3, 2, 2, 2, 326, 327, 7, 94, 2, 2, 327, 328, 7, 69, 2, 2, 328, 28, 3, 2, 2, 2, 329, 330, 7, 94, 2, 2, 330, 331, 7, 102, 2, 2, 331, 30, 3, 2, 2, 2, 332, 333, 7, 94, 2, 2, 333, 334, 7, 70, 2, 2, 334, 32, 3, 2, 2, 2, 335, 336, 7, 94, 2, 2, 336, 337, 7, 106, 2, 2, 337, 34, 3, 2, 2, 2, 338, 339, 7, 94, 2, 2, 339, 340, 7, 74, 2, 2, 340, 36, 3, 2, 2, 2, 341, 342, 7, 94, 2, 2, 342, 343, 7, 80, 2, 2, 343, 38, 3, 2, 2, 2, 344, 345, 7, 94, 2, 2, 345, 346, 7, 114, 2, 2, 346, 347, 7, 125, 2, 2, 347, 348, 3, 2, 2, 2, 348, 349, 5, 253, 127, 2, 349, 350, 7, 127, 2, 2, 350, 40, 3, 2, 2, 2, 351, 352, 7, 94, 2, 2, 352, 353, 7, 82, 2, 2, 353, 354, 7, 125, 2, 2, 354, 355, 3, 2, 2, 2, 355, 356, 5, 253, 127, 2, 356, 357, 7, 127, 2, 2, 357, 42, 3, 2, 2, 2, 358, 359, 7, 94, 2, 2, 359, 360, 7, 84, 2, 2, 360, 44, 3, 2, 2, 2, 361, 362, 7, 94, 2, 2, 362, 363, 7, 117, 2, 2, 363, 46, 3, 2, 2, 2, 364, 365, 7, 94, 2, 2, 365, 366, 7, 85, 2, 2, 366, 48, 3, 2, 2, 2, 367, 368, 7, 94, 2, 2, 368, 369, 7, 120, 2, 2, 369, 50, 3, 2, 2, 2, 370, 371, 7, 94, 2, 2, 371, 372, 7, 88, 2, 2, 372, 52, 3, 2, 2, 2, 373, 374, 7, 94, 2, 2, 374, 375, 7, 121, 2, 2, 375, 54, 3, 2, 2, 2, 376, 377, 7, 94, 2, 2, 377, 378, 7, 89, 2, 2, 378, 56, 3, 2, 2, 2, 379, 380, 7, 94, 2, 2, 380, 381, 7, 90, 2, 2, 381, 58, 3, 2, 2, 2, 382, 383, 7, 93, 2, 2, 383, 60, 3, 2, 2, 2, 384, 385, 7, 95, 2, 2, 385, 62, 3, 2, 2, 2, 386, 387, 7, 96, 2, 2, 387, 64, 3, 2, 2, 2, 388, 389, 7, 47, 2, 2, 389, 66, 3, 2, 2, 2, 390, 391, 7, 93, 2, 2, 391, 392, 7, 93, 2, 2, 392, 393, 7, 60, 2, 2, 393, 394, 3, 2, 2, 2, 394, 395, 5, 255, 128, 2, 395, 396, 7, 60, 2, 2, 396, 397, 7, 95, 2, 2, 397, 398, 7, 95, 2, 2, 398, 68, 3, 2, 2, 2, 399, 400, 7, 93, 2, 2, 400, 401, 7, 93, 2, 2, 401, 402, 7, 60, 2, 2, 402, 403, 7, 96, 2, 2, 403, 404, 3, 2, 2, 2, 404, 405, 5, 255, 128, 2, 405, 406, 7, 60, 2, 2, 406, 407, 7, 95, 2, 2, 407, 408, 7, 95, 2, 2, 408, 70, 3, 2, 2, 2, 409, 410, 7, 65, 2, 2, 410, 72, 3, 2, 2, 2, 411, 412, 7, 45, 2, 2, 412, 74, 3, 2, 2, 2, 413, 414, 7, 44, 2, 2, 414, 76, 3, 2, 2, 2, 415, 416, 7, 125, 2, 2, 416, 78, 3, 2, 2, 2, 417, 418, 7, 127, 2, 2, 418, 80, 3, 2, 2, 2, 419, 420, 7, 46, 2, 2, 420, 82, 3, 2, 2, 2, 421, 422, 7, 94, 2, 2, 422, 423, 7, 100, 2, 2, 423, 84, 3, 2, 2, 2, 424, 425, 7, 94, 2, 2, 425, 426, 7, 68, 2, 2, 426, 86, 3, 2, 2, 2, 427, 428, 7, 94, 2, 2, 428, 429, 7, 67, 2, 2, 429, 88, 3, 2, 2, 2, 430, 431, 7, 38, 2, 2, 431, 90, 3, 2, 2, 2, 432, 433, 7, 94, 2, 2, 433, 434, 7, 92, 2, 2, 434, 92, 3, 2, 2, 2, 435, 436, 7, 94, 2, 2, 436, 437, 7, 124, 2, 2, 437, 94, 3, 2, 2, 2, 438, 439, 7, 94, 2, 2, 439, 440, 7, 73, 2, 2, 440, 96, 3, 2, 2, 2, 441, 442, 7, 94, 2, 2, 442, 443, 7, 77, 2, 2, 443, 98, 3, 2, 2, 2, 444, 445, 7, 94, 2, 2, 445, 446, 7, 105, 2, 2, 446, 100, 3, 2, 2, 2, 447, 448, 7, 94, 2, 2, 448, 449, 7, 109, 2, 2, 449, 102, 3, 2, 2, 2, 450, 451, 7, 126, 2, 2, 451, 104, 3, 2, 2, 2, 452, 453, 7, 42, 2, 2, 453, 106, 3, 2, 2, 2, 454, 455, 7, 43, 2, 2, 455, 108, 3, 2, 2, 2, 456, 457, 7, 62, 2, 2, 457, 110, 3, 2, 2, 2, 458, 459, 7, 64, 2, 2, 459, 112, 3, 2, 2, 2, 460, 461, 7, 41, 2, 2, 461, 114, 3, 2, 2, 2, 462, 463, 7, 97, 2, 2, 463, 116, 3, 2, 2, 2, 464, 465, 7, 60, 2, 2, 465, 118, 3, 2, 2, 2, 466, 467, 7, 37, 2, 2, 467, 120, 3, 2, 2, 2, 468, 469, 7, 63, 2, 2, 469, 122, 3, 2, 2, 2, 470, 471, 7, 35, 2, 2, 471, 124, 3, 2, 2, 2, 472, 473, 7, 40, 2, 2, 473, 126, 3, 2, 2, 2, 474, 475, 7, 99, 2, 2, 475, 128, 3, 2, 2, 2, 476, 477, 7, 100, 2, 2, 477, 130, 3, 2, 2, 2, 478, 479, 7, 101, 2, 2, 479, 132, 3, 2, 2, 2, 480, 481, 7, 102, 2, 2, 481, 134, 3, 2, 2, 2, 482, 483, 7, 103, 2, 2, 483, 136, 3, 2, 2, 2, 484, 485, 7, 104, 2, 2, 485, 138, 3, 2, 2, 2, 486, 487, 7, 105, 2, 2, 487, 140, 3, 2, 2, 2, 488, 489, 7, 106, 2, 2, 489, 142, 3, 2, 2, 2, 490, 491, 7, 107, 2, 2, 491, 144, 3, 2, 2, 2, 492, 493, 7, 108, 2, 2, 493, 146, 3, 2, 2, 2, 494, 495, 7, 109, 2, 2, 495, 148, 3, 2, 2, 2, 496, 497, 7, 110, 2, 2, 497, 150, 3, 2, 2, 2, 498, 499, 7, 111, 2, 2, 499, 152, 3, 2, 2, 2, 500, 501, 7, 112, 2, 2, 501, 154, 3, 2, 2, 2, 502, 503, 7, 113, 2, 2, 503, 156, 3, 2, 2, 2, 504, 505, 7, 114, 2, 2, 505, 158, 3, 2, 2, 2, 506, 507, 7, 115, 2, 2, 507, 160, 3, 2, 2, 2, 508, 509, 7, 116, 2, 2, 509, 162, 3, 2, 2, 2, 510, 511, 7, 117, 2, 2, 511, 164, 3, 2, 2, 2, 512, 513, 7, 118, 2, 2, 513, 166, 3, 2, 2, 2, 514, 515, 7, 119, 2, 2, 515, 168, 3, 2, 2, 2, 516, 517, 7, 120, 2, 2, 517, 170, 3, 2, 2, 2, 518, 519, 7, 121, 2, 2, 519, 172, 3, 2, 2, 2, 520, 521, 7, 122, 2, 2, 521, 174, 3, 2, 2, 2, 522, 523, 7, 123, 2, 2, 523, 176, 3, 2, 2, 2, 524, 525, 7, 124, 2, 2, 525, 178, 3, 2, 2, 2, 526, 527, 7, 67, 2, 2, 527, 180, 3, 2, 2, 2, 528, 529, 7, 68, 2, 2, 529, 182, 3, 2, 2, 2, 530, 531, 7, 69, 2, 2, 531, 184, 3, 2, 2, 2, 532, 533, 7, 70, 2, 2, 533, 186, 3, 2, 2, 2, 534, 535, 7, 71, 2, 2, 535, 188, 3, 2, 2, 2, 536, 537, 7, 72, 2, 2, 537, 190, 3, 2, 2, 2, 538, 539, 7, 73, 2, 2, 539, 192, 3, 2, 2, 2, 540, 541, 7, 74, 2, 2, 541, 194, 3, 2, 2, 2, 542, 543, 7, 75, 2, 2, 543, 196, 3, 2, 2, 2, 544, 545, 7, 76, 2, 2, 545, 198, 3, 2, 2, 2, 546, 547, 7, 77, 2, 2, 547, 200, 3, 2, 2, 2, 548, 549, 7, 78, 2, 2, 549, 202, 3, 2, 2, 2, 550, 551, 7, 79, 2, 2, 551, 204, 3, 2, 2, 2, 552, 553, 7, 80, 2, 2, 553, 206, 3, 2, 2, 2, 554, 555, 7, 81, 2, 2, 555, 208, 3, 2, 2, 2, 556, 557, 7, 82, 2, 2, 557, 210, 3, 2, 2, 2, 558, 559, 7, 83, 2, 2, 559, 212, 3, 2, 2, 2, 560, 561, 7, 84, 2, 2, 561, 214, 3, 2, 2, 2, 562, 563, 7, 85, 2, 2, 563, 216, 3, 2, 2, 2, 564, 565, 7, 86, 2, 2, 565, 218, 3, 2, 2, 2, 566, 567, 7, 87, 2, 2, 567, 220, 3, 2, 2, 2, 568, 569, 7, 88, 2, 2, 569, 222, 3, 2, 2, 2, 570, 571, 7, 89, 2, 2, 571, 224, 3, 2, 2, 2, 572, 573, 7, 90, 2, 2, 573, 226, 3, 2, 2, 2, 574, 575, 7, 91, 2, 2, 575, 228, 3, 2, 2, 2, 576, 577, 7, 92, 2, 2, 577, 230, 3, 2, 2, 2, 578, 579, 7, 51, 2, 2, 579, 232, 3, 2, 2, 2, 580, 581, 7, 52, 2, 2, 581, 234, 3, 2, 2, 2, 582, 583, 7, 53, 2, 2, 583, 236, 3, 2, 2, 2, 584, 585, 7, 54, 2, 2, 585, 238, 3, 2, 2, 2, 586, 587, 7, 55, 2, 2, 587, 240, 3, 2, 2, 2, 588, 589, 7, 56, 2, 2, 589, 242, 3, 2, 2, 2, 590, 591, 7, 57, 2, 2, 591, 244, 3, 2, 2, 2, 592, 593, 7, 58, 2, 2, 593, 246, 3, 2, 2, 2, 594, 595, 7, 59, 2, 2, 595, 248, 3, 2, 2, 2, 596, 597, 7, 50, 2, 2, 597, 250, 3, 2, 2, 2, 598, 599, 11, 2, 2, 2, 599, 252, 3, 2, 2, 2, 600, 603, 7, 97, 2, 2, 601, 603, 5, 257, 129, 2, 602, 600, 3, 2, 2, 2, 602, 601, 3, 2, 2, 2, 603, 604, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 254, 3, 2, 2, 2, 606, 608, 5, 257, 129, 2, 607, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 609, 610, 3, 2, 2, 2, 610, 256, 3, 2, 2, 2, 611, 612, 9, 2, 2, 2, 612, 258, 3, 2, 2, 2, 613, 614, 10, 2, 2, 2, 614, 260, 3, 2, 2, 2, 615, 616, 9, 3, 2, 2, 616, 262, 3, 2, 2, 2, 617, 618, 9, 4, 2, 2, 618, 264, 3, 2, 2, 2, 10, 2, 274, 287, 318, 322, 602, 604, 609, 2] \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRELexer.java b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRELexer.java new file mode 100644 index 0000000..543ed87 --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCRELexer.java @@ -0,0 +1,386 @@ +package ru.touchin.roboswag.textprocessing.pcre.parser; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class PCRELexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + Quoted=1, BlockQuoted=2, BellChar=3, ControlChar=4, EscapeChar=5, FormFeed=6, + NewLine=7, CarriageReturn=8, Tab=9, Backslash=10, HexChar=11, Dot=12, + OneDataUnit=13, DecimalDigit=14, NotDecimalDigit=15, HorizontalWhiteSpace=16, + NotHorizontalWhiteSpace=17, NotNewLine=18, CharWithProperty=19, CharWithoutProperty=20, + NewLineSequence=21, WhiteSpace=22, NotWhiteSpace=23, VerticalWhiteSpace=24, + NotVerticalWhiteSpace=25, WordChar=26, NotWordChar=27, ExtendedUnicodeChar=28, + CharacterClassStart=29, CharacterClassEnd=30, Caret=31, Hyphen=32, POSIXNamedSet=33, + POSIXNegatedNamedSet=34, QuestionMark=35, Plus=36, Star=37, OpenBrace=38, + CloseBrace=39, Comma=40, WordBoundary=41, NonWordBoundary=42, StartOfSubject=43, + EndOfSubjectOrLine=44, EndOfSubjectOrLineEndOfSubject=45, EndOfSubject=46, + PreviousMatchInSubject=47, ResetStartMatch=48, SubroutineOrNamedReferenceStartG=49, + NamedReferenceStartK=50, Pipe=51, OpenParen=52, CloseParen=53, LessThan=54, + GreaterThan=55, SingleQuote=56, Underscore=57, Colon=58, Hash=59, Equals=60, + Exclamation=61, Ampersand=62, ALC=63, BLC=64, CLC=65, DLC=66, ELC=67, + FLC=68, GLC=69, HLC=70, ILC=71, JLC=72, KLC=73, LLC=74, MLC=75, NLC=76, + OLC=77, PLC=78, QLC=79, RLC=80, SLC=81, TLC=82, ULC=83, VLC=84, WLC=85, + XLC=86, YLC=87, ZLC=88, AUC=89, BUC=90, CUC=91, DUC=92, EUC=93, FUC=94, + GUC=95, HUC=96, IUC=97, JUC=98, KUC=99, LUC=100, MUC=101, NUC=102, OUC=103, + PUC=104, QUC=105, RUC=106, SUC=107, TUC=108, UUC=109, VUC=110, WUC=111, + XUC=112, YUC=113, ZUC=114, D1=115, D2=116, D3=117, D4=118, D5=119, D6=120, + D7=121, D8=122, D9=123, D0=124, OtherChar=125; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "Quoted", "BlockQuoted", "BellChar", "ControlChar", "EscapeChar", "FormFeed", + "NewLine", "CarriageReturn", "Tab", "Backslash", "HexChar", "Dot", "OneDataUnit", + "DecimalDigit", "NotDecimalDigit", "HorizontalWhiteSpace", "NotHorizontalWhiteSpace", + "NotNewLine", "CharWithProperty", "CharWithoutProperty", "NewLineSequence", + "WhiteSpace", "NotWhiteSpace", "VerticalWhiteSpace", "NotVerticalWhiteSpace", + "WordChar", "NotWordChar", "ExtendedUnicodeChar", "CharacterClassStart", + "CharacterClassEnd", "Caret", "Hyphen", "POSIXNamedSet", "POSIXNegatedNamedSet", + "QuestionMark", "Plus", "Star", "OpenBrace", "CloseBrace", "Comma", "WordBoundary", + "NonWordBoundary", "StartOfSubject", "EndOfSubjectOrLine", "EndOfSubjectOrLineEndOfSubject", + "EndOfSubject", "PreviousMatchInSubject", "ResetStartMatch", "SubroutineOrNamedReferenceStartG", + "NamedReferenceStartK", "Pipe", "OpenParen", "CloseParen", "LessThan", + "GreaterThan", "SingleQuote", "Underscore", "Colon", "Hash", "Equals", + "Exclamation", "Ampersand", "ALC", "BLC", "CLC", "DLC", "ELC", "FLC", + "GLC", "HLC", "ILC", "JLC", "KLC", "LLC", "MLC", "NLC", "OLC", "PLC", + "QLC", "RLC", "SLC", "TLC", "ULC", "VLC", "WLC", "XLC", "YLC", "ZLC", + "AUC", "BUC", "CUC", "DUC", "EUC", "FUC", "GUC", "HUC", "IUC", "JUC", + "KUC", "LUC", "MUC", "NUC", "OUC", "PUC", "QUC", "RUC", "SUC", "TUC", + "UUC", "VUC", "WUC", "XUC", "YUC", "ZUC", "D1", "D2", "D3", "D4", "D5", + "D6", "D7", "D8", "D9", "D0", "OtherChar", "UnderscoreAlphaNumerics", + "AlphaNumerics", "AlphaNumeric", "NonAlphaNumeric", "HexDigit", "ASCII" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, null, null, "'\\a'", null, "'\\e'", "'\\f'", "'\\n'", "'\\r'", + "'\\t'", "'\\'", null, "'.'", "'\\C'", "'\\d'", "'\\D'", "'\\h'", "'\\H'", + "'\\N'", null, null, "'\\R'", "'\\s'", "'\\S'", "'\\v'", "'\\V'", "'\\w'", + "'\\W'", "'\\X'", "'['", "']'", "'^'", "'-'", null, null, "'?'", "'+'", + "'*'", "'{'", "'}'", "','", "'\\b'", "'\\B'", "'\\A'", "'$'", "'\\Z'", + "'\\z'", "'\\G'", "'\\K'", "'\\g'", "'\\k'", "'|'", "'('", "')'", "'<'", + "'>'", "'''", "'_'", "':'", "'#'", "'='", "'!'", "'&'", "'a'", "'b'", + "'c'", "'d'", "'e'", "'f'", "'g'", "'h'", "'i'", "'j'", "'k'", "'l'", + "'m'", "'n'", "'o'", "'p'", "'q'", "'r'", "'s'", "'t'", "'u'", "'v'", + "'w'", "'x'", "'y'", "'z'", "'A'", "'B'", "'C'", "'D'", "'E'", "'F'", + "'G'", "'H'", "'I'", "'J'", "'K'", "'L'", "'M'", "'N'", "'O'", "'P'", + "'Q'", "'R'", "'S'", "'T'", "'U'", "'V'", "'W'", "'X'", "'Y'", "'Z'", + "'1'", "'2'", "'3'", "'4'", "'5'", "'6'", "'7'", "'8'", "'9'", "'0'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "Quoted", "BlockQuoted", "BellChar", "ControlChar", "EscapeChar", + "FormFeed", "NewLine", "CarriageReturn", "Tab", "Backslash", "HexChar", + "Dot", "OneDataUnit", "DecimalDigit", "NotDecimalDigit", "HorizontalWhiteSpace", + "NotHorizontalWhiteSpace", "NotNewLine", "CharWithProperty", "CharWithoutProperty", + "NewLineSequence", "WhiteSpace", "NotWhiteSpace", "VerticalWhiteSpace", + "NotVerticalWhiteSpace", "WordChar", "NotWordChar", "ExtendedUnicodeChar", + "CharacterClassStart", "CharacterClassEnd", "Caret", "Hyphen", "POSIXNamedSet", + "POSIXNegatedNamedSet", "QuestionMark", "Plus", "Star", "OpenBrace", + "CloseBrace", "Comma", "WordBoundary", "NonWordBoundary", "StartOfSubject", + "EndOfSubjectOrLine", "EndOfSubjectOrLineEndOfSubject", "EndOfSubject", + "PreviousMatchInSubject", "ResetStartMatch", "SubroutineOrNamedReferenceStartG", + "NamedReferenceStartK", "Pipe", "OpenParen", "CloseParen", "LessThan", + "GreaterThan", "SingleQuote", "Underscore", "Colon", "Hash", "Equals", + "Exclamation", "Ampersand", "ALC", "BLC", "CLC", "DLC", "ELC", "FLC", + "GLC", "HLC", "ILC", "JLC", "KLC", "LLC", "MLC", "NLC", "OLC", "PLC", + "QLC", "RLC", "SLC", "TLC", "ULC", "VLC", "WLC", "XLC", "YLC", "ZLC", + "AUC", "BUC", "CUC", "DUC", "EUC", "FUC", "GUC", "HUC", "IUC", "JUC", + "KUC", "LUC", "MUC", "NUC", "OUC", "PUC", "QUC", "RUC", "SUC", "TUC", + "UUC", "VUC", "WUC", "XUC", "YUC", "ZUC", "D1", "D2", "D3", "D4", "D5", + "D6", "D7", "D8", "D9", "D0", "OtherChar" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public PCRELexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "PCRE.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\177\u026b\b\1\4\2"+ + "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+ + "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ + "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ + "\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+ + " \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+ + "+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64"+ + "\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t"+ + "=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4"+ + "I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\t"+ + "T\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_"+ + "\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k"+ + "\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv"+ + "\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t"+ + "\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084"+ + "\3\2\3\2\3\2\3\3\3\3\3\3\3\3\7\3\u0111\n\3\f\3\16\3\u0114\13\3\3\3\3\3"+ + "\3\3\3\4\3\4\3\4\3\5\3\5\3\5\3\5\5\5\u0120\n\5\3\6\3\6\3\6\3\7\3\7\3\7"+ + "\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f"+ + "\3\f\3\f\3\f\3\f\6\f\u013d\n\f\r\f\16\f\u013e\3\f\3\f\5\f\u0143\n\f\3"+ + "\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\22"+ + "\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25"+ + "\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\30"+ + "\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35"+ + "\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\""+ + "\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3(\3(\3)"+ + "\3)\3*\3*\3*\3+\3+\3+\3,\3,\3,\3-\3-\3.\3.\3.\3/\3/\3/\3\60\3\60\3\60"+ + "\3\61\3\61\3\61\3\62\3\62\3\62\3\63\3\63\3\63\3\64\3\64\3\65\3\65\3\66"+ + "\3\66\3\67\3\67\38\38\39\39\3:\3:\3;\3;\3<\3<\3=\3=\3>\3>\3?\3?\3@\3@"+ + "\3A\3A\3B\3B\3C\3C\3D\3D\3E\3E\3F\3F\3G\3G\3H\3H\3I\3I\3J\3J\3K\3K\3L"+ + "\3L\3M\3M\3N\3N\3O\3O\3P\3P\3Q\3Q\3R\3R\3S\3S\3T\3T\3U\3U\3V\3V\3W\3W"+ + "\3X\3X\3Y\3Y\3Z\3Z\3[\3[\3\\\3\\\3]\3]\3^\3^\3_\3_\3`\3`\3a\3a\3b\3b\3"+ + "c\3c\3d\3d\3e\3e\3f\3f\3g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3"+ + "n\3o\3o\3p\3p\3q\3q\3r\3r\3s\3s\3t\3t\3u\3u\3v\3v\3w\3w\3x\3x\3y\3y\3"+ + "z\3z\3{\3{\3|\3|\3}\3}\3~\3~\3\177\3\177\6\177\u025b\n\177\r\177\16\177"+ + "\u025c\3\u0080\6\u0080\u0260\n\u0080\r\u0080\16\u0080\u0261\3\u0081\3"+ + "\u0081\3\u0082\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084\3\u0112\2\u0085"+ + "\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20"+ + "\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37"+ + "= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o"+ + "9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH"+ + "\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1"+ + "R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5"+ + "\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9"+ + "f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00dd"+ + "p\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00ebw\u00edx\u00efy\u00f1"+ + "z\u00f3{\u00f5|\u00f7}\u00f9~\u00fb\177\u00fd\2\u00ff\2\u0101\2\u0103"+ + "\2\u0105\2\u0107\2\3\2\5\5\2\62;C\\c|\5\2\62;CHch\3\2\2\u0081\2\u026b"+ + "\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2"+ + "\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2"+ + "\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2"+ + "\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2"+ + "\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3"+ + "\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2"+ + "\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2"+ + "U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3"+ + "\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2"+ + "\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2"+ + "{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085"+ + "\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2"+ + "\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097"+ + "\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2"+ + "\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9"+ + "\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2"+ + "\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb"+ + "\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2"+ + "\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd"+ + "\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2"+ + "\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df"+ + "\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2"+ + "\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1"+ + "\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2"+ + "\2\2\u00fb\3\2\2\2\3\u0109\3\2\2\2\5\u010c\3\2\2\2\7\u0118\3\2\2\2\t\u011b"+ + "\3\2\2\2\13\u0121\3\2\2\2\r\u0124\3\2\2\2\17\u0127\3\2\2\2\21\u012a\3"+ + "\2\2\2\23\u012d\3\2\2\2\25\u0130\3\2\2\2\27\u0132\3\2\2\2\31\u0144\3\2"+ + "\2\2\33\u0146\3\2\2\2\35\u0149\3\2\2\2\37\u014c\3\2\2\2!\u014f\3\2\2\2"+ + "#\u0152\3\2\2\2%\u0155\3\2\2\2\'\u0158\3\2\2\2)\u015f\3\2\2\2+\u0166\3"+ + "\2\2\2-\u0169\3\2\2\2/\u016c\3\2\2\2\61\u016f\3\2\2\2\63\u0172\3\2\2\2"+ + "\65\u0175\3\2\2\2\67\u0178\3\2\2\29\u017b\3\2\2\2;\u017e\3\2\2\2=\u0180"+ + "\3\2\2\2?\u0182\3\2\2\2A\u0184\3\2\2\2C\u0186\3\2\2\2E\u018f\3\2\2\2G"+ + "\u0199\3\2\2\2I\u019b\3\2\2\2K\u019d\3\2\2\2M\u019f\3\2\2\2O\u01a1\3\2"+ + "\2\2Q\u01a3\3\2\2\2S\u01a5\3\2\2\2U\u01a8\3\2\2\2W\u01ab\3\2\2\2Y\u01ae"+ + "\3\2\2\2[\u01b0\3\2\2\2]\u01b3\3\2\2\2_\u01b6\3\2\2\2a\u01b9\3\2\2\2c"+ + "\u01bc\3\2\2\2e\u01bf\3\2\2\2g\u01c2\3\2\2\2i\u01c4\3\2\2\2k\u01c6\3\2"+ + "\2\2m\u01c8\3\2\2\2o\u01ca\3\2\2\2q\u01cc\3\2\2\2s\u01ce\3\2\2\2u\u01d0"+ + "\3\2\2\2w\u01d2\3\2\2\2y\u01d4\3\2\2\2{\u01d6\3\2\2\2}\u01d8\3\2\2\2\177"+ + "\u01da\3\2\2\2\u0081\u01dc\3\2\2\2\u0083\u01de\3\2\2\2\u0085\u01e0\3\2"+ + "\2\2\u0087\u01e2\3\2\2\2\u0089\u01e4\3\2\2\2\u008b\u01e6\3\2\2\2\u008d"+ + "\u01e8\3\2\2\2\u008f\u01ea\3\2\2\2\u0091\u01ec\3\2\2\2\u0093\u01ee\3\2"+ + "\2\2\u0095\u01f0\3\2\2\2\u0097\u01f2\3\2\2\2\u0099\u01f4\3\2\2\2\u009b"+ + "\u01f6\3\2\2\2\u009d\u01f8\3\2\2\2\u009f\u01fa\3\2\2\2\u00a1\u01fc\3\2"+ + "\2\2\u00a3\u01fe\3\2\2\2\u00a5\u0200\3\2\2\2\u00a7\u0202\3\2\2\2\u00a9"+ + "\u0204\3\2\2\2\u00ab\u0206\3\2\2\2\u00ad\u0208\3\2\2\2\u00af\u020a\3\2"+ + "\2\2\u00b1\u020c\3\2\2\2\u00b3\u020e\3\2\2\2\u00b5\u0210\3\2\2\2\u00b7"+ + "\u0212\3\2\2\2\u00b9\u0214\3\2\2\2\u00bb\u0216\3\2\2\2\u00bd\u0218\3\2"+ + "\2\2\u00bf\u021a\3\2\2\2\u00c1\u021c\3\2\2\2\u00c3\u021e\3\2\2\2\u00c5"+ + "\u0220\3\2\2\2\u00c7\u0222\3\2\2\2\u00c9\u0224\3\2\2\2\u00cb\u0226\3\2"+ + "\2\2\u00cd\u0228\3\2\2\2\u00cf\u022a\3\2\2\2\u00d1\u022c\3\2\2\2\u00d3"+ + "\u022e\3\2\2\2\u00d5\u0230\3\2\2\2\u00d7\u0232\3\2\2\2\u00d9\u0234\3\2"+ + "\2\2\u00db\u0236\3\2\2\2\u00dd\u0238\3\2\2\2\u00df\u023a\3\2\2\2\u00e1"+ + "\u023c\3\2\2\2\u00e3\u023e\3\2\2\2\u00e5\u0240\3\2\2\2\u00e7\u0242\3\2"+ + "\2\2\u00e9\u0244\3\2\2\2\u00eb\u0246\3\2\2\2\u00ed\u0248\3\2\2\2\u00ef"+ + "\u024a\3\2\2\2\u00f1\u024c\3\2\2\2\u00f3\u024e\3\2\2\2\u00f5\u0250\3\2"+ + "\2\2\u00f7\u0252\3\2\2\2\u00f9\u0254\3\2\2\2\u00fb\u0256\3\2\2\2\u00fd"+ + "\u025a\3\2\2\2\u00ff\u025f\3\2\2\2\u0101\u0263\3\2\2\2\u0103\u0265\3\2"+ + "\2\2\u0105\u0267\3\2\2\2\u0107\u0269\3\2\2\2\u0109\u010a\7^\2\2\u010a"+ + "\u010b\5\u0103\u0082\2\u010b\4\3\2\2\2\u010c\u010d\7^\2\2\u010d\u010e"+ + "\7S\2\2\u010e\u0112\3\2\2\2\u010f\u0111\13\2\2\2\u0110\u010f\3\2\2\2\u0111"+ + "\u0114\3\2\2\2\u0112\u0113\3\2\2\2\u0112\u0110\3\2\2\2\u0113\u0115\3\2"+ + "\2\2\u0114\u0112\3\2\2\2\u0115\u0116\7^\2\2\u0116\u0117\7G\2\2\u0117\6"+ + "\3\2\2\2\u0118\u0119\7^\2\2\u0119\u011a\7c\2\2\u011a\b\3\2\2\2\u011b\u011c"+ + "\7^\2\2\u011c\u011d\7e\2\2\u011d\u011f\3\2\2\2\u011e\u0120\5\u0107\u0084"+ + "\2\u011f\u011e\3\2\2\2\u011f\u0120\3\2\2\2\u0120\n\3\2\2\2\u0121\u0122"+ + "\7^\2\2\u0122\u0123\7g\2\2\u0123\f\3\2\2\2\u0124\u0125\7^\2\2\u0125\u0126"+ + "\7h\2\2\u0126\16\3\2\2\2\u0127\u0128\7^\2\2\u0128\u0129\7p\2\2\u0129\20"+ + "\3\2\2\2\u012a\u012b\7^\2\2\u012b\u012c\7t\2\2\u012c\22\3\2\2\2\u012d"+ + "\u012e\7^\2\2\u012e\u012f\7v\2\2\u012f\24\3\2\2\2\u0130\u0131\7^\2\2\u0131"+ + "\26\3\2\2\2\u0132\u0133\7^\2\2\u0133\u0134\7z\2\2\u0134\u0142\3\2\2\2"+ + "\u0135\u0136\5\u0105\u0083\2\u0136\u0137\5\u0105\u0083\2\u0137\u0143\3"+ + "\2\2\2\u0138\u0139\7}\2\2\u0139\u013a\5\u0105\u0083\2\u013a\u013c\5\u0105"+ + "\u0083\2\u013b\u013d\5\u0105\u0083\2\u013c\u013b\3\2\2\2\u013d\u013e\3"+ + "\2\2\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140\3\2\2\2\u0140"+ + "\u0141\7\177\2\2\u0141\u0143\3\2\2\2\u0142\u0135\3\2\2\2\u0142\u0138\3"+ + "\2\2\2\u0143\30\3\2\2\2\u0144\u0145\7\60\2\2\u0145\32\3\2\2\2\u0146\u0147"+ + "\7^\2\2\u0147\u0148\7E\2\2\u0148\34\3\2\2\2\u0149\u014a\7^\2\2\u014a\u014b"+ + "\7f\2\2\u014b\36\3\2\2\2\u014c\u014d\7^\2\2\u014d\u014e\7F\2\2\u014e "+ + "\3\2\2\2\u014f\u0150\7^\2\2\u0150\u0151\7j\2\2\u0151\"\3\2\2\2\u0152\u0153"+ + "\7^\2\2\u0153\u0154\7J\2\2\u0154$\3\2\2\2\u0155\u0156\7^\2\2\u0156\u0157"+ + "\7P\2\2\u0157&\3\2\2\2\u0158\u0159\7^\2\2\u0159\u015a\7r\2\2\u015a\u015b"+ + "\7}\2\2\u015b\u015c\3\2\2\2\u015c\u015d\5\u00fd\177\2\u015d\u015e\7\177"+ + "\2\2\u015e(\3\2\2\2\u015f\u0160\7^\2\2\u0160\u0161\7R\2\2\u0161\u0162"+ + "\7}\2\2\u0162\u0163\3\2\2\2\u0163\u0164\5\u00fd\177\2\u0164\u0165\7\177"+ + "\2\2\u0165*\3\2\2\2\u0166\u0167\7^\2\2\u0167\u0168\7T\2\2\u0168,\3\2\2"+ + "\2\u0169\u016a\7^\2\2\u016a\u016b\7u\2\2\u016b.\3\2\2\2\u016c\u016d\7"+ + "^\2\2\u016d\u016e\7U\2\2\u016e\60\3\2\2\2\u016f\u0170\7^\2\2\u0170\u0171"+ + "\7x\2\2\u0171\62\3\2\2\2\u0172\u0173\7^\2\2\u0173\u0174\7X\2\2\u0174\64"+ + "\3\2\2\2\u0175\u0176\7^\2\2\u0176\u0177\7y\2\2\u0177\66\3\2\2\2\u0178"+ + "\u0179\7^\2\2\u0179\u017a\7Y\2\2\u017a8\3\2\2\2\u017b\u017c\7^\2\2\u017c"+ + "\u017d\7Z\2\2\u017d:\3\2\2\2\u017e\u017f\7]\2\2\u017f<\3\2\2\2\u0180\u0181"+ + "\7_\2\2\u0181>\3\2\2\2\u0182\u0183\7`\2\2\u0183@\3\2\2\2\u0184\u0185\7"+ + "/\2\2\u0185B\3\2\2\2\u0186\u0187\7]\2\2\u0187\u0188\7]\2\2\u0188\u0189"+ + "\7<\2\2\u0189\u018a\3\2\2\2\u018a\u018b\5\u00ff\u0080\2\u018b\u018c\7"+ + "<\2\2\u018c\u018d\7_\2\2\u018d\u018e\7_\2\2\u018eD\3\2\2\2\u018f\u0190"+ + "\7]\2\2\u0190\u0191\7]\2\2\u0191\u0192\7<\2\2\u0192\u0193\7`\2\2\u0193"+ + "\u0194\3\2\2\2\u0194\u0195\5\u00ff\u0080\2\u0195\u0196\7<\2\2\u0196\u0197"+ + "\7_\2\2\u0197\u0198\7_\2\2\u0198F\3\2\2\2\u0199\u019a\7A\2\2\u019aH\3"+ + "\2\2\2\u019b\u019c\7-\2\2\u019cJ\3\2\2\2\u019d\u019e\7,\2\2\u019eL\3\2"+ + "\2\2\u019f\u01a0\7}\2\2\u01a0N\3\2\2\2\u01a1\u01a2\7\177\2\2\u01a2P\3"+ + "\2\2\2\u01a3\u01a4\7.\2\2\u01a4R\3\2\2\2\u01a5\u01a6\7^\2\2\u01a6\u01a7"+ + "\7d\2\2\u01a7T\3\2\2\2\u01a8\u01a9\7^\2\2\u01a9\u01aa\7D\2\2\u01aaV\3"+ + "\2\2\2\u01ab\u01ac\7^\2\2\u01ac\u01ad\7C\2\2\u01adX\3\2\2\2\u01ae\u01af"+ + "\7&\2\2\u01afZ\3\2\2\2\u01b0\u01b1\7^\2\2\u01b1\u01b2\7\\\2\2\u01b2\\"+ + "\3\2\2\2\u01b3\u01b4\7^\2\2\u01b4\u01b5\7|\2\2\u01b5^\3\2\2\2\u01b6\u01b7"+ + "\7^\2\2\u01b7\u01b8\7I\2\2\u01b8`\3\2\2\2\u01b9\u01ba\7^\2\2\u01ba\u01bb"+ + "\7M\2\2\u01bbb\3\2\2\2\u01bc\u01bd\7^\2\2\u01bd\u01be\7i\2\2\u01bed\3"+ + "\2\2\2\u01bf\u01c0\7^\2\2\u01c0\u01c1\7m\2\2\u01c1f\3\2\2\2\u01c2\u01c3"+ + "\7~\2\2\u01c3h\3\2\2\2\u01c4\u01c5\7*\2\2\u01c5j\3\2\2\2\u01c6\u01c7\7"+ + "+\2\2\u01c7l\3\2\2\2\u01c8\u01c9\7>\2\2\u01c9n\3\2\2\2\u01ca\u01cb\7@"+ + "\2\2\u01cbp\3\2\2\2\u01cc\u01cd\7)\2\2\u01cdr\3\2\2\2\u01ce\u01cf\7a\2"+ + "\2\u01cft\3\2\2\2\u01d0\u01d1\7<\2\2\u01d1v\3\2\2\2\u01d2\u01d3\7%\2\2"+ + "\u01d3x\3\2\2\2\u01d4\u01d5\7?\2\2\u01d5z\3\2\2\2\u01d6\u01d7\7#\2\2\u01d7"+ + "|\3\2\2\2\u01d8\u01d9\7(\2\2\u01d9~\3\2\2\2\u01da\u01db\7c\2\2\u01db\u0080"+ + "\3\2\2\2\u01dc\u01dd\7d\2\2\u01dd\u0082\3\2\2\2\u01de\u01df\7e\2\2\u01df"+ + "\u0084\3\2\2\2\u01e0\u01e1\7f\2\2\u01e1\u0086\3\2\2\2\u01e2\u01e3\7g\2"+ + "\2\u01e3\u0088\3\2\2\2\u01e4\u01e5\7h\2\2\u01e5\u008a\3\2\2\2\u01e6\u01e7"+ + "\7i\2\2\u01e7\u008c\3\2\2\2\u01e8\u01e9\7j\2\2\u01e9\u008e\3\2\2\2\u01ea"+ + "\u01eb\7k\2\2\u01eb\u0090\3\2\2\2\u01ec\u01ed\7l\2\2\u01ed\u0092\3\2\2"+ + "\2\u01ee\u01ef\7m\2\2\u01ef\u0094\3\2\2\2\u01f0\u01f1\7n\2\2\u01f1\u0096"+ + "\3\2\2\2\u01f2\u01f3\7o\2\2\u01f3\u0098\3\2\2\2\u01f4\u01f5\7p\2\2\u01f5"+ + "\u009a\3\2\2\2\u01f6\u01f7\7q\2\2\u01f7\u009c\3\2\2\2\u01f8\u01f9\7r\2"+ + "\2\u01f9\u009e\3\2\2\2\u01fa\u01fb\7s\2\2\u01fb\u00a0\3\2\2\2\u01fc\u01fd"+ + "\7t\2\2\u01fd\u00a2\3\2\2\2\u01fe\u01ff\7u\2\2\u01ff\u00a4\3\2\2\2\u0200"+ + "\u0201\7v\2\2\u0201\u00a6\3\2\2\2\u0202\u0203\7w\2\2\u0203\u00a8\3\2\2"+ + "\2\u0204\u0205\7x\2\2\u0205\u00aa\3\2\2\2\u0206\u0207\7y\2\2\u0207\u00ac"+ + "\3\2\2\2\u0208\u0209\7z\2\2\u0209\u00ae\3\2\2\2\u020a\u020b\7{\2\2\u020b"+ + "\u00b0\3\2\2\2\u020c\u020d\7|\2\2\u020d\u00b2\3\2\2\2\u020e\u020f\7C\2"+ + "\2\u020f\u00b4\3\2\2\2\u0210\u0211\7D\2\2\u0211\u00b6\3\2\2\2\u0212\u0213"+ + "\7E\2\2\u0213\u00b8\3\2\2\2\u0214\u0215\7F\2\2\u0215\u00ba\3\2\2\2\u0216"+ + "\u0217\7G\2\2\u0217\u00bc\3\2\2\2\u0218\u0219\7H\2\2\u0219\u00be\3\2\2"+ + "\2\u021a\u021b\7I\2\2\u021b\u00c0\3\2\2\2\u021c\u021d\7J\2\2\u021d\u00c2"+ + "\3\2\2\2\u021e\u021f\7K\2\2\u021f\u00c4\3\2\2\2\u0220\u0221\7L\2\2\u0221"+ + "\u00c6\3\2\2\2\u0222\u0223\7M\2\2\u0223\u00c8\3\2\2\2\u0224\u0225\7N\2"+ + "\2\u0225\u00ca\3\2\2\2\u0226\u0227\7O\2\2\u0227\u00cc\3\2\2\2\u0228\u0229"+ + "\7P\2\2\u0229\u00ce\3\2\2\2\u022a\u022b\7Q\2\2\u022b\u00d0\3\2\2\2\u022c"+ + "\u022d\7R\2\2\u022d\u00d2\3\2\2\2\u022e\u022f\7S\2\2\u022f\u00d4\3\2\2"+ + "\2\u0230\u0231\7T\2\2\u0231\u00d6\3\2\2\2\u0232\u0233\7U\2\2\u0233\u00d8"+ + "\3\2\2\2\u0234\u0235\7V\2\2\u0235\u00da\3\2\2\2\u0236\u0237\7W\2\2\u0237"+ + "\u00dc\3\2\2\2\u0238\u0239\7X\2\2\u0239\u00de\3\2\2\2\u023a\u023b\7Y\2"+ + "\2\u023b\u00e0\3\2\2\2\u023c\u023d\7Z\2\2\u023d\u00e2\3\2\2\2\u023e\u023f"+ + "\7[\2\2\u023f\u00e4\3\2\2\2\u0240\u0241\7\\\2\2\u0241\u00e6\3\2\2\2\u0242"+ + "\u0243\7\63\2\2\u0243\u00e8\3\2\2\2\u0244\u0245\7\64\2\2\u0245\u00ea\3"+ + "\2\2\2\u0246\u0247\7\65\2\2\u0247\u00ec\3\2\2\2\u0248\u0249\7\66\2\2\u0249"+ + "\u00ee\3\2\2\2\u024a\u024b\7\67\2\2\u024b\u00f0\3\2\2\2\u024c\u024d\7"+ + "8\2\2\u024d\u00f2\3\2\2\2\u024e\u024f\79\2\2\u024f\u00f4\3\2\2\2\u0250"+ + "\u0251\7:\2\2\u0251\u00f6\3\2\2\2\u0252\u0253\7;\2\2\u0253\u00f8\3\2\2"+ + "\2\u0254\u0255\7\62\2\2\u0255\u00fa\3\2\2\2\u0256\u0257\13\2\2\2\u0257"+ + "\u00fc\3\2\2\2\u0258\u025b\7a\2\2\u0259\u025b\5\u0101\u0081\2\u025a\u0258"+ + "\3\2\2\2\u025a\u0259\3\2\2\2\u025b\u025c\3\2\2\2\u025c\u025a\3\2\2\2\u025c"+ + "\u025d\3\2\2\2\u025d\u00fe\3\2\2\2\u025e\u0260\5\u0101\u0081\2\u025f\u025e"+ + "\3\2\2\2\u0260\u0261\3\2\2\2\u0261\u025f\3\2\2\2\u0261\u0262\3\2\2\2\u0262"+ + "\u0100\3\2\2\2\u0263\u0264\t\2\2\2\u0264\u0102\3\2\2\2\u0265\u0266\n\2"+ + "\2\2\u0266\u0104\3\2\2\2\u0267\u0268\t\3\2\2\u0268\u0106\3\2\2\2\u0269"+ + "\u026a\t\4\2\2\u026a\u0108\3\2\2\2\n\2\u0112\u011f\u013e\u0142\u025a\u025c"+ + "\u0261\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREListener.java b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREListener.java new file mode 100644 index 0000000..d016940 --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREListener.java @@ -0,0 +1,379 @@ +package ru.touchin.roboswag.textprocessing.pcre.parser; +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link PCREParser}. + */ +public interface PCREListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link PCREParser#parse}. + * @param ctx the parse tree + */ + void enterParse(PCREParser.ParseContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#parse}. + * @param ctx the parse tree + */ + void exitParse(PCREParser.ParseContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#alternation}. + * @param ctx the parse tree + */ + void enterAlternation(PCREParser.AlternationContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#alternation}. + * @param ctx the parse tree + */ + void exitAlternation(PCREParser.AlternationContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#expr}. + * @param ctx the parse tree + */ + void enterExpr(PCREParser.ExprContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#expr}. + * @param ctx the parse tree + */ + void exitExpr(PCREParser.ExprContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#element}. + * @param ctx the parse tree + */ + void enterElement(PCREParser.ElementContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#element}. + * @param ctx the parse tree + */ + void exitElement(PCREParser.ElementContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#quantifier}. + * @param ctx the parse tree + */ + void enterQuantifier(PCREParser.QuantifierContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#quantifier}. + * @param ctx the parse tree + */ + void exitQuantifier(PCREParser.QuantifierContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#quantifier_type}. + * @param ctx the parse tree + */ + void enterQuantifier_type(PCREParser.Quantifier_typeContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#quantifier_type}. + * @param ctx the parse tree + */ + void exitQuantifier_type(PCREParser.Quantifier_typeContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#character_class}. + * @param ctx the parse tree + */ + void enterCharacter_class(PCREParser.Character_classContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#character_class}. + * @param ctx the parse tree + */ + void exitCharacter_class(PCREParser.Character_classContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#backreference}. + * @param ctx the parse tree + */ + void enterBackreference(PCREParser.BackreferenceContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#backreference}. + * @param ctx the parse tree + */ + void exitBackreference(PCREParser.BackreferenceContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#backreference_or_octal}. + * @param ctx the parse tree + */ + void enterBackreference_or_octal(PCREParser.Backreference_or_octalContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#backreference_or_octal}. + * @param ctx the parse tree + */ + void exitBackreference_or_octal(PCREParser.Backreference_or_octalContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#capture}. + * @param ctx the parse tree + */ + void enterCapture(PCREParser.CaptureContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#capture}. + * @param ctx the parse tree + */ + void exitCapture(PCREParser.CaptureContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#non_capture}. + * @param ctx the parse tree + */ + void enterNon_capture(PCREParser.Non_captureContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#non_capture}. + * @param ctx the parse tree + */ + void exitNon_capture(PCREParser.Non_captureContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#comment}. + * @param ctx the parse tree + */ + void enterComment(PCREParser.CommentContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#comment}. + * @param ctx the parse tree + */ + void exitComment(PCREParser.CommentContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#option}. + * @param ctx the parse tree + */ + void enterOption(PCREParser.OptionContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#option}. + * @param ctx the parse tree + */ + void exitOption(PCREParser.OptionContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#option_flags}. + * @param ctx the parse tree + */ + void enterOption_flags(PCREParser.Option_flagsContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#option_flags}. + * @param ctx the parse tree + */ + void exitOption_flags(PCREParser.Option_flagsContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#option_flag}. + * @param ctx the parse tree + */ + void enterOption_flag(PCREParser.Option_flagContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#option_flag}. + * @param ctx the parse tree + */ + void exitOption_flag(PCREParser.Option_flagContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#look_around}. + * @param ctx the parse tree + */ + void enterLook_around(PCREParser.Look_aroundContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#look_around}. + * @param ctx the parse tree + */ + void exitLook_around(PCREParser.Look_aroundContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#subroutine_reference}. + * @param ctx the parse tree + */ + void enterSubroutine_reference(PCREParser.Subroutine_referenceContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#subroutine_reference}. + * @param ctx the parse tree + */ + void exitSubroutine_reference(PCREParser.Subroutine_referenceContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#conditional}. + * @param ctx the parse tree + */ + void enterConditional(PCREParser.ConditionalContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#conditional}. + * @param ctx the parse tree + */ + void exitConditional(PCREParser.ConditionalContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#backtrack_control}. + * @param ctx the parse tree + */ + void enterBacktrack_control(PCREParser.Backtrack_controlContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#backtrack_control}. + * @param ctx the parse tree + */ + void exitBacktrack_control(PCREParser.Backtrack_controlContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#newline_convention}. + * @param ctx the parse tree + */ + void enterNewline_convention(PCREParser.Newline_conventionContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#newline_convention}. + * @param ctx the parse tree + */ + void exitNewline_convention(PCREParser.Newline_conventionContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#callout}. + * @param ctx the parse tree + */ + void enterCallout(PCREParser.CalloutContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#callout}. + * @param ctx the parse tree + */ + void exitCallout(PCREParser.CalloutContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#atom}. + * @param ctx the parse tree + */ + void enterAtom(PCREParser.AtomContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#atom}. + * @param ctx the parse tree + */ + void exitAtom(PCREParser.AtomContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#cc_atom}. + * @param ctx the parse tree + */ + void enterCc_atom(PCREParser.Cc_atomContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#cc_atom}. + * @param ctx the parse tree + */ + void exitCc_atom(PCREParser.Cc_atomContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#shared_atom}. + * @param ctx the parse tree + */ + void enterShared_atom(PCREParser.Shared_atomContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#shared_atom}. + * @param ctx the parse tree + */ + void exitShared_atom(PCREParser.Shared_atomContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#literal}. + * @param ctx the parse tree + */ + void enterLiteral(PCREParser.LiteralContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#literal}. + * @param ctx the parse tree + */ + void exitLiteral(PCREParser.LiteralContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#cc_literal}. + * @param ctx the parse tree + */ + void enterCc_literal(PCREParser.Cc_literalContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#cc_literal}. + * @param ctx the parse tree + */ + void exitCc_literal(PCREParser.Cc_literalContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#shared_literal}. + * @param ctx the parse tree + */ + void enterShared_literal(PCREParser.Shared_literalContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#shared_literal}. + * @param ctx the parse tree + */ + void exitShared_literal(PCREParser.Shared_literalContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#number}. + * @param ctx the parse tree + */ + void enterNumber(PCREParser.NumberContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#number}. + * @param ctx the parse tree + */ + void exitNumber(PCREParser.NumberContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#octal_char}. + * @param ctx the parse tree + */ + void enterOctal_char(PCREParser.Octal_charContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#octal_char}. + * @param ctx the parse tree + */ + void exitOctal_char(PCREParser.Octal_charContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#octal_digit}. + * @param ctx the parse tree + */ + void enterOctal_digit(PCREParser.Octal_digitContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#octal_digit}. + * @param ctx the parse tree + */ + void exitOctal_digit(PCREParser.Octal_digitContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#digits}. + * @param ctx the parse tree + */ + void enterDigits(PCREParser.DigitsContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#digits}. + * @param ctx the parse tree + */ + void exitDigits(PCREParser.DigitsContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#digit}. + * @param ctx the parse tree + */ + void enterDigit(PCREParser.DigitContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#digit}. + * @param ctx the parse tree + */ + void exitDigit(PCREParser.DigitContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#name}. + * @param ctx the parse tree + */ + void enterName(PCREParser.NameContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#name}. + * @param ctx the parse tree + */ + void exitName(PCREParser.NameContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#alpha_nums}. + * @param ctx the parse tree + */ + void enterAlpha_nums(PCREParser.Alpha_numsContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#alpha_nums}. + * @param ctx the parse tree + */ + void exitAlpha_nums(PCREParser.Alpha_numsContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#non_close_parens}. + * @param ctx the parse tree + */ + void enterNon_close_parens(PCREParser.Non_close_parensContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#non_close_parens}. + * @param ctx the parse tree + */ + void exitNon_close_parens(PCREParser.Non_close_parensContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#non_close_paren}. + * @param ctx the parse tree + */ + void enterNon_close_paren(PCREParser.Non_close_parenContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#non_close_paren}. + * @param ctx the parse tree + */ + void exitNon_close_paren(PCREParser.Non_close_parenContext ctx); + /** + * Enter a parse tree produced by {@link PCREParser#letter}. + * @param ctx the parse tree + */ + void enterLetter(PCREParser.LetterContext ctx); + /** + * Exit a parse tree produced by {@link PCREParser#letter}. + * @param ctx the parse tree + */ + void exitLetter(PCREParser.LetterContext ctx); +} \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREParser.java b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREParser.java new file mode 100644 index 0000000..9dfa811 --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREParser.java @@ -0,0 +1,5652 @@ +package ru.touchin.roboswag.textprocessing.pcre.parser; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class PCREParser extends Parser { + static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + Quoted=1, BlockQuoted=2, BellChar=3, ControlChar=4, EscapeChar=5, FormFeed=6, + NewLine=7, CarriageReturn=8, Tab=9, Backslash=10, HexChar=11, Dot=12, + OneDataUnit=13, DecimalDigit=14, NotDecimalDigit=15, HorizontalWhiteSpace=16, + NotHorizontalWhiteSpace=17, NotNewLine=18, CharWithProperty=19, CharWithoutProperty=20, + NewLineSequence=21, WhiteSpace=22, NotWhiteSpace=23, VerticalWhiteSpace=24, + NotVerticalWhiteSpace=25, WordChar=26, NotWordChar=27, ExtendedUnicodeChar=28, + CharacterClassStart=29, CharacterClassEnd=30, Caret=31, Hyphen=32, POSIXNamedSet=33, + POSIXNegatedNamedSet=34, QuestionMark=35, Plus=36, Star=37, OpenBrace=38, + CloseBrace=39, Comma=40, WordBoundary=41, NonWordBoundary=42, StartOfSubject=43, + EndOfSubjectOrLine=44, EndOfSubjectOrLineEndOfSubject=45, EndOfSubject=46, + PreviousMatchInSubject=47, ResetStartMatch=48, SubroutineOrNamedReferenceStartG=49, + NamedReferenceStartK=50, Pipe=51, OpenParen=52, CloseParen=53, LessThan=54, + GreaterThan=55, SingleQuote=56, Underscore=57, Colon=58, Hash=59, Equals=60, + Exclamation=61, Ampersand=62, ALC=63, BLC=64, CLC=65, DLC=66, ELC=67, + FLC=68, GLC=69, HLC=70, ILC=71, JLC=72, KLC=73, LLC=74, MLC=75, NLC=76, + OLC=77, PLC=78, QLC=79, RLC=80, SLC=81, TLC=82, ULC=83, VLC=84, WLC=85, + XLC=86, YLC=87, ZLC=88, AUC=89, BUC=90, CUC=91, DUC=92, EUC=93, FUC=94, + GUC=95, HUC=96, IUC=97, JUC=98, KUC=99, LUC=100, MUC=101, NUC=102, OUC=103, + PUC=104, QUC=105, RUC=106, SUC=107, TUC=108, UUC=109, VUC=110, WUC=111, + XUC=112, YUC=113, ZUC=114, D1=115, D2=116, D3=117, D4=118, D5=119, D6=120, + D7=121, D8=122, D9=123, D0=124, OtherChar=125; + public static final int + RULE_parse = 0, RULE_alternation = 1, RULE_expr = 2, RULE_element = 3, + RULE_quantifier = 4, RULE_quantifier_type = 5, RULE_character_class = 6, + RULE_backreference = 7, RULE_backreference_or_octal = 8, RULE_capture = 9, + RULE_non_capture = 10, RULE_comment = 11, RULE_option = 12, RULE_option_flags = 13, + RULE_option_flag = 14, RULE_look_around = 15, RULE_subroutine_reference = 16, + RULE_conditional = 17, RULE_backtrack_control = 18, RULE_newline_convention = 19, + RULE_callout = 20, RULE_atom = 21, RULE_cc_atom = 22, RULE_shared_atom = 23, + RULE_literal = 24, RULE_cc_literal = 25, RULE_shared_literal = 26, RULE_number = 27, + RULE_octal_char = 28, RULE_octal_digit = 29, RULE_digits = 30, RULE_digit = 31, + RULE_name = 32, RULE_alpha_nums = 33, RULE_non_close_parens = 34, RULE_non_close_paren = 35, + RULE_letter = 36; + private static String[] makeRuleNames() { + return new String[] { + "parse", "alternation", "expr", "element", "quantifier", "quantifier_type", + "character_class", "backreference", "backreference_or_octal", "capture", + "non_capture", "comment", "option", "option_flags", "option_flag", "look_around", + "subroutine_reference", "conditional", "backtrack_control", "newline_convention", + "callout", "atom", "cc_atom", "shared_atom", "literal", "cc_literal", + "shared_literal", "number", "octal_char", "octal_digit", "digits", "digit", + "name", "alpha_nums", "non_close_parens", "non_close_paren", "letter" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, null, null, "'\\a'", null, "'\\e'", "'\\f'", "'\\n'", "'\\r'", + "'\\t'", "'\\'", null, "'.'", "'\\C'", "'\\d'", "'\\D'", "'\\h'", "'\\H'", + "'\\N'", null, null, "'\\R'", "'\\s'", "'\\S'", "'\\v'", "'\\V'", "'\\w'", + "'\\W'", "'\\X'", "'['", "']'", "'^'", "'-'", null, null, "'?'", "'+'", + "'*'", "'{'", "'}'", "','", "'\\b'", "'\\B'", "'\\A'", "'$'", "'\\Z'", + "'\\z'", "'\\G'", "'\\K'", "'\\g'", "'\\k'", "'|'", "'('", "')'", "'<'", + "'>'", "'''", "'_'", "':'", "'#'", "'='", "'!'", "'&'", "'a'", "'b'", + "'c'", "'d'", "'e'", "'f'", "'g'", "'h'", "'i'", "'j'", "'k'", "'l'", + "'m'", "'n'", "'o'", "'p'", "'q'", "'r'", "'s'", "'t'", "'u'", "'v'", + "'w'", "'x'", "'y'", "'z'", "'A'", "'B'", "'C'", "'D'", "'E'", "'F'", + "'G'", "'H'", "'I'", "'J'", "'K'", "'L'", "'M'", "'N'", "'O'", "'P'", + "'Q'", "'R'", "'S'", "'T'", "'U'", "'V'", "'W'", "'X'", "'Y'", "'Z'", + "'1'", "'2'", "'3'", "'4'", "'5'", "'6'", "'7'", "'8'", "'9'", "'0'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "Quoted", "BlockQuoted", "BellChar", "ControlChar", "EscapeChar", + "FormFeed", "NewLine", "CarriageReturn", "Tab", "Backslash", "HexChar", + "Dot", "OneDataUnit", "DecimalDigit", "NotDecimalDigit", "HorizontalWhiteSpace", + "NotHorizontalWhiteSpace", "NotNewLine", "CharWithProperty", "CharWithoutProperty", + "NewLineSequence", "WhiteSpace", "NotWhiteSpace", "VerticalWhiteSpace", + "NotVerticalWhiteSpace", "WordChar", "NotWordChar", "ExtendedUnicodeChar", + "CharacterClassStart", "CharacterClassEnd", "Caret", "Hyphen", "POSIXNamedSet", + "POSIXNegatedNamedSet", "QuestionMark", "Plus", "Star", "OpenBrace", + "CloseBrace", "Comma", "WordBoundary", "NonWordBoundary", "StartOfSubject", + "EndOfSubjectOrLine", "EndOfSubjectOrLineEndOfSubject", "EndOfSubject", + "PreviousMatchInSubject", "ResetStartMatch", "SubroutineOrNamedReferenceStartG", + "NamedReferenceStartK", "Pipe", "OpenParen", "CloseParen", "LessThan", + "GreaterThan", "SingleQuote", "Underscore", "Colon", "Hash", "Equals", + "Exclamation", "Ampersand", "ALC", "BLC", "CLC", "DLC", "ELC", "FLC", + "GLC", "HLC", "ILC", "JLC", "KLC", "LLC", "MLC", "NLC", "OLC", "PLC", + "QLC", "RLC", "SLC", "TLC", "ULC", "VLC", "WLC", "XLC", "YLC", "ZLC", + "AUC", "BUC", "CUC", "DUC", "EUC", "FUC", "GUC", "HUC", "IUC", "JUC", + "KUC", "LUC", "MUC", "NUC", "OUC", "PUC", "QUC", "RUC", "SUC", "TUC", + "UUC", "VUC", "WUC", "XUC", "YUC", "ZUC", "D1", "D2", "D3", "D4", "D5", + "D6", "D7", "D8", "D9", "D0", "OtherChar" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "PCRE.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public PCREParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + public static class ParseContext extends ParserRuleContext { + public AlternationContext alternation() { + return getRuleContext(AlternationContext.class,0); + } + public TerminalNode EOF() { return getToken(PCREParser.EOF, 0); } + public ParseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parse; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterParse(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitParse(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitParse(this); + else return visitor.visitChildren(this); + } + } + + public final ParseContext parse() throws RecognitionException { + ParseContext _localctx = new ParseContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_parse); + try { + enterOuterAlt(_localctx, 1); + { + setState(74); + alternation(); + setState(75); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AlternationContext extends ParserRuleContext { + public List expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public List Pipe() { return getTokens(PCREParser.Pipe); } + public TerminalNode Pipe(int i) { + return getToken(PCREParser.Pipe, i); + } + public AlternationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alternation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterAlternation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitAlternation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitAlternation(this); + else return visitor.visitChildren(this); + } + } + + public final AlternationContext alternation() throws RecognitionException { + AlternationContext _localctx = new AlternationContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_alternation); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(77); + expr(); + setState(82); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,0,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(78); + match(Pipe); + setState(79); + expr(); + } + } + } + setState(84); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,0,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExprContext extends ParserRuleContext { + public List element() { + return getRuleContexts(ElementContext.class); + } + public ElementContext element(int i) { + return getRuleContext(ElementContext.class,i); + } + public ExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitExpr(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitExpr(this); + else return visitor.visitChildren(this); + } + } + + public final ExprContext expr() throws RecognitionException { + ExprContext _localctx = new ExprContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_expr); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(88); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << OneDataUnit) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << ExtendedUnicodeChar) | (1L << CharacterClassStart) | (1L << CharacterClassEnd) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << NonWordBoundary) | (1L << StartOfSubject) | (1L << EndOfSubjectOrLine) | (1L << EndOfSubjectOrLineEndOfSubject) | (1L << EndOfSubject) | (1L << PreviousMatchInSubject) | (1L << ResetStartMatch) | (1L << SubroutineOrNamedReferenceStartG) | (1L << NamedReferenceStartK) | (1L << OpenParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0)) { + { + { + setState(85); + element(); + } + } + setState(90); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementContext extends ParserRuleContext { + public AtomContext atom() { + return getRuleContext(AtomContext.class,0); + } + public QuantifierContext quantifier() { + return getRuleContext(QuantifierContext.class,0); + } + public ElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_element; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitElement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitElement(this); + else return visitor.visitChildren(this); + } + } + + public final ElementContext element() throws RecognitionException { + ElementContext _localctx = new ElementContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_element); + try { + enterOuterAlt(_localctx, 1); + { + setState(91); + atom(); + setState(93); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { + case 1: + { + setState(92); + quantifier(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QuantifierContext extends ParserRuleContext { + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public Quantifier_typeContext quantifier_type() { + return getRuleContext(Quantifier_typeContext.class,0); + } + public TerminalNode Plus() { return getToken(PCREParser.Plus, 0); } + public TerminalNode Star() { return getToken(PCREParser.Star, 0); } + public TerminalNode OpenBrace() { return getToken(PCREParser.OpenBrace, 0); } + public List number() { + return getRuleContexts(NumberContext.class); + } + public NumberContext number(int i) { + return getRuleContext(NumberContext.class,i); + } + public TerminalNode CloseBrace() { return getToken(PCREParser.CloseBrace, 0); } + public TerminalNode Comma() { return getToken(PCREParser.Comma, 0); } + public QuantifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_quantifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterQuantifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitQuantifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitQuantifier(this); + else return visitor.visitChildren(this); + } + } + + public final QuantifierContext quantifier() throws RecognitionException { + QuantifierContext _localctx = new QuantifierContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_quantifier); + try { + setState(119); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(95); + match(QuestionMark); + setState(96); + quantifier_type(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(97); + match(Plus); + setState(98); + quantifier_type(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(99); + match(Star); + setState(100); + quantifier_type(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(101); + match(OpenBrace); + setState(102); + number(); + setState(103); + match(CloseBrace); + setState(104); + quantifier_type(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(106); + match(OpenBrace); + setState(107); + number(); + setState(108); + match(Comma); + setState(109); + match(CloseBrace); + setState(110); + quantifier_type(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(112); + match(OpenBrace); + setState(113); + number(); + setState(114); + match(Comma); + setState(115); + number(); + setState(116); + match(CloseBrace); + setState(117); + quantifier_type(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Quantifier_typeContext extends ParserRuleContext { + public TerminalNode Plus() { return getToken(PCREParser.Plus, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public Quantifier_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_quantifier_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterQuantifier_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitQuantifier_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitQuantifier_type(this); + else return visitor.visitChildren(this); + } + } + + public final Quantifier_typeContext quantifier_type() throws RecognitionException { + Quantifier_typeContext _localctx = new Quantifier_typeContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_quantifier_type); + try { + setState(124); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Plus: + enterOuterAlt(_localctx, 1); + { + setState(121); + match(Plus); + } + break; + case QuestionMark: + enterOuterAlt(_localctx, 2); + { + setState(122); + match(QuestionMark); + } + break; + case EOF: + case Quoted: + case BlockQuoted: + case BellChar: + case ControlChar: + case EscapeChar: + case FormFeed: + case NewLine: + case CarriageReturn: + case Tab: + case Backslash: + case HexChar: + case Dot: + case OneDataUnit: + case DecimalDigit: + case NotDecimalDigit: + case HorizontalWhiteSpace: + case NotHorizontalWhiteSpace: + case NotNewLine: + case CharWithProperty: + case CharWithoutProperty: + case NewLineSequence: + case WhiteSpace: + case NotWhiteSpace: + case VerticalWhiteSpace: + case NotVerticalWhiteSpace: + case WordChar: + case NotWordChar: + case ExtendedUnicodeChar: + case CharacterClassStart: + case CharacterClassEnd: + case Caret: + case Hyphen: + case POSIXNamedSet: + case POSIXNegatedNamedSet: + case OpenBrace: + case CloseBrace: + case Comma: + case WordBoundary: + case NonWordBoundary: + case StartOfSubject: + case EndOfSubjectOrLine: + case EndOfSubjectOrLineEndOfSubject: + case EndOfSubject: + case PreviousMatchInSubject: + case ResetStartMatch: + case SubroutineOrNamedReferenceStartG: + case NamedReferenceStartK: + case Pipe: + case OpenParen: + case CloseParen: + case LessThan: + case GreaterThan: + case SingleQuote: + case Underscore: + case Colon: + case Hash: + case Equals: + case Exclamation: + case Ampersand: + case ALC: + case BLC: + case CLC: + case DLC: + case ELC: + case FLC: + case GLC: + case HLC: + case ILC: + case JLC: + case KLC: + case LLC: + case MLC: + case NLC: + case OLC: + case PLC: + case QLC: + case RLC: + case SLC: + case TLC: + case ULC: + case VLC: + case WLC: + case XLC: + case YLC: + case ZLC: + case AUC: + case BUC: + case CUC: + case DUC: + case EUC: + case FUC: + case GUC: + case HUC: + case IUC: + case JUC: + case KUC: + case LUC: + case MUC: + case NUC: + case OUC: + case PUC: + case QUC: + case RUC: + case SUC: + case TUC: + case UUC: + case VUC: + case WUC: + case XUC: + case YUC: + case ZUC: + case D1: + case D2: + case D3: + case D4: + case D5: + case D6: + case D7: + case D8: + case D9: + case D0: + case OtherChar: + enterOuterAlt(_localctx, 3); + { + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Character_classContext extends ParserRuleContext { + public TerminalNode CharacterClassStart() { return getToken(PCREParser.CharacterClassStart, 0); } + public TerminalNode Caret() { return getToken(PCREParser.Caret, 0); } + public List CharacterClassEnd() { return getTokens(PCREParser.CharacterClassEnd); } + public TerminalNode CharacterClassEnd(int i) { + return getToken(PCREParser.CharacterClassEnd, i); + } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public List cc_atom() { + return getRuleContexts(Cc_atomContext.class); + } + public Cc_atomContext cc_atom(int i) { + return getRuleContext(Cc_atomContext.class,i); + } + public Character_classContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_character_class; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterCharacter_class(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitCharacter_class(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitCharacter_class(this); + else return visitor.visitChildren(this); + } + } + + public final Character_classContext character_class() throws RecognitionException { + Character_classContext _localctx = new Character_classContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_character_class); + int _la; + try { + setState(183); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(126); + match(CharacterClassStart); + setState(127); + match(Caret); + setState(128); + match(CharacterClassEnd); + setState(129); + match(Hyphen); + setState(131); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(130); + cc_atom(); + } + } + setState(133); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << CharacterClassStart) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << EndOfSubjectOrLine) | (1L << Pipe) | (1L << OpenParen) | (1L << CloseParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0) ); + setState(135); + match(CharacterClassEnd); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(137); + match(CharacterClassStart); + setState(138); + match(Caret); + setState(139); + match(CharacterClassEnd); + setState(143); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << CharacterClassStart) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << EndOfSubjectOrLine) | (1L << Pipe) | (1L << OpenParen) | (1L << CloseParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0)) { + { + { + setState(140); + cc_atom(); + } + } + setState(145); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(146); + match(CharacterClassEnd); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(147); + match(CharacterClassStart); + setState(148); + match(Caret); + setState(150); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(149); + cc_atom(); + } + } + setState(152); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << CharacterClassStart) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << EndOfSubjectOrLine) | (1L << Pipe) | (1L << OpenParen) | (1L << CloseParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0) ); + setState(154); + match(CharacterClassEnd); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(156); + match(CharacterClassStart); + setState(157); + match(CharacterClassEnd); + setState(158); + match(Hyphen); + setState(160); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(159); + cc_atom(); + } + } + setState(162); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << CharacterClassStart) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << EndOfSubjectOrLine) | (1L << Pipe) | (1L << OpenParen) | (1L << CloseParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0) ); + setState(164); + match(CharacterClassEnd); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(166); + match(CharacterClassStart); + setState(167); + match(CharacterClassEnd); + setState(171); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << CharacterClassStart) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << EndOfSubjectOrLine) | (1L << Pipe) | (1L << OpenParen) | (1L << CloseParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0)) { + { + { + setState(168); + cc_atom(); + } + } + setState(173); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(174); + match(CharacterClassEnd); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(175); + match(CharacterClassStart); + setState(177); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(176); + cc_atom(); + } + } + setState(179); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << CharacterClassStart) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << EndOfSubjectOrLine) | (1L << Pipe) | (1L << OpenParen) | (1L << CloseParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0) ); + setState(181); + match(CharacterClassEnd); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BackreferenceContext extends ParserRuleContext { + public Backreference_or_octalContext backreference_or_octal() { + return getRuleContext(Backreference_or_octalContext.class,0); + } + public TerminalNode SubroutineOrNamedReferenceStartG() { return getToken(PCREParser.SubroutineOrNamedReferenceStartG, 0); } + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public TerminalNode OpenBrace() { return getToken(PCREParser.OpenBrace, 0); } + public TerminalNode CloseBrace() { return getToken(PCREParser.CloseBrace, 0); } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public TerminalNode NamedReferenceStartK() { return getToken(PCREParser.NamedReferenceStartK, 0); } + public TerminalNode LessThan() { return getToken(PCREParser.LessThan, 0); } + public NameContext name() { + return getRuleContext(NameContext.class,0); + } + public TerminalNode GreaterThan() { return getToken(PCREParser.GreaterThan, 0); } + public List SingleQuote() { return getTokens(PCREParser.SingleQuote); } + public TerminalNode SingleQuote(int i) { + return getToken(PCREParser.SingleQuote, i); + } + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode PUC() { return getToken(PCREParser.PUC, 0); } + public TerminalNode Equals() { return getToken(PCREParser.Equals, 0); } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public BackreferenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_backreference; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterBackreference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitBackreference(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitBackreference(this); + else return visitor.visitChildren(this); + } + } + + public final BackreferenceContext backreference() throws RecognitionException { + BackreferenceContext _localctx = new BackreferenceContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_backreference); + try { + setState(226); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(185); + backreference_or_octal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(186); + match(SubroutineOrNamedReferenceStartG); + setState(187); + number(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(188); + match(SubroutineOrNamedReferenceStartG); + setState(189); + match(OpenBrace); + setState(190); + number(); + setState(191); + match(CloseBrace); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(193); + match(SubroutineOrNamedReferenceStartG); + setState(194); + match(OpenBrace); + setState(195); + match(Hyphen); + setState(196); + number(); + setState(197); + match(CloseBrace); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(199); + match(NamedReferenceStartK); + setState(200); + match(LessThan); + setState(201); + name(); + setState(202); + match(GreaterThan); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(204); + match(NamedReferenceStartK); + setState(205); + match(SingleQuote); + setState(206); + name(); + setState(207); + match(SingleQuote); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(209); + match(SubroutineOrNamedReferenceStartG); + setState(210); + match(OpenBrace); + setState(211); + name(); + setState(212); + match(CloseBrace); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(214); + match(NamedReferenceStartK); + setState(215); + match(OpenBrace); + setState(216); + name(); + setState(217); + match(CloseBrace); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(219); + match(OpenParen); + setState(220); + match(QuestionMark); + setState(221); + match(PUC); + setState(222); + match(Equals); + setState(223); + name(); + setState(224); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Backreference_or_octalContext extends ParserRuleContext { + public Octal_charContext octal_char() { + return getRuleContext(Octal_charContext.class,0); + } + public TerminalNode Backslash() { return getToken(PCREParser.Backslash, 0); } + public DigitContext digit() { + return getRuleContext(DigitContext.class,0); + } + public Backreference_or_octalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_backreference_or_octal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterBackreference_or_octal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitBackreference_or_octal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitBackreference_or_octal(this); + else return visitor.visitChildren(this); + } + } + + public final Backreference_or_octalContext backreference_or_octal() throws RecognitionException { + Backreference_or_octalContext _localctx = new Backreference_or_octalContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_backreference_or_octal); + try { + setState(231); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(228); + octal_char(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(229); + match(Backslash); + setState(230); + digit(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CaptureContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode LessThan() { return getToken(PCREParser.LessThan, 0); } + public NameContext name() { + return getRuleContext(NameContext.class,0); + } + public TerminalNode GreaterThan() { return getToken(PCREParser.GreaterThan, 0); } + public AlternationContext alternation() { + return getRuleContext(AlternationContext.class,0); + } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public List SingleQuote() { return getTokens(PCREParser.SingleQuote); } + public TerminalNode SingleQuote(int i) { + return getToken(PCREParser.SingleQuote, i); + } + public TerminalNode PUC() { return getToken(PCREParser.PUC, 0); } + public CaptureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_capture; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterCapture(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitCapture(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitCapture(this); + else return visitor.visitChildren(this); + } + } + + public final CaptureContext capture() throws RecognitionException { + CaptureContext _localctx = new CaptureContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_capture); + try { + setState(262); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(233); + match(OpenParen); + setState(234); + match(QuestionMark); + setState(235); + match(LessThan); + setState(236); + name(); + setState(237); + match(GreaterThan); + setState(238); + alternation(); + setState(239); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(241); + match(OpenParen); + setState(242); + match(QuestionMark); + setState(243); + match(SingleQuote); + setState(244); + name(); + setState(245); + match(SingleQuote); + setState(246); + alternation(); + setState(247); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(249); + match(OpenParen); + setState(250); + match(QuestionMark); + setState(251); + match(PUC); + setState(252); + match(LessThan); + setState(253); + name(); + setState(254); + match(GreaterThan); + setState(255); + alternation(); + setState(256); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(258); + match(OpenParen); + setState(259); + alternation(); + setState(260); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Non_captureContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode Colon() { return getToken(PCREParser.Colon, 0); } + public AlternationContext alternation() { + return getRuleContext(AlternationContext.class,0); + } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public TerminalNode Pipe() { return getToken(PCREParser.Pipe, 0); } + public TerminalNode GreaterThan() { return getToken(PCREParser.GreaterThan, 0); } + public Option_flagsContext option_flags() { + return getRuleContext(Option_flagsContext.class,0); + } + public Non_captureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_non_capture; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterNon_capture(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitNon_capture(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitNon_capture(this); + else return visitor.visitChildren(this); + } + } + + public final Non_captureContext non_capture() throws RecognitionException { + Non_captureContext _localctx = new Non_captureContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_non_capture); + try { + setState(289); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(264); + match(OpenParen); + setState(265); + match(QuestionMark); + setState(266); + match(Colon); + setState(267); + alternation(); + setState(268); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(270); + match(OpenParen); + setState(271); + match(QuestionMark); + setState(272); + match(Pipe); + setState(273); + alternation(); + setState(274); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(276); + match(OpenParen); + setState(277); + match(QuestionMark); + setState(278); + match(GreaterThan); + setState(279); + alternation(); + setState(280); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(282); + match(OpenParen); + setState(283); + match(QuestionMark); + setState(284); + option_flags(); + setState(285); + match(Colon); + setState(286); + alternation(); + setState(287); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CommentContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode Hash() { return getToken(PCREParser.Hash, 0); } + public Non_close_parensContext non_close_parens() { + return getRuleContext(Non_close_parensContext.class,0); + } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public CommentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterComment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitComment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitComment(this); + else return visitor.visitChildren(this); + } + } + + public final CommentContext comment() throws RecognitionException { + CommentContext _localctx = new CommentContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_comment); + try { + enterOuterAlt(_localctx, 1); + { + setState(291); + match(OpenParen); + setState(292); + match(QuestionMark); + setState(293); + match(Hash); + setState(294); + non_close_parens(); + setState(295); + match(CloseParen); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OptionContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public List option_flags() { + return getRuleContexts(Option_flagsContext.class); + } + public Option_flagsContext option_flags(int i) { + return getRuleContext(Option_flagsContext.class,i); + } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public TerminalNode Star() { return getToken(PCREParser.Star, 0); } + public TerminalNode NUC() { return getToken(PCREParser.NUC, 0); } + public List OUC() { return getTokens(PCREParser.OUC); } + public TerminalNode OUC(int i) { + return getToken(PCREParser.OUC, i); + } + public List Underscore() { return getTokens(PCREParser.Underscore); } + public TerminalNode Underscore(int i) { + return getToken(PCREParser.Underscore, i); + } + public TerminalNode SUC() { return getToken(PCREParser.SUC, 0); } + public List TUC() { return getTokens(PCREParser.TUC); } + public TerminalNode TUC(int i) { + return getToken(PCREParser.TUC, i); + } + public TerminalNode AUC() { return getToken(PCREParser.AUC, 0); } + public TerminalNode RUC() { return getToken(PCREParser.RUC, 0); } + public TerminalNode PUC() { return getToken(PCREParser.PUC, 0); } + public TerminalNode UUC() { return getToken(PCREParser.UUC, 0); } + public TerminalNode FUC() { return getToken(PCREParser.FUC, 0); } + public TerminalNode D8() { return getToken(PCREParser.D8, 0); } + public TerminalNode D1() { return getToken(PCREParser.D1, 0); } + public TerminalNode D6() { return getToken(PCREParser.D6, 0); } + public TerminalNode CUC() { return getToken(PCREParser.CUC, 0); } + public OptionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_option; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterOption(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitOption(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitOption(this); + else return visitor.visitChildren(this); + } + } + + public final OptionContext option() throws RecognitionException { + OptionContext _localctx = new OptionContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_option); + try { + setState(351); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(297); + match(OpenParen); + setState(298); + match(QuestionMark); + setState(299); + option_flags(); + setState(300); + match(Hyphen); + setState(301); + option_flags(); + setState(302); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(304); + match(OpenParen); + setState(305); + match(QuestionMark); + setState(306); + option_flags(); + setState(307); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(309); + match(OpenParen); + setState(310); + match(QuestionMark); + setState(311); + match(Hyphen); + setState(312); + option_flags(); + setState(313); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(315); + match(OpenParen); + setState(316); + match(Star); + setState(317); + match(NUC); + setState(318); + match(OUC); + setState(319); + match(Underscore); + setState(320); + match(SUC); + setState(321); + match(TUC); + setState(322); + match(AUC); + setState(323); + match(RUC); + setState(324); + match(TUC); + setState(325); + match(Underscore); + setState(326); + match(OUC); + setState(327); + match(PUC); + setState(328); + match(TUC); + setState(329); + match(CloseParen); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(330); + match(OpenParen); + setState(331); + match(Star); + setState(332); + match(UUC); + setState(333); + match(TUC); + setState(334); + match(FUC); + setState(335); + match(D8); + setState(336); + match(CloseParen); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(337); + match(OpenParen); + setState(338); + match(Star); + setState(339); + match(UUC); + setState(340); + match(TUC); + setState(341); + match(FUC); + setState(342); + match(D1); + setState(343); + match(D6); + setState(344); + match(CloseParen); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(345); + match(OpenParen); + setState(346); + match(Star); + setState(347); + match(UUC); + setState(348); + match(CUC); + setState(349); + match(PUC); + setState(350); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Option_flagsContext extends ParserRuleContext { + public List option_flag() { + return getRuleContexts(Option_flagContext.class); + } + public Option_flagContext option_flag(int i) { + return getRuleContext(Option_flagContext.class,i); + } + public Option_flagsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_option_flags; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterOption_flags(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitOption_flags(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitOption_flags(this); + else return visitor.visitChildren(this); + } + } + + public final Option_flagsContext option_flags() throws RecognitionException { + Option_flagsContext _localctx = new Option_flagsContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_option_flags); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(354); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(353); + option_flag(); + } + } + setState(356); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (ILC - 71)) | (1L << (MLC - 71)) | (1L << (SLC - 71)) | (1L << (XLC - 71)) | (1L << (JUC - 71)) | (1L << (UUC - 71)))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Option_flagContext extends ParserRuleContext { + public TerminalNode ILC() { return getToken(PCREParser.ILC, 0); } + public TerminalNode JUC() { return getToken(PCREParser.JUC, 0); } + public TerminalNode MLC() { return getToken(PCREParser.MLC, 0); } + public TerminalNode SLC() { return getToken(PCREParser.SLC, 0); } + public TerminalNode UUC() { return getToken(PCREParser.UUC, 0); } + public TerminalNode XLC() { return getToken(PCREParser.XLC, 0); } + public Option_flagContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_option_flag; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterOption_flag(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitOption_flag(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitOption_flag(this); + else return visitor.visitChildren(this); + } + } + + public final Option_flagContext option_flag() throws RecognitionException { + Option_flagContext _localctx = new Option_flagContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_option_flag); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(358); + _la = _input.LA(1); + if ( !(((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (ILC - 71)) | (1L << (MLC - 71)) | (1L << (SLC - 71)) | (1L << (XLC - 71)) | (1L << (JUC - 71)) | (1L << (UUC - 71)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Look_aroundContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode Equals() { return getToken(PCREParser.Equals, 0); } + public AlternationContext alternation() { + return getRuleContext(AlternationContext.class,0); + } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public TerminalNode Exclamation() { return getToken(PCREParser.Exclamation, 0); } + public TerminalNode LessThan() { return getToken(PCREParser.LessThan, 0); } + public Look_aroundContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_look_around; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterLook_around(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitLook_around(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitLook_around(this); + else return visitor.visitChildren(this); + } + } + + public final Look_aroundContext look_around() throws RecognitionException { + Look_aroundContext _localctx = new Look_aroundContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_look_around); + try { + setState(386); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(360); + match(OpenParen); + setState(361); + match(QuestionMark); + setState(362); + match(Equals); + setState(363); + alternation(); + setState(364); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(366); + match(OpenParen); + setState(367); + match(QuestionMark); + setState(368); + match(Exclamation); + setState(369); + alternation(); + setState(370); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(372); + match(OpenParen); + setState(373); + match(QuestionMark); + setState(374); + match(LessThan); + setState(375); + match(Equals); + setState(376); + alternation(); + setState(377); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(379); + match(OpenParen); + setState(380); + match(QuestionMark); + setState(381); + match(LessThan); + setState(382); + match(Exclamation); + setState(383); + alternation(); + setState(384); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Subroutine_referenceContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode RUC() { return getToken(PCREParser.RUC, 0); } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public TerminalNode Plus() { return getToken(PCREParser.Plus, 0); } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public TerminalNode Ampersand() { return getToken(PCREParser.Ampersand, 0); } + public NameContext name() { + return getRuleContext(NameContext.class,0); + } + public TerminalNode PUC() { return getToken(PCREParser.PUC, 0); } + public TerminalNode GreaterThan() { return getToken(PCREParser.GreaterThan, 0); } + public TerminalNode SubroutineOrNamedReferenceStartG() { return getToken(PCREParser.SubroutineOrNamedReferenceStartG, 0); } + public TerminalNode LessThan() { return getToken(PCREParser.LessThan, 0); } + public List SingleQuote() { return getTokens(PCREParser.SingleQuote); } + public TerminalNode SingleQuote(int i) { + return getToken(PCREParser.SingleQuote, i); + } + public Subroutine_referenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_subroutine_reference; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterSubroutine_reference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitSubroutine_reference(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitSubroutine_reference(this); + else return visitor.visitChildren(this); + } + } + + public final Subroutine_referenceContext subroutine_reference() throws RecognitionException { + Subroutine_referenceContext _localctx = new Subroutine_referenceContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_subroutine_reference); + try { + setState(466); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(388); + match(OpenParen); + setState(389); + match(QuestionMark); + setState(390); + match(RUC); + setState(391); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(392); + match(OpenParen); + setState(393); + match(QuestionMark); + setState(394); + number(); + setState(395); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(397); + match(OpenParen); + setState(398); + match(QuestionMark); + setState(399); + match(Plus); + setState(400); + number(); + setState(401); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(403); + match(OpenParen); + setState(404); + match(QuestionMark); + setState(405); + match(Hyphen); + setState(406); + number(); + setState(407); + match(CloseParen); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(409); + match(OpenParen); + setState(410); + match(QuestionMark); + setState(411); + match(Ampersand); + setState(412); + name(); + setState(413); + match(CloseParen); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(415); + match(OpenParen); + setState(416); + match(QuestionMark); + setState(417); + match(PUC); + setState(418); + match(GreaterThan); + setState(419); + name(); + setState(420); + match(CloseParen); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(422); + match(SubroutineOrNamedReferenceStartG); + setState(423); + match(LessThan); + setState(424); + name(); + setState(425); + match(GreaterThan); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(427); + match(SubroutineOrNamedReferenceStartG); + setState(428); + match(SingleQuote); + setState(429); + name(); + setState(430); + match(SingleQuote); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(432); + match(SubroutineOrNamedReferenceStartG); + setState(433); + match(LessThan); + setState(434); + number(); + setState(435); + match(GreaterThan); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(437); + match(SubroutineOrNamedReferenceStartG); + setState(438); + match(SingleQuote); + setState(439); + number(); + setState(440); + match(SingleQuote); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(442); + match(SubroutineOrNamedReferenceStartG); + setState(443); + match(LessThan); + setState(444); + match(Plus); + setState(445); + number(); + setState(446); + match(GreaterThan); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(448); + match(SubroutineOrNamedReferenceStartG); + setState(449); + match(SingleQuote); + setState(450); + match(Plus); + setState(451); + number(); + setState(452); + match(SingleQuote); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(454); + match(SubroutineOrNamedReferenceStartG); + setState(455); + match(LessThan); + setState(456); + match(Hyphen); + setState(457); + number(); + setState(458); + match(GreaterThan); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(460); + match(SubroutineOrNamedReferenceStartG); + setState(461); + match(SingleQuote); + setState(462); + match(Hyphen); + setState(463); + number(); + setState(464); + match(SingleQuote); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConditionalContext extends ParserRuleContext { + public List OpenParen() { return getTokens(PCREParser.OpenParen); } + public TerminalNode OpenParen(int i) { + return getToken(PCREParser.OpenParen, i); + } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public List CloseParen() { return getTokens(PCREParser.CloseParen); } + public TerminalNode CloseParen(int i) { + return getToken(PCREParser.CloseParen, i); + } + public List alternation() { + return getRuleContexts(AlternationContext.class); + } + public AlternationContext alternation(int i) { + return getRuleContext(AlternationContext.class,i); + } + public TerminalNode Pipe() { return getToken(PCREParser.Pipe, 0); } + public TerminalNode Plus() { return getToken(PCREParser.Plus, 0); } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public TerminalNode LessThan() { return getToken(PCREParser.LessThan, 0); } + public NameContext name() { + return getRuleContext(NameContext.class,0); + } + public TerminalNode GreaterThan() { return getToken(PCREParser.GreaterThan, 0); } + public List SingleQuote() { return getTokens(PCREParser.SingleQuote); } + public TerminalNode SingleQuote(int i) { + return getToken(PCREParser.SingleQuote, i); + } + public TerminalNode RUC() { return getToken(PCREParser.RUC, 0); } + public TerminalNode Ampersand() { return getToken(PCREParser.Ampersand, 0); } + public TerminalNode DUC() { return getToken(PCREParser.DUC, 0); } + public List EUC() { return getTokens(PCREParser.EUC); } + public TerminalNode EUC(int i) { + return getToken(PCREParser.EUC, i); + } + public TerminalNode FUC() { return getToken(PCREParser.FUC, 0); } + public TerminalNode IUC() { return getToken(PCREParser.IUC, 0); } + public TerminalNode NUC() { return getToken(PCREParser.NUC, 0); } + public TerminalNode ALC() { return getToken(PCREParser.ALC, 0); } + public List SLC() { return getTokens(PCREParser.SLC); } + public TerminalNode SLC(int i) { + return getToken(PCREParser.SLC, i); + } + public TerminalNode ELC() { return getToken(PCREParser.ELC, 0); } + public TerminalNode RLC() { return getToken(PCREParser.RLC, 0); } + public TerminalNode TLC() { return getToken(PCREParser.TLC, 0); } + public ConditionalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditional; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterConditional(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitConditional(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitConditional(this); + else return visitor.visitChildren(this); + } + } + + public final ConditionalContext conditional() throws RecognitionException { + ConditionalContext _localctx = new ConditionalContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_conditional); + int _la; + try { + setState(619); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(468); + match(OpenParen); + setState(469); + match(QuestionMark); + setState(470); + match(OpenParen); + setState(471); + number(); + setState(472); + match(CloseParen); + setState(473); + alternation(); + setState(476); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(474); + match(Pipe); + setState(475); + alternation(); + } + } + + setState(478); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(480); + match(OpenParen); + setState(481); + match(QuestionMark); + setState(482); + match(OpenParen); + setState(483); + match(Plus); + setState(484); + number(); + setState(485); + match(CloseParen); + setState(486); + alternation(); + setState(489); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(487); + match(Pipe); + setState(488); + alternation(); + } + } + + setState(491); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(493); + match(OpenParen); + setState(494); + match(QuestionMark); + setState(495); + match(OpenParen); + setState(496); + match(Hyphen); + setState(497); + number(); + setState(498); + match(CloseParen); + setState(499); + alternation(); + setState(502); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(500); + match(Pipe); + setState(501); + alternation(); + } + } + + setState(504); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(506); + match(OpenParen); + setState(507); + match(QuestionMark); + setState(508); + match(OpenParen); + setState(509); + match(LessThan); + setState(510); + name(); + setState(511); + match(GreaterThan); + setState(512); + match(CloseParen); + setState(513); + alternation(); + setState(516); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(514); + match(Pipe); + setState(515); + alternation(); + } + } + + setState(518); + match(CloseParen); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(520); + match(OpenParen); + setState(521); + match(QuestionMark); + setState(522); + match(OpenParen); + setState(523); + match(SingleQuote); + setState(524); + name(); + setState(525); + match(SingleQuote); + setState(526); + match(CloseParen); + setState(527); + alternation(); + setState(530); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(528); + match(Pipe); + setState(529); + alternation(); + } + } + + setState(532); + match(CloseParen); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(534); + match(OpenParen); + setState(535); + match(QuestionMark); + setState(536); + match(OpenParen); + setState(537); + match(RUC); + setState(538); + number(); + setState(539); + match(CloseParen); + setState(540); + alternation(); + setState(543); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(541); + match(Pipe); + setState(542); + alternation(); + } + } + + setState(545); + match(CloseParen); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(547); + match(OpenParen); + setState(548); + match(QuestionMark); + setState(549); + match(OpenParen); + setState(550); + match(RUC); + setState(551); + match(CloseParen); + setState(552); + alternation(); + setState(555); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(553); + match(Pipe); + setState(554); + alternation(); + } + } + + setState(557); + match(CloseParen); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(559); + match(OpenParen); + setState(560); + match(QuestionMark); + setState(561); + match(OpenParen); + setState(562); + match(RUC); + setState(563); + match(Ampersand); + setState(564); + name(); + setState(565); + match(CloseParen); + setState(566); + alternation(); + setState(569); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(567); + match(Pipe); + setState(568); + alternation(); + } + } + + setState(571); + match(CloseParen); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(573); + match(OpenParen); + setState(574); + match(QuestionMark); + setState(575); + match(OpenParen); + setState(576); + match(DUC); + setState(577); + match(EUC); + setState(578); + match(FUC); + setState(579); + match(IUC); + setState(580); + match(NUC); + setState(581); + match(EUC); + setState(582); + match(CloseParen); + setState(583); + alternation(); + setState(586); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(584); + match(Pipe); + setState(585); + alternation(); + } + } + + setState(588); + match(CloseParen); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(590); + match(OpenParen); + setState(591); + match(QuestionMark); + setState(592); + match(OpenParen); + setState(593); + match(ALC); + setState(594); + match(SLC); + setState(595); + match(SLC); + setState(596); + match(ELC); + setState(597); + match(RLC); + setState(598); + match(TLC); + setState(599); + match(CloseParen); + setState(600); + alternation(); + setState(603); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(601); + match(Pipe); + setState(602); + alternation(); + } + } + + setState(605); + match(CloseParen); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(607); + match(OpenParen); + setState(608); + match(QuestionMark); + setState(609); + match(OpenParen); + setState(610); + name(); + setState(611); + match(CloseParen); + setState(612); + alternation(); + setState(615); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==Pipe) { + { + setState(613); + match(Pipe); + setState(614); + alternation(); + } + } + + setState(617); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Backtrack_controlContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode Star() { return getToken(PCREParser.Star, 0); } + public List AUC() { return getTokens(PCREParser.AUC); } + public TerminalNode AUC(int i) { + return getToken(PCREParser.AUC, i); + } + public List CUC() { return getTokens(PCREParser.CUC); } + public TerminalNode CUC(int i) { + return getToken(PCREParser.CUC, i); + } + public List EUC() { return getTokens(PCREParser.EUC); } + public TerminalNode EUC(int i) { + return getToken(PCREParser.EUC, i); + } + public TerminalNode PUC() { return getToken(PCREParser.PUC, 0); } + public TerminalNode TUC() { return getToken(PCREParser.TUC, 0); } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public TerminalNode FUC() { return getToken(PCREParser.FUC, 0); } + public TerminalNode IUC() { return getToken(PCREParser.IUC, 0); } + public TerminalNode LUC() { return getToken(PCREParser.LUC, 0); } + public TerminalNode Colon() { return getToken(PCREParser.Colon, 0); } + public List NUC() { return getTokens(PCREParser.NUC); } + public TerminalNode NUC(int i) { + return getToken(PCREParser.NUC, i); + } + public List MUC() { return getTokens(PCREParser.MUC); } + public TerminalNode MUC(int i) { + return getToken(PCREParser.MUC, i); + } + public TerminalNode RUC() { return getToken(PCREParser.RUC, 0); } + public TerminalNode KUC() { return getToken(PCREParser.KUC, 0); } + public TerminalNode OUC() { return getToken(PCREParser.OUC, 0); } + public TerminalNode UUC() { return getToken(PCREParser.UUC, 0); } + public TerminalNode SUC() { return getToken(PCREParser.SUC, 0); } + public TerminalNode HUC() { return getToken(PCREParser.HUC, 0); } + public Backtrack_controlContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_backtrack_control; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterBacktrack_control(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitBacktrack_control(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitBacktrack_control(this); + else return visitor.visitChildren(this); + } + } + + public final Backtrack_controlContext backtrack_control() throws RecognitionException { + Backtrack_controlContext _localctx = new Backtrack_controlContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_backtrack_control); + int _la; + try { + setState(721); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(621); + match(OpenParen); + setState(622); + match(Star); + setState(623); + match(AUC); + setState(624); + match(CUC); + setState(625); + match(CUC); + setState(626); + match(EUC); + setState(627); + match(PUC); + setState(628); + match(TUC); + setState(629); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(630); + match(OpenParen); + setState(631); + match(Star); + setState(632); + match(FUC); + setState(636); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AUC) { + { + setState(633); + match(AUC); + setState(634); + match(IUC); + setState(635); + match(LUC); + } + } + + setState(638); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(639); + match(OpenParen); + setState(640); + match(Star); + setState(645); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MUC) { + { + setState(641); + match(MUC); + setState(642); + match(AUC); + setState(643); + match(RUC); + setState(644); + match(KUC); + } + } + + setState(647); + match(Colon); + setState(648); + match(NUC); + setState(649); + match(AUC); + setState(650); + match(MUC); + setState(651); + match(EUC); + setState(652); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(653); + match(OpenParen); + setState(654); + match(Star); + setState(655); + match(CUC); + setState(656); + match(OUC); + setState(657); + match(MUC); + setState(658); + match(MUC); + setState(659); + match(IUC); + setState(660); + match(TUC); + setState(661); + match(CloseParen); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(662); + match(OpenParen); + setState(663); + match(Star); + setState(664); + match(PUC); + setState(665); + match(RUC); + setState(666); + match(UUC); + setState(667); + match(NUC); + setState(668); + match(EUC); + setState(669); + match(CloseParen); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(670); + match(OpenParen); + setState(671); + match(Star); + setState(672); + match(PUC); + setState(673); + match(RUC); + setState(674); + match(UUC); + setState(675); + match(NUC); + setState(676); + match(EUC); + setState(677); + match(Colon); + setState(678); + match(NUC); + setState(679); + match(AUC); + setState(680); + match(MUC); + setState(681); + match(EUC); + setState(682); + match(CloseParen); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(683); + match(OpenParen); + setState(684); + match(Star); + setState(685); + match(SUC); + setState(686); + match(KUC); + setState(687); + match(IUC); + setState(688); + match(PUC); + setState(689); + match(CloseParen); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(690); + match(OpenParen); + setState(691); + match(Star); + setState(692); + match(SUC); + setState(693); + match(KUC); + setState(694); + match(IUC); + setState(695); + match(PUC); + setState(696); + match(Colon); + setState(697); + match(NUC); + setState(698); + match(AUC); + setState(699); + match(MUC); + setState(700); + match(EUC); + setState(701); + match(CloseParen); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(702); + match(OpenParen); + setState(703); + match(Star); + setState(704); + match(TUC); + setState(705); + match(HUC); + setState(706); + match(EUC); + setState(707); + match(NUC); + setState(708); + match(CloseParen); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(709); + match(OpenParen); + setState(710); + match(Star); + setState(711); + match(TUC); + setState(712); + match(HUC); + setState(713); + match(EUC); + setState(714); + match(NUC); + setState(715); + match(Colon); + setState(716); + match(NUC); + setState(717); + match(AUC); + setState(718); + match(MUC); + setState(719); + match(EUC); + setState(720); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Newline_conventionContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode Star() { return getToken(PCREParser.Star, 0); } + public TerminalNode CUC() { return getToken(PCREParser.CUC, 0); } + public List RUC() { return getTokens(PCREParser.RUC); } + public TerminalNode RUC(int i) { + return getToken(PCREParser.RUC, i); + } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public TerminalNode LUC() { return getToken(PCREParser.LUC, 0); } + public TerminalNode FUC() { return getToken(PCREParser.FUC, 0); } + public TerminalNode AUC() { return getToken(PCREParser.AUC, 0); } + public TerminalNode NUC() { return getToken(PCREParser.NUC, 0); } + public TerminalNode YUC() { return getToken(PCREParser.YUC, 0); } + public TerminalNode BUC() { return getToken(PCREParser.BUC, 0); } + public TerminalNode SUC() { return getToken(PCREParser.SUC, 0); } + public TerminalNode Underscore() { return getToken(PCREParser.Underscore, 0); } + public TerminalNode UUC() { return getToken(PCREParser.UUC, 0); } + public TerminalNode IUC() { return getToken(PCREParser.IUC, 0); } + public TerminalNode OUC() { return getToken(PCREParser.OUC, 0); } + public TerminalNode DUC() { return getToken(PCREParser.DUC, 0); } + public TerminalNode EUC() { return getToken(PCREParser.EUC, 0); } + public Newline_conventionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_newline_convention; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterNewline_convention(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitNewline_convention(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitNewline_convention(this); + else return visitor.visitChildren(this); + } + } + + public final Newline_conventionContext newline_convention() throws RecognitionException { + Newline_conventionContext _localctx = new Newline_conventionContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_newline_convention); + try { + setState(784); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(723); + match(OpenParen); + setState(724); + match(Star); + setState(725); + match(CUC); + setState(726); + match(RUC); + setState(727); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(728); + match(OpenParen); + setState(729); + match(Star); + setState(730); + match(LUC); + setState(731); + match(FUC); + setState(732); + match(CloseParen); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(733); + match(OpenParen); + setState(734); + match(Star); + setState(735); + match(CUC); + setState(736); + match(RUC); + setState(737); + match(LUC); + setState(738); + match(FUC); + setState(739); + match(CloseParen); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(740); + match(OpenParen); + setState(741); + match(Star); + setState(742); + match(AUC); + setState(743); + match(NUC); + setState(744); + match(YUC); + setState(745); + match(CUC); + setState(746); + match(RUC); + setState(747); + match(LUC); + setState(748); + match(FUC); + setState(749); + match(CloseParen); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(750); + match(OpenParen); + setState(751); + match(Star); + setState(752); + match(AUC); + setState(753); + match(NUC); + setState(754); + match(YUC); + setState(755); + match(CloseParen); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(756); + match(OpenParen); + setState(757); + match(Star); + setState(758); + match(BUC); + setState(759); + match(SUC); + setState(760); + match(RUC); + setState(761); + match(Underscore); + setState(762); + match(AUC); + setState(763); + match(NUC); + setState(764); + match(YUC); + setState(765); + match(CUC); + setState(766); + match(RUC); + setState(767); + match(LUC); + setState(768); + match(FUC); + setState(769); + match(CloseParen); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(770); + match(OpenParen); + setState(771); + match(Star); + setState(772); + match(BUC); + setState(773); + match(SUC); + setState(774); + match(RUC); + setState(775); + match(Underscore); + setState(776); + match(UUC); + setState(777); + match(NUC); + setState(778); + match(IUC); + setState(779); + match(CUC); + setState(780); + match(OUC); + setState(781); + match(DUC); + setState(782); + match(EUC); + setState(783); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CalloutContext extends ParserRuleContext { + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode CUC() { return getToken(PCREParser.CUC, 0); } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public CalloutContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_callout; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterCallout(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitCallout(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitCallout(this); + else return visitor.visitChildren(this); + } + } + + public final CalloutContext callout() throws RecognitionException { + CalloutContext _localctx = new CalloutContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_callout); + try { + setState(796); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(786); + match(OpenParen); + setState(787); + match(QuestionMark); + setState(788); + match(CUC); + setState(789); + match(CloseParen); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(790); + match(OpenParen); + setState(791); + match(QuestionMark); + setState(792); + match(CUC); + setState(793); + number(); + setState(794); + match(CloseParen); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AtomContext extends ParserRuleContext { + public Subroutine_referenceContext subroutine_reference() { + return getRuleContext(Subroutine_referenceContext.class,0); + } + public Shared_atomContext shared_atom() { + return getRuleContext(Shared_atomContext.class,0); + } + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public Character_classContext character_class() { + return getRuleContext(Character_classContext.class,0); + } + public CaptureContext capture() { + return getRuleContext(CaptureContext.class,0); + } + public Non_captureContext non_capture() { + return getRuleContext(Non_captureContext.class,0); + } + public CommentContext comment() { + return getRuleContext(CommentContext.class,0); + } + public OptionContext option() { + return getRuleContext(OptionContext.class,0); + } + public Look_aroundContext look_around() { + return getRuleContext(Look_aroundContext.class,0); + } + public BackreferenceContext backreference() { + return getRuleContext(BackreferenceContext.class,0); + } + public ConditionalContext conditional() { + return getRuleContext(ConditionalContext.class,0); + } + public Backtrack_controlContext backtrack_control() { + return getRuleContext(Backtrack_controlContext.class,0); + } + public Newline_conventionContext newline_convention() { + return getRuleContext(Newline_conventionContext.class,0); + } + public CalloutContext callout() { + return getRuleContext(CalloutContext.class,0); + } + public TerminalNode Dot() { return getToken(PCREParser.Dot, 0); } + public TerminalNode Caret() { return getToken(PCREParser.Caret, 0); } + public TerminalNode StartOfSubject() { return getToken(PCREParser.StartOfSubject, 0); } + public TerminalNode WordBoundary() { return getToken(PCREParser.WordBoundary, 0); } + public TerminalNode NonWordBoundary() { return getToken(PCREParser.NonWordBoundary, 0); } + public TerminalNode EndOfSubjectOrLine() { return getToken(PCREParser.EndOfSubjectOrLine, 0); } + public TerminalNode EndOfSubjectOrLineEndOfSubject() { return getToken(PCREParser.EndOfSubjectOrLineEndOfSubject, 0); } + public TerminalNode EndOfSubject() { return getToken(PCREParser.EndOfSubject, 0); } + public TerminalNode PreviousMatchInSubject() { return getToken(PCREParser.PreviousMatchInSubject, 0); } + public TerminalNode ResetStartMatch() { return getToken(PCREParser.ResetStartMatch, 0); } + public TerminalNode OneDataUnit() { return getToken(PCREParser.OneDataUnit, 0); } + public TerminalNode ExtendedUnicodeChar() { return getToken(PCREParser.ExtendedUnicodeChar, 0); } + public AtomContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_atom; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterAtom(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitAtom(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitAtom(this); + else return visitor.visitChildren(this); + } + } + + public final AtomContext atom() throws RecognitionException { + AtomContext _localctx = new AtomContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_atom); + try { + setState(824); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(798); + subroutine_reference(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(799); + shared_atom(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(800); + literal(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(801); + character_class(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(802); + capture(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(803); + non_capture(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(804); + comment(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(805); + option(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(806); + look_around(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(807); + backreference(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(808); + conditional(); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(809); + backtrack_control(); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(810); + newline_convention(); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(811); + callout(); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(812); + match(Dot); + } + break; + case 16: + enterOuterAlt(_localctx, 16); + { + setState(813); + match(Caret); + } + break; + case 17: + enterOuterAlt(_localctx, 17); + { + setState(814); + match(StartOfSubject); + } + break; + case 18: + enterOuterAlt(_localctx, 18); + { + setState(815); + match(WordBoundary); + } + break; + case 19: + enterOuterAlt(_localctx, 19); + { + setState(816); + match(NonWordBoundary); + } + break; + case 20: + enterOuterAlt(_localctx, 20); + { + setState(817); + match(EndOfSubjectOrLine); + } + break; + case 21: + enterOuterAlt(_localctx, 21); + { + setState(818); + match(EndOfSubjectOrLineEndOfSubject); + } + break; + case 22: + enterOuterAlt(_localctx, 22); + { + setState(819); + match(EndOfSubject); + } + break; + case 23: + enterOuterAlt(_localctx, 23); + { + setState(820); + match(PreviousMatchInSubject); + } + break; + case 24: + enterOuterAlt(_localctx, 24); + { + setState(821); + match(ResetStartMatch); + } + break; + case 25: + enterOuterAlt(_localctx, 25); + { + setState(822); + match(OneDataUnit); + } + break; + case 26: + enterOuterAlt(_localctx, 26); + { + setState(823); + match(ExtendedUnicodeChar); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Cc_atomContext extends ParserRuleContext { + public List cc_literal() { + return getRuleContexts(Cc_literalContext.class); + } + public Cc_literalContext cc_literal(int i) { + return getRuleContext(Cc_literalContext.class,i); + } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public Shared_atomContext shared_atom() { + return getRuleContext(Shared_atomContext.class,0); + } + public Backreference_or_octalContext backreference_or_octal() { + return getRuleContext(Backreference_or_octalContext.class,0); + } + public Cc_atomContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_cc_atom; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterCc_atom(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitCc_atom(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitCc_atom(this); + else return visitor.visitChildren(this); + } + } + + public final Cc_atomContext cc_atom() throws RecognitionException { + Cc_atomContext _localctx = new Cc_atomContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_cc_atom); + try { + setState(833); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(826); + cc_literal(); + setState(827); + match(Hyphen); + setState(828); + cc_literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(830); + shared_atom(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(831); + cc_literal(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(832); + backreference_or_octal(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Shared_atomContext extends ParserRuleContext { + public TerminalNode POSIXNamedSet() { return getToken(PCREParser.POSIXNamedSet, 0); } + public TerminalNode POSIXNegatedNamedSet() { return getToken(PCREParser.POSIXNegatedNamedSet, 0); } + public TerminalNode ControlChar() { return getToken(PCREParser.ControlChar, 0); } + public TerminalNode DecimalDigit() { return getToken(PCREParser.DecimalDigit, 0); } + public TerminalNode NotDecimalDigit() { return getToken(PCREParser.NotDecimalDigit, 0); } + public TerminalNode HorizontalWhiteSpace() { return getToken(PCREParser.HorizontalWhiteSpace, 0); } + public TerminalNode NotHorizontalWhiteSpace() { return getToken(PCREParser.NotHorizontalWhiteSpace, 0); } + public TerminalNode NotNewLine() { return getToken(PCREParser.NotNewLine, 0); } + public TerminalNode CharWithProperty() { return getToken(PCREParser.CharWithProperty, 0); } + public TerminalNode CharWithoutProperty() { return getToken(PCREParser.CharWithoutProperty, 0); } + public TerminalNode NewLineSequence() { return getToken(PCREParser.NewLineSequence, 0); } + public TerminalNode WhiteSpace() { return getToken(PCREParser.WhiteSpace, 0); } + public TerminalNode NotWhiteSpace() { return getToken(PCREParser.NotWhiteSpace, 0); } + public TerminalNode VerticalWhiteSpace() { return getToken(PCREParser.VerticalWhiteSpace, 0); } + public TerminalNode NotVerticalWhiteSpace() { return getToken(PCREParser.NotVerticalWhiteSpace, 0); } + public TerminalNode WordChar() { return getToken(PCREParser.WordChar, 0); } + public TerminalNode NotWordChar() { return getToken(PCREParser.NotWordChar, 0); } + public TerminalNode Backslash() { return getToken(PCREParser.Backslash, 0); } + public Shared_atomContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_shared_atom; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterShared_atom(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitShared_atom(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitShared_atom(this); + else return visitor.visitChildren(this); + } + } + + public final Shared_atomContext shared_atom() throws RecognitionException { + Shared_atomContext _localctx = new Shared_atomContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_shared_atom); + try { + setState(854); + _errHandler.sync(this); + switch (_input.LA(1)) { + case POSIXNamedSet: + enterOuterAlt(_localctx, 1); + { + setState(835); + match(POSIXNamedSet); + } + break; + case POSIXNegatedNamedSet: + enterOuterAlt(_localctx, 2); + { + setState(836); + match(POSIXNegatedNamedSet); + } + break; + case ControlChar: + enterOuterAlt(_localctx, 3); + { + setState(837); + match(ControlChar); + } + break; + case DecimalDigit: + enterOuterAlt(_localctx, 4); + { + setState(838); + match(DecimalDigit); + } + break; + case NotDecimalDigit: + enterOuterAlt(_localctx, 5); + { + setState(839); + match(NotDecimalDigit); + } + break; + case HorizontalWhiteSpace: + enterOuterAlt(_localctx, 6); + { + setState(840); + match(HorizontalWhiteSpace); + } + break; + case NotHorizontalWhiteSpace: + enterOuterAlt(_localctx, 7); + { + setState(841); + match(NotHorizontalWhiteSpace); + } + break; + case NotNewLine: + enterOuterAlt(_localctx, 8); + { + setState(842); + match(NotNewLine); + } + break; + case CharWithProperty: + enterOuterAlt(_localctx, 9); + { + setState(843); + match(CharWithProperty); + } + break; + case CharWithoutProperty: + enterOuterAlt(_localctx, 10); + { + setState(844); + match(CharWithoutProperty); + } + break; + case NewLineSequence: + enterOuterAlt(_localctx, 11); + { + setState(845); + match(NewLineSequence); + } + break; + case WhiteSpace: + enterOuterAlt(_localctx, 12); + { + setState(846); + match(WhiteSpace); + } + break; + case NotWhiteSpace: + enterOuterAlt(_localctx, 13); + { + setState(847); + match(NotWhiteSpace); + } + break; + case VerticalWhiteSpace: + enterOuterAlt(_localctx, 14); + { + setState(848); + match(VerticalWhiteSpace); + } + break; + case NotVerticalWhiteSpace: + enterOuterAlt(_localctx, 15); + { + setState(849); + match(NotVerticalWhiteSpace); + } + break; + case WordChar: + enterOuterAlt(_localctx, 16); + { + setState(850); + match(WordChar); + } + break; + case NotWordChar: + enterOuterAlt(_localctx, 17); + { + setState(851); + match(NotWordChar); + } + break; + case Backslash: + enterOuterAlt(_localctx, 18); + { + setState(852); + match(Backslash); + setState(853); + matchWildcard(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LiteralContext extends ParserRuleContext { + public Shared_literalContext shared_literal() { + return getRuleContext(Shared_literalContext.class,0); + } + public TerminalNode CharacterClassEnd() { return getToken(PCREParser.CharacterClassEnd, 0); } + public LiteralContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitLiteral(this); + else return visitor.visitChildren(this); + } + } + + public final LiteralContext literal() throws RecognitionException { + LiteralContext _localctx = new LiteralContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_literal); + try { + setState(858); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Quoted: + case BlockQuoted: + case BellChar: + case EscapeChar: + case FormFeed: + case NewLine: + case CarriageReturn: + case Tab: + case Backslash: + case HexChar: + case Hyphen: + case OpenBrace: + case CloseBrace: + case Comma: + case LessThan: + case GreaterThan: + case SingleQuote: + case Underscore: + case Colon: + case Hash: + case Equals: + case Exclamation: + case Ampersand: + case ALC: + case BLC: + case CLC: + case DLC: + case ELC: + case FLC: + case GLC: + case HLC: + case ILC: + case JLC: + case KLC: + case LLC: + case MLC: + case NLC: + case OLC: + case PLC: + case QLC: + case RLC: + case SLC: + case TLC: + case ULC: + case VLC: + case WLC: + case XLC: + case YLC: + case ZLC: + case AUC: + case BUC: + case CUC: + case DUC: + case EUC: + case FUC: + case GUC: + case HUC: + case IUC: + case JUC: + case KUC: + case LUC: + case MUC: + case NUC: + case OUC: + case PUC: + case QUC: + case RUC: + case SUC: + case TUC: + case UUC: + case VUC: + case WUC: + case XUC: + case YUC: + case ZUC: + case D1: + case D2: + case D3: + case D4: + case D5: + case D6: + case D7: + case D8: + case D9: + case D0: + case OtherChar: + enterOuterAlt(_localctx, 1); + { + setState(856); + shared_literal(); + } + break; + case CharacterClassEnd: + enterOuterAlt(_localctx, 2); + { + setState(857); + match(CharacterClassEnd); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Cc_literalContext extends ParserRuleContext { + public Shared_literalContext shared_literal() { + return getRuleContext(Shared_literalContext.class,0); + } + public TerminalNode Dot() { return getToken(PCREParser.Dot, 0); } + public TerminalNode CharacterClassStart() { return getToken(PCREParser.CharacterClassStart, 0); } + public TerminalNode Caret() { return getToken(PCREParser.Caret, 0); } + public TerminalNode QuestionMark() { return getToken(PCREParser.QuestionMark, 0); } + public TerminalNode Plus() { return getToken(PCREParser.Plus, 0); } + public TerminalNode Star() { return getToken(PCREParser.Star, 0); } + public TerminalNode WordBoundary() { return getToken(PCREParser.WordBoundary, 0); } + public TerminalNode EndOfSubjectOrLine() { return getToken(PCREParser.EndOfSubjectOrLine, 0); } + public TerminalNode Pipe() { return getToken(PCREParser.Pipe, 0); } + public TerminalNode OpenParen() { return getToken(PCREParser.OpenParen, 0); } + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public Cc_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_cc_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterCc_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitCc_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitCc_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Cc_literalContext cc_literal() throws RecognitionException { + Cc_literalContext _localctx = new Cc_literalContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_cc_literal); + try { + setState(872); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Quoted: + case BlockQuoted: + case BellChar: + case EscapeChar: + case FormFeed: + case NewLine: + case CarriageReturn: + case Tab: + case Backslash: + case HexChar: + case Hyphen: + case OpenBrace: + case CloseBrace: + case Comma: + case LessThan: + case GreaterThan: + case SingleQuote: + case Underscore: + case Colon: + case Hash: + case Equals: + case Exclamation: + case Ampersand: + case ALC: + case BLC: + case CLC: + case DLC: + case ELC: + case FLC: + case GLC: + case HLC: + case ILC: + case JLC: + case KLC: + case LLC: + case MLC: + case NLC: + case OLC: + case PLC: + case QLC: + case RLC: + case SLC: + case TLC: + case ULC: + case VLC: + case WLC: + case XLC: + case YLC: + case ZLC: + case AUC: + case BUC: + case CUC: + case DUC: + case EUC: + case FUC: + case GUC: + case HUC: + case IUC: + case JUC: + case KUC: + case LUC: + case MUC: + case NUC: + case OUC: + case PUC: + case QUC: + case RUC: + case SUC: + case TUC: + case UUC: + case VUC: + case WUC: + case XUC: + case YUC: + case ZUC: + case D1: + case D2: + case D3: + case D4: + case D5: + case D6: + case D7: + case D8: + case D9: + case D0: + case OtherChar: + enterOuterAlt(_localctx, 1); + { + setState(860); + shared_literal(); + } + break; + case Dot: + enterOuterAlt(_localctx, 2); + { + setState(861); + match(Dot); + } + break; + case CharacterClassStart: + enterOuterAlt(_localctx, 3); + { + setState(862); + match(CharacterClassStart); + } + break; + case Caret: + enterOuterAlt(_localctx, 4); + { + setState(863); + match(Caret); + } + break; + case QuestionMark: + enterOuterAlt(_localctx, 5); + { + setState(864); + match(QuestionMark); + } + break; + case Plus: + enterOuterAlt(_localctx, 6); + { + setState(865); + match(Plus); + } + break; + case Star: + enterOuterAlt(_localctx, 7); + { + setState(866); + match(Star); + } + break; + case WordBoundary: + enterOuterAlt(_localctx, 8); + { + setState(867); + match(WordBoundary); + } + break; + case EndOfSubjectOrLine: + enterOuterAlt(_localctx, 9); + { + setState(868); + match(EndOfSubjectOrLine); + } + break; + case Pipe: + enterOuterAlt(_localctx, 10); + { + setState(869); + match(Pipe); + } + break; + case OpenParen: + enterOuterAlt(_localctx, 11); + { + setState(870); + match(OpenParen); + } + break; + case CloseParen: + enterOuterAlt(_localctx, 12); + { + setState(871); + match(CloseParen); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Shared_literalContext extends ParserRuleContext { + public Octal_charContext octal_char() { + return getRuleContext(Octal_charContext.class,0); + } + public LetterContext letter() { + return getRuleContext(LetterContext.class,0); + } + public DigitContext digit() { + return getRuleContext(DigitContext.class,0); + } + public TerminalNode BellChar() { return getToken(PCREParser.BellChar, 0); } + public TerminalNode EscapeChar() { return getToken(PCREParser.EscapeChar, 0); } + public TerminalNode FormFeed() { return getToken(PCREParser.FormFeed, 0); } + public TerminalNode NewLine() { return getToken(PCREParser.NewLine, 0); } + public TerminalNode CarriageReturn() { return getToken(PCREParser.CarriageReturn, 0); } + public TerminalNode Tab() { return getToken(PCREParser.Tab, 0); } + public TerminalNode HexChar() { return getToken(PCREParser.HexChar, 0); } + public TerminalNode Quoted() { return getToken(PCREParser.Quoted, 0); } + public TerminalNode BlockQuoted() { return getToken(PCREParser.BlockQuoted, 0); } + public TerminalNode OpenBrace() { return getToken(PCREParser.OpenBrace, 0); } + public TerminalNode CloseBrace() { return getToken(PCREParser.CloseBrace, 0); } + public TerminalNode Comma() { return getToken(PCREParser.Comma, 0); } + public TerminalNode Hyphen() { return getToken(PCREParser.Hyphen, 0); } + public TerminalNode LessThan() { return getToken(PCREParser.LessThan, 0); } + public TerminalNode GreaterThan() { return getToken(PCREParser.GreaterThan, 0); } + public TerminalNode SingleQuote() { return getToken(PCREParser.SingleQuote, 0); } + public TerminalNode Underscore() { return getToken(PCREParser.Underscore, 0); } + public TerminalNode Colon() { return getToken(PCREParser.Colon, 0); } + public TerminalNode Hash() { return getToken(PCREParser.Hash, 0); } + public TerminalNode Equals() { return getToken(PCREParser.Equals, 0); } + public TerminalNode Exclamation() { return getToken(PCREParser.Exclamation, 0); } + public TerminalNode Ampersand() { return getToken(PCREParser.Ampersand, 0); } + public TerminalNode OtherChar() { return getToken(PCREParser.OtherChar, 0); } + public Shared_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_shared_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterShared_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitShared_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitShared_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Shared_literalContext shared_literal() throws RecognitionException { + Shared_literalContext _localctx = new Shared_literalContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_shared_literal); + try { + setState(900); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Backslash: + enterOuterAlt(_localctx, 1); + { + setState(874); + octal_char(); + } + break; + case ALC: + case BLC: + case CLC: + case DLC: + case ELC: + case FLC: + case GLC: + case HLC: + case ILC: + case JLC: + case KLC: + case LLC: + case MLC: + case NLC: + case OLC: + case PLC: + case QLC: + case RLC: + case SLC: + case TLC: + case ULC: + case VLC: + case WLC: + case XLC: + case YLC: + case ZLC: + case AUC: + case BUC: + case CUC: + case DUC: + case EUC: + case FUC: + case GUC: + case HUC: + case IUC: + case JUC: + case KUC: + case LUC: + case MUC: + case NUC: + case OUC: + case PUC: + case QUC: + case RUC: + case SUC: + case TUC: + case UUC: + case VUC: + case WUC: + case XUC: + case YUC: + case ZUC: + enterOuterAlt(_localctx, 2); + { + setState(875); + letter(); + } + break; + case D1: + case D2: + case D3: + case D4: + case D5: + case D6: + case D7: + case D8: + case D9: + case D0: + enterOuterAlt(_localctx, 3); + { + setState(876); + digit(); + } + break; + case BellChar: + enterOuterAlt(_localctx, 4); + { + setState(877); + match(BellChar); + } + break; + case EscapeChar: + enterOuterAlt(_localctx, 5); + { + setState(878); + match(EscapeChar); + } + break; + case FormFeed: + enterOuterAlt(_localctx, 6); + { + setState(879); + match(FormFeed); + } + break; + case NewLine: + enterOuterAlt(_localctx, 7); + { + setState(880); + match(NewLine); + } + break; + case CarriageReturn: + enterOuterAlt(_localctx, 8); + { + setState(881); + match(CarriageReturn); + } + break; + case Tab: + enterOuterAlt(_localctx, 9); + { + setState(882); + match(Tab); + } + break; + case HexChar: + enterOuterAlt(_localctx, 10); + { + setState(883); + match(HexChar); + } + break; + case Quoted: + enterOuterAlt(_localctx, 11); + { + setState(884); + match(Quoted); + } + break; + case BlockQuoted: + enterOuterAlt(_localctx, 12); + { + setState(885); + match(BlockQuoted); + } + break; + case OpenBrace: + enterOuterAlt(_localctx, 13); + { + setState(886); + match(OpenBrace); + } + break; + case CloseBrace: + enterOuterAlt(_localctx, 14); + { + setState(887); + match(CloseBrace); + } + break; + case Comma: + enterOuterAlt(_localctx, 15); + { + setState(888); + match(Comma); + } + break; + case Hyphen: + enterOuterAlt(_localctx, 16); + { + setState(889); + match(Hyphen); + } + break; + case LessThan: + enterOuterAlt(_localctx, 17); + { + setState(890); + match(LessThan); + } + break; + case GreaterThan: + enterOuterAlt(_localctx, 18); + { + setState(891); + match(GreaterThan); + } + break; + case SingleQuote: + enterOuterAlt(_localctx, 19); + { + setState(892); + match(SingleQuote); + } + break; + case Underscore: + enterOuterAlt(_localctx, 20); + { + setState(893); + match(Underscore); + } + break; + case Colon: + enterOuterAlt(_localctx, 21); + { + setState(894); + match(Colon); + } + break; + case Hash: + enterOuterAlt(_localctx, 22); + { + setState(895); + match(Hash); + } + break; + case Equals: + enterOuterAlt(_localctx, 23); + { + setState(896); + match(Equals); + } + break; + case Exclamation: + enterOuterAlt(_localctx, 24); + { + setState(897); + match(Exclamation); + } + break; + case Ampersand: + enterOuterAlt(_localctx, 25); + { + setState(898); + match(Ampersand); + } + break; + case OtherChar: + enterOuterAlt(_localctx, 26); + { + setState(899); + match(OtherChar); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NumberContext extends ParserRuleContext { + public DigitsContext digits() { + return getRuleContext(DigitsContext.class,0); + } + public NumberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_number; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterNumber(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitNumber(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitNumber(this); + else return visitor.visitChildren(this); + } + } + + public final NumberContext number() throws RecognitionException { + NumberContext _localctx = new NumberContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_number); + try { + enterOuterAlt(_localctx, 1); + { + setState(902); + digits(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Octal_charContext extends ParserRuleContext { + public TerminalNode Backslash() { return getToken(PCREParser.Backslash, 0); } + public List octal_digit() { + return getRuleContexts(Octal_digitContext.class); + } + public Octal_digitContext octal_digit(int i) { + return getRuleContext(Octal_digitContext.class,i); + } + public TerminalNode D0() { return getToken(PCREParser.D0, 0); } + public TerminalNode D1() { return getToken(PCREParser.D1, 0); } + public TerminalNode D2() { return getToken(PCREParser.D2, 0); } + public TerminalNode D3() { return getToken(PCREParser.D3, 0); } + public Octal_charContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_octal_char; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterOctal_char(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitOctal_char(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitOctal_char(this); + else return visitor.visitChildren(this); + } + } + + public final Octal_charContext octal_char() throws RecognitionException { + Octal_charContext _localctx = new Octal_charContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_octal_char); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(913); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { + case 1: + { + setState(904); + match(Backslash); + setState(905); + _la = _input.LA(1); + if ( !(((((_la - 115)) & ~0x3f) == 0 && ((1L << (_la - 115)) & ((1L << (D1 - 115)) | (1L << (D2 - 115)) | (1L << (D3 - 115)) | (1L << (D0 - 115)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(906); + octal_digit(); + setState(907); + octal_digit(); + } + break; + case 2: + { + setState(909); + match(Backslash); + setState(910); + octal_digit(); + setState(911); + octal_digit(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Octal_digitContext extends ParserRuleContext { + public TerminalNode D0() { return getToken(PCREParser.D0, 0); } + public TerminalNode D1() { return getToken(PCREParser.D1, 0); } + public TerminalNode D2() { return getToken(PCREParser.D2, 0); } + public TerminalNode D3() { return getToken(PCREParser.D3, 0); } + public TerminalNode D4() { return getToken(PCREParser.D4, 0); } + public TerminalNode D5() { return getToken(PCREParser.D5, 0); } + public TerminalNode D6() { return getToken(PCREParser.D6, 0); } + public TerminalNode D7() { return getToken(PCREParser.D7, 0); } + public Octal_digitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_octal_digit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterOctal_digit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitOctal_digit(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitOctal_digit(this); + else return visitor.visitChildren(this); + } + } + + public final Octal_digitContext octal_digit() throws RecognitionException { + Octal_digitContext _localctx = new Octal_digitContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_octal_digit); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(915); + _la = _input.LA(1); + if ( !(((((_la - 115)) & ~0x3f) == 0 && ((1L << (_la - 115)) & ((1L << (D1 - 115)) | (1L << (D2 - 115)) | (1L << (D3 - 115)) | (1L << (D4 - 115)) | (1L << (D5 - 115)) | (1L << (D6 - 115)) | (1L << (D7 - 115)) | (1L << (D0 - 115)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DigitsContext extends ParserRuleContext { + public List digit() { + return getRuleContexts(DigitContext.class); + } + public DigitContext digit(int i) { + return getRuleContext(DigitContext.class,i); + } + public DigitsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_digits; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterDigits(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitDigits(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitDigits(this); + else return visitor.visitChildren(this); + } + } + + public final DigitsContext digits() throws RecognitionException { + DigitsContext _localctx = new DigitsContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_digits); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(918); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(917); + digit(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(920); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,44,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DigitContext extends ParserRuleContext { + public TerminalNode D0() { return getToken(PCREParser.D0, 0); } + public TerminalNode D1() { return getToken(PCREParser.D1, 0); } + public TerminalNode D2() { return getToken(PCREParser.D2, 0); } + public TerminalNode D3() { return getToken(PCREParser.D3, 0); } + public TerminalNode D4() { return getToken(PCREParser.D4, 0); } + public TerminalNode D5() { return getToken(PCREParser.D5, 0); } + public TerminalNode D6() { return getToken(PCREParser.D6, 0); } + public TerminalNode D7() { return getToken(PCREParser.D7, 0); } + public TerminalNode D8() { return getToken(PCREParser.D8, 0); } + public TerminalNode D9() { return getToken(PCREParser.D9, 0); } + public DigitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_digit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterDigit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitDigit(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitDigit(this); + else return visitor.visitChildren(this); + } + } + + public final DigitContext digit() throws RecognitionException { + DigitContext _localctx = new DigitContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_digit); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(922); + _la = _input.LA(1); + if ( !(((((_la - 115)) & ~0x3f) == 0 && ((1L << (_la - 115)) & ((1L << (D1 - 115)) | (1L << (D2 - 115)) | (1L << (D3 - 115)) | (1L << (D4 - 115)) | (1L << (D5 - 115)) | (1L << (D6 - 115)) | (1L << (D7 - 115)) | (1L << (D8 - 115)) | (1L << (D9 - 115)) | (1L << (D0 - 115)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NameContext extends ParserRuleContext { + public Alpha_numsContext alpha_nums() { + return getRuleContext(Alpha_numsContext.class,0); + } + public NameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitName(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitName(this); + else return visitor.visitChildren(this); + } + } + + public final NameContext name() throws RecognitionException { + NameContext _localctx = new NameContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(924); + alpha_nums(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Alpha_numsContext extends ParserRuleContext { + public List letter() { + return getRuleContexts(LetterContext.class); + } + public LetterContext letter(int i) { + return getRuleContext(LetterContext.class,i); + } + public List Underscore() { return getTokens(PCREParser.Underscore); } + public TerminalNode Underscore(int i) { + return getToken(PCREParser.Underscore, i); + } + public List digit() { + return getRuleContexts(DigitContext.class); + } + public DigitContext digit(int i) { + return getRuleContext(DigitContext.class,i); + } + public Alpha_numsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alpha_nums; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterAlpha_nums(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitAlpha_nums(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitAlpha_nums(this); + else return visitor.visitChildren(this); + } + } + + public final Alpha_numsContext alpha_nums() throws RecognitionException { + Alpha_numsContext _localctx = new Alpha_numsContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_alpha_nums); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(928); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ALC: + case BLC: + case CLC: + case DLC: + case ELC: + case FLC: + case GLC: + case HLC: + case ILC: + case JLC: + case KLC: + case LLC: + case MLC: + case NLC: + case OLC: + case PLC: + case QLC: + case RLC: + case SLC: + case TLC: + case ULC: + case VLC: + case WLC: + case XLC: + case YLC: + case ZLC: + case AUC: + case BUC: + case CUC: + case DUC: + case EUC: + case FUC: + case GUC: + case HUC: + case IUC: + case JUC: + case KUC: + case LUC: + case MUC: + case NUC: + case OUC: + case PUC: + case QUC: + case RUC: + case SUC: + case TUC: + case UUC: + case VUC: + case WUC: + case XUC: + case YUC: + case ZUC: + { + setState(926); + letter(); + } + break; + case Underscore: + { + setState(927); + match(Underscore); + } + break; + default: + throw new NoViableAltException(this); + } + setState(935); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Underscore || _la==ALC || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)))) != 0)) { + { + setState(933); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ALC: + case BLC: + case CLC: + case DLC: + case ELC: + case FLC: + case GLC: + case HLC: + case ILC: + case JLC: + case KLC: + case LLC: + case MLC: + case NLC: + case OLC: + case PLC: + case QLC: + case RLC: + case SLC: + case TLC: + case ULC: + case VLC: + case WLC: + case XLC: + case YLC: + case ZLC: + case AUC: + case BUC: + case CUC: + case DUC: + case EUC: + case FUC: + case GUC: + case HUC: + case IUC: + case JUC: + case KUC: + case LUC: + case MUC: + case NUC: + case OUC: + case PUC: + case QUC: + case RUC: + case SUC: + case TUC: + case UUC: + case VUC: + case WUC: + case XUC: + case YUC: + case ZUC: + { + setState(930); + letter(); + } + break; + case Underscore: + { + setState(931); + match(Underscore); + } + break; + case D1: + case D2: + case D3: + case D4: + case D5: + case D6: + case D7: + case D8: + case D9: + case D0: + { + setState(932); + digit(); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(937); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Non_close_parensContext extends ParserRuleContext { + public List non_close_paren() { + return getRuleContexts(Non_close_parenContext.class); + } + public Non_close_parenContext non_close_paren(int i) { + return getRuleContext(Non_close_parenContext.class,i); + } + public Non_close_parensContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_non_close_parens; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterNon_close_parens(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitNon_close_parens(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitNon_close_parens(this); + else return visitor.visitChildren(this); + } + } + + public final Non_close_parensContext non_close_parens() throws RecognitionException { + Non_close_parensContext _localctx = new Non_close_parensContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_non_close_parens); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(939); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(938); + non_close_paren(); + } + } + setState(941); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Quoted) | (1L << BlockQuoted) | (1L << BellChar) | (1L << ControlChar) | (1L << EscapeChar) | (1L << FormFeed) | (1L << NewLine) | (1L << CarriageReturn) | (1L << Tab) | (1L << Backslash) | (1L << HexChar) | (1L << Dot) | (1L << OneDataUnit) | (1L << DecimalDigit) | (1L << NotDecimalDigit) | (1L << HorizontalWhiteSpace) | (1L << NotHorizontalWhiteSpace) | (1L << NotNewLine) | (1L << CharWithProperty) | (1L << CharWithoutProperty) | (1L << NewLineSequence) | (1L << WhiteSpace) | (1L << NotWhiteSpace) | (1L << VerticalWhiteSpace) | (1L << NotVerticalWhiteSpace) | (1L << WordChar) | (1L << NotWordChar) | (1L << ExtendedUnicodeChar) | (1L << CharacterClassStart) | (1L << CharacterClassEnd) | (1L << Caret) | (1L << Hyphen) | (1L << POSIXNamedSet) | (1L << POSIXNegatedNamedSet) | (1L << QuestionMark) | (1L << Plus) | (1L << Star) | (1L << OpenBrace) | (1L << CloseBrace) | (1L << Comma) | (1L << WordBoundary) | (1L << NonWordBoundary) | (1L << StartOfSubject) | (1L << EndOfSubjectOrLine) | (1L << EndOfSubjectOrLineEndOfSubject) | (1L << EndOfSubject) | (1L << PreviousMatchInSubject) | (1L << ResetStartMatch) | (1L << SubroutineOrNamedReferenceStartG) | (1L << NamedReferenceStartK) | (1L << Pipe) | (1L << OpenParen) | (1L << LessThan) | (1L << GreaterThan) | (1L << SingleQuote) | (1L << Underscore) | (1L << Colon) | (1L << Hash) | (1L << Equals) | (1L << Exclamation) | (1L << Ampersand) | (1L << ALC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BLC - 64)) | (1L << (CLC - 64)) | (1L << (DLC - 64)) | (1L << (ELC - 64)) | (1L << (FLC - 64)) | (1L << (GLC - 64)) | (1L << (HLC - 64)) | (1L << (ILC - 64)) | (1L << (JLC - 64)) | (1L << (KLC - 64)) | (1L << (LLC - 64)) | (1L << (MLC - 64)) | (1L << (NLC - 64)) | (1L << (OLC - 64)) | (1L << (PLC - 64)) | (1L << (QLC - 64)) | (1L << (RLC - 64)) | (1L << (SLC - 64)) | (1L << (TLC - 64)) | (1L << (ULC - 64)) | (1L << (VLC - 64)) | (1L << (WLC - 64)) | (1L << (XLC - 64)) | (1L << (YLC - 64)) | (1L << (ZLC - 64)) | (1L << (AUC - 64)) | (1L << (BUC - 64)) | (1L << (CUC - 64)) | (1L << (DUC - 64)) | (1L << (EUC - 64)) | (1L << (FUC - 64)) | (1L << (GUC - 64)) | (1L << (HUC - 64)) | (1L << (IUC - 64)) | (1L << (JUC - 64)) | (1L << (KUC - 64)) | (1L << (LUC - 64)) | (1L << (MUC - 64)) | (1L << (NUC - 64)) | (1L << (OUC - 64)) | (1L << (PUC - 64)) | (1L << (QUC - 64)) | (1L << (RUC - 64)) | (1L << (SUC - 64)) | (1L << (TUC - 64)) | (1L << (UUC - 64)) | (1L << (VUC - 64)) | (1L << (WUC - 64)) | (1L << (XUC - 64)) | (1L << (YUC - 64)) | (1L << (ZUC - 64)) | (1L << (D1 - 64)) | (1L << (D2 - 64)) | (1L << (D3 - 64)) | (1L << (D4 - 64)) | (1L << (D5 - 64)) | (1L << (D6 - 64)) | (1L << (D7 - 64)) | (1L << (D8 - 64)) | (1L << (D9 - 64)) | (1L << (D0 - 64)) | (1L << (OtherChar - 64)))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Non_close_parenContext extends ParserRuleContext { + public TerminalNode CloseParen() { return getToken(PCREParser.CloseParen, 0); } + public Non_close_parenContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_non_close_paren; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterNon_close_paren(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitNon_close_paren(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitNon_close_paren(this); + else return visitor.visitChildren(this); + } + } + + public final Non_close_parenContext non_close_paren() throws RecognitionException { + Non_close_parenContext _localctx = new Non_close_parenContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_non_close_paren); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(943); + _la = _input.LA(1); + if ( _la <= 0 || (_la==CloseParen) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LetterContext extends ParserRuleContext { + public TerminalNode ALC() { return getToken(PCREParser.ALC, 0); } + public TerminalNode BLC() { return getToken(PCREParser.BLC, 0); } + public TerminalNode CLC() { return getToken(PCREParser.CLC, 0); } + public TerminalNode DLC() { return getToken(PCREParser.DLC, 0); } + public TerminalNode ELC() { return getToken(PCREParser.ELC, 0); } + public TerminalNode FLC() { return getToken(PCREParser.FLC, 0); } + public TerminalNode GLC() { return getToken(PCREParser.GLC, 0); } + public TerminalNode HLC() { return getToken(PCREParser.HLC, 0); } + public TerminalNode ILC() { return getToken(PCREParser.ILC, 0); } + public TerminalNode JLC() { return getToken(PCREParser.JLC, 0); } + public TerminalNode KLC() { return getToken(PCREParser.KLC, 0); } + public TerminalNode LLC() { return getToken(PCREParser.LLC, 0); } + public TerminalNode MLC() { return getToken(PCREParser.MLC, 0); } + public TerminalNode NLC() { return getToken(PCREParser.NLC, 0); } + public TerminalNode OLC() { return getToken(PCREParser.OLC, 0); } + public TerminalNode PLC() { return getToken(PCREParser.PLC, 0); } + public TerminalNode QLC() { return getToken(PCREParser.QLC, 0); } + public TerminalNode RLC() { return getToken(PCREParser.RLC, 0); } + public TerminalNode SLC() { return getToken(PCREParser.SLC, 0); } + public TerminalNode TLC() { return getToken(PCREParser.TLC, 0); } + public TerminalNode ULC() { return getToken(PCREParser.ULC, 0); } + public TerminalNode VLC() { return getToken(PCREParser.VLC, 0); } + public TerminalNode WLC() { return getToken(PCREParser.WLC, 0); } + public TerminalNode XLC() { return getToken(PCREParser.XLC, 0); } + public TerminalNode YLC() { return getToken(PCREParser.YLC, 0); } + public TerminalNode ZLC() { return getToken(PCREParser.ZLC, 0); } + public TerminalNode AUC() { return getToken(PCREParser.AUC, 0); } + public TerminalNode BUC() { return getToken(PCREParser.BUC, 0); } + public TerminalNode CUC() { return getToken(PCREParser.CUC, 0); } + public TerminalNode DUC() { return getToken(PCREParser.DUC, 0); } + public TerminalNode EUC() { return getToken(PCREParser.EUC, 0); } + public TerminalNode FUC() { return getToken(PCREParser.FUC, 0); } + public TerminalNode GUC() { return getToken(PCREParser.GUC, 0); } + public TerminalNode HUC() { return getToken(PCREParser.HUC, 0); } + public TerminalNode IUC() { return getToken(PCREParser.IUC, 0); } + public TerminalNode JUC() { return getToken(PCREParser.JUC, 0); } + public TerminalNode KUC() { return getToken(PCREParser.KUC, 0); } + public TerminalNode LUC() { return getToken(PCREParser.LUC, 0); } + public TerminalNode MUC() { return getToken(PCREParser.MUC, 0); } + public TerminalNode NUC() { return getToken(PCREParser.NUC, 0); } + public TerminalNode OUC() { return getToken(PCREParser.OUC, 0); } + public TerminalNode PUC() { return getToken(PCREParser.PUC, 0); } + public TerminalNode QUC() { return getToken(PCREParser.QUC, 0); } + public TerminalNode RUC() { return getToken(PCREParser.RUC, 0); } + public TerminalNode SUC() { return getToken(PCREParser.SUC, 0); } + public TerminalNode TUC() { return getToken(PCREParser.TUC, 0); } + public TerminalNode UUC() { return getToken(PCREParser.UUC, 0); } + public TerminalNode VUC() { return getToken(PCREParser.VUC, 0); } + public TerminalNode WUC() { return getToken(PCREParser.WUC, 0); } + public TerminalNode XUC() { return getToken(PCREParser.XUC, 0); } + public TerminalNode YUC() { return getToken(PCREParser.YUC, 0); } + public TerminalNode ZUC() { return getToken(PCREParser.ZUC, 0); } + public LetterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_letter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).enterLetter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PCREListener ) ((PCREListener)listener).exitLetter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof PCREVisitor ) return ((PCREVisitor)visitor).visitLetter(this); + else return visitor.visitChildren(this); + } + } + + public final LetterContext letter() throws RecognitionException { + LetterContext _localctx = new LetterContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_letter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(945); + _la = _input.LA(1); + if ( !(((((_la - 63)) & ~0x3f) == 0 && ((1L << (_la - 63)) & ((1L << (ALC - 63)) | (1L << (BLC - 63)) | (1L << (CLC - 63)) | (1L << (DLC - 63)) | (1L << (ELC - 63)) | (1L << (FLC - 63)) | (1L << (GLC - 63)) | (1L << (HLC - 63)) | (1L << (ILC - 63)) | (1L << (JLC - 63)) | (1L << (KLC - 63)) | (1L << (LLC - 63)) | (1L << (MLC - 63)) | (1L << (NLC - 63)) | (1L << (OLC - 63)) | (1L << (PLC - 63)) | (1L << (QLC - 63)) | (1L << (RLC - 63)) | (1L << (SLC - 63)) | (1L << (TLC - 63)) | (1L << (ULC - 63)) | (1L << (VLC - 63)) | (1L << (WLC - 63)) | (1L << (XLC - 63)) | (1L << (YLC - 63)) | (1L << (ZLC - 63)) | (1L << (AUC - 63)) | (1L << (BUC - 63)) | (1L << (CUC - 63)) | (1L << (DUC - 63)) | (1L << (EUC - 63)) | (1L << (FUC - 63)) | (1L << (GUC - 63)) | (1L << (HUC - 63)) | (1L << (IUC - 63)) | (1L << (JUC - 63)) | (1L << (KUC - 63)) | (1L << (LUC - 63)) | (1L << (MUC - 63)) | (1L << (NUC - 63)) | (1L << (OUC - 63)) | (1L << (PUC - 63)) | (1L << (QUC - 63)) | (1L << (RUC - 63)) | (1L << (SUC - 63)) | (1L << (TUC - 63)) | (1L << (UUC - 63)) | (1L << (VUC - 63)) | (1L << (WUC - 63)) | (1L << (XUC - 63)) | (1L << (YUC - 63)) | (1L << (ZUC - 63)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\177\u03b6\4\2\t\2"+ + "\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\3\2\3\2\3\2\3\3\3\3\3\3\7\3S\n\3\f"+ + "\3\16\3V\13\3\3\4\7\4Y\n\4\f\4\16\4\\\13\4\3\5\3\5\5\5`\n\5\3\6\3\6\3"+ + "\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6"+ + "\3\6\3\6\3\6\3\6\5\6z\n\6\3\7\3\7\3\7\5\7\177\n\7\3\b\3\b\3\b\3\b\3\b"+ + "\6\b\u0086\n\b\r\b\16\b\u0087\3\b\3\b\3\b\3\b\3\b\3\b\7\b\u0090\n\b\f"+ + "\b\16\b\u0093\13\b\3\b\3\b\3\b\3\b\6\b\u0099\n\b\r\b\16\b\u009a\3\b\3"+ + "\b\3\b\3\b\3\b\3\b\6\b\u00a3\n\b\r\b\16\b\u00a4\3\b\3\b\3\b\3\b\3\b\7"+ + "\b\u00ac\n\b\f\b\16\b\u00af\13\b\3\b\3\b\3\b\6\b\u00b4\n\b\r\b\16\b\u00b5"+ + "\3\b\3\b\5\b\u00ba\n\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+ + "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u00e5\n\t\3\n\3\n\3"+ + "\n\5\n\u00ea\n\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13"+ + "\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13"+ + "\3\13\3\13\3\13\3\13\5\13\u0109\n\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3"+ + "\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f"+ + "\u0124\n\f\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+ + "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+ + "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+ + "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+ + "\3\16\3\16\3\16\3\16\3\16\5\16\u0162\n\16\3\17\6\17\u0165\n\17\r\17\16"+ + "\17\u0166\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ + "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ + "\3\21\3\21\5\21\u0185\n\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22"+ + "\u01d5\n\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u01df\n\23\3"+ + "\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u01ec\n\23"+ + "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u01f9\n\23"+ + "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u0207"+ + "\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23"+ + "\u0215\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23"+ + "\u0222\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u022e"+ + "\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23"+ + "\u023c\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23"+ + "\3\23\3\23\3\23\5\23\u024d\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23"+ + "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u025e\n\23\3\23\3\23\3\23\3\23"+ + "\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u026a\n\23\3\23\3\23\5\23\u026e\n"+ + "\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3"+ + "\24\3\24\5\24\u027f\n\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\5\24\u0288"+ + "\n\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24"+ + "\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24"+ + "\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24"+ + "\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24"+ + "\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24"+ + "\3\24\3\24\3\24\3\24\3\24\5\24\u02d4\n\24\3\25\3\25\3\25\3\25\3\25\3\25"+ + "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+ + "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+ + "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25"+ + "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25"+ + "\u0313\n\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u031f"+ + "\n\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+ + "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\5\27"+ + "\u033b\n\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u0344\n\30\3\31\3"+ + "\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3"+ + "\31\3\31\3\31\3\31\5\31\u0359\n\31\3\32\3\32\5\32\u035d\n\32\3\33\3\33"+ + "\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\5\33\u036b\n\33\3\34"+ + "\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34"+ + "\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\5\34\u0387\n\34"+ + "\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\5\36\u0394\n\36"+ + "\3\37\3\37\3 \6 \u0399\n \r \16 \u039a\3!\3!\3\"\3\"\3#\3#\5#\u03a3\n"+ + "#\3#\3#\3#\7#\u03a8\n#\f#\16#\u03ab\13#\3$\6$\u03ae\n$\r$\16$\u03af\3"+ + "%\3%\3&\3&\3&\2\2\'\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60"+ + "\62\64\668:<>@BDFHJ\2\b\b\2IIMMSSXXddoo\4\2uw~~\4\2u{~~\3\2u~\3\2\67\67"+ + "\3\2At\2\u044b\2L\3\2\2\2\4O\3\2\2\2\6Z\3\2\2\2\b]\3\2\2\2\ny\3\2\2\2"+ + "\f~\3\2\2\2\16\u00b9\3\2\2\2\20\u00e4\3\2\2\2\22\u00e9\3\2\2\2\24\u0108"+ + "\3\2\2\2\26\u0123\3\2\2\2\30\u0125\3\2\2\2\32\u0161\3\2\2\2\34\u0164\3"+ + "\2\2\2\36\u0168\3\2\2\2 \u0184\3\2\2\2\"\u01d4\3\2\2\2$\u026d\3\2\2\2"+ + "&\u02d3\3\2\2\2(\u0312\3\2\2\2*\u031e\3\2\2\2,\u033a\3\2\2\2.\u0343\3"+ + "\2\2\2\60\u0358\3\2\2\2\62\u035c\3\2\2\2\64\u036a\3\2\2\2\66\u0386\3\2"+ + "\2\28\u0388\3\2\2\2:\u0393\3\2\2\2<\u0395\3\2\2\2>\u0398\3\2\2\2@\u039c"+ + "\3\2\2\2B\u039e\3\2\2\2D\u03a2\3\2\2\2F\u03ad\3\2\2\2H\u03b1\3\2\2\2J"+ + "\u03b3\3\2\2\2LM\5\4\3\2MN\7\2\2\3N\3\3\2\2\2OT\5\6\4\2PQ\7\65\2\2QS\5"+ + "\6\4\2RP\3\2\2\2SV\3\2\2\2TR\3\2\2\2TU\3\2\2\2U\5\3\2\2\2VT\3\2\2\2WY"+ + "\5\b\5\2XW\3\2\2\2Y\\\3\2\2\2ZX\3\2\2\2Z[\3\2\2\2[\7\3\2\2\2\\Z\3\2\2"+ + "\2]_\5,\27\2^`\5\n\6\2_^\3\2\2\2_`\3\2\2\2`\t\3\2\2\2ab\7%\2\2bz\5\f\7"+ + "\2cd\7&\2\2dz\5\f\7\2ef\7\'\2\2fz\5\f\7\2gh\7(\2\2hi\58\35\2ij\7)\2\2"+ + "jk\5\f\7\2kz\3\2\2\2lm\7(\2\2mn\58\35\2no\7*\2\2op\7)\2\2pq\5\f\7\2qz"+ + "\3\2\2\2rs\7(\2\2st\58\35\2tu\7*\2\2uv\58\35\2vw\7)\2\2wx\5\f\7\2xz\3"+ + "\2\2\2ya\3\2\2\2yc\3\2\2\2ye\3\2\2\2yg\3\2\2\2yl\3\2\2\2yr\3\2\2\2z\13"+ + "\3\2\2\2{\177\7&\2\2|\177\7%\2\2}\177\3\2\2\2~{\3\2\2\2~|\3\2\2\2~}\3"+ + "\2\2\2\177\r\3\2\2\2\u0080\u0081\7\37\2\2\u0081\u0082\7!\2\2\u0082\u0083"+ + "\7 \2\2\u0083\u0085\7\"\2\2\u0084\u0086\5.\30\2\u0085\u0084\3\2\2\2\u0086"+ + "\u0087\3\2\2\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2\u0088\u0089\3\2"+ + "\2\2\u0089\u008a\7 \2\2\u008a\u00ba\3\2\2\2\u008b\u008c\7\37\2\2\u008c"+ + "\u008d\7!\2\2\u008d\u0091\7 \2\2\u008e\u0090\5.\30\2\u008f\u008e\3\2\2"+ + "\2\u0090\u0093\3\2\2\2\u0091\u008f\3\2\2\2\u0091\u0092\3\2\2\2\u0092\u0094"+ + "\3\2\2\2\u0093\u0091\3\2\2\2\u0094\u00ba\7 \2\2\u0095\u0096\7\37\2\2\u0096"+ + "\u0098\7!\2\2\u0097\u0099\5.\30\2\u0098\u0097\3\2\2\2\u0099\u009a\3\2"+ + "\2\2\u009a\u0098\3\2\2\2\u009a\u009b\3\2\2\2\u009b\u009c\3\2\2\2\u009c"+ + "\u009d\7 \2\2\u009d\u00ba\3\2\2\2\u009e\u009f\7\37\2\2\u009f\u00a0\7 "+ + "\2\2\u00a0\u00a2\7\"\2\2\u00a1\u00a3\5.\30\2\u00a2\u00a1\3\2\2\2\u00a3"+ + "\u00a4\3\2\2\2\u00a4\u00a2\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5\u00a6\3\2"+ + "\2\2\u00a6\u00a7\7 \2\2\u00a7\u00ba\3\2\2\2\u00a8\u00a9\7\37\2\2\u00a9"+ + "\u00ad\7 \2\2\u00aa\u00ac\5.\30\2\u00ab\u00aa\3\2\2\2\u00ac\u00af\3\2"+ + "\2\2\u00ad\u00ab\3\2\2\2\u00ad\u00ae\3\2\2\2\u00ae\u00b0\3\2\2\2\u00af"+ + "\u00ad\3\2\2\2\u00b0\u00ba\7 \2\2\u00b1\u00b3\7\37\2\2\u00b2\u00b4\5."+ + "\30\2\u00b3\u00b2\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b5"+ + "\u00b6\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b8\7 \2\2\u00b8\u00ba\3\2"+ + "\2\2\u00b9\u0080\3\2\2\2\u00b9\u008b\3\2\2\2\u00b9\u0095\3\2\2\2\u00b9"+ + "\u009e\3\2\2\2\u00b9\u00a8\3\2\2\2\u00b9\u00b1\3\2\2\2\u00ba\17\3\2\2"+ + "\2\u00bb\u00e5\5\22\n\2\u00bc\u00bd\7\63\2\2\u00bd\u00e5\58\35\2\u00be"+ + "\u00bf\7\63\2\2\u00bf\u00c0\7(\2\2\u00c0\u00c1\58\35\2\u00c1\u00c2\7)"+ + "\2\2\u00c2\u00e5\3\2\2\2\u00c3\u00c4\7\63\2\2\u00c4\u00c5\7(\2\2\u00c5"+ + "\u00c6\7\"\2\2\u00c6\u00c7\58\35\2\u00c7\u00c8\7)\2\2\u00c8\u00e5\3\2"+ + "\2\2\u00c9\u00ca\7\64\2\2\u00ca\u00cb\78\2\2\u00cb\u00cc\5B\"\2\u00cc"+ + "\u00cd\79\2\2\u00cd\u00e5\3\2\2\2\u00ce\u00cf\7\64\2\2\u00cf\u00d0\7:"+ + "\2\2\u00d0\u00d1\5B\"\2\u00d1\u00d2\7:\2\2\u00d2\u00e5\3\2\2\2\u00d3\u00d4"+ + "\7\63\2\2\u00d4\u00d5\7(\2\2\u00d5\u00d6\5B\"\2\u00d6\u00d7\7)\2\2\u00d7"+ + "\u00e5\3\2\2\2\u00d8\u00d9\7\64\2\2\u00d9\u00da\7(\2\2\u00da\u00db\5B"+ + "\"\2\u00db\u00dc\7)\2\2\u00dc\u00e5\3\2\2\2\u00dd\u00de\7\66\2\2\u00de"+ + "\u00df\7%\2\2\u00df\u00e0\7j\2\2\u00e0\u00e1\7>\2\2\u00e1\u00e2\5B\"\2"+ + "\u00e2\u00e3\7\67\2\2\u00e3\u00e5\3\2\2\2\u00e4\u00bb\3\2\2\2\u00e4\u00bc"+ + "\3\2\2\2\u00e4\u00be\3\2\2\2\u00e4\u00c3\3\2\2\2\u00e4\u00c9\3\2\2\2\u00e4"+ + "\u00ce\3\2\2\2\u00e4\u00d3\3\2\2\2\u00e4\u00d8\3\2\2\2\u00e4\u00dd\3\2"+ + "\2\2\u00e5\21\3\2\2\2\u00e6\u00ea\5:\36\2\u00e7\u00e8\7\f\2\2\u00e8\u00ea"+ + "\5@!\2\u00e9\u00e6\3\2\2\2\u00e9\u00e7\3\2\2\2\u00ea\23\3\2\2\2\u00eb"+ + "\u00ec\7\66\2\2\u00ec\u00ed\7%\2\2\u00ed\u00ee\78\2\2\u00ee\u00ef\5B\""+ + "\2\u00ef\u00f0\79\2\2\u00f0\u00f1\5\4\3\2\u00f1\u00f2\7\67\2\2\u00f2\u0109"+ + "\3\2\2\2\u00f3\u00f4\7\66\2\2\u00f4\u00f5\7%\2\2\u00f5\u00f6\7:\2\2\u00f6"+ + "\u00f7\5B\"\2\u00f7\u00f8\7:\2\2\u00f8\u00f9\5\4\3\2\u00f9\u00fa\7\67"+ + "\2\2\u00fa\u0109\3\2\2\2\u00fb\u00fc\7\66\2\2\u00fc\u00fd\7%\2\2\u00fd"+ + "\u00fe\7j\2\2\u00fe\u00ff\78\2\2\u00ff\u0100\5B\"\2\u0100\u0101\79\2\2"+ + "\u0101\u0102\5\4\3\2\u0102\u0103\7\67\2\2\u0103\u0109\3\2\2\2\u0104\u0105"+ + "\7\66\2\2\u0105\u0106\5\4\3\2\u0106\u0107\7\67\2\2\u0107\u0109\3\2\2\2"+ + "\u0108\u00eb\3\2\2\2\u0108\u00f3\3\2\2\2\u0108\u00fb\3\2\2\2\u0108\u0104"+ + "\3\2\2\2\u0109\25\3\2\2\2\u010a\u010b\7\66\2\2\u010b\u010c\7%\2\2\u010c"+ + "\u010d\7<\2\2\u010d\u010e\5\4\3\2\u010e\u010f\7\67\2\2\u010f\u0124\3\2"+ + "\2\2\u0110\u0111\7\66\2\2\u0111\u0112\7%\2\2\u0112\u0113\7\65\2\2\u0113"+ + "\u0114\5\4\3\2\u0114\u0115\7\67\2\2\u0115\u0124\3\2\2\2\u0116\u0117\7"+ + "\66\2\2\u0117\u0118\7%\2\2\u0118\u0119\79\2\2\u0119\u011a\5\4\3\2\u011a"+ + "\u011b\7\67\2\2\u011b\u0124\3\2\2\2\u011c\u011d\7\66\2\2\u011d\u011e\7"+ + "%\2\2\u011e\u011f\5\34\17\2\u011f\u0120\7<\2\2\u0120\u0121\5\4\3\2\u0121"+ + "\u0122\7\67\2\2\u0122\u0124\3\2\2\2\u0123\u010a\3\2\2\2\u0123\u0110\3"+ + "\2\2\2\u0123\u0116\3\2\2\2\u0123\u011c\3\2\2\2\u0124\27\3\2\2\2\u0125"+ + "\u0126\7\66\2\2\u0126\u0127\7%\2\2\u0127\u0128\7=\2\2\u0128\u0129\5F$"+ + "\2\u0129\u012a\7\67\2\2\u012a\31\3\2\2\2\u012b\u012c\7\66\2\2\u012c\u012d"+ + "\7%\2\2\u012d\u012e\5\34\17\2\u012e\u012f\7\"\2\2\u012f\u0130\5\34\17"+ + "\2\u0130\u0131\7\67\2\2\u0131\u0162\3\2\2\2\u0132\u0133\7\66\2\2\u0133"+ + "\u0134\7%\2\2\u0134\u0135\5\34\17\2\u0135\u0136\7\67\2\2\u0136\u0162\3"+ + "\2\2\2\u0137\u0138\7\66\2\2\u0138\u0139\7%\2\2\u0139\u013a\7\"\2\2\u013a"+ + "\u013b\5\34\17\2\u013b\u013c\7\67\2\2\u013c\u0162\3\2\2\2\u013d\u013e"+ + "\7\66\2\2\u013e\u013f\7\'\2\2\u013f\u0140\7h\2\2\u0140\u0141\7i\2\2\u0141"+ + "\u0142\7;\2\2\u0142\u0143\7m\2\2\u0143\u0144\7n\2\2\u0144\u0145\7[\2\2"+ + "\u0145\u0146\7l\2\2\u0146\u0147\7n\2\2\u0147\u0148\7;\2\2\u0148\u0149"+ + "\7i\2\2\u0149\u014a\7j\2\2\u014a\u014b\7n\2\2\u014b\u0162\7\67\2\2\u014c"+ + "\u014d\7\66\2\2\u014d\u014e\7\'\2\2\u014e\u014f\7o\2\2\u014f\u0150\7n"+ + "\2\2\u0150\u0151\7`\2\2\u0151\u0152\7|\2\2\u0152\u0162\7\67\2\2\u0153"+ + "\u0154\7\66\2\2\u0154\u0155\7\'\2\2\u0155\u0156\7o\2\2\u0156\u0157\7n"+ + "\2\2\u0157\u0158\7`\2\2\u0158\u0159\7u\2\2\u0159\u015a\7z\2\2\u015a\u0162"+ + "\7\67\2\2\u015b\u015c\7\66\2\2\u015c\u015d\7\'\2\2\u015d\u015e\7o\2\2"+ + "\u015e\u015f\7]\2\2\u015f\u0160\7j\2\2\u0160\u0162\7\67\2\2\u0161\u012b"+ + "\3\2\2\2\u0161\u0132\3\2\2\2\u0161\u0137\3\2\2\2\u0161\u013d\3\2\2\2\u0161"+ + "\u014c\3\2\2\2\u0161\u0153\3\2\2\2\u0161\u015b\3\2\2\2\u0162\33\3\2\2"+ + "\2\u0163\u0165\5\36\20\2\u0164\u0163\3\2\2\2\u0165\u0166\3\2\2\2\u0166"+ + "\u0164\3\2\2\2\u0166\u0167\3\2\2\2\u0167\35\3\2\2\2\u0168\u0169\t\2\2"+ + "\2\u0169\37\3\2\2\2\u016a\u016b\7\66\2\2\u016b\u016c\7%\2\2\u016c\u016d"+ + "\7>\2\2\u016d\u016e\5\4\3\2\u016e\u016f\7\67\2\2\u016f\u0185\3\2\2\2\u0170"+ + "\u0171\7\66\2\2\u0171\u0172\7%\2\2\u0172\u0173\7?\2\2\u0173\u0174\5\4"+ + "\3\2\u0174\u0175\7\67\2\2\u0175\u0185\3\2\2\2\u0176\u0177\7\66\2\2\u0177"+ + "\u0178\7%\2\2\u0178\u0179\78\2\2\u0179\u017a\7>\2\2\u017a\u017b\5\4\3"+ + "\2\u017b\u017c\7\67\2\2\u017c\u0185\3\2\2\2\u017d\u017e\7\66\2\2\u017e"+ + "\u017f\7%\2\2\u017f\u0180\78\2\2\u0180\u0181\7?\2\2\u0181\u0182\5\4\3"+ + "\2\u0182\u0183\7\67\2\2\u0183\u0185\3\2\2\2\u0184\u016a\3\2\2\2\u0184"+ + "\u0170\3\2\2\2\u0184\u0176\3\2\2\2\u0184\u017d\3\2\2\2\u0185!\3\2\2\2"+ + "\u0186\u0187\7\66\2\2\u0187\u0188\7%\2\2\u0188\u0189\7l\2\2\u0189\u01d5"+ + "\7\67\2\2\u018a\u018b\7\66\2\2\u018b\u018c\7%\2\2\u018c\u018d\58\35\2"+ + "\u018d\u018e\7\67\2\2\u018e\u01d5\3\2\2\2\u018f\u0190\7\66\2\2\u0190\u0191"+ + "\7%\2\2\u0191\u0192\7&\2\2\u0192\u0193\58\35\2\u0193\u0194\7\67\2\2\u0194"+ + "\u01d5\3\2\2\2\u0195\u0196\7\66\2\2\u0196\u0197\7%\2\2\u0197\u0198\7\""+ + "\2\2\u0198\u0199\58\35\2\u0199\u019a\7\67\2\2\u019a\u01d5\3\2\2\2\u019b"+ + "\u019c\7\66\2\2\u019c\u019d\7%\2\2\u019d\u019e\7@\2\2\u019e\u019f\5B\""+ + "\2\u019f\u01a0\7\67\2\2\u01a0\u01d5\3\2\2\2\u01a1\u01a2\7\66\2\2\u01a2"+ + "\u01a3\7%\2\2\u01a3\u01a4\7j\2\2\u01a4\u01a5\79\2\2\u01a5\u01a6\5B\"\2"+ + "\u01a6\u01a7\7\67\2\2\u01a7\u01d5\3\2\2\2\u01a8\u01a9\7\63\2\2\u01a9\u01aa"+ + "\78\2\2\u01aa\u01ab\5B\"\2\u01ab\u01ac\79\2\2\u01ac\u01d5\3\2\2\2\u01ad"+ + "\u01ae\7\63\2\2\u01ae\u01af\7:\2\2\u01af\u01b0\5B\"\2\u01b0\u01b1\7:\2"+ + "\2\u01b1\u01d5\3\2\2\2\u01b2\u01b3\7\63\2\2\u01b3\u01b4\78\2\2\u01b4\u01b5"+ + "\58\35\2\u01b5\u01b6\79\2\2\u01b6\u01d5\3\2\2\2\u01b7\u01b8\7\63\2\2\u01b8"+ + "\u01b9\7:\2\2\u01b9\u01ba\58\35\2\u01ba\u01bb\7:\2\2\u01bb\u01d5\3\2\2"+ + "\2\u01bc\u01bd\7\63\2\2\u01bd\u01be\78\2\2\u01be\u01bf\7&\2\2\u01bf\u01c0"+ + "\58\35\2\u01c0\u01c1\79\2\2\u01c1\u01d5\3\2\2\2\u01c2\u01c3\7\63\2\2\u01c3"+ + "\u01c4\7:\2\2\u01c4\u01c5\7&\2\2\u01c5\u01c6\58\35\2\u01c6\u01c7\7:\2"+ + "\2\u01c7\u01d5\3\2\2\2\u01c8\u01c9\7\63\2\2\u01c9\u01ca\78\2\2\u01ca\u01cb"+ + "\7\"\2\2\u01cb\u01cc\58\35\2\u01cc\u01cd\79\2\2\u01cd\u01d5\3\2\2\2\u01ce"+ + "\u01cf\7\63\2\2\u01cf\u01d0\7:\2\2\u01d0\u01d1\7\"\2\2\u01d1\u01d2\58"+ + "\35\2\u01d2\u01d3\7:\2\2\u01d3\u01d5\3\2\2\2\u01d4\u0186\3\2\2\2\u01d4"+ + "\u018a\3\2\2\2\u01d4\u018f\3\2\2\2\u01d4\u0195\3\2\2\2\u01d4\u019b\3\2"+ + "\2\2\u01d4\u01a1\3\2\2\2\u01d4\u01a8\3\2\2\2\u01d4\u01ad\3\2\2\2\u01d4"+ + "\u01b2\3\2\2\2\u01d4\u01b7\3\2\2\2\u01d4\u01bc\3\2\2\2\u01d4\u01c2\3\2"+ + "\2\2\u01d4\u01c8\3\2\2\2\u01d4\u01ce\3\2\2\2\u01d5#\3\2\2\2\u01d6\u01d7"+ + "\7\66\2\2\u01d7\u01d8\7%\2\2\u01d8\u01d9\7\66\2\2\u01d9\u01da\58\35\2"+ + "\u01da\u01db\7\67\2\2\u01db\u01de\5\4\3\2\u01dc\u01dd\7\65\2\2\u01dd\u01df"+ + "\5\4\3\2\u01de\u01dc\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01e0\3\2\2\2\u01e0"+ + "\u01e1\7\67\2\2\u01e1\u026e\3\2\2\2\u01e2\u01e3\7\66\2\2\u01e3\u01e4\7"+ + "%\2\2\u01e4\u01e5\7\66\2\2\u01e5\u01e6\7&\2\2\u01e6\u01e7\58\35\2\u01e7"+ + "\u01e8\7\67\2\2\u01e8\u01eb\5\4\3\2\u01e9\u01ea\7\65\2\2\u01ea\u01ec\5"+ + "\4\3\2\u01eb\u01e9\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\u01ed\3\2\2\2\u01ed"+ + "\u01ee\7\67\2\2\u01ee\u026e\3\2\2\2\u01ef\u01f0\7\66\2\2\u01f0\u01f1\7"+ + "%\2\2\u01f1\u01f2\7\66\2\2\u01f2\u01f3\7\"\2\2\u01f3\u01f4\58\35\2\u01f4"+ + "\u01f5\7\67\2\2\u01f5\u01f8\5\4\3\2\u01f6\u01f7\7\65\2\2\u01f7\u01f9\5"+ + "\4\3\2\u01f8\u01f6\3\2\2\2\u01f8\u01f9\3\2\2\2\u01f9\u01fa\3\2\2\2\u01fa"+ + "\u01fb\7\67\2\2\u01fb\u026e\3\2\2\2\u01fc\u01fd\7\66\2\2\u01fd\u01fe\7"+ + "%\2\2\u01fe\u01ff\7\66\2\2\u01ff\u0200\78\2\2\u0200\u0201\5B\"\2\u0201"+ + "\u0202\79\2\2\u0202\u0203\7\67\2\2\u0203\u0206\5\4\3\2\u0204\u0205\7\65"+ + "\2\2\u0205\u0207\5\4\3\2\u0206\u0204\3\2\2\2\u0206\u0207\3\2\2\2\u0207"+ + "\u0208\3\2\2\2\u0208\u0209\7\67\2\2\u0209\u026e\3\2\2\2\u020a\u020b\7"+ + "\66\2\2\u020b\u020c\7%\2\2\u020c\u020d\7\66\2\2\u020d\u020e\7:\2\2\u020e"+ + "\u020f\5B\"\2\u020f\u0210\7:\2\2\u0210\u0211\7\67\2\2\u0211\u0214\5\4"+ + "\3\2\u0212\u0213\7\65\2\2\u0213\u0215\5\4\3\2\u0214\u0212\3\2\2\2\u0214"+ + "\u0215\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0217\7\67\2\2\u0217\u026e\3"+ + "\2\2\2\u0218\u0219\7\66\2\2\u0219\u021a\7%\2\2\u021a\u021b\7\66\2\2\u021b"+ + "\u021c\7l\2\2\u021c\u021d\58\35\2\u021d\u021e\7\67\2\2\u021e\u0221\5\4"+ + "\3\2\u021f\u0220\7\65\2\2\u0220\u0222\5\4\3\2\u0221\u021f\3\2\2\2\u0221"+ + "\u0222\3\2\2\2\u0222\u0223\3\2\2\2\u0223\u0224\7\67\2\2\u0224\u026e\3"+ + "\2\2\2\u0225\u0226\7\66\2\2\u0226\u0227\7%\2\2\u0227\u0228\7\66\2\2\u0228"+ + "\u0229\7l\2\2\u0229\u022a\7\67\2\2\u022a\u022d\5\4\3\2\u022b\u022c\7\65"+ + "\2\2\u022c\u022e\5\4\3\2\u022d\u022b\3\2\2\2\u022d\u022e\3\2\2\2\u022e"+ + "\u022f\3\2\2\2\u022f\u0230\7\67\2\2\u0230\u026e\3\2\2\2\u0231\u0232\7"+ + "\66\2\2\u0232\u0233\7%\2\2\u0233\u0234\7\66\2\2\u0234\u0235\7l\2\2\u0235"+ + "\u0236\7@\2\2\u0236\u0237\5B\"\2\u0237\u0238\7\67\2\2\u0238\u023b\5\4"+ + "\3\2\u0239\u023a\7\65\2\2\u023a\u023c\5\4\3\2\u023b\u0239\3\2\2\2\u023b"+ + "\u023c\3\2\2\2\u023c\u023d\3\2\2\2\u023d\u023e\7\67\2\2\u023e\u026e\3"+ + "\2\2\2\u023f\u0240\7\66\2\2\u0240\u0241\7%\2\2\u0241\u0242\7\66\2\2\u0242"+ + "\u0243\7^\2\2\u0243\u0244\7_\2\2\u0244\u0245\7`\2\2\u0245\u0246\7c\2\2"+ + "\u0246\u0247\7h\2\2\u0247\u0248\7_\2\2\u0248\u0249\7\67\2\2\u0249\u024c"+ + "\5\4\3\2\u024a\u024b\7\65\2\2\u024b\u024d\5\4\3\2\u024c\u024a\3\2\2\2"+ + "\u024c\u024d\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u024f\7\67\2\2\u024f\u026e"+ + "\3\2\2\2\u0250\u0251\7\66\2\2\u0251\u0252\7%\2\2\u0252\u0253\7\66\2\2"+ + "\u0253\u0254\7A\2\2\u0254\u0255\7S\2\2\u0255\u0256\7S\2\2\u0256\u0257"+ + "\7E\2\2\u0257\u0258\7R\2\2\u0258\u0259\7T\2\2\u0259\u025a\7\67\2\2\u025a"+ + "\u025d\5\4\3\2\u025b\u025c\7\65\2\2\u025c\u025e\5\4\3\2\u025d\u025b\3"+ + "\2\2\2\u025d\u025e\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0260\7\67\2\2\u0260"+ + "\u026e\3\2\2\2\u0261\u0262\7\66\2\2\u0262\u0263\7%\2\2\u0263\u0264\7\66"+ + "\2\2\u0264\u0265\5B\"\2\u0265\u0266\7\67\2\2\u0266\u0269\5\4\3\2\u0267"+ + "\u0268\7\65\2\2\u0268\u026a\5\4\3\2\u0269\u0267\3\2\2\2\u0269\u026a\3"+ + "\2\2\2\u026a\u026b\3\2\2\2\u026b\u026c\7\67\2\2\u026c\u026e\3\2\2\2\u026d"+ + "\u01d6\3\2\2\2\u026d\u01e2\3\2\2\2\u026d\u01ef\3\2\2\2\u026d\u01fc\3\2"+ + "\2\2\u026d\u020a\3\2\2\2\u026d\u0218\3\2\2\2\u026d\u0225\3\2\2\2\u026d"+ + "\u0231\3\2\2\2\u026d\u023f\3\2\2\2\u026d\u0250\3\2\2\2\u026d\u0261\3\2"+ + "\2\2\u026e%\3\2\2\2\u026f\u0270\7\66\2\2\u0270\u0271\7\'\2\2\u0271\u0272"+ + "\7[\2\2\u0272\u0273\7]\2\2\u0273\u0274\7]\2\2\u0274\u0275\7_\2\2\u0275"+ + "\u0276\7j\2\2\u0276\u0277\7n\2\2\u0277\u02d4\7\67\2\2\u0278\u0279\7\66"+ + "\2\2\u0279\u027a\7\'\2\2\u027a\u027e\7`\2\2\u027b\u027c\7[\2\2\u027c\u027d"+ + "\7c\2\2\u027d\u027f\7f\2\2\u027e\u027b\3\2\2\2\u027e\u027f\3\2\2\2\u027f"+ + "\u0280\3\2\2\2\u0280\u02d4\7\67\2\2\u0281\u0282\7\66\2\2\u0282\u0287\7"+ + "\'\2\2\u0283\u0284\7g\2\2\u0284\u0285\7[\2\2\u0285\u0286\7l\2\2\u0286"+ + "\u0288\7e\2\2\u0287\u0283\3\2\2\2\u0287\u0288\3\2\2\2\u0288\u0289\3\2"+ + "\2\2\u0289\u028a\7<\2\2\u028a\u028b\7h\2\2\u028b\u028c\7[\2\2\u028c\u028d"+ + "\7g\2\2\u028d\u028e\7_\2\2\u028e\u02d4\7\67\2\2\u028f\u0290\7\66\2\2\u0290"+ + "\u0291\7\'\2\2\u0291\u0292\7]\2\2\u0292\u0293\7i\2\2\u0293\u0294\7g\2"+ + "\2\u0294\u0295\7g\2\2\u0295\u0296\7c\2\2\u0296\u0297\7n\2\2\u0297\u02d4"+ + "\7\67\2\2\u0298\u0299\7\66\2\2\u0299\u029a\7\'\2\2\u029a\u029b\7j\2\2"+ + "\u029b\u029c\7l\2\2\u029c\u029d\7o\2\2\u029d\u029e\7h\2\2\u029e\u029f"+ + "\7_\2\2\u029f\u02d4\7\67\2\2\u02a0\u02a1\7\66\2\2\u02a1\u02a2\7\'\2\2"+ + "\u02a2\u02a3\7j\2\2\u02a3\u02a4\7l\2\2\u02a4\u02a5\7o\2\2\u02a5\u02a6"+ + "\7h\2\2\u02a6\u02a7\7_\2\2\u02a7\u02a8\7<\2\2\u02a8\u02a9\7h\2\2\u02a9"+ + "\u02aa\7[\2\2\u02aa\u02ab\7g\2\2\u02ab\u02ac\7_\2\2\u02ac\u02d4\7\67\2"+ + "\2\u02ad\u02ae\7\66\2\2\u02ae\u02af\7\'\2\2\u02af\u02b0\7m\2\2\u02b0\u02b1"+ + "\7e\2\2\u02b1\u02b2\7c\2\2\u02b2\u02b3\7j\2\2\u02b3\u02d4\7\67\2\2\u02b4"+ + "\u02b5\7\66\2\2\u02b5\u02b6\7\'\2\2\u02b6\u02b7\7m\2\2\u02b7\u02b8\7e"+ + "\2\2\u02b8\u02b9\7c\2\2\u02b9\u02ba\7j\2\2\u02ba\u02bb\7<\2\2\u02bb\u02bc"+ + "\7h\2\2\u02bc\u02bd\7[\2\2\u02bd\u02be\7g\2\2\u02be\u02bf\7_\2\2\u02bf"+ + "\u02d4\7\67\2\2\u02c0\u02c1\7\66\2\2\u02c1\u02c2\7\'\2\2\u02c2\u02c3\7"+ + "n\2\2\u02c3\u02c4\7b\2\2\u02c4\u02c5\7_\2\2\u02c5\u02c6\7h\2\2\u02c6\u02d4"+ + "\7\67\2\2\u02c7\u02c8\7\66\2\2\u02c8\u02c9\7\'\2\2\u02c9\u02ca\7n\2\2"+ + "\u02ca\u02cb\7b\2\2\u02cb\u02cc\7_\2\2\u02cc\u02cd\7h\2\2\u02cd\u02ce"+ + "\7<\2\2\u02ce\u02cf\7h\2\2\u02cf\u02d0\7[\2\2\u02d0\u02d1\7g\2\2\u02d1"+ + "\u02d2\7_\2\2\u02d2\u02d4\7\67\2\2\u02d3\u026f\3\2\2\2\u02d3\u0278\3\2"+ + "\2\2\u02d3\u0281\3\2\2\2\u02d3\u028f\3\2\2\2\u02d3\u0298\3\2\2\2\u02d3"+ + "\u02a0\3\2\2\2\u02d3\u02ad\3\2\2\2\u02d3\u02b4\3\2\2\2\u02d3\u02c0\3\2"+ + "\2\2\u02d3\u02c7\3\2\2\2\u02d4\'\3\2\2\2\u02d5\u02d6\7\66\2\2\u02d6\u02d7"+ + "\7\'\2\2\u02d7\u02d8\7]\2\2\u02d8\u02d9\7l\2\2\u02d9\u0313\7\67\2\2\u02da"+ + "\u02db\7\66\2\2\u02db\u02dc\7\'\2\2\u02dc\u02dd\7f\2\2\u02dd\u02de\7`"+ + "\2\2\u02de\u0313\7\67\2\2\u02df\u02e0\7\66\2\2\u02e0\u02e1\7\'\2\2\u02e1"+ + "\u02e2\7]\2\2\u02e2\u02e3\7l\2\2\u02e3\u02e4\7f\2\2\u02e4\u02e5\7`\2\2"+ + "\u02e5\u0313\7\67\2\2\u02e6\u02e7\7\66\2\2\u02e7\u02e8\7\'\2\2\u02e8\u02e9"+ + "\7[\2\2\u02e9\u02ea\7h\2\2\u02ea\u02eb\7s\2\2\u02eb\u02ec\7]\2\2\u02ec"+ + "\u02ed\7l\2\2\u02ed\u02ee\7f\2\2\u02ee\u02ef\7`\2\2\u02ef\u0313\7\67\2"+ + "\2\u02f0\u02f1\7\66\2\2\u02f1\u02f2\7\'\2\2\u02f2\u02f3\7[\2\2\u02f3\u02f4"+ + "\7h\2\2\u02f4\u02f5\7s\2\2\u02f5\u0313\7\67\2\2\u02f6\u02f7\7\66\2\2\u02f7"+ + "\u02f8\7\'\2\2\u02f8\u02f9\7\\\2\2\u02f9\u02fa\7m\2\2\u02fa\u02fb\7l\2"+ + "\2\u02fb\u02fc\7;\2\2\u02fc\u02fd\7[\2\2\u02fd\u02fe\7h\2\2\u02fe\u02ff"+ + "\7s\2\2\u02ff\u0300\7]\2\2\u0300\u0301\7l\2\2\u0301\u0302\7f\2\2\u0302"+ + "\u0303\7`\2\2\u0303\u0313\7\67\2\2\u0304\u0305\7\66\2\2\u0305\u0306\7"+ + "\'\2\2\u0306\u0307\7\\\2\2\u0307\u0308\7m\2\2\u0308\u0309\7l\2\2\u0309"+ + "\u030a\7;\2\2\u030a\u030b\7o\2\2\u030b\u030c\7h\2\2\u030c\u030d\7c\2\2"+ + "\u030d\u030e\7]\2\2\u030e\u030f\7i\2\2\u030f\u0310\7^\2\2\u0310\u0311"+ + "\7_\2\2\u0311\u0313\7\67\2\2\u0312\u02d5\3\2\2\2\u0312\u02da\3\2\2\2\u0312"+ + "\u02df\3\2\2\2\u0312\u02e6\3\2\2\2\u0312\u02f0\3\2\2\2\u0312\u02f6\3\2"+ + "\2\2\u0312\u0304\3\2\2\2\u0313)\3\2\2\2\u0314\u0315\7\66\2\2\u0315\u0316"+ + "\7%\2\2\u0316\u0317\7]\2\2\u0317\u031f\7\67\2\2\u0318\u0319\7\66\2\2\u0319"+ + "\u031a\7%\2\2\u031a\u031b\7]\2\2\u031b\u031c\58\35\2\u031c\u031d\7\67"+ + "\2\2\u031d\u031f\3\2\2\2\u031e\u0314\3\2\2\2\u031e\u0318\3\2\2\2\u031f"+ + "+\3\2\2\2\u0320\u033b\5\"\22\2\u0321\u033b\5\60\31\2\u0322\u033b\5\62"+ + "\32\2\u0323\u033b\5\16\b\2\u0324\u033b\5\24\13\2\u0325\u033b\5\26\f\2"+ + "\u0326\u033b\5\30\r\2\u0327\u033b\5\32\16\2\u0328\u033b\5 \21\2\u0329"+ + "\u033b\5\20\t\2\u032a\u033b\5$\23\2\u032b\u033b\5&\24\2\u032c\u033b\5"+ + "(\25\2\u032d\u033b\5*\26\2\u032e\u033b\7\16\2\2\u032f\u033b\7!\2\2\u0330"+ + "\u033b\7-\2\2\u0331\u033b\7+\2\2\u0332\u033b\7,\2\2\u0333\u033b\7.\2\2"+ + "\u0334\u033b\7/\2\2\u0335\u033b\7\60\2\2\u0336\u033b\7\61\2\2\u0337\u033b"+ + "\7\62\2\2\u0338\u033b\7\17\2\2\u0339\u033b\7\36\2\2\u033a\u0320\3\2\2"+ + "\2\u033a\u0321\3\2\2\2\u033a\u0322\3\2\2\2\u033a\u0323\3\2\2\2\u033a\u0324"+ + "\3\2\2\2\u033a\u0325\3\2\2\2\u033a\u0326\3\2\2\2\u033a\u0327\3\2\2\2\u033a"+ + "\u0328\3\2\2\2\u033a\u0329\3\2\2\2\u033a\u032a\3\2\2\2\u033a\u032b\3\2"+ + "\2\2\u033a\u032c\3\2\2\2\u033a\u032d\3\2\2\2\u033a\u032e\3\2\2\2\u033a"+ + "\u032f\3\2\2\2\u033a\u0330\3\2\2\2\u033a\u0331\3\2\2\2\u033a\u0332\3\2"+ + "\2\2\u033a\u0333\3\2\2\2\u033a\u0334\3\2\2\2\u033a\u0335\3\2\2\2\u033a"+ + "\u0336\3\2\2\2\u033a\u0337\3\2\2\2\u033a\u0338\3\2\2\2\u033a\u0339\3\2"+ + "\2\2\u033b-\3\2\2\2\u033c\u033d\5\64\33\2\u033d\u033e\7\"\2\2\u033e\u033f"+ + "\5\64\33\2\u033f\u0344\3\2\2\2\u0340\u0344\5\60\31\2\u0341\u0344\5\64"+ + "\33\2\u0342\u0344\5\22\n\2\u0343\u033c\3\2\2\2\u0343\u0340\3\2\2\2\u0343"+ + "\u0341\3\2\2\2\u0343\u0342\3\2\2\2\u0344/\3\2\2\2\u0345\u0359\7#\2\2\u0346"+ + "\u0359\7$\2\2\u0347\u0359\7\6\2\2\u0348\u0359\7\20\2\2\u0349\u0359\7\21"+ + "\2\2\u034a\u0359\7\22\2\2\u034b\u0359\7\23\2\2\u034c\u0359\7\24\2\2\u034d"+ + "\u0359\7\25\2\2\u034e\u0359\7\26\2\2\u034f\u0359\7\27\2\2\u0350\u0359"+ + "\7\30\2\2\u0351\u0359\7\31\2\2\u0352\u0359\7\32\2\2\u0353\u0359\7\33\2"+ + "\2\u0354\u0359\7\34\2\2\u0355\u0359\7\35\2\2\u0356\u0357\7\f\2\2\u0357"+ + "\u0359\13\2\2\2\u0358\u0345\3\2\2\2\u0358\u0346\3\2\2\2\u0358\u0347\3"+ + "\2\2\2\u0358\u0348\3\2\2\2\u0358\u0349\3\2\2\2\u0358\u034a\3\2\2\2\u0358"+ + "\u034b\3\2\2\2\u0358\u034c\3\2\2\2\u0358\u034d\3\2\2\2\u0358\u034e\3\2"+ + "\2\2\u0358\u034f\3\2\2\2\u0358\u0350\3\2\2\2\u0358\u0351\3\2\2\2\u0358"+ + "\u0352\3\2\2\2\u0358\u0353\3\2\2\2\u0358\u0354\3\2\2\2\u0358\u0355\3\2"+ + "\2\2\u0358\u0356\3\2\2\2\u0359\61\3\2\2\2\u035a\u035d\5\66\34\2\u035b"+ + "\u035d\7 \2\2\u035c\u035a\3\2\2\2\u035c\u035b\3\2\2\2\u035d\63\3\2\2\2"+ + "\u035e\u036b\5\66\34\2\u035f\u036b\7\16\2\2\u0360\u036b\7\37\2\2\u0361"+ + "\u036b\7!\2\2\u0362\u036b\7%\2\2\u0363\u036b\7&\2\2\u0364\u036b\7\'\2"+ + "\2\u0365\u036b\7+\2\2\u0366\u036b\7.\2\2\u0367\u036b\7\65\2\2\u0368\u036b"+ + "\7\66\2\2\u0369\u036b\7\67\2\2\u036a\u035e\3\2\2\2\u036a\u035f\3\2\2\2"+ + "\u036a\u0360\3\2\2\2\u036a\u0361\3\2\2\2\u036a\u0362\3\2\2\2\u036a\u0363"+ + "\3\2\2\2\u036a\u0364\3\2\2\2\u036a\u0365\3\2\2\2\u036a\u0366\3\2\2\2\u036a"+ + "\u0367\3\2\2\2\u036a\u0368\3\2\2\2\u036a\u0369\3\2\2\2\u036b\65\3\2\2"+ + "\2\u036c\u0387\5:\36\2\u036d\u0387\5J&\2\u036e\u0387\5@!\2\u036f\u0387"+ + "\7\5\2\2\u0370\u0387\7\7\2\2\u0371\u0387\7\b\2\2\u0372\u0387\7\t\2\2\u0373"+ + "\u0387\7\n\2\2\u0374\u0387\7\13\2\2\u0375\u0387\7\r\2\2\u0376\u0387\7"+ + "\3\2\2\u0377\u0387\7\4\2\2\u0378\u0387\7(\2\2\u0379\u0387\7)\2\2\u037a"+ + "\u0387\7*\2\2\u037b\u0387\7\"\2\2\u037c\u0387\78\2\2\u037d\u0387\79\2"+ + "\2\u037e\u0387\7:\2\2\u037f\u0387\7;\2\2\u0380\u0387\7<\2\2\u0381\u0387"+ + "\7=\2\2\u0382\u0387\7>\2\2\u0383\u0387\7?\2\2\u0384\u0387\7@\2\2\u0385"+ + "\u0387\7\177\2\2\u0386\u036c\3\2\2\2\u0386\u036d\3\2\2\2\u0386\u036e\3"+ + "\2\2\2\u0386\u036f\3\2\2\2\u0386\u0370\3\2\2\2\u0386\u0371\3\2\2\2\u0386"+ + "\u0372\3\2\2\2\u0386\u0373\3\2\2\2\u0386\u0374\3\2\2\2\u0386\u0375\3\2"+ + "\2\2\u0386\u0376\3\2\2\2\u0386\u0377\3\2\2\2\u0386\u0378\3\2\2\2\u0386"+ + "\u0379\3\2\2\2\u0386\u037a\3\2\2\2\u0386\u037b\3\2\2\2\u0386\u037c\3\2"+ + "\2\2\u0386\u037d\3\2\2\2\u0386\u037e\3\2\2\2\u0386\u037f\3\2\2\2\u0386"+ + "\u0380\3\2\2\2\u0386\u0381\3\2\2\2\u0386\u0382\3\2\2\2\u0386\u0383\3\2"+ + "\2\2\u0386\u0384\3\2\2\2\u0386\u0385\3\2\2\2\u0387\67\3\2\2\2\u0388\u0389"+ + "\5> \2\u03899\3\2\2\2\u038a\u038b\7\f\2\2\u038b\u038c\t\3\2\2\u038c\u038d"+ + "\5<\37\2\u038d\u038e\5<\37\2\u038e\u0394\3\2\2\2\u038f\u0390\7\f\2\2\u0390"+ + "\u0391\5<\37\2\u0391\u0392\5<\37\2\u0392\u0394\3\2\2\2\u0393\u038a\3\2"+ + "\2\2\u0393\u038f\3\2\2\2\u0394;\3\2\2\2\u0395\u0396\t\4\2\2\u0396=\3\2"+ + "\2\2\u0397\u0399\5@!\2\u0398\u0397\3\2\2\2\u0399\u039a\3\2\2\2\u039a\u0398"+ + "\3\2\2\2\u039a\u039b\3\2\2\2\u039b?\3\2\2\2\u039c\u039d\t\5\2\2\u039d"+ + "A\3\2\2\2\u039e\u039f\5D#\2\u039fC\3\2\2\2\u03a0\u03a3\5J&\2\u03a1\u03a3"+ + "\7;\2\2\u03a2\u03a0\3\2\2\2\u03a2\u03a1\3\2\2\2\u03a3\u03a9\3\2\2\2\u03a4"+ + "\u03a8\5J&\2\u03a5\u03a8\7;\2\2\u03a6\u03a8\5@!\2\u03a7\u03a4\3\2\2\2"+ + "\u03a7\u03a5\3\2\2\2\u03a7\u03a6\3\2\2\2\u03a8\u03ab\3\2\2\2\u03a9\u03a7"+ + "\3\2\2\2\u03a9\u03aa\3\2\2\2\u03aaE\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ac"+ + "\u03ae\5H%\2\u03ad\u03ac\3\2\2\2\u03ae\u03af\3\2\2\2\u03af\u03ad\3\2\2"+ + "\2\u03af\u03b0\3\2\2\2\u03b0G\3\2\2\2\u03b1\u03b2\n\6\2\2\u03b2I\3\2\2"+ + "\2\u03b3\u03b4\t\7\2\2\u03b4K\3\2\2\2\63TZ_y~\u0087\u0091\u009a\u00a4"+ + "\u00ad\u00b5\u00b9\u00e4\u00e9\u0108\u0123\u0161\u0166\u0184\u01d4\u01de"+ + "\u01eb\u01f8\u0206\u0214\u0221\u022d\u023b\u024c\u025d\u0269\u026d\u027e"+ + "\u0287\u02d3\u0312\u031e\u033a\u0343\u0358\u035c\u036a\u0386\u0393\u039a"+ + "\u03a2\u03a7\u03a9\u03af"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREVisitor.java b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREVisitor.java new file mode 100644 index 0000000..365da2b --- /dev/null +++ b/text-processing/src/main/java/ru/touchin/roboswag/textprocessing/pcre/parser/PCREVisitor.java @@ -0,0 +1,234 @@ +package ru.touchin.roboswag.textprocessing.pcre.parser; +import org.antlr.v4.runtime.tree.ParseTreeVisitor; + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by {@link PCREParser}. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public interface PCREVisitor extends ParseTreeVisitor { + /** + * Visit a parse tree produced by {@link PCREParser#parse}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParse(PCREParser.ParseContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#alternation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAlternation(PCREParser.AlternationContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#expr}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpr(PCREParser.ExprContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#element}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElement(PCREParser.ElementContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#quantifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQuantifier(PCREParser.QuantifierContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#quantifier_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQuantifier_type(PCREParser.Quantifier_typeContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#character_class}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCharacter_class(PCREParser.Character_classContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#backreference}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBackreference(PCREParser.BackreferenceContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#backreference_or_octal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBackreference_or_octal(PCREParser.Backreference_or_octalContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#capture}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCapture(PCREParser.CaptureContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#non_capture}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNon_capture(PCREParser.Non_captureContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#comment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitComment(PCREParser.CommentContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#option}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOption(PCREParser.OptionContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#option_flags}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOption_flags(PCREParser.Option_flagsContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#option_flag}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOption_flag(PCREParser.Option_flagContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#look_around}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLook_around(PCREParser.Look_aroundContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#subroutine_reference}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubroutine_reference(PCREParser.Subroutine_referenceContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#conditional}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConditional(PCREParser.ConditionalContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#backtrack_control}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBacktrack_control(PCREParser.Backtrack_controlContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#newline_convention}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNewline_convention(PCREParser.Newline_conventionContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#callout}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCallout(PCREParser.CalloutContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#atom}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAtom(PCREParser.AtomContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#cc_atom}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCc_atom(PCREParser.Cc_atomContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#shared_atom}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShared_atom(PCREParser.Shared_atomContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLiteral(PCREParser.LiteralContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#cc_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCc_literal(PCREParser.Cc_literalContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#shared_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitShared_literal(PCREParser.Shared_literalContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNumber(PCREParser.NumberContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#octal_char}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOctal_char(PCREParser.Octal_charContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#octal_digit}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOctal_digit(PCREParser.Octal_digitContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#digits}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDigits(PCREParser.DigitsContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#digit}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDigit(PCREParser.DigitContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitName(PCREParser.NameContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#alpha_nums}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAlpha_nums(PCREParser.Alpha_numsContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#non_close_parens}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNon_close_parens(PCREParser.Non_close_parensContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#non_close_paren}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNon_close_paren(PCREParser.Non_close_parenContext ctx); + /** + * Visit a parse tree produced by {@link PCREParser#letter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLetter(PCREParser.LetterContext ctx); +} \ No newline at end of file