From f70fec348c8b924298a97d00662e2fc0ffddb471 Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Tue, 27 Dec 2022 16:10:58 +0300 Subject: [PATCH] feat: PCRE grammar generation script was run --- TITextProcessing/Sources/PCRE/PCRE.g4 | 754 ++ TITextProcessing/Sources/PCRE/PCRE.interp | 298 + TITextProcessing/Sources/PCRE/PCRE.tokens | 241 + .../Sources/PCRE/PCREBaseListener.swift | 518 ++ .../Sources/PCRE/PCRELexer.interp | 398 + TITextProcessing/Sources/PCRE/PCRELexer.swift | 349 + .../Sources/PCRE/PCRELexer.tokens | 241 + .../Sources/PCRE/PCREListener.swift | 453 ++ .../Sources/PCRE/PCREParser.swift | 6425 +++++++++++++++++ 9 files changed, 9677 insertions(+) create mode 100644 TITextProcessing/Sources/PCRE/PCRE.g4 create mode 100644 TITextProcessing/Sources/PCRE/PCRE.interp create mode 100644 TITextProcessing/Sources/PCRE/PCRE.tokens create mode 100644 TITextProcessing/Sources/PCRE/PCREBaseListener.swift create mode 100644 TITextProcessing/Sources/PCRE/PCRELexer.interp create mode 100644 TITextProcessing/Sources/PCRE/PCRELexer.swift create mode 100644 TITextProcessing/Sources/PCRE/PCRELexer.tokens create mode 100644 TITextProcessing/Sources/PCRE/PCREListener.swift create mode 100644 TITextProcessing/Sources/PCRE/PCREParser.swift diff --git a/TITextProcessing/Sources/PCRE/PCRE.g4 b/TITextProcessing/Sources/PCRE/PCRE.g4 new file mode 100644 index 00000000..2d62e056 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCRE.g4 @@ -0,0 +1,754 @@ +/* + * Copyright (c) 2014-2022 by Bart Kiers + * + * The MIT license. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Project : PCRE Parser, an ANTLR 4 grammar for PCRE + * Developed by : Bart Kiers, bart@big-o.nl + * Also see : https://github.com/bkiers/pcre-parser + */ +grammar PCRE; + +// Most single line comments above the lexer- and parser rules +// are copied from the official PCRE man pages (last updated: +// 10 January 2012): http://www.pcre.org/pcre.txt +parse + : alternation EOF + ; + +// ALTERNATION +// +// expr|expr|expr... +alternation + : expr ('|' expr)* + ; + +expr + : element* + ; + +element + : atom quantifier? + ; + +// QUANTIFIERS +// +// ? 0 or 1, greedy +// ?+ 0 or 1, possessive +// ?? 0 or 1, lazy +// * 0 or more, greedy +// *+ 0 or more, possessive +// *? 0 or more, lazy +// + 1 or more, greedy +// ++ 1 or more, possessive +// +? 1 or more, lazy +// {n} exactly n +// {n,m} at least n, no more than m, greedy +// {n,m}+ at least n, no more than m, possessive +// {n,m}? at least n, no more than m, lazy +// {n,} n or more, greedy +// {n,}+ n or more, possessive +// {n,}? n or more, lazy +quantifier + : '?' quantifier_type + | '+' quantifier_type + | '*' quantifier_type + | '{' number '}' quantifier_type + | '{' number ',' '}' quantifier_type + | '{' number ',' number '}' quantifier_type + ; + +quantifier_type + : '+' + | '?' + | /* nothing */ + ; + +// CHARACTER CLASSES +// +// [...] positive character class +// [^...] negative character class +// [x-y] range (can be used for hex characters) +// [[:xxx:]] positive POSIX named set +// [[:^xxx:]] negative POSIX named set +// +// alnum alphanumeric +// alpha alphabetic +// ascii 0-127 +// blank space or tab +// cntrl control character +// digit decimal digit +// graph printing, excluding space +// lower lower case letter +// print printing, including space +// punct printing, excluding alphanumeric +// space white space +// upper upper case letter +// word same as \w +// xdigit hexadecimal digit +// +// In PCRE, POSIX character set names recognize only ASCII characters by +// default, but some of them use Unicode properties if PCRE_UCP is set. +// You can use \Q...\E inside a character class. +character_class + : '[' '^' CharacterClassEnd Hyphen cc_atom+ ']' + | '[' '^' CharacterClassEnd cc_atom* ']' + | '[' '^' cc_atom+ ']' + | '[' CharacterClassEnd Hyphen cc_atom+ ']' + | '[' CharacterClassEnd cc_atom* ']' + | '[' cc_atom+ ']' + ; + +// BACKREFERENCES +// +// \n reference by number (can be ambiguous) +// \gn reference by number +// \g{n} reference by number +// \g{-n} relative reference by number +// \k reference by name (Perl) +// \k'name' reference by name (Perl) +// \g{name} reference by name (Perl) +// \k{name} reference by name (.NET) +// (?P=name) reference by name (Python) +backreference + : backreference_or_octal + | '\\g' number + | '\\g' '{' number '}' + | '\\g' '{' '-' number '}' + | '\\k' '<' name '>' + | '\\k' '\'' name '\'' + | '\\g' '{' name '}' + | '\\k' '{' name '}' + | '(' '?' 'P' '=' name ')' + ; + +backreference_or_octal + : octal_char + | Backslash digit + ; + +// CAPTURING +// +// (...) capturing group +// (?...) named capturing group (Perl) +// (?'name'...) named capturing group (Perl) +// (?P...) named capturing group (Python) +// (?:...) non-capturing group +// (?|...) non-capturing group; reset group numbers for +// capturing groups in each alternative +// +// ATOMIC GROUPS +// +// (?>...) atomic, non-capturing group +capture + : '(' '?' '<' name '>' alternation ')' + | '(' '?''\'' name '\'' alternation ')' + | '(' '?' 'P' '<' name '>' alternation ')' + | '(' alternation ')' + ; + +non_capture + : '(' '?' ':' alternation ')' + | '(' '?' '|' alternation ')' + | '(' '?' '>' alternation ')' + | '(' '?' option_flags ':' alternation ')' + ; + +// COMMENT +// +// (?#....) comment (not nestable) +comment + : '(' '?' '#' non_close_parens ')' + ; + +// OPTION SETTING +// +// (?i) caseless +// (?J) allow duplicate names +// (?m) multiline +// (?s) single line (dotall) +// (?U) default ungreedy (lazy) +// (?x) extended (ignore white space) +// (?-...) unset option(s) +// +// The following are recognized only at the start of a pattern or after +// one of the newline-setting options with similar syntax: +// +// (*NO_START_OPT) no start-match optimization (PCRE_NO_START_OPTIMIZE) +// (*UTF8) set UTF-8 mode: 8-bit library (PCRE_UTF8) +// (*UTF16) set UTF-16 mode: 16-bit library (PCRE_UTF16) +// (*UCP) set PCRE_UCP (use Unicode properties for \d etc) +option + : '(' '?' option_flags '-' option_flags ')' + | '(' '?' option_flags ')' + | '(' '?' '-' option_flags ')' + | '(' '*' 'N' 'O' '_' 'S' 'T' 'A' 'R' 'T' '_' 'O' 'P' 'T' ')' + | '(' '*' 'U' 'T' 'F' '8' ')' + | '(' '*' 'U' 'T' 'F' '1' '6' ')' + | '(' '*' 'U' 'C' 'P' ')' + ; + +option_flags + : option_flag+ + ; + +option_flag + : 'i' + | 'J' + | 'm' + | 's' + | 'U' + | 'x' + ; + +// LOOKAHEAD AND LOOKBEHIND ASSERTIONS +// +// (?=...) positive look ahead +// (?!...) negative look ahead +// (?<=...) positive look behind +// (?name) call subpattern by name (Python) +// \g call subpattern by name (Oniguruma) +// \g'name' call subpattern by name (Oniguruma) +// \g call subpattern by absolute number (Oniguruma) +// \g'n' call subpattern by absolute number (Oniguruma) +// \g<+n> call subpattern by relative number (PCRE extension) +// \g'+n' call subpattern by relative number (PCRE extension) +// \g<-n> call subpattern by relative number (PCRE extension) +// \g'-n' call subpattern by relative number (PCRE extension) +subroutine_reference + : '(' '?' 'R' ')' + | '(' '?' number ')' + | '(' '?' '+' number ')' + | '(' '?' '-' number ')' + | '(' '?' '&' name ')' + | '(' '?' 'P' '>' name ')' + | '\\g' '<' name '>' + | '\\g' '\'' name '\'' + | '\\g' '<' number '>' + | '\\g' '\'' number '\'' + | '\\g' '<' '+' number '>' + | '\\g' '\'' '+' number '\'' + | '\\g' '<' '-' number '>' + | '\\g' '\'' '-' number '\'' + ; + +// CONDITIONAL PATTERNS +// +// (?(condition)yes-pattern) +// (?(condition)yes-pattern|no-pattern) +// +// (?(n)... absolute reference condition +// (?(+n)... relative reference condition +// (?(-n)... relative reference condition +// (?()... named reference condition (Perl) +// (?('name')... named reference condition (Perl) +// (?(name)... named reference condition (PCRE) +// (?(R)... overall recursion condition +// (?(Rn)... specific group recursion condition +// (?(R&name)... specific recursion condition +// (?(DEFINE)... define subpattern for reference +// (?(assert)... assertion condition +conditional + : '(' '?' '(' number ')' alternation ('|' alternation)? ')' + | '(' '?' '(' '+' number ')' alternation ('|' alternation)? ')' + | '(' '?' '(' '-' number ')' alternation ('|' alternation)? ')' + | '(' '?' '(' '<' name '>' ')' alternation ('|' alternation)? ')' + | '(' '?' '(' '\'' name '\'' ')' alternation ('|' alternation)? ')' + | '(' '?' '(' 'R' number ')' alternation ('|' alternation)? ')' + | '(' '?' '(' 'R' ')' alternation ('|' alternation)? ')' + | '(' '?' '(' 'R' '&' name ')' alternation ('|' alternation)? ')' + | '(' '?' '(' 'D' 'E' 'F' 'I' 'N' 'E' ')' alternation ('|' alternation)? ')' + | '(' '?' '(' 'a' 's' 's' 'e' 'r' 't' ')' alternation ('|' alternation)? ')' + | '(' '?' '(' name ')' alternation ('|' alternation)? ')' + ; + +// BACKTRACKING CONTROL +// +// The following act immediately they are reached: +// +// (*ACCEPT) force successful match +// (*FAIL) force backtrack; synonym (*F) +// (*MARK:NAME) set name to be passed back; synonym (*:NAME) +// +// The following act only when a subsequent match failure causes a back- +// track to reach them. They all force a match failure, but they differ in +// what happens afterwards. Those that advance the start-of-match point do +// so only if the pattern is not anchored. +// +// (*COMMIT) overall failure, no advance of starting point +// (*PRUNE) advance to next starting character +// (*PRUNE:NAME) equivalent to (*MARK:NAME)(*PRUNE) +// (*SKIP) advance to current matching position +// (*SKIP:NAME) advance to position corresponding to an earlier +// (*MARK:NAME); if not found, the (*SKIP) is ignored +// (*THEN) local failure, backtrack to next alternation +// (*THEN:NAME) equivalent to (*MARK:NAME)(*THEN) +backtrack_control + : '(' '*' 'A' 'C' 'C' 'E' 'P' 'T' ')' + | '(' '*' 'F' ('A' 'I' 'L')? ')' + | '(' '*' ('M' 'A' 'R' 'K')? ':' 'N' 'A' 'M' 'E' ')' + | '(' '*' 'C' 'O' 'M' 'M' 'I' 'T' ')' + | '(' '*' 'P' 'R' 'U' 'N' 'E' ')' + | '(' '*' 'P' 'R' 'U' 'N' 'E' ':' 'N' 'A' 'M' 'E' ')' + | '(' '*' 'S' 'K' 'I' 'P' ')' + | '(' '*' 'S' 'K' 'I' 'P' ':' 'N' 'A' 'M' 'E' ')' + | '(' '*' 'T' 'H' 'E' 'N' ')' + | '(' '*' 'T' 'H' 'E' 'N' ':' 'N' 'A' 'M' 'E' ')' + ; + +// NEWLINE CONVENTIONS +//capture +// These are recognized only at the very start of the pattern or after a +// (*BSR_...), (*UTF8), (*UTF16) or (*UCP) option. +// +// (*CR) carriage return only +// (*LF) linefeed only +// (*CRLF) carriage return followed by linefeed +// (*ANYCRLF) all three of the above +// (*ANY) any Unicode newline sequence +// +// WHAT \R MATCHES +// +// These are recognized only at the very start of the pattern or after a +// (*...) option that sets the newline convention or a UTF or UCP mode. +// +// (*BSR_ANYCRLF) CR, LF, or CRLF +// (*BSR_UNICODE) any Unicode newline sequence +newline_convention + : '(' '*' 'C' 'R' ')' + | '(' '*' 'L' 'F' ')' + | '(' '*' 'C' 'R' 'L' 'F' ')' + | '(' '*' 'A' 'N' 'Y' 'C' 'R' 'L' 'F' ')' + | '(' '*' 'A' 'N' 'Y' ')' + | '(' '*' 'B' 'S' 'R' '_' 'A' 'N' 'Y' 'C' 'R' 'L' 'F' ')' + | '(' '*' 'B' 'S' 'R' '_' 'U' 'N' 'I' 'C' 'O' 'D' 'E' ')' + ; + +// CALLOUTS +// +// (?C) callout +// (?Cn) callout with data n +callout + : '(' '?' 'C' ')' + | '(' '?' 'C' number ')' + ; + +atom + : subroutine_reference + | shared_atom + | literal + | character_class + | capture + | non_capture + | comment + | option + | look_around + | backreference + | conditional + | backtrack_control + | newline_convention + | callout + | Dot + | Caret + | StartOfSubject + | WordBoundary + | NonWordBoundary + | EndOfSubjectOrLine + | EndOfSubjectOrLineEndOfSubject + | EndOfSubject + | PreviousMatchInSubject + | ResetStartMatch + | OneDataUnit + | ExtendedUnicodeChar + ; + +cc_atom + : cc_literal Hyphen cc_literal + | shared_atom + | cc_literal + | backreference_or_octal // only octal is valid in a cc + ; + +shared_atom + : POSIXNamedSet + | POSIXNegatedNamedSet + | ControlChar + | DecimalDigit + | NotDecimalDigit + | HorizontalWhiteSpace + | NotHorizontalWhiteSpace + | NotNewLine + | CharWithProperty + | CharWithoutProperty + | NewLineSequence + | WhiteSpace + | NotWhiteSpace + | VerticalWhiteSpace + | NotVerticalWhiteSpace + | WordChar + | NotWordChar + | Backslash . // will match "unfinished" escape sequences, like `\x` + ; + +literal + : shared_literal + | CharacterClassEnd + ; + +cc_literal + : shared_literal + | Dot + | CharacterClassStart + | Caret + | QuestionMark + | Plus + | Star + | WordBoundary + | EndOfSubjectOrLine + | Pipe + | OpenParen + | CloseParen + ; + +shared_literal + : octal_char + | letter + | digit + | BellChar + | EscapeChar + | FormFeed + | NewLine + | CarriageReturn + | Tab + | HexChar + | Quoted + | BlockQuoted + | OpenBrace + | CloseBrace + | Comma + | Hyphen + | LessThan + | GreaterThan + | SingleQuote + | Underscore + | Colon + | Hash + | Equals + | Exclamation + | Ampersand + | OtherChar + ; + +number + : digits + ; + +octal_char + : ( Backslash (D0 | D1 | D2 | D3) octal_digit octal_digit + | Backslash octal_digit octal_digit + ) + + ; + +octal_digit + : D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 + ; + +digits + : digit+ + ; + +digit + : D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 + ; + +name + : alpha_nums + ; + +alpha_nums + : (letter | Underscore) (letter | Underscore | digit)* + ; + +non_close_parens + : non_close_paren+ + ; + +non_close_paren + : ~CloseParen + ; + +letter + : 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 + ; + +// QUOTING +// +// \x where x is non-alphanumeric is a literal x +// \Q...\E treat enclosed characters as literal +Quoted : '\\' NonAlphaNumeric; +BlockQuoted : '\\Q' .*? '\\E'; + +// CHARACTERS +// +// \a alarm, that is, the BEL character (hex 07) +// \cx "control-x", where x is any ASCII character +// \e escape (hex 1B) +// \f form feed (hex 0C) +// \n newline (hex 0A) +// \r carriage return (hex 0D) +// \t tab (hex 09) +// \ddd character with octal code ddd, or backreference +// \xhh character with hex code hh +// \x{hhh..} character with hex code hhh.. +BellChar : '\\a'; +ControlChar : '\\c' ASCII; +EscapeChar : '\\e'; +FormFeed : '\\f'; +NewLine : '\\n'; +CarriageReturn : '\\r'; +Tab : '\\t'; +Backslash : '\\'; +HexChar : '\\x' ( HexDigit HexDigit + | '{' HexDigit HexDigit HexDigit+ '}' + ) + ; + +// CHARACTER TYPES +// +// . any character except newline; +// in dotall mode, any character whatsoever +// \C one data unit, even in UTF mode (best avoided) +// \d a decimal digit +// \D a character that is not a decimal digit +// \h a horizontal white space character +// \H a character that is not a horizontal white space character +// \N a character that is not a newline +// \p{xx} a character with the xx property +// \P{xx} a character without the xx property +// \R a newline sequence +// \s a white space character +// \S a character that is not a white space character +// \v a vertical white space character +// \V a character that is not a vertical white space character +// \w a "word" character +// \W a "non-word" character +// \X an extended Unicode sequence +// +// In PCRE, by default, \d, \D, \s, \S, \w, and \W recognize only ASCII +// characters, even in a UTF mode. However, this can be changed by setting +// the PCRE_UCP option. +Dot : '.'; +OneDataUnit : '\\C'; +DecimalDigit : '\\d'; +NotDecimalDigit : '\\D'; +HorizontalWhiteSpace : '\\h'; +NotHorizontalWhiteSpace : '\\H'; +NotNewLine : '\\N'; +CharWithProperty : '\\p{' UnderscoreAlphaNumerics '}'; +CharWithoutProperty : '\\P{' UnderscoreAlphaNumerics '}'; +NewLineSequence : '\\R'; +WhiteSpace : '\\s'; +NotWhiteSpace : '\\S'; +VerticalWhiteSpace : '\\v'; +NotVerticalWhiteSpace : '\\V'; +WordChar : '\\w'; +NotWordChar : '\\W'; +ExtendedUnicodeChar : '\\X'; + +// CHARACTER CLASSES +// +// [...] positive character class +// [^...] negative character class +// [x-y] range (can be used for hex characters) +// [[:xxx:]] positive POSIX named set +// [[:^xxx:]] negative POSIX named set +// +// alnum alphanumeric +// alpha alphabetic +// ascii 0-127 +// blank space or tab +// cntrl control character +// digit decimal digit +// graph printing, excluding space +// lower lower case letter +// print printing, including space +// punct printing, excluding alphanumeric +// space white space +// upper upper case letter +// word same as \w +// xdigit hexadecimal digit +// +// In PCRE, POSIX character set names recognize only ASCII characters by +// default, but some of them use Unicode properties if PCRE_UCP is set. +// You can use \Q...\E inside a character class. +CharacterClassStart : '['; +CharacterClassEnd : ']'; +Caret : '^'; +Hyphen : '-'; +POSIXNamedSet : '[[:' AlphaNumerics ':]]'; +POSIXNegatedNamedSet : '[[:^' AlphaNumerics ':]]'; + +QuestionMark : '?'; +Plus : '+'; +Star : '*'; +OpenBrace : '{'; +CloseBrace : '}'; +Comma : ','; + +// ANCHORS AND SIMPLE ASSERTIONS +// +// \b word boundary +// \B not a word boundary +// ^ start of subject +// also after internal newline in multiline mode +// \A start of subject +// $ end of subject +// also before newline at end of subject +// also before internal newline in multiline mode +// \Z end of subject +// also before newline at end of subject +// \z end of subject +// \G first matching position in subject +WordBoundary : '\\b'; +NonWordBoundary : '\\B'; +StartOfSubject : '\\A'; +EndOfSubjectOrLine : '$'; +EndOfSubjectOrLineEndOfSubject : '\\Z'; +EndOfSubject : '\\z'; +PreviousMatchInSubject : '\\G'; + +// MATCH POINT RESET +// +// \K reset start of match +ResetStartMatch : '\\K'; + +SubroutineOrNamedReferenceStartG : '\\g'; +NamedReferenceStartK : '\\k'; + +Pipe : '|'; +OpenParen : '('; +CloseParen : ')'; +LessThan : '<'; +GreaterThan : '>'; +SingleQuote : '\''; +Underscore : '_'; +Colon : ':'; +Hash : '#'; +Equals : '='; +Exclamation : '!'; +Ampersand : '&'; + +ALC : 'a'; +BLC : 'b'; +CLC : 'c'; +DLC : 'd'; +ELC : 'e'; +FLC : 'f'; +GLC : 'g'; +HLC : 'h'; +ILC : 'i'; +JLC : 'j'; +KLC : 'k'; +LLC : 'l'; +MLC : 'm'; +NLC : 'n'; +OLC : 'o'; +PLC : 'p'; +QLC : 'q'; +RLC : 'r'; +SLC : 's'; +TLC : 't'; +ULC : 'u'; +VLC : 'v'; +WLC : 'w'; +XLC : 'x'; +YLC : 'y'; +ZLC : 'z'; + +AUC : 'A'; +BUC : 'B'; +CUC : 'C'; +DUC : 'D'; +EUC : 'E'; +FUC : 'F'; +GUC : 'G'; +HUC : 'H'; +IUC : 'I'; +JUC : 'J'; +KUC : 'K'; +LUC : 'L'; +MUC : 'M'; +NUC : 'N'; +OUC : 'O'; +PUC : 'P'; +QUC : 'Q'; +RUC : 'R'; +SUC : 'S'; +TUC : 'T'; +UUC : 'U'; +VUC : 'V'; +WUC : 'W'; +XUC : 'X'; +YUC : 'Y'; +ZUC : 'Z'; + +D1 : '1'; +D2 : '2'; +D3 : '3'; +D4 : '4'; +D5 : '5'; +D6 : '6'; +D7 : '7'; +D8 : '8'; +D9 : '9'; +D0 : '0'; + +OtherChar : . ; + +// fragments +fragment UnderscoreAlphaNumerics : ('_' | AlphaNumeric)+; +fragment AlphaNumerics : AlphaNumeric+; +fragment AlphaNumeric : [a-zA-Z0-9]; +fragment NonAlphaNumeric : ~[a-zA-Z0-9]; +fragment HexDigit : [0-9a-fA-F]; +fragment ASCII : [\u0000-\u007F]; diff --git a/TITextProcessing/Sources/PCRE/PCRE.interp b/TITextProcessing/Sources/PCRE/PCRE.interp new file mode 100644 index 00000000..e7e8ded5 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/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: +[4, 1, 125, 948, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 5, 1, 81, 8, 1, 10, 1, 12, 1, 84, 9, 1, 1, 2, 5, 2, 87, 8, 2, 10, 2, 12, 2, 90, 9, 2, 1, 3, 1, 3, 3, 3, 94, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 120, 8, 4, 1, 5, 1, 5, 1, 5, 3, 5, 125, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 132, 8, 6, 11, 6, 12, 6, 133, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 142, 8, 6, 10, 6, 12, 6, 145, 9, 6, 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 151, 8, 6, 11, 6, 12, 6, 152, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 161, 8, 6, 11, 6, 12, 6, 162, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 170, 8, 6, 10, 6, 12, 6, 173, 9, 6, 1, 6, 1, 6, 1, 6, 4, 6, 178, 8, 6, 11, 6, 12, 6, 179, 1, 6, 1, 6, 3, 6, 184, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 227, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 232, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 263, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 290, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 352, 8, 12, 1, 13, 4, 13, 355, 8, 13, 11, 13, 12, 13, 356, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 387, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 467, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 477, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 490, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 503, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 517, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 531, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 544, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 556, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 570, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 604, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 616, 8, 17, 1, 17, 1, 17, 3, 17, 620, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 637, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 646, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 722, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 785, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 797, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 825, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 834, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 855, 8, 23, 1, 24, 1, 24, 3, 24, 859, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 873, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 901, 8, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 914, 8, 28, 1, 29, 1, 29, 1, 30, 4, 30, 919, 8, 30, 11, 30, 12, 30, 920, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 929, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 934, 8, 33, 10, 33, 12, 33, 937, 9, 33, 1, 34, 4, 34, 940, 8, 34, 11, 34, 12, 34, 941, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 0, 0, 37, 0, 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, 0, 6, 6, 0, 71, 71, 75, 75, 81, 81, 86, 86, 98, 98, 109, 109, 2, 0, 115, 117, 124, 124, 2, 0, 115, 121, 124, 124, 1, 0, 115, 124, 1, 0, 53, 53, 1, 0, 63, 114, 1097, 0, 74, 1, 0, 0, 0, 2, 77, 1, 0, 0, 0, 4, 88, 1, 0, 0, 0, 6, 91, 1, 0, 0, 0, 8, 119, 1, 0, 0, 0, 10, 124, 1, 0, 0, 0, 12, 183, 1, 0, 0, 0, 14, 226, 1, 0, 0, 0, 16, 231, 1, 0, 0, 0, 18, 262, 1, 0, 0, 0, 20, 289, 1, 0, 0, 0, 22, 291, 1, 0, 0, 0, 24, 351, 1, 0, 0, 0, 26, 354, 1, 0, 0, 0, 28, 358, 1, 0, 0, 0, 30, 386, 1, 0, 0, 0, 32, 466, 1, 0, 0, 0, 34, 619, 1, 0, 0, 0, 36, 721, 1, 0, 0, 0, 38, 784, 1, 0, 0, 0, 40, 796, 1, 0, 0, 0, 42, 824, 1, 0, 0, 0, 44, 833, 1, 0, 0, 0, 46, 854, 1, 0, 0, 0, 48, 858, 1, 0, 0, 0, 50, 872, 1, 0, 0, 0, 52, 900, 1, 0, 0, 0, 54, 902, 1, 0, 0, 0, 56, 913, 1, 0, 0, 0, 58, 915, 1, 0, 0, 0, 60, 918, 1, 0, 0, 0, 62, 922, 1, 0, 0, 0, 64, 924, 1, 0, 0, 0, 66, 928, 1, 0, 0, 0, 68, 939, 1, 0, 0, 0, 70, 943, 1, 0, 0, 0, 72, 945, 1, 0, 0, 0, 74, 75, 3, 2, 1, 0, 75, 76, 5, 0, 0, 1, 76, 1, 1, 0, 0, 0, 77, 82, 3, 4, 2, 0, 78, 79, 5, 51, 0, 0, 79, 81, 3, 4, 2, 0, 80, 78, 1, 0, 0, 0, 81, 84, 1, 0, 0, 0, 82, 80, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 3, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 87, 3, 6, 3, 0, 86, 85, 1, 0, 0, 0, 87, 90, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 88, 89, 1, 0, 0, 0, 89, 5, 1, 0, 0, 0, 90, 88, 1, 0, 0, 0, 91, 93, 3, 42, 21, 0, 92, 94, 3, 8, 4, 0, 93, 92, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 7, 1, 0, 0, 0, 95, 96, 5, 35, 0, 0, 96, 120, 3, 10, 5, 0, 97, 98, 5, 36, 0, 0, 98, 120, 3, 10, 5, 0, 99, 100, 5, 37, 0, 0, 100, 120, 3, 10, 5, 0, 101, 102, 5, 38, 0, 0, 102, 103, 3, 54, 27, 0, 103, 104, 5, 39, 0, 0, 104, 105, 3, 10, 5, 0, 105, 120, 1, 0, 0, 0, 106, 107, 5, 38, 0, 0, 107, 108, 3, 54, 27, 0, 108, 109, 5, 40, 0, 0, 109, 110, 5, 39, 0, 0, 110, 111, 3, 10, 5, 0, 111, 120, 1, 0, 0, 0, 112, 113, 5, 38, 0, 0, 113, 114, 3, 54, 27, 0, 114, 115, 5, 40, 0, 0, 115, 116, 3, 54, 27, 0, 116, 117, 5, 39, 0, 0, 117, 118, 3, 10, 5, 0, 118, 120, 1, 0, 0, 0, 119, 95, 1, 0, 0, 0, 119, 97, 1, 0, 0, 0, 119, 99, 1, 0, 0, 0, 119, 101, 1, 0, 0, 0, 119, 106, 1, 0, 0, 0, 119, 112, 1, 0, 0, 0, 120, 9, 1, 0, 0, 0, 121, 125, 5, 36, 0, 0, 122, 125, 5, 35, 0, 0, 123, 125, 1, 0, 0, 0, 124, 121, 1, 0, 0, 0, 124, 122, 1, 0, 0, 0, 124, 123, 1, 0, 0, 0, 125, 11, 1, 0, 0, 0, 126, 127, 5, 29, 0, 0, 127, 128, 5, 31, 0, 0, 128, 129, 5, 30, 0, 0, 129, 131, 5, 32, 0, 0, 130, 132, 3, 44, 22, 0, 131, 130, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 5, 30, 0, 0, 136, 184, 1, 0, 0, 0, 137, 138, 5, 29, 0, 0, 138, 139, 5, 31, 0, 0, 139, 143, 5, 30, 0, 0, 140, 142, 3, 44, 22, 0, 141, 140, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 184, 5, 30, 0, 0, 147, 148, 5, 29, 0, 0, 148, 150, 5, 31, 0, 0, 149, 151, 3, 44, 22, 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 155, 5, 30, 0, 0, 155, 184, 1, 0, 0, 0, 156, 157, 5, 29, 0, 0, 157, 158, 5, 30, 0, 0, 158, 160, 5, 32, 0, 0, 159, 161, 3, 44, 22, 0, 160, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 5, 30, 0, 0, 165, 184, 1, 0, 0, 0, 166, 167, 5, 29, 0, 0, 167, 171, 5, 30, 0, 0, 168, 170, 3, 44, 22, 0, 169, 168, 1, 0, 0, 0, 170, 173, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 174, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 174, 184, 5, 30, 0, 0, 175, 177, 5, 29, 0, 0, 176, 178, 3, 44, 22, 0, 177, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 5, 30, 0, 0, 182, 184, 1, 0, 0, 0, 183, 126, 1, 0, 0, 0, 183, 137, 1, 0, 0, 0, 183, 147, 1, 0, 0, 0, 183, 156, 1, 0, 0, 0, 183, 166, 1, 0, 0, 0, 183, 175, 1, 0, 0, 0, 184, 13, 1, 0, 0, 0, 185, 227, 3, 16, 8, 0, 186, 187, 5, 49, 0, 0, 187, 227, 3, 54, 27, 0, 188, 189, 5, 49, 0, 0, 189, 190, 5, 38, 0, 0, 190, 191, 3, 54, 27, 0, 191, 192, 5, 39, 0, 0, 192, 227, 1, 0, 0, 0, 193, 194, 5, 49, 0, 0, 194, 195, 5, 38, 0, 0, 195, 196, 5, 32, 0, 0, 196, 197, 3, 54, 27, 0, 197, 198, 5, 39, 0, 0, 198, 227, 1, 0, 0, 0, 199, 200, 5, 50, 0, 0, 200, 201, 5, 54, 0, 0, 201, 202, 3, 64, 32, 0, 202, 203, 5, 55, 0, 0, 203, 227, 1, 0, 0, 0, 204, 205, 5, 50, 0, 0, 205, 206, 5, 56, 0, 0, 206, 207, 3, 64, 32, 0, 207, 208, 5, 56, 0, 0, 208, 227, 1, 0, 0, 0, 209, 210, 5, 49, 0, 0, 210, 211, 5, 38, 0, 0, 211, 212, 3, 64, 32, 0, 212, 213, 5, 39, 0, 0, 213, 227, 1, 0, 0, 0, 214, 215, 5, 50, 0, 0, 215, 216, 5, 38, 0, 0, 216, 217, 3, 64, 32, 0, 217, 218, 5, 39, 0, 0, 218, 227, 1, 0, 0, 0, 219, 220, 5, 52, 0, 0, 220, 221, 5, 35, 0, 0, 221, 222, 5, 104, 0, 0, 222, 223, 5, 60, 0, 0, 223, 224, 3, 64, 32, 0, 224, 225, 5, 53, 0, 0, 225, 227, 1, 0, 0, 0, 226, 185, 1, 0, 0, 0, 226, 186, 1, 0, 0, 0, 226, 188, 1, 0, 0, 0, 226, 193, 1, 0, 0, 0, 226, 199, 1, 0, 0, 0, 226, 204, 1, 0, 0, 0, 226, 209, 1, 0, 0, 0, 226, 214, 1, 0, 0, 0, 226, 219, 1, 0, 0, 0, 227, 15, 1, 0, 0, 0, 228, 232, 3, 56, 28, 0, 229, 230, 5, 10, 0, 0, 230, 232, 3, 62, 31, 0, 231, 228, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 17, 1, 0, 0, 0, 233, 234, 5, 52, 0, 0, 234, 235, 5, 35, 0, 0, 235, 236, 5, 54, 0, 0, 236, 237, 3, 64, 32, 0, 237, 238, 5, 55, 0, 0, 238, 239, 3, 2, 1, 0, 239, 240, 5, 53, 0, 0, 240, 263, 1, 0, 0, 0, 241, 242, 5, 52, 0, 0, 242, 243, 5, 35, 0, 0, 243, 244, 5, 56, 0, 0, 244, 245, 3, 64, 32, 0, 245, 246, 5, 56, 0, 0, 246, 247, 3, 2, 1, 0, 247, 248, 5, 53, 0, 0, 248, 263, 1, 0, 0, 0, 249, 250, 5, 52, 0, 0, 250, 251, 5, 35, 0, 0, 251, 252, 5, 104, 0, 0, 252, 253, 5, 54, 0, 0, 253, 254, 3, 64, 32, 0, 254, 255, 5, 55, 0, 0, 255, 256, 3, 2, 1, 0, 256, 257, 5, 53, 0, 0, 257, 263, 1, 0, 0, 0, 258, 259, 5, 52, 0, 0, 259, 260, 3, 2, 1, 0, 260, 261, 5, 53, 0, 0, 261, 263, 1, 0, 0, 0, 262, 233, 1, 0, 0, 0, 262, 241, 1, 0, 0, 0, 262, 249, 1, 0, 0, 0, 262, 258, 1, 0, 0, 0, 263, 19, 1, 0, 0, 0, 264, 265, 5, 52, 0, 0, 265, 266, 5, 35, 0, 0, 266, 267, 5, 58, 0, 0, 267, 268, 3, 2, 1, 0, 268, 269, 5, 53, 0, 0, 269, 290, 1, 0, 0, 0, 270, 271, 5, 52, 0, 0, 271, 272, 5, 35, 0, 0, 272, 273, 5, 51, 0, 0, 273, 274, 3, 2, 1, 0, 274, 275, 5, 53, 0, 0, 275, 290, 1, 0, 0, 0, 276, 277, 5, 52, 0, 0, 277, 278, 5, 35, 0, 0, 278, 279, 5, 55, 0, 0, 279, 280, 3, 2, 1, 0, 280, 281, 5, 53, 0, 0, 281, 290, 1, 0, 0, 0, 282, 283, 5, 52, 0, 0, 283, 284, 5, 35, 0, 0, 284, 285, 3, 26, 13, 0, 285, 286, 5, 58, 0, 0, 286, 287, 3, 2, 1, 0, 287, 288, 5, 53, 0, 0, 288, 290, 1, 0, 0, 0, 289, 264, 1, 0, 0, 0, 289, 270, 1, 0, 0, 0, 289, 276, 1, 0, 0, 0, 289, 282, 1, 0, 0, 0, 290, 21, 1, 0, 0, 0, 291, 292, 5, 52, 0, 0, 292, 293, 5, 35, 0, 0, 293, 294, 5, 59, 0, 0, 294, 295, 3, 68, 34, 0, 295, 296, 5, 53, 0, 0, 296, 23, 1, 0, 0, 0, 297, 298, 5, 52, 0, 0, 298, 299, 5, 35, 0, 0, 299, 300, 3, 26, 13, 0, 300, 301, 5, 32, 0, 0, 301, 302, 3, 26, 13, 0, 302, 303, 5, 53, 0, 0, 303, 352, 1, 0, 0, 0, 304, 305, 5, 52, 0, 0, 305, 306, 5, 35, 0, 0, 306, 307, 3, 26, 13, 0, 307, 308, 5, 53, 0, 0, 308, 352, 1, 0, 0, 0, 309, 310, 5, 52, 0, 0, 310, 311, 5, 35, 0, 0, 311, 312, 5, 32, 0, 0, 312, 313, 3, 26, 13, 0, 313, 314, 5, 53, 0, 0, 314, 352, 1, 0, 0, 0, 315, 316, 5, 52, 0, 0, 316, 317, 5, 37, 0, 0, 317, 318, 5, 102, 0, 0, 318, 319, 5, 103, 0, 0, 319, 320, 5, 57, 0, 0, 320, 321, 5, 107, 0, 0, 321, 322, 5, 108, 0, 0, 322, 323, 5, 89, 0, 0, 323, 324, 5, 106, 0, 0, 324, 325, 5, 108, 0, 0, 325, 326, 5, 57, 0, 0, 326, 327, 5, 103, 0, 0, 327, 328, 5, 104, 0, 0, 328, 329, 5, 108, 0, 0, 329, 352, 5, 53, 0, 0, 330, 331, 5, 52, 0, 0, 331, 332, 5, 37, 0, 0, 332, 333, 5, 109, 0, 0, 333, 334, 5, 108, 0, 0, 334, 335, 5, 94, 0, 0, 335, 336, 5, 122, 0, 0, 336, 352, 5, 53, 0, 0, 337, 338, 5, 52, 0, 0, 338, 339, 5, 37, 0, 0, 339, 340, 5, 109, 0, 0, 340, 341, 5, 108, 0, 0, 341, 342, 5, 94, 0, 0, 342, 343, 5, 115, 0, 0, 343, 344, 5, 120, 0, 0, 344, 352, 5, 53, 0, 0, 345, 346, 5, 52, 0, 0, 346, 347, 5, 37, 0, 0, 347, 348, 5, 109, 0, 0, 348, 349, 5, 91, 0, 0, 349, 350, 5, 104, 0, 0, 350, 352, 5, 53, 0, 0, 351, 297, 1, 0, 0, 0, 351, 304, 1, 0, 0, 0, 351, 309, 1, 0, 0, 0, 351, 315, 1, 0, 0, 0, 351, 330, 1, 0, 0, 0, 351, 337, 1, 0, 0, 0, 351, 345, 1, 0, 0, 0, 352, 25, 1, 0, 0, 0, 353, 355, 3, 28, 14, 0, 354, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 27, 1, 0, 0, 0, 358, 359, 7, 0, 0, 0, 359, 29, 1, 0, 0, 0, 360, 361, 5, 52, 0, 0, 361, 362, 5, 35, 0, 0, 362, 363, 5, 60, 0, 0, 363, 364, 3, 2, 1, 0, 364, 365, 5, 53, 0, 0, 365, 387, 1, 0, 0, 0, 366, 367, 5, 52, 0, 0, 367, 368, 5, 35, 0, 0, 368, 369, 5, 61, 0, 0, 369, 370, 3, 2, 1, 0, 370, 371, 5, 53, 0, 0, 371, 387, 1, 0, 0, 0, 372, 373, 5, 52, 0, 0, 373, 374, 5, 35, 0, 0, 374, 375, 5, 54, 0, 0, 375, 376, 5, 60, 0, 0, 376, 377, 3, 2, 1, 0, 377, 378, 5, 53, 0, 0, 378, 387, 1, 0, 0, 0, 379, 380, 5, 52, 0, 0, 380, 381, 5, 35, 0, 0, 381, 382, 5, 54, 0, 0, 382, 383, 5, 61, 0, 0, 383, 384, 3, 2, 1, 0, 384, 385, 5, 53, 0, 0, 385, 387, 1, 0, 0, 0, 386, 360, 1, 0, 0, 0, 386, 366, 1, 0, 0, 0, 386, 372, 1, 0, 0, 0, 386, 379, 1, 0, 0, 0, 387, 31, 1, 0, 0, 0, 388, 389, 5, 52, 0, 0, 389, 390, 5, 35, 0, 0, 390, 391, 5, 106, 0, 0, 391, 467, 5, 53, 0, 0, 392, 393, 5, 52, 0, 0, 393, 394, 5, 35, 0, 0, 394, 395, 3, 54, 27, 0, 395, 396, 5, 53, 0, 0, 396, 467, 1, 0, 0, 0, 397, 398, 5, 52, 0, 0, 398, 399, 5, 35, 0, 0, 399, 400, 5, 36, 0, 0, 400, 401, 3, 54, 27, 0, 401, 402, 5, 53, 0, 0, 402, 467, 1, 0, 0, 0, 403, 404, 5, 52, 0, 0, 404, 405, 5, 35, 0, 0, 405, 406, 5, 32, 0, 0, 406, 407, 3, 54, 27, 0, 407, 408, 5, 53, 0, 0, 408, 467, 1, 0, 0, 0, 409, 410, 5, 52, 0, 0, 410, 411, 5, 35, 0, 0, 411, 412, 5, 62, 0, 0, 412, 413, 3, 64, 32, 0, 413, 414, 5, 53, 0, 0, 414, 467, 1, 0, 0, 0, 415, 416, 5, 52, 0, 0, 416, 417, 5, 35, 0, 0, 417, 418, 5, 104, 0, 0, 418, 419, 5, 55, 0, 0, 419, 420, 3, 64, 32, 0, 420, 421, 5, 53, 0, 0, 421, 467, 1, 0, 0, 0, 422, 423, 5, 49, 0, 0, 423, 424, 5, 54, 0, 0, 424, 425, 3, 64, 32, 0, 425, 426, 5, 55, 0, 0, 426, 467, 1, 0, 0, 0, 427, 428, 5, 49, 0, 0, 428, 429, 5, 56, 0, 0, 429, 430, 3, 64, 32, 0, 430, 431, 5, 56, 0, 0, 431, 467, 1, 0, 0, 0, 432, 433, 5, 49, 0, 0, 433, 434, 5, 54, 0, 0, 434, 435, 3, 54, 27, 0, 435, 436, 5, 55, 0, 0, 436, 467, 1, 0, 0, 0, 437, 438, 5, 49, 0, 0, 438, 439, 5, 56, 0, 0, 439, 440, 3, 54, 27, 0, 440, 441, 5, 56, 0, 0, 441, 467, 1, 0, 0, 0, 442, 443, 5, 49, 0, 0, 443, 444, 5, 54, 0, 0, 444, 445, 5, 36, 0, 0, 445, 446, 3, 54, 27, 0, 446, 447, 5, 55, 0, 0, 447, 467, 1, 0, 0, 0, 448, 449, 5, 49, 0, 0, 449, 450, 5, 56, 0, 0, 450, 451, 5, 36, 0, 0, 451, 452, 3, 54, 27, 0, 452, 453, 5, 56, 0, 0, 453, 467, 1, 0, 0, 0, 454, 455, 5, 49, 0, 0, 455, 456, 5, 54, 0, 0, 456, 457, 5, 32, 0, 0, 457, 458, 3, 54, 27, 0, 458, 459, 5, 55, 0, 0, 459, 467, 1, 0, 0, 0, 460, 461, 5, 49, 0, 0, 461, 462, 5, 56, 0, 0, 462, 463, 5, 32, 0, 0, 463, 464, 3, 54, 27, 0, 464, 465, 5, 56, 0, 0, 465, 467, 1, 0, 0, 0, 466, 388, 1, 0, 0, 0, 466, 392, 1, 0, 0, 0, 466, 397, 1, 0, 0, 0, 466, 403, 1, 0, 0, 0, 466, 409, 1, 0, 0, 0, 466, 415, 1, 0, 0, 0, 466, 422, 1, 0, 0, 0, 466, 427, 1, 0, 0, 0, 466, 432, 1, 0, 0, 0, 466, 437, 1, 0, 0, 0, 466, 442, 1, 0, 0, 0, 466, 448, 1, 0, 0, 0, 466, 454, 1, 0, 0, 0, 466, 460, 1, 0, 0, 0, 467, 33, 1, 0, 0, 0, 468, 469, 5, 52, 0, 0, 469, 470, 5, 35, 0, 0, 470, 471, 5, 52, 0, 0, 471, 472, 3, 54, 27, 0, 472, 473, 5, 53, 0, 0, 473, 476, 3, 2, 1, 0, 474, 475, 5, 51, 0, 0, 475, 477, 3, 2, 1, 0, 476, 474, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 479, 5, 53, 0, 0, 479, 620, 1, 0, 0, 0, 480, 481, 5, 52, 0, 0, 481, 482, 5, 35, 0, 0, 482, 483, 5, 52, 0, 0, 483, 484, 5, 36, 0, 0, 484, 485, 3, 54, 27, 0, 485, 486, 5, 53, 0, 0, 486, 489, 3, 2, 1, 0, 487, 488, 5, 51, 0, 0, 488, 490, 3, 2, 1, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 5, 53, 0, 0, 492, 620, 1, 0, 0, 0, 493, 494, 5, 52, 0, 0, 494, 495, 5, 35, 0, 0, 495, 496, 5, 52, 0, 0, 496, 497, 5, 32, 0, 0, 497, 498, 3, 54, 27, 0, 498, 499, 5, 53, 0, 0, 499, 502, 3, 2, 1, 0, 500, 501, 5, 51, 0, 0, 501, 503, 3, 2, 1, 0, 502, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 5, 53, 0, 0, 505, 620, 1, 0, 0, 0, 506, 507, 5, 52, 0, 0, 507, 508, 5, 35, 0, 0, 508, 509, 5, 52, 0, 0, 509, 510, 5, 54, 0, 0, 510, 511, 3, 64, 32, 0, 511, 512, 5, 55, 0, 0, 512, 513, 5, 53, 0, 0, 513, 516, 3, 2, 1, 0, 514, 515, 5, 51, 0, 0, 515, 517, 3, 2, 1, 0, 516, 514, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 519, 5, 53, 0, 0, 519, 620, 1, 0, 0, 0, 520, 521, 5, 52, 0, 0, 521, 522, 5, 35, 0, 0, 522, 523, 5, 52, 0, 0, 523, 524, 5, 56, 0, 0, 524, 525, 3, 64, 32, 0, 525, 526, 5, 56, 0, 0, 526, 527, 5, 53, 0, 0, 527, 530, 3, 2, 1, 0, 528, 529, 5, 51, 0, 0, 529, 531, 3, 2, 1, 0, 530, 528, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 5, 53, 0, 0, 533, 620, 1, 0, 0, 0, 534, 535, 5, 52, 0, 0, 535, 536, 5, 35, 0, 0, 536, 537, 5, 52, 0, 0, 537, 538, 5, 106, 0, 0, 538, 539, 3, 54, 27, 0, 539, 540, 5, 53, 0, 0, 540, 543, 3, 2, 1, 0, 541, 542, 5, 51, 0, 0, 542, 544, 3, 2, 1, 0, 543, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 5, 53, 0, 0, 546, 620, 1, 0, 0, 0, 547, 548, 5, 52, 0, 0, 548, 549, 5, 35, 0, 0, 549, 550, 5, 52, 0, 0, 550, 551, 5, 106, 0, 0, 551, 552, 5, 53, 0, 0, 552, 555, 3, 2, 1, 0, 553, 554, 5, 51, 0, 0, 554, 556, 3, 2, 1, 0, 555, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 558, 5, 53, 0, 0, 558, 620, 1, 0, 0, 0, 559, 560, 5, 52, 0, 0, 560, 561, 5, 35, 0, 0, 561, 562, 5, 52, 0, 0, 562, 563, 5, 106, 0, 0, 563, 564, 5, 62, 0, 0, 564, 565, 3, 64, 32, 0, 565, 566, 5, 53, 0, 0, 566, 569, 3, 2, 1, 0, 567, 568, 5, 51, 0, 0, 568, 570, 3, 2, 1, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 572, 5, 53, 0, 0, 572, 620, 1, 0, 0, 0, 573, 574, 5, 52, 0, 0, 574, 575, 5, 35, 0, 0, 575, 576, 5, 52, 0, 0, 576, 577, 5, 92, 0, 0, 577, 578, 5, 93, 0, 0, 578, 579, 5, 94, 0, 0, 579, 580, 5, 97, 0, 0, 580, 581, 5, 102, 0, 0, 581, 582, 5, 93, 0, 0, 582, 583, 5, 53, 0, 0, 583, 586, 3, 2, 1, 0, 584, 585, 5, 51, 0, 0, 585, 587, 3, 2, 1, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 5, 53, 0, 0, 589, 620, 1, 0, 0, 0, 590, 591, 5, 52, 0, 0, 591, 592, 5, 35, 0, 0, 592, 593, 5, 52, 0, 0, 593, 594, 5, 63, 0, 0, 594, 595, 5, 81, 0, 0, 595, 596, 5, 81, 0, 0, 596, 597, 5, 67, 0, 0, 597, 598, 5, 80, 0, 0, 598, 599, 5, 82, 0, 0, 599, 600, 5, 53, 0, 0, 600, 603, 3, 2, 1, 0, 601, 602, 5, 51, 0, 0, 602, 604, 3, 2, 1, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 5, 53, 0, 0, 606, 620, 1, 0, 0, 0, 607, 608, 5, 52, 0, 0, 608, 609, 5, 35, 0, 0, 609, 610, 5, 52, 0, 0, 610, 611, 3, 64, 32, 0, 611, 612, 5, 53, 0, 0, 612, 615, 3, 2, 1, 0, 613, 614, 5, 51, 0, 0, 614, 616, 3, 2, 1, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 5, 53, 0, 0, 618, 620, 1, 0, 0, 0, 619, 468, 1, 0, 0, 0, 619, 480, 1, 0, 0, 0, 619, 493, 1, 0, 0, 0, 619, 506, 1, 0, 0, 0, 619, 520, 1, 0, 0, 0, 619, 534, 1, 0, 0, 0, 619, 547, 1, 0, 0, 0, 619, 559, 1, 0, 0, 0, 619, 573, 1, 0, 0, 0, 619, 590, 1, 0, 0, 0, 619, 607, 1, 0, 0, 0, 620, 35, 1, 0, 0, 0, 621, 622, 5, 52, 0, 0, 622, 623, 5, 37, 0, 0, 623, 624, 5, 89, 0, 0, 624, 625, 5, 91, 0, 0, 625, 626, 5, 91, 0, 0, 626, 627, 5, 93, 0, 0, 627, 628, 5, 104, 0, 0, 628, 629, 5, 108, 0, 0, 629, 722, 5, 53, 0, 0, 630, 631, 5, 52, 0, 0, 631, 632, 5, 37, 0, 0, 632, 636, 5, 94, 0, 0, 633, 634, 5, 89, 0, 0, 634, 635, 5, 97, 0, 0, 635, 637, 5, 100, 0, 0, 636, 633, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 722, 5, 53, 0, 0, 639, 640, 5, 52, 0, 0, 640, 645, 5, 37, 0, 0, 641, 642, 5, 101, 0, 0, 642, 643, 5, 89, 0, 0, 643, 644, 5, 106, 0, 0, 644, 646, 5, 99, 0, 0, 645, 641, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 5, 58, 0, 0, 648, 649, 5, 102, 0, 0, 649, 650, 5, 89, 0, 0, 650, 651, 5, 101, 0, 0, 651, 652, 5, 93, 0, 0, 652, 722, 5, 53, 0, 0, 653, 654, 5, 52, 0, 0, 654, 655, 5, 37, 0, 0, 655, 656, 5, 91, 0, 0, 656, 657, 5, 103, 0, 0, 657, 658, 5, 101, 0, 0, 658, 659, 5, 101, 0, 0, 659, 660, 5, 97, 0, 0, 660, 661, 5, 108, 0, 0, 661, 722, 5, 53, 0, 0, 662, 663, 5, 52, 0, 0, 663, 664, 5, 37, 0, 0, 664, 665, 5, 104, 0, 0, 665, 666, 5, 106, 0, 0, 666, 667, 5, 109, 0, 0, 667, 668, 5, 102, 0, 0, 668, 669, 5, 93, 0, 0, 669, 722, 5, 53, 0, 0, 670, 671, 5, 52, 0, 0, 671, 672, 5, 37, 0, 0, 672, 673, 5, 104, 0, 0, 673, 674, 5, 106, 0, 0, 674, 675, 5, 109, 0, 0, 675, 676, 5, 102, 0, 0, 676, 677, 5, 93, 0, 0, 677, 678, 5, 58, 0, 0, 678, 679, 5, 102, 0, 0, 679, 680, 5, 89, 0, 0, 680, 681, 5, 101, 0, 0, 681, 682, 5, 93, 0, 0, 682, 722, 5, 53, 0, 0, 683, 684, 5, 52, 0, 0, 684, 685, 5, 37, 0, 0, 685, 686, 5, 107, 0, 0, 686, 687, 5, 99, 0, 0, 687, 688, 5, 97, 0, 0, 688, 689, 5, 104, 0, 0, 689, 722, 5, 53, 0, 0, 690, 691, 5, 52, 0, 0, 691, 692, 5, 37, 0, 0, 692, 693, 5, 107, 0, 0, 693, 694, 5, 99, 0, 0, 694, 695, 5, 97, 0, 0, 695, 696, 5, 104, 0, 0, 696, 697, 5, 58, 0, 0, 697, 698, 5, 102, 0, 0, 698, 699, 5, 89, 0, 0, 699, 700, 5, 101, 0, 0, 700, 701, 5, 93, 0, 0, 701, 722, 5, 53, 0, 0, 702, 703, 5, 52, 0, 0, 703, 704, 5, 37, 0, 0, 704, 705, 5, 108, 0, 0, 705, 706, 5, 96, 0, 0, 706, 707, 5, 93, 0, 0, 707, 708, 5, 102, 0, 0, 708, 722, 5, 53, 0, 0, 709, 710, 5, 52, 0, 0, 710, 711, 5, 37, 0, 0, 711, 712, 5, 108, 0, 0, 712, 713, 5, 96, 0, 0, 713, 714, 5, 93, 0, 0, 714, 715, 5, 102, 0, 0, 715, 716, 5, 58, 0, 0, 716, 717, 5, 102, 0, 0, 717, 718, 5, 89, 0, 0, 718, 719, 5, 101, 0, 0, 719, 720, 5, 93, 0, 0, 720, 722, 5, 53, 0, 0, 721, 621, 1, 0, 0, 0, 721, 630, 1, 0, 0, 0, 721, 639, 1, 0, 0, 0, 721, 653, 1, 0, 0, 0, 721, 662, 1, 0, 0, 0, 721, 670, 1, 0, 0, 0, 721, 683, 1, 0, 0, 0, 721, 690, 1, 0, 0, 0, 721, 702, 1, 0, 0, 0, 721, 709, 1, 0, 0, 0, 722, 37, 1, 0, 0, 0, 723, 724, 5, 52, 0, 0, 724, 725, 5, 37, 0, 0, 725, 726, 5, 91, 0, 0, 726, 727, 5, 106, 0, 0, 727, 785, 5, 53, 0, 0, 728, 729, 5, 52, 0, 0, 729, 730, 5, 37, 0, 0, 730, 731, 5, 100, 0, 0, 731, 732, 5, 94, 0, 0, 732, 785, 5, 53, 0, 0, 733, 734, 5, 52, 0, 0, 734, 735, 5, 37, 0, 0, 735, 736, 5, 91, 0, 0, 736, 737, 5, 106, 0, 0, 737, 738, 5, 100, 0, 0, 738, 739, 5, 94, 0, 0, 739, 785, 5, 53, 0, 0, 740, 741, 5, 52, 0, 0, 741, 742, 5, 37, 0, 0, 742, 743, 5, 89, 0, 0, 743, 744, 5, 102, 0, 0, 744, 745, 5, 113, 0, 0, 745, 746, 5, 91, 0, 0, 746, 747, 5, 106, 0, 0, 747, 748, 5, 100, 0, 0, 748, 749, 5, 94, 0, 0, 749, 785, 5, 53, 0, 0, 750, 751, 5, 52, 0, 0, 751, 752, 5, 37, 0, 0, 752, 753, 5, 89, 0, 0, 753, 754, 5, 102, 0, 0, 754, 755, 5, 113, 0, 0, 755, 785, 5, 53, 0, 0, 756, 757, 5, 52, 0, 0, 757, 758, 5, 37, 0, 0, 758, 759, 5, 90, 0, 0, 759, 760, 5, 107, 0, 0, 760, 761, 5, 106, 0, 0, 761, 762, 5, 57, 0, 0, 762, 763, 5, 89, 0, 0, 763, 764, 5, 102, 0, 0, 764, 765, 5, 113, 0, 0, 765, 766, 5, 91, 0, 0, 766, 767, 5, 106, 0, 0, 767, 768, 5, 100, 0, 0, 768, 769, 5, 94, 0, 0, 769, 785, 5, 53, 0, 0, 770, 771, 5, 52, 0, 0, 771, 772, 5, 37, 0, 0, 772, 773, 5, 90, 0, 0, 773, 774, 5, 107, 0, 0, 774, 775, 5, 106, 0, 0, 775, 776, 5, 57, 0, 0, 776, 777, 5, 109, 0, 0, 777, 778, 5, 102, 0, 0, 778, 779, 5, 97, 0, 0, 779, 780, 5, 91, 0, 0, 780, 781, 5, 103, 0, 0, 781, 782, 5, 92, 0, 0, 782, 783, 5, 93, 0, 0, 783, 785, 5, 53, 0, 0, 784, 723, 1, 0, 0, 0, 784, 728, 1, 0, 0, 0, 784, 733, 1, 0, 0, 0, 784, 740, 1, 0, 0, 0, 784, 750, 1, 0, 0, 0, 784, 756, 1, 0, 0, 0, 784, 770, 1, 0, 0, 0, 785, 39, 1, 0, 0, 0, 786, 787, 5, 52, 0, 0, 787, 788, 5, 35, 0, 0, 788, 789, 5, 91, 0, 0, 789, 797, 5, 53, 0, 0, 790, 791, 5, 52, 0, 0, 791, 792, 5, 35, 0, 0, 792, 793, 5, 91, 0, 0, 793, 794, 3, 54, 27, 0, 794, 795, 5, 53, 0, 0, 795, 797, 1, 0, 0, 0, 796, 786, 1, 0, 0, 0, 796, 790, 1, 0, 0, 0, 797, 41, 1, 0, 0, 0, 798, 825, 3, 32, 16, 0, 799, 825, 3, 46, 23, 0, 800, 825, 3, 48, 24, 0, 801, 825, 3, 12, 6, 0, 802, 825, 3, 18, 9, 0, 803, 825, 3, 20, 10, 0, 804, 825, 3, 22, 11, 0, 805, 825, 3, 24, 12, 0, 806, 825, 3, 30, 15, 0, 807, 825, 3, 14, 7, 0, 808, 825, 3, 34, 17, 0, 809, 825, 3, 36, 18, 0, 810, 825, 3, 38, 19, 0, 811, 825, 3, 40, 20, 0, 812, 825, 5, 12, 0, 0, 813, 825, 5, 31, 0, 0, 814, 825, 5, 43, 0, 0, 815, 825, 5, 41, 0, 0, 816, 825, 5, 42, 0, 0, 817, 825, 5, 44, 0, 0, 818, 825, 5, 45, 0, 0, 819, 825, 5, 46, 0, 0, 820, 825, 5, 47, 0, 0, 821, 825, 5, 48, 0, 0, 822, 825, 5, 13, 0, 0, 823, 825, 5, 28, 0, 0, 824, 798, 1, 0, 0, 0, 824, 799, 1, 0, 0, 0, 824, 800, 1, 0, 0, 0, 824, 801, 1, 0, 0, 0, 824, 802, 1, 0, 0, 0, 824, 803, 1, 0, 0, 0, 824, 804, 1, 0, 0, 0, 824, 805, 1, 0, 0, 0, 824, 806, 1, 0, 0, 0, 824, 807, 1, 0, 0, 0, 824, 808, 1, 0, 0, 0, 824, 809, 1, 0, 0, 0, 824, 810, 1, 0, 0, 0, 824, 811, 1, 0, 0, 0, 824, 812, 1, 0, 0, 0, 824, 813, 1, 0, 0, 0, 824, 814, 1, 0, 0, 0, 824, 815, 1, 0, 0, 0, 824, 816, 1, 0, 0, 0, 824, 817, 1, 0, 0, 0, 824, 818, 1, 0, 0, 0, 824, 819, 1, 0, 0, 0, 824, 820, 1, 0, 0, 0, 824, 821, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 823, 1, 0, 0, 0, 825, 43, 1, 0, 0, 0, 826, 827, 3, 50, 25, 0, 827, 828, 5, 32, 0, 0, 828, 829, 3, 50, 25, 0, 829, 834, 1, 0, 0, 0, 830, 834, 3, 46, 23, 0, 831, 834, 3, 50, 25, 0, 832, 834, 3, 16, 8, 0, 833, 826, 1, 0, 0, 0, 833, 830, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 833, 832, 1, 0, 0, 0, 834, 45, 1, 0, 0, 0, 835, 855, 5, 33, 0, 0, 836, 855, 5, 34, 0, 0, 837, 855, 5, 4, 0, 0, 838, 855, 5, 14, 0, 0, 839, 855, 5, 15, 0, 0, 840, 855, 5, 16, 0, 0, 841, 855, 5, 17, 0, 0, 842, 855, 5, 18, 0, 0, 843, 855, 5, 19, 0, 0, 844, 855, 5, 20, 0, 0, 845, 855, 5, 21, 0, 0, 846, 855, 5, 22, 0, 0, 847, 855, 5, 23, 0, 0, 848, 855, 5, 24, 0, 0, 849, 855, 5, 25, 0, 0, 850, 855, 5, 26, 0, 0, 851, 855, 5, 27, 0, 0, 852, 853, 5, 10, 0, 0, 853, 855, 9, 0, 0, 0, 854, 835, 1, 0, 0, 0, 854, 836, 1, 0, 0, 0, 854, 837, 1, 0, 0, 0, 854, 838, 1, 0, 0, 0, 854, 839, 1, 0, 0, 0, 854, 840, 1, 0, 0, 0, 854, 841, 1, 0, 0, 0, 854, 842, 1, 0, 0, 0, 854, 843, 1, 0, 0, 0, 854, 844, 1, 0, 0, 0, 854, 845, 1, 0, 0, 0, 854, 846, 1, 0, 0, 0, 854, 847, 1, 0, 0, 0, 854, 848, 1, 0, 0, 0, 854, 849, 1, 0, 0, 0, 854, 850, 1, 0, 0, 0, 854, 851, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 855, 47, 1, 0, 0, 0, 856, 859, 3, 52, 26, 0, 857, 859, 5, 30, 0, 0, 858, 856, 1, 0, 0, 0, 858, 857, 1, 0, 0, 0, 859, 49, 1, 0, 0, 0, 860, 873, 3, 52, 26, 0, 861, 873, 5, 12, 0, 0, 862, 873, 5, 29, 0, 0, 863, 873, 5, 31, 0, 0, 864, 873, 5, 35, 0, 0, 865, 873, 5, 36, 0, 0, 866, 873, 5, 37, 0, 0, 867, 873, 5, 41, 0, 0, 868, 873, 5, 44, 0, 0, 869, 873, 5, 51, 0, 0, 870, 873, 5, 52, 0, 0, 871, 873, 5, 53, 0, 0, 872, 860, 1, 0, 0, 0, 872, 861, 1, 0, 0, 0, 872, 862, 1, 0, 0, 0, 872, 863, 1, 0, 0, 0, 872, 864, 1, 0, 0, 0, 872, 865, 1, 0, 0, 0, 872, 866, 1, 0, 0, 0, 872, 867, 1, 0, 0, 0, 872, 868, 1, 0, 0, 0, 872, 869, 1, 0, 0, 0, 872, 870, 1, 0, 0, 0, 872, 871, 1, 0, 0, 0, 873, 51, 1, 0, 0, 0, 874, 901, 3, 56, 28, 0, 875, 901, 3, 72, 36, 0, 876, 901, 3, 62, 31, 0, 877, 901, 5, 3, 0, 0, 878, 901, 5, 5, 0, 0, 879, 901, 5, 6, 0, 0, 880, 901, 5, 7, 0, 0, 881, 901, 5, 8, 0, 0, 882, 901, 5, 9, 0, 0, 883, 901, 5, 11, 0, 0, 884, 901, 5, 1, 0, 0, 885, 901, 5, 2, 0, 0, 886, 901, 5, 38, 0, 0, 887, 901, 5, 39, 0, 0, 888, 901, 5, 40, 0, 0, 889, 901, 5, 32, 0, 0, 890, 901, 5, 54, 0, 0, 891, 901, 5, 55, 0, 0, 892, 901, 5, 56, 0, 0, 893, 901, 5, 57, 0, 0, 894, 901, 5, 58, 0, 0, 895, 901, 5, 59, 0, 0, 896, 901, 5, 60, 0, 0, 897, 901, 5, 61, 0, 0, 898, 901, 5, 62, 0, 0, 899, 901, 5, 125, 0, 0, 900, 874, 1, 0, 0, 0, 900, 875, 1, 0, 0, 0, 900, 876, 1, 0, 0, 0, 900, 877, 1, 0, 0, 0, 900, 878, 1, 0, 0, 0, 900, 879, 1, 0, 0, 0, 900, 880, 1, 0, 0, 0, 900, 881, 1, 0, 0, 0, 900, 882, 1, 0, 0, 0, 900, 883, 1, 0, 0, 0, 900, 884, 1, 0, 0, 0, 900, 885, 1, 0, 0, 0, 900, 886, 1, 0, 0, 0, 900, 887, 1, 0, 0, 0, 900, 888, 1, 0, 0, 0, 900, 889, 1, 0, 0, 0, 900, 890, 1, 0, 0, 0, 900, 891, 1, 0, 0, 0, 900, 892, 1, 0, 0, 0, 900, 893, 1, 0, 0, 0, 900, 894, 1, 0, 0, 0, 900, 895, 1, 0, 0, 0, 900, 896, 1, 0, 0, 0, 900, 897, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 899, 1, 0, 0, 0, 901, 53, 1, 0, 0, 0, 902, 903, 3, 60, 30, 0, 903, 55, 1, 0, 0, 0, 904, 905, 5, 10, 0, 0, 905, 906, 7, 1, 0, 0, 906, 907, 3, 58, 29, 0, 907, 908, 3, 58, 29, 0, 908, 914, 1, 0, 0, 0, 909, 910, 5, 10, 0, 0, 910, 911, 3, 58, 29, 0, 911, 912, 3, 58, 29, 0, 912, 914, 1, 0, 0, 0, 913, 904, 1, 0, 0, 0, 913, 909, 1, 0, 0, 0, 914, 57, 1, 0, 0, 0, 915, 916, 7, 2, 0, 0, 916, 59, 1, 0, 0, 0, 917, 919, 3, 62, 31, 0, 918, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 918, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 61, 1, 0, 0, 0, 922, 923, 7, 3, 0, 0, 923, 63, 1, 0, 0, 0, 924, 925, 3, 66, 33, 0, 925, 65, 1, 0, 0, 0, 926, 929, 3, 72, 36, 0, 927, 929, 5, 57, 0, 0, 928, 926, 1, 0, 0, 0, 928, 927, 1, 0, 0, 0, 929, 935, 1, 0, 0, 0, 930, 934, 3, 72, 36, 0, 931, 934, 5, 57, 0, 0, 932, 934, 3, 62, 31, 0, 933, 930, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 932, 1, 0, 0, 0, 934, 937, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 67, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 938, 940, 3, 70, 35, 0, 939, 938, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 69, 1, 0, 0, 0, 943, 944, 8, 4, 0, 0, 944, 71, 1, 0, 0, 0, 945, 946, 7, 5, 0, 0, 946, 73, 1, 0, 0, 0, 49, 82, 88, 93, 119, 124, 133, 143, 152, 162, 171, 179, 183, 226, 231, 262, 289, 351, 356, 386, 466, 476, 489, 502, 516, 530, 543, 555, 569, 586, 603, 615, 619, 636, 645, 721, 784, 796, 824, 833, 854, 858, 872, 900, 913, 920, 928, 933, 935, 941] diff --git a/TITextProcessing/Sources/PCRE/PCRE.tokens b/TITextProcessing/Sources/PCRE/PCRE.tokens new file mode 100644 index 00000000..5a43ef56 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCRE.tokens @@ -0,0 +1,241 @@ +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 +'\\a'=3 +'\\e'=5 +'\\f'=6 +'\\n'=7 +'\\r'=8 +'\\t'=9 +'\\'=10 +'.'=12 +'\\C'=13 +'\\d'=14 +'\\D'=15 +'\\h'=16 +'\\H'=17 +'\\N'=18 +'\\R'=21 +'\\s'=22 +'\\S'=23 +'\\v'=24 +'\\V'=25 +'\\w'=26 +'\\W'=27 +'\\X'=28 +'['=29 +']'=30 +'^'=31 +'-'=32 +'?'=35 +'+'=36 +'*'=37 +'{'=38 +'}'=39 +','=40 +'\\b'=41 +'\\B'=42 +'\\A'=43 +'$'=44 +'\\Z'=45 +'\\z'=46 +'\\G'=47 +'\\K'=48 +'\\g'=49 +'\\k'=50 +'|'=51 +'('=52 +')'=53 +'<'=54 +'>'=55 +'\''=56 +'_'=57 +':'=58 +'#'=59 +'='=60 +'!'=61 +'&'=62 +'a'=63 +'b'=64 +'c'=65 +'d'=66 +'e'=67 +'f'=68 +'g'=69 +'h'=70 +'i'=71 +'j'=72 +'k'=73 +'l'=74 +'m'=75 +'n'=76 +'o'=77 +'p'=78 +'q'=79 +'r'=80 +'s'=81 +'t'=82 +'u'=83 +'v'=84 +'w'=85 +'x'=86 +'y'=87 +'z'=88 +'A'=89 +'B'=90 +'C'=91 +'D'=92 +'E'=93 +'F'=94 +'G'=95 +'H'=96 +'I'=97 +'J'=98 +'K'=99 +'L'=100 +'M'=101 +'N'=102 +'O'=103 +'P'=104 +'Q'=105 +'R'=106 +'S'=107 +'T'=108 +'U'=109 +'V'=110 +'W'=111 +'X'=112 +'Y'=113 +'Z'=114 +'1'=115 +'2'=116 +'3'=117 +'4'=118 +'5'=119 +'6'=120 +'7'=121 +'8'=122 +'9'=123 +'0'=124 diff --git a/TITextProcessing/Sources/PCRE/PCREBaseListener.swift b/TITextProcessing/Sources/PCRE/PCREBaseListener.swift new file mode 100644 index 00000000..8eeffee7 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCREBaseListener.swift @@ -0,0 +1,518 @@ +// Generated from java-escape by ANTLR 4.11.1 + +import Antlr4 + + +/** + * 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. + */ +open class PCREBaseListener: PCREListener { + public init() { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterParse(_ ctx: PCREParser.ParseContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitParse(_ ctx: PCREParser.ParseContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterAlternation(_ ctx: PCREParser.AlternationContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitAlternation(_ ctx: PCREParser.AlternationContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterExpr(_ ctx: PCREParser.ExprContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitExpr(_ ctx: PCREParser.ExprContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterElement(_ ctx: PCREParser.ElementContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitElement(_ ctx: PCREParser.ElementContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterQuantifier(_ ctx: PCREParser.QuantifierContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitQuantifier(_ ctx: PCREParser.QuantifierContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterQuantifier_type(_ ctx: PCREParser.Quantifier_typeContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitQuantifier_type(_ ctx: PCREParser.Quantifier_typeContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterCharacter_class(_ ctx: PCREParser.Character_classContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitCharacter_class(_ ctx: PCREParser.Character_classContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterBackreference(_ ctx: PCREParser.BackreferenceContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitBackreference(_ ctx: PCREParser.BackreferenceContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterBackreference_or_octal(_ ctx: PCREParser.Backreference_or_octalContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitBackreference_or_octal(_ ctx: PCREParser.Backreference_or_octalContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterCapture(_ ctx: PCREParser.CaptureContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitCapture(_ ctx: PCREParser.CaptureContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterNon_capture(_ ctx: PCREParser.Non_captureContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitNon_capture(_ ctx: PCREParser.Non_captureContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterComment(_ ctx: PCREParser.CommentContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitComment(_ ctx: PCREParser.CommentContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterOption(_ ctx: PCREParser.OptionContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitOption(_ ctx: PCREParser.OptionContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterOption_flags(_ ctx: PCREParser.Option_flagsContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitOption_flags(_ ctx: PCREParser.Option_flagsContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterOption_flag(_ ctx: PCREParser.Option_flagContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitOption_flag(_ ctx: PCREParser.Option_flagContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterLook_around(_ ctx: PCREParser.Look_aroundContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitLook_around(_ ctx: PCREParser.Look_aroundContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterSubroutine_reference(_ ctx: PCREParser.Subroutine_referenceContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitSubroutine_reference(_ ctx: PCREParser.Subroutine_referenceContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterConditional(_ ctx: PCREParser.ConditionalContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitConditional(_ ctx: PCREParser.ConditionalContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterBacktrack_control(_ ctx: PCREParser.Backtrack_controlContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitBacktrack_control(_ ctx: PCREParser.Backtrack_controlContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterNewline_convention(_ ctx: PCREParser.Newline_conventionContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitNewline_convention(_ ctx: PCREParser.Newline_conventionContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterCallout(_ ctx: PCREParser.CalloutContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitCallout(_ ctx: PCREParser.CalloutContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterAtom(_ ctx: PCREParser.AtomContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitAtom(_ ctx: PCREParser.AtomContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterCc_atom(_ ctx: PCREParser.Cc_atomContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitCc_atom(_ ctx: PCREParser.Cc_atomContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterShared_atom(_ ctx: PCREParser.Shared_atomContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitShared_atom(_ ctx: PCREParser.Shared_atomContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterLiteral(_ ctx: PCREParser.LiteralContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitLiteral(_ ctx: PCREParser.LiteralContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterCc_literal(_ ctx: PCREParser.Cc_literalContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitCc_literal(_ ctx: PCREParser.Cc_literalContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterShared_literal(_ ctx: PCREParser.Shared_literalContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitShared_literal(_ ctx: PCREParser.Shared_literalContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterNumber(_ ctx: PCREParser.NumberContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitNumber(_ ctx: PCREParser.NumberContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterOctal_char(_ ctx: PCREParser.Octal_charContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitOctal_char(_ ctx: PCREParser.Octal_charContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterOctal_digit(_ ctx: PCREParser.Octal_digitContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitOctal_digit(_ ctx: PCREParser.Octal_digitContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterDigits(_ ctx: PCREParser.DigitsContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitDigits(_ ctx: PCREParser.DigitsContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterDigit(_ ctx: PCREParser.DigitContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitDigit(_ ctx: PCREParser.DigitContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterName(_ ctx: PCREParser.NameContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitName(_ ctx: PCREParser.NameContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterAlpha_nums(_ ctx: PCREParser.Alpha_numsContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitAlpha_nums(_ ctx: PCREParser.Alpha_numsContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterNon_close_parens(_ ctx: PCREParser.Non_close_parensContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitNon_close_parens(_ ctx: PCREParser.Non_close_parensContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterNon_close_paren(_ ctx: PCREParser.Non_close_parenContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitNon_close_paren(_ ctx: PCREParser.Non_close_parenContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterLetter(_ ctx: PCREParser.LetterContext) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitLetter(_ ctx: PCREParser.LetterContext) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func enterEveryRule(_ ctx: ParserRuleContext) throws { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func exitEveryRule(_ ctx: ParserRuleContext) throws { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func visitTerminal(_ node: TerminalNode) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + open func visitErrorNode(_ node: ErrorNode) { } +} \ No newline at end of file diff --git a/TITextProcessing/Sources/PCRE/PCRELexer.interp b/TITextProcessing/Sources/PCRE/PCRELexer.interp new file mode 100644 index 00000000..942ccbb9 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/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: +[4, 0, 125, 616, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 271, 8, 1, 10, 1, 12, 1, 274, 9, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 4, 10, 314, 8, 10, 11, 10, 12, 10, 315, 1, 10, 1, 10, 3, 10, 320, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 4, 125, 600, 8, 125, 11, 125, 12, 125, 601, 1, 126, 4, 126, 605, 8, 126, 11, 126, 12, 126, 606, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 272, 0, 131, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 0, 253, 0, 255, 0, 257, 0, 259, 0, 261, 0, 1, 0, 3, 3, 0, 48, 57, 65, 90, 97, 122, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 0, 127, 615, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 1, 263, 1, 0, 0, 0, 3, 266, 1, 0, 0, 0, 5, 278, 1, 0, 0, 0, 7, 281, 1, 0, 0, 0, 9, 286, 1, 0, 0, 0, 11, 289, 1, 0, 0, 0, 13, 292, 1, 0, 0, 0, 15, 295, 1, 0, 0, 0, 17, 298, 1, 0, 0, 0, 19, 301, 1, 0, 0, 0, 21, 303, 1, 0, 0, 0, 23, 321, 1, 0, 0, 0, 25, 323, 1, 0, 0, 0, 27, 326, 1, 0, 0, 0, 29, 329, 1, 0, 0, 0, 31, 332, 1, 0, 0, 0, 33, 335, 1, 0, 0, 0, 35, 338, 1, 0, 0, 0, 37, 341, 1, 0, 0, 0, 39, 348, 1, 0, 0, 0, 41, 355, 1, 0, 0, 0, 43, 358, 1, 0, 0, 0, 45, 361, 1, 0, 0, 0, 47, 364, 1, 0, 0, 0, 49, 367, 1, 0, 0, 0, 51, 370, 1, 0, 0, 0, 53, 373, 1, 0, 0, 0, 55, 376, 1, 0, 0, 0, 57, 379, 1, 0, 0, 0, 59, 381, 1, 0, 0, 0, 61, 383, 1, 0, 0, 0, 63, 385, 1, 0, 0, 0, 65, 387, 1, 0, 0, 0, 67, 396, 1, 0, 0, 0, 69, 406, 1, 0, 0, 0, 71, 408, 1, 0, 0, 0, 73, 410, 1, 0, 0, 0, 75, 412, 1, 0, 0, 0, 77, 414, 1, 0, 0, 0, 79, 416, 1, 0, 0, 0, 81, 418, 1, 0, 0, 0, 83, 421, 1, 0, 0, 0, 85, 424, 1, 0, 0, 0, 87, 427, 1, 0, 0, 0, 89, 429, 1, 0, 0, 0, 91, 432, 1, 0, 0, 0, 93, 435, 1, 0, 0, 0, 95, 438, 1, 0, 0, 0, 97, 441, 1, 0, 0, 0, 99, 444, 1, 0, 0, 0, 101, 447, 1, 0, 0, 0, 103, 449, 1, 0, 0, 0, 105, 451, 1, 0, 0, 0, 107, 453, 1, 0, 0, 0, 109, 455, 1, 0, 0, 0, 111, 457, 1, 0, 0, 0, 113, 459, 1, 0, 0, 0, 115, 461, 1, 0, 0, 0, 117, 463, 1, 0, 0, 0, 119, 465, 1, 0, 0, 0, 121, 467, 1, 0, 0, 0, 123, 469, 1, 0, 0, 0, 125, 471, 1, 0, 0, 0, 127, 473, 1, 0, 0, 0, 129, 475, 1, 0, 0, 0, 131, 477, 1, 0, 0, 0, 133, 479, 1, 0, 0, 0, 135, 481, 1, 0, 0, 0, 137, 483, 1, 0, 0, 0, 139, 485, 1, 0, 0, 0, 141, 487, 1, 0, 0, 0, 143, 489, 1, 0, 0, 0, 145, 491, 1, 0, 0, 0, 147, 493, 1, 0, 0, 0, 149, 495, 1, 0, 0, 0, 151, 497, 1, 0, 0, 0, 153, 499, 1, 0, 0, 0, 155, 501, 1, 0, 0, 0, 157, 503, 1, 0, 0, 0, 159, 505, 1, 0, 0, 0, 161, 507, 1, 0, 0, 0, 163, 509, 1, 0, 0, 0, 165, 511, 1, 0, 0, 0, 167, 513, 1, 0, 0, 0, 169, 515, 1, 0, 0, 0, 171, 517, 1, 0, 0, 0, 173, 519, 1, 0, 0, 0, 175, 521, 1, 0, 0, 0, 177, 523, 1, 0, 0, 0, 179, 525, 1, 0, 0, 0, 181, 527, 1, 0, 0, 0, 183, 529, 1, 0, 0, 0, 185, 531, 1, 0, 0, 0, 187, 533, 1, 0, 0, 0, 189, 535, 1, 0, 0, 0, 191, 537, 1, 0, 0, 0, 193, 539, 1, 0, 0, 0, 195, 541, 1, 0, 0, 0, 197, 543, 1, 0, 0, 0, 199, 545, 1, 0, 0, 0, 201, 547, 1, 0, 0, 0, 203, 549, 1, 0, 0, 0, 205, 551, 1, 0, 0, 0, 207, 553, 1, 0, 0, 0, 209, 555, 1, 0, 0, 0, 211, 557, 1, 0, 0, 0, 213, 559, 1, 0, 0, 0, 215, 561, 1, 0, 0, 0, 217, 563, 1, 0, 0, 0, 219, 565, 1, 0, 0, 0, 221, 567, 1, 0, 0, 0, 223, 569, 1, 0, 0, 0, 225, 571, 1, 0, 0, 0, 227, 573, 1, 0, 0, 0, 229, 575, 1, 0, 0, 0, 231, 577, 1, 0, 0, 0, 233, 579, 1, 0, 0, 0, 235, 581, 1, 0, 0, 0, 237, 583, 1, 0, 0, 0, 239, 585, 1, 0, 0, 0, 241, 587, 1, 0, 0, 0, 243, 589, 1, 0, 0, 0, 245, 591, 1, 0, 0, 0, 247, 593, 1, 0, 0, 0, 249, 595, 1, 0, 0, 0, 251, 599, 1, 0, 0, 0, 253, 604, 1, 0, 0, 0, 255, 608, 1, 0, 0, 0, 257, 610, 1, 0, 0, 0, 259, 612, 1, 0, 0, 0, 261, 614, 1, 0, 0, 0, 263, 264, 5, 92, 0, 0, 264, 265, 3, 257, 128, 0, 265, 2, 1, 0, 0, 0, 266, 267, 5, 92, 0, 0, 267, 268, 5, 81, 0, 0, 268, 272, 1, 0, 0, 0, 269, 271, 9, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 275, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 275, 276, 5, 92, 0, 0, 276, 277, 5, 69, 0, 0, 277, 4, 1, 0, 0, 0, 278, 279, 5, 92, 0, 0, 279, 280, 5, 97, 0, 0, 280, 6, 1, 0, 0, 0, 281, 282, 5, 92, 0, 0, 282, 283, 5, 99, 0, 0, 283, 284, 1, 0, 0, 0, 284, 285, 3, 261, 130, 0, 285, 8, 1, 0, 0, 0, 286, 287, 5, 92, 0, 0, 287, 288, 5, 101, 0, 0, 288, 10, 1, 0, 0, 0, 289, 290, 5, 92, 0, 0, 290, 291, 5, 102, 0, 0, 291, 12, 1, 0, 0, 0, 292, 293, 5, 92, 0, 0, 293, 294, 5, 110, 0, 0, 294, 14, 1, 0, 0, 0, 295, 296, 5, 92, 0, 0, 296, 297, 5, 114, 0, 0, 297, 16, 1, 0, 0, 0, 298, 299, 5, 92, 0, 0, 299, 300, 5, 116, 0, 0, 300, 18, 1, 0, 0, 0, 301, 302, 5, 92, 0, 0, 302, 20, 1, 0, 0, 0, 303, 304, 5, 92, 0, 0, 304, 305, 5, 120, 0, 0, 305, 319, 1, 0, 0, 0, 306, 307, 3, 259, 129, 0, 307, 308, 3, 259, 129, 0, 308, 320, 1, 0, 0, 0, 309, 310, 5, 123, 0, 0, 310, 311, 3, 259, 129, 0, 311, 313, 3, 259, 129, 0, 312, 314, 3, 259, 129, 0, 313, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 318, 5, 125, 0, 0, 318, 320, 1, 0, 0, 0, 319, 306, 1, 0, 0, 0, 319, 309, 1, 0, 0, 0, 320, 22, 1, 0, 0, 0, 321, 322, 5, 46, 0, 0, 322, 24, 1, 0, 0, 0, 323, 324, 5, 92, 0, 0, 324, 325, 5, 67, 0, 0, 325, 26, 1, 0, 0, 0, 326, 327, 5, 92, 0, 0, 327, 328, 5, 100, 0, 0, 328, 28, 1, 0, 0, 0, 329, 330, 5, 92, 0, 0, 330, 331, 5, 68, 0, 0, 331, 30, 1, 0, 0, 0, 332, 333, 5, 92, 0, 0, 333, 334, 5, 104, 0, 0, 334, 32, 1, 0, 0, 0, 335, 336, 5, 92, 0, 0, 336, 337, 5, 72, 0, 0, 337, 34, 1, 0, 0, 0, 338, 339, 5, 92, 0, 0, 339, 340, 5, 78, 0, 0, 340, 36, 1, 0, 0, 0, 341, 342, 5, 92, 0, 0, 342, 343, 5, 112, 0, 0, 343, 344, 5, 123, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 3, 251, 125, 0, 346, 347, 5, 125, 0, 0, 347, 38, 1, 0, 0, 0, 348, 349, 5, 92, 0, 0, 349, 350, 5, 80, 0, 0, 350, 351, 5, 123, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 3, 251, 125, 0, 353, 354, 5, 125, 0, 0, 354, 40, 1, 0, 0, 0, 355, 356, 5, 92, 0, 0, 356, 357, 5, 82, 0, 0, 357, 42, 1, 0, 0, 0, 358, 359, 5, 92, 0, 0, 359, 360, 5, 115, 0, 0, 360, 44, 1, 0, 0, 0, 361, 362, 5, 92, 0, 0, 362, 363, 5, 83, 0, 0, 363, 46, 1, 0, 0, 0, 364, 365, 5, 92, 0, 0, 365, 366, 5, 118, 0, 0, 366, 48, 1, 0, 0, 0, 367, 368, 5, 92, 0, 0, 368, 369, 5, 86, 0, 0, 369, 50, 1, 0, 0, 0, 370, 371, 5, 92, 0, 0, 371, 372, 5, 119, 0, 0, 372, 52, 1, 0, 0, 0, 373, 374, 5, 92, 0, 0, 374, 375, 5, 87, 0, 0, 375, 54, 1, 0, 0, 0, 376, 377, 5, 92, 0, 0, 377, 378, 5, 88, 0, 0, 378, 56, 1, 0, 0, 0, 379, 380, 5, 91, 0, 0, 380, 58, 1, 0, 0, 0, 381, 382, 5, 93, 0, 0, 382, 60, 1, 0, 0, 0, 383, 384, 5, 94, 0, 0, 384, 62, 1, 0, 0, 0, 385, 386, 5, 45, 0, 0, 386, 64, 1, 0, 0, 0, 387, 388, 5, 91, 0, 0, 388, 389, 5, 91, 0, 0, 389, 390, 5, 58, 0, 0, 390, 391, 1, 0, 0, 0, 391, 392, 3, 253, 126, 0, 392, 393, 5, 58, 0, 0, 393, 394, 5, 93, 0, 0, 394, 395, 5, 93, 0, 0, 395, 66, 1, 0, 0, 0, 396, 397, 5, 91, 0, 0, 397, 398, 5, 91, 0, 0, 398, 399, 5, 58, 0, 0, 399, 400, 5, 94, 0, 0, 400, 401, 1, 0, 0, 0, 401, 402, 3, 253, 126, 0, 402, 403, 5, 58, 0, 0, 403, 404, 5, 93, 0, 0, 404, 405, 5, 93, 0, 0, 405, 68, 1, 0, 0, 0, 406, 407, 5, 63, 0, 0, 407, 70, 1, 0, 0, 0, 408, 409, 5, 43, 0, 0, 409, 72, 1, 0, 0, 0, 410, 411, 5, 42, 0, 0, 411, 74, 1, 0, 0, 0, 412, 413, 5, 123, 0, 0, 413, 76, 1, 0, 0, 0, 414, 415, 5, 125, 0, 0, 415, 78, 1, 0, 0, 0, 416, 417, 5, 44, 0, 0, 417, 80, 1, 0, 0, 0, 418, 419, 5, 92, 0, 0, 419, 420, 5, 98, 0, 0, 420, 82, 1, 0, 0, 0, 421, 422, 5, 92, 0, 0, 422, 423, 5, 66, 0, 0, 423, 84, 1, 0, 0, 0, 424, 425, 5, 92, 0, 0, 425, 426, 5, 65, 0, 0, 426, 86, 1, 0, 0, 0, 427, 428, 5, 36, 0, 0, 428, 88, 1, 0, 0, 0, 429, 430, 5, 92, 0, 0, 430, 431, 5, 90, 0, 0, 431, 90, 1, 0, 0, 0, 432, 433, 5, 92, 0, 0, 433, 434, 5, 122, 0, 0, 434, 92, 1, 0, 0, 0, 435, 436, 5, 92, 0, 0, 436, 437, 5, 71, 0, 0, 437, 94, 1, 0, 0, 0, 438, 439, 5, 92, 0, 0, 439, 440, 5, 75, 0, 0, 440, 96, 1, 0, 0, 0, 441, 442, 5, 92, 0, 0, 442, 443, 5, 103, 0, 0, 443, 98, 1, 0, 0, 0, 444, 445, 5, 92, 0, 0, 445, 446, 5, 107, 0, 0, 446, 100, 1, 0, 0, 0, 447, 448, 5, 124, 0, 0, 448, 102, 1, 0, 0, 0, 449, 450, 5, 40, 0, 0, 450, 104, 1, 0, 0, 0, 451, 452, 5, 41, 0, 0, 452, 106, 1, 0, 0, 0, 453, 454, 5, 60, 0, 0, 454, 108, 1, 0, 0, 0, 455, 456, 5, 62, 0, 0, 456, 110, 1, 0, 0, 0, 457, 458, 5, 39, 0, 0, 458, 112, 1, 0, 0, 0, 459, 460, 5, 95, 0, 0, 460, 114, 1, 0, 0, 0, 461, 462, 5, 58, 0, 0, 462, 116, 1, 0, 0, 0, 463, 464, 5, 35, 0, 0, 464, 118, 1, 0, 0, 0, 465, 466, 5, 61, 0, 0, 466, 120, 1, 0, 0, 0, 467, 468, 5, 33, 0, 0, 468, 122, 1, 0, 0, 0, 469, 470, 5, 38, 0, 0, 470, 124, 1, 0, 0, 0, 471, 472, 5, 97, 0, 0, 472, 126, 1, 0, 0, 0, 473, 474, 5, 98, 0, 0, 474, 128, 1, 0, 0, 0, 475, 476, 5, 99, 0, 0, 476, 130, 1, 0, 0, 0, 477, 478, 5, 100, 0, 0, 478, 132, 1, 0, 0, 0, 479, 480, 5, 101, 0, 0, 480, 134, 1, 0, 0, 0, 481, 482, 5, 102, 0, 0, 482, 136, 1, 0, 0, 0, 483, 484, 5, 103, 0, 0, 484, 138, 1, 0, 0, 0, 485, 486, 5, 104, 0, 0, 486, 140, 1, 0, 0, 0, 487, 488, 5, 105, 0, 0, 488, 142, 1, 0, 0, 0, 489, 490, 5, 106, 0, 0, 490, 144, 1, 0, 0, 0, 491, 492, 5, 107, 0, 0, 492, 146, 1, 0, 0, 0, 493, 494, 5, 108, 0, 0, 494, 148, 1, 0, 0, 0, 495, 496, 5, 109, 0, 0, 496, 150, 1, 0, 0, 0, 497, 498, 5, 110, 0, 0, 498, 152, 1, 0, 0, 0, 499, 500, 5, 111, 0, 0, 500, 154, 1, 0, 0, 0, 501, 502, 5, 112, 0, 0, 502, 156, 1, 0, 0, 0, 503, 504, 5, 113, 0, 0, 504, 158, 1, 0, 0, 0, 505, 506, 5, 114, 0, 0, 506, 160, 1, 0, 0, 0, 507, 508, 5, 115, 0, 0, 508, 162, 1, 0, 0, 0, 509, 510, 5, 116, 0, 0, 510, 164, 1, 0, 0, 0, 511, 512, 5, 117, 0, 0, 512, 166, 1, 0, 0, 0, 513, 514, 5, 118, 0, 0, 514, 168, 1, 0, 0, 0, 515, 516, 5, 119, 0, 0, 516, 170, 1, 0, 0, 0, 517, 518, 5, 120, 0, 0, 518, 172, 1, 0, 0, 0, 519, 520, 5, 121, 0, 0, 520, 174, 1, 0, 0, 0, 521, 522, 5, 122, 0, 0, 522, 176, 1, 0, 0, 0, 523, 524, 5, 65, 0, 0, 524, 178, 1, 0, 0, 0, 525, 526, 5, 66, 0, 0, 526, 180, 1, 0, 0, 0, 527, 528, 5, 67, 0, 0, 528, 182, 1, 0, 0, 0, 529, 530, 5, 68, 0, 0, 530, 184, 1, 0, 0, 0, 531, 532, 5, 69, 0, 0, 532, 186, 1, 0, 0, 0, 533, 534, 5, 70, 0, 0, 534, 188, 1, 0, 0, 0, 535, 536, 5, 71, 0, 0, 536, 190, 1, 0, 0, 0, 537, 538, 5, 72, 0, 0, 538, 192, 1, 0, 0, 0, 539, 540, 5, 73, 0, 0, 540, 194, 1, 0, 0, 0, 541, 542, 5, 74, 0, 0, 542, 196, 1, 0, 0, 0, 543, 544, 5, 75, 0, 0, 544, 198, 1, 0, 0, 0, 545, 546, 5, 76, 0, 0, 546, 200, 1, 0, 0, 0, 547, 548, 5, 77, 0, 0, 548, 202, 1, 0, 0, 0, 549, 550, 5, 78, 0, 0, 550, 204, 1, 0, 0, 0, 551, 552, 5, 79, 0, 0, 552, 206, 1, 0, 0, 0, 553, 554, 5, 80, 0, 0, 554, 208, 1, 0, 0, 0, 555, 556, 5, 81, 0, 0, 556, 210, 1, 0, 0, 0, 557, 558, 5, 82, 0, 0, 558, 212, 1, 0, 0, 0, 559, 560, 5, 83, 0, 0, 560, 214, 1, 0, 0, 0, 561, 562, 5, 84, 0, 0, 562, 216, 1, 0, 0, 0, 563, 564, 5, 85, 0, 0, 564, 218, 1, 0, 0, 0, 565, 566, 5, 86, 0, 0, 566, 220, 1, 0, 0, 0, 567, 568, 5, 87, 0, 0, 568, 222, 1, 0, 0, 0, 569, 570, 5, 88, 0, 0, 570, 224, 1, 0, 0, 0, 571, 572, 5, 89, 0, 0, 572, 226, 1, 0, 0, 0, 573, 574, 5, 90, 0, 0, 574, 228, 1, 0, 0, 0, 575, 576, 5, 49, 0, 0, 576, 230, 1, 0, 0, 0, 577, 578, 5, 50, 0, 0, 578, 232, 1, 0, 0, 0, 579, 580, 5, 51, 0, 0, 580, 234, 1, 0, 0, 0, 581, 582, 5, 52, 0, 0, 582, 236, 1, 0, 0, 0, 583, 584, 5, 53, 0, 0, 584, 238, 1, 0, 0, 0, 585, 586, 5, 54, 0, 0, 586, 240, 1, 0, 0, 0, 587, 588, 5, 55, 0, 0, 588, 242, 1, 0, 0, 0, 589, 590, 5, 56, 0, 0, 590, 244, 1, 0, 0, 0, 591, 592, 5, 57, 0, 0, 592, 246, 1, 0, 0, 0, 593, 594, 5, 48, 0, 0, 594, 248, 1, 0, 0, 0, 595, 596, 9, 0, 0, 0, 596, 250, 1, 0, 0, 0, 597, 600, 5, 95, 0, 0, 598, 600, 3, 255, 127, 0, 599, 597, 1, 0, 0, 0, 599, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 252, 1, 0, 0, 0, 603, 605, 3, 255, 127, 0, 604, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 254, 1, 0, 0, 0, 608, 609, 7, 0, 0, 0, 609, 256, 1, 0, 0, 0, 610, 611, 8, 0, 0, 0, 611, 258, 1, 0, 0, 0, 612, 613, 7, 1, 0, 0, 613, 260, 1, 0, 0, 0, 614, 615, 7, 2, 0, 0, 615, 262, 1, 0, 0, 0, 7, 0, 272, 315, 319, 599, 601, 606, 0] \ No newline at end of file diff --git a/TITextProcessing/Sources/PCRE/PCRELexer.swift b/TITextProcessing/Sources/PCRE/PCRELexer.swift new file mode 100644 index 00000000..14e36f59 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCRELexer.swift @@ -0,0 +1,349 @@ +// Generated from java-escape by ANTLR 4.11.1 +import Antlr4 + +open class PCRELexer: Lexer { + + internal static var _decisionToDFA: [DFA] = { + var decisionToDFA = [DFA]() + let length = PCRELexer._ATN.getNumberOfDecisions() + for i in 0..'", "'''", "'_'", + "':'", "'#'", "'='", "'!'", "'&'", "'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 let _SYMBOLIC_NAMES: [String?] = [ + nil, "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" + ] + public + static let VOCABULARY = Vocabulary(_LITERAL_NAMES, _SYMBOLIC_NAMES) + + + override open + func getVocabulary() -> Vocabulary { + return PCRELexer.VOCABULARY + } + + public + required init(_ input: CharStream) { + RuntimeMetaData.checkVersion("4.11.1", RuntimeMetaData.VERSION) + super.init(input) + _interp = LexerATNSimulator(self, PCRELexer._ATN, PCRELexer._decisionToDFA, PCRELexer._sharedContextCache) + } + + override open + func getGrammarFileName() -> String { return "PCRE.g4" } + + override open + func getRuleNames() -> [String] { return PCRELexer.ruleNames } + + override open + func getSerializedATN() -> [Int] { return PCRELexer._serializedATN } + + override open + func getChannelNames() -> [String] { return PCRELexer.channelNames } + + override open + func getModeNames() -> [String] { return PCRELexer.modeNames } + + override open + func getATN() -> ATN { return PCRELexer._ATN } + + static let _serializedATN:[Int] = [ + 4,0,125,616,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, + 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, + 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, + 7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35, + 7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42, + 7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49, + 7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56, + 7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63, + 7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70, + 7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77, + 7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84, + 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91, + 7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98, + 7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7, + 104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110, + 7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116, + 7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122, + 7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128, + 7,128,2,129,7,129,2,130,7,130,1,0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,271,8,1, + 10,1,12,1,274,9,1,1,1,1,1,1,1,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,4,1,4, + 1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,4,10,314,8,10,11,10,12,10,315, + 1,10,1,10,3,10,320,8,10,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,14,1, + 14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1, + 18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1, + 21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1, + 25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1, + 31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1, + 33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1, + 38,1,38,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1, + 43,1,44,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,48,1, + 48,1,48,1,49,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,53,1,53,1,54,1, + 54,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,59,1,59,1,60,1,60,1,61,1, + 61,1,62,1,62,1,63,1,63,1,64,1,64,1,65,1,65,1,66,1,66,1,67,1,67,1,68,1, + 68,1,69,1,69,1,70,1,70,1,71,1,71,1,72,1,72,1,73,1,73,1,74,1,74,1,75,1, + 75,1,76,1,76,1,77,1,77,1,78,1,78,1,79,1,79,1,80,1,80,1,81,1,81,1,82,1, + 82,1,83,1,83,1,84,1,84,1,85,1,85,1,86,1,86,1,87,1,87,1,88,1,88,1,89,1, + 89,1,90,1,90,1,91,1,91,1,92,1,92,1,93,1,93,1,94,1,94,1,95,1,95,1,96,1, + 96,1,97,1,97,1,98,1,98,1,99,1,99,1,100,1,100,1,101,1,101,1,102,1,102,1, + 103,1,103,1,104,1,104,1,105,1,105,1,106,1,106,1,107,1,107,1,108,1,108, + 1,109,1,109,1,110,1,110,1,111,1,111,1,112,1,112,1,113,1,113,1,114,1,114, + 1,115,1,115,1,116,1,116,1,117,1,117,1,118,1,118,1,119,1,119,1,120,1,120, + 1,121,1,121,1,122,1,122,1,123,1,123,1,124,1,124,1,125,1,125,4,125,600, + 8,125,11,125,12,125,601,1,126,4,126,605,8,126,11,126,12,126,606,1,127, + 1,127,1,128,1,128,1,129,1,129,1,130,1,130,1,272,0,131,1,1,3,2,5,3,7,4, + 9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17, + 35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29, + 59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41, + 83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105, + 53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125, + 63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145, + 73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165, + 83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185, + 93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205, + 103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223, + 112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120,241, + 121,243,122,245,123,247,124,249,125,251,0,253,0,255,0,257,0,259,0,261, + 0,1,0,3,3,0,48,57,65,90,97,122,3,0,48,57,65,70,97,102,1,0,0,127,615,0, + 1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0, + 0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23, + 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0, + 0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45, + 1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0, + 0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67, + 1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0, + 0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89, + 1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0, + 0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0, + 0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0, + 0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0, + 0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0, + 0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0, + 0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0, + 0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0, + 0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0, + 0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0, + 0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0, + 0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0, + 0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0, + 0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0, + 0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0, + 0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0, + 0,1,263,1,0,0,0,3,266,1,0,0,0,5,278,1,0,0,0,7,281,1,0,0,0,9,286,1,0,0, + 0,11,289,1,0,0,0,13,292,1,0,0,0,15,295,1,0,0,0,17,298,1,0,0,0,19,301,1, + 0,0,0,21,303,1,0,0,0,23,321,1,0,0,0,25,323,1,0,0,0,27,326,1,0,0,0,29,329, + 1,0,0,0,31,332,1,0,0,0,33,335,1,0,0,0,35,338,1,0,0,0,37,341,1,0,0,0,39, + 348,1,0,0,0,41,355,1,0,0,0,43,358,1,0,0,0,45,361,1,0,0,0,47,364,1,0,0, + 0,49,367,1,0,0,0,51,370,1,0,0,0,53,373,1,0,0,0,55,376,1,0,0,0,57,379,1, + 0,0,0,59,381,1,0,0,0,61,383,1,0,0,0,63,385,1,0,0,0,65,387,1,0,0,0,67,396, + 1,0,0,0,69,406,1,0,0,0,71,408,1,0,0,0,73,410,1,0,0,0,75,412,1,0,0,0,77, + 414,1,0,0,0,79,416,1,0,0,0,81,418,1,0,0,0,83,421,1,0,0,0,85,424,1,0,0, + 0,87,427,1,0,0,0,89,429,1,0,0,0,91,432,1,0,0,0,93,435,1,0,0,0,95,438,1, + 0,0,0,97,441,1,0,0,0,99,444,1,0,0,0,101,447,1,0,0,0,103,449,1,0,0,0,105, + 451,1,0,0,0,107,453,1,0,0,0,109,455,1,0,0,0,111,457,1,0,0,0,113,459,1, + 0,0,0,115,461,1,0,0,0,117,463,1,0,0,0,119,465,1,0,0,0,121,467,1,0,0,0, + 123,469,1,0,0,0,125,471,1,0,0,0,127,473,1,0,0,0,129,475,1,0,0,0,131,477, + 1,0,0,0,133,479,1,0,0,0,135,481,1,0,0,0,137,483,1,0,0,0,139,485,1,0,0, + 0,141,487,1,0,0,0,143,489,1,0,0,0,145,491,1,0,0,0,147,493,1,0,0,0,149, + 495,1,0,0,0,151,497,1,0,0,0,153,499,1,0,0,0,155,501,1,0,0,0,157,503,1, + 0,0,0,159,505,1,0,0,0,161,507,1,0,0,0,163,509,1,0,0,0,165,511,1,0,0,0, + 167,513,1,0,0,0,169,515,1,0,0,0,171,517,1,0,0,0,173,519,1,0,0,0,175,521, + 1,0,0,0,177,523,1,0,0,0,179,525,1,0,0,0,181,527,1,0,0,0,183,529,1,0,0, + 0,185,531,1,0,0,0,187,533,1,0,0,0,189,535,1,0,0,0,191,537,1,0,0,0,193, + 539,1,0,0,0,195,541,1,0,0,0,197,543,1,0,0,0,199,545,1,0,0,0,201,547,1, + 0,0,0,203,549,1,0,0,0,205,551,1,0,0,0,207,553,1,0,0,0,209,555,1,0,0,0, + 211,557,1,0,0,0,213,559,1,0,0,0,215,561,1,0,0,0,217,563,1,0,0,0,219,565, + 1,0,0,0,221,567,1,0,0,0,223,569,1,0,0,0,225,571,1,0,0,0,227,573,1,0,0, + 0,229,575,1,0,0,0,231,577,1,0,0,0,233,579,1,0,0,0,235,581,1,0,0,0,237, + 583,1,0,0,0,239,585,1,0,0,0,241,587,1,0,0,0,243,589,1,0,0,0,245,591,1, + 0,0,0,247,593,1,0,0,0,249,595,1,0,0,0,251,599,1,0,0,0,253,604,1,0,0,0, + 255,608,1,0,0,0,257,610,1,0,0,0,259,612,1,0,0,0,261,614,1,0,0,0,263,264, + 5,92,0,0,264,265,3,257,128,0,265,2,1,0,0,0,266,267,5,92,0,0,267,268,5, + 81,0,0,268,272,1,0,0,0,269,271,9,0,0,0,270,269,1,0,0,0,271,274,1,0,0,0, + 272,273,1,0,0,0,272,270,1,0,0,0,273,275,1,0,0,0,274,272,1,0,0,0,275,276, + 5,92,0,0,276,277,5,69,0,0,277,4,1,0,0,0,278,279,5,92,0,0,279,280,5,97, + 0,0,280,6,1,0,0,0,281,282,5,92,0,0,282,283,5,99,0,0,283,284,1,0,0,0,284, + 285,3,261,130,0,285,8,1,0,0,0,286,287,5,92,0,0,287,288,5,101,0,0,288,10, + 1,0,0,0,289,290,5,92,0,0,290,291,5,102,0,0,291,12,1,0,0,0,292,293,5,92, + 0,0,293,294,5,110,0,0,294,14,1,0,0,0,295,296,5,92,0,0,296,297,5,114,0, + 0,297,16,1,0,0,0,298,299,5,92,0,0,299,300,5,116,0,0,300,18,1,0,0,0,301, + 302,5,92,0,0,302,20,1,0,0,0,303,304,5,92,0,0,304,305,5,120,0,0,305,319, + 1,0,0,0,306,307,3,259,129,0,307,308,3,259,129,0,308,320,1,0,0,0,309,310, + 5,123,0,0,310,311,3,259,129,0,311,313,3,259,129,0,312,314,3,259,129,0, + 313,312,1,0,0,0,314,315,1,0,0,0,315,313,1,0,0,0,315,316,1,0,0,0,316,317, + 1,0,0,0,317,318,5,125,0,0,318,320,1,0,0,0,319,306,1,0,0,0,319,309,1,0, + 0,0,320,22,1,0,0,0,321,322,5,46,0,0,322,24,1,0,0,0,323,324,5,92,0,0,324, + 325,5,67,0,0,325,26,1,0,0,0,326,327,5,92,0,0,327,328,5,100,0,0,328,28, + 1,0,0,0,329,330,5,92,0,0,330,331,5,68,0,0,331,30,1,0,0,0,332,333,5,92, + 0,0,333,334,5,104,0,0,334,32,1,0,0,0,335,336,5,92,0,0,336,337,5,72,0,0, + 337,34,1,0,0,0,338,339,5,92,0,0,339,340,5,78,0,0,340,36,1,0,0,0,341,342, + 5,92,0,0,342,343,5,112,0,0,343,344,5,123,0,0,344,345,1,0,0,0,345,346,3, + 251,125,0,346,347,5,125,0,0,347,38,1,0,0,0,348,349,5,92,0,0,349,350,5, + 80,0,0,350,351,5,123,0,0,351,352,1,0,0,0,352,353,3,251,125,0,353,354,5, + 125,0,0,354,40,1,0,0,0,355,356,5,92,0,0,356,357,5,82,0,0,357,42,1,0,0, + 0,358,359,5,92,0,0,359,360,5,115,0,0,360,44,1,0,0,0,361,362,5,92,0,0,362, + 363,5,83,0,0,363,46,1,0,0,0,364,365,5,92,0,0,365,366,5,118,0,0,366,48, + 1,0,0,0,367,368,5,92,0,0,368,369,5,86,0,0,369,50,1,0,0,0,370,371,5,92, + 0,0,371,372,5,119,0,0,372,52,1,0,0,0,373,374,5,92,0,0,374,375,5,87,0,0, + 375,54,1,0,0,0,376,377,5,92,0,0,377,378,5,88,0,0,378,56,1,0,0,0,379,380, + 5,91,0,0,380,58,1,0,0,0,381,382,5,93,0,0,382,60,1,0,0,0,383,384,5,94,0, + 0,384,62,1,0,0,0,385,386,5,45,0,0,386,64,1,0,0,0,387,388,5,91,0,0,388, + 389,5,91,0,0,389,390,5,58,0,0,390,391,1,0,0,0,391,392,3,253,126,0,392, + 393,5,58,0,0,393,394,5,93,0,0,394,395,5,93,0,0,395,66,1,0,0,0,396,397, + 5,91,0,0,397,398,5,91,0,0,398,399,5,58,0,0,399,400,5,94,0,0,400,401,1, + 0,0,0,401,402,3,253,126,0,402,403,5,58,0,0,403,404,5,93,0,0,404,405,5, + 93,0,0,405,68,1,0,0,0,406,407,5,63,0,0,407,70,1,0,0,0,408,409,5,43,0,0, + 409,72,1,0,0,0,410,411,5,42,0,0,411,74,1,0,0,0,412,413,5,123,0,0,413,76, + 1,0,0,0,414,415,5,125,0,0,415,78,1,0,0,0,416,417,5,44,0,0,417,80,1,0,0, + 0,418,419,5,92,0,0,419,420,5,98,0,0,420,82,1,0,0,0,421,422,5,92,0,0,422, + 423,5,66,0,0,423,84,1,0,0,0,424,425,5,92,0,0,425,426,5,65,0,0,426,86,1, + 0,0,0,427,428,5,36,0,0,428,88,1,0,0,0,429,430,5,92,0,0,430,431,5,90,0, + 0,431,90,1,0,0,0,432,433,5,92,0,0,433,434,5,122,0,0,434,92,1,0,0,0,435, + 436,5,92,0,0,436,437,5,71,0,0,437,94,1,0,0,0,438,439,5,92,0,0,439,440, + 5,75,0,0,440,96,1,0,0,0,441,442,5,92,0,0,442,443,5,103,0,0,443,98,1,0, + 0,0,444,445,5,92,0,0,445,446,5,107,0,0,446,100,1,0,0,0,447,448,5,124,0, + 0,448,102,1,0,0,0,449,450,5,40,0,0,450,104,1,0,0,0,451,452,5,41,0,0,452, + 106,1,0,0,0,453,454,5,60,0,0,454,108,1,0,0,0,455,456,5,62,0,0,456,110, + 1,0,0,0,457,458,5,39,0,0,458,112,1,0,0,0,459,460,5,95,0,0,460,114,1,0, + 0,0,461,462,5,58,0,0,462,116,1,0,0,0,463,464,5,35,0,0,464,118,1,0,0,0, + 465,466,5,61,0,0,466,120,1,0,0,0,467,468,5,33,0,0,468,122,1,0,0,0,469, + 470,5,38,0,0,470,124,1,0,0,0,471,472,5,97,0,0,472,126,1,0,0,0,473,474, + 5,98,0,0,474,128,1,0,0,0,475,476,5,99,0,0,476,130,1,0,0,0,477,478,5,100, + 0,0,478,132,1,0,0,0,479,480,5,101,0,0,480,134,1,0,0,0,481,482,5,102,0, + 0,482,136,1,0,0,0,483,484,5,103,0,0,484,138,1,0,0,0,485,486,5,104,0,0, + 486,140,1,0,0,0,487,488,5,105,0,0,488,142,1,0,0,0,489,490,5,106,0,0,490, + 144,1,0,0,0,491,492,5,107,0,0,492,146,1,0,0,0,493,494,5,108,0,0,494,148, + 1,0,0,0,495,496,5,109,0,0,496,150,1,0,0,0,497,498,5,110,0,0,498,152,1, + 0,0,0,499,500,5,111,0,0,500,154,1,0,0,0,501,502,5,112,0,0,502,156,1,0, + 0,0,503,504,5,113,0,0,504,158,1,0,0,0,505,506,5,114,0,0,506,160,1,0,0, + 0,507,508,5,115,0,0,508,162,1,0,0,0,509,510,5,116,0,0,510,164,1,0,0,0, + 511,512,5,117,0,0,512,166,1,0,0,0,513,514,5,118,0,0,514,168,1,0,0,0,515, + 516,5,119,0,0,516,170,1,0,0,0,517,518,5,120,0,0,518,172,1,0,0,0,519,520, + 5,121,0,0,520,174,1,0,0,0,521,522,5,122,0,0,522,176,1,0,0,0,523,524,5, + 65,0,0,524,178,1,0,0,0,525,526,5,66,0,0,526,180,1,0,0,0,527,528,5,67,0, + 0,528,182,1,0,0,0,529,530,5,68,0,0,530,184,1,0,0,0,531,532,5,69,0,0,532, + 186,1,0,0,0,533,534,5,70,0,0,534,188,1,0,0,0,535,536,5,71,0,0,536,190, + 1,0,0,0,537,538,5,72,0,0,538,192,1,0,0,0,539,540,5,73,0,0,540,194,1,0, + 0,0,541,542,5,74,0,0,542,196,1,0,0,0,543,544,5,75,0,0,544,198,1,0,0,0, + 545,546,5,76,0,0,546,200,1,0,0,0,547,548,5,77,0,0,548,202,1,0,0,0,549, + 550,5,78,0,0,550,204,1,0,0,0,551,552,5,79,0,0,552,206,1,0,0,0,553,554, + 5,80,0,0,554,208,1,0,0,0,555,556,5,81,0,0,556,210,1,0,0,0,557,558,5,82, + 0,0,558,212,1,0,0,0,559,560,5,83,0,0,560,214,1,0,0,0,561,562,5,84,0,0, + 562,216,1,0,0,0,563,564,5,85,0,0,564,218,1,0,0,0,565,566,5,86,0,0,566, + 220,1,0,0,0,567,568,5,87,0,0,568,222,1,0,0,0,569,570,5,88,0,0,570,224, + 1,0,0,0,571,572,5,89,0,0,572,226,1,0,0,0,573,574,5,90,0,0,574,228,1,0, + 0,0,575,576,5,49,0,0,576,230,1,0,0,0,577,578,5,50,0,0,578,232,1,0,0,0, + 579,580,5,51,0,0,580,234,1,0,0,0,581,582,5,52,0,0,582,236,1,0,0,0,583, + 584,5,53,0,0,584,238,1,0,0,0,585,586,5,54,0,0,586,240,1,0,0,0,587,588, + 5,55,0,0,588,242,1,0,0,0,589,590,5,56,0,0,590,244,1,0,0,0,591,592,5,57, + 0,0,592,246,1,0,0,0,593,594,5,48,0,0,594,248,1,0,0,0,595,596,9,0,0,0,596, + 250,1,0,0,0,597,600,5,95,0,0,598,600,3,255,127,0,599,597,1,0,0,0,599,598, + 1,0,0,0,600,601,1,0,0,0,601,599,1,0,0,0,601,602,1,0,0,0,602,252,1,0,0, + 0,603,605,3,255,127,0,604,603,1,0,0,0,605,606,1,0,0,0,606,604,1,0,0,0, + 606,607,1,0,0,0,607,254,1,0,0,0,608,609,7,0,0,0,609,256,1,0,0,0,610,611, + 8,0,0,0,611,258,1,0,0,0,612,613,7,1,0,0,613,260,1,0,0,0,614,615,7,2,0, + 0,615,262,1,0,0,0,7,0,272,315,319,599,601,606,0 + ] + + public + static let _ATN: ATN = try! ATNDeserializer().deserialize(_serializedATN) +} \ No newline at end of file diff --git a/TITextProcessing/Sources/PCRE/PCRELexer.tokens b/TITextProcessing/Sources/PCRE/PCRELexer.tokens new file mode 100644 index 00000000..5a43ef56 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCRELexer.tokens @@ -0,0 +1,241 @@ +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 +'\\a'=3 +'\\e'=5 +'\\f'=6 +'\\n'=7 +'\\r'=8 +'\\t'=9 +'\\'=10 +'.'=12 +'\\C'=13 +'\\d'=14 +'\\D'=15 +'\\h'=16 +'\\H'=17 +'\\N'=18 +'\\R'=21 +'\\s'=22 +'\\S'=23 +'\\v'=24 +'\\V'=25 +'\\w'=26 +'\\W'=27 +'\\X'=28 +'['=29 +']'=30 +'^'=31 +'-'=32 +'?'=35 +'+'=36 +'*'=37 +'{'=38 +'}'=39 +','=40 +'\\b'=41 +'\\B'=42 +'\\A'=43 +'$'=44 +'\\Z'=45 +'\\z'=46 +'\\G'=47 +'\\K'=48 +'\\g'=49 +'\\k'=50 +'|'=51 +'('=52 +')'=53 +'<'=54 +'>'=55 +'\''=56 +'_'=57 +':'=58 +'#'=59 +'='=60 +'!'=61 +'&'=62 +'a'=63 +'b'=64 +'c'=65 +'d'=66 +'e'=67 +'f'=68 +'g'=69 +'h'=70 +'i'=71 +'j'=72 +'k'=73 +'l'=74 +'m'=75 +'n'=76 +'o'=77 +'p'=78 +'q'=79 +'r'=80 +'s'=81 +'t'=82 +'u'=83 +'v'=84 +'w'=85 +'x'=86 +'y'=87 +'z'=88 +'A'=89 +'B'=90 +'C'=91 +'D'=92 +'E'=93 +'F'=94 +'G'=95 +'H'=96 +'I'=97 +'J'=98 +'K'=99 +'L'=100 +'M'=101 +'N'=102 +'O'=103 +'P'=104 +'Q'=105 +'R'=106 +'S'=107 +'T'=108 +'U'=109 +'V'=110 +'W'=111 +'X'=112 +'Y'=113 +'Z'=114 +'1'=115 +'2'=116 +'3'=117 +'4'=118 +'5'=119 +'6'=120 +'7'=121 +'8'=122 +'9'=123 +'0'=124 diff --git a/TITextProcessing/Sources/PCRE/PCREListener.swift b/TITextProcessing/Sources/PCRE/PCREListener.swift new file mode 100644 index 00000000..903f0b36 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCREListener.swift @@ -0,0 +1,453 @@ +// Generated from java-escape by ANTLR 4.11.1 +import Antlr4 + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link PCREParser}. + */ +public protocol PCREListener: ParseTreeListener { + /** + * Enter a parse tree produced by {@link PCREParser#parse}. + - Parameters: + - ctx: the parse tree + */ + func enterParse(_ ctx: PCREParser.ParseContext) + /** + * Exit a parse tree produced by {@link PCREParser#parse}. + - Parameters: + - ctx: the parse tree + */ + func exitParse(_ ctx: PCREParser.ParseContext) + /** + * Enter a parse tree produced by {@link PCREParser#alternation}. + - Parameters: + - ctx: the parse tree + */ + func enterAlternation(_ ctx: PCREParser.AlternationContext) + /** + * Exit a parse tree produced by {@link PCREParser#alternation}. + - Parameters: + - ctx: the parse tree + */ + func exitAlternation(_ ctx: PCREParser.AlternationContext) + /** + * Enter a parse tree produced by {@link PCREParser#expr}. + - Parameters: + - ctx: the parse tree + */ + func enterExpr(_ ctx: PCREParser.ExprContext) + /** + * Exit a parse tree produced by {@link PCREParser#expr}. + - Parameters: + - ctx: the parse tree + */ + func exitExpr(_ ctx: PCREParser.ExprContext) + /** + * Enter a parse tree produced by {@link PCREParser#element}. + - Parameters: + - ctx: the parse tree + */ + func enterElement(_ ctx: PCREParser.ElementContext) + /** + * Exit a parse tree produced by {@link PCREParser#element}. + - Parameters: + - ctx: the parse tree + */ + func exitElement(_ ctx: PCREParser.ElementContext) + /** + * Enter a parse tree produced by {@link PCREParser#quantifier}. + - Parameters: + - ctx: the parse tree + */ + func enterQuantifier(_ ctx: PCREParser.QuantifierContext) + /** + * Exit a parse tree produced by {@link PCREParser#quantifier}. + - Parameters: + - ctx: the parse tree + */ + func exitQuantifier(_ ctx: PCREParser.QuantifierContext) + /** + * Enter a parse tree produced by {@link PCREParser#quantifier_type}. + - Parameters: + - ctx: the parse tree + */ + func enterQuantifier_type(_ ctx: PCREParser.Quantifier_typeContext) + /** + * Exit a parse tree produced by {@link PCREParser#quantifier_type}. + - Parameters: + - ctx: the parse tree + */ + func exitQuantifier_type(_ ctx: PCREParser.Quantifier_typeContext) + /** + * Enter a parse tree produced by {@link PCREParser#character_class}. + - Parameters: + - ctx: the parse tree + */ + func enterCharacter_class(_ ctx: PCREParser.Character_classContext) + /** + * Exit a parse tree produced by {@link PCREParser#character_class}. + - Parameters: + - ctx: the parse tree + */ + func exitCharacter_class(_ ctx: PCREParser.Character_classContext) + /** + * Enter a parse tree produced by {@link PCREParser#backreference}. + - Parameters: + - ctx: the parse tree + */ + func enterBackreference(_ ctx: PCREParser.BackreferenceContext) + /** + * Exit a parse tree produced by {@link PCREParser#backreference}. + - Parameters: + - ctx: the parse tree + */ + func exitBackreference(_ ctx: PCREParser.BackreferenceContext) + /** + * Enter a parse tree produced by {@link PCREParser#backreference_or_octal}. + - Parameters: + - ctx: the parse tree + */ + func enterBackreference_or_octal(_ ctx: PCREParser.Backreference_or_octalContext) + /** + * Exit a parse tree produced by {@link PCREParser#backreference_or_octal}. + - Parameters: + - ctx: the parse tree + */ + func exitBackreference_or_octal(_ ctx: PCREParser.Backreference_or_octalContext) + /** + * Enter a parse tree produced by {@link PCREParser#capture}. + - Parameters: + - ctx: the parse tree + */ + func enterCapture(_ ctx: PCREParser.CaptureContext) + /** + * Exit a parse tree produced by {@link PCREParser#capture}. + - Parameters: + - ctx: the parse tree + */ + func exitCapture(_ ctx: PCREParser.CaptureContext) + /** + * Enter a parse tree produced by {@link PCREParser#non_capture}. + - Parameters: + - ctx: the parse tree + */ + func enterNon_capture(_ ctx: PCREParser.Non_captureContext) + /** + * Exit a parse tree produced by {@link PCREParser#non_capture}. + - Parameters: + - ctx: the parse tree + */ + func exitNon_capture(_ ctx: PCREParser.Non_captureContext) + /** + * Enter a parse tree produced by {@link PCREParser#comment}. + - Parameters: + - ctx: the parse tree + */ + func enterComment(_ ctx: PCREParser.CommentContext) + /** + * Exit a parse tree produced by {@link PCREParser#comment}. + - Parameters: + - ctx: the parse tree + */ + func exitComment(_ ctx: PCREParser.CommentContext) + /** + * Enter a parse tree produced by {@link PCREParser#option}. + - Parameters: + - ctx: the parse tree + */ + func enterOption(_ ctx: PCREParser.OptionContext) + /** + * Exit a parse tree produced by {@link PCREParser#option}. + - Parameters: + - ctx: the parse tree + */ + func exitOption(_ ctx: PCREParser.OptionContext) + /** + * Enter a parse tree produced by {@link PCREParser#option_flags}. + - Parameters: + - ctx: the parse tree + */ + func enterOption_flags(_ ctx: PCREParser.Option_flagsContext) + /** + * Exit a parse tree produced by {@link PCREParser#option_flags}. + - Parameters: + - ctx: the parse tree + */ + func exitOption_flags(_ ctx: PCREParser.Option_flagsContext) + /** + * Enter a parse tree produced by {@link PCREParser#option_flag}. + - Parameters: + - ctx: the parse tree + */ + func enterOption_flag(_ ctx: PCREParser.Option_flagContext) + /** + * Exit a parse tree produced by {@link PCREParser#option_flag}. + - Parameters: + - ctx: the parse tree + */ + func exitOption_flag(_ ctx: PCREParser.Option_flagContext) + /** + * Enter a parse tree produced by {@link PCREParser#look_around}. + - Parameters: + - ctx: the parse tree + */ + func enterLook_around(_ ctx: PCREParser.Look_aroundContext) + /** + * Exit a parse tree produced by {@link PCREParser#look_around}. + - Parameters: + - ctx: the parse tree + */ + func exitLook_around(_ ctx: PCREParser.Look_aroundContext) + /** + * Enter a parse tree produced by {@link PCREParser#subroutine_reference}. + - Parameters: + - ctx: the parse tree + */ + func enterSubroutine_reference(_ ctx: PCREParser.Subroutine_referenceContext) + /** + * Exit a parse tree produced by {@link PCREParser#subroutine_reference}. + - Parameters: + - ctx: the parse tree + */ + func exitSubroutine_reference(_ ctx: PCREParser.Subroutine_referenceContext) + /** + * Enter a parse tree produced by {@link PCREParser#conditional}. + - Parameters: + - ctx: the parse tree + */ + func enterConditional(_ ctx: PCREParser.ConditionalContext) + /** + * Exit a parse tree produced by {@link PCREParser#conditional}. + - Parameters: + - ctx: the parse tree + */ + func exitConditional(_ ctx: PCREParser.ConditionalContext) + /** + * Enter a parse tree produced by {@link PCREParser#backtrack_control}. + - Parameters: + - ctx: the parse tree + */ + func enterBacktrack_control(_ ctx: PCREParser.Backtrack_controlContext) + /** + * Exit a parse tree produced by {@link PCREParser#backtrack_control}. + - Parameters: + - ctx: the parse tree + */ + func exitBacktrack_control(_ ctx: PCREParser.Backtrack_controlContext) + /** + * Enter a parse tree produced by {@link PCREParser#newline_convention}. + - Parameters: + - ctx: the parse tree + */ + func enterNewline_convention(_ ctx: PCREParser.Newline_conventionContext) + /** + * Exit a parse tree produced by {@link PCREParser#newline_convention}. + - Parameters: + - ctx: the parse tree + */ + func exitNewline_convention(_ ctx: PCREParser.Newline_conventionContext) + /** + * Enter a parse tree produced by {@link PCREParser#callout}. + - Parameters: + - ctx: the parse tree + */ + func enterCallout(_ ctx: PCREParser.CalloutContext) + /** + * Exit a parse tree produced by {@link PCREParser#callout}. + - Parameters: + - ctx: the parse tree + */ + func exitCallout(_ ctx: PCREParser.CalloutContext) + /** + * Enter a parse tree produced by {@link PCREParser#atom}. + - Parameters: + - ctx: the parse tree + */ + func enterAtom(_ ctx: PCREParser.AtomContext) + /** + * Exit a parse tree produced by {@link PCREParser#atom}. + - Parameters: + - ctx: the parse tree + */ + func exitAtom(_ ctx: PCREParser.AtomContext) + /** + * Enter a parse tree produced by {@link PCREParser#cc_atom}. + - Parameters: + - ctx: the parse tree + */ + func enterCc_atom(_ ctx: PCREParser.Cc_atomContext) + /** + * Exit a parse tree produced by {@link PCREParser#cc_atom}. + - Parameters: + - ctx: the parse tree + */ + func exitCc_atom(_ ctx: PCREParser.Cc_atomContext) + /** + * Enter a parse tree produced by {@link PCREParser#shared_atom}. + - Parameters: + - ctx: the parse tree + */ + func enterShared_atom(_ ctx: PCREParser.Shared_atomContext) + /** + * Exit a parse tree produced by {@link PCREParser#shared_atom}. + - Parameters: + - ctx: the parse tree + */ + func exitShared_atom(_ ctx: PCREParser.Shared_atomContext) + /** + * Enter a parse tree produced by {@link PCREParser#literal}. + - Parameters: + - ctx: the parse tree + */ + func enterLiteral(_ ctx: PCREParser.LiteralContext) + /** + * Exit a parse tree produced by {@link PCREParser#literal}. + - Parameters: + - ctx: the parse tree + */ + func exitLiteral(_ ctx: PCREParser.LiteralContext) + /** + * Enter a parse tree produced by {@link PCREParser#cc_literal}. + - Parameters: + - ctx: the parse tree + */ + func enterCc_literal(_ ctx: PCREParser.Cc_literalContext) + /** + * Exit a parse tree produced by {@link PCREParser#cc_literal}. + - Parameters: + - ctx: the parse tree + */ + func exitCc_literal(_ ctx: PCREParser.Cc_literalContext) + /** + * Enter a parse tree produced by {@link PCREParser#shared_literal}. + - Parameters: + - ctx: the parse tree + */ + func enterShared_literal(_ ctx: PCREParser.Shared_literalContext) + /** + * Exit a parse tree produced by {@link PCREParser#shared_literal}. + - Parameters: + - ctx: the parse tree + */ + func exitShared_literal(_ ctx: PCREParser.Shared_literalContext) + /** + * Enter a parse tree produced by {@link PCREParser#number}. + - Parameters: + - ctx: the parse tree + */ + func enterNumber(_ ctx: PCREParser.NumberContext) + /** + * Exit a parse tree produced by {@link PCREParser#number}. + - Parameters: + - ctx: the parse tree + */ + func exitNumber(_ ctx: PCREParser.NumberContext) + /** + * Enter a parse tree produced by {@link PCREParser#octal_char}. + - Parameters: + - ctx: the parse tree + */ + func enterOctal_char(_ ctx: PCREParser.Octal_charContext) + /** + * Exit a parse tree produced by {@link PCREParser#octal_char}. + - Parameters: + - ctx: the parse tree + */ + func exitOctal_char(_ ctx: PCREParser.Octal_charContext) + /** + * Enter a parse tree produced by {@link PCREParser#octal_digit}. + - Parameters: + - ctx: the parse tree + */ + func enterOctal_digit(_ ctx: PCREParser.Octal_digitContext) + /** + * Exit a parse tree produced by {@link PCREParser#octal_digit}. + - Parameters: + - ctx: the parse tree + */ + func exitOctal_digit(_ ctx: PCREParser.Octal_digitContext) + /** + * Enter a parse tree produced by {@link PCREParser#digits}. + - Parameters: + - ctx: the parse tree + */ + func enterDigits(_ ctx: PCREParser.DigitsContext) + /** + * Exit a parse tree produced by {@link PCREParser#digits}. + - Parameters: + - ctx: the parse tree + */ + func exitDigits(_ ctx: PCREParser.DigitsContext) + /** + * Enter a parse tree produced by {@link PCREParser#digit}. + - Parameters: + - ctx: the parse tree + */ + func enterDigit(_ ctx: PCREParser.DigitContext) + /** + * Exit a parse tree produced by {@link PCREParser#digit}. + - Parameters: + - ctx: the parse tree + */ + func exitDigit(_ ctx: PCREParser.DigitContext) + /** + * Enter a parse tree produced by {@link PCREParser#name}. + - Parameters: + - ctx: the parse tree + */ + func enterName(_ ctx: PCREParser.NameContext) + /** + * Exit a parse tree produced by {@link PCREParser#name}. + - Parameters: + - ctx: the parse tree + */ + func exitName(_ ctx: PCREParser.NameContext) + /** + * Enter a parse tree produced by {@link PCREParser#alpha_nums}. + - Parameters: + - ctx: the parse tree + */ + func enterAlpha_nums(_ ctx: PCREParser.Alpha_numsContext) + /** + * Exit a parse tree produced by {@link PCREParser#alpha_nums}. + - Parameters: + - ctx: the parse tree + */ + func exitAlpha_nums(_ ctx: PCREParser.Alpha_numsContext) + /** + * Enter a parse tree produced by {@link PCREParser#non_close_parens}. + - Parameters: + - ctx: the parse tree + */ + func enterNon_close_parens(_ ctx: PCREParser.Non_close_parensContext) + /** + * Exit a parse tree produced by {@link PCREParser#non_close_parens}. + - Parameters: + - ctx: the parse tree + */ + func exitNon_close_parens(_ ctx: PCREParser.Non_close_parensContext) + /** + * Enter a parse tree produced by {@link PCREParser#non_close_paren}. + - Parameters: + - ctx: the parse tree + */ + func enterNon_close_paren(_ ctx: PCREParser.Non_close_parenContext) + /** + * Exit a parse tree produced by {@link PCREParser#non_close_paren}. + - Parameters: + - ctx: the parse tree + */ + func exitNon_close_paren(_ ctx: PCREParser.Non_close_parenContext) + /** + * Enter a parse tree produced by {@link PCREParser#letter}. + - Parameters: + - ctx: the parse tree + */ + func enterLetter(_ ctx: PCREParser.LetterContext) + /** + * Exit a parse tree produced by {@link PCREParser#letter}. + - Parameters: + - ctx: the parse tree + */ + func exitLetter(_ ctx: PCREParser.LetterContext) +} \ No newline at end of file diff --git a/TITextProcessing/Sources/PCRE/PCREParser.swift b/TITextProcessing/Sources/PCRE/PCREParser.swift new file mode 100644 index 00000000..83177d44 --- /dev/null +++ b/TITextProcessing/Sources/PCRE/PCREParser.swift @@ -0,0 +1,6425 @@ +// Generated from java-escape by ANTLR 4.11.1 +import Antlr4 + +open class PCREParser: Parser { + + internal static var _decisionToDFA: [DFA] = { + var decisionToDFA = [DFA]() + let length = PCREParser._ATN.getNumberOfDecisions() + for i in 0..'", "'''", "'_'", + "':'", "'#'", "'='", "'!'", "'&'", "'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 let _SYMBOLIC_NAMES: [String?] = [ + nil, "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" + ] + public + static let VOCABULARY = Vocabulary(_LITERAL_NAMES, _SYMBOLIC_NAMES) + + override open + func getGrammarFileName() -> String { return "java-escape" } + + override open + func getRuleNames() -> [String] { return PCREParser.ruleNames } + + override open + func getSerializedATN() -> [Int] { return PCREParser._serializedATN } + + override open + func getATN() -> ATN { return PCREParser._ATN } + + + override open + func getVocabulary() -> Vocabulary { + return PCREParser.VOCABULARY + } + + override public + init(_ input:TokenStream) throws { + RuntimeMetaData.checkVersion("4.11.1", RuntimeMetaData.VERSION) + try super.init(input) + _interp = ParserATNSimulator(self,PCREParser._ATN,PCREParser._decisionToDFA, PCREParser._sharedContextCache) + } + + + public class ParseContext: ParserRuleContext { + open + func alternation() -> AlternationContext? { + return getRuleContext(AlternationContext.self, 0) + } + open + func EOF() -> TerminalNode? { + return getToken(PCREParser.Tokens.EOF.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_parse + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterParse(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitParse(self) + } + } + } + @discardableResult + open func parse() throws -> ParseContext { + var _localctx: ParseContext + _localctx = ParseContext(_ctx, getState()) + try enterRule(_localctx, 0, PCREParser.RULE_parse) + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(74) + try alternation() + setState(75) + try match(PCREParser.Tokens.EOF.rawValue) + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class AlternationContext: ParserRuleContext { + open + func expr() -> [ExprContext] { + return getRuleContexts(ExprContext.self) + } + open + func expr(_ i: Int) -> ExprContext? { + return getRuleContext(ExprContext.self, i) + } + open + func Pipe() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.Pipe.rawValue) + } + open + func Pipe(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.Pipe.rawValue, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_alternation + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterAlternation(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitAlternation(self) + } + } + } + @discardableResult + open func alternation() throws -> AlternationContext { + var _localctx: AlternationContext + _localctx = AlternationContext(_ctx, getState()) + try enterRule(_localctx, 2, PCREParser.RULE_alternation) + defer { + try! exitRule() + } + do { + var _alt:Int + try enterOuterAlt(_localctx, 1) + setState(77) + try expr() + setState(82) + try _errHandler.sync(self) + _alt = try getInterpreter().adaptivePredict(_input,0,_ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if ( _alt==1 ) { + setState(78) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(79) + try expr() + + + } + setState(84) + try _errHandler.sync(self) + _alt = try getInterpreter().adaptivePredict(_input,0,_ctx) + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class ExprContext: ParserRuleContext { + open + func element() -> [ElementContext] { + return getRuleContexts(ElementContext.self) + } + open + func element(_ i: Int) -> ElementContext? { + return getRuleContext(ElementContext.self, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_expr + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterExpr(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitExpr(self) + } + } + } + @discardableResult + open func expr() throws -> ExprContext { + var _localctx: ExprContext + _localctx = ExprContext(_ctx, getState()) + try enterRule(_localctx, 4, PCREParser.RULE_expr) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(88) + try _errHandler.sync(self) + _la = try _input.LA(1) + while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -11259239586594818) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) { + setState(85) + try element() + + + setState(90) + try _errHandler.sync(self) + _la = try _input.LA(1) + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class ElementContext: ParserRuleContext { + open + func atom() -> AtomContext? { + return getRuleContext(AtomContext.self, 0) + } + open + func quantifier() -> QuantifierContext? { + return getRuleContext(QuantifierContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_element + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterElement(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitElement(self) + } + } + } + @discardableResult + open func element() throws -> ElementContext { + var _localctx: ElementContext + _localctx = ElementContext(_ctx, getState()) + try enterRule(_localctx, 6, PCREParser.RULE_element) + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(91) + try atom() + setState(93) + try _errHandler.sync(self) + switch (try getInterpreter().adaptivePredict(_input,2,_ctx)) { + case 1: + setState(92) + try quantifier() + + break + default: break + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class QuantifierContext: ParserRuleContext { + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func quantifier_type() -> Quantifier_typeContext? { + return getRuleContext(Quantifier_typeContext.self, 0) + } + open + func Plus() -> TerminalNode? { + return getToken(PCREParser.Tokens.Plus.rawValue, 0) + } + open + func Star() -> TerminalNode? { + return getToken(PCREParser.Tokens.Star.rawValue, 0) + } + open + func OpenBrace() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenBrace.rawValue, 0) + } + open + func number() -> [NumberContext] { + return getRuleContexts(NumberContext.self) + } + open + func number(_ i: Int) -> NumberContext? { + return getRuleContext(NumberContext.self, i) + } + open + func CloseBrace() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseBrace.rawValue, 0) + } + open + func Comma() -> TerminalNode? { + return getToken(PCREParser.Tokens.Comma.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_quantifier + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterQuantifier(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitQuantifier(self) + } + } + } + @discardableResult + open func quantifier() throws -> QuantifierContext { + var _localctx: QuantifierContext + _localctx = QuantifierContext(_ctx, getState()) + try enterRule(_localctx, 8, PCREParser.RULE_quantifier) + defer { + try! exitRule() + } + do { + setState(119) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,3, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(95) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(96) + try quantifier_type() + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(97) + try match(PCREParser.Tokens.Plus.rawValue) + setState(98) + try quantifier_type() + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(99) + try match(PCREParser.Tokens.Star.rawValue) + setState(100) + try quantifier_type() + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(101) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(102) + try number() + setState(103) + try match(PCREParser.Tokens.CloseBrace.rawValue) + setState(104) + try quantifier_type() + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(106) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(107) + try number() + setState(108) + try match(PCREParser.Tokens.Comma.rawValue) + setState(109) + try match(PCREParser.Tokens.CloseBrace.rawValue) + setState(110) + try quantifier_type() + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(112) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(113) + try number() + setState(114) + try match(PCREParser.Tokens.Comma.rawValue) + setState(115) + try number() + setState(116) + try match(PCREParser.Tokens.CloseBrace.rawValue) + setState(117) + try quantifier_type() + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Quantifier_typeContext: ParserRuleContext { + open + func Plus() -> TerminalNode? { + return getToken(PCREParser.Tokens.Plus.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_quantifier_type + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterQuantifier_type(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitQuantifier_type(self) + } + } + } + @discardableResult + open func quantifier_type() throws -> Quantifier_typeContext { + var _localctx: Quantifier_typeContext + _localctx = Quantifier_typeContext(_ctx, getState()) + try enterRule(_localctx, 10, PCREParser.RULE_quantifier_type) + defer { + try! exitRule() + } + do { + setState(124) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .Plus: + try enterOuterAlt(_localctx, 1) + setState(121) + try match(PCREParser.Tokens.Plus.rawValue) + + break + + case .QuestionMark: + try enterOuterAlt(_localctx, 2) + setState(122) + try match(PCREParser.Tokens.QuestionMark.rawValue) + + break + case .EOF:fallthrough + case .Quoted:fallthrough + case .BlockQuoted:fallthrough + case .BellChar:fallthrough + case .ControlChar:fallthrough + case .EscapeChar:fallthrough + case .FormFeed:fallthrough + case .NewLine:fallthrough + case .CarriageReturn:fallthrough + case .Tab:fallthrough + case .Backslash:fallthrough + case .HexChar:fallthrough + case .Dot:fallthrough + case .OneDataUnit:fallthrough + case .DecimalDigit:fallthrough + case .NotDecimalDigit:fallthrough + case .HorizontalWhiteSpace:fallthrough + case .NotHorizontalWhiteSpace:fallthrough + case .NotNewLine:fallthrough + case .CharWithProperty:fallthrough + case .CharWithoutProperty:fallthrough + case .NewLineSequence:fallthrough + case .WhiteSpace:fallthrough + case .NotWhiteSpace:fallthrough + case .VerticalWhiteSpace:fallthrough + case .NotVerticalWhiteSpace:fallthrough + case .WordChar:fallthrough + case .NotWordChar:fallthrough + case .ExtendedUnicodeChar:fallthrough + case .CharacterClassStart:fallthrough + case .CharacterClassEnd:fallthrough + case .Caret:fallthrough + case .Hyphen:fallthrough + case .POSIXNamedSet:fallthrough + case .POSIXNegatedNamedSet:fallthrough + case .OpenBrace:fallthrough + case .CloseBrace:fallthrough + case .Comma:fallthrough + case .WordBoundary:fallthrough + case .NonWordBoundary:fallthrough + case .StartOfSubject:fallthrough + case .EndOfSubjectOrLine:fallthrough + case .EndOfSubjectOrLineEndOfSubject:fallthrough + case .EndOfSubject:fallthrough + case .PreviousMatchInSubject:fallthrough + case .ResetStartMatch:fallthrough + case .SubroutineOrNamedReferenceStartG:fallthrough + case .NamedReferenceStartK:fallthrough + case .Pipe:fallthrough + case .OpenParen:fallthrough + case .CloseParen:fallthrough + case .LessThan:fallthrough + case .GreaterThan:fallthrough + case .SingleQuote:fallthrough + case .Underscore:fallthrough + case .Colon:fallthrough + case .Hash:fallthrough + case .Equals:fallthrough + case .Exclamation:fallthrough + case .Ampersand:fallthrough + case .ALC:fallthrough + case .BLC:fallthrough + case .CLC:fallthrough + case .DLC:fallthrough + case .ELC:fallthrough + case .FLC:fallthrough + case .GLC:fallthrough + case .HLC:fallthrough + case .ILC:fallthrough + case .JLC:fallthrough + case .KLC:fallthrough + case .LLC:fallthrough + case .MLC:fallthrough + case .NLC:fallthrough + case .OLC:fallthrough + case .PLC:fallthrough + case .QLC:fallthrough + case .RLC:fallthrough + case .SLC:fallthrough + case .TLC:fallthrough + case .ULC:fallthrough + case .VLC:fallthrough + case .WLC:fallthrough + case .XLC:fallthrough + case .YLC:fallthrough + case .ZLC:fallthrough + case .AUC:fallthrough + case .BUC:fallthrough + case .CUC:fallthrough + case .DUC:fallthrough + case .EUC:fallthrough + case .FUC:fallthrough + case .GUC:fallthrough + case .HUC:fallthrough + case .IUC:fallthrough + case .JUC:fallthrough + case .KUC:fallthrough + case .LUC:fallthrough + case .MUC:fallthrough + case .NUC:fallthrough + case .OUC:fallthrough + case .PUC:fallthrough + case .QUC:fallthrough + case .RUC:fallthrough + case .SUC:fallthrough + case .TUC:fallthrough + case .UUC:fallthrough + case .VUC:fallthrough + case .WUC:fallthrough + case .XUC:fallthrough + case .YUC:fallthrough + case .ZUC:fallthrough + case .D1:fallthrough + case .D2:fallthrough + case .D3:fallthrough + case .D4:fallthrough + case .D5:fallthrough + case .D6:fallthrough + case .D7:fallthrough + case .D8:fallthrough + case .D9:fallthrough + case .D0:fallthrough + case .OtherChar: + try enterOuterAlt(_localctx, 3) + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Character_classContext: ParserRuleContext { + open + func CharacterClassStart() -> TerminalNode? { + return getToken(PCREParser.Tokens.CharacterClassStart.rawValue, 0) + } + open + func Caret() -> TerminalNode? { + return getToken(PCREParser.Tokens.Caret.rawValue, 0) + } + open + func CharacterClassEnd() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.CharacterClassEnd.rawValue) + } + open + func CharacterClassEnd(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.CharacterClassEnd.rawValue, i) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func cc_atom() -> [Cc_atomContext] { + return getRuleContexts(Cc_atomContext.self) + } + open + func cc_atom(_ i: Int) -> Cc_atomContext? { + return getRuleContext(Cc_atomContext.self, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_character_class + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterCharacter_class(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitCharacter_class(self) + } + } + } + @discardableResult + open func character_class() throws -> Character_classContext { + var _localctx: Character_classContext + _localctx = Character_classContext(_ctx, getState()) + try enterRule(_localctx, 12, PCREParser.RULE_character_class) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + setState(183) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,11, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(126) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + setState(127) + try match(PCREParser.Tokens.Caret.rawValue) + setState(128) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + setState(129) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(131) + try _errHandler.sync(self) + _la = try _input.LA(1) + repeat { + setState(130) + try cc_atom() + + + setState(133); + try _errHandler.sync(self) + _la = try _input.LA(1) + } while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -2229810923315202) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) + setState(135) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(137) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + setState(138) + try match(PCREParser.Tokens.Caret.rawValue) + setState(139) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + setState(143) + try _errHandler.sync(self) + _la = try _input.LA(1) + while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -2229810923315202) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) { + setState(140) + try cc_atom() + + + setState(145) + try _errHandler.sync(self) + _la = try _input.LA(1) + } + setState(146) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(147) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + setState(148) + try match(PCREParser.Tokens.Caret.rawValue) + setState(150) + try _errHandler.sync(self) + _la = try _input.LA(1) + repeat { + setState(149) + try cc_atom() + + + setState(152); + try _errHandler.sync(self) + _la = try _input.LA(1) + } while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -2229810923315202) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) + setState(154) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(156) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + setState(157) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + setState(158) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(160) + try _errHandler.sync(self) + _la = try _input.LA(1) + repeat { + setState(159) + try cc_atom() + + + setState(162); + try _errHandler.sync(self) + _la = try _input.LA(1) + } while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -2229810923315202) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) + setState(164) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(166) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + setState(167) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + setState(171) + try _errHandler.sync(self) + _la = try _input.LA(1) + while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -2229810923315202) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) { + setState(168) + try cc_atom() + + + setState(173) + try _errHandler.sync(self) + _la = try _input.LA(1) + } + setState(174) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(175) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + setState(177) + try _errHandler.sync(self) + _la = try _input.LA(1) + repeat { + setState(176) + try cc_atom() + + + setState(179); + try _errHandler.sync(self) + _la = try _input.LA(1) + } while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -2229810923315202) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) + setState(181) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class BackreferenceContext: ParserRuleContext { + open + func backreference_or_octal() -> Backreference_or_octalContext? { + return getRuleContext(Backreference_or_octalContext.self, 0) + } + open + func SubroutineOrNamedReferenceStartG() -> TerminalNode? { + return getToken(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue, 0) + } + open + func number() -> NumberContext? { + return getRuleContext(NumberContext.self, 0) + } + open + func OpenBrace() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenBrace.rawValue, 0) + } + open + func CloseBrace() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseBrace.rawValue, 0) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func NamedReferenceStartK() -> TerminalNode? { + return getToken(PCREParser.Tokens.NamedReferenceStartK.rawValue, 0) + } + open + func LessThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.LessThan.rawValue, 0) + } + open + func name() -> NameContext? { + return getRuleContext(NameContext.self, 0) + } + open + func GreaterThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.GreaterThan.rawValue, 0) + } + open + func SingleQuote() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.SingleQuote.rawValue) + } + open + func SingleQuote(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.SingleQuote.rawValue, i) + } + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func PUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PUC.rawValue, 0) + } + open + func Equals() -> TerminalNode? { + return getToken(PCREParser.Tokens.Equals.rawValue, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_backreference + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterBackreference(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitBackreference(self) + } + } + } + @discardableResult + open func backreference() throws -> BackreferenceContext { + var _localctx: BackreferenceContext + _localctx = BackreferenceContext(_ctx, getState()) + try enterRule(_localctx, 14, PCREParser.RULE_backreference) + defer { + try! exitRule() + } + do { + setState(226) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,12, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(185) + try backreference_or_octal() + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(186) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(187) + try number() + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(188) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(189) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(190) + try number() + setState(191) + try match(PCREParser.Tokens.CloseBrace.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(193) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(194) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(195) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(196) + try number() + setState(197) + try match(PCREParser.Tokens.CloseBrace.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(199) + try match(PCREParser.Tokens.NamedReferenceStartK.rawValue) + setState(200) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(201) + try name() + setState(202) + try match(PCREParser.Tokens.GreaterThan.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(204) + try match(PCREParser.Tokens.NamedReferenceStartK.rawValue) + setState(205) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(206) + try name() + setState(207) + try match(PCREParser.Tokens.SingleQuote.rawValue) + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(209) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(210) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(211) + try name() + setState(212) + try match(PCREParser.Tokens.CloseBrace.rawValue) + + break + case 8: + try enterOuterAlt(_localctx, 8) + setState(214) + try match(PCREParser.Tokens.NamedReferenceStartK.rawValue) + setState(215) + try match(PCREParser.Tokens.OpenBrace.rawValue) + setState(216) + try name() + setState(217) + try match(PCREParser.Tokens.CloseBrace.rawValue) + + break + case 9: + try enterOuterAlt(_localctx, 9) + setState(219) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(220) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(221) + try match(PCREParser.Tokens.PUC.rawValue) + setState(222) + try match(PCREParser.Tokens.Equals.rawValue) + setState(223) + try name() + setState(224) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Backreference_or_octalContext: ParserRuleContext { + open + func octal_char() -> Octal_charContext? { + return getRuleContext(Octal_charContext.self, 0) + } + open + func Backslash() -> TerminalNode? { + return getToken(PCREParser.Tokens.Backslash.rawValue, 0) + } + open + func digit() -> DigitContext? { + return getRuleContext(DigitContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_backreference_or_octal + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterBackreference_or_octal(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitBackreference_or_octal(self) + } + } + } + @discardableResult + open func backreference_or_octal() throws -> Backreference_or_octalContext { + var _localctx: Backreference_or_octalContext + _localctx = Backreference_or_octalContext(_ctx, getState()) + try enterRule(_localctx, 16, PCREParser.RULE_backreference_or_octal) + defer { + try! exitRule() + } + do { + setState(231) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,13, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(228) + try octal_char() + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(229) + try match(PCREParser.Tokens.Backslash.rawValue) + setState(230) + try digit() + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class CaptureContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func LessThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.LessThan.rawValue, 0) + } + open + func name() -> NameContext? { + return getRuleContext(NameContext.self, 0) + } + open + func GreaterThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.GreaterThan.rawValue, 0) + } + open + func alternation() -> AlternationContext? { + return getRuleContext(AlternationContext.self, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func SingleQuote() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.SingleQuote.rawValue) + } + open + func SingleQuote(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.SingleQuote.rawValue, i) + } + open + func PUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PUC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_capture + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterCapture(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitCapture(self) + } + } + } + @discardableResult + open func capture() throws -> CaptureContext { + var _localctx: CaptureContext + _localctx = CaptureContext(_ctx, getState()) + try enterRule(_localctx, 18, PCREParser.RULE_capture) + defer { + try! exitRule() + } + do { + setState(262) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,14, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(233) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(234) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(235) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(236) + try name() + setState(237) + try match(PCREParser.Tokens.GreaterThan.rawValue) + setState(238) + try alternation() + setState(239) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(241) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(242) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(243) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(244) + try name() + setState(245) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(246) + try alternation() + setState(247) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(249) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(250) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(251) + try match(PCREParser.Tokens.PUC.rawValue) + setState(252) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(253) + try name() + setState(254) + try match(PCREParser.Tokens.GreaterThan.rawValue) + setState(255) + try alternation() + setState(256) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(258) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(259) + try alternation() + setState(260) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Non_captureContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func Colon() -> TerminalNode? { + return getToken(PCREParser.Tokens.Colon.rawValue, 0) + } + open + func alternation() -> AlternationContext? { + return getRuleContext(AlternationContext.self, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func Pipe() -> TerminalNode? { + return getToken(PCREParser.Tokens.Pipe.rawValue, 0) + } + open + func GreaterThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.GreaterThan.rawValue, 0) + } + open + func option_flags() -> Option_flagsContext? { + return getRuleContext(Option_flagsContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_non_capture + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterNon_capture(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitNon_capture(self) + } + } + } + @discardableResult + open func non_capture() throws -> Non_captureContext { + var _localctx: Non_captureContext + _localctx = Non_captureContext(_ctx, getState()) + try enterRule(_localctx, 20, PCREParser.RULE_non_capture) + defer { + try! exitRule() + } + do { + setState(289) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,15, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(264) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(265) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(266) + try match(PCREParser.Tokens.Colon.rawValue) + setState(267) + try alternation() + setState(268) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(270) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(271) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(272) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(273) + try alternation() + setState(274) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(276) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(277) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(278) + try match(PCREParser.Tokens.GreaterThan.rawValue) + setState(279) + try alternation() + setState(280) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(282) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(283) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(284) + try option_flags() + setState(285) + try match(PCREParser.Tokens.Colon.rawValue) + setState(286) + try alternation() + setState(287) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class CommentContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func Hash() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hash.rawValue, 0) + } + open + func non_close_parens() -> Non_close_parensContext? { + return getRuleContext(Non_close_parensContext.self, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_comment + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterComment(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitComment(self) + } + } + } + @discardableResult + open func comment() throws -> CommentContext { + var _localctx: CommentContext + _localctx = CommentContext(_ctx, getState()) + try enterRule(_localctx, 22, PCREParser.RULE_comment) + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(291) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(292) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(293) + try match(PCREParser.Tokens.Hash.rawValue) + setState(294) + try non_close_parens() + setState(295) + try match(PCREParser.Tokens.CloseParen.rawValue) + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class OptionContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func option_flags() -> [Option_flagsContext] { + return getRuleContexts(Option_flagsContext.self) + } + open + func option_flags(_ i: Int) -> Option_flagsContext? { + return getRuleContext(Option_flagsContext.self, i) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func Star() -> TerminalNode? { + return getToken(PCREParser.Tokens.Star.rawValue, 0) + } + open + func NUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.NUC.rawValue, 0) + } + open + func OUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.OUC.rawValue) + } + open + func OUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.OUC.rawValue, i) + } + open + func Underscore() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.Underscore.rawValue) + } + open + func Underscore(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.Underscore.rawValue, i) + } + open + func SUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.SUC.rawValue, 0) + } + open + func TUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.TUC.rawValue) + } + open + func TUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.TUC.rawValue, i) + } + open + func AUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.AUC.rawValue, 0) + } + open + func RUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RUC.rawValue, 0) + } + open + func PUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PUC.rawValue, 0) + } + open + func UUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.UUC.rawValue, 0) + } + open + func FUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.FUC.rawValue, 0) + } + open + func D8() -> TerminalNode? { + return getToken(PCREParser.Tokens.D8.rawValue, 0) + } + open + func D1() -> TerminalNode? { + return getToken(PCREParser.Tokens.D1.rawValue, 0) + } + open + func D6() -> TerminalNode? { + return getToken(PCREParser.Tokens.D6.rawValue, 0) + } + open + func CUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.CUC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_option + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterOption(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitOption(self) + } + } + } + @discardableResult + open func option() throws -> OptionContext { + var _localctx: OptionContext + _localctx = OptionContext(_ctx, getState()) + try enterRule(_localctx, 24, PCREParser.RULE_option) + defer { + try! exitRule() + } + do { + setState(351) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,16, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(297) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(298) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(299) + try option_flags() + setState(300) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(301) + try option_flags() + setState(302) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(304) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(305) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(306) + try option_flags() + setState(307) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(309) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(310) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(311) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(312) + try option_flags() + setState(313) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(315) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(316) + try match(PCREParser.Tokens.Star.rawValue) + setState(317) + try match(PCREParser.Tokens.NUC.rawValue) + setState(318) + try match(PCREParser.Tokens.OUC.rawValue) + setState(319) + try match(PCREParser.Tokens.Underscore.rawValue) + setState(320) + try match(PCREParser.Tokens.SUC.rawValue) + setState(321) + try match(PCREParser.Tokens.TUC.rawValue) + setState(322) + try match(PCREParser.Tokens.AUC.rawValue) + setState(323) + try match(PCREParser.Tokens.RUC.rawValue) + setState(324) + try match(PCREParser.Tokens.TUC.rawValue) + setState(325) + try match(PCREParser.Tokens.Underscore.rawValue) + setState(326) + try match(PCREParser.Tokens.OUC.rawValue) + setState(327) + try match(PCREParser.Tokens.PUC.rawValue) + setState(328) + try match(PCREParser.Tokens.TUC.rawValue) + setState(329) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(330) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(331) + try match(PCREParser.Tokens.Star.rawValue) + setState(332) + try match(PCREParser.Tokens.UUC.rawValue) + setState(333) + try match(PCREParser.Tokens.TUC.rawValue) + setState(334) + try match(PCREParser.Tokens.FUC.rawValue) + setState(335) + try match(PCREParser.Tokens.D8.rawValue) + setState(336) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(337) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(338) + try match(PCREParser.Tokens.Star.rawValue) + setState(339) + try match(PCREParser.Tokens.UUC.rawValue) + setState(340) + try match(PCREParser.Tokens.TUC.rawValue) + setState(341) + try match(PCREParser.Tokens.FUC.rawValue) + setState(342) + try match(PCREParser.Tokens.D1.rawValue) + setState(343) + try match(PCREParser.Tokens.D6.rawValue) + setState(344) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(345) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(346) + try match(PCREParser.Tokens.Star.rawValue) + setState(347) + try match(PCREParser.Tokens.UUC.rawValue) + setState(348) + try match(PCREParser.Tokens.CUC.rawValue) + setState(349) + try match(PCREParser.Tokens.PUC.rawValue) + setState(350) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Option_flagsContext: ParserRuleContext { + open + func option_flag() -> [Option_flagContext] { + return getRuleContexts(Option_flagContext.self) + } + open + func option_flag(_ i: Int) -> Option_flagContext? { + return getRuleContext(Option_flagContext.self, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_option_flags + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterOption_flags(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitOption_flags(self) + } + } + } + @discardableResult + open func option_flags() throws -> Option_flagsContext { + var _localctx: Option_flagsContext + _localctx = Option_flagsContext(_ctx, getState()) + try enterRule(_localctx, 26, PCREParser.RULE_option_flags) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(354) + try _errHandler.sync(self) + _la = try _input.LA(1) + repeat { + setState(353) + try option_flag() + + + setState(356); + try _errHandler.sync(self) + _la = try _input.LA(1) + } while ((Int64((_la - 71)) & ~0x3f) == 0 && ((Int64(1) << (_la - 71)) & 275012158481) != 0) + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Option_flagContext: ParserRuleContext { + open + func ILC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ILC.rawValue, 0) + } + open + func JUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.JUC.rawValue, 0) + } + open + func MLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.MLC.rawValue, 0) + } + open + func SLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.SLC.rawValue, 0) + } + open + func UUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.UUC.rawValue, 0) + } + open + func XLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.XLC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_option_flag + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterOption_flag(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitOption_flag(self) + } + } + } + @discardableResult + open func option_flag() throws -> Option_flagContext { + var _localctx: Option_flagContext + _localctx = Option_flagContext(_ctx, getState()) + try enterRule(_localctx, 28, PCREParser.RULE_option_flag) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(358) + _la = try _input.LA(1) + if (!((Int64((_la - 71)) & ~0x3f) == 0 && ((Int64(1) << (_la - 71)) & 275012158481) != 0)) { + try _errHandler.recoverInline(self) + } + else { + _errHandler.reportMatch(self) + try consume() + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Look_aroundContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func Equals() -> TerminalNode? { + return getToken(PCREParser.Tokens.Equals.rawValue, 0) + } + open + func alternation() -> AlternationContext? { + return getRuleContext(AlternationContext.self, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func Exclamation() -> TerminalNode? { + return getToken(PCREParser.Tokens.Exclamation.rawValue, 0) + } + open + func LessThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.LessThan.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_look_around + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterLook_around(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitLook_around(self) + } + } + } + @discardableResult + open func look_around() throws -> Look_aroundContext { + var _localctx: Look_aroundContext + _localctx = Look_aroundContext(_ctx, getState()) + try enterRule(_localctx, 30, PCREParser.RULE_look_around) + defer { + try! exitRule() + } + do { + setState(386) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,18, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(360) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(361) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(362) + try match(PCREParser.Tokens.Equals.rawValue) + setState(363) + try alternation() + setState(364) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(366) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(367) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(368) + try match(PCREParser.Tokens.Exclamation.rawValue) + setState(369) + try alternation() + setState(370) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(372) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(373) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(374) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(375) + try match(PCREParser.Tokens.Equals.rawValue) + setState(376) + try alternation() + setState(377) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(379) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(380) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(381) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(382) + try match(PCREParser.Tokens.Exclamation.rawValue) + setState(383) + try alternation() + setState(384) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Subroutine_referenceContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func RUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RUC.rawValue, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func number() -> NumberContext? { + return getRuleContext(NumberContext.self, 0) + } + open + func Plus() -> TerminalNode? { + return getToken(PCREParser.Tokens.Plus.rawValue, 0) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func Ampersand() -> TerminalNode? { + return getToken(PCREParser.Tokens.Ampersand.rawValue, 0) + } + open + func name() -> NameContext? { + return getRuleContext(NameContext.self, 0) + } + open + func PUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PUC.rawValue, 0) + } + open + func GreaterThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.GreaterThan.rawValue, 0) + } + open + func SubroutineOrNamedReferenceStartG() -> TerminalNode? { + return getToken(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue, 0) + } + open + func LessThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.LessThan.rawValue, 0) + } + open + func SingleQuote() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.SingleQuote.rawValue) + } + open + func SingleQuote(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.SingleQuote.rawValue, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_subroutine_reference + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterSubroutine_reference(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitSubroutine_reference(self) + } + } + } + @discardableResult + open func subroutine_reference() throws -> Subroutine_referenceContext { + var _localctx: Subroutine_referenceContext + _localctx = Subroutine_referenceContext(_ctx, getState()) + try enterRule(_localctx, 32, PCREParser.RULE_subroutine_reference) + defer { + try! exitRule() + } + do { + setState(466) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,19, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(388) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(389) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(390) + try match(PCREParser.Tokens.RUC.rawValue) + setState(391) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(392) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(393) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(394) + try number() + setState(395) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(397) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(398) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(399) + try match(PCREParser.Tokens.Plus.rawValue) + setState(400) + try number() + setState(401) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(403) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(404) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(405) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(406) + try number() + setState(407) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(409) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(410) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(411) + try match(PCREParser.Tokens.Ampersand.rawValue) + setState(412) + try name() + setState(413) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(415) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(416) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(417) + try match(PCREParser.Tokens.PUC.rawValue) + setState(418) + try match(PCREParser.Tokens.GreaterThan.rawValue) + setState(419) + try name() + setState(420) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(422) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(423) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(424) + try name() + setState(425) + try match(PCREParser.Tokens.GreaterThan.rawValue) + + break + case 8: + try enterOuterAlt(_localctx, 8) + setState(427) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(428) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(429) + try name() + setState(430) + try match(PCREParser.Tokens.SingleQuote.rawValue) + + break + case 9: + try enterOuterAlt(_localctx, 9) + setState(432) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(433) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(434) + try number() + setState(435) + try match(PCREParser.Tokens.GreaterThan.rawValue) + + break + case 10: + try enterOuterAlt(_localctx, 10) + setState(437) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(438) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(439) + try number() + setState(440) + try match(PCREParser.Tokens.SingleQuote.rawValue) + + break + case 11: + try enterOuterAlt(_localctx, 11) + setState(442) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(443) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(444) + try match(PCREParser.Tokens.Plus.rawValue) + setState(445) + try number() + setState(446) + try match(PCREParser.Tokens.GreaterThan.rawValue) + + break + case 12: + try enterOuterAlt(_localctx, 12) + setState(448) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(449) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(450) + try match(PCREParser.Tokens.Plus.rawValue) + setState(451) + try number() + setState(452) + try match(PCREParser.Tokens.SingleQuote.rawValue) + + break + case 13: + try enterOuterAlt(_localctx, 13) + setState(454) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(455) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(456) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(457) + try number() + setState(458) + try match(PCREParser.Tokens.GreaterThan.rawValue) + + break + case 14: + try enterOuterAlt(_localctx, 14) + setState(460) + try match(PCREParser.Tokens.SubroutineOrNamedReferenceStartG.rawValue) + setState(461) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(462) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(463) + try number() + setState(464) + try match(PCREParser.Tokens.SingleQuote.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class ConditionalContext: ParserRuleContext { + open + func OpenParen() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.OpenParen.rawValue) + } + open + func OpenParen(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, i) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func number() -> NumberContext? { + return getRuleContext(NumberContext.self, 0) + } + open + func CloseParen() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.CloseParen.rawValue) + } + open + func CloseParen(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, i) + } + open + func alternation() -> [AlternationContext] { + return getRuleContexts(AlternationContext.self) + } + open + func alternation(_ i: Int) -> AlternationContext? { + return getRuleContext(AlternationContext.self, i) + } + open + func Pipe() -> TerminalNode? { + return getToken(PCREParser.Tokens.Pipe.rawValue, 0) + } + open + func Plus() -> TerminalNode? { + return getToken(PCREParser.Tokens.Plus.rawValue, 0) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func LessThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.LessThan.rawValue, 0) + } + open + func name() -> NameContext? { + return getRuleContext(NameContext.self, 0) + } + open + func GreaterThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.GreaterThan.rawValue, 0) + } + open + func SingleQuote() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.SingleQuote.rawValue) + } + open + func SingleQuote(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.SingleQuote.rawValue, i) + } + open + func RUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RUC.rawValue, 0) + } + open + func Ampersand() -> TerminalNode? { + return getToken(PCREParser.Tokens.Ampersand.rawValue, 0) + } + open + func DUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.DUC.rawValue, 0) + } + open + func EUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.EUC.rawValue) + } + open + func EUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.EUC.rawValue, i) + } + open + func FUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.FUC.rawValue, 0) + } + open + func IUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.IUC.rawValue, 0) + } + open + func NUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.NUC.rawValue, 0) + } + open + func ALC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ALC.rawValue, 0) + } + open + func SLC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.SLC.rawValue) + } + open + func SLC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.SLC.rawValue, i) + } + open + func ELC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ELC.rawValue, 0) + } + open + func RLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RLC.rawValue, 0) + } + open + func TLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.TLC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_conditional + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterConditional(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitConditional(self) + } + } + } + @discardableResult + open func conditional() throws -> ConditionalContext { + var _localctx: ConditionalContext + _localctx = ConditionalContext(_ctx, getState()) + try enterRule(_localctx, 34, PCREParser.RULE_conditional) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + setState(619) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,31, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(468) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(469) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(470) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(471) + try number() + setState(472) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(473) + try alternation() + setState(476) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(474) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(475) + try alternation() + + } + + setState(478) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(480) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(481) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(482) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(483) + try match(PCREParser.Tokens.Plus.rawValue) + setState(484) + try number() + setState(485) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(486) + try alternation() + setState(489) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(487) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(488) + try alternation() + + } + + setState(491) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(493) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(494) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(495) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(496) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(497) + try number() + setState(498) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(499) + try alternation() + setState(502) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(500) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(501) + try alternation() + + } + + setState(504) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(506) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(507) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(508) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(509) + try match(PCREParser.Tokens.LessThan.rawValue) + setState(510) + try name() + setState(511) + try match(PCREParser.Tokens.GreaterThan.rawValue) + setState(512) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(513) + try alternation() + setState(516) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(514) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(515) + try alternation() + + } + + setState(518) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(520) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(521) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(522) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(523) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(524) + try name() + setState(525) + try match(PCREParser.Tokens.SingleQuote.rawValue) + setState(526) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(527) + try alternation() + setState(530) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(528) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(529) + try alternation() + + } + + setState(532) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(534) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(535) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(536) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(537) + try match(PCREParser.Tokens.RUC.rawValue) + setState(538) + try number() + setState(539) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(540) + try alternation() + setState(543) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(541) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(542) + try alternation() + + } + + setState(545) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(547) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(548) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(549) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(550) + try match(PCREParser.Tokens.RUC.rawValue) + setState(551) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(552) + try alternation() + setState(555) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(553) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(554) + try alternation() + + } + + setState(557) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 8: + try enterOuterAlt(_localctx, 8) + setState(559) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(560) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(561) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(562) + try match(PCREParser.Tokens.RUC.rawValue) + setState(563) + try match(PCREParser.Tokens.Ampersand.rawValue) + setState(564) + try name() + setState(565) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(566) + try alternation() + setState(569) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(567) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(568) + try alternation() + + } + + setState(571) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 9: + try enterOuterAlt(_localctx, 9) + setState(573) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(574) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(575) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(576) + try match(PCREParser.Tokens.DUC.rawValue) + setState(577) + try match(PCREParser.Tokens.EUC.rawValue) + setState(578) + try match(PCREParser.Tokens.FUC.rawValue) + setState(579) + try match(PCREParser.Tokens.IUC.rawValue) + setState(580) + try match(PCREParser.Tokens.NUC.rawValue) + setState(581) + try match(PCREParser.Tokens.EUC.rawValue) + setState(582) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(583) + try alternation() + setState(586) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(584) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(585) + try alternation() + + } + + setState(588) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 10: + try enterOuterAlt(_localctx, 10) + setState(590) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(591) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(592) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(593) + try match(PCREParser.Tokens.ALC.rawValue) + setState(594) + try match(PCREParser.Tokens.SLC.rawValue) + setState(595) + try match(PCREParser.Tokens.SLC.rawValue) + setState(596) + try match(PCREParser.Tokens.ELC.rawValue) + setState(597) + try match(PCREParser.Tokens.RLC.rawValue) + setState(598) + try match(PCREParser.Tokens.TLC.rawValue) + setState(599) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(600) + try alternation() + setState(603) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(601) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(602) + try alternation() + + } + + setState(605) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 11: + try enterOuterAlt(_localctx, 11) + setState(607) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(608) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(609) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(610) + try name() + setState(611) + try match(PCREParser.Tokens.CloseParen.rawValue) + setState(612) + try alternation() + setState(615) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.Pipe.rawValue) { + setState(613) + try match(PCREParser.Tokens.Pipe.rawValue) + setState(614) + try alternation() + + } + + setState(617) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Backtrack_controlContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func Star() -> TerminalNode? { + return getToken(PCREParser.Tokens.Star.rawValue, 0) + } + open + func AUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.AUC.rawValue) + } + open + func AUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.AUC.rawValue, i) + } + open + func CUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.CUC.rawValue) + } + open + func CUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.CUC.rawValue, i) + } + open + func EUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.EUC.rawValue) + } + open + func EUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.EUC.rawValue, i) + } + open + func PUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PUC.rawValue, 0) + } + open + func TUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.TUC.rawValue, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func FUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.FUC.rawValue, 0) + } + open + func IUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.IUC.rawValue, 0) + } + open + func LUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.LUC.rawValue, 0) + } + open + func Colon() -> TerminalNode? { + return getToken(PCREParser.Tokens.Colon.rawValue, 0) + } + open + func NUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.NUC.rawValue) + } + open + func NUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.NUC.rawValue, i) + } + open + func MUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.MUC.rawValue) + } + open + func MUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.MUC.rawValue, i) + } + open + func RUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RUC.rawValue, 0) + } + open + func KUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.KUC.rawValue, 0) + } + open + func OUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.OUC.rawValue, 0) + } + open + func UUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.UUC.rawValue, 0) + } + open + func SUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.SUC.rawValue, 0) + } + open + func HUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.HUC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_backtrack_control + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterBacktrack_control(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitBacktrack_control(self) + } + } + } + @discardableResult + open func backtrack_control() throws -> Backtrack_controlContext { + var _localctx: Backtrack_controlContext + _localctx = Backtrack_controlContext(_ctx, getState()) + try enterRule(_localctx, 36, PCREParser.RULE_backtrack_control) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + setState(721) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,34, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(621) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(622) + try match(PCREParser.Tokens.Star.rawValue) + setState(623) + try match(PCREParser.Tokens.AUC.rawValue) + setState(624) + try match(PCREParser.Tokens.CUC.rawValue) + setState(625) + try match(PCREParser.Tokens.CUC.rawValue) + setState(626) + try match(PCREParser.Tokens.EUC.rawValue) + setState(627) + try match(PCREParser.Tokens.PUC.rawValue) + setState(628) + try match(PCREParser.Tokens.TUC.rawValue) + setState(629) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(630) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(631) + try match(PCREParser.Tokens.Star.rawValue) + setState(632) + try match(PCREParser.Tokens.FUC.rawValue) + setState(636) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.AUC.rawValue) { + setState(633) + try match(PCREParser.Tokens.AUC.rawValue) + setState(634) + try match(PCREParser.Tokens.IUC.rawValue) + setState(635) + try match(PCREParser.Tokens.LUC.rawValue) + + } + + setState(638) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(639) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(640) + try match(PCREParser.Tokens.Star.rawValue) + setState(645) + try _errHandler.sync(self) + _la = try _input.LA(1) + if (_la == PCREParser.Tokens.MUC.rawValue) { + setState(641) + try match(PCREParser.Tokens.MUC.rawValue) + setState(642) + try match(PCREParser.Tokens.AUC.rawValue) + setState(643) + try match(PCREParser.Tokens.RUC.rawValue) + setState(644) + try match(PCREParser.Tokens.KUC.rawValue) + + } + + setState(647) + try match(PCREParser.Tokens.Colon.rawValue) + setState(648) + try match(PCREParser.Tokens.NUC.rawValue) + setState(649) + try match(PCREParser.Tokens.AUC.rawValue) + setState(650) + try match(PCREParser.Tokens.MUC.rawValue) + setState(651) + try match(PCREParser.Tokens.EUC.rawValue) + setState(652) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(653) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(654) + try match(PCREParser.Tokens.Star.rawValue) + setState(655) + try match(PCREParser.Tokens.CUC.rawValue) + setState(656) + try match(PCREParser.Tokens.OUC.rawValue) + setState(657) + try match(PCREParser.Tokens.MUC.rawValue) + setState(658) + try match(PCREParser.Tokens.MUC.rawValue) + setState(659) + try match(PCREParser.Tokens.IUC.rawValue) + setState(660) + try match(PCREParser.Tokens.TUC.rawValue) + setState(661) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(662) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(663) + try match(PCREParser.Tokens.Star.rawValue) + setState(664) + try match(PCREParser.Tokens.PUC.rawValue) + setState(665) + try match(PCREParser.Tokens.RUC.rawValue) + setState(666) + try match(PCREParser.Tokens.UUC.rawValue) + setState(667) + try match(PCREParser.Tokens.NUC.rawValue) + setState(668) + try match(PCREParser.Tokens.EUC.rawValue) + setState(669) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(670) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(671) + try match(PCREParser.Tokens.Star.rawValue) + setState(672) + try match(PCREParser.Tokens.PUC.rawValue) + setState(673) + try match(PCREParser.Tokens.RUC.rawValue) + setState(674) + try match(PCREParser.Tokens.UUC.rawValue) + setState(675) + try match(PCREParser.Tokens.NUC.rawValue) + setState(676) + try match(PCREParser.Tokens.EUC.rawValue) + setState(677) + try match(PCREParser.Tokens.Colon.rawValue) + setState(678) + try match(PCREParser.Tokens.NUC.rawValue) + setState(679) + try match(PCREParser.Tokens.AUC.rawValue) + setState(680) + try match(PCREParser.Tokens.MUC.rawValue) + setState(681) + try match(PCREParser.Tokens.EUC.rawValue) + setState(682) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(683) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(684) + try match(PCREParser.Tokens.Star.rawValue) + setState(685) + try match(PCREParser.Tokens.SUC.rawValue) + setState(686) + try match(PCREParser.Tokens.KUC.rawValue) + setState(687) + try match(PCREParser.Tokens.IUC.rawValue) + setState(688) + try match(PCREParser.Tokens.PUC.rawValue) + setState(689) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 8: + try enterOuterAlt(_localctx, 8) + setState(690) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(691) + try match(PCREParser.Tokens.Star.rawValue) + setState(692) + try match(PCREParser.Tokens.SUC.rawValue) + setState(693) + try match(PCREParser.Tokens.KUC.rawValue) + setState(694) + try match(PCREParser.Tokens.IUC.rawValue) + setState(695) + try match(PCREParser.Tokens.PUC.rawValue) + setState(696) + try match(PCREParser.Tokens.Colon.rawValue) + setState(697) + try match(PCREParser.Tokens.NUC.rawValue) + setState(698) + try match(PCREParser.Tokens.AUC.rawValue) + setState(699) + try match(PCREParser.Tokens.MUC.rawValue) + setState(700) + try match(PCREParser.Tokens.EUC.rawValue) + setState(701) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 9: + try enterOuterAlt(_localctx, 9) + setState(702) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(703) + try match(PCREParser.Tokens.Star.rawValue) + setState(704) + try match(PCREParser.Tokens.TUC.rawValue) + setState(705) + try match(PCREParser.Tokens.HUC.rawValue) + setState(706) + try match(PCREParser.Tokens.EUC.rawValue) + setState(707) + try match(PCREParser.Tokens.NUC.rawValue) + setState(708) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 10: + try enterOuterAlt(_localctx, 10) + setState(709) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(710) + try match(PCREParser.Tokens.Star.rawValue) + setState(711) + try match(PCREParser.Tokens.TUC.rawValue) + setState(712) + try match(PCREParser.Tokens.HUC.rawValue) + setState(713) + try match(PCREParser.Tokens.EUC.rawValue) + setState(714) + try match(PCREParser.Tokens.NUC.rawValue) + setState(715) + try match(PCREParser.Tokens.Colon.rawValue) + setState(716) + try match(PCREParser.Tokens.NUC.rawValue) + setState(717) + try match(PCREParser.Tokens.AUC.rawValue) + setState(718) + try match(PCREParser.Tokens.MUC.rawValue) + setState(719) + try match(PCREParser.Tokens.EUC.rawValue) + setState(720) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Newline_conventionContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func Star() -> TerminalNode? { + return getToken(PCREParser.Tokens.Star.rawValue, 0) + } + open + func CUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.CUC.rawValue, 0) + } + open + func RUC() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.RUC.rawValue) + } + open + func RUC(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.RUC.rawValue, i) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func LUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.LUC.rawValue, 0) + } + open + func FUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.FUC.rawValue, 0) + } + open + func AUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.AUC.rawValue, 0) + } + open + func NUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.NUC.rawValue, 0) + } + open + func YUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.YUC.rawValue, 0) + } + open + func BUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.BUC.rawValue, 0) + } + open + func SUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.SUC.rawValue, 0) + } + open + func Underscore() -> TerminalNode? { + return getToken(PCREParser.Tokens.Underscore.rawValue, 0) + } + open + func UUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.UUC.rawValue, 0) + } + open + func IUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.IUC.rawValue, 0) + } + open + func OUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.OUC.rawValue, 0) + } + open + func DUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.DUC.rawValue, 0) + } + open + func EUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.EUC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_newline_convention + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterNewline_convention(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitNewline_convention(self) + } + } + } + @discardableResult + open func newline_convention() throws -> Newline_conventionContext { + var _localctx: Newline_conventionContext + _localctx = Newline_conventionContext(_ctx, getState()) + try enterRule(_localctx, 38, PCREParser.RULE_newline_convention) + defer { + try! exitRule() + } + do { + setState(784) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,35, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(723) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(724) + try match(PCREParser.Tokens.Star.rawValue) + setState(725) + try match(PCREParser.Tokens.CUC.rawValue) + setState(726) + try match(PCREParser.Tokens.RUC.rawValue) + setState(727) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(728) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(729) + try match(PCREParser.Tokens.Star.rawValue) + setState(730) + try match(PCREParser.Tokens.LUC.rawValue) + setState(731) + try match(PCREParser.Tokens.FUC.rawValue) + setState(732) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(733) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(734) + try match(PCREParser.Tokens.Star.rawValue) + setState(735) + try match(PCREParser.Tokens.CUC.rawValue) + setState(736) + try match(PCREParser.Tokens.RUC.rawValue) + setState(737) + try match(PCREParser.Tokens.LUC.rawValue) + setState(738) + try match(PCREParser.Tokens.FUC.rawValue) + setState(739) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(740) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(741) + try match(PCREParser.Tokens.Star.rawValue) + setState(742) + try match(PCREParser.Tokens.AUC.rawValue) + setState(743) + try match(PCREParser.Tokens.NUC.rawValue) + setState(744) + try match(PCREParser.Tokens.YUC.rawValue) + setState(745) + try match(PCREParser.Tokens.CUC.rawValue) + setState(746) + try match(PCREParser.Tokens.RUC.rawValue) + setState(747) + try match(PCREParser.Tokens.LUC.rawValue) + setState(748) + try match(PCREParser.Tokens.FUC.rawValue) + setState(749) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(750) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(751) + try match(PCREParser.Tokens.Star.rawValue) + setState(752) + try match(PCREParser.Tokens.AUC.rawValue) + setState(753) + try match(PCREParser.Tokens.NUC.rawValue) + setState(754) + try match(PCREParser.Tokens.YUC.rawValue) + setState(755) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(756) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(757) + try match(PCREParser.Tokens.Star.rawValue) + setState(758) + try match(PCREParser.Tokens.BUC.rawValue) + setState(759) + try match(PCREParser.Tokens.SUC.rawValue) + setState(760) + try match(PCREParser.Tokens.RUC.rawValue) + setState(761) + try match(PCREParser.Tokens.Underscore.rawValue) + setState(762) + try match(PCREParser.Tokens.AUC.rawValue) + setState(763) + try match(PCREParser.Tokens.NUC.rawValue) + setState(764) + try match(PCREParser.Tokens.YUC.rawValue) + setState(765) + try match(PCREParser.Tokens.CUC.rawValue) + setState(766) + try match(PCREParser.Tokens.RUC.rawValue) + setState(767) + try match(PCREParser.Tokens.LUC.rawValue) + setState(768) + try match(PCREParser.Tokens.FUC.rawValue) + setState(769) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(770) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(771) + try match(PCREParser.Tokens.Star.rawValue) + setState(772) + try match(PCREParser.Tokens.BUC.rawValue) + setState(773) + try match(PCREParser.Tokens.SUC.rawValue) + setState(774) + try match(PCREParser.Tokens.RUC.rawValue) + setState(775) + try match(PCREParser.Tokens.Underscore.rawValue) + setState(776) + try match(PCREParser.Tokens.UUC.rawValue) + setState(777) + try match(PCREParser.Tokens.NUC.rawValue) + setState(778) + try match(PCREParser.Tokens.IUC.rawValue) + setState(779) + try match(PCREParser.Tokens.CUC.rawValue) + setState(780) + try match(PCREParser.Tokens.OUC.rawValue) + setState(781) + try match(PCREParser.Tokens.DUC.rawValue) + setState(782) + try match(PCREParser.Tokens.EUC.rawValue) + setState(783) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class CalloutContext: ParserRuleContext { + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func CUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.CUC.rawValue, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + open + func number() -> NumberContext? { + return getRuleContext(NumberContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_callout + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterCallout(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitCallout(self) + } + } + } + @discardableResult + open func callout() throws -> CalloutContext { + var _localctx: CalloutContext + _localctx = CalloutContext(_ctx, getState()) + try enterRule(_localctx, 40, PCREParser.RULE_callout) + defer { + try! exitRule() + } + do { + setState(796) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,36, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(786) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(787) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(788) + try match(PCREParser.Tokens.CUC.rawValue) + setState(789) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(790) + try match(PCREParser.Tokens.OpenParen.rawValue) + setState(791) + try match(PCREParser.Tokens.QuestionMark.rawValue) + setState(792) + try match(PCREParser.Tokens.CUC.rawValue) + setState(793) + try number() + setState(794) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class AtomContext: ParserRuleContext { + open + func subroutine_reference() -> Subroutine_referenceContext? { + return getRuleContext(Subroutine_referenceContext.self, 0) + } + open + func shared_atom() -> Shared_atomContext? { + return getRuleContext(Shared_atomContext.self, 0) + } + open + func literal() -> LiteralContext? { + return getRuleContext(LiteralContext.self, 0) + } + open + func character_class() -> Character_classContext? { + return getRuleContext(Character_classContext.self, 0) + } + open + func capture() -> CaptureContext? { + return getRuleContext(CaptureContext.self, 0) + } + open + func non_capture() -> Non_captureContext? { + return getRuleContext(Non_captureContext.self, 0) + } + open + func comment() -> CommentContext? { + return getRuleContext(CommentContext.self, 0) + } + open + func option() -> OptionContext? { + return getRuleContext(OptionContext.self, 0) + } + open + func look_around() -> Look_aroundContext? { + return getRuleContext(Look_aroundContext.self, 0) + } + open + func backreference() -> BackreferenceContext? { + return getRuleContext(BackreferenceContext.self, 0) + } + open + func conditional() -> ConditionalContext? { + return getRuleContext(ConditionalContext.self, 0) + } + open + func backtrack_control() -> Backtrack_controlContext? { + return getRuleContext(Backtrack_controlContext.self, 0) + } + open + func newline_convention() -> Newline_conventionContext? { + return getRuleContext(Newline_conventionContext.self, 0) + } + open + func callout() -> CalloutContext? { + return getRuleContext(CalloutContext.self, 0) + } + open + func Dot() -> TerminalNode? { + return getToken(PCREParser.Tokens.Dot.rawValue, 0) + } + open + func Caret() -> TerminalNode? { + return getToken(PCREParser.Tokens.Caret.rawValue, 0) + } + open + func StartOfSubject() -> TerminalNode? { + return getToken(PCREParser.Tokens.StartOfSubject.rawValue, 0) + } + open + func WordBoundary() -> TerminalNode? { + return getToken(PCREParser.Tokens.WordBoundary.rawValue, 0) + } + open + func NonWordBoundary() -> TerminalNode? { + return getToken(PCREParser.Tokens.NonWordBoundary.rawValue, 0) + } + open + func EndOfSubjectOrLine() -> TerminalNode? { + return getToken(PCREParser.Tokens.EndOfSubjectOrLine.rawValue, 0) + } + open + func EndOfSubjectOrLineEndOfSubject() -> TerminalNode? { + return getToken(PCREParser.Tokens.EndOfSubjectOrLineEndOfSubject.rawValue, 0) + } + open + func EndOfSubject() -> TerminalNode? { + return getToken(PCREParser.Tokens.EndOfSubject.rawValue, 0) + } + open + func PreviousMatchInSubject() -> TerminalNode? { + return getToken(PCREParser.Tokens.PreviousMatchInSubject.rawValue, 0) + } + open + func ResetStartMatch() -> TerminalNode? { + return getToken(PCREParser.Tokens.ResetStartMatch.rawValue, 0) + } + open + func OneDataUnit() -> TerminalNode? { + return getToken(PCREParser.Tokens.OneDataUnit.rawValue, 0) + } + open + func ExtendedUnicodeChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.ExtendedUnicodeChar.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_atom + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterAtom(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitAtom(self) + } + } + } + @discardableResult + open func atom() throws -> AtomContext { + var _localctx: AtomContext + _localctx = AtomContext(_ctx, getState()) + try enterRule(_localctx, 42, PCREParser.RULE_atom) + defer { + try! exitRule() + } + do { + setState(824) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,37, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(798) + try subroutine_reference() + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(799) + try shared_atom() + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(800) + try literal() + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(801) + try character_class() + + break + case 5: + try enterOuterAlt(_localctx, 5) + setState(802) + try capture() + + break + case 6: + try enterOuterAlt(_localctx, 6) + setState(803) + try non_capture() + + break + case 7: + try enterOuterAlt(_localctx, 7) + setState(804) + try comment() + + break + case 8: + try enterOuterAlt(_localctx, 8) + setState(805) + try option() + + break + case 9: + try enterOuterAlt(_localctx, 9) + setState(806) + try look_around() + + break + case 10: + try enterOuterAlt(_localctx, 10) + setState(807) + try backreference() + + break + case 11: + try enterOuterAlt(_localctx, 11) + setState(808) + try conditional() + + break + case 12: + try enterOuterAlt(_localctx, 12) + setState(809) + try backtrack_control() + + break + case 13: + try enterOuterAlt(_localctx, 13) + setState(810) + try newline_convention() + + break + case 14: + try enterOuterAlt(_localctx, 14) + setState(811) + try callout() + + break + case 15: + try enterOuterAlt(_localctx, 15) + setState(812) + try match(PCREParser.Tokens.Dot.rawValue) + + break + case 16: + try enterOuterAlt(_localctx, 16) + setState(813) + try match(PCREParser.Tokens.Caret.rawValue) + + break + case 17: + try enterOuterAlt(_localctx, 17) + setState(814) + try match(PCREParser.Tokens.StartOfSubject.rawValue) + + break + case 18: + try enterOuterAlt(_localctx, 18) + setState(815) + try match(PCREParser.Tokens.WordBoundary.rawValue) + + break + case 19: + try enterOuterAlt(_localctx, 19) + setState(816) + try match(PCREParser.Tokens.NonWordBoundary.rawValue) + + break + case 20: + try enterOuterAlt(_localctx, 20) + setState(817) + try match(PCREParser.Tokens.EndOfSubjectOrLine.rawValue) + + break + case 21: + try enterOuterAlt(_localctx, 21) + setState(818) + try match(PCREParser.Tokens.EndOfSubjectOrLineEndOfSubject.rawValue) + + break + case 22: + try enterOuterAlt(_localctx, 22) + setState(819) + try match(PCREParser.Tokens.EndOfSubject.rawValue) + + break + case 23: + try enterOuterAlt(_localctx, 23) + setState(820) + try match(PCREParser.Tokens.PreviousMatchInSubject.rawValue) + + break + case 24: + try enterOuterAlt(_localctx, 24) + setState(821) + try match(PCREParser.Tokens.ResetStartMatch.rawValue) + + break + case 25: + try enterOuterAlt(_localctx, 25) + setState(822) + try match(PCREParser.Tokens.OneDataUnit.rawValue) + + break + case 26: + try enterOuterAlt(_localctx, 26) + setState(823) + try match(PCREParser.Tokens.ExtendedUnicodeChar.rawValue) + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Cc_atomContext: ParserRuleContext { + open + func cc_literal() -> [Cc_literalContext] { + return getRuleContexts(Cc_literalContext.self) + } + open + func cc_literal(_ i: Int) -> Cc_literalContext? { + return getRuleContext(Cc_literalContext.self, i) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func shared_atom() -> Shared_atomContext? { + return getRuleContext(Shared_atomContext.self, 0) + } + open + func backreference_or_octal() -> Backreference_or_octalContext? { + return getRuleContext(Backreference_or_octalContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_cc_atom + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterCc_atom(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitCc_atom(self) + } + } + } + @discardableResult + open func cc_atom() throws -> Cc_atomContext { + var _localctx: Cc_atomContext + _localctx = Cc_atomContext(_ctx, getState()) + try enterRule(_localctx, 44, PCREParser.RULE_cc_atom) + defer { + try! exitRule() + } + do { + setState(833) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,38, _ctx)) { + case 1: + try enterOuterAlt(_localctx, 1) + setState(826) + try cc_literal() + setState(827) + try match(PCREParser.Tokens.Hyphen.rawValue) + setState(828) + try cc_literal() + + break + case 2: + try enterOuterAlt(_localctx, 2) + setState(830) + try shared_atom() + + break + case 3: + try enterOuterAlt(_localctx, 3) + setState(831) + try cc_literal() + + break + case 4: + try enterOuterAlt(_localctx, 4) + setState(832) + try backreference_or_octal() + + break + default: break + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Shared_atomContext: ParserRuleContext { + open + func POSIXNamedSet() -> TerminalNode? { + return getToken(PCREParser.Tokens.POSIXNamedSet.rawValue, 0) + } + open + func POSIXNegatedNamedSet() -> TerminalNode? { + return getToken(PCREParser.Tokens.POSIXNegatedNamedSet.rawValue, 0) + } + open + func ControlChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.ControlChar.rawValue, 0) + } + open + func DecimalDigit() -> TerminalNode? { + return getToken(PCREParser.Tokens.DecimalDigit.rawValue, 0) + } + open + func NotDecimalDigit() -> TerminalNode? { + return getToken(PCREParser.Tokens.NotDecimalDigit.rawValue, 0) + } + open + func HorizontalWhiteSpace() -> TerminalNode? { + return getToken(PCREParser.Tokens.HorizontalWhiteSpace.rawValue, 0) + } + open + func NotHorizontalWhiteSpace() -> TerminalNode? { + return getToken(PCREParser.Tokens.NotHorizontalWhiteSpace.rawValue, 0) + } + open + func NotNewLine() -> TerminalNode? { + return getToken(PCREParser.Tokens.NotNewLine.rawValue, 0) + } + open + func CharWithProperty() -> TerminalNode? { + return getToken(PCREParser.Tokens.CharWithProperty.rawValue, 0) + } + open + func CharWithoutProperty() -> TerminalNode? { + return getToken(PCREParser.Tokens.CharWithoutProperty.rawValue, 0) + } + open + func NewLineSequence() -> TerminalNode? { + return getToken(PCREParser.Tokens.NewLineSequence.rawValue, 0) + } + open + func WhiteSpace() -> TerminalNode? { + return getToken(PCREParser.Tokens.WhiteSpace.rawValue, 0) + } + open + func NotWhiteSpace() -> TerminalNode? { + return getToken(PCREParser.Tokens.NotWhiteSpace.rawValue, 0) + } + open + func VerticalWhiteSpace() -> TerminalNode? { + return getToken(PCREParser.Tokens.VerticalWhiteSpace.rawValue, 0) + } + open + func NotVerticalWhiteSpace() -> TerminalNode? { + return getToken(PCREParser.Tokens.NotVerticalWhiteSpace.rawValue, 0) + } + open + func WordChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.WordChar.rawValue, 0) + } + open + func NotWordChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.NotWordChar.rawValue, 0) + } + open + func Backslash() -> TerminalNode? { + return getToken(PCREParser.Tokens.Backslash.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_shared_atom + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterShared_atom(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitShared_atom(self) + } + } + } + @discardableResult + open func shared_atom() throws -> Shared_atomContext { + var _localctx: Shared_atomContext + _localctx = Shared_atomContext(_ctx, getState()) + try enterRule(_localctx, 46, PCREParser.RULE_shared_atom) + defer { + try! exitRule() + } + do { + setState(854) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .POSIXNamedSet: + try enterOuterAlt(_localctx, 1) + setState(835) + try match(PCREParser.Tokens.POSIXNamedSet.rawValue) + + break + + case .POSIXNegatedNamedSet: + try enterOuterAlt(_localctx, 2) + setState(836) + try match(PCREParser.Tokens.POSIXNegatedNamedSet.rawValue) + + break + + case .ControlChar: + try enterOuterAlt(_localctx, 3) + setState(837) + try match(PCREParser.Tokens.ControlChar.rawValue) + + break + + case .DecimalDigit: + try enterOuterAlt(_localctx, 4) + setState(838) + try match(PCREParser.Tokens.DecimalDigit.rawValue) + + break + + case .NotDecimalDigit: + try enterOuterAlt(_localctx, 5) + setState(839) + try match(PCREParser.Tokens.NotDecimalDigit.rawValue) + + break + + case .HorizontalWhiteSpace: + try enterOuterAlt(_localctx, 6) + setState(840) + try match(PCREParser.Tokens.HorizontalWhiteSpace.rawValue) + + break + + case .NotHorizontalWhiteSpace: + try enterOuterAlt(_localctx, 7) + setState(841) + try match(PCREParser.Tokens.NotHorizontalWhiteSpace.rawValue) + + break + + case .NotNewLine: + try enterOuterAlt(_localctx, 8) + setState(842) + try match(PCREParser.Tokens.NotNewLine.rawValue) + + break + + case .CharWithProperty: + try enterOuterAlt(_localctx, 9) + setState(843) + try match(PCREParser.Tokens.CharWithProperty.rawValue) + + break + + case .CharWithoutProperty: + try enterOuterAlt(_localctx, 10) + setState(844) + try match(PCREParser.Tokens.CharWithoutProperty.rawValue) + + break + + case .NewLineSequence: + try enterOuterAlt(_localctx, 11) + setState(845) + try match(PCREParser.Tokens.NewLineSequence.rawValue) + + break + + case .WhiteSpace: + try enterOuterAlt(_localctx, 12) + setState(846) + try match(PCREParser.Tokens.WhiteSpace.rawValue) + + break + + case .NotWhiteSpace: + try enterOuterAlt(_localctx, 13) + setState(847) + try match(PCREParser.Tokens.NotWhiteSpace.rawValue) + + break + + case .VerticalWhiteSpace: + try enterOuterAlt(_localctx, 14) + setState(848) + try match(PCREParser.Tokens.VerticalWhiteSpace.rawValue) + + break + + case .NotVerticalWhiteSpace: + try enterOuterAlt(_localctx, 15) + setState(849) + try match(PCREParser.Tokens.NotVerticalWhiteSpace.rawValue) + + break + + case .WordChar: + try enterOuterAlt(_localctx, 16) + setState(850) + try match(PCREParser.Tokens.WordChar.rawValue) + + break + + case .NotWordChar: + try enterOuterAlt(_localctx, 17) + setState(851) + try match(PCREParser.Tokens.NotWordChar.rawValue) + + break + + case .Backslash: + try enterOuterAlt(_localctx, 18) + setState(852) + try match(PCREParser.Tokens.Backslash.rawValue) + setState(853) + try matchWildcard(); + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class LiteralContext: ParserRuleContext { + open + func shared_literal() -> Shared_literalContext? { + return getRuleContext(Shared_literalContext.self, 0) + } + open + func CharacterClassEnd() -> TerminalNode? { + return getToken(PCREParser.Tokens.CharacterClassEnd.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_literal + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterLiteral(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitLiteral(self) + } + } + } + @discardableResult + open func literal() throws -> LiteralContext { + var _localctx: LiteralContext + _localctx = LiteralContext(_ctx, getState()) + try enterRule(_localctx, 48, PCREParser.RULE_literal) + defer { + try! exitRule() + } + do { + setState(858) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .Quoted:fallthrough + case .BlockQuoted:fallthrough + case .BellChar:fallthrough + case .EscapeChar:fallthrough + case .FormFeed:fallthrough + case .NewLine:fallthrough + case .CarriageReturn:fallthrough + case .Tab:fallthrough + case .Backslash:fallthrough + case .HexChar:fallthrough + case .Hyphen:fallthrough + case .OpenBrace:fallthrough + case .CloseBrace:fallthrough + case .Comma:fallthrough + case .LessThan:fallthrough + case .GreaterThan:fallthrough + case .SingleQuote:fallthrough + case .Underscore:fallthrough + case .Colon:fallthrough + case .Hash:fallthrough + case .Equals:fallthrough + case .Exclamation:fallthrough + case .Ampersand:fallthrough + case .ALC:fallthrough + case .BLC:fallthrough + case .CLC:fallthrough + case .DLC:fallthrough + case .ELC:fallthrough + case .FLC:fallthrough + case .GLC:fallthrough + case .HLC:fallthrough + case .ILC:fallthrough + case .JLC:fallthrough + case .KLC:fallthrough + case .LLC:fallthrough + case .MLC:fallthrough + case .NLC:fallthrough + case .OLC:fallthrough + case .PLC:fallthrough + case .QLC:fallthrough + case .RLC:fallthrough + case .SLC:fallthrough + case .TLC:fallthrough + case .ULC:fallthrough + case .VLC:fallthrough + case .WLC:fallthrough + case .XLC:fallthrough + case .YLC:fallthrough + case .ZLC:fallthrough + case .AUC:fallthrough + case .BUC:fallthrough + case .CUC:fallthrough + case .DUC:fallthrough + case .EUC:fallthrough + case .FUC:fallthrough + case .GUC:fallthrough + case .HUC:fallthrough + case .IUC:fallthrough + case .JUC:fallthrough + case .KUC:fallthrough + case .LUC:fallthrough + case .MUC:fallthrough + case .NUC:fallthrough + case .OUC:fallthrough + case .PUC:fallthrough + case .QUC:fallthrough + case .RUC:fallthrough + case .SUC:fallthrough + case .TUC:fallthrough + case .UUC:fallthrough + case .VUC:fallthrough + case .WUC:fallthrough + case .XUC:fallthrough + case .YUC:fallthrough + case .ZUC:fallthrough + case .D1:fallthrough + case .D2:fallthrough + case .D3:fallthrough + case .D4:fallthrough + case .D5:fallthrough + case .D6:fallthrough + case .D7:fallthrough + case .D8:fallthrough + case .D9:fallthrough + case .D0:fallthrough + case .OtherChar: + try enterOuterAlt(_localctx, 1) + setState(856) + try shared_literal() + + break + + case .CharacterClassEnd: + try enterOuterAlt(_localctx, 2) + setState(857) + try match(PCREParser.Tokens.CharacterClassEnd.rawValue) + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Cc_literalContext: ParserRuleContext { + open + func shared_literal() -> Shared_literalContext? { + return getRuleContext(Shared_literalContext.self, 0) + } + open + func Dot() -> TerminalNode? { + return getToken(PCREParser.Tokens.Dot.rawValue, 0) + } + open + func CharacterClassStart() -> TerminalNode? { + return getToken(PCREParser.Tokens.CharacterClassStart.rawValue, 0) + } + open + func Caret() -> TerminalNode? { + return getToken(PCREParser.Tokens.Caret.rawValue, 0) + } + open + func QuestionMark() -> TerminalNode? { + return getToken(PCREParser.Tokens.QuestionMark.rawValue, 0) + } + open + func Plus() -> TerminalNode? { + return getToken(PCREParser.Tokens.Plus.rawValue, 0) + } + open + func Star() -> TerminalNode? { + return getToken(PCREParser.Tokens.Star.rawValue, 0) + } + open + func WordBoundary() -> TerminalNode? { + return getToken(PCREParser.Tokens.WordBoundary.rawValue, 0) + } + open + func EndOfSubjectOrLine() -> TerminalNode? { + return getToken(PCREParser.Tokens.EndOfSubjectOrLine.rawValue, 0) + } + open + func Pipe() -> TerminalNode? { + return getToken(PCREParser.Tokens.Pipe.rawValue, 0) + } + open + func OpenParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenParen.rawValue, 0) + } + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_cc_literal + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterCc_literal(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitCc_literal(self) + } + } + } + @discardableResult + open func cc_literal() throws -> Cc_literalContext { + var _localctx: Cc_literalContext + _localctx = Cc_literalContext(_ctx, getState()) + try enterRule(_localctx, 50, PCREParser.RULE_cc_literal) + defer { + try! exitRule() + } + do { + setState(872) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .Quoted:fallthrough + case .BlockQuoted:fallthrough + case .BellChar:fallthrough + case .EscapeChar:fallthrough + case .FormFeed:fallthrough + case .NewLine:fallthrough + case .CarriageReturn:fallthrough + case .Tab:fallthrough + case .Backslash:fallthrough + case .HexChar:fallthrough + case .Hyphen:fallthrough + case .OpenBrace:fallthrough + case .CloseBrace:fallthrough + case .Comma:fallthrough + case .LessThan:fallthrough + case .GreaterThan:fallthrough + case .SingleQuote:fallthrough + case .Underscore:fallthrough + case .Colon:fallthrough + case .Hash:fallthrough + case .Equals:fallthrough + case .Exclamation:fallthrough + case .Ampersand:fallthrough + case .ALC:fallthrough + case .BLC:fallthrough + case .CLC:fallthrough + case .DLC:fallthrough + case .ELC:fallthrough + case .FLC:fallthrough + case .GLC:fallthrough + case .HLC:fallthrough + case .ILC:fallthrough + case .JLC:fallthrough + case .KLC:fallthrough + case .LLC:fallthrough + case .MLC:fallthrough + case .NLC:fallthrough + case .OLC:fallthrough + case .PLC:fallthrough + case .QLC:fallthrough + case .RLC:fallthrough + case .SLC:fallthrough + case .TLC:fallthrough + case .ULC:fallthrough + case .VLC:fallthrough + case .WLC:fallthrough + case .XLC:fallthrough + case .YLC:fallthrough + case .ZLC:fallthrough + case .AUC:fallthrough + case .BUC:fallthrough + case .CUC:fallthrough + case .DUC:fallthrough + case .EUC:fallthrough + case .FUC:fallthrough + case .GUC:fallthrough + case .HUC:fallthrough + case .IUC:fallthrough + case .JUC:fallthrough + case .KUC:fallthrough + case .LUC:fallthrough + case .MUC:fallthrough + case .NUC:fallthrough + case .OUC:fallthrough + case .PUC:fallthrough + case .QUC:fallthrough + case .RUC:fallthrough + case .SUC:fallthrough + case .TUC:fallthrough + case .UUC:fallthrough + case .VUC:fallthrough + case .WUC:fallthrough + case .XUC:fallthrough + case .YUC:fallthrough + case .ZUC:fallthrough + case .D1:fallthrough + case .D2:fallthrough + case .D3:fallthrough + case .D4:fallthrough + case .D5:fallthrough + case .D6:fallthrough + case .D7:fallthrough + case .D8:fallthrough + case .D9:fallthrough + case .D0:fallthrough + case .OtherChar: + try enterOuterAlt(_localctx, 1) + setState(860) + try shared_literal() + + break + + case .Dot: + try enterOuterAlt(_localctx, 2) + setState(861) + try match(PCREParser.Tokens.Dot.rawValue) + + break + + case .CharacterClassStart: + try enterOuterAlt(_localctx, 3) + setState(862) + try match(PCREParser.Tokens.CharacterClassStart.rawValue) + + break + + case .Caret: + try enterOuterAlt(_localctx, 4) + setState(863) + try match(PCREParser.Tokens.Caret.rawValue) + + break + + case .QuestionMark: + try enterOuterAlt(_localctx, 5) + setState(864) + try match(PCREParser.Tokens.QuestionMark.rawValue) + + break + + case .Plus: + try enterOuterAlt(_localctx, 6) + setState(865) + try match(PCREParser.Tokens.Plus.rawValue) + + break + + case .Star: + try enterOuterAlt(_localctx, 7) + setState(866) + try match(PCREParser.Tokens.Star.rawValue) + + break + + case .WordBoundary: + try enterOuterAlt(_localctx, 8) + setState(867) + try match(PCREParser.Tokens.WordBoundary.rawValue) + + break + + case .EndOfSubjectOrLine: + try enterOuterAlt(_localctx, 9) + setState(868) + try match(PCREParser.Tokens.EndOfSubjectOrLine.rawValue) + + break + + case .Pipe: + try enterOuterAlt(_localctx, 10) + setState(869) + try match(PCREParser.Tokens.Pipe.rawValue) + + break + + case .OpenParen: + try enterOuterAlt(_localctx, 11) + setState(870) + try match(PCREParser.Tokens.OpenParen.rawValue) + + break + + case .CloseParen: + try enterOuterAlt(_localctx, 12) + setState(871) + try match(PCREParser.Tokens.CloseParen.rawValue) + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Shared_literalContext: ParserRuleContext { + open + func octal_char() -> Octal_charContext? { + return getRuleContext(Octal_charContext.self, 0) + } + open + func letter() -> LetterContext? { + return getRuleContext(LetterContext.self, 0) + } + open + func digit() -> DigitContext? { + return getRuleContext(DigitContext.self, 0) + } + open + func BellChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.BellChar.rawValue, 0) + } + open + func EscapeChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.EscapeChar.rawValue, 0) + } + open + func FormFeed() -> TerminalNode? { + return getToken(PCREParser.Tokens.FormFeed.rawValue, 0) + } + open + func NewLine() -> TerminalNode? { + return getToken(PCREParser.Tokens.NewLine.rawValue, 0) + } + open + func CarriageReturn() -> TerminalNode? { + return getToken(PCREParser.Tokens.CarriageReturn.rawValue, 0) + } + open + func Tab() -> TerminalNode? { + return getToken(PCREParser.Tokens.Tab.rawValue, 0) + } + open + func HexChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.HexChar.rawValue, 0) + } + open + func Quoted() -> TerminalNode? { + return getToken(PCREParser.Tokens.Quoted.rawValue, 0) + } + open + func BlockQuoted() -> TerminalNode? { + return getToken(PCREParser.Tokens.BlockQuoted.rawValue, 0) + } + open + func OpenBrace() -> TerminalNode? { + return getToken(PCREParser.Tokens.OpenBrace.rawValue, 0) + } + open + func CloseBrace() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseBrace.rawValue, 0) + } + open + func Comma() -> TerminalNode? { + return getToken(PCREParser.Tokens.Comma.rawValue, 0) + } + open + func Hyphen() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hyphen.rawValue, 0) + } + open + func LessThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.LessThan.rawValue, 0) + } + open + func GreaterThan() -> TerminalNode? { + return getToken(PCREParser.Tokens.GreaterThan.rawValue, 0) + } + open + func SingleQuote() -> TerminalNode? { + return getToken(PCREParser.Tokens.SingleQuote.rawValue, 0) + } + open + func Underscore() -> TerminalNode? { + return getToken(PCREParser.Tokens.Underscore.rawValue, 0) + } + open + func Colon() -> TerminalNode? { + return getToken(PCREParser.Tokens.Colon.rawValue, 0) + } + open + func Hash() -> TerminalNode? { + return getToken(PCREParser.Tokens.Hash.rawValue, 0) + } + open + func Equals() -> TerminalNode? { + return getToken(PCREParser.Tokens.Equals.rawValue, 0) + } + open + func Exclamation() -> TerminalNode? { + return getToken(PCREParser.Tokens.Exclamation.rawValue, 0) + } + open + func Ampersand() -> TerminalNode? { + return getToken(PCREParser.Tokens.Ampersand.rawValue, 0) + } + open + func OtherChar() -> TerminalNode? { + return getToken(PCREParser.Tokens.OtherChar.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_shared_literal + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterShared_literal(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitShared_literal(self) + } + } + } + @discardableResult + open func shared_literal() throws -> Shared_literalContext { + var _localctx: Shared_literalContext + _localctx = Shared_literalContext(_ctx, getState()) + try enterRule(_localctx, 52, PCREParser.RULE_shared_literal) + defer { + try! exitRule() + } + do { + setState(900) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .Backslash: + try enterOuterAlt(_localctx, 1) + setState(874) + try octal_char() + + break + case .ALC:fallthrough + case .BLC:fallthrough + case .CLC:fallthrough + case .DLC:fallthrough + case .ELC:fallthrough + case .FLC:fallthrough + case .GLC:fallthrough + case .HLC:fallthrough + case .ILC:fallthrough + case .JLC:fallthrough + case .KLC:fallthrough + case .LLC:fallthrough + case .MLC:fallthrough + case .NLC:fallthrough + case .OLC:fallthrough + case .PLC:fallthrough + case .QLC:fallthrough + case .RLC:fallthrough + case .SLC:fallthrough + case .TLC:fallthrough + case .ULC:fallthrough + case .VLC:fallthrough + case .WLC:fallthrough + case .XLC:fallthrough + case .YLC:fallthrough + case .ZLC:fallthrough + case .AUC:fallthrough + case .BUC:fallthrough + case .CUC:fallthrough + case .DUC:fallthrough + case .EUC:fallthrough + case .FUC:fallthrough + case .GUC:fallthrough + case .HUC:fallthrough + case .IUC:fallthrough + case .JUC:fallthrough + case .KUC:fallthrough + case .LUC:fallthrough + case .MUC:fallthrough + case .NUC:fallthrough + case .OUC:fallthrough + case .PUC:fallthrough + case .QUC:fallthrough + case .RUC:fallthrough + case .SUC:fallthrough + case .TUC:fallthrough + case .UUC:fallthrough + case .VUC:fallthrough + case .WUC:fallthrough + case .XUC:fallthrough + case .YUC:fallthrough + case .ZUC: + try enterOuterAlt(_localctx, 2) + setState(875) + try letter() + + break + case .D1:fallthrough + case .D2:fallthrough + case .D3:fallthrough + case .D4:fallthrough + case .D5:fallthrough + case .D6:fallthrough + case .D7:fallthrough + case .D8:fallthrough + case .D9:fallthrough + case .D0: + try enterOuterAlt(_localctx, 3) + setState(876) + try digit() + + break + + case .BellChar: + try enterOuterAlt(_localctx, 4) + setState(877) + try match(PCREParser.Tokens.BellChar.rawValue) + + break + + case .EscapeChar: + try enterOuterAlt(_localctx, 5) + setState(878) + try match(PCREParser.Tokens.EscapeChar.rawValue) + + break + + case .FormFeed: + try enterOuterAlt(_localctx, 6) + setState(879) + try match(PCREParser.Tokens.FormFeed.rawValue) + + break + + case .NewLine: + try enterOuterAlt(_localctx, 7) + setState(880) + try match(PCREParser.Tokens.NewLine.rawValue) + + break + + case .CarriageReturn: + try enterOuterAlt(_localctx, 8) + setState(881) + try match(PCREParser.Tokens.CarriageReturn.rawValue) + + break + + case .Tab: + try enterOuterAlt(_localctx, 9) + setState(882) + try match(PCREParser.Tokens.Tab.rawValue) + + break + + case .HexChar: + try enterOuterAlt(_localctx, 10) + setState(883) + try match(PCREParser.Tokens.HexChar.rawValue) + + break + + case .Quoted: + try enterOuterAlt(_localctx, 11) + setState(884) + try match(PCREParser.Tokens.Quoted.rawValue) + + break + + case .BlockQuoted: + try enterOuterAlt(_localctx, 12) + setState(885) + try match(PCREParser.Tokens.BlockQuoted.rawValue) + + break + + case .OpenBrace: + try enterOuterAlt(_localctx, 13) + setState(886) + try match(PCREParser.Tokens.OpenBrace.rawValue) + + break + + case .CloseBrace: + try enterOuterAlt(_localctx, 14) + setState(887) + try match(PCREParser.Tokens.CloseBrace.rawValue) + + break + + case .Comma: + try enterOuterAlt(_localctx, 15) + setState(888) + try match(PCREParser.Tokens.Comma.rawValue) + + break + + case .Hyphen: + try enterOuterAlt(_localctx, 16) + setState(889) + try match(PCREParser.Tokens.Hyphen.rawValue) + + break + + case .LessThan: + try enterOuterAlt(_localctx, 17) + setState(890) + try match(PCREParser.Tokens.LessThan.rawValue) + + break + + case .GreaterThan: + try enterOuterAlt(_localctx, 18) + setState(891) + try match(PCREParser.Tokens.GreaterThan.rawValue) + + break + + case .SingleQuote: + try enterOuterAlt(_localctx, 19) + setState(892) + try match(PCREParser.Tokens.SingleQuote.rawValue) + + break + + case .Underscore: + try enterOuterAlt(_localctx, 20) + setState(893) + try match(PCREParser.Tokens.Underscore.rawValue) + + break + + case .Colon: + try enterOuterAlt(_localctx, 21) + setState(894) + try match(PCREParser.Tokens.Colon.rawValue) + + break + + case .Hash: + try enterOuterAlt(_localctx, 22) + setState(895) + try match(PCREParser.Tokens.Hash.rawValue) + + break + + case .Equals: + try enterOuterAlt(_localctx, 23) + setState(896) + try match(PCREParser.Tokens.Equals.rawValue) + + break + + case .Exclamation: + try enterOuterAlt(_localctx, 24) + setState(897) + try match(PCREParser.Tokens.Exclamation.rawValue) + + break + + case .Ampersand: + try enterOuterAlt(_localctx, 25) + setState(898) + try match(PCREParser.Tokens.Ampersand.rawValue) + + break + + case .OtherChar: + try enterOuterAlt(_localctx, 26) + setState(899) + try match(PCREParser.Tokens.OtherChar.rawValue) + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class NumberContext: ParserRuleContext { + open + func digits() -> DigitsContext? { + return getRuleContext(DigitsContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_number + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterNumber(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitNumber(self) + } + } + } + @discardableResult + open func number() throws -> NumberContext { + var _localctx: NumberContext + _localctx = NumberContext(_ctx, getState()) + try enterRule(_localctx, 54, PCREParser.RULE_number) + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(902) + try digits() + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Octal_charContext: ParserRuleContext { + open + func Backslash() -> TerminalNode? { + return getToken(PCREParser.Tokens.Backslash.rawValue, 0) + } + open + func octal_digit() -> [Octal_digitContext] { + return getRuleContexts(Octal_digitContext.self) + } + open + func octal_digit(_ i: Int) -> Octal_digitContext? { + return getRuleContext(Octal_digitContext.self, i) + } + open + func D0() -> TerminalNode? { + return getToken(PCREParser.Tokens.D0.rawValue, 0) + } + open + func D1() -> TerminalNode? { + return getToken(PCREParser.Tokens.D1.rawValue, 0) + } + open + func D2() -> TerminalNode? { + return getToken(PCREParser.Tokens.D2.rawValue, 0) + } + open + func D3() -> TerminalNode? { + return getToken(PCREParser.Tokens.D3.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_octal_char + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterOctal_char(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitOctal_char(self) + } + } + } + @discardableResult + open func octal_char() throws -> Octal_charContext { + var _localctx: Octal_charContext + _localctx = Octal_charContext(_ctx, getState()) + try enterRule(_localctx, 56, PCREParser.RULE_octal_char) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(913) + try _errHandler.sync(self) + switch(try getInterpreter().adaptivePredict(_input,43, _ctx)) { + case 1: + setState(904) + try match(PCREParser.Tokens.Backslash.rawValue) + setState(905) + _la = try _input.LA(1) + if (!((Int64((_la - 115)) & ~0x3f) == 0 && ((Int64(1) << (_la - 115)) & 519) != 0)) { + try _errHandler.recoverInline(self) + } + else { + _errHandler.reportMatch(self) + try consume() + } + setState(906) + try octal_digit() + setState(907) + try octal_digit() + + break + case 2: + setState(909) + try match(PCREParser.Tokens.Backslash.rawValue) + setState(910) + try octal_digit() + setState(911) + try octal_digit() + + break + default: break + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Octal_digitContext: ParserRuleContext { + open + func D0() -> TerminalNode? { + return getToken(PCREParser.Tokens.D0.rawValue, 0) + } + open + func D1() -> TerminalNode? { + return getToken(PCREParser.Tokens.D1.rawValue, 0) + } + open + func D2() -> TerminalNode? { + return getToken(PCREParser.Tokens.D2.rawValue, 0) + } + open + func D3() -> TerminalNode? { + return getToken(PCREParser.Tokens.D3.rawValue, 0) + } + open + func D4() -> TerminalNode? { + return getToken(PCREParser.Tokens.D4.rawValue, 0) + } + open + func D5() -> TerminalNode? { + return getToken(PCREParser.Tokens.D5.rawValue, 0) + } + open + func D6() -> TerminalNode? { + return getToken(PCREParser.Tokens.D6.rawValue, 0) + } + open + func D7() -> TerminalNode? { + return getToken(PCREParser.Tokens.D7.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_octal_digit + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterOctal_digit(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitOctal_digit(self) + } + } + } + @discardableResult + open func octal_digit() throws -> Octal_digitContext { + var _localctx: Octal_digitContext + _localctx = Octal_digitContext(_ctx, getState()) + try enterRule(_localctx, 58, PCREParser.RULE_octal_digit) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(915) + _la = try _input.LA(1) + if (!((Int64((_la - 115)) & ~0x3f) == 0 && ((Int64(1) << (_la - 115)) & 639) != 0)) { + try _errHandler.recoverInline(self) + } + else { + _errHandler.reportMatch(self) + try consume() + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class DigitsContext: ParserRuleContext { + open + func digit() -> [DigitContext] { + return getRuleContexts(DigitContext.self) + } + open + func digit(_ i: Int) -> DigitContext? { + return getRuleContext(DigitContext.self, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_digits + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterDigits(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitDigits(self) + } + } + } + @discardableResult + open func digits() throws -> DigitsContext { + var _localctx: DigitsContext + _localctx = DigitsContext(_ctx, getState()) + try enterRule(_localctx, 60, PCREParser.RULE_digits) + defer { + try! exitRule() + } + do { + var _alt:Int + try enterOuterAlt(_localctx, 1) + setState(918); + try _errHandler.sync(self) + _alt = 1; + repeat { + switch (_alt) { + case 1: + setState(917) + try digit() + + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + setState(920); + try _errHandler.sync(self) + _alt = try getInterpreter().adaptivePredict(_input,44,_ctx) + } while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class DigitContext: ParserRuleContext { + open + func D0() -> TerminalNode? { + return getToken(PCREParser.Tokens.D0.rawValue, 0) + } + open + func D1() -> TerminalNode? { + return getToken(PCREParser.Tokens.D1.rawValue, 0) + } + open + func D2() -> TerminalNode? { + return getToken(PCREParser.Tokens.D2.rawValue, 0) + } + open + func D3() -> TerminalNode? { + return getToken(PCREParser.Tokens.D3.rawValue, 0) + } + open + func D4() -> TerminalNode? { + return getToken(PCREParser.Tokens.D4.rawValue, 0) + } + open + func D5() -> TerminalNode? { + return getToken(PCREParser.Tokens.D5.rawValue, 0) + } + open + func D6() -> TerminalNode? { + return getToken(PCREParser.Tokens.D6.rawValue, 0) + } + open + func D7() -> TerminalNode? { + return getToken(PCREParser.Tokens.D7.rawValue, 0) + } + open + func D8() -> TerminalNode? { + return getToken(PCREParser.Tokens.D8.rawValue, 0) + } + open + func D9() -> TerminalNode? { + return getToken(PCREParser.Tokens.D9.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_digit + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterDigit(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitDigit(self) + } + } + } + @discardableResult + open func digit() throws -> DigitContext { + var _localctx: DigitContext + _localctx = DigitContext(_ctx, getState()) + try enterRule(_localctx, 62, PCREParser.RULE_digit) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(922) + _la = try _input.LA(1) + if (!((Int64((_la - 115)) & ~0x3f) == 0 && ((Int64(1) << (_la - 115)) & 1023) != 0)) { + try _errHandler.recoverInline(self) + } + else { + _errHandler.reportMatch(self) + try consume() + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class NameContext: ParserRuleContext { + open + func alpha_nums() -> Alpha_numsContext? { + return getRuleContext(Alpha_numsContext.self, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_name + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterName(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitName(self) + } + } + } + @discardableResult + open func name() throws -> NameContext { + var _localctx: NameContext + _localctx = NameContext(_ctx, getState()) + try enterRule(_localctx, 64, PCREParser.RULE_name) + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(924) + try alpha_nums() + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Alpha_numsContext: ParserRuleContext { + open + func letter() -> [LetterContext] { + return getRuleContexts(LetterContext.self) + } + open + func letter(_ i: Int) -> LetterContext? { + return getRuleContext(LetterContext.self, i) + } + open + func Underscore() -> [TerminalNode] { + return getTokens(PCREParser.Tokens.Underscore.rawValue) + } + open + func Underscore(_ i:Int) -> TerminalNode? { + return getToken(PCREParser.Tokens.Underscore.rawValue, i) + } + open + func digit() -> [DigitContext] { + return getRuleContexts(DigitContext.self) + } + open + func digit(_ i: Int) -> DigitContext? { + return getRuleContext(DigitContext.self, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_alpha_nums + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterAlpha_nums(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitAlpha_nums(self) + } + } + } + @discardableResult + open func alpha_nums() throws -> Alpha_numsContext { + var _localctx: Alpha_numsContext + _localctx = Alpha_numsContext(_ctx, getState()) + try enterRule(_localctx, 66, PCREParser.RULE_alpha_nums) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(928) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .ALC:fallthrough + case .BLC:fallthrough + case .CLC:fallthrough + case .DLC:fallthrough + case .ELC:fallthrough + case .FLC:fallthrough + case .GLC:fallthrough + case .HLC:fallthrough + case .ILC:fallthrough + case .JLC:fallthrough + case .KLC:fallthrough + case .LLC:fallthrough + case .MLC:fallthrough + case .NLC:fallthrough + case .OLC:fallthrough + case .PLC:fallthrough + case .QLC:fallthrough + case .RLC:fallthrough + case .SLC:fallthrough + case .TLC:fallthrough + case .ULC:fallthrough + case .VLC:fallthrough + case .WLC:fallthrough + case .XLC:fallthrough + case .YLC:fallthrough + case .ZLC:fallthrough + case .AUC:fallthrough + case .BUC:fallthrough + case .CUC:fallthrough + case .DUC:fallthrough + case .EUC:fallthrough + case .FUC:fallthrough + case .GUC:fallthrough + case .HUC:fallthrough + case .IUC:fallthrough + case .JUC:fallthrough + case .KUC:fallthrough + case .LUC:fallthrough + case .MUC:fallthrough + case .NUC:fallthrough + case .OUC:fallthrough + case .PUC:fallthrough + case .QUC:fallthrough + case .RUC:fallthrough + case .SUC:fallthrough + case .TUC:fallthrough + case .UUC:fallthrough + case .VUC:fallthrough + case .WUC:fallthrough + case .XUC:fallthrough + case .YUC:fallthrough + case .ZUC: + setState(926) + try letter() + + break + + case .Underscore: + setState(927) + try match(PCREParser.Tokens.Underscore.rawValue) + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + setState(935) + try _errHandler.sync(self) + _la = try _input.LA(1) + while (_la == PCREParser.Tokens.Underscore.rawValue || _la == PCREParser.Tokens.ALC.rawValue || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 2305843009213693951) != 0) { + setState(933) + try _errHandler.sync(self) + switch (PCREParser.Tokens(rawValue: try _input.LA(1))!) { + case .ALC:fallthrough + case .BLC:fallthrough + case .CLC:fallthrough + case .DLC:fallthrough + case .ELC:fallthrough + case .FLC:fallthrough + case .GLC:fallthrough + case .HLC:fallthrough + case .ILC:fallthrough + case .JLC:fallthrough + case .KLC:fallthrough + case .LLC:fallthrough + case .MLC:fallthrough + case .NLC:fallthrough + case .OLC:fallthrough + case .PLC:fallthrough + case .QLC:fallthrough + case .RLC:fallthrough + case .SLC:fallthrough + case .TLC:fallthrough + case .ULC:fallthrough + case .VLC:fallthrough + case .WLC:fallthrough + case .XLC:fallthrough + case .YLC:fallthrough + case .ZLC:fallthrough + case .AUC:fallthrough + case .BUC:fallthrough + case .CUC:fallthrough + case .DUC:fallthrough + case .EUC:fallthrough + case .FUC:fallthrough + case .GUC:fallthrough + case .HUC:fallthrough + case .IUC:fallthrough + case .JUC:fallthrough + case .KUC:fallthrough + case .LUC:fallthrough + case .MUC:fallthrough + case .NUC:fallthrough + case .OUC:fallthrough + case .PUC:fallthrough + case .QUC:fallthrough + case .RUC:fallthrough + case .SUC:fallthrough + case .TUC:fallthrough + case .UUC:fallthrough + case .VUC:fallthrough + case .WUC:fallthrough + case .XUC:fallthrough + case .YUC:fallthrough + case .ZUC: + setState(930) + try letter() + + break + + case .Underscore: + setState(931) + try match(PCREParser.Tokens.Underscore.rawValue) + + break + case .D1:fallthrough + case .D2:fallthrough + case .D3:fallthrough + case .D4:fallthrough + case .D5:fallthrough + case .D6:fallthrough + case .D7:fallthrough + case .D8:fallthrough + case .D9:fallthrough + case .D0: + setState(932) + try digit() + + break + default: + throw ANTLRException.recognition(e: NoViableAltException(self)) + } + + setState(937) + try _errHandler.sync(self) + _la = try _input.LA(1) + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Non_close_parensContext: ParserRuleContext { + open + func non_close_paren() -> [Non_close_parenContext] { + return getRuleContexts(Non_close_parenContext.self) + } + open + func non_close_paren(_ i: Int) -> Non_close_parenContext? { + return getRuleContext(Non_close_parenContext.self, i) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_non_close_parens + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterNon_close_parens(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitNon_close_parens(self) + } + } + } + @discardableResult + open func non_close_parens() throws -> Non_close_parensContext { + var _localctx: Non_close_parensContext + _localctx = Non_close_parensContext(_ctx, getState()) + try enterRule(_localctx, 68, PCREParser.RULE_non_close_parens) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(939) + try _errHandler.sync(self) + _la = try _input.LA(1) + repeat { + setState(938) + try non_close_paren() + + + setState(941); + try _errHandler.sync(self) + _la = try _input.LA(1) + } while ((Int64(_la) & ~0x3f) == 0 && ((Int64(1) << _la) & -9007199254740994) != 0 || (Int64((_la - 64)) & ~0x3f) == 0 && ((Int64(1) << (_la - 64)) & 4611686018427387903) != 0) + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class Non_close_parenContext: ParserRuleContext { + open + func CloseParen() -> TerminalNode? { + return getToken(PCREParser.Tokens.CloseParen.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_non_close_paren + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterNon_close_paren(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitNon_close_paren(self) + } + } + } + @discardableResult + open func non_close_paren() throws -> Non_close_parenContext { + var _localctx: Non_close_parenContext + _localctx = Non_close_parenContext(_ctx, getState()) + try enterRule(_localctx, 70, PCREParser.RULE_non_close_paren) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(943) + _la = try _input.LA(1) + if (_la <= 0 || (_la == PCREParser.Tokens.CloseParen.rawValue)) { + try _errHandler.recoverInline(self) + } + else { + _errHandler.reportMatch(self) + try consume() + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + public class LetterContext: ParserRuleContext { + open + func ALC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ALC.rawValue, 0) + } + open + func BLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.BLC.rawValue, 0) + } + open + func CLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.CLC.rawValue, 0) + } + open + func DLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.DLC.rawValue, 0) + } + open + func ELC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ELC.rawValue, 0) + } + open + func FLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.FLC.rawValue, 0) + } + open + func GLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.GLC.rawValue, 0) + } + open + func HLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.HLC.rawValue, 0) + } + open + func ILC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ILC.rawValue, 0) + } + open + func JLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.JLC.rawValue, 0) + } + open + func KLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.KLC.rawValue, 0) + } + open + func LLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.LLC.rawValue, 0) + } + open + func MLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.MLC.rawValue, 0) + } + open + func NLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.NLC.rawValue, 0) + } + open + func OLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.OLC.rawValue, 0) + } + open + func PLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PLC.rawValue, 0) + } + open + func QLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.QLC.rawValue, 0) + } + open + func RLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RLC.rawValue, 0) + } + open + func SLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.SLC.rawValue, 0) + } + open + func TLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.TLC.rawValue, 0) + } + open + func ULC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ULC.rawValue, 0) + } + open + func VLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.VLC.rawValue, 0) + } + open + func WLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.WLC.rawValue, 0) + } + open + func XLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.XLC.rawValue, 0) + } + open + func YLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.YLC.rawValue, 0) + } + open + func ZLC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ZLC.rawValue, 0) + } + open + func AUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.AUC.rawValue, 0) + } + open + func BUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.BUC.rawValue, 0) + } + open + func CUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.CUC.rawValue, 0) + } + open + func DUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.DUC.rawValue, 0) + } + open + func EUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.EUC.rawValue, 0) + } + open + func FUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.FUC.rawValue, 0) + } + open + func GUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.GUC.rawValue, 0) + } + open + func HUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.HUC.rawValue, 0) + } + open + func IUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.IUC.rawValue, 0) + } + open + func JUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.JUC.rawValue, 0) + } + open + func KUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.KUC.rawValue, 0) + } + open + func LUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.LUC.rawValue, 0) + } + open + func MUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.MUC.rawValue, 0) + } + open + func NUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.NUC.rawValue, 0) + } + open + func OUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.OUC.rawValue, 0) + } + open + func PUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.PUC.rawValue, 0) + } + open + func QUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.QUC.rawValue, 0) + } + open + func RUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.RUC.rawValue, 0) + } + open + func SUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.SUC.rawValue, 0) + } + open + func TUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.TUC.rawValue, 0) + } + open + func UUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.UUC.rawValue, 0) + } + open + func VUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.VUC.rawValue, 0) + } + open + func WUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.WUC.rawValue, 0) + } + open + func XUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.XUC.rawValue, 0) + } + open + func YUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.YUC.rawValue, 0) + } + open + func ZUC() -> TerminalNode? { + return getToken(PCREParser.Tokens.ZUC.rawValue, 0) + } + override open + func getRuleIndex() -> Int { + return PCREParser.RULE_letter + } + override open + func enterRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.enterLetter(self) + } + } + override open + func exitRule(_ listener: ParseTreeListener) { + if let listener = listener as? PCREListener { + listener.exitLetter(self) + } + } + } + @discardableResult + open func letter() throws -> LetterContext { + var _localctx: LetterContext + _localctx = LetterContext(_ctx, getState()) + try enterRule(_localctx, 72, PCREParser.RULE_letter) + var _la: Int = 0 + defer { + try! exitRule() + } + do { + try enterOuterAlt(_localctx, 1) + setState(945) + _la = try _input.LA(1) + if (!((Int64((_la - 63)) & ~0x3f) == 0 && ((Int64(1) << (_la - 63)) & 4503599627370495) != 0)) { + try _errHandler.recoverInline(self) + } + else { + _errHandler.reportMatch(self) + try consume() + } + + } + catch ANTLRException.recognition(let re) { + _localctx.exception = re + _errHandler.reportError(self, re) + try _errHandler.recover(self, re) + } + + return _localctx + } + + static let _serializedATN:[Int] = [ + 4,1,125,948,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, + 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21, + 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28, + 2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35, + 2,36,7,36,1,0,1,0,1,0,1,1,1,1,1,1,5,1,81,8,1,10,1,12,1,84,9,1,1,2,5,2, + 87,8,2,10,2,12,2,90,9,2,1,3,1,3,3,3,94,8,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3, + 4,120,8,4,1,5,1,5,1,5,3,5,125,8,5,1,6,1,6,1,6,1,6,1,6,4,6,132,8,6,11,6, + 12,6,133,1,6,1,6,1,6,1,6,1,6,1,6,5,6,142,8,6,10,6,12,6,145,9,6,1,6,1,6, + 1,6,1,6,4,6,151,8,6,11,6,12,6,152,1,6,1,6,1,6,1,6,1,6,1,6,4,6,161,8,6, + 11,6,12,6,162,1,6,1,6,1,6,1,6,1,6,5,6,170,8,6,10,6,12,6,173,9,6,1,6,1, + 6,1,6,4,6,178,8,6,11,6,12,6,179,1,6,1,6,3,6,184,8,6,1,7,1,7,1,7,1,7,1, + 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, + 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1, + 7,1,7,3,7,227,8,7,1,8,1,8,1,8,3,8,232,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1, + 9,1,9,1,9,1,9,1,9,3,9,263,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,3,10,290,8,10,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,352,8,12,1,13,4,13, + 355,8,13,11,13,12,13,356,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,1,15,3,15,387,8,15,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,3,16,467,8,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,477, + 8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,490,8, + 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,503,8,17, + 1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,517,8, + 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,531, + 8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,544,8, + 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,556,8,17,1,17, + 1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,570,8,17,1, + 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1, + 17,3,17,587,8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17, + 1,17,1,17,1,17,1,17,3,17,604,8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1, + 17,1,17,1,17,3,17,616,8,17,1,17,1,17,3,17,620,8,17,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,637,8,18,1, + 18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,646,8,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18, + 722,8,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,785,8,19,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,20,1,20,1,20,3,20,797,8,20,1,21,1,21,1,21,1,21,1,21,1,21,1, + 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, + 21,1,21,1,21,1,21,1,21,1,21,3,21,825,8,21,1,22,1,22,1,22,1,22,1,22,1,22, + 1,22,3,22,834,8,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1, + 23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,855,8,23,1,24,1,24,3,24, + 859,8,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3, + 25,873,8,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 3,26,901,8,26,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3, + 28,914,8,28,1,29,1,29,1,30,4,30,919,8,30,11,30,12,30,920,1,31,1,31,1,32, + 1,32,1,33,1,33,3,33,929,8,33,1,33,1,33,1,33,5,33,934,8,33,10,33,12,33, + 937,9,33,1,34,4,34,940,8,34,11,34,12,34,941,1,35,1,35,1,36,1,36,1,36,0, + 0,37,0,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,0,6,6,0,71,71,75,75,81,81,86,86, + 98,98,109,109,2,0,115,117,124,124,2,0,115,121,124,124,1,0,115,124,1,0, + 53,53,1,0,63,114,1097,0,74,1,0,0,0,2,77,1,0,0,0,4,88,1,0,0,0,6,91,1,0, + 0,0,8,119,1,0,0,0,10,124,1,0,0,0,12,183,1,0,0,0,14,226,1,0,0,0,16,231, + 1,0,0,0,18,262,1,0,0,0,20,289,1,0,0,0,22,291,1,0,0,0,24,351,1,0,0,0,26, + 354,1,0,0,0,28,358,1,0,0,0,30,386,1,0,0,0,32,466,1,0,0,0,34,619,1,0,0, + 0,36,721,1,0,0,0,38,784,1,0,0,0,40,796,1,0,0,0,42,824,1,0,0,0,44,833,1, + 0,0,0,46,854,1,0,0,0,48,858,1,0,0,0,50,872,1,0,0,0,52,900,1,0,0,0,54,902, + 1,0,0,0,56,913,1,0,0,0,58,915,1,0,0,0,60,918,1,0,0,0,62,922,1,0,0,0,64, + 924,1,0,0,0,66,928,1,0,0,0,68,939,1,0,0,0,70,943,1,0,0,0,72,945,1,0,0, + 0,74,75,3,2,1,0,75,76,5,0,0,1,76,1,1,0,0,0,77,82,3,4,2,0,78,79,5,51,0, + 0,79,81,3,4,2,0,80,78,1,0,0,0,81,84,1,0,0,0,82,80,1,0,0,0,82,83,1,0,0, + 0,83,3,1,0,0,0,84,82,1,0,0,0,85,87,3,6,3,0,86,85,1,0,0,0,87,90,1,0,0,0, + 88,86,1,0,0,0,88,89,1,0,0,0,89,5,1,0,0,0,90,88,1,0,0,0,91,93,3,42,21,0, + 92,94,3,8,4,0,93,92,1,0,0,0,93,94,1,0,0,0,94,7,1,0,0,0,95,96,5,35,0,0, + 96,120,3,10,5,0,97,98,5,36,0,0,98,120,3,10,5,0,99,100,5,37,0,0,100,120, + 3,10,5,0,101,102,5,38,0,0,102,103,3,54,27,0,103,104,5,39,0,0,104,105,3, + 10,5,0,105,120,1,0,0,0,106,107,5,38,0,0,107,108,3,54,27,0,108,109,5,40, + 0,0,109,110,5,39,0,0,110,111,3,10,5,0,111,120,1,0,0,0,112,113,5,38,0,0, + 113,114,3,54,27,0,114,115,5,40,0,0,115,116,3,54,27,0,116,117,5,39,0,0, + 117,118,3,10,5,0,118,120,1,0,0,0,119,95,1,0,0,0,119,97,1,0,0,0,119,99, + 1,0,0,0,119,101,1,0,0,0,119,106,1,0,0,0,119,112,1,0,0,0,120,9,1,0,0,0, + 121,125,5,36,0,0,122,125,5,35,0,0,123,125,1,0,0,0,124,121,1,0,0,0,124, + 122,1,0,0,0,124,123,1,0,0,0,125,11,1,0,0,0,126,127,5,29,0,0,127,128,5, + 31,0,0,128,129,5,30,0,0,129,131,5,32,0,0,130,132,3,44,22,0,131,130,1,0, + 0,0,132,133,1,0,0,0,133,131,1,0,0,0,133,134,1,0,0,0,134,135,1,0,0,0,135, + 136,5,30,0,0,136,184,1,0,0,0,137,138,5,29,0,0,138,139,5,31,0,0,139,143, + 5,30,0,0,140,142,3,44,22,0,141,140,1,0,0,0,142,145,1,0,0,0,143,141,1,0, + 0,0,143,144,1,0,0,0,144,146,1,0,0,0,145,143,1,0,0,0,146,184,5,30,0,0,147, + 148,5,29,0,0,148,150,5,31,0,0,149,151,3,44,22,0,150,149,1,0,0,0,151,152, + 1,0,0,0,152,150,1,0,0,0,152,153,1,0,0,0,153,154,1,0,0,0,154,155,5,30,0, + 0,155,184,1,0,0,0,156,157,5,29,0,0,157,158,5,30,0,0,158,160,5,32,0,0,159, + 161,3,44,22,0,160,159,1,0,0,0,161,162,1,0,0,0,162,160,1,0,0,0,162,163, + 1,0,0,0,163,164,1,0,0,0,164,165,5,30,0,0,165,184,1,0,0,0,166,167,5,29, + 0,0,167,171,5,30,0,0,168,170,3,44,22,0,169,168,1,0,0,0,170,173,1,0,0,0, + 171,169,1,0,0,0,171,172,1,0,0,0,172,174,1,0,0,0,173,171,1,0,0,0,174,184, + 5,30,0,0,175,177,5,29,0,0,176,178,3,44,22,0,177,176,1,0,0,0,178,179,1, + 0,0,0,179,177,1,0,0,0,179,180,1,0,0,0,180,181,1,0,0,0,181,182,5,30,0,0, + 182,184,1,0,0,0,183,126,1,0,0,0,183,137,1,0,0,0,183,147,1,0,0,0,183,156, + 1,0,0,0,183,166,1,0,0,0,183,175,1,0,0,0,184,13,1,0,0,0,185,227,3,16,8, + 0,186,187,5,49,0,0,187,227,3,54,27,0,188,189,5,49,0,0,189,190,5,38,0,0, + 190,191,3,54,27,0,191,192,5,39,0,0,192,227,1,0,0,0,193,194,5,49,0,0,194, + 195,5,38,0,0,195,196,5,32,0,0,196,197,3,54,27,0,197,198,5,39,0,0,198,227, + 1,0,0,0,199,200,5,50,0,0,200,201,5,54,0,0,201,202,3,64,32,0,202,203,5, + 55,0,0,203,227,1,0,0,0,204,205,5,50,0,0,205,206,5,56,0,0,206,207,3,64, + 32,0,207,208,5,56,0,0,208,227,1,0,0,0,209,210,5,49,0,0,210,211,5,38,0, + 0,211,212,3,64,32,0,212,213,5,39,0,0,213,227,1,0,0,0,214,215,5,50,0,0, + 215,216,5,38,0,0,216,217,3,64,32,0,217,218,5,39,0,0,218,227,1,0,0,0,219, + 220,5,52,0,0,220,221,5,35,0,0,221,222,5,104,0,0,222,223,5,60,0,0,223,224, + 3,64,32,0,224,225,5,53,0,0,225,227,1,0,0,0,226,185,1,0,0,0,226,186,1,0, + 0,0,226,188,1,0,0,0,226,193,1,0,0,0,226,199,1,0,0,0,226,204,1,0,0,0,226, + 209,1,0,0,0,226,214,1,0,0,0,226,219,1,0,0,0,227,15,1,0,0,0,228,232,3,56, + 28,0,229,230,5,10,0,0,230,232,3,62,31,0,231,228,1,0,0,0,231,229,1,0,0, + 0,232,17,1,0,0,0,233,234,5,52,0,0,234,235,5,35,0,0,235,236,5,54,0,0,236, + 237,3,64,32,0,237,238,5,55,0,0,238,239,3,2,1,0,239,240,5,53,0,0,240,263, + 1,0,0,0,241,242,5,52,0,0,242,243,5,35,0,0,243,244,5,56,0,0,244,245,3,64, + 32,0,245,246,5,56,0,0,246,247,3,2,1,0,247,248,5,53,0,0,248,263,1,0,0,0, + 249,250,5,52,0,0,250,251,5,35,0,0,251,252,5,104,0,0,252,253,5,54,0,0,253, + 254,3,64,32,0,254,255,5,55,0,0,255,256,3,2,1,0,256,257,5,53,0,0,257,263, + 1,0,0,0,258,259,5,52,0,0,259,260,3,2,1,0,260,261,5,53,0,0,261,263,1,0, + 0,0,262,233,1,0,0,0,262,241,1,0,0,0,262,249,1,0,0,0,262,258,1,0,0,0,263, + 19,1,0,0,0,264,265,5,52,0,0,265,266,5,35,0,0,266,267,5,58,0,0,267,268, + 3,2,1,0,268,269,5,53,0,0,269,290,1,0,0,0,270,271,5,52,0,0,271,272,5,35, + 0,0,272,273,5,51,0,0,273,274,3,2,1,0,274,275,5,53,0,0,275,290,1,0,0,0, + 276,277,5,52,0,0,277,278,5,35,0,0,278,279,5,55,0,0,279,280,3,2,1,0,280, + 281,5,53,0,0,281,290,1,0,0,0,282,283,5,52,0,0,283,284,5,35,0,0,284,285, + 3,26,13,0,285,286,5,58,0,0,286,287,3,2,1,0,287,288,5,53,0,0,288,290,1, + 0,0,0,289,264,1,0,0,0,289,270,1,0,0,0,289,276,1,0,0,0,289,282,1,0,0,0, + 290,21,1,0,0,0,291,292,5,52,0,0,292,293,5,35,0,0,293,294,5,59,0,0,294, + 295,3,68,34,0,295,296,5,53,0,0,296,23,1,0,0,0,297,298,5,52,0,0,298,299, + 5,35,0,0,299,300,3,26,13,0,300,301,5,32,0,0,301,302,3,26,13,0,302,303, + 5,53,0,0,303,352,1,0,0,0,304,305,5,52,0,0,305,306,5,35,0,0,306,307,3,26, + 13,0,307,308,5,53,0,0,308,352,1,0,0,0,309,310,5,52,0,0,310,311,5,35,0, + 0,311,312,5,32,0,0,312,313,3,26,13,0,313,314,5,53,0,0,314,352,1,0,0,0, + 315,316,5,52,0,0,316,317,5,37,0,0,317,318,5,102,0,0,318,319,5,103,0,0, + 319,320,5,57,0,0,320,321,5,107,0,0,321,322,5,108,0,0,322,323,5,89,0,0, + 323,324,5,106,0,0,324,325,5,108,0,0,325,326,5,57,0,0,326,327,5,103,0,0, + 327,328,5,104,0,0,328,329,5,108,0,0,329,352,5,53,0,0,330,331,5,52,0,0, + 331,332,5,37,0,0,332,333,5,109,0,0,333,334,5,108,0,0,334,335,5,94,0,0, + 335,336,5,122,0,0,336,352,5,53,0,0,337,338,5,52,0,0,338,339,5,37,0,0,339, + 340,5,109,0,0,340,341,5,108,0,0,341,342,5,94,0,0,342,343,5,115,0,0,343, + 344,5,120,0,0,344,352,5,53,0,0,345,346,5,52,0,0,346,347,5,37,0,0,347,348, + 5,109,0,0,348,349,5,91,0,0,349,350,5,104,0,0,350,352,5,53,0,0,351,297, + 1,0,0,0,351,304,1,0,0,0,351,309,1,0,0,0,351,315,1,0,0,0,351,330,1,0,0, + 0,351,337,1,0,0,0,351,345,1,0,0,0,352,25,1,0,0,0,353,355,3,28,14,0,354, + 353,1,0,0,0,355,356,1,0,0,0,356,354,1,0,0,0,356,357,1,0,0,0,357,27,1,0, + 0,0,358,359,7,0,0,0,359,29,1,0,0,0,360,361,5,52,0,0,361,362,5,35,0,0,362, + 363,5,60,0,0,363,364,3,2,1,0,364,365,5,53,0,0,365,387,1,0,0,0,366,367, + 5,52,0,0,367,368,5,35,0,0,368,369,5,61,0,0,369,370,3,2,1,0,370,371,5,53, + 0,0,371,387,1,0,0,0,372,373,5,52,0,0,373,374,5,35,0,0,374,375,5,54,0,0, + 375,376,5,60,0,0,376,377,3,2,1,0,377,378,5,53,0,0,378,387,1,0,0,0,379, + 380,5,52,0,0,380,381,5,35,0,0,381,382,5,54,0,0,382,383,5,61,0,0,383,384, + 3,2,1,0,384,385,5,53,0,0,385,387,1,0,0,0,386,360,1,0,0,0,386,366,1,0,0, + 0,386,372,1,0,0,0,386,379,1,0,0,0,387,31,1,0,0,0,388,389,5,52,0,0,389, + 390,5,35,0,0,390,391,5,106,0,0,391,467,5,53,0,0,392,393,5,52,0,0,393,394, + 5,35,0,0,394,395,3,54,27,0,395,396,5,53,0,0,396,467,1,0,0,0,397,398,5, + 52,0,0,398,399,5,35,0,0,399,400,5,36,0,0,400,401,3,54,27,0,401,402,5,53, + 0,0,402,467,1,0,0,0,403,404,5,52,0,0,404,405,5,35,0,0,405,406,5,32,0,0, + 406,407,3,54,27,0,407,408,5,53,0,0,408,467,1,0,0,0,409,410,5,52,0,0,410, + 411,5,35,0,0,411,412,5,62,0,0,412,413,3,64,32,0,413,414,5,53,0,0,414,467, + 1,0,0,0,415,416,5,52,0,0,416,417,5,35,0,0,417,418,5,104,0,0,418,419,5, + 55,0,0,419,420,3,64,32,0,420,421,5,53,0,0,421,467,1,0,0,0,422,423,5,49, + 0,0,423,424,5,54,0,0,424,425,3,64,32,0,425,426,5,55,0,0,426,467,1,0,0, + 0,427,428,5,49,0,0,428,429,5,56,0,0,429,430,3,64,32,0,430,431,5,56,0,0, + 431,467,1,0,0,0,432,433,5,49,0,0,433,434,5,54,0,0,434,435,3,54,27,0,435, + 436,5,55,0,0,436,467,1,0,0,0,437,438,5,49,0,0,438,439,5,56,0,0,439,440, + 3,54,27,0,440,441,5,56,0,0,441,467,1,0,0,0,442,443,5,49,0,0,443,444,5, + 54,0,0,444,445,5,36,0,0,445,446,3,54,27,0,446,447,5,55,0,0,447,467,1,0, + 0,0,448,449,5,49,0,0,449,450,5,56,0,0,450,451,5,36,0,0,451,452,3,54,27, + 0,452,453,5,56,0,0,453,467,1,0,0,0,454,455,5,49,0,0,455,456,5,54,0,0,456, + 457,5,32,0,0,457,458,3,54,27,0,458,459,5,55,0,0,459,467,1,0,0,0,460,461, + 5,49,0,0,461,462,5,56,0,0,462,463,5,32,0,0,463,464,3,54,27,0,464,465,5, + 56,0,0,465,467,1,0,0,0,466,388,1,0,0,0,466,392,1,0,0,0,466,397,1,0,0,0, + 466,403,1,0,0,0,466,409,1,0,0,0,466,415,1,0,0,0,466,422,1,0,0,0,466,427, + 1,0,0,0,466,432,1,0,0,0,466,437,1,0,0,0,466,442,1,0,0,0,466,448,1,0,0, + 0,466,454,1,0,0,0,466,460,1,0,0,0,467,33,1,0,0,0,468,469,5,52,0,0,469, + 470,5,35,0,0,470,471,5,52,0,0,471,472,3,54,27,0,472,473,5,53,0,0,473,476, + 3,2,1,0,474,475,5,51,0,0,475,477,3,2,1,0,476,474,1,0,0,0,476,477,1,0,0, + 0,477,478,1,0,0,0,478,479,5,53,0,0,479,620,1,0,0,0,480,481,5,52,0,0,481, + 482,5,35,0,0,482,483,5,52,0,0,483,484,5,36,0,0,484,485,3,54,27,0,485,486, + 5,53,0,0,486,489,3,2,1,0,487,488,5,51,0,0,488,490,3,2,1,0,489,487,1,0, + 0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,492,5,53,0,0,492,620,1,0,0,0,493, + 494,5,52,0,0,494,495,5,35,0,0,495,496,5,52,0,0,496,497,5,32,0,0,497,498, + 3,54,27,0,498,499,5,53,0,0,499,502,3,2,1,0,500,501,5,51,0,0,501,503,3, + 2,1,0,502,500,1,0,0,0,502,503,1,0,0,0,503,504,1,0,0,0,504,505,5,53,0,0, + 505,620,1,0,0,0,506,507,5,52,0,0,507,508,5,35,0,0,508,509,5,52,0,0,509, + 510,5,54,0,0,510,511,3,64,32,0,511,512,5,55,0,0,512,513,5,53,0,0,513,516, + 3,2,1,0,514,515,5,51,0,0,515,517,3,2,1,0,516,514,1,0,0,0,516,517,1,0,0, + 0,517,518,1,0,0,0,518,519,5,53,0,0,519,620,1,0,0,0,520,521,5,52,0,0,521, + 522,5,35,0,0,522,523,5,52,0,0,523,524,5,56,0,0,524,525,3,64,32,0,525,526, + 5,56,0,0,526,527,5,53,0,0,527,530,3,2,1,0,528,529,5,51,0,0,529,531,3,2, + 1,0,530,528,1,0,0,0,530,531,1,0,0,0,531,532,1,0,0,0,532,533,5,53,0,0,533, + 620,1,0,0,0,534,535,5,52,0,0,535,536,5,35,0,0,536,537,5,52,0,0,537,538, + 5,106,0,0,538,539,3,54,27,0,539,540,5,53,0,0,540,543,3,2,1,0,541,542,5, + 51,0,0,542,544,3,2,1,0,543,541,1,0,0,0,543,544,1,0,0,0,544,545,1,0,0,0, + 545,546,5,53,0,0,546,620,1,0,0,0,547,548,5,52,0,0,548,549,5,35,0,0,549, + 550,5,52,0,0,550,551,5,106,0,0,551,552,5,53,0,0,552,555,3,2,1,0,553,554, + 5,51,0,0,554,556,3,2,1,0,555,553,1,0,0,0,555,556,1,0,0,0,556,557,1,0,0, + 0,557,558,5,53,0,0,558,620,1,0,0,0,559,560,5,52,0,0,560,561,5,35,0,0,561, + 562,5,52,0,0,562,563,5,106,0,0,563,564,5,62,0,0,564,565,3,64,32,0,565, + 566,5,53,0,0,566,569,3,2,1,0,567,568,5,51,0,0,568,570,3,2,1,0,569,567, + 1,0,0,0,569,570,1,0,0,0,570,571,1,0,0,0,571,572,5,53,0,0,572,620,1,0,0, + 0,573,574,5,52,0,0,574,575,5,35,0,0,575,576,5,52,0,0,576,577,5,92,0,0, + 577,578,5,93,0,0,578,579,5,94,0,0,579,580,5,97,0,0,580,581,5,102,0,0,581, + 582,5,93,0,0,582,583,5,53,0,0,583,586,3,2,1,0,584,585,5,51,0,0,585,587, + 3,2,1,0,586,584,1,0,0,0,586,587,1,0,0,0,587,588,1,0,0,0,588,589,5,53,0, + 0,589,620,1,0,0,0,590,591,5,52,0,0,591,592,5,35,0,0,592,593,5,52,0,0,593, + 594,5,63,0,0,594,595,5,81,0,0,595,596,5,81,0,0,596,597,5,67,0,0,597,598, + 5,80,0,0,598,599,5,82,0,0,599,600,5,53,0,0,600,603,3,2,1,0,601,602,5,51, + 0,0,602,604,3,2,1,0,603,601,1,0,0,0,603,604,1,0,0,0,604,605,1,0,0,0,605, + 606,5,53,0,0,606,620,1,0,0,0,607,608,5,52,0,0,608,609,5,35,0,0,609,610, + 5,52,0,0,610,611,3,64,32,0,611,612,5,53,0,0,612,615,3,2,1,0,613,614,5, + 51,0,0,614,616,3,2,1,0,615,613,1,0,0,0,615,616,1,0,0,0,616,617,1,0,0,0, + 617,618,5,53,0,0,618,620,1,0,0,0,619,468,1,0,0,0,619,480,1,0,0,0,619,493, + 1,0,0,0,619,506,1,0,0,0,619,520,1,0,0,0,619,534,1,0,0,0,619,547,1,0,0, + 0,619,559,1,0,0,0,619,573,1,0,0,0,619,590,1,0,0,0,619,607,1,0,0,0,620, + 35,1,0,0,0,621,622,5,52,0,0,622,623,5,37,0,0,623,624,5,89,0,0,624,625, + 5,91,0,0,625,626,5,91,0,0,626,627,5,93,0,0,627,628,5,104,0,0,628,629,5, + 108,0,0,629,722,5,53,0,0,630,631,5,52,0,0,631,632,5,37,0,0,632,636,5,94, + 0,0,633,634,5,89,0,0,634,635,5,97,0,0,635,637,5,100,0,0,636,633,1,0,0, + 0,636,637,1,0,0,0,637,638,1,0,0,0,638,722,5,53,0,0,639,640,5,52,0,0,640, + 645,5,37,0,0,641,642,5,101,0,0,642,643,5,89,0,0,643,644,5,106,0,0,644, + 646,5,99,0,0,645,641,1,0,0,0,645,646,1,0,0,0,646,647,1,0,0,0,647,648,5, + 58,0,0,648,649,5,102,0,0,649,650,5,89,0,0,650,651,5,101,0,0,651,652,5, + 93,0,0,652,722,5,53,0,0,653,654,5,52,0,0,654,655,5,37,0,0,655,656,5,91, + 0,0,656,657,5,103,0,0,657,658,5,101,0,0,658,659,5,101,0,0,659,660,5,97, + 0,0,660,661,5,108,0,0,661,722,5,53,0,0,662,663,5,52,0,0,663,664,5,37,0, + 0,664,665,5,104,0,0,665,666,5,106,0,0,666,667,5,109,0,0,667,668,5,102, + 0,0,668,669,5,93,0,0,669,722,5,53,0,0,670,671,5,52,0,0,671,672,5,37,0, + 0,672,673,5,104,0,0,673,674,5,106,0,0,674,675,5,109,0,0,675,676,5,102, + 0,0,676,677,5,93,0,0,677,678,5,58,0,0,678,679,5,102,0,0,679,680,5,89,0, + 0,680,681,5,101,0,0,681,682,5,93,0,0,682,722,5,53,0,0,683,684,5,52,0,0, + 684,685,5,37,0,0,685,686,5,107,0,0,686,687,5,99,0,0,687,688,5,97,0,0,688, + 689,5,104,0,0,689,722,5,53,0,0,690,691,5,52,0,0,691,692,5,37,0,0,692,693, + 5,107,0,0,693,694,5,99,0,0,694,695,5,97,0,0,695,696,5,104,0,0,696,697, + 5,58,0,0,697,698,5,102,0,0,698,699,5,89,0,0,699,700,5,101,0,0,700,701, + 5,93,0,0,701,722,5,53,0,0,702,703,5,52,0,0,703,704,5,37,0,0,704,705,5, + 108,0,0,705,706,5,96,0,0,706,707,5,93,0,0,707,708,5,102,0,0,708,722,5, + 53,0,0,709,710,5,52,0,0,710,711,5,37,0,0,711,712,5,108,0,0,712,713,5,96, + 0,0,713,714,5,93,0,0,714,715,5,102,0,0,715,716,5,58,0,0,716,717,5,102, + 0,0,717,718,5,89,0,0,718,719,5,101,0,0,719,720,5,93,0,0,720,722,5,53,0, + 0,721,621,1,0,0,0,721,630,1,0,0,0,721,639,1,0,0,0,721,653,1,0,0,0,721, + 662,1,0,0,0,721,670,1,0,0,0,721,683,1,0,0,0,721,690,1,0,0,0,721,702,1, + 0,0,0,721,709,1,0,0,0,722,37,1,0,0,0,723,724,5,52,0,0,724,725,5,37,0,0, + 725,726,5,91,0,0,726,727,5,106,0,0,727,785,5,53,0,0,728,729,5,52,0,0,729, + 730,5,37,0,0,730,731,5,100,0,0,731,732,5,94,0,0,732,785,5,53,0,0,733,734, + 5,52,0,0,734,735,5,37,0,0,735,736,5,91,0,0,736,737,5,106,0,0,737,738,5, + 100,0,0,738,739,5,94,0,0,739,785,5,53,0,0,740,741,5,52,0,0,741,742,5,37, + 0,0,742,743,5,89,0,0,743,744,5,102,0,0,744,745,5,113,0,0,745,746,5,91, + 0,0,746,747,5,106,0,0,747,748,5,100,0,0,748,749,5,94,0,0,749,785,5,53, + 0,0,750,751,5,52,0,0,751,752,5,37,0,0,752,753,5,89,0,0,753,754,5,102,0, + 0,754,755,5,113,0,0,755,785,5,53,0,0,756,757,5,52,0,0,757,758,5,37,0,0, + 758,759,5,90,0,0,759,760,5,107,0,0,760,761,5,106,0,0,761,762,5,57,0,0, + 762,763,5,89,0,0,763,764,5,102,0,0,764,765,5,113,0,0,765,766,5,91,0,0, + 766,767,5,106,0,0,767,768,5,100,0,0,768,769,5,94,0,0,769,785,5,53,0,0, + 770,771,5,52,0,0,771,772,5,37,0,0,772,773,5,90,0,0,773,774,5,107,0,0,774, + 775,5,106,0,0,775,776,5,57,0,0,776,777,5,109,0,0,777,778,5,102,0,0,778, + 779,5,97,0,0,779,780,5,91,0,0,780,781,5,103,0,0,781,782,5,92,0,0,782,783, + 5,93,0,0,783,785,5,53,0,0,784,723,1,0,0,0,784,728,1,0,0,0,784,733,1,0, + 0,0,784,740,1,0,0,0,784,750,1,0,0,0,784,756,1,0,0,0,784,770,1,0,0,0,785, + 39,1,0,0,0,786,787,5,52,0,0,787,788,5,35,0,0,788,789,5,91,0,0,789,797, + 5,53,0,0,790,791,5,52,0,0,791,792,5,35,0,0,792,793,5,91,0,0,793,794,3, + 54,27,0,794,795,5,53,0,0,795,797,1,0,0,0,796,786,1,0,0,0,796,790,1,0,0, + 0,797,41,1,0,0,0,798,825,3,32,16,0,799,825,3,46,23,0,800,825,3,48,24,0, + 801,825,3,12,6,0,802,825,3,18,9,0,803,825,3,20,10,0,804,825,3,22,11,0, + 805,825,3,24,12,0,806,825,3,30,15,0,807,825,3,14,7,0,808,825,3,34,17,0, + 809,825,3,36,18,0,810,825,3,38,19,0,811,825,3,40,20,0,812,825,5,12,0,0, + 813,825,5,31,0,0,814,825,5,43,0,0,815,825,5,41,0,0,816,825,5,42,0,0,817, + 825,5,44,0,0,818,825,5,45,0,0,819,825,5,46,0,0,820,825,5,47,0,0,821,825, + 5,48,0,0,822,825,5,13,0,0,823,825,5,28,0,0,824,798,1,0,0,0,824,799,1,0, + 0,0,824,800,1,0,0,0,824,801,1,0,0,0,824,802,1,0,0,0,824,803,1,0,0,0,824, + 804,1,0,0,0,824,805,1,0,0,0,824,806,1,0,0,0,824,807,1,0,0,0,824,808,1, + 0,0,0,824,809,1,0,0,0,824,810,1,0,0,0,824,811,1,0,0,0,824,812,1,0,0,0, + 824,813,1,0,0,0,824,814,1,0,0,0,824,815,1,0,0,0,824,816,1,0,0,0,824,817, + 1,0,0,0,824,818,1,0,0,0,824,819,1,0,0,0,824,820,1,0,0,0,824,821,1,0,0, + 0,824,822,1,0,0,0,824,823,1,0,0,0,825,43,1,0,0,0,826,827,3,50,25,0,827, + 828,5,32,0,0,828,829,3,50,25,0,829,834,1,0,0,0,830,834,3,46,23,0,831,834, + 3,50,25,0,832,834,3,16,8,0,833,826,1,0,0,0,833,830,1,0,0,0,833,831,1,0, + 0,0,833,832,1,0,0,0,834,45,1,0,0,0,835,855,5,33,0,0,836,855,5,34,0,0,837, + 855,5,4,0,0,838,855,5,14,0,0,839,855,5,15,0,0,840,855,5,16,0,0,841,855, + 5,17,0,0,842,855,5,18,0,0,843,855,5,19,0,0,844,855,5,20,0,0,845,855,5, + 21,0,0,846,855,5,22,0,0,847,855,5,23,0,0,848,855,5,24,0,0,849,855,5,25, + 0,0,850,855,5,26,0,0,851,855,5,27,0,0,852,853,5,10,0,0,853,855,9,0,0,0, + 854,835,1,0,0,0,854,836,1,0,0,0,854,837,1,0,0,0,854,838,1,0,0,0,854,839, + 1,0,0,0,854,840,1,0,0,0,854,841,1,0,0,0,854,842,1,0,0,0,854,843,1,0,0, + 0,854,844,1,0,0,0,854,845,1,0,0,0,854,846,1,0,0,0,854,847,1,0,0,0,854, + 848,1,0,0,0,854,849,1,0,0,0,854,850,1,0,0,0,854,851,1,0,0,0,854,852,1, + 0,0,0,855,47,1,0,0,0,856,859,3,52,26,0,857,859,5,30,0,0,858,856,1,0,0, + 0,858,857,1,0,0,0,859,49,1,0,0,0,860,873,3,52,26,0,861,873,5,12,0,0,862, + 873,5,29,0,0,863,873,5,31,0,0,864,873,5,35,0,0,865,873,5,36,0,0,866,873, + 5,37,0,0,867,873,5,41,0,0,868,873,5,44,0,0,869,873,5,51,0,0,870,873,5, + 52,0,0,871,873,5,53,0,0,872,860,1,0,0,0,872,861,1,0,0,0,872,862,1,0,0, + 0,872,863,1,0,0,0,872,864,1,0,0,0,872,865,1,0,0,0,872,866,1,0,0,0,872, + 867,1,0,0,0,872,868,1,0,0,0,872,869,1,0,0,0,872,870,1,0,0,0,872,871,1, + 0,0,0,873,51,1,0,0,0,874,901,3,56,28,0,875,901,3,72,36,0,876,901,3,62, + 31,0,877,901,5,3,0,0,878,901,5,5,0,0,879,901,5,6,0,0,880,901,5,7,0,0,881, + 901,5,8,0,0,882,901,5,9,0,0,883,901,5,11,0,0,884,901,5,1,0,0,885,901,5, + 2,0,0,886,901,5,38,0,0,887,901,5,39,0,0,888,901,5,40,0,0,889,901,5,32, + 0,0,890,901,5,54,0,0,891,901,5,55,0,0,892,901,5,56,0,0,893,901,5,57,0, + 0,894,901,5,58,0,0,895,901,5,59,0,0,896,901,5,60,0,0,897,901,5,61,0,0, + 898,901,5,62,0,0,899,901,5,125,0,0,900,874,1,0,0,0,900,875,1,0,0,0,900, + 876,1,0,0,0,900,877,1,0,0,0,900,878,1,0,0,0,900,879,1,0,0,0,900,880,1, + 0,0,0,900,881,1,0,0,0,900,882,1,0,0,0,900,883,1,0,0,0,900,884,1,0,0,0, + 900,885,1,0,0,0,900,886,1,0,0,0,900,887,1,0,0,0,900,888,1,0,0,0,900,889, + 1,0,0,0,900,890,1,0,0,0,900,891,1,0,0,0,900,892,1,0,0,0,900,893,1,0,0, + 0,900,894,1,0,0,0,900,895,1,0,0,0,900,896,1,0,0,0,900,897,1,0,0,0,900, + 898,1,0,0,0,900,899,1,0,0,0,901,53,1,0,0,0,902,903,3,60,30,0,903,55,1, + 0,0,0,904,905,5,10,0,0,905,906,7,1,0,0,906,907,3,58,29,0,907,908,3,58, + 29,0,908,914,1,0,0,0,909,910,5,10,0,0,910,911,3,58,29,0,911,912,3,58,29, + 0,912,914,1,0,0,0,913,904,1,0,0,0,913,909,1,0,0,0,914,57,1,0,0,0,915,916, + 7,2,0,0,916,59,1,0,0,0,917,919,3,62,31,0,918,917,1,0,0,0,919,920,1,0,0, + 0,920,918,1,0,0,0,920,921,1,0,0,0,921,61,1,0,0,0,922,923,7,3,0,0,923,63, + 1,0,0,0,924,925,3,66,33,0,925,65,1,0,0,0,926,929,3,72,36,0,927,929,5,57, + 0,0,928,926,1,0,0,0,928,927,1,0,0,0,929,935,1,0,0,0,930,934,3,72,36,0, + 931,934,5,57,0,0,932,934,3,62,31,0,933,930,1,0,0,0,933,931,1,0,0,0,933, + 932,1,0,0,0,934,937,1,0,0,0,935,933,1,0,0,0,935,936,1,0,0,0,936,67,1,0, + 0,0,937,935,1,0,0,0,938,940,3,70,35,0,939,938,1,0,0,0,940,941,1,0,0,0, + 941,939,1,0,0,0,941,942,1,0,0,0,942,69,1,0,0,0,943,944,8,4,0,0,944,71, + 1,0,0,0,945,946,7,5,0,0,946,73,1,0,0,0,49,82,88,93,119,124,133,143,152, + 162,171,179,183,226,231,262,289,351,356,386,466,476,489,502,516,530,543, + 555,569,586,603,615,619,636,645,721,784,796,824,833,854,858,872,900,913, + 920,928,933,935,941 + ] + + public + static let _ATN = try! ATNDeserializer().deserialize(_serializedATN) +} \ No newline at end of file