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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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 extends T> visitor) {
+ if ( visitor instanceof PCREVisitor ) return ((PCREVisitor extends T>)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