diff --git a/demo-edit-es-module/module/editor.d.ts b/demo-edit-es-module/module/editor.d.ts index f3f6e81f6..dea11ac95 100644 --- a/demo-edit-es-module/module/editor.d.ts +++ b/demo-edit-es-module/module/editor.d.ts @@ -258,6 +258,7 @@ export const enum ThemeColor { LineNumberActiveForeground = 21, SyntaxKeyword = 30, + SyntaxControl, SyntaxNull, SyntaxBoolean, SyntaxSemi, diff --git a/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/EditorColorScheme.java b/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/EditorColorScheme.java index bc2480dfb..28244608a 100644 --- a/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/EditorColorScheme.java +++ b/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/EditorColorScheme.java @@ -44,21 +44,22 @@ public class EditorColorScheme { public static final int LineNumberActiveForeground = 21; public static final int SyntaxKeyword = 30; - public static final int SyntaxNull = 31; - public static final int SyntaxBoolean = 32; - public static final int SyntaxSemi = 33; - public static final int SyntaxField = 34; - public static final int SyntaxString = 35; - public static final int SyntaxError = 36; - public static final int SyntaxNumeric = 37; - public static final int SyntaxMethod = 38; - public static final int SyntaxComment = 39; - public static final int SyntaxAnnotation = 40; - public static final int SyntaxType = 41; - public static final int SyntaxOperator = 42; - public static final int SyntaxEscapeChar = 43; - public static final int SyntaxCppDirective = 44; - public static final int SyntaxDocumentation = 45; + public static final int SyntaxControl = 31; + public static final int SyntaxNull = 32; + public static final int SyntaxBoolean = 33; + public static final int SyntaxSemi = 34; + public static final int SyntaxField = 35; + public static final int SyntaxString = 36; + public static final int SyntaxError = 37; + public static final int SyntaxNumeric = 38; + public static final int SyntaxMethod = 39; + public static final int SyntaxComment = 40; + public static final int SyntaxAnnotation = 41; + public static final int SyntaxType = 42; + public static final int SyntaxOperator = 43; + public static final int SyntaxEscapeChar = 44; + public static final int SyntaxCppDirective = 45; + public static final int SyntaxDocumentation = 46; public static final int LastIndex = SyntaxDocumentation + 1; @@ -276,6 +277,7 @@ public boolean modify(int m, Color c) { // syntax case SyntaxKeyword -> setCodeForeground(ParserConstants.TokenTypes.KEYWORD, c); + case SyntaxControl -> setCodeForeground(ParserConstants.TokenTypes.CONTROL, c); case SyntaxNull -> setCodeForeground(ParserConstants.TokenTypes.NULL, c); case SyntaxBoolean -> setCodeForeground(ParserConstants.TokenTypes.BOOLEAN, c); case SyntaxSemi -> setCodeForeground(ParserConstants.TokenTypes.SEMI, c); @@ -361,6 +363,7 @@ public static String name(int n) { case ActiveLineNumberForeground -> "ActiveLineNumberForeground"; case LineNumberActiveForeground -> "LineNumberActiveForeground"; case SyntaxKeyword -> " SyntaxKeyword"; + case SyntaxControl -> " SyntaxControl"; case SyntaxNull -> " SyntaxNull"; case SyntaxBoolean -> " SyntaxBoolean"; case SyntaxSemi -> " SyntaxSemi"; diff --git a/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/IdeaCodeColors.java b/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/IdeaCodeColors.java index 20cdb3a44..5d3bce468 100644 --- a/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/IdeaCodeColors.java +++ b/demo-edit/src/main/java/org/sudu/experiments/editor/ui/colors/IdeaCodeColors.java @@ -30,6 +30,7 @@ static CodeElementColor[] codeElementColorsLight() { enum ElementsDarcula { defaultText(Darcula.defaultText), keyword(Darcula.keyword), + control(Darcula.keyword), nullLiteral(Darcula.keyword), booleanLiteral(Darcula.keyword), semi(Darcula.keyword), @@ -68,6 +69,7 @@ enum ElementsDarcula { enum ElementsLight { defaultText(Light.defaultText), keyword(Light.keyword), + control(Light.keyword), nullLiteral(Light.keyword), booleanLiteral(Light.keyword), semi(Light.defaultText), @@ -106,6 +108,7 @@ enum ElementsLight { enum ElementsDark { defaultText(Dark.defaultText), keyword(Dark.keyword), + control(Dark.keyword), nullLiteral(Dark.keyword), booleanLiteral(Dark.keyword), semi(Dark.defaultText), diff --git a/demo-edit/src/main/java/org/sudu/experiments/editor/worker/proxy/TypeScriptProxy.java b/demo-edit/src/main/java/org/sudu/experiments/editor/worker/proxy/TypeScriptProxy.java index 1f9d1e8b9..4ce74d033 100644 --- a/demo-edit/src/main/java/org/sudu/experiments/editor/worker/proxy/TypeScriptProxy.java +++ b/demo-edit/src/main/java/org/sudu/experiments/editor/worker/proxy/TypeScriptProxy.java @@ -7,7 +7,7 @@ import org.sudu.experiments.parser.common.base.IntParser; import org.sudu.experiments.parser.typescript.parser.TypeScriptFirstLinesLexer; import org.sudu.experiments.parser.typescript.parser.TypeScriptLightParser; -import org.sudu.experiments.parser.typescript.parser.highlighting.TypeScriptIntervalParser; +import org.sudu.experiments.parser.typescript.parser.TypeScriptIntervalParser; public class TypeScriptProxy extends BaseProxy { diff --git a/parser-common/src/main/java/org/sudu/experiments/parser/ParserConstants.java b/parser-common/src/main/java/org/sudu/experiments/parser/ParserConstants.java index 20dfbf3f8..600232887 100644 --- a/parser-common/src/main/java/org/sudu/experiments/parser/ParserConstants.java +++ b/parser-common/src/main/java/org/sudu/experiments/parser/ParserConstants.java @@ -8,25 +8,26 @@ public interface ParserConstants { interface TokenTypes { int DEFAULT = 0; int KEYWORD = 1; - int NULL = 2; - int BOOLEAN = 3; - int SEMI = 4; - int FIELD = 5; - int STRING = 6; - int ERROR = 7; - int NUMERIC = 8; - int METHOD = 9; - int COMMENT = 10; - int ANNOTATION = 11; - int TYPE = 12; - int OPERATOR = 13; - int ESCAPE_CHAR = 14; - int CPP_DIRECTIVE = 15; - int DOCUMENTATION = 16; - - int BR_1 = 17; - int BR_2 = 18; - int BR_3 = 19; + int CONTROL = 2; // keywords such as if-else, break, continue, return etc... + int NULL = 3; + int BOOLEAN = 4; + int SEMI = 5; + int FIELD = 6; + int STRING = 7; + int ERROR = 8; + int NUMERIC = 9; + int METHOD = 10; + int COMMENT = 11; + int ANNOTATION = 12; + int TYPE = 13; + int OPERATOR = 14; + int ESCAPE_CHAR = 15; + int CPP_DIRECTIVE = 16; + int DOCUMENTATION = 17; + + int BR_1 = 18; + int BR_2 = 19; + int BR_3 = 20; int TYPES_LENGTH = BR_3 + 1; diff --git a/parser-generator/src/main/resources/grammar/javascript/JavaScriptLexer.g4 b/parser-generator/src/main/resources/grammar/javascript/JavaScriptLexer.g4 deleted file mode 100644 index d53f0bd7b..000000000 --- a/parser-generator/src/main/resources/grammar/javascript/JavaScriptLexer.g4 +++ /dev/null @@ -1,320 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 by Bart Kiers (original author) and Alexandre Vitorelli (contributor -> ported to CSharp) - * Copyright (c) 2017-2020 by Ivan Kochurkin (Positive Technologies): - added ECMAScript 6 support, cleared and transformed to the universal grammar. - * Copyright (c) 2018 by Juan Alvarez (contributor -> ported to Go) - * Copyright (c) 2019 by Student Main (contributor -> ES2020) - * - * 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. - */ -lexer grammar JavaScriptLexer; - -channels { ERROR } - -options { superClass=JavaScriptLexerBase; } - -// Insert here @header for C++ lexer. - -HashBangLine: { this.IsStartOfFile()}? '#!' ~[\r\n\u2028\u2029]*; // only allowed at start -MultiLineComment: '/*' .*? '*/' -> channel(HIDDEN); -SingleLineComment: '//' ~[\r\n\u2028\u2029]* -> channel(HIDDEN); -RegularExpressionLiteral: '/' RegularExpressionFirstChar RegularExpressionChar* {this.IsRegexPossible()}? '/' IdentifierPart*; - -OpenBracket: '['; -CloseBracket: ']'; -OpenParen: '('; -CloseParen: ')'; -OpenBrace: '{' {this.ProcessOpenBrace();}; -TemplateCloseBrace: {this.IsInTemplateString()}? '}' -> popMode; -CloseBrace: '}' {this.ProcessCloseBrace();}; -SemiColon: ';'; -Comma: ','; -Assign: '='; -QuestionMark: '?'; -QuestionMarkDot: '?.'; -Colon: ':'; -Ellipsis: '...'; -Dot: '.'; -PlusPlus: '++'; -MinusMinus: '--'; -Plus: '+'; -Minus: '-'; -BitNot: '~'; -Not: '!'; -Multiply: '*'; -Divide: '/'; -Modulus: '%'; -Power: '**'; -NullCoalesce: '??'; -Hashtag: '#'; -RightShiftArithmetic: '>>'; -LeftShiftArithmetic: '<<'; -RightShiftLogical: '>>>'; -LessThan: '<'; -MoreThan: '>'; -LessThanEquals: '<='; -GreaterThanEquals: '>='; -Equals_: '=='; -NotEquals: '!='; -IdentityEquals: '==='; -IdentityNotEquals: '!=='; -BitAnd: '&'; -BitXOr: '^'; -BitOr: '|'; -And: '&&'; -Or: '||'; -MultiplyAssign: '*='; -DivideAssign: '/='; -ModulusAssign: '%='; -PlusAssign: '+='; -MinusAssign: '-='; -LeftShiftArithmeticAssign: '<<='; -RightShiftArithmeticAssign: '>>='; -RightShiftLogicalAssign: '>>>='; -BitAndAssign: '&='; -BitXorAssign: '^='; -BitOrAssign: '|='; -PowerAssign: '**='; -ARROW: '=>'; - -/// Null Literals - -NullLiteral: 'null'; - -/// Boolean Literals - -BooleanLiteral: 'true' - | 'false'; - -/// Numeric Literals - -DecimalLiteral: DecimalIntegerLiteral '.' [0-9] [0-9_]* ExponentPart? - | '.' [0-9] [0-9_]* ExponentPart? - | DecimalIntegerLiteral ExponentPart? - ; - -/// Numeric Literals - -HexIntegerLiteral: '0' [xX] [0-9a-fA-F] HexDigit*; -OctalIntegerLiteral: '0' [0-7]+ {!this.IsStrictMode()}?; -OctalIntegerLiteral2: '0' [oO] [0-7] [_0-7]*; -BinaryIntegerLiteral: '0' [bB] [01] [_01]*; - -BigHexIntegerLiteral: '0' [xX] [0-9a-fA-F] HexDigit* 'n'; -BigOctalIntegerLiteral: '0' [oO] [0-7] [_0-7]* 'n'; -BigBinaryIntegerLiteral: '0' [bB] [01] [_01]* 'n'; -BigDecimalIntegerLiteral: DecimalIntegerLiteral 'n'; - -/// Keywords - -Break: 'break'; -Do: 'do'; -Instanceof: 'instanceof'; -Typeof: 'typeof'; -Case: 'case'; -Else: 'else'; -New: 'new'; -Var: 'var'; -Catch: 'catch'; -Finally: 'finally'; -Return: 'return'; -Void: 'void'; -Continue: 'continue'; -For: 'for'; -Switch: 'switch'; -While: 'while'; -Debugger: 'debugger'; -Function_: 'function'; -This: 'this'; -With: 'with'; -Default: 'default'; -If: 'if'; -Throw: 'throw'; -Delete: 'delete'; -In: 'in'; -Try: 'try'; -As: 'as'; -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers_with_special_meanings -From: 'from'; // is 'from' a real keyword ??? - -/// Future Reserved Words - -Class: 'class'; -Enum: 'enum'; -Extends: 'extends'; -Super: 'super'; -Const: 'const'; -Export: 'export'; -Import: 'import'; - -Async: 'async'; -Await: 'await'; -Yield: 'yield'; - -/// The following tokens are also considered to be FutureReservedWords -/// when parsing strict mode - -Implements: 'implements' {this.IsStrictMode()}?; -StrictLet: 'let' {this.IsStrictMode()}?; -NonStrictLet: 'let' {!this.IsStrictMode()}?; -Private: 'private' {this.IsStrictMode()}?; -Public: 'public' {this.IsStrictMode()}?; -Interface: 'interface' {this.IsStrictMode()}?; -Package: 'package' {this.IsStrictMode()}?; -Protected: 'protected' {this.IsStrictMode()}?; -Static: 'static' {this.IsStrictMode()}?; - -/// Identifier Names and Identifiers - -Identifier: IdentifierStart IdentifierPart*; -/// String Literals -StringLiteral: ('"' DoubleStringCharacter* '"' - | '\'' SingleStringCharacter* '\'') {this.ProcessStringLiteral();} - ; - -BackTick: '`' {this.IncreaseTemplateDepth();} -> pushMode(TEMPLATE); - -WhiteSpaces: [\t\u000B\u000C\u0020\u00A0]+ -> channel(HIDDEN); - -LineTerminator: [\r\n\u2028\u2029] -> channel(HIDDEN); - -/// Comments - - -HtmlComment: '' -> channel(HIDDEN); -CDataComment: '' -> channel(HIDDEN); -UnexpectedCharacter: . -> channel(ERROR); - -mode TEMPLATE; - -BackTickInside: '`' {this.DecreaseTemplateDepth();} -> type(BackTick), popMode; -TemplateStringStartExpression: '${' -> pushMode(DEFAULT_MODE); -TemplateStringAtom: ~[`]; - -// Fragment rules - -fragment DoubleStringCharacter - : ~["\\\r\n] - | '\\' EscapeSequence - | LineContinuation - ; - -fragment SingleStringCharacter - : ~['\\\r\n] - | '\\' EscapeSequence - | LineContinuation - ; - -fragment EscapeSequence - : CharacterEscapeSequence - | '0' // no digit ahead! TODO - | HexEscapeSequence - | UnicodeEscapeSequence - | ExtendedUnicodeEscapeSequence - ; - -fragment CharacterEscapeSequence - : SingleEscapeCharacter - | NonEscapeCharacter - ; - -fragment HexEscapeSequence - : 'x' HexDigit HexDigit - ; - -fragment UnicodeEscapeSequence - : 'u' HexDigit HexDigit HexDigit HexDigit - | 'u' '{' HexDigit HexDigit+ '}' - ; - -fragment ExtendedUnicodeEscapeSequence - : 'u' '{' HexDigit+ '}' - ; - -fragment SingleEscapeCharacter - : ['"\\bfnrtv] - ; - -fragment NonEscapeCharacter - : ~['"\\bfnrtv0-9xu\r\n] - ; - -fragment EscapeCharacter - : SingleEscapeCharacter - | [0-9] - | [xu] - ; - -fragment LineContinuation - : '\\' [\r\n\u2028\u2029] - ; - -fragment HexDigit - : [_0-9a-fA-F] - ; - -fragment DecimalIntegerLiteral - : '0' - | [1-9] [0-9_]* - ; - -fragment ExponentPart - : [eE] [+-]? [0-9_]+ - ; - -fragment IdentifierPart - : IdentifierStart - | [\p{Mn}] - | [\p{Nd}] - | [\p{Pc}] - | '\u200C' - | '\u200D' - ; - -fragment IdentifierStart - : [\p{L}] - | [$_] - | '\\' UnicodeEscapeSequence - ; - -fragment RegularExpressionFirstChar - : ~[*\r\n\u2028\u2029\\/[] - | RegularExpressionBackslashSequence - | '[' RegularExpressionClassChar* ']' - ; - -fragment RegularExpressionChar - : ~[\r\n\u2028\u2029\\/[] - | RegularExpressionBackslashSequence - | '[' RegularExpressionClassChar* ']' - ; - -fragment RegularExpressionClassChar - : ~[\r\n\u2028\u2029\]\\] - | RegularExpressionBackslashSequence - ; - -fragment RegularExpressionBackslashSequence - : '\\' ~[\r\n\u2028\u2029] - ; diff --git a/parser-generator/src/main/resources/grammar/javascript/JavaScriptParser.g4 b/parser-generator/src/main/resources/grammar/javascript/JavaScriptParser.g4 deleted file mode 100644 index 3a49eb48e..000000000 --- a/parser-generator/src/main/resources/grammar/javascript/JavaScriptParser.g4 +++ /dev/null @@ -1,540 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 by Bart Kiers (original author) and Alexandre Vitorelli (contributor -> ported to CSharp) - * Copyright (c) 2017-2020 by Ivan Kochurkin (Positive Technologies): - added ECMAScript 6 support, cleared and transformed to the universal grammar. - * Copyright (c) 2018 by Juan Alvarez (contributor -> ported to Go) - * Copyright (c) 2019 by Student Main (contributor -> ES2020) - * - * 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. - */ -parser grammar JavaScriptParser; - -// Insert here @header for C++ parser. - -options { - tokenVocab=JavaScriptLexer; - superClass=JavaScriptParserBase; -} - -program - : HashBangLine? sourceElements? EOF - ; - -sourceElement - : statement - ; - -statement - : block - | variableStatement - | importStatement - | exportStatement - | emptyStatement_ - | classDeclaration - | expressionStatement - | ifStatement - | iterationStatement - | continueStatement - | breakStatement - | returnStatement - | yieldStatement - | withStatement - | labelledStatement - | switchStatement - | throwStatement - | tryStatement - | debuggerStatement - | functionDeclaration - ; - -block - : '{' statementList? '}' - ; - -statementList - : statement+ - ; - -importStatement - : Import importFromBlock - ; - -importFromBlock - : importDefault? (importNamespace | moduleItems) importFrom eos - | StringLiteral eos - ; - -moduleItems - : '{' (aliasName ',')* (aliasName ','?)? '}' - ; - -importDefault - : aliasName ',' - ; - -importNamespace - : ('*' | identifierName) (As identifierName)? - ; - -importFrom - : From StringLiteral // ??? - ; - -aliasName - : identifierName (As identifierName)? - ; - -exportStatement - : Export (exportFromBlock | declaration) eos # ExportDeclaration - | Export Default singleExpression eos # ExportDefaultDeclaration - ; - -exportFromBlock - : importNamespace importFrom eos - | moduleItems importFrom? eos - ; - -declaration - : variableStatement - | classDeclaration - | functionDeclaration - ; - -variableStatement - : variableDeclarationList eos - ; - -variableDeclarationList - : varModifier variableDeclaration (',' variableDeclaration)* - ; - -variableDeclaration - : assignable ('=' singleExpression)? // ECMAScript 6: Array & Object Matching - ; - -emptyStatement_ - : SemiColon - ; - -expressionStatement - : {this.notOpenBraceAndNotFunction()}? expressionSequence eos - ; - -ifStatement - : If '(' expressionSequence ')' statement (Else statement)? - ; - - -iterationStatement - : Do statement While '(' expressionSequence ')' eos # DoStatement - | While '(' expressionSequence ')' statement # WhileStatement - | For '(' (expressionSequence | variableDeclarationList)? ';' expressionSequence? ';' expressionSequence? ')' statement # ForStatement - | For '(' (singleExpression | variableDeclarationList) In expressionSequence ')' statement # ForInStatement - // strange, 'of' is an identifier. and this.p("of") not work in sometime. - | For Await? '(' (singleExpression | variableDeclarationList) identifier{this.p("of")}? expressionSequence ')' statement # ForOfStatement - ; - -varModifier // let, const - ECMAScript 6 - : Var - | let_ - | Const - ; - -continueStatement - : Continue ({this.notLineTerminator()}? identifier)? eos - ; - -breakStatement - : Break ({this.notLineTerminator()}? identifier)? eos - ; - -returnStatement - : Return ({this.notLineTerminator()}? expressionSequence)? eos - ; - -yieldStatement - : Yield ({this.notLineTerminator()}? expressionSequence)? eos - ; - -withStatement - : With '(' expressionSequence ')' statement - ; - -switchStatement - : Switch '(' expressionSequence ')' caseBlock - ; - -caseBlock - : '{' caseClauses? (defaultClause caseClauses?)? '}' - ; - -caseClauses - : caseClause+ - ; - -caseClause - : Case expressionSequence ':' statementList? - ; - -defaultClause - : Default ':' statementList? - ; - -labelledStatement - : identifier ':' statement - ; - -throwStatement - : Throw {this.notLineTerminator()}? expressionSequence eos - ; - -tryStatement - : Try block (catchProduction finallyProduction? | finallyProduction) - ; - -catchProduction - : Catch ('(' assignable? ')')? block - ; - -finallyProduction - : Finally block - ; - -debuggerStatement - : Debugger eos - ; - -functionDeclaration - : Async? Function_ '*'? identifier '(' formalParameterList? ')' functionBody - ; - -classDeclaration - : Class identifier classTail - ; - -classTail - : (Extends singleExpression)? '{' classElement* '}' - ; - -classElement - : (Static | {this.n("static")}? identifier | Async)* (methodDefinition | assignable '=' objectLiteral ';') - | emptyStatement_ - | '#'? propertyName '=' singleExpression - ; - -methodDefinition - : '*'? '#'? propertyName '(' formalParameterList? ')' functionBody - | '*'? '#'? getter '(' ')' functionBody - | '*'? '#'? setter '(' formalParameterList? ')' functionBody - ; - -formalParameterList - : formalParameterArg (',' formalParameterArg)* (',' lastFormalParameterArg)? - | lastFormalParameterArg - ; - -formalParameterArg - : assignable ('=' singleExpression)? // ECMAScript 6: Initialization - ; - -lastFormalParameterArg // ECMAScript 6: Rest Parameter - : Ellipsis singleExpression - ; - -functionBody - : '{' sourceElements? '}' - ; - -sourceElements - : sourceElement+ - ; - -arrayLiteral - : ('[' elementList ']') - ; - -elementList - : ','* arrayElement? (','+ arrayElement)* ','* // Yes, everything is optional - ; - -arrayElement - : Ellipsis? singleExpression - ; - -propertyAssignment - : propertyName ':' singleExpression # PropertyExpressionAssignment - | '[' singleExpression ']' ':' singleExpression # ComputedPropertyExpressionAssignment - | Async? '*'? propertyName '(' formalParameterList? ')' functionBody # FunctionProperty - | getter '(' ')' functionBody # PropertyGetter - | setter '(' formalParameterArg ')' functionBody # PropertySetter - | Ellipsis? singleExpression # PropertyShorthand - ; - -propertyName - : identifierName - | StringLiteral - | numericLiteral - | '[' singleExpression ']' - ; - -arguments - : '('(argument (',' argument)* ','?)?')' - ; - -argument - : Ellipsis? (singleExpression | identifier) - ; - -expressionSequence - : singleExpression (',' singleExpression)* - ; - -singleExpression - : anonymousFunction # FunctionExpression - | Class identifier? classTail # ClassExpression - | singleExpression '?.' singleExpression # OptionalChainExpression - | singleExpression '?.'? '[' expressionSequence ']' # MemberIndexExpression - | singleExpression '?'? '.' '#'? identifierName # MemberDotExpression - // Split to try `new Date()` first, then `new Date`. - | New singleExpression arguments # NewExpression - | New singleExpression # NewExpression - | singleExpression arguments # ArgumentsExpression - | New '.' identifier # MetaExpression // new.target - | singleExpression {this.notLineTerminator()}? '++' # PostIncrementExpression - | singleExpression {this.notLineTerminator()}? '--' # PostDecreaseExpression - | Delete singleExpression # DeleteExpression - | Void singleExpression # VoidExpression - | Typeof singleExpression # TypeofExpression - | '++' singleExpression # PreIncrementExpression - | '--' singleExpression # PreDecreaseExpression - | '+' singleExpression # UnaryPlusExpression - | '-' singleExpression # UnaryMinusExpression - | '~' singleExpression # BitNotExpression - | '!' singleExpression # NotExpression - | Await singleExpression # AwaitExpression - | singleExpression '**' singleExpression # PowerExpression - | singleExpression ('*' | '/' | '%') singleExpression # MultiplicativeExpression - | singleExpression ('+' | '-') singleExpression # AdditiveExpression - | singleExpression '??' singleExpression # CoalesceExpression - | singleExpression ('<<' | '>>' | '>>>') singleExpression # BitShiftExpression - | singleExpression ('<' | '>' | '<=' | '>=') singleExpression # RelationalExpression - | singleExpression Instanceof singleExpression # InstanceofExpression - | singleExpression In singleExpression # InExpression - | singleExpression ('==' | '!=' | '===' | '!==') singleExpression # EqualityExpression - | singleExpression '&' singleExpression # BitAndExpression - | singleExpression '^' singleExpression # BitXOrExpression - | singleExpression '|' singleExpression # BitOrExpression - | singleExpression '&&' singleExpression # LogicalAndExpression - | singleExpression '||' singleExpression # LogicalOrExpression - | singleExpression '?' singleExpression ':' singleExpression # TernaryExpression - | singleExpression '=' singleExpression # AssignmentExpression - | singleExpression assignmentOperator singleExpression # AssignmentOperatorExpression - | Import '(' singleExpression ')' # ImportExpression - | singleExpression templateStringLiteral # TemplateStringExpression // ECMAScript 6 - | yieldStatement # YieldExpression // ECMAScript 6 - | This # ThisExpression - | identifier # IdentifierExpression - | Super # SuperExpression - | literal # LiteralExpression - | arrayLiteral # ArrayLiteralExpression - | objectLiteral # ObjectLiteralExpression - | '(' expressionSequence ')' # ParenthesizedExpression - ; - -assignable - : identifier - | arrayLiteral - | objectLiteral - ; - -objectLiteral - : '{' (propertyAssignment (',' propertyAssignment)* ','?)? '}' - ; - -anonymousFunction - : functionDeclaration # FunctionDecl - | Async? Function_ '*'? '(' formalParameterList? ')' functionBody # AnonymousFunctionDecl - | Async? arrowFunctionParameters '=>' arrowFunctionBody # ArrowFunction - ; - -arrowFunctionParameters - : identifier - | '(' formalParameterList? ')' - ; - -arrowFunctionBody - : singleExpression - | functionBody - ; - -assignmentOperator - : '*=' - | '/=' - | '%=' - | '+=' - | '-=' - | '<<=' - | '>>=' - | '>>>=' - | '&=' - | '^=' - | '|=' - | '**=' - ; - -literal - : NullLiteral - | BooleanLiteral - | StringLiteral - | templateStringLiteral - | RegularExpressionLiteral - | numericLiteral - | bigintLiteral - ; - -templateStringLiteral - : BackTick templateStringAtom* BackTick - ; - -templateStringAtom - : TemplateStringAtom - | TemplateStringStartExpression singleExpression TemplateCloseBrace - ; - -numericLiteral - : DecimalLiteral - | HexIntegerLiteral - | OctalIntegerLiteral - | OctalIntegerLiteral2 - | BinaryIntegerLiteral - ; - -bigintLiteral - : BigDecimalIntegerLiteral - | BigHexIntegerLiteral - | BigOctalIntegerLiteral - | BigBinaryIntegerLiteral - ; - -getter - : {this.n("get")}? identifier propertyName - ; - -setter - : {this.n("set")}? identifier propertyName - ; - -identifierName - : identifier - | reservedWord - ; - -identifier - : Identifier - | NonStrictLet - | Async - | As - | From // ??? - ; - -reservedWord - : keyword - | NullLiteral - | BooleanLiteral - ; - -keyword - : Break - | Do - | Instanceof - | Typeof - | Case - | Else - | New - | Var - | Catch - | Finally - | Return - | Void - | Continue - | For - | Switch - | While - | Debugger - | Function_ - | This - | With - | Default - | If - | Throw - | Delete - | In - | Try - - | Class - | Enum - | Extends - | Super - | Const - | Export - | Import - | Implements - | let_ - | Private - | Public - | Interface - | Package - | Protected - | Static - | Yield - | Async - | Await - | From - | As - ; - -let_ - : NonStrictLet - | StrictLet - ; - -eos - : SemiColon - | EOF - | {this.lineTerminatorAhead()}? - | {this.closeBrace()}? - ; - -// Not for parsing full file usage! -programOrAny - : program - | any+? - ; - -unknownInterval - : (sourceElement)+? - | EOF - ; - -any: .; \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/cpp/parser/highlighting/CppLexerHighlighting.java b/parser/src/main/java/org/sudu/experiments/parser/cpp/parser/highlighting/CppLexerHighlighting.java index 3f6b29a7f..96585a336 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/cpp/parser/highlighting/CppLexerHighlighting.java +++ b/parser/src/main/java/org/sudu/experiments/parser/cpp/parser/highlighting/CppLexerHighlighting.java @@ -1,84 +1,98 @@ -package org.sudu.experiments.parser.cpp.parser.highlighting; - -import org.antlr.v4.runtime.Token; -import org.sudu.experiments.parser.Utils; -import org.sudu.experiments.parser.cpp.gen.CPP14Lexer; - -import java.util.List; - -import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; - -public class CppLexerHighlighting { - - public static void highlightTokens(List allTokens, int[] tokenTypes, int[] tokenStyles) { - for (var token : allTokens) { - int ind = token.getTokenIndex(); - int type = token.getType(); - if (isKeyword(type)) tokenTypes[ind] = KEYWORD; - else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; - else if (isBooleanLiteral(type)) tokenTypes[ind] = BOOLEAN; - else if (isStringOrChar(type)) tokenTypes[ind] = STRING; - else if (isNull(type)) tokenTypes[ind] = NULL; - else if (isSemi(type)) tokenTypes[ind] = SEMI; - else if (isComment(token.getType())) tokenTypes[ind] = COMMENT; - else if (isDoc(token.getType())) tokenTypes[ind] = DOCUMENTATION; - else if (isDirective(token.getType())) tokenTypes[ind] = ANNOTATION; - else if (isOperator(token.getType())) tokenTypes[ind] = OPERATOR; - else if (isError(token.getType()) || token.getType() == -1) Utils.markError(tokenTypes, tokenStyles, ind); - } - } - - public static boolean isKeyword(int tokenType) { - return tokenType >= CPP14Lexer.Alignas - && tokenType <= CPP14Lexer.While; - } - - public static boolean isNumeric(int tokenType) { - return tokenType == CPP14Lexer.IntegerLiteral - || tokenType == CPP14Lexer.FloatingLiteral; - } - - public static boolean isBooleanLiteral(int tokenType) { - return tokenType == CPP14Lexer.BooleanLiteral; - } - - public static boolean isStringOrChar(int tokenType) { - return tokenType == CPP14Lexer.CharacterLiteral - || tokenType == CPP14Lexer.StringLiteral; - } - - public static boolean isNull(int tokenType) { - return tokenType == CPP14Lexer.PointerLiteral - || tokenType == CPP14Lexer.Nullptr; - } - - public static boolean isSemi(int tokenType) { - return tokenType == CPP14Lexer.Semi - || tokenType == CPP14Lexer.Comma; - } - - public static boolean isComment(int tokenType) { - return tokenType == CPP14Lexer.BlockComment - || tokenType == CPP14Lexer.LineComment; - } - public static boolean isDoc(int tokenType) { - return tokenType == CPP14Lexer.Documentation; - } - - public static boolean isDirective(int tokenType) { - return tokenType == CPP14Lexer.Directive - || tokenType == CPP14Lexer.MultiLineMacro; - } - - public static boolean isOperator(int tokenType) { - return tokenType == CPP14Lexer.LeftBracket - || tokenType == CPP14Lexer.RightBracket - || (tokenType >= CPP14Lexer.Plus - && tokenType <= CPP14Lexer.Ellipsis); - } - - public static boolean isError(int tokenType) { - return tokenType == CPP14Lexer.ERROR; - } - -} +package org.sudu.experiments.parser.cpp.parser.highlighting; + +import org.antlr.v4.runtime.Token; +import org.sudu.experiments.parser.Utils; +import org.sudu.experiments.parser.cpp.gen.CPP14Lexer; + +import java.util.List; + +import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; + +public class CppLexerHighlighting { + + public static void highlightTokens(List allTokens, int[] tokenTypes, int[] tokenStyles) { + for (var token : allTokens) { + int ind = token.getTokenIndex(); + int type = token.getType(); + if (isKeyword(type)) tokenTypes[ind] = KEYWORD; + else if (isControl(type)) tokenTypes[ind] = CONTROL; + else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; + else if (isBooleanLiteral(type)) tokenTypes[ind] = BOOLEAN; + else if (isStringOrChar(type)) tokenTypes[ind] = STRING; + else if (isNull(type)) tokenTypes[ind] = NULL; + else if (isSemi(type)) tokenTypes[ind] = SEMI; + else if (isComment(token.getType())) tokenTypes[ind] = COMMENT; + else if (isDoc(token.getType())) tokenTypes[ind] = DOCUMENTATION; + else if (isDirective(token.getType())) tokenTypes[ind] = ANNOTATION; + else if (isOperator(token.getType())) tokenTypes[ind] = OPERATOR; + else if (isError(token.getType()) || token.getType() == -1) Utils.markError(tokenTypes, tokenStyles, ind); + } + } + + public static boolean isKeyword(int tokenType) { + return tokenType >= CPP14Lexer.Alignas + && tokenType <= CPP14Lexer.While + && !isControl(tokenType); + } + + public static boolean isControl(int tokenType) { + return switch (tokenType) { + case CPP14Lexer.Return, CPP14Lexer.Break, + CPP14Lexer.Continue, CPP14Lexer.Goto, + CPP14Lexer.If, CPP14Lexer.Else, + CPP14Lexer.For, CPP14Lexer.Do, + CPP14Lexer.While, CPP14Lexer.Switch, + CPP14Lexer.Case, CPP14Lexer.Default -> true; + default -> false; + }; + } + + public static boolean isNumeric(int tokenType) { + return tokenType == CPP14Lexer.IntegerLiteral + || tokenType == CPP14Lexer.FloatingLiteral; + } + + public static boolean isBooleanLiteral(int tokenType) { + return tokenType == CPP14Lexer.BooleanLiteral; + } + + public static boolean isStringOrChar(int tokenType) { + return tokenType == CPP14Lexer.CharacterLiteral + || tokenType == CPP14Lexer.StringLiteral; + } + + public static boolean isNull(int tokenType) { + return tokenType == CPP14Lexer.PointerLiteral + || tokenType == CPP14Lexer.Nullptr; + } + + public static boolean isSemi(int tokenType) { + return tokenType == CPP14Lexer.Semi + || tokenType == CPP14Lexer.Comma; + } + + public static boolean isComment(int tokenType) { + return tokenType == CPP14Lexer.BlockComment + || tokenType == CPP14Lexer.LineComment; + } + public static boolean isDoc(int tokenType) { + return tokenType == CPP14Lexer.Documentation; + } + + public static boolean isDirective(int tokenType) { + return tokenType == CPP14Lexer.Directive + || tokenType == CPP14Lexer.MultiLineMacro; + } + + public static boolean isOperator(int tokenType) { + return tokenType == CPP14Lexer.LeftBracket + || tokenType == CPP14Lexer.RightBracket + || (tokenType >= CPP14Lexer.Plus + && tokenType <= CPP14Lexer.Ellipsis); + } + + public static boolean isError(int tokenType) { + return tokenType == CPP14Lexer.ERROR; + } + +} diff --git a/parser/src/main/java/org/sudu/experiments/parser/java/parser/highlighting/JavaLexerHighlighting.java b/parser/src/main/java/org/sudu/experiments/parser/java/parser/highlighting/JavaLexerHighlighting.java index 16911cba7..5c4ecb31d 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/java/parser/highlighting/JavaLexerHighlighting.java +++ b/parser/src/main/java/org/sudu/experiments/parser/java/parser/highlighting/JavaLexerHighlighting.java @@ -1,90 +1,105 @@ -package org.sudu.experiments.parser.java.parser.highlighting; - -import org.antlr.v4.runtime.Token; -import org.sudu.experiments.parser.Utils; -import org.sudu.experiments.parser.java.gen.JavaLexer; - -import java.util.List; - -import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; - -public class JavaLexerHighlighting { - - public static void highlightTokens(List allTokens, int[] tokenTypes, int[] tokenStyles) { - for (var token : allTokens) { - int ind = token.getTokenIndex(); - int type = token.getType(); - if (isKeyword(type)) tokenTypes[ind] = KEYWORD; - else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; - else if (isBooleanLiteral(type)) tokenTypes[ind] = BOOLEAN; - else if (isStringOrChar(type)) tokenTypes[ind] = STRING; - else if (isNull(type)) tokenTypes[ind] = NULL; - else if (isSemi(type)) tokenTypes[ind] = SEMI; - else if (isAT(type)) tokenTypes[ind] = ANNOTATION; - else if (isComment(token.getType())) tokenTypes[ind] = COMMENT; - else if (isJavadoc(token.getType())) tokenTypes[ind] = DOCUMENTATION; - else if (isError(token.getType()) || token.getType() == -1) Utils.markError(tokenTypes, tokenStyles, ind); - } - } - - public static void highlightCommentTokens(List allTokens, int[] tokenTypes, int[] tokenStyles) { - for (var token: allTokens) { - int ind = token.getTokenIndex(); - if (JavaLexerHighlighting.isComment(token.getType())) tokenTypes[ind] = COMMENT; - if (JavaLexerHighlighting.isJavadoc(token.getType())) tokenTypes[ind] = DOCUMENTATION; - if (isErrorToken(token.getType())) Utils.markError(tokenTypes, tokenStyles, ind); - } - } - - public static boolean isComment(int type) { - return type == JavaLexer.COMMENT - || type == JavaLexer.LINE_COMMENT; - } - - public static boolean isJavadoc(int type) { - return type == JavaLexer.JAVADOC; - } - - // Tokens from MODULE to VAR can be used as identifiers - public static boolean isKeyword(int type) { - return (type >= JavaLexer.ABSTRACT && type <= JavaLexer.WHILE) - || (type >= JavaLexer.YIELD && type <= JavaLexer.NON_SEALED); - } - - public static boolean isKeywordIdentifier(int type) { - return type >= JavaLexer.MODULE && type <= JavaLexer.VAR; - } - - public static boolean isNumeric(int type) { - return type >= JavaLexer.DECIMAL_LITERAL && type <= JavaLexer.HEX_FLOAT_LITERAL; - } - - public static boolean isBooleanLiteral(int type) { - return type == JavaLexer.BOOL_LITERAL; - } - - public static boolean isStringOrChar(int type) { - return type >= JavaLexer.CHAR_LITERAL && type <= JavaLexer.TEXT_BLOCK; - } - - public static boolean isNull(int type) { - return type == JavaLexer.NULL_LITERAL; - } - - public static boolean isSemi(int type) { - return type == JavaLexer.SEMI || type == JavaLexer.COMMA; - } - - public static boolean isAT(int type) { - return type == JavaLexer.AT; - } - - public static boolean isError(int type) { - return type == JavaLexer.ERROR; - } - - public static boolean isErrorToken(int type) { - return type == JavaLexer.ERROR; - } - -} +package org.sudu.experiments.parser.java.parser.highlighting; + +import org.antlr.v4.runtime.Token; +import org.sudu.experiments.parser.Utils; +import org.sudu.experiments.parser.java.gen.JavaLexer; + +import java.util.List; + +import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; + +public class JavaLexerHighlighting { + + public static void highlightTokens(List allTokens, int[] tokenTypes, int[] tokenStyles) { + for (var token : allTokens) { + int ind = token.getTokenIndex(); + int type = token.getType(); + if (isKeyword(type)) tokenTypes[ind] = KEYWORD; + else if (isControl(type)) tokenTypes[ind] = CONTROL; + else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; + else if (isBooleanLiteral(type)) tokenTypes[ind] = BOOLEAN; + else if (isStringOrChar(type)) tokenTypes[ind] = STRING; + else if (isNull(type)) tokenTypes[ind] = NULL; + else if (isSemi(type)) tokenTypes[ind] = SEMI; + else if (isAT(type)) tokenTypes[ind] = ANNOTATION; + else if (isComment(token.getType())) tokenTypes[ind] = COMMENT; + else if (isJavadoc(token.getType())) tokenTypes[ind] = DOCUMENTATION; + else if (isError(token.getType()) || token.getType() == -1) Utils.markError(tokenTypes, tokenStyles, ind); + } + } + + public static void highlightCommentTokens(List allTokens, int[] tokenTypes, int[] tokenStyles) { + for (var token: allTokens) { + int ind = token.getTokenIndex(); + if (JavaLexerHighlighting.isComment(token.getType())) tokenTypes[ind] = COMMENT; + if (JavaLexerHighlighting.isJavadoc(token.getType())) tokenTypes[ind] = DOCUMENTATION; + if (isErrorToken(token.getType())) Utils.markError(tokenTypes, tokenStyles, ind); + } + } + + public static boolean isComment(int type) { + return type == JavaLexer.COMMENT + || type == JavaLexer.LINE_COMMENT; + } + + public static boolean isJavadoc(int type) { + return type == JavaLexer.JAVADOC; + } + + // Tokens from MODULE to VAR can be used as identifiers + public static boolean isKeyword(int type) { + return ((type >= JavaLexer.ABSTRACT && type <= JavaLexer.WHILE) + || (type >= JavaLexer.YIELD && type <= JavaLexer.NON_SEALED)) + && !isControl(type); + } + + public static boolean isControl(int type) { + return switch (type) { + case JavaLexer.RETURN, JavaLexer.BREAK, + JavaLexer.CONTINUE, JavaLexer.GOTO, + JavaLexer.IF, JavaLexer.ELSE, + JavaLexer.FOR, JavaLexer.DO, + JavaLexer.WHILE, JavaLexer.SWITCH, + JavaLexer.CASE, JavaLexer.DEFAULT, + JavaLexer.YIELD -> true; + default -> false; + }; + } + + public static boolean isKeywordIdentifier(int type) { + return type >= JavaLexer.MODULE && type <= JavaLexer.VAR; + } + + public static boolean isNumeric(int type) { + return type >= JavaLexer.DECIMAL_LITERAL && type <= JavaLexer.HEX_FLOAT_LITERAL; + } + + public static boolean isBooleanLiteral(int type) { + return type == JavaLexer.BOOL_LITERAL; + } + + public static boolean isStringOrChar(int type) { + return type >= JavaLexer.CHAR_LITERAL && type <= JavaLexer.TEXT_BLOCK; + } + + public static boolean isNull(int type) { + return type == JavaLexer.NULL_LITERAL; + } + + public static boolean isSemi(int type) { + return type == JavaLexer.SEMI || type == JavaLexer.COMMA; + } + + public static boolean isAT(int type) { + return type == JavaLexer.AT; + } + + public static boolean isError(int type) { + return type == JavaLexer.ERROR; + } + + public static boolean isErrorToken(int type) { + return type == JavaLexer.ERROR; + } + +} diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/JsSplitRules.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/JsSplitRules.java index 059e7f376..a5ad82121 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/JsSplitRules.java +++ b/parser/src/main/java/org/sudu/experiments/parser/javascript/JsSplitRules.java @@ -3,9 +3,7 @@ import org.antlr.v4.runtime.Token; import org.sudu.experiments.parser.common.SplitRules; import org.sudu.experiments.parser.help.Helper; -import org.sudu.experiments.parser.javascript.gen.JavaScriptLexer; import org.sudu.experiments.parser.javascript.gen.LightJavaScriptLexer; -import org.sudu.experiments.parser.typescript.gen.LightTypeScriptLexer; import java.util.List; @@ -27,10 +25,10 @@ private boolean isStringLiteral(Token token) { private boolean isMultiline(Token token) { int type = token.getType(); - return type == JavaScriptLexer.MultiLineComment - || type == JavaScriptLexer.HtmlComment - || type == JavaScriptLexer.CDataComment - || type == JavaScriptLexer.StringLiteral; + return type == LightJavaScriptLexer.MultiLineComment + || type == LightJavaScriptLexer.HtmlComment + || type == LightJavaScriptLexer.CDataComment + || type == LightJavaScriptLexer.StringLiteral; } } diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.interp b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.interp deleted file mode 100644 index f47d59a68..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.interp +++ /dev/null @@ -1,426 +0,0 @@ -token literal names: -null -null -null -null -null -'[' -']' -'(' -')' -'{' -null -'}' -';' -',' -'=' -'?' -'?.' -':' -'...' -'.' -'++' -'--' -'+' -'-' -'~' -'!' -'*' -'/' -'%' -'**' -'??' -'#' -'>>' -'<<' -'>>>' -'<' -'>' -'<=' -'>=' -'==' -'!=' -'===' -'!==' -'&' -'^' -'|' -'&&' -'||' -'*=' -'/=' -'%=' -'+=' -'-=' -'<<=' -'>>=' -'>>>=' -'&=' -'^=' -'|=' -'**=' -'=>' -'null' -null -null -null -null -null -null -null -null -null -null -'break' -'do' -'instanceof' -'typeof' -'case' -'else' -'new' -'var' -'catch' -'finally' -'return' -'void' -'continue' -'for' -'switch' -'while' -'debugger' -'function' -'this' -'with' -'default' -'if' -'throw' -'delete' -'in' -'try' -'as' -'from' -'class' -'enum' -'extends' -'super' -'const' -'export' -'import' -'async' -'await' -'yield' -'implements' -null -null -'private' -'public' -'interface' -'package' -'protected' -'static' -null -null -null -null -null -null -null -null -'${' -null - -token symbolic names: -null -HashBangLine -MultiLineComment -SingleLineComment -RegularExpressionLiteral -OpenBracket -CloseBracket -OpenParen -CloseParen -OpenBrace -TemplateCloseBrace -CloseBrace -SemiColon -Comma -Assign -QuestionMark -QuestionMarkDot -Colon -Ellipsis -Dot -PlusPlus -MinusMinus -Plus -Minus -BitNot -Not -Multiply -Divide -Modulus -Power -NullCoalesce -Hashtag -RightShiftArithmetic -LeftShiftArithmetic -RightShiftLogical -LessThan -MoreThan -LessThanEquals -GreaterThanEquals -Equals_ -NotEquals -IdentityEquals -IdentityNotEquals -BitAnd -BitXOr -BitOr -And -Or -MultiplyAssign -DivideAssign -ModulusAssign -PlusAssign -MinusAssign -LeftShiftArithmeticAssign -RightShiftArithmeticAssign -RightShiftLogicalAssign -BitAndAssign -BitXorAssign -BitOrAssign -PowerAssign -ARROW -NullLiteral -BooleanLiteral -DecimalLiteral -HexIntegerLiteral -OctalIntegerLiteral -OctalIntegerLiteral2 -BinaryIntegerLiteral -BigHexIntegerLiteral -BigOctalIntegerLiteral -BigBinaryIntegerLiteral -BigDecimalIntegerLiteral -Break -Do -Instanceof -Typeof -Case -Else -New -Var -Catch -Finally -Return -Void -Continue -For -Switch -While -Debugger -Function_ -This -With -Default -If -Throw -Delete -In -Try -As -From -Class -Enum -Extends -Super -Const -Export -Import -Async -Await -Yield -Implements -StrictLet -NonStrictLet -Private -Public -Interface -Package -Protected -Static -Identifier -StringLiteral -BackTick -WhiteSpaces -LineTerminator -HtmlComment -CDataComment -UnexpectedCharacter -TemplateStringStartExpression -TemplateStringAtom - -rule names: -HashBangLine -MultiLineComment -SingleLineComment -RegularExpressionLiteral -OpenBracket -CloseBracket -OpenParen -CloseParen -OpenBrace -TemplateCloseBrace -CloseBrace -SemiColon -Comma -Assign -QuestionMark -QuestionMarkDot -Colon -Ellipsis -Dot -PlusPlus -MinusMinus -Plus -Minus -BitNot -Not -Multiply -Divide -Modulus -Power -NullCoalesce -Hashtag -RightShiftArithmetic -LeftShiftArithmetic -RightShiftLogical -LessThan -MoreThan -LessThanEquals -GreaterThanEquals -Equals_ -NotEquals -IdentityEquals -IdentityNotEquals -BitAnd -BitXOr -BitOr -And -Or -MultiplyAssign -DivideAssign -ModulusAssign -PlusAssign -MinusAssign -LeftShiftArithmeticAssign -RightShiftArithmeticAssign -RightShiftLogicalAssign -BitAndAssign -BitXorAssign -BitOrAssign -PowerAssign -ARROW -NullLiteral -BooleanLiteral -DecimalLiteral -HexIntegerLiteral -OctalIntegerLiteral -OctalIntegerLiteral2 -BinaryIntegerLiteral -BigHexIntegerLiteral -BigOctalIntegerLiteral -BigBinaryIntegerLiteral -BigDecimalIntegerLiteral -Break -Do -Instanceof -Typeof -Case -Else -New -Var -Catch -Finally -Return -Void -Continue -For -Switch -While -Debugger -Function_ -This -With -Default -If -Throw -Delete -In -Try -As -From -Class -Enum -Extends -Super -Const -Export -Import -Async -Await -Yield -Implements -StrictLet -NonStrictLet -Private -Public -Interface -Package -Protected -Static -Identifier -StringLiteral -BackTick -WhiteSpaces -LineTerminator -HtmlComment -CDataComment -UnexpectedCharacter -BackTickInside -TemplateStringStartExpression -TemplateStringAtom -DoubleStringCharacter -SingleStringCharacter -EscapeSequence -CharacterEscapeSequence -HexEscapeSequence -UnicodeEscapeSequence -ExtendedUnicodeEscapeSequence -SingleEscapeCharacter -NonEscapeCharacter -EscapeCharacter -LineContinuation -HexDigit -DecimalIntegerLiteral -ExponentPart -IdentifierPart -IdentifierStart -RegularExpressionFirstChar -RegularExpressionChar -RegularExpressionClassChar -RegularExpressionBackslashSequence - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN -null -null -ERROR - -mode names: -DEFAULT_MODE -TEMPLATE - -atn: -[4, 0, 128, 1162, 6, -1, 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, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 306, 8, 0, 10, 0, 12, 0, 309, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 315, 8, 1, 10, 1, 12, 1, 318, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 329, 8, 2, 10, 2, 12, 2, 332, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 339, 8, 3, 10, 3, 12, 3, 342, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 347, 8, 3, 10, 3, 12, 3, 350, 9, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 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, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 522, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 528, 8, 62, 10, 62, 12, 62, 531, 9, 62, 1, 62, 3, 62, 534, 8, 62, 1, 62, 1, 62, 1, 62, 5, 62, 539, 8, 62, 10, 62, 12, 62, 542, 9, 62, 1, 62, 3, 62, 545, 8, 62, 1, 62, 1, 62, 3, 62, 549, 8, 62, 3, 62, 551, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 557, 8, 63, 10, 63, 12, 63, 560, 9, 63, 1, 64, 1, 64, 4, 64, 564, 8, 64, 11, 64, 12, 64, 565, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 574, 8, 65, 10, 65, 12, 65, 577, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 583, 8, 66, 10, 66, 12, 66, 586, 9, 66, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 592, 8, 67, 10, 67, 12, 67, 595, 9, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 603, 8, 68, 10, 68, 12, 68, 606, 9, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 614, 8, 69, 10, 69, 12, 69, 617, 9, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 5, 118, 940, 8, 118, 10, 118, 12, 118, 943, 9, 118, 1, 119, 1, 119, 5, 119, 947, 8, 119, 10, 119, 12, 119, 950, 9, 119, 1, 119, 1, 119, 1, 119, 5, 119, 955, 8, 119, 10, 119, 12, 119, 958, 9, 119, 1, 119, 3, 119, 961, 8, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 4, 121, 971, 8, 121, 11, 121, 12, 121, 972, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 987, 8, 123, 10, 123, 12, 123, 990, 9, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1009, 8, 124, 10, 124, 12, 124, 1012, 9, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1041, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1047, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1054, 8, 131, 1, 132, 1, 132, 3, 132, 1058, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 4, 134, 1074, 8, 134, 11, 134, 12, 134, 1075, 1, 134, 1, 134, 3, 134, 1080, 8, 134, 1, 135, 1, 135, 1, 135, 4, 135, 1085, 8, 135, 11, 135, 12, 135, 1086, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 1097, 8, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 5, 141, 1107, 8, 141, 10, 141, 12, 141, 1110, 9, 141, 3, 141, 1112, 8, 141, 1, 142, 1, 142, 3, 142, 1116, 8, 142, 1, 142, 4, 142, 1119, 8, 142, 11, 142, 12, 142, 1120, 1, 143, 1, 143, 3, 143, 1125, 8, 143, 1, 144, 1, 144, 1, 144, 3, 144, 1130, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 5, 145, 1136, 8, 145, 10, 145, 12, 145, 1139, 9, 145, 1, 145, 3, 145, 1142, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 1148, 8, 146, 10, 146, 12, 146, 1151, 9, 146, 1, 146, 3, 146, 1154, 8, 146, 1, 147, 1, 147, 3, 147, 1158, 8, 147, 1, 148, 1, 148, 1, 148, 3, 316, 988, 1010, 0, 149, 2, 1, 4, 2, 6, 3, 8, 4, 10, 5, 12, 6, 14, 7, 16, 8, 18, 9, 20, 10, 22, 11, 24, 12, 26, 13, 28, 14, 30, 15, 32, 16, 34, 17, 36, 18, 38, 19, 40, 20, 42, 21, 44, 22, 46, 23, 48, 24, 50, 25, 52, 26, 54, 27, 56, 28, 58, 29, 60, 30, 62, 31, 64, 32, 66, 33, 68, 34, 70, 35, 72, 36, 74, 37, 76, 38, 78, 39, 80, 40, 82, 41, 84, 42, 86, 43, 88, 44, 90, 45, 92, 46, 94, 47, 96, 48, 98, 49, 100, 50, 102, 51, 104, 52, 106, 53, 108, 54, 110, 55, 112, 56, 114, 57, 116, 58, 118, 59, 120, 60, 122, 61, 124, 62, 126, 63, 128, 64, 130, 65, 132, 66, 134, 67, 136, 68, 138, 69, 140, 70, 142, 71, 144, 72, 146, 73, 148, 74, 150, 75, 152, 76, 154, 77, 156, 78, 158, 79, 160, 80, 162, 81, 164, 82, 166, 83, 168, 84, 170, 85, 172, 86, 174, 87, 176, 88, 178, 89, 180, 90, 182, 91, 184, 92, 186, 93, 188, 94, 190, 95, 192, 96, 194, 97, 196, 98, 198, 99, 200, 100, 202, 101, 204, 102, 206, 103, 208, 104, 210, 105, 212, 106, 214, 107, 216, 108, 218, 109, 220, 110, 222, 111, 224, 112, 226, 113, 228, 114, 230, 115, 232, 116, 234, 117, 236, 118, 238, 119, 240, 120, 242, 121, 244, 122, 246, 123, 248, 124, 250, 125, 252, 126, 254, 0, 256, 127, 258, 128, 260, 0, 262, 0, 264, 0, 266, 0, 268, 0, 270, 0, 272, 0, 274, 0, 276, 0, 278, 0, 280, 0, 282, 0, 284, 0, 286, 0, 288, 0, 290, 0, 292, 0, 294, 0, 296, 0, 298, 0, 2, 0, 1, 27, 3, 0, 10, 10, 13, 13, 8232, 8233, 1, 0, 48, 57, 2, 0, 48, 57, 95, 95, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 55, 2, 0, 79, 79, 111, 111, 2, 0, 48, 55, 95, 95, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 48, 49, 95, 95, 4, 0, 9, 9, 11, 12, 32, 32, 160, 160, 1, 0, 96, 96, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 9, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 12, 0, 10, 10, 13, 13, 34, 34, 39, 39, 48, 57, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 118, 120, 120, 3, 0, 48, 57, 117, 117, 120, 120, 4, 0, 48, 57, 65, 70, 95, 95, 97, 102, 1, 0, 49, 57, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 408, 0, 48, 57, 95, 95, 768, 879, 1155, 1159, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1552, 1562, 1611, 1641, 1648, 1648, 1750, 1756, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785, 1809, 1809, 1840, 1866, 1958, 1968, 1984, 1993, 2027, 2035, 2045, 2045, 2070, 2073, 2075, 2083, 2085, 2087, 2089, 2093, 2137, 2139, 2200, 2207, 2250, 2273, 2275, 2306, 2362, 2362, 2364, 2364, 2369, 2376, 2381, 2381, 2385, 2391, 2402, 2403, 2406, 2415, 2433, 2433, 2492, 2492, 2497, 2500, 2509, 2509, 2530, 2531, 2534, 2543, 2558, 2558, 2561, 2562, 2620, 2620, 2625, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2662, 2673, 2677, 2677, 2689, 2690, 2748, 2748, 2753, 2757, 2759, 2760, 2765, 2765, 2786, 2787, 2790, 2799, 2810, 2815, 2817, 2817, 2876, 2876, 2879, 2879, 2881, 2884, 2893, 2893, 2901, 2902, 2914, 2915, 2918, 2927, 2946, 2946, 3008, 3008, 3021, 3021, 3046, 3055, 3072, 3072, 3076, 3076, 3132, 3132, 3134, 3136, 3142, 3144, 3146, 3149, 3157, 3158, 3170, 3171, 3174, 3183, 3201, 3201, 3260, 3260, 3263, 3263, 3270, 3270, 3276, 3277, 3298, 3299, 3302, 3311, 3328, 3329, 3387, 3388, 3393, 3396, 3405, 3405, 3426, 3427, 3430, 3439, 3457, 3457, 3530, 3530, 3538, 3540, 3542, 3542, 3558, 3567, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, 3761, 3761, 3764, 3772, 3784, 3790, 3792, 3801, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3953, 3966, 3968, 3972, 3974, 3975, 3981, 3991, 3993, 4028, 4038, 4038, 4141, 4144, 4146, 4151, 4153, 4154, 4157, 4158, 4160, 4169, 4184, 4185, 4190, 4192, 4209, 4212, 4226, 4226, 4229, 4230, 4237, 4237, 4240, 4249, 4253, 4253, 4957, 4959, 5906, 5908, 5938, 5939, 5970, 5971, 6002, 6003, 6068, 6069, 6071, 6077, 6086, 6086, 6089, 6099, 6109, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6277, 6278, 6313, 6313, 6432, 6434, 6439, 6440, 6450, 6450, 6457, 6459, 6470, 6479, 6608, 6617, 6679, 6680, 6683, 6683, 6742, 6742, 6744, 6750, 6752, 6752, 6754, 6754, 6757, 6764, 6771, 6780, 6783, 6793, 6800, 6809, 6832, 6845, 6847, 6862, 6912, 6915, 6964, 6964, 6966, 6970, 6972, 6972, 6978, 6978, 6992, 7001, 7019, 7027, 7040, 7041, 7074, 7077, 7080, 7081, 7083, 7085, 7088, 7097, 7142, 7142, 7144, 7145, 7149, 7149, 7151, 7153, 7212, 7219, 7222, 7223, 7232, 7241, 7248, 7257, 7376, 7378, 7380, 7392, 7394, 7400, 7405, 7405, 7412, 7412, 7416, 7417, 7616, 7679, 8204, 8205, 8255, 8256, 8276, 8276, 8400, 8412, 8417, 8417, 8421, 8432, 11503, 11505, 11647, 11647, 11744, 11775, 12330, 12333, 12441, 12442, 42528, 42537, 42607, 42607, 42612, 42621, 42654, 42655, 42736, 42737, 43010, 43010, 43014, 43014, 43019, 43019, 43045, 43046, 43052, 43052, 43204, 43205, 43216, 43225, 43232, 43249, 43263, 43273, 43302, 43309, 43335, 43345, 43392, 43394, 43443, 43443, 43446, 43449, 43452, 43453, 43472, 43481, 43493, 43493, 43504, 43513, 43561, 43566, 43569, 43570, 43573, 43574, 43587, 43587, 43596, 43596, 43600, 43609, 43644, 43644, 43696, 43696, 43698, 43700, 43703, 43704, 43710, 43711, 43713, 43713, 43756, 43757, 43766, 43766, 44005, 44005, 44008, 44008, 44013, 44013, 44016, 44025, 64286, 64286, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65296, 65305, 65343, 65343, 66045, 66045, 66272, 66272, 66422, 66426, 66720, 66729, 68097, 68099, 68101, 68102, 68108, 68111, 68152, 68154, 68159, 68159, 68325, 68326, 68900, 68903, 68912, 68921, 69291, 69292, 69373, 69375, 69446, 69456, 69506, 69509, 69633, 69633, 69688, 69702, 69734, 69744, 69747, 69748, 69759, 69761, 69811, 69814, 69817, 69818, 69826, 69826, 69872, 69881, 69888, 69890, 69927, 69931, 69933, 69940, 69942, 69951, 70003, 70003, 70016, 70017, 70070, 70078, 70089, 70092, 70095, 70105, 70191, 70193, 70196, 70196, 70198, 70199, 70206, 70206, 70209, 70209, 70367, 70367, 70371, 70378, 70384, 70393, 70400, 70401, 70459, 70460, 70464, 70464, 70502, 70508, 70512, 70516, 70712, 70719, 70722, 70724, 70726, 70726, 70736, 70745, 70750, 70750, 70835, 70840, 70842, 70842, 70847, 70848, 70850, 70851, 70864, 70873, 71090, 71093, 71100, 71101, 71103, 71104, 71132, 71133, 71219, 71226, 71229, 71229, 71231, 71232, 71248, 71257, 71339, 71339, 71341, 71341, 71344, 71349, 71351, 71351, 71360, 71369, 71453, 71455, 71458, 71461, 71463, 71467, 71472, 71481, 71727, 71735, 71737, 71738, 71904, 71913, 71995, 71996, 71998, 71998, 72003, 72003, 72016, 72025, 72148, 72151, 72154, 72155, 72160, 72160, 72193, 72202, 72243, 72248, 72251, 72254, 72263, 72263, 72273, 72278, 72281, 72283, 72330, 72342, 72344, 72345, 72752, 72758, 72760, 72765, 72767, 72767, 72784, 72793, 72850, 72871, 72874, 72880, 72882, 72883, 72885, 72886, 73009, 73014, 73018, 73018, 73020, 73021, 73023, 73029, 73031, 73031, 73040, 73049, 73104, 73105, 73109, 73109, 73111, 73111, 73120, 73129, 73459, 73460, 73472, 73473, 73526, 73530, 73536, 73536, 73538, 73538, 73552, 73561, 78912, 78912, 78919, 78933, 92768, 92777, 92864, 92873, 92912, 92916, 92976, 92982, 93008, 93017, 94031, 94031, 94095, 94098, 94180, 94180, 113821, 113822, 118528, 118573, 118576, 118598, 119143, 119145, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 123023, 123023, 123184, 123190, 123200, 123209, 123566, 123566, 123628, 123641, 124140, 124153, 125136, 125142, 125252, 125258, 125264, 125273, 130032, 130041, 917760, 917999, 661, 0, 36, 36, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5873, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6276, 6279, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8579, 8580, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12294, 12337, 12341, 12347, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42725, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66368, 66370, 66377, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 6, 0, 10, 10, 13, 13, 42, 42, 47, 47, 91, 92, 8232, 8233, 5, 0, 10, 10, 13, 13, 47, 47, 91, 92, 8232, 8233, 4, 0, 10, 10, 13, 13, 92, 93, 8232, 8233, 1193, 0, 2, 1, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 88, 1, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 94, 1, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 98, 1, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 104, 1, 0, 0, 0, 0, 106, 1, 0, 0, 0, 0, 108, 1, 0, 0, 0, 0, 110, 1, 0, 0, 0, 0, 112, 1, 0, 0, 0, 0, 114, 1, 0, 0, 0, 0, 116, 1, 0, 0, 0, 0, 118, 1, 0, 0, 0, 0, 120, 1, 0, 0, 0, 0, 122, 1, 0, 0, 0, 0, 124, 1, 0, 0, 0, 0, 126, 1, 0, 0, 0, 0, 128, 1, 0, 0, 0, 0, 130, 1, 0, 0, 0, 0, 132, 1, 0, 0, 0, 0, 134, 1, 0, 0, 0, 0, 136, 1, 0, 0, 0, 0, 138, 1, 0, 0, 0, 0, 140, 1, 0, 0, 0, 0, 142, 1, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 146, 1, 0, 0, 0, 0, 148, 1, 0, 0, 0, 0, 150, 1, 0, 0, 0, 0, 152, 1, 0, 0, 0, 0, 154, 1, 0, 0, 0, 0, 156, 1, 0, 0, 0, 0, 158, 1, 0, 0, 0, 0, 160, 1, 0, 0, 0, 0, 162, 1, 0, 0, 0, 0, 164, 1, 0, 0, 0, 0, 166, 1, 0, 0, 0, 0, 168, 1, 0, 0, 0, 0, 170, 1, 0, 0, 0, 0, 172, 1, 0, 0, 0, 0, 174, 1, 0, 0, 0, 0, 176, 1, 0, 0, 0, 0, 178, 1, 0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 182, 1, 0, 0, 0, 0, 184, 1, 0, 0, 0, 0, 186, 1, 0, 0, 0, 0, 188, 1, 0, 0, 0, 0, 190, 1, 0, 0, 0, 0, 192, 1, 0, 0, 0, 0, 194, 1, 0, 0, 0, 0, 196, 1, 0, 0, 0, 0, 198, 1, 0, 0, 0, 0, 200, 1, 0, 0, 0, 0, 202, 1, 0, 0, 0, 0, 204, 1, 0, 0, 0, 0, 206, 1, 0, 0, 0, 0, 208, 1, 0, 0, 0, 0, 210, 1, 0, 0, 0, 0, 212, 1, 0, 0, 0, 0, 214, 1, 0, 0, 0, 0, 216, 1, 0, 0, 0, 0, 218, 1, 0, 0, 0, 0, 220, 1, 0, 0, 0, 0, 222, 1, 0, 0, 0, 0, 224, 1, 0, 0, 0, 0, 226, 1, 0, 0, 0, 0, 228, 1, 0, 0, 0, 0, 230, 1, 0, 0, 0, 0, 232, 1, 0, 0, 0, 0, 234, 1, 0, 0, 0, 0, 236, 1, 0, 0, 0, 0, 238, 1, 0, 0, 0, 0, 240, 1, 0, 0, 0, 0, 242, 1, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 246, 1, 0, 0, 0, 0, 248, 1, 0, 0, 0, 0, 250, 1, 0, 0, 0, 0, 252, 1, 0, 0, 0, 1, 254, 1, 0, 0, 0, 1, 256, 1, 0, 0, 0, 1, 258, 1, 0, 0, 0, 2, 300, 1, 0, 0, 0, 4, 310, 1, 0, 0, 0, 6, 324, 1, 0, 0, 0, 8, 335, 1, 0, 0, 0, 10, 351, 1, 0, 0, 0, 12, 353, 1, 0, 0, 0, 14, 355, 1, 0, 0, 0, 16, 357, 1, 0, 0, 0, 18, 359, 1, 0, 0, 0, 20, 362, 1, 0, 0, 0, 22, 367, 1, 0, 0, 0, 24, 370, 1, 0, 0, 0, 26, 372, 1, 0, 0, 0, 28, 374, 1, 0, 0, 0, 30, 376, 1, 0, 0, 0, 32, 378, 1, 0, 0, 0, 34, 381, 1, 0, 0, 0, 36, 383, 1, 0, 0, 0, 38, 387, 1, 0, 0, 0, 40, 389, 1, 0, 0, 0, 42, 392, 1, 0, 0, 0, 44, 395, 1, 0, 0, 0, 46, 397, 1, 0, 0, 0, 48, 399, 1, 0, 0, 0, 50, 401, 1, 0, 0, 0, 52, 403, 1, 0, 0, 0, 54, 405, 1, 0, 0, 0, 56, 407, 1, 0, 0, 0, 58, 409, 1, 0, 0, 0, 60, 412, 1, 0, 0, 0, 62, 415, 1, 0, 0, 0, 64, 417, 1, 0, 0, 0, 66, 420, 1, 0, 0, 0, 68, 423, 1, 0, 0, 0, 70, 427, 1, 0, 0, 0, 72, 429, 1, 0, 0, 0, 74, 431, 1, 0, 0, 0, 76, 434, 1, 0, 0, 0, 78, 437, 1, 0, 0, 0, 80, 440, 1, 0, 0, 0, 82, 443, 1, 0, 0, 0, 84, 447, 1, 0, 0, 0, 86, 451, 1, 0, 0, 0, 88, 453, 1, 0, 0, 0, 90, 455, 1, 0, 0, 0, 92, 457, 1, 0, 0, 0, 94, 460, 1, 0, 0, 0, 96, 463, 1, 0, 0, 0, 98, 466, 1, 0, 0, 0, 100, 469, 1, 0, 0, 0, 102, 472, 1, 0, 0, 0, 104, 475, 1, 0, 0, 0, 106, 478, 1, 0, 0, 0, 108, 482, 1, 0, 0, 0, 110, 486, 1, 0, 0, 0, 112, 491, 1, 0, 0, 0, 114, 494, 1, 0, 0, 0, 116, 497, 1, 0, 0, 0, 118, 500, 1, 0, 0, 0, 120, 504, 1, 0, 0, 0, 122, 507, 1, 0, 0, 0, 124, 521, 1, 0, 0, 0, 126, 550, 1, 0, 0, 0, 128, 552, 1, 0, 0, 0, 130, 561, 1, 0, 0, 0, 132, 569, 1, 0, 0, 0, 134, 578, 1, 0, 0, 0, 136, 587, 1, 0, 0, 0, 138, 598, 1, 0, 0, 0, 140, 609, 1, 0, 0, 0, 142, 620, 1, 0, 0, 0, 144, 623, 1, 0, 0, 0, 146, 629, 1, 0, 0, 0, 148, 632, 1, 0, 0, 0, 150, 643, 1, 0, 0, 0, 152, 650, 1, 0, 0, 0, 154, 655, 1, 0, 0, 0, 156, 660, 1, 0, 0, 0, 158, 664, 1, 0, 0, 0, 160, 668, 1, 0, 0, 0, 162, 674, 1, 0, 0, 0, 164, 682, 1, 0, 0, 0, 166, 689, 1, 0, 0, 0, 168, 694, 1, 0, 0, 0, 170, 703, 1, 0, 0, 0, 172, 707, 1, 0, 0, 0, 174, 714, 1, 0, 0, 0, 176, 720, 1, 0, 0, 0, 178, 729, 1, 0, 0, 0, 180, 738, 1, 0, 0, 0, 182, 743, 1, 0, 0, 0, 184, 748, 1, 0, 0, 0, 186, 756, 1, 0, 0, 0, 188, 759, 1, 0, 0, 0, 190, 765, 1, 0, 0, 0, 192, 772, 1, 0, 0, 0, 194, 775, 1, 0, 0, 0, 196, 779, 1, 0, 0, 0, 198, 782, 1, 0, 0, 0, 200, 787, 1, 0, 0, 0, 202, 793, 1, 0, 0, 0, 204, 798, 1, 0, 0, 0, 206, 806, 1, 0, 0, 0, 208, 812, 1, 0, 0, 0, 210, 818, 1, 0, 0, 0, 212, 825, 1, 0, 0, 0, 214, 832, 1, 0, 0, 0, 216, 838, 1, 0, 0, 0, 218, 844, 1, 0, 0, 0, 220, 850, 1, 0, 0, 0, 222, 863, 1, 0, 0, 0, 224, 869, 1, 0, 0, 0, 226, 875, 1, 0, 0, 0, 228, 885, 1, 0, 0, 0, 230, 894, 1, 0, 0, 0, 232, 906, 1, 0, 0, 0, 234, 916, 1, 0, 0, 0, 236, 928, 1, 0, 0, 0, 238, 937, 1, 0, 0, 0, 240, 960, 1, 0, 0, 0, 242, 964, 1, 0, 0, 0, 244, 970, 1, 0, 0, 0, 246, 976, 1, 0, 0, 0, 248, 980, 1, 0, 0, 0, 250, 997, 1, 0, 0, 0, 252, 1019, 1, 0, 0, 0, 254, 1023, 1, 0, 0, 0, 256, 1029, 1, 0, 0, 0, 258, 1034, 1, 0, 0, 0, 260, 1040, 1, 0, 0, 0, 262, 1046, 1, 0, 0, 0, 264, 1053, 1, 0, 0, 0, 266, 1057, 1, 0, 0, 0, 268, 1059, 1, 0, 0, 0, 270, 1079, 1, 0, 0, 0, 272, 1081, 1, 0, 0, 0, 274, 1090, 1, 0, 0, 0, 276, 1092, 1, 0, 0, 0, 278, 1096, 1, 0, 0, 0, 280, 1098, 1, 0, 0, 0, 282, 1101, 1, 0, 0, 0, 284, 1111, 1, 0, 0, 0, 286, 1113, 1, 0, 0, 0, 288, 1124, 1, 0, 0, 0, 290, 1129, 1, 0, 0, 0, 292, 1141, 1, 0, 0, 0, 294, 1153, 1, 0, 0, 0, 296, 1157, 1, 0, 0, 0, 298, 1159, 1, 0, 0, 0, 300, 301, 4, 0, 0, 0, 301, 302, 5, 35, 0, 0, 302, 303, 5, 33, 0, 0, 303, 307, 1, 0, 0, 0, 304, 306, 8, 0, 0, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 3, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 311, 5, 47, 0, 0, 311, 312, 5, 42, 0, 0, 312, 316, 1, 0, 0, 0, 313, 315, 9, 0, 0, 0, 314, 313, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 319, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 320, 5, 42, 0, 0, 320, 321, 5, 47, 0, 0, 321, 322, 1, 0, 0, 0, 322, 323, 6, 1, 0, 0, 323, 5, 1, 0, 0, 0, 324, 325, 5, 47, 0, 0, 325, 326, 5, 47, 0, 0, 326, 330, 1, 0, 0, 0, 327, 329, 8, 0, 0, 0, 328, 327, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 333, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 334, 6, 2, 0, 0, 334, 7, 1, 0, 0, 0, 335, 336, 5, 47, 0, 0, 336, 340, 3, 292, 145, 0, 337, 339, 3, 294, 146, 0, 338, 337, 1, 0, 0, 0, 339, 342, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 343, 344, 4, 3, 1, 0, 344, 348, 5, 47, 0, 0, 345, 347, 3, 288, 143, 0, 346, 345, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 9, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 352, 5, 91, 0, 0, 352, 11, 1, 0, 0, 0, 353, 354, 5, 93, 0, 0, 354, 13, 1, 0, 0, 0, 355, 356, 5, 40, 0, 0, 356, 15, 1, 0, 0, 0, 357, 358, 5, 41, 0, 0, 358, 17, 1, 0, 0, 0, 359, 360, 5, 123, 0, 0, 360, 361, 6, 8, 1, 0, 361, 19, 1, 0, 0, 0, 362, 363, 4, 9, 2, 0, 363, 364, 5, 125, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 6, 9, 2, 0, 366, 21, 1, 0, 0, 0, 367, 368, 5, 125, 0, 0, 368, 369, 6, 10, 3, 0, 369, 23, 1, 0, 0, 0, 370, 371, 5, 59, 0, 0, 371, 25, 1, 0, 0, 0, 372, 373, 5, 44, 0, 0, 373, 27, 1, 0, 0, 0, 374, 375, 5, 61, 0, 0, 375, 29, 1, 0, 0, 0, 376, 377, 5, 63, 0, 0, 377, 31, 1, 0, 0, 0, 378, 379, 5, 63, 0, 0, 379, 380, 5, 46, 0, 0, 380, 33, 1, 0, 0, 0, 381, 382, 5, 58, 0, 0, 382, 35, 1, 0, 0, 0, 383, 384, 5, 46, 0, 0, 384, 385, 5, 46, 0, 0, 385, 386, 5, 46, 0, 0, 386, 37, 1, 0, 0, 0, 387, 388, 5, 46, 0, 0, 388, 39, 1, 0, 0, 0, 389, 390, 5, 43, 0, 0, 390, 391, 5, 43, 0, 0, 391, 41, 1, 0, 0, 0, 392, 393, 5, 45, 0, 0, 393, 394, 5, 45, 0, 0, 394, 43, 1, 0, 0, 0, 395, 396, 5, 43, 0, 0, 396, 45, 1, 0, 0, 0, 397, 398, 5, 45, 0, 0, 398, 47, 1, 0, 0, 0, 399, 400, 5, 126, 0, 0, 400, 49, 1, 0, 0, 0, 401, 402, 5, 33, 0, 0, 402, 51, 1, 0, 0, 0, 403, 404, 5, 42, 0, 0, 404, 53, 1, 0, 0, 0, 405, 406, 5, 47, 0, 0, 406, 55, 1, 0, 0, 0, 407, 408, 5, 37, 0, 0, 408, 57, 1, 0, 0, 0, 409, 410, 5, 42, 0, 0, 410, 411, 5, 42, 0, 0, 411, 59, 1, 0, 0, 0, 412, 413, 5, 63, 0, 0, 413, 414, 5, 63, 0, 0, 414, 61, 1, 0, 0, 0, 415, 416, 5, 35, 0, 0, 416, 63, 1, 0, 0, 0, 417, 418, 5, 62, 0, 0, 418, 419, 5, 62, 0, 0, 419, 65, 1, 0, 0, 0, 420, 421, 5, 60, 0, 0, 421, 422, 5, 60, 0, 0, 422, 67, 1, 0, 0, 0, 423, 424, 5, 62, 0, 0, 424, 425, 5, 62, 0, 0, 425, 426, 5, 62, 0, 0, 426, 69, 1, 0, 0, 0, 427, 428, 5, 60, 0, 0, 428, 71, 1, 0, 0, 0, 429, 430, 5, 62, 0, 0, 430, 73, 1, 0, 0, 0, 431, 432, 5, 60, 0, 0, 432, 433, 5, 61, 0, 0, 433, 75, 1, 0, 0, 0, 434, 435, 5, 62, 0, 0, 435, 436, 5, 61, 0, 0, 436, 77, 1, 0, 0, 0, 437, 438, 5, 61, 0, 0, 438, 439, 5, 61, 0, 0, 439, 79, 1, 0, 0, 0, 440, 441, 5, 33, 0, 0, 441, 442, 5, 61, 0, 0, 442, 81, 1, 0, 0, 0, 443, 444, 5, 61, 0, 0, 444, 445, 5, 61, 0, 0, 445, 446, 5, 61, 0, 0, 446, 83, 1, 0, 0, 0, 447, 448, 5, 33, 0, 0, 448, 449, 5, 61, 0, 0, 449, 450, 5, 61, 0, 0, 450, 85, 1, 0, 0, 0, 451, 452, 5, 38, 0, 0, 452, 87, 1, 0, 0, 0, 453, 454, 5, 94, 0, 0, 454, 89, 1, 0, 0, 0, 455, 456, 5, 124, 0, 0, 456, 91, 1, 0, 0, 0, 457, 458, 5, 38, 0, 0, 458, 459, 5, 38, 0, 0, 459, 93, 1, 0, 0, 0, 460, 461, 5, 124, 0, 0, 461, 462, 5, 124, 0, 0, 462, 95, 1, 0, 0, 0, 463, 464, 5, 42, 0, 0, 464, 465, 5, 61, 0, 0, 465, 97, 1, 0, 0, 0, 466, 467, 5, 47, 0, 0, 467, 468, 5, 61, 0, 0, 468, 99, 1, 0, 0, 0, 469, 470, 5, 37, 0, 0, 470, 471, 5, 61, 0, 0, 471, 101, 1, 0, 0, 0, 472, 473, 5, 43, 0, 0, 473, 474, 5, 61, 0, 0, 474, 103, 1, 0, 0, 0, 475, 476, 5, 45, 0, 0, 476, 477, 5, 61, 0, 0, 477, 105, 1, 0, 0, 0, 478, 479, 5, 60, 0, 0, 479, 480, 5, 60, 0, 0, 480, 481, 5, 61, 0, 0, 481, 107, 1, 0, 0, 0, 482, 483, 5, 62, 0, 0, 483, 484, 5, 62, 0, 0, 484, 485, 5, 61, 0, 0, 485, 109, 1, 0, 0, 0, 486, 487, 5, 62, 0, 0, 487, 488, 5, 62, 0, 0, 488, 489, 5, 62, 0, 0, 489, 490, 5, 61, 0, 0, 490, 111, 1, 0, 0, 0, 491, 492, 5, 38, 0, 0, 492, 493, 5, 61, 0, 0, 493, 113, 1, 0, 0, 0, 494, 495, 5, 94, 0, 0, 495, 496, 5, 61, 0, 0, 496, 115, 1, 0, 0, 0, 497, 498, 5, 124, 0, 0, 498, 499, 5, 61, 0, 0, 499, 117, 1, 0, 0, 0, 500, 501, 5, 42, 0, 0, 501, 502, 5, 42, 0, 0, 502, 503, 5, 61, 0, 0, 503, 119, 1, 0, 0, 0, 504, 505, 5, 61, 0, 0, 505, 506, 5, 62, 0, 0, 506, 121, 1, 0, 0, 0, 507, 508, 5, 110, 0, 0, 508, 509, 5, 117, 0, 0, 509, 510, 5, 108, 0, 0, 510, 511, 5, 108, 0, 0, 511, 123, 1, 0, 0, 0, 512, 513, 5, 116, 0, 0, 513, 514, 5, 114, 0, 0, 514, 515, 5, 117, 0, 0, 515, 522, 5, 101, 0, 0, 516, 517, 5, 102, 0, 0, 517, 518, 5, 97, 0, 0, 518, 519, 5, 108, 0, 0, 519, 520, 5, 115, 0, 0, 520, 522, 5, 101, 0, 0, 521, 512, 1, 0, 0, 0, 521, 516, 1, 0, 0, 0, 522, 125, 1, 0, 0, 0, 523, 524, 3, 284, 141, 0, 524, 525, 5, 46, 0, 0, 525, 529, 7, 1, 0, 0, 526, 528, 7, 2, 0, 0, 527, 526, 1, 0, 0, 0, 528, 531, 1, 0, 0, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 533, 1, 0, 0, 0, 531, 529, 1, 0, 0, 0, 532, 534, 3, 286, 142, 0, 533, 532, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 551, 1, 0, 0, 0, 535, 536, 5, 46, 0, 0, 536, 540, 7, 1, 0, 0, 537, 539, 7, 2, 0, 0, 538, 537, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 3, 286, 142, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 551, 1, 0, 0, 0, 546, 548, 3, 284, 141, 0, 547, 549, 3, 286, 142, 0, 548, 547, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 551, 1, 0, 0, 0, 550, 523, 1, 0, 0, 0, 550, 535, 1, 0, 0, 0, 550, 546, 1, 0, 0, 0, 551, 127, 1, 0, 0, 0, 552, 553, 5, 48, 0, 0, 553, 554, 7, 3, 0, 0, 554, 558, 7, 4, 0, 0, 555, 557, 3, 282, 140, 0, 556, 555, 1, 0, 0, 0, 557, 560, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 129, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 561, 563, 5, 48, 0, 0, 562, 564, 7, 5, 0, 0, 563, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 568, 4, 64, 3, 0, 568, 131, 1, 0, 0, 0, 569, 570, 5, 48, 0, 0, 570, 571, 7, 6, 0, 0, 571, 575, 7, 5, 0, 0, 572, 574, 7, 7, 0, 0, 573, 572, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 133, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 578, 579, 5, 48, 0, 0, 579, 580, 7, 8, 0, 0, 580, 584, 7, 9, 0, 0, 581, 583, 7, 10, 0, 0, 582, 581, 1, 0, 0, 0, 583, 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 135, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 587, 588, 5, 48, 0, 0, 588, 589, 7, 3, 0, 0, 589, 593, 7, 4, 0, 0, 590, 592, 3, 282, 140, 0, 591, 590, 1, 0, 0, 0, 592, 595, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 596, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 596, 597, 5, 110, 0, 0, 597, 137, 1, 0, 0, 0, 598, 599, 5, 48, 0, 0, 599, 600, 7, 6, 0, 0, 600, 604, 7, 5, 0, 0, 601, 603, 7, 7, 0, 0, 602, 601, 1, 0, 0, 0, 603, 606, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 607, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 607, 608, 5, 110, 0, 0, 608, 139, 1, 0, 0, 0, 609, 610, 5, 48, 0, 0, 610, 611, 7, 8, 0, 0, 611, 615, 7, 9, 0, 0, 612, 614, 7, 10, 0, 0, 613, 612, 1, 0, 0, 0, 614, 617, 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 618, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 618, 619, 5, 110, 0, 0, 619, 141, 1, 0, 0, 0, 620, 621, 3, 284, 141, 0, 621, 622, 5, 110, 0, 0, 622, 143, 1, 0, 0, 0, 623, 624, 5, 98, 0, 0, 624, 625, 5, 114, 0, 0, 625, 626, 5, 101, 0, 0, 626, 627, 5, 97, 0, 0, 627, 628, 5, 107, 0, 0, 628, 145, 1, 0, 0, 0, 629, 630, 5, 100, 0, 0, 630, 631, 5, 111, 0, 0, 631, 147, 1, 0, 0, 0, 632, 633, 5, 105, 0, 0, 633, 634, 5, 110, 0, 0, 634, 635, 5, 115, 0, 0, 635, 636, 5, 116, 0, 0, 636, 637, 5, 97, 0, 0, 637, 638, 5, 110, 0, 0, 638, 639, 5, 99, 0, 0, 639, 640, 5, 101, 0, 0, 640, 641, 5, 111, 0, 0, 641, 642, 5, 102, 0, 0, 642, 149, 1, 0, 0, 0, 643, 644, 5, 116, 0, 0, 644, 645, 5, 121, 0, 0, 645, 646, 5, 112, 0, 0, 646, 647, 5, 101, 0, 0, 647, 648, 5, 111, 0, 0, 648, 649, 5, 102, 0, 0, 649, 151, 1, 0, 0, 0, 650, 651, 5, 99, 0, 0, 651, 652, 5, 97, 0, 0, 652, 653, 5, 115, 0, 0, 653, 654, 5, 101, 0, 0, 654, 153, 1, 0, 0, 0, 655, 656, 5, 101, 0, 0, 656, 657, 5, 108, 0, 0, 657, 658, 5, 115, 0, 0, 658, 659, 5, 101, 0, 0, 659, 155, 1, 0, 0, 0, 660, 661, 5, 110, 0, 0, 661, 662, 5, 101, 0, 0, 662, 663, 5, 119, 0, 0, 663, 157, 1, 0, 0, 0, 664, 665, 5, 118, 0, 0, 665, 666, 5, 97, 0, 0, 666, 667, 5, 114, 0, 0, 667, 159, 1, 0, 0, 0, 668, 669, 5, 99, 0, 0, 669, 670, 5, 97, 0, 0, 670, 671, 5, 116, 0, 0, 671, 672, 5, 99, 0, 0, 672, 673, 5, 104, 0, 0, 673, 161, 1, 0, 0, 0, 674, 675, 5, 102, 0, 0, 675, 676, 5, 105, 0, 0, 676, 677, 5, 110, 0, 0, 677, 678, 5, 97, 0, 0, 678, 679, 5, 108, 0, 0, 679, 680, 5, 108, 0, 0, 680, 681, 5, 121, 0, 0, 681, 163, 1, 0, 0, 0, 682, 683, 5, 114, 0, 0, 683, 684, 5, 101, 0, 0, 684, 685, 5, 116, 0, 0, 685, 686, 5, 117, 0, 0, 686, 687, 5, 114, 0, 0, 687, 688, 5, 110, 0, 0, 688, 165, 1, 0, 0, 0, 689, 690, 5, 118, 0, 0, 690, 691, 5, 111, 0, 0, 691, 692, 5, 105, 0, 0, 692, 693, 5, 100, 0, 0, 693, 167, 1, 0, 0, 0, 694, 695, 5, 99, 0, 0, 695, 696, 5, 111, 0, 0, 696, 697, 5, 110, 0, 0, 697, 698, 5, 116, 0, 0, 698, 699, 5, 105, 0, 0, 699, 700, 5, 110, 0, 0, 700, 701, 5, 117, 0, 0, 701, 702, 5, 101, 0, 0, 702, 169, 1, 0, 0, 0, 703, 704, 5, 102, 0, 0, 704, 705, 5, 111, 0, 0, 705, 706, 5, 114, 0, 0, 706, 171, 1, 0, 0, 0, 707, 708, 5, 115, 0, 0, 708, 709, 5, 119, 0, 0, 709, 710, 5, 105, 0, 0, 710, 711, 5, 116, 0, 0, 711, 712, 5, 99, 0, 0, 712, 713, 5, 104, 0, 0, 713, 173, 1, 0, 0, 0, 714, 715, 5, 119, 0, 0, 715, 716, 5, 104, 0, 0, 716, 717, 5, 105, 0, 0, 717, 718, 5, 108, 0, 0, 718, 719, 5, 101, 0, 0, 719, 175, 1, 0, 0, 0, 720, 721, 5, 100, 0, 0, 721, 722, 5, 101, 0, 0, 722, 723, 5, 98, 0, 0, 723, 724, 5, 117, 0, 0, 724, 725, 5, 103, 0, 0, 725, 726, 5, 103, 0, 0, 726, 727, 5, 101, 0, 0, 727, 728, 5, 114, 0, 0, 728, 177, 1, 0, 0, 0, 729, 730, 5, 102, 0, 0, 730, 731, 5, 117, 0, 0, 731, 732, 5, 110, 0, 0, 732, 733, 5, 99, 0, 0, 733, 734, 5, 116, 0, 0, 734, 735, 5, 105, 0, 0, 735, 736, 5, 111, 0, 0, 736, 737, 5, 110, 0, 0, 737, 179, 1, 0, 0, 0, 738, 739, 5, 116, 0, 0, 739, 740, 5, 104, 0, 0, 740, 741, 5, 105, 0, 0, 741, 742, 5, 115, 0, 0, 742, 181, 1, 0, 0, 0, 743, 744, 5, 119, 0, 0, 744, 745, 5, 105, 0, 0, 745, 746, 5, 116, 0, 0, 746, 747, 5, 104, 0, 0, 747, 183, 1, 0, 0, 0, 748, 749, 5, 100, 0, 0, 749, 750, 5, 101, 0, 0, 750, 751, 5, 102, 0, 0, 751, 752, 5, 97, 0, 0, 752, 753, 5, 117, 0, 0, 753, 754, 5, 108, 0, 0, 754, 755, 5, 116, 0, 0, 755, 185, 1, 0, 0, 0, 756, 757, 5, 105, 0, 0, 757, 758, 5, 102, 0, 0, 758, 187, 1, 0, 0, 0, 759, 760, 5, 116, 0, 0, 760, 761, 5, 104, 0, 0, 761, 762, 5, 114, 0, 0, 762, 763, 5, 111, 0, 0, 763, 764, 5, 119, 0, 0, 764, 189, 1, 0, 0, 0, 765, 766, 5, 100, 0, 0, 766, 767, 5, 101, 0, 0, 767, 768, 5, 108, 0, 0, 768, 769, 5, 101, 0, 0, 769, 770, 5, 116, 0, 0, 770, 771, 5, 101, 0, 0, 771, 191, 1, 0, 0, 0, 772, 773, 5, 105, 0, 0, 773, 774, 5, 110, 0, 0, 774, 193, 1, 0, 0, 0, 775, 776, 5, 116, 0, 0, 776, 777, 5, 114, 0, 0, 777, 778, 5, 121, 0, 0, 778, 195, 1, 0, 0, 0, 779, 780, 5, 97, 0, 0, 780, 781, 5, 115, 0, 0, 781, 197, 1, 0, 0, 0, 782, 783, 5, 102, 0, 0, 783, 784, 5, 114, 0, 0, 784, 785, 5, 111, 0, 0, 785, 786, 5, 109, 0, 0, 786, 199, 1, 0, 0, 0, 787, 788, 5, 99, 0, 0, 788, 789, 5, 108, 0, 0, 789, 790, 5, 97, 0, 0, 790, 791, 5, 115, 0, 0, 791, 792, 5, 115, 0, 0, 792, 201, 1, 0, 0, 0, 793, 794, 5, 101, 0, 0, 794, 795, 5, 110, 0, 0, 795, 796, 5, 117, 0, 0, 796, 797, 5, 109, 0, 0, 797, 203, 1, 0, 0, 0, 798, 799, 5, 101, 0, 0, 799, 800, 5, 120, 0, 0, 800, 801, 5, 116, 0, 0, 801, 802, 5, 101, 0, 0, 802, 803, 5, 110, 0, 0, 803, 804, 5, 100, 0, 0, 804, 805, 5, 115, 0, 0, 805, 205, 1, 0, 0, 0, 806, 807, 5, 115, 0, 0, 807, 808, 5, 117, 0, 0, 808, 809, 5, 112, 0, 0, 809, 810, 5, 101, 0, 0, 810, 811, 5, 114, 0, 0, 811, 207, 1, 0, 0, 0, 812, 813, 5, 99, 0, 0, 813, 814, 5, 111, 0, 0, 814, 815, 5, 110, 0, 0, 815, 816, 5, 115, 0, 0, 816, 817, 5, 116, 0, 0, 817, 209, 1, 0, 0, 0, 818, 819, 5, 101, 0, 0, 819, 820, 5, 120, 0, 0, 820, 821, 5, 112, 0, 0, 821, 822, 5, 111, 0, 0, 822, 823, 5, 114, 0, 0, 823, 824, 5, 116, 0, 0, 824, 211, 1, 0, 0, 0, 825, 826, 5, 105, 0, 0, 826, 827, 5, 109, 0, 0, 827, 828, 5, 112, 0, 0, 828, 829, 5, 111, 0, 0, 829, 830, 5, 114, 0, 0, 830, 831, 5, 116, 0, 0, 831, 213, 1, 0, 0, 0, 832, 833, 5, 97, 0, 0, 833, 834, 5, 115, 0, 0, 834, 835, 5, 121, 0, 0, 835, 836, 5, 110, 0, 0, 836, 837, 5, 99, 0, 0, 837, 215, 1, 0, 0, 0, 838, 839, 5, 97, 0, 0, 839, 840, 5, 119, 0, 0, 840, 841, 5, 97, 0, 0, 841, 842, 5, 105, 0, 0, 842, 843, 5, 116, 0, 0, 843, 217, 1, 0, 0, 0, 844, 845, 5, 121, 0, 0, 845, 846, 5, 105, 0, 0, 846, 847, 5, 101, 0, 0, 847, 848, 5, 108, 0, 0, 848, 849, 5, 100, 0, 0, 849, 219, 1, 0, 0, 0, 850, 851, 5, 105, 0, 0, 851, 852, 5, 109, 0, 0, 852, 853, 5, 112, 0, 0, 853, 854, 5, 108, 0, 0, 854, 855, 5, 101, 0, 0, 855, 856, 5, 109, 0, 0, 856, 857, 5, 101, 0, 0, 857, 858, 5, 110, 0, 0, 858, 859, 5, 116, 0, 0, 859, 860, 5, 115, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 4, 109, 4, 0, 862, 221, 1, 0, 0, 0, 863, 864, 5, 108, 0, 0, 864, 865, 5, 101, 0, 0, 865, 866, 5, 116, 0, 0, 866, 867, 1, 0, 0, 0, 867, 868, 4, 110, 5, 0, 868, 223, 1, 0, 0, 0, 869, 870, 5, 108, 0, 0, 870, 871, 5, 101, 0, 0, 871, 872, 5, 116, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 4, 111, 6, 0, 874, 225, 1, 0, 0, 0, 875, 876, 5, 112, 0, 0, 876, 877, 5, 114, 0, 0, 877, 878, 5, 105, 0, 0, 878, 879, 5, 118, 0, 0, 879, 880, 5, 97, 0, 0, 880, 881, 5, 116, 0, 0, 881, 882, 5, 101, 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 4, 112, 7, 0, 884, 227, 1, 0, 0, 0, 885, 886, 5, 112, 0, 0, 886, 887, 5, 117, 0, 0, 887, 888, 5, 98, 0, 0, 888, 889, 5, 108, 0, 0, 889, 890, 5, 105, 0, 0, 890, 891, 5, 99, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 4, 113, 8, 0, 893, 229, 1, 0, 0, 0, 894, 895, 5, 105, 0, 0, 895, 896, 5, 110, 0, 0, 896, 897, 5, 116, 0, 0, 897, 898, 5, 101, 0, 0, 898, 899, 5, 114, 0, 0, 899, 900, 5, 102, 0, 0, 900, 901, 5, 97, 0, 0, 901, 902, 5, 99, 0, 0, 902, 903, 5, 101, 0, 0, 903, 904, 1, 0, 0, 0, 904, 905, 4, 114, 9, 0, 905, 231, 1, 0, 0, 0, 906, 907, 5, 112, 0, 0, 907, 908, 5, 97, 0, 0, 908, 909, 5, 99, 0, 0, 909, 910, 5, 107, 0, 0, 910, 911, 5, 97, 0, 0, 911, 912, 5, 103, 0, 0, 912, 913, 5, 101, 0, 0, 913, 914, 1, 0, 0, 0, 914, 915, 4, 115, 10, 0, 915, 233, 1, 0, 0, 0, 916, 917, 5, 112, 0, 0, 917, 918, 5, 114, 0, 0, 918, 919, 5, 111, 0, 0, 919, 920, 5, 116, 0, 0, 920, 921, 5, 101, 0, 0, 921, 922, 5, 99, 0, 0, 922, 923, 5, 116, 0, 0, 923, 924, 5, 101, 0, 0, 924, 925, 5, 100, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 4, 116, 11, 0, 927, 235, 1, 0, 0, 0, 928, 929, 5, 115, 0, 0, 929, 930, 5, 116, 0, 0, 930, 931, 5, 97, 0, 0, 931, 932, 5, 116, 0, 0, 932, 933, 5, 105, 0, 0, 933, 934, 5, 99, 0, 0, 934, 935, 1, 0, 0, 0, 935, 936, 4, 117, 12, 0, 936, 237, 1, 0, 0, 0, 937, 941, 3, 290, 144, 0, 938, 940, 3, 288, 143, 0, 939, 938, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 239, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 948, 5, 34, 0, 0, 945, 947, 3, 260, 129, 0, 946, 945, 1, 0, 0, 0, 947, 950, 1, 0, 0, 0, 948, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 951, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 951, 961, 5, 34, 0, 0, 952, 956, 5, 39, 0, 0, 953, 955, 3, 262, 130, 0, 954, 953, 1, 0, 0, 0, 955, 958, 1, 0, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 959, 961, 5, 39, 0, 0, 960, 944, 1, 0, 0, 0, 960, 952, 1, 0, 0, 0, 961, 962, 1, 0, 0, 0, 962, 963, 6, 119, 4, 0, 963, 241, 1, 0, 0, 0, 964, 965, 5, 96, 0, 0, 965, 966, 6, 120, 5, 0, 966, 967, 1, 0, 0, 0, 967, 968, 6, 120, 6, 0, 968, 243, 1, 0, 0, 0, 969, 971, 7, 11, 0, 0, 970, 969, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 975, 6, 121, 0, 0, 975, 245, 1, 0, 0, 0, 976, 977, 7, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 979, 6, 122, 0, 0, 979, 247, 1, 0, 0, 0, 980, 981, 5, 60, 0, 0, 981, 982, 5, 33, 0, 0, 982, 983, 5, 45, 0, 0, 983, 984, 5, 45, 0, 0, 984, 988, 1, 0, 0, 0, 985, 987, 9, 0, 0, 0, 986, 985, 1, 0, 0, 0, 987, 990, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 988, 986, 1, 0, 0, 0, 989, 991, 1, 0, 0, 0, 990, 988, 1, 0, 0, 0, 991, 992, 5, 45, 0, 0, 992, 993, 5, 45, 0, 0, 993, 994, 5, 62, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 6, 123, 0, 0, 996, 249, 1, 0, 0, 0, 997, 998, 5, 60, 0, 0, 998, 999, 5, 33, 0, 0, 999, 1000, 5, 91, 0, 0, 1000, 1001, 5, 67, 0, 0, 1001, 1002, 5, 68, 0, 0, 1002, 1003, 5, 65, 0, 0, 1003, 1004, 5, 84, 0, 0, 1004, 1005, 5, 65, 0, 0, 1005, 1006, 5, 91, 0, 0, 1006, 1010, 1, 0, 0, 0, 1007, 1009, 9, 0, 0, 0, 1008, 1007, 1, 0, 0, 0, 1009, 1012, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1010, 1008, 1, 0, 0, 0, 1011, 1013, 1, 0, 0, 0, 1012, 1010, 1, 0, 0, 0, 1013, 1014, 5, 93, 0, 0, 1014, 1015, 5, 93, 0, 0, 1015, 1016, 5, 62, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1018, 6, 124, 0, 0, 1018, 251, 1, 0, 0, 0, 1019, 1020, 9, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1022, 6, 125, 7, 0, 1022, 253, 1, 0, 0, 0, 1023, 1024, 5, 96, 0, 0, 1024, 1025, 6, 126, 8, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1027, 6, 126, 9, 0, 1027, 1028, 6, 126, 2, 0, 1028, 255, 1, 0, 0, 0, 1029, 1030, 5, 36, 0, 0, 1030, 1031, 5, 123, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 6, 127, 10, 0, 1033, 257, 1, 0, 0, 0, 1034, 1035, 8, 12, 0, 0, 1035, 259, 1, 0, 0, 0, 1036, 1041, 8, 13, 0, 0, 1037, 1038, 5, 92, 0, 0, 1038, 1041, 3, 264, 131, 0, 1039, 1041, 3, 280, 139, 0, 1040, 1036, 1, 0, 0, 0, 1040, 1037, 1, 0, 0, 0, 1040, 1039, 1, 0, 0, 0, 1041, 261, 1, 0, 0, 0, 1042, 1047, 8, 14, 0, 0, 1043, 1044, 5, 92, 0, 0, 1044, 1047, 3, 264, 131, 0, 1045, 1047, 3, 280, 139, 0, 1046, 1042, 1, 0, 0, 0, 1046, 1043, 1, 0, 0, 0, 1046, 1045, 1, 0, 0, 0, 1047, 263, 1, 0, 0, 0, 1048, 1054, 3, 266, 132, 0, 1049, 1054, 5, 48, 0, 0, 1050, 1054, 3, 268, 133, 0, 1051, 1054, 3, 270, 134, 0, 1052, 1054, 3, 272, 135, 0, 1053, 1048, 1, 0, 0, 0, 1053, 1049, 1, 0, 0, 0, 1053, 1050, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1052, 1, 0, 0, 0, 1054, 265, 1, 0, 0, 0, 1055, 1058, 3, 274, 136, 0, 1056, 1058, 3, 276, 137, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1056, 1, 0, 0, 0, 1058, 267, 1, 0, 0, 0, 1059, 1060, 5, 120, 0, 0, 1060, 1061, 3, 282, 140, 0, 1061, 1062, 3, 282, 140, 0, 1062, 269, 1, 0, 0, 0, 1063, 1064, 5, 117, 0, 0, 1064, 1065, 3, 282, 140, 0, 1065, 1066, 3, 282, 140, 0, 1066, 1067, 3, 282, 140, 0, 1067, 1068, 3, 282, 140, 0, 1068, 1080, 1, 0, 0, 0, 1069, 1070, 5, 117, 0, 0, 1070, 1071, 5, 123, 0, 0, 1071, 1073, 3, 282, 140, 0, 1072, 1074, 3, 282, 140, 0, 1073, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1073, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 5, 125, 0, 0, 1078, 1080, 1, 0, 0, 0, 1079, 1063, 1, 0, 0, 0, 1079, 1069, 1, 0, 0, 0, 1080, 271, 1, 0, 0, 0, 1081, 1082, 5, 117, 0, 0, 1082, 1084, 5, 123, 0, 0, 1083, 1085, 3, 282, 140, 0, 1084, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 125, 0, 0, 1089, 273, 1, 0, 0, 0, 1090, 1091, 7, 15, 0, 0, 1091, 275, 1, 0, 0, 0, 1092, 1093, 8, 16, 0, 0, 1093, 277, 1, 0, 0, 0, 1094, 1097, 3, 274, 136, 0, 1095, 1097, 7, 17, 0, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1095, 1, 0, 0, 0, 1097, 279, 1, 0, 0, 0, 1098, 1099, 5, 92, 0, 0, 1099, 1100, 7, 0, 0, 0, 1100, 281, 1, 0, 0, 0, 1101, 1102, 7, 18, 0, 0, 1102, 283, 1, 0, 0, 0, 1103, 1112, 5, 48, 0, 0, 1104, 1108, 7, 19, 0, 0, 1105, 1107, 7, 2, 0, 0, 1106, 1105, 1, 0, 0, 0, 1107, 1110, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1112, 1, 0, 0, 0, 1110, 1108, 1, 0, 0, 0, 1111, 1103, 1, 0, 0, 0, 1111, 1104, 1, 0, 0, 0, 1112, 285, 1, 0, 0, 0, 1113, 1115, 7, 20, 0, 0, 1114, 1116, 7, 21, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1118, 1, 0, 0, 0, 1117, 1119, 7, 2, 0, 0, 1118, 1117, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 287, 1, 0, 0, 0, 1122, 1125, 3, 290, 144, 0, 1123, 1125, 7, 22, 0, 0, 1124, 1122, 1, 0, 0, 0, 1124, 1123, 1, 0, 0, 0, 1125, 289, 1, 0, 0, 0, 1126, 1130, 7, 23, 0, 0, 1127, 1128, 5, 92, 0, 0, 1128, 1130, 3, 270, 134, 0, 1129, 1126, 1, 0, 0, 0, 1129, 1127, 1, 0, 0, 0, 1130, 291, 1, 0, 0, 0, 1131, 1142, 8, 24, 0, 0, 1132, 1142, 3, 298, 148, 0, 1133, 1137, 5, 91, 0, 0, 1134, 1136, 3, 296, 147, 0, 1135, 1134, 1, 0, 0, 0, 1136, 1139, 1, 0, 0, 0, 1137, 1135, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1140, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 1142, 5, 93, 0, 0, 1141, 1131, 1, 0, 0, 0, 1141, 1132, 1, 0, 0, 0, 1141, 1133, 1, 0, 0, 0, 1142, 293, 1, 0, 0, 0, 1143, 1154, 8, 25, 0, 0, 1144, 1154, 3, 298, 148, 0, 1145, 1149, 5, 91, 0, 0, 1146, 1148, 3, 296, 147, 0, 1147, 1146, 1, 0, 0, 0, 1148, 1151, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1152, 1, 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1152, 1154, 5, 93, 0, 0, 1153, 1143, 1, 0, 0, 0, 1153, 1144, 1, 0, 0, 0, 1153, 1145, 1, 0, 0, 0, 1154, 295, 1, 0, 0, 0, 1155, 1158, 8, 26, 0, 0, 1156, 1158, 3, 298, 148, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1156, 1, 0, 0, 0, 1158, 297, 1, 0, 0, 0, 1159, 1160, 5, 92, 0, 0, 1160, 1161, 8, 0, 0, 0, 1161, 299, 1, 0, 0, 0, 47, 0, 1, 307, 316, 330, 340, 348, 521, 529, 533, 540, 544, 548, 550, 558, 565, 575, 584, 593, 604, 615, 941, 948, 956, 960, 972, 988, 1010, 1040, 1046, 1053, 1057, 1075, 1079, 1086, 1096, 1108, 1111, 1115, 1120, 1124, 1129, 1137, 1141, 1149, 1153, 1157, 11, 0, 1, 0, 1, 8, 0, 4, 0, 0, 1, 10, 1, 1, 119, 2, 1, 120, 3, 5, 1, 0, 0, 2, 0, 1, 126, 4, 7, 121, 0, 5, 0, 0] \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.java deleted file mode 100644 index 07ed7f8cc..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.java +++ /dev/null @@ -1,1393 +0,0 @@ -// Generated from parser-generator/src/main/resources/grammar/javascript/JavaScriptLexer.g4 by ANTLR 4.13.1 -package org.sudu.experiments.parser.javascript.gen; -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class JavaScriptLexer extends JavaScriptLexerBase { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - HashBangLine=1, MultiLineComment=2, SingleLineComment=3, RegularExpressionLiteral=4, - OpenBracket=5, CloseBracket=6, OpenParen=7, CloseParen=8, OpenBrace=9, - TemplateCloseBrace=10, CloseBrace=11, SemiColon=12, Comma=13, Assign=14, - QuestionMark=15, QuestionMarkDot=16, Colon=17, Ellipsis=18, Dot=19, PlusPlus=20, - MinusMinus=21, Plus=22, Minus=23, BitNot=24, Not=25, Multiply=26, Divide=27, - Modulus=28, Power=29, NullCoalesce=30, Hashtag=31, RightShiftArithmetic=32, - LeftShiftArithmetic=33, RightShiftLogical=34, LessThan=35, MoreThan=36, - LessThanEquals=37, GreaterThanEquals=38, Equals_=39, NotEquals=40, IdentityEquals=41, - IdentityNotEquals=42, BitAnd=43, BitXOr=44, BitOr=45, And=46, Or=47, MultiplyAssign=48, - DivideAssign=49, ModulusAssign=50, PlusAssign=51, MinusAssign=52, LeftShiftArithmeticAssign=53, - RightShiftArithmeticAssign=54, RightShiftLogicalAssign=55, BitAndAssign=56, - BitXorAssign=57, BitOrAssign=58, PowerAssign=59, ARROW=60, NullLiteral=61, - BooleanLiteral=62, DecimalLiteral=63, HexIntegerLiteral=64, OctalIntegerLiteral=65, - OctalIntegerLiteral2=66, BinaryIntegerLiteral=67, BigHexIntegerLiteral=68, - BigOctalIntegerLiteral=69, BigBinaryIntegerLiteral=70, BigDecimalIntegerLiteral=71, - Break=72, Do=73, Instanceof=74, Typeof=75, Case=76, Else=77, New=78, Var=79, - Catch=80, Finally=81, Return=82, Void=83, Continue=84, For=85, Switch=86, - While=87, Debugger=88, Function_=89, This=90, With=91, Default=92, If=93, - Throw=94, Delete=95, In=96, Try=97, As=98, From=99, Class=100, Enum=101, - Extends=102, Super=103, Const=104, Export=105, Import=106, Async=107, - Await=108, Yield=109, Implements=110, StrictLet=111, NonStrictLet=112, - Private=113, Public=114, Interface=115, Package=116, Protected=117, Static=118, - Identifier=119, StringLiteral=120, BackTick=121, WhiteSpaces=122, LineTerminator=123, - HtmlComment=124, CDataComment=125, UnexpectedCharacter=126, TemplateStringStartExpression=127, - TemplateStringAtom=128; - public static final int - ERROR=2; - public static final int - TEMPLATE=1; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "ERROR" - }; - - public static String[] modeNames = { - "DEFAULT_MODE", "TEMPLATE" - }; - - private static String[] makeRuleNames() { - return new String[] { - "HashBangLine", "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", - "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", - "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", - "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", - "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", - "NullCoalesce", "Hashtag", "RightShiftArithmetic", "LeftShiftArithmetic", - "RightShiftLogical", "LessThan", "MoreThan", "LessThanEquals", "GreaterThanEquals", - "Equals_", "NotEquals", "IdentityEquals", "IdentityNotEquals", "BitAnd", - "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", "DivideAssign", "ModulusAssign", - "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", "RightShiftArithmeticAssign", - "RightShiftLogicalAssign", "BitAndAssign", "BitXorAssign", "BitOrAssign", - "PowerAssign", "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", - "HexIntegerLiteral", "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", - "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", - "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", - "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", - "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", - "If", "Throw", "Delete", "In", "Try", "As", "From", "Class", "Enum", - "Extends", "Super", "Const", "Export", "Import", "Async", "Await", "Yield", - "Implements", "StrictLet", "NonStrictLet", "Private", "Public", "Interface", - "Package", "Protected", "Static", "Identifier", "StringLiteral", "BackTick", - "WhiteSpaces", "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", - "BackTickInside", "TemplateStringStartExpression", "TemplateStringAtom", - "DoubleStringCharacter", "SingleStringCharacter", "EscapeSequence", "CharacterEscapeSequence", - "HexEscapeSequence", "UnicodeEscapeSequence", "ExtendedUnicodeEscapeSequence", - "SingleEscapeCharacter", "NonEscapeCharacter", "EscapeCharacter", "LineContinuation", - "HexDigit", "DecimalIntegerLiteral", "ExponentPart", "IdentifierPart", - "IdentifierStart", "RegularExpressionFirstChar", "RegularExpressionChar", - "RegularExpressionClassChar", "RegularExpressionBackslashSequence" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, null, null, null, null, "'['", "']'", "'('", "')'", "'{'", null, - "'}'", "';'", "','", "'='", "'?'", "'?.'", "':'", "'...'", "'.'", "'++'", - "'--'", "'+'", "'-'", "'~'", "'!'", "'*'", "'/'", "'%'", "'**'", "'??'", - "'#'", "'>>'", "'<<'", "'>>>'", "'<'", "'>'", "'<='", "'>='", "'=='", - "'!='", "'==='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", "'*='", - "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='", "'>>>='", "'&='", "'^='", - "'|='", "'**='", "'=>'", "'null'", null, null, null, null, null, null, - null, null, null, null, "'break'", "'do'", "'instanceof'", "'typeof'", - "'case'", "'else'", "'new'", "'var'", "'catch'", "'finally'", "'return'", - "'void'", "'continue'", "'for'", "'switch'", "'while'", "'debugger'", - "'function'", "'this'", "'with'", "'default'", "'if'", "'throw'", "'delete'", - "'in'", "'try'", "'as'", "'from'", "'class'", "'enum'", "'extends'", - "'super'", "'const'", "'export'", "'import'", "'async'", "'await'", "'yield'", - "'implements'", null, null, "'private'", "'public'", "'interface'", "'package'", - "'protected'", "'static'", null, null, null, null, null, null, null, - null, "'${'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "HashBangLine", "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", - "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", - "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", - "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", - "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", - "NullCoalesce", "Hashtag", "RightShiftArithmetic", "LeftShiftArithmetic", - "RightShiftLogical", "LessThan", "MoreThan", "LessThanEquals", "GreaterThanEquals", - "Equals_", "NotEquals", "IdentityEquals", "IdentityNotEquals", "BitAnd", - "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", "DivideAssign", "ModulusAssign", - "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", "RightShiftArithmeticAssign", - "RightShiftLogicalAssign", "BitAndAssign", "BitXorAssign", "BitOrAssign", - "PowerAssign", "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", - "HexIntegerLiteral", "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", - "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", - "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", - "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", - "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", - "If", "Throw", "Delete", "In", "Try", "As", "From", "Class", "Enum", - "Extends", "Super", "Const", "Export", "Import", "Async", "Await", "Yield", - "Implements", "StrictLet", "NonStrictLet", "Private", "Public", "Interface", - "Package", "Protected", "Static", "Identifier", "StringLiteral", "BackTick", - "WhiteSpaces", "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", - "TemplateStringStartExpression", "TemplateStringAtom" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - public JavaScriptLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "JavaScriptLexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - @Override - public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { - switch (ruleIndex) { - case 8: - OpenBrace_action((RuleContext)_localctx, actionIndex); - break; - - case 10: - CloseBrace_action((RuleContext)_localctx, actionIndex); - break; - - case 119: - StringLiteral_action((RuleContext)_localctx, actionIndex); - break; - - case 120: - BackTick_action((RuleContext)_localctx, actionIndex); - break; - - case 126: - BackTickInside_action((RuleContext)_localctx, actionIndex); - break; - } - } - private void OpenBrace_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 0: - this.ProcessOpenBrace(); - break; - } - } - private void CloseBrace_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 1: - this.ProcessCloseBrace(); - break; - } - } - private void StringLiteral_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 2: - this.ProcessStringLiteral(); - break; - } - } - private void BackTick_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 3: - this.IncreaseTemplateDepth(); - break; - } - } - private void BackTickInside_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 4: - this.DecreaseTemplateDepth(); - break; - } - } - @Override - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 0: - return HashBangLine_sempred((RuleContext)_localctx, predIndex); - - case 3: - return RegularExpressionLiteral_sempred((RuleContext)_localctx, predIndex); - - case 9: - return TemplateCloseBrace_sempred((RuleContext)_localctx, predIndex); - - case 64: - return OctalIntegerLiteral_sempred((RuleContext)_localctx, predIndex); - - case 109: - return Implements_sempred((RuleContext)_localctx, predIndex); - - case 110: - return StrictLet_sempred((RuleContext)_localctx, predIndex); - - case 111: - return NonStrictLet_sempred((RuleContext)_localctx, predIndex); - - case 112: - return Private_sempred((RuleContext)_localctx, predIndex); - - case 113: - return Public_sempred((RuleContext)_localctx, predIndex); - - case 114: - return Interface_sempred((RuleContext)_localctx, predIndex); - - case 115: - return Package_sempred((RuleContext)_localctx, predIndex); - - case 116: - return Protected_sempred((RuleContext)_localctx, predIndex); - - case 117: - return Static_sempred((RuleContext)_localctx, predIndex); - } - return true; - } - private boolean HashBangLine_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return this.IsStartOfFile(); - } - return true; - } - private boolean RegularExpressionLiteral_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 1: - return this.IsRegexPossible(); - } - return true; - } - private boolean TemplateCloseBrace_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return this.IsInTemplateString(); - } - return true; - } - private boolean OctalIntegerLiteral_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return !this.IsStrictMode(); - } - return true; - } - private boolean Implements_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 4: - return this.IsStrictMode(); - } - return true; - } - private boolean StrictLet_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 5: - return this.IsStrictMode(); - } - return true; - } - private boolean NonStrictLet_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 6: - return !this.IsStrictMode(); - } - return true; - } - private boolean Private_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 7: - return this.IsStrictMode(); - } - return true; - } - private boolean Public_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 8: - return this.IsStrictMode(); - } - return true; - } - private boolean Interface_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 9: - return this.IsStrictMode(); - } - return true; - } - private boolean Package_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 10: - return this.IsStrictMode(); - } - return true; - } - private boolean Protected_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 11: - return this.IsStrictMode(); - } - return true; - } - private boolean Static_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 12: - return this.IsStrictMode(); - } - return true; - } - - public static final String _serializedATN = - "\u0004\u0000\u0080\u048a\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000"+ - "\u0007\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003"+ - "\u0007\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006"+ - "\u0007\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002"+ - "\n\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002"+ - "\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002"+ - "\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002"+ - "\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002"+ - "\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002"+ - "\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002"+ - "\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002"+ - " \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002"+ - "%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002"+ - "*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002"+ - "/\u0007/\u00020\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u0002"+ - "4\u00074\u00025\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u0002"+ - "9\u00079\u0002:\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002"+ - ">\u0007>\u0002?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002"+ - "C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002"+ - "H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002"+ - "M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002"+ - "R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002"+ - "W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002"+ - "\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002"+ - "a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002"+ - "f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002"+ - "k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002"+ - "p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002"+ - "u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002"+ - "z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002"+ - "\u007f\u0007\u007f\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002"+ - "\u0082\u0007\u0082\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002"+ - "\u0085\u0007\u0085\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002"+ - "\u0088\u0007\u0088\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002"+ - "\u008b\u0007\u008b\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002"+ - "\u008e\u0007\u008e\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002"+ - "\u0091\u0007\u0091\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002"+ - "\u0094\u0007\u0094\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+ - "\u0000\u0005\u0000\u0132\b\u0000\n\u0000\f\u0000\u0135\t\u0000\u0001\u0001"+ - "\u0001\u0001\u0001\u0001\u0001\u0001\u0005\u0001\u013b\b\u0001\n\u0001"+ - "\f\u0001\u013e\t\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ - "\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002"+ - "\u0149\b\u0002\n\u0002\f\u0002\u014c\t\u0002\u0001\u0002\u0001\u0002\u0001"+ - "\u0003\u0001\u0003\u0001\u0003\u0005\u0003\u0153\b\u0003\n\u0003\f\u0003"+ - "\u0156\t\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0005\u0003\u015b\b"+ - "\u0003\n\u0003\f\u0003\u015e\t\u0003\u0001\u0004\u0001\u0004\u0001\u0005"+ - "\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001"+ - "\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001"+ - "\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e"+ - "\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010"+ - "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+ - "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017"+ - "\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a"+ - "\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d"+ - "\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f"+ - "\u0001\u001f\u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001\""+ - "\u0001\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001"+ - "&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001"+ - ")\u0001)\u0001)\u0001)\u0001*\u0001*\u0001+\u0001+\u0001,\u0001,\u0001"+ - "-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001/\u0001/\u0001/\u00010\u0001"+ - "0\u00010\u00011\u00011\u00011\u00012\u00012\u00012\u00013\u00013\u0001"+ - "3\u00014\u00014\u00014\u00014\u00015\u00015\u00015\u00015\u00016\u0001"+ - "6\u00016\u00016\u00016\u00017\u00017\u00017\u00018\u00018\u00018\u0001"+ - "9\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001"+ - "<\u0001<\u0001<\u0001<\u0001<\u0001=\u0001=\u0001=\u0001=\u0001=\u0001"+ - "=\u0001=\u0001=\u0001=\u0003=\u020a\b=\u0001>\u0001>\u0001>\u0001>\u0005"+ - ">\u0210\b>\n>\f>\u0213\t>\u0001>\u0003>\u0216\b>\u0001>\u0001>\u0001>"+ - "\u0005>\u021b\b>\n>\f>\u021e\t>\u0001>\u0003>\u0221\b>\u0001>\u0001>\u0003"+ - ">\u0225\b>\u0003>\u0227\b>\u0001?\u0001?\u0001?\u0001?\u0005?\u022d\b"+ - "?\n?\f?\u0230\t?\u0001@\u0001@\u0004@\u0234\b@\u000b@\f@\u0235\u0001@"+ - "\u0001@\u0001A\u0001A\u0001A\u0001A\u0005A\u023e\bA\nA\fA\u0241\tA\u0001"+ - "B\u0001B\u0001B\u0001B\u0005B\u0247\bB\nB\fB\u024a\tB\u0001C\u0001C\u0001"+ - "C\u0001C\u0005C\u0250\bC\nC\fC\u0253\tC\u0001C\u0001C\u0001D\u0001D\u0001"+ - "D\u0001D\u0005D\u025b\bD\nD\fD\u025e\tD\u0001D\u0001D\u0001E\u0001E\u0001"+ - "E\u0001E\u0005E\u0266\bE\nE\fE\u0269\tE\u0001E\u0001E\u0001F\u0001F\u0001"+ - "F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001"+ - "I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+ - "I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001"+ - "K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001"+ - "M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001O\u0001"+ - "O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+ - "Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001"+ - "R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001"+ - "S\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0001U\u0001"+ - "U\u0001U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001"+ - "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001"+ - "X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ - "Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001"+ - "[\u0001[\u0001[\u0001[\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001"+ - "]\u0001]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001"+ - "_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001"+ - "b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001"+ - "c\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001"+ - "e\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001"+ - "g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001"+ - "h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001"+ - "j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001"+ - "o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ - "q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0005v\u03ac\bv\nv\fv\u03af"+ - "\tv\u0001w\u0001w\u0005w\u03b3\bw\nw\fw\u03b6\tw\u0001w\u0001w\u0001w"+ - "\u0005w\u03bb\bw\nw\fw\u03be\tw\u0001w\u0003w\u03c1\bw\u0001w\u0001w\u0001"+ - "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0004y\u03cb\by\u000by\fy\u03cc\u0001"+ - "y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001"+ - "{\u0001{\u0005{\u03db\b{\n{\f{\u03de\t{\u0001{\u0001{\u0001{\u0001{\u0001"+ - "{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001"+ - "|\u0001|\u0001|\u0005|\u03f1\b|\n|\f|\u03f4\t|\u0001|\u0001|\u0001|\u0001"+ - "|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001"+ - "~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001"+ - "\u007f\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+ - "\u0081\u0003\u0081\u0411\b\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+ - "\u0082\u0003\u0082\u0417\b\u0082\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+ - "\u0083\u0001\u0083\u0003\u0083\u041e\b\u0083\u0001\u0084\u0001\u0084\u0003"+ - "\u0084\u0422\b\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ - "\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001"+ - "\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0004\u0086\u0432\b\u0086\u000b"+ - "\u0086\f\u0086\u0433\u0001\u0086\u0001\u0086\u0003\u0086\u0438\b\u0086"+ - "\u0001\u0087\u0001\u0087\u0001\u0087\u0004\u0087\u043d\b\u0087\u000b\u0087"+ - "\f\u0087\u043e\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0089"+ - "\u0001\u0089\u0001\u008a\u0001\u008a\u0003\u008a\u0449\b\u008a\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d"+ - "\u0001\u008d\u0005\u008d\u0453\b\u008d\n\u008d\f\u008d\u0456\t\u008d\u0003"+ - "\u008d\u0458\b\u008d\u0001\u008e\u0001\u008e\u0003\u008e\u045c\b\u008e"+ - "\u0001\u008e\u0004\u008e\u045f\b\u008e\u000b\u008e\f\u008e\u0460\u0001"+ - "\u008f\u0001\u008f\u0003\u008f\u0465\b\u008f\u0001\u0090\u0001\u0090\u0001"+ - "\u0090\u0003\u0090\u046a\b\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001"+ - "\u0091\u0005\u0091\u0470\b\u0091\n\u0091\f\u0091\u0473\t\u0091\u0001\u0091"+ - "\u0003\u0091\u0476\b\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+ - "\u0005\u0092\u047c\b\u0092\n\u0092\f\u0092\u047f\t\u0092\u0001\u0092\u0003"+ - "\u0092\u0482\b\u0092\u0001\u0093\u0001\u0093\u0003\u0093\u0486\b\u0093"+ - "\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u013c\u03dc\u03f2\u0000\u0095"+ - "\u0002\u0001\u0004\u0002\u0006\u0003\b\u0004\n\u0005\f\u0006\u000e\u0007"+ - "\u0010\b\u0012\t\u0014\n\u0016\u000b\u0018\f\u001a\r\u001c\u000e\u001e"+ - "\u000f \u0010\"\u0011$\u0012&\u0013(\u0014*\u0015,\u0016.\u00170\u0018"+ - "2\u00194\u001a6\u001b8\u001c:\u001d<\u001e>\u001f@ B!D\"F#H$J%L&N\'P("+ - "R)T*V+X,Z-\\.^/`0b1d2f3h4j5l6n7p8r9t:v;x~?\u0080@\u0082A\u0084B\u0086"+ - "C\u0088D\u008aE\u008cF\u008eG\u0090H\u0092I\u0094J\u0096K\u0098L\u009a"+ - "M\u009cN\u009eO\u00a0P\u00a2Q\u00a4R\u00a6S\u00a8T\u00aaU\u00acV\u00ae"+ - "W\u00b0X\u00b2Y\u00b4Z\u00b6[\u00b8\\\u00ba]\u00bc^\u00be_\u00c0`\u00c2"+ - "a\u00c4b\u00c6c\u00c8d\u00cae\u00ccf\u00ceg\u00d0h\u00d2i\u00d4j\u00d6"+ - "k\u00d8l\u00dam\u00dcn\u00deo\u00e0p\u00e2q\u00e4r\u00e6s\u00e8t\u00ea"+ - "u\u00ecv\u00eew\u00f0x\u00f2y\u00f4z\u00f6{\u00f8|\u00fa}\u00fc~\u00fe"+ - "\u0000\u0100\u007f\u0102\u0080\u0104\u0000\u0106\u0000\u0108\u0000\u010a"+ - "\u0000\u010c\u0000\u010e\u0000\u0110\u0000\u0112\u0000\u0114\u0000\u0116"+ - "\u0000\u0118\u0000\u011a\u0000\u011c\u0000\u011e\u0000\u0120\u0000\u0122"+ - "\u0000\u0124\u0000\u0126\u0000\u0128\u0000\u012a\u0000\u0002\u0000\u0001"+ - "\u001b\u0003\u0000\n\n\r\r\u2028\u2029\u0001\u000009\u0002\u000009__\u0002"+ - "\u0000XXxx\u0003\u000009AFaf\u0001\u000007\u0002\u0000OOoo\u0002\u0000"+ - "07__\u0002\u0000BBbb\u0001\u000001\u0002\u000001__\u0004\u0000\t\t\u000b"+ - "\f \u00a0\u00a0\u0001\u0000``\u0004\u0000\n\n\r\r\"\"\\\\\u0004\u0000"+ - "\n\n\r\r\'\'\\\\\t\u0000\"\"\'\'\\\\bbffnnrrttvv\f\u0000\n\n\r\r\"\"\'"+ - "\'09\\\\bbffnnrrtvxx\u0003\u000009uuxx\u0004\u000009AF__af\u0001\u0000"+ - "19\u0002\u0000EEee\u0002\u0000++--\u0198\u000009__\u0300\u036f\u0483\u0487"+ - "\u0591\u05bd\u05bf\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05c7\u0610\u061a"+ - "\u064b\u0669\u0670\u0670\u06d6\u06dc\u06df\u06e4\u06e7\u06e8\u06ea\u06ed"+ - "\u06f0\u06f9\u0711\u0711\u0730\u074a\u07a6\u07b0\u07c0\u07c9\u07eb\u07f3"+ - "\u07fd\u07fd\u0816\u0819\u081b\u0823\u0825\u0827\u0829\u082d\u0859\u085b"+ - "\u0898\u089f\u08ca\u08e1\u08e3\u0902\u093a\u093a\u093c\u093c\u0941\u0948"+ - "\u094d\u094d\u0951\u0957\u0962\u0963\u0966\u096f\u0981\u0981\u09bc\u09bc"+ - "\u09c1\u09c4\u09cd\u09cd\u09e2\u09e3\u09e6\u09ef\u09fe\u09fe\u0a01\u0a02"+ - "\u0a3c\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4d\u0a51\u0a51\u0a66\u0a71"+ - "\u0a75\u0a75\u0a81\u0a82\u0abc\u0abc\u0ac1\u0ac5\u0ac7\u0ac8\u0acd\u0acd"+ - "\u0ae2\u0ae3\u0ae6\u0aef\u0afa\u0aff\u0b01\u0b01\u0b3c\u0b3c\u0b3f\u0b3f"+ - "\u0b41\u0b44\u0b4d\u0b4d\u0b55\u0b56\u0b62\u0b63\u0b66\u0b6f\u0b82\u0b82"+ - "\u0bc0\u0bc0\u0bcd\u0bcd\u0be6\u0bef\u0c00\u0c00\u0c04\u0c04\u0c3c\u0c3c"+ - "\u0c3e\u0c40\u0c46\u0c48\u0c4a\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66\u0c6f"+ - "\u0c81\u0c81\u0cbc\u0cbc\u0cbf\u0cbf\u0cc6\u0cc6\u0ccc\u0ccd\u0ce2\u0ce3"+ - "\u0ce6\u0cef\u0d00\u0d01\u0d3b\u0d3c\u0d41\u0d44\u0d4d\u0d4d\u0d62\u0d63"+ - "\u0d66\u0d6f\u0d81\u0d81\u0dca\u0dca\u0dd2\u0dd4\u0dd6\u0dd6\u0de6\u0def"+ - "\u0e31\u0e31\u0e34\u0e3a\u0e47\u0e4e\u0e50\u0e59\u0eb1\u0eb1\u0eb4\u0ebc"+ - "\u0ec8\u0ece\u0ed0\u0ed9\u0f18\u0f19\u0f20\u0f29\u0f35\u0f35\u0f37\u0f37"+ - "\u0f39\u0f39\u0f71\u0f7e\u0f80\u0f84\u0f86\u0f87\u0f8d\u0f97\u0f99\u0fbc"+ - "\u0fc6\u0fc6\u102d\u1030\u1032\u1037\u1039\u103a\u103d\u103e\u1040\u1049"+ - "\u1058\u1059\u105e\u1060\u1071\u1074\u1082\u1082\u1085\u1086\u108d\u108d"+ - "\u1090\u1099\u109d\u109d\u135d\u135f\u1712\u1714\u1732\u1733\u1752\u1753"+ - "\u1772\u1773\u17b4\u17b5\u17b7\u17bd\u17c6\u17c6\u17c9\u17d3\u17dd\u17dd"+ - "\u17e0\u17e9\u180b\u180d\u180f\u1819\u1885\u1886\u18a9\u18a9\u1920\u1922"+ - "\u1927\u1928\u1932\u1932\u1939\u193b\u1946\u194f\u19d0\u19d9\u1a17\u1a18"+ - "\u1a1b\u1a1b\u1a56\u1a56\u1a58\u1a5e\u1a60\u1a60\u1a62\u1a62\u1a65\u1a6c"+ - "\u1a73\u1a7c\u1a7f\u1a89\u1a90\u1a99\u1ab0\u1abd\u1abf\u1ace\u1b00\u1b03"+ - "\u1b34\u1b34\u1b36\u1b3a\u1b3c\u1b3c\u1b42\u1b42\u1b50\u1b59\u1b6b\u1b73"+ - "\u1b80\u1b81\u1ba2\u1ba5\u1ba8\u1ba9\u1bab\u1bad\u1bb0\u1bb9\u1be6\u1be6"+ - "\u1be8\u1be9\u1bed\u1bed\u1bef\u1bf1\u1c2c\u1c33\u1c36\u1c37\u1c40\u1c49"+ - "\u1c50\u1c59\u1cd0\u1cd2\u1cd4\u1ce0\u1ce2\u1ce8\u1ced\u1ced\u1cf4\u1cf4"+ - "\u1cf8\u1cf9\u1dc0\u1dff\u200c\u200d\u203f\u2040\u2054\u2054\u20d0\u20dc"+ - "\u20e1\u20e1\u20e5\u20f0\u2cef\u2cf1\u2d7f\u2d7f\u2de0\u2dff\u302a\u302d"+ - "\u3099\u309a\u8000\ua620\u8000\ua629\u8000\ua66f\u8000\ua66f\u8000\ua674"+ - "\u8000\ua67d\u8000\ua69e\u8000\ua69f\u8000\ua6f0\u8000\ua6f1\u8000\ua802"+ - "\u8000\ua802\u8000\ua806\u8000\ua806\u8000\ua80b\u8000\ua80b\u8000\ua825"+ - "\u8000\ua826\u8000\ua82c\u8000\ua82c\u8000\ua8c4\u8000\ua8c5\u8000\ua8d0"+ - "\u8000\ua8d9\u8000\ua8e0\u8000\ua8f1\u8000\ua8ff\u8000\ua909\u8000\ua926"+ - "\u8000\ua92d\u8000\ua947\u8000\ua951\u8000\ua980\u8000\ua982\u8000\ua9b3"+ - "\u8000\ua9b3\u8000\ua9b6\u8000\ua9b9\u8000\ua9bc\u8000\ua9bd\u8000\ua9d0"+ - "\u8000\ua9d9\u8000\ua9e5\u8000\ua9e5\u8000\ua9f0\u8000\ua9f9\u8000\uaa29"+ - "\u8000\uaa2e\u8000\uaa31\u8000\uaa32\u8000\uaa35\u8000\uaa36\u8000\uaa43"+ - "\u8000\uaa43\u8000\uaa4c\u8000\uaa4c\u8000\uaa50\u8000\uaa59\u8000\uaa7c"+ - "\u8000\uaa7c\u8000\uaab0\u8000\uaab0\u8000\uaab2\u8000\uaab4\u8000\uaab7"+ - "\u8000\uaab8\u8000\uaabe\u8000\uaabf\u8000\uaac1\u8000\uaac1\u8000\uaaec"+ - "\u8000\uaaed\u8000\uaaf6\u8000\uaaf6\u8000\uabe5\u8000\uabe5\u8000\uabe8"+ - "\u8000\uabe8\u8000\uabed\u8000\uabed\u8000\uabf0\u8000\uabf9\u8000\ufb1e"+ - "\u8000\ufb1e\u8000\ufe00\u8000\ufe0f\u8000\ufe20\u8000\ufe2f\u8000\ufe33"+ - "\u8000\ufe34\u8000\ufe4d\u8000\ufe4f\u8000\uff10\u8000\uff19\u8000\uff3f"+ - "\u8000\uff3f\u8001\u01fd\u8001\u01fd\u8001\u02e0\u8001\u02e0\u8001\u0376"+ - "\u8001\u037a\u8001\u04a0\u8001\u04a9\u8001\u0a01\u8001\u0a03\u8001\u0a05"+ - "\u8001\u0a06\u8001\u0a0c\u8001\u0a0f\u8001\u0a38\u8001\u0a3a\u8001\u0a3f"+ - "\u8001\u0a3f\u8001\u0ae5\u8001\u0ae6\u8001\u0d24\u8001\u0d27\u8001\u0d30"+ - "\u8001\u0d39\u8001\u0eab\u8001\u0eac\u8001\u0efd\u8001\u0eff\u8001\u0f46"+ - "\u8001\u0f50\u8001\u0f82\u8001\u0f85\u8001\u1001\u8001\u1001\u8001\u1038"+ - "\u8001\u1046\u8001\u1066\u8001\u1070\u8001\u1073\u8001\u1074\u8001\u107f"+ - "\u8001\u1081\u8001\u10b3\u8001\u10b6\u8001\u10b9\u8001\u10ba\u8001\u10c2"+ - "\u8001\u10c2\u8001\u10f0\u8001\u10f9\u8001\u1100\u8001\u1102\u8001\u1127"+ - "\u8001\u112b\u8001\u112d\u8001\u1134\u8001\u1136\u8001\u113f\u8001\u1173"+ - "\u8001\u1173\u8001\u1180\u8001\u1181\u8001\u11b6\u8001\u11be\u8001\u11c9"+ - "\u8001\u11cc\u8001\u11cf\u8001\u11d9\u8001\u122f\u8001\u1231\u8001\u1234"+ - "\u8001\u1234\u8001\u1236\u8001\u1237\u8001\u123e\u8001\u123e\u8001\u1241"+ - "\u8001\u1241\u8001\u12df\u8001\u12df\u8001\u12e3\u8001\u12ea\u8001\u12f0"+ - "\u8001\u12f9\u8001\u1300\u8001\u1301\u8001\u133b\u8001\u133c\u8001\u1340"+ - "\u8001\u1340\u8001\u1366\u8001\u136c\u8001\u1370\u8001\u1374\u8001\u1438"+ - "\u8001\u143f\u8001\u1442\u8001\u1444\u8001\u1446\u8001\u1446\u8001\u1450"+ - "\u8001\u1459\u8001\u145e\u8001\u145e\u8001\u14b3\u8001\u14b8\u8001\u14ba"+ - "\u8001\u14ba\u8001\u14bf\u8001\u14c0\u8001\u14c2\u8001\u14c3\u8001\u14d0"+ - "\u8001\u14d9\u8001\u15b2\u8001\u15b5\u8001\u15bc\u8001\u15bd\u8001\u15bf"+ - "\u8001\u15c0\u8001\u15dc\u8001\u15dd\u8001\u1633\u8001\u163a\u8001\u163d"+ - "\u8001\u163d\u8001\u163f\u8001\u1640\u8001\u1650\u8001\u1659\u8001\u16ab"+ - "\u8001\u16ab\u8001\u16ad\u8001\u16ad\u8001\u16b0\u8001\u16b5\u8001\u16b7"+ - "\u8001\u16b7\u8001\u16c0\u8001\u16c9\u8001\u171d\u8001\u171f\u8001\u1722"+ - "\u8001\u1725\u8001\u1727\u8001\u172b\u8001\u1730\u8001\u1739\u8001\u182f"+ - "\u8001\u1837\u8001\u1839\u8001\u183a\u8001\u18e0\u8001\u18e9\u8001\u193b"+ - "\u8001\u193c\u8001\u193e\u8001\u193e\u8001\u1943\u8001\u1943\u8001\u1950"+ - "\u8001\u1959\u8001\u19d4\u8001\u19d7\u8001\u19da\u8001\u19db\u8001\u19e0"+ - "\u8001\u19e0\u8001\u1a01\u8001\u1a0a\u8001\u1a33\u8001\u1a38\u8001\u1a3b"+ - "\u8001\u1a3e\u8001\u1a47\u8001\u1a47\u8001\u1a51\u8001\u1a56\u8001\u1a59"+ - "\u8001\u1a5b\u8001\u1a8a\u8001\u1a96\u8001\u1a98\u8001\u1a99\u8001\u1c30"+ - "\u8001\u1c36\u8001\u1c38\u8001\u1c3d\u8001\u1c3f\u8001\u1c3f\u8001\u1c50"+ - "\u8001\u1c59\u8001\u1c92\u8001\u1ca7\u8001\u1caa\u8001\u1cb0\u8001\u1cb2"+ - "\u8001\u1cb3\u8001\u1cb5\u8001\u1cb6\u8001\u1d31\u8001\u1d36\u8001\u1d3a"+ - "\u8001\u1d3a\u8001\u1d3c\u8001\u1d3d\u8001\u1d3f\u8001\u1d45\u8001\u1d47"+ - "\u8001\u1d47\u8001\u1d50\u8001\u1d59\u8001\u1d90\u8001\u1d91\u8001\u1d95"+ - "\u8001\u1d95\u8001\u1d97\u8001\u1d97\u8001\u1da0\u8001\u1da9\u8001\u1ef3"+ - "\u8001\u1ef4\u8001\u1f00\u8001\u1f01\u8001\u1f36\u8001\u1f3a\u8001\u1f40"+ - "\u8001\u1f40\u8001\u1f42\u8001\u1f42\u8001\u1f50\u8001\u1f59\u8001\u3440"+ - "\u8001\u3440\u8001\u3447\u8001\u3455\u8001\u6a60\u8001\u6a69\u8001\u6ac0"+ - "\u8001\u6ac9\u8001\u6af0\u8001\u6af4\u8001\u6b30\u8001\u6b36\u8001\u6b50"+ - "\u8001\u6b59\u8001\u6f4f\u8001\u6f4f\u8001\u6f8f\u8001\u6f92\u8001\u6fe4"+ - "\u8001\u6fe4\u8001\ubc9d\u8001\ubc9e\u8001\ucf00\u8001\ucf2d\u8001\ucf30"+ - "\u8001\ucf46\u8001\ud167\u8001\ud169\u8001\ud17b\u8001\ud182\u8001\ud185"+ - "\u8001\ud18b\u8001\ud1aa\u8001\ud1ad\u8001\ud242\u8001\ud244\u8001\ud7ce"+ - "\u8001\ud7ff\u8001\uda00\u8001\uda36\u8001\uda3b\u8001\uda6c\u8001\uda75"+ - "\u8001\uda75\u8001\uda84\u8001\uda84\u8001\uda9b\u8001\uda9f\u8001\udaa1"+ - "\u8001\udaaf\u8001\ue000\u8001\ue006\u8001\ue008\u8001\ue018\u8001\ue01b"+ - "\u8001\ue021\u8001\ue023\u8001\ue024\u8001\ue026\u8001\ue02a\u8001\ue08f"+ - "\u8001\ue08f\u8001\ue130\u8001\ue136\u8001\ue140\u8001\ue149\u8001\ue2ae"+ - "\u8001\ue2ae\u8001\ue2ec\u8001\ue2f9\u8001\ue4ec\u8001\ue4f9\u8001\ue8d0"+ - "\u8001\ue8d6\u8001\ue944\u8001\ue94a\u8001\ue950\u8001\ue959\u8001\ufbf0"+ - "\u8001\ufbf9\u800e\u0100\u800e\u01ef\u0295\u0000$$AZ__az\u00aa\u00aa\u00b5"+ - "\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8\u02c1\u02c6\u02d1\u02e0"+ - "\u02e4\u02ec\u02ec\u02ee\u02ee\u0370\u0374\u0376\u0377\u037a\u037d\u037f"+ - "\u037f\u0386\u0386\u0388\u038a\u038c\u038c\u038e\u03a1\u03a3\u03f5\u03f7"+ - "\u0481\u048a\u052f\u0531\u0556\u0559\u0559\u0560\u0588\u05d0\u05ea\u05ef"+ - "\u05f2\u0620\u064a\u066e\u066f\u0671\u06d3\u06d5\u06d5\u06e5\u06e6\u06ee"+ - "\u06ef\u06fa\u06fc\u06ff\u06ff\u0710\u0710\u0712\u072f\u074d\u07a5\u07b1"+ - "\u07b1\u07ca\u07ea\u07f4\u07f5\u07fa\u07fa\u0800\u0815\u081a\u081a\u0824"+ - "\u0824\u0828\u0828\u0840\u0858\u0860\u086a\u0870\u0887\u0889\u088e\u08a0"+ - "\u08c9\u0904\u0939\u093d\u093d\u0950\u0950\u0958\u0961\u0971\u0980\u0985"+ - "\u098c\u098f\u0990\u0993\u09a8\u09aa\u09b0\u09b2\u09b2\u09b6\u09b9\u09bd"+ - "\u09bd\u09ce\u09ce\u09dc\u09dd\u09df\u09e1\u09f0\u09f1\u09fc\u09fc\u0a05"+ - "\u0a0a\u0a0f\u0a10\u0a13\u0a28\u0a2a\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38"+ - "\u0a39\u0a59\u0a5c\u0a5e\u0a5e\u0a72\u0a74\u0a85\u0a8d\u0a8f\u0a91\u0a93"+ - "\u0aa8\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5\u0ab9\u0abd\u0abd\u0ad0\u0ad0\u0ae0"+ - "\u0ae1\u0af9\u0af9\u0b05\u0b0c\u0b0f\u0b10\u0b13\u0b28\u0b2a\u0b30\u0b32"+ - "\u0b33\u0b35\u0b39\u0b3d\u0b3d\u0b5c\u0b5d\u0b5f\u0b61\u0b71\u0b71\u0b83"+ - "\u0b83\u0b85\u0b8a\u0b8e\u0b90\u0b92\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e"+ - "\u0b9f\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0bb9\u0bd0\u0bd0\u0c05\u0c0c\u0c0e"+ - "\u0c10\u0c12\u0c28\u0c2a\u0c39\u0c3d\u0c3d\u0c58\u0c5a\u0c5d\u0c5d\u0c60"+ - "\u0c61\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92\u0ca8\u0caa\u0cb3\u0cb5"+ - "\u0cb9\u0cbd\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04\u0d0c\u0d0e"+ - "\u0d10\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54\u0d56\u0d5f\u0d61\u0d7a"+ - "\u0d7f\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd\u0dbd\u0dc0\u0dc6\u0e01"+ - "\u0e30\u0e32\u0e33\u0e40\u0e46\u0e81\u0e82\u0e84\u0e84\u0e86\u0e8a\u0e8c"+ - "\u0ea3\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd\u0ebd\u0ec0\u0ec4\u0ec6"+ - "\u0ec6\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49\u0f6c\u0f88\u0f8c\u1000"+ - "\u102a\u103f\u103f\u1050\u1055\u105a\u105d\u1061\u1061\u1065\u1066\u106e"+ - "\u1070\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7\u10c7\u10cd\u10cd\u10d0"+ - "\u10fa\u10fc\u1248\u124a\u124d\u1250\u1256\u1258\u1258\u125a\u125d\u1260"+ - "\u1288\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8\u12be\u12c0\u12c0\u12c2"+ - "\u12c5\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318\u135a\u1380\u138f\u13a0"+ - "\u13f5\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681\u169a\u16a0\u16ea\u16f1"+ - "\u16f8\u1700\u1711\u171f\u1731\u1740\u1751\u1760\u176c\u176e\u1770\u1780"+ - "\u17b3\u17d7\u17d7\u17dc\u17dc\u1820\u1878\u1880\u1884\u1887\u18a8\u18aa"+ - "\u18aa\u18b0\u18f5\u1900\u191e\u1950\u196d\u1970\u1974\u1980\u19ab\u19b0"+ - "\u19c9\u1a00\u1a16\u1a20\u1a54\u1aa7\u1aa7\u1b05\u1b33\u1b45\u1b4c\u1b83"+ - "\u1ba0\u1bae\u1baf\u1bba\u1be5\u1c00\u1c23\u1c4d\u1c4f\u1c5a\u1c7d\u1c80"+ - "\u1c88\u1c90\u1cba\u1cbd\u1cbf\u1ce9\u1cec\u1cee\u1cf3\u1cf5\u1cf6\u1cfa"+ - "\u1cfa\u1d00\u1dbf\u1e00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48\u1f4d\u1f50"+ - "\u1f57\u1f59\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80\u1fb4\u1fb6"+ - "\u1fbc\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb\u1fe0"+ - "\u1fec\u1ff2\u1ff4\u1ff6\u1ffc\u2071\u2071\u207f\u207f\u2090\u209c\u2102"+ - "\u2102\u2107\u2107\u210a\u2113\u2115\u2115\u2119\u211d\u2124\u2124\u2126"+ - "\u2126\u2128\u2128\u212a\u212d\u212f\u2139\u213c\u213f\u2145\u2149\u214e"+ - "\u214e\u2183\u2184\u2c00\u2ce4\u2ceb\u2cee\u2cf2\u2cf3\u2d00\u2d25\u2d27"+ - "\u2d27\u2d2d\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d80\u2d96\u2da0\u2da6\u2da8"+ - "\u2dae\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6\u2dd8"+ - "\u2dde\u2e2f\u2e2f\u3005\u3006\u3031\u3035\u303b\u303c\u3041\u3096\u309d"+ - "\u309f\u30a1\u30fa\u30fc\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf\u31f0"+ - "\u31ff\u3400\u4dbf\u4e00\u8000\ua48c\u8000\ua4d0\u8000\ua4fd\u8000\ua500"+ - "\u8000\ua60c\u8000\ua610\u8000\ua61f\u8000\ua62a\u8000\ua62b\u8000\ua640"+ - "\u8000\ua66e\u8000\ua67f\u8000\ua69d\u8000\ua6a0\u8000\ua6e5\u8000\ua717"+ - "\u8000\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7ca\u8000\ua7d0"+ - "\u8000\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000\ua7d5\u8000\ua7d9\u8000\ua7f2"+ - "\u8000\ua801\u8000\ua803\u8000\ua805\u8000\ua807\u8000\ua80a\u8000\ua80c"+ - "\u8000\ua822\u8000\ua840\u8000\ua873\u8000\ua882\u8000\ua8b3\u8000\ua8f2"+ - "\u8000\ua8f7\u8000\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua8fe\u8000\ua90a"+ - "\u8000\ua925\u8000\ua930\u8000\ua946\u8000\ua960\u8000\ua97c\u8000\ua984"+ - "\u8000\ua9b2\u8000\ua9cf\u8000\ua9cf\u8000\ua9e0\u8000\ua9e4\u8000\ua9e6"+ - "\u8000\ua9ef\u8000\ua9fa\u8000\ua9fe\u8000\uaa00\u8000\uaa28\u8000\uaa40"+ - "\u8000\uaa42\u8000\uaa44\u8000\uaa4b\u8000\uaa60\u8000\uaa76\u8000\uaa7a"+ - "\u8000\uaa7a\u8000\uaa7e\u8000\uaaaf\u8000\uaab1\u8000\uaab1\u8000\uaab5"+ - "\u8000\uaab6\u8000\uaab9\u8000\uaabd\u8000\uaac0\u8000\uaac0\u8000\uaac2"+ - "\u8000\uaac2\u8000\uaadb\u8000\uaadd\u8000\uaae0\u8000\uaaea\u8000\uaaf2"+ - "\u8000\uaaf4\u8000\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000\uab11"+ - "\u8000\uab16\u8000\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000\uab30"+ - "\u8000\uab5a\u8000\uab5c\u8000\uab69\u8000\uab70\u8000\uabe2\u8000\uac00"+ - "\u8000\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000\ud7cb\u8000\ud7fb\u8000\uf900"+ - "\u8000\ufa6d\u8000\ufa70\u8000\ufad9\u8000\ufb00\u8000\ufb06\u8000\ufb13"+ - "\u8000\ufb17\u8000\ufb1d\u8000\ufb1d\u8000\ufb1f\u8000\ufb28\u8000\ufb2a"+ - "\u8000\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000\ufb40"+ - "\u8000\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000\ufbd3"+ - "\u8000\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000\ufdf0"+ - "\u8000\ufdfb\u8000\ufe70\u8000\ufe74\u8000\ufe76\u8000\ufefc\u8000\uff21"+ - "\u8000\uff3a\u8000\uff41\u8000\uff5a\u8000\uff66\u8000\uffbe\u8000\uffc2"+ - "\u8000\uffc7\u8000\uffca\u8000\uffcf\u8000\uffd2\u8000\uffd7\u8000\uffda"+ - "\u8000\uffdc\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001:\u8001"+ - "<\u8001=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001\u0280"+ - "\u8001\u029c\u8001\u02a0\u8001\u02d0\u8001\u0300\u8001\u031f\u8001\u032d"+ - "\u8001\u0340\u8001\u0342\u8001\u0349\u8001\u0350\u8001\u0375\u8001\u0380"+ - "\u8001\u039d\u8001\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001\u0400"+ - "\u8001\u049d\u8001\u04b0\u8001\u04d3\u8001\u04d8\u8001\u04fb\u8001\u0500"+ - "\u8001\u0527\u8001\u0530\u8001\u0563\u8001\u0570\u8001\u057a\u8001\u057c"+ - "\u8001\u058a\u8001\u058c\u8001\u0592\u8001\u0594\u8001\u0595\u8001\u0597"+ - "\u8001\u05a1\u8001\u05a3\u8001\u05b1\u8001\u05b3\u8001\u05b9\u8001\u05bb"+ - "\u8001\u05bc\u8001\u0600\u8001\u0736\u8001\u0740\u8001\u0755\u8001\u0760"+ - "\u8001\u0767\u8001\u0780\u8001\u0785\u8001\u0787\u8001\u07b0\u8001\u07b2"+ - "\u8001\u07ba\u8001\u0800\u8001\u0805\u8001\u0808\u8001\u0808\u8001\u080a"+ - "\u8001\u0835\u8001\u0837\u8001\u0838\u8001\u083c\u8001\u083c\u8001\u083f"+ - "\u8001\u0855\u8001\u0860\u8001\u0876\u8001\u0880\u8001\u089e\u8001\u08e0"+ - "\u8001\u08f2\u8001\u08f4\u8001\u08f5\u8001\u0900\u8001\u0915\u8001\u0920"+ - "\u8001\u0939\u8001\u0980\u8001\u09b7\u8001\u09be\u8001\u09bf\u8001\u0a00"+ - "\u8001\u0a00\u8001\u0a10\u8001\u0a13\u8001\u0a15\u8001\u0a17\u8001\u0a19"+ - "\u8001\u0a35\u8001\u0a60\u8001\u0a7c\u8001\u0a80\u8001\u0a9c\u8001\u0ac0"+ - "\u8001\u0ac7\u8001\u0ac9\u8001\u0ae4\u8001\u0b00\u8001\u0b35\u8001\u0b40"+ - "\u8001\u0b55\u8001\u0b60\u8001\u0b72\u8001\u0b80\u8001\u0b91\u8001\u0c00"+ - "\u8001\u0c48\u8001\u0c80\u8001\u0cb2\u8001\u0cc0\u8001\u0cf2\u8001\u0d00"+ - "\u8001\u0d23\u8001\u0e80\u8001\u0ea9\u8001\u0eb0\u8001\u0eb1\u8001\u0f00"+ - "\u8001\u0f1c\u8001\u0f27\u8001\u0f27\u8001\u0f30\u8001\u0f45\u8001\u0f70"+ - "\u8001\u0f81\u8001\u0fb0\u8001\u0fc4\u8001\u0fe0\u8001\u0ff6\u8001\u1003"+ - "\u8001\u1037\u8001\u1071\u8001\u1072\u8001\u1075\u8001\u1075\u8001\u1083"+ - "\u8001\u10af\u8001\u10d0\u8001\u10e8\u8001\u1103\u8001\u1126\u8001\u1144"+ - "\u8001\u1144\u8001\u1147\u8001\u1147\u8001\u1150\u8001\u1172\u8001\u1176"+ - "\u8001\u1176\u8001\u1183\u8001\u11b2\u8001\u11c1\u8001\u11c4\u8001\u11da"+ - "\u8001\u11da\u8001\u11dc\u8001\u11dc\u8001\u1200\u8001\u1211\u8001\u1213"+ - "\u8001\u122b\u8001\u123f\u8001\u1240\u8001\u1280\u8001\u1286\u8001\u1288"+ - "\u8001\u1288\u8001\u128a\u8001\u128d\u8001\u128f\u8001\u129d\u8001\u129f"+ - "\u8001\u12a8\u8001\u12b0\u8001\u12de\u8001\u1305\u8001\u130c\u8001\u130f"+ - "\u8001\u1310\u8001\u1313\u8001\u1328\u8001\u132a\u8001\u1330\u8001\u1332"+ - "\u8001\u1333\u8001\u1335\u8001\u1339\u8001\u133d\u8001\u133d\u8001\u1350"+ - "\u8001\u1350\u8001\u135d\u8001\u1361\u8001\u1400\u8001\u1434\u8001\u1447"+ - "\u8001\u144a\u8001\u145f\u8001\u1461\u8001\u1480\u8001\u14af\u8001\u14c4"+ - "\u8001\u14c5\u8001\u14c7\u8001\u14c7\u8001\u1580\u8001\u15ae\u8001\u15d8"+ - "\u8001\u15db\u8001\u1600\u8001\u162f\u8001\u1644\u8001\u1644\u8001\u1680"+ - "\u8001\u16aa\u8001\u16b8\u8001\u16b8\u8001\u1700\u8001\u171a\u8001\u1740"+ - "\u8001\u1746\u8001\u1800\u8001\u182b\u8001\u18a0\u8001\u18df\u8001\u18ff"+ - "\u8001\u1906\u8001\u1909\u8001\u1909\u8001\u190c\u8001\u1913\u8001\u1915"+ - "\u8001\u1916\u8001\u1918\u8001\u192f\u8001\u193f\u8001\u193f\u8001\u1941"+ - "\u8001\u1941\u8001\u19a0\u8001\u19a7\u8001\u19aa\u8001\u19d0\u8001\u19e1"+ - "\u8001\u19e1\u8001\u19e3\u8001\u19e3\u8001\u1a00\u8001\u1a00\u8001\u1a0b"+ - "\u8001\u1a32\u8001\u1a3a\u8001\u1a3a\u8001\u1a50\u8001\u1a50\u8001\u1a5c"+ - "\u8001\u1a89\u8001\u1a9d\u8001\u1a9d\u8001\u1ab0\u8001\u1af8\u8001\u1c00"+ - "\u8001\u1c08\u8001\u1c0a\u8001\u1c2e\u8001\u1c40\u8001\u1c40\u8001\u1c72"+ - "\u8001\u1c8f\u8001\u1d00\u8001\u1d06\u8001\u1d08\u8001\u1d09\u8001\u1d0b"+ - "\u8001\u1d30\u8001\u1d46\u8001\u1d46\u8001\u1d60\u8001\u1d65\u8001\u1d67"+ - "\u8001\u1d68\u8001\u1d6a\u8001\u1d89\u8001\u1d98\u8001\u1d98\u8001\u1ee0"+ - "\u8001\u1ef2\u8001\u1f02\u8001\u1f02\u8001\u1f04\u8001\u1f10\u8001\u1f12"+ - "\u8001\u1f33\u8001\u1fb0\u8001\u1fb0\u8001\u2000\u8001\u2399\u8001\u2480"+ - "\u8001\u2543\u8001\u2f90\u8001\u2ff0\u8001\u3000\u8001\u342f\u8001\u3441"+ - "\u8001\u3446\u8001\u4400\u8001\u4646\u8001\u6800\u8001\u6a38\u8001\u6a40"+ - "\u8001\u6a5e\u8001\u6a70\u8001\u6abe\u8001\u6ad0\u8001\u6aed\u8001\u6b00"+ - "\u8001\u6b2f\u8001\u6b40\u8001\u6b43\u8001\u6b63\u8001\u6b77\u8001\u6b7d"+ - "\u8001\u6b8f\u8001\u6e40\u8001\u6e7f\u8001\u6f00\u8001\u6f4a\u8001\u6f50"+ - "\u8001\u6f50\u8001\u6f93\u8001\u6f9f\u8001\u6fe0\u8001\u6fe1\u8001\u6fe3"+ - "\u8001\u6fe3\u8001\u7000\u8001\u87f7\u8001\u8800\u8001\u8cd5\u8001\u8d00"+ - "\u8001\u8d08\u8001\uaff0\u8001\uaff3\u8001\uaff5\u8001\uaffb\u8001\uaffd"+ - "\u8001\uaffe\u8001\ub000\u8001\ub122\u8001\ub132\u8001\ub132\u8001\ub150"+ - "\u8001\ub152\u8001\ub155\u8001\ub155\u8001\ub164\u8001\ub167\u8001\ub170"+ - "\u8001\ub2fb\u8001\ubc00\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80"+ - "\u8001\ubc88\u8001\ubc90\u8001\ubc99\u8001\ud400\u8001\ud454\u8001\ud456"+ - "\u8001\ud49c\u8001\ud49e\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5"+ - "\u8001\ud4a6\u8001\ud4a9\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb"+ - "\u8001\ud4bb\u8001\ud4bd\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507"+ - "\u8001\ud50a\u8001\ud50d\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e"+ - "\u8001\ud539\u8001\ud53b\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546"+ - "\u8001\ud546\u8001\ud54a\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8"+ - "\u8001\ud6c0\u8001\ud6c2\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc"+ - "\u8001\ud714\u8001\ud716\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750"+ - "\u8001\ud76e\u8001\ud770\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa"+ - "\u8001\ud7c2\u8001\ud7c4\u8001\ud7cb\u8001\udf00\u8001\udf1e\u8001\udf25"+ - "\u8001\udf2a\u8001\ue030\u8001\ue06d\u8001\ue100\u8001\ue12c\u8001\ue137"+ - "\u8001\ue13d\u8001\ue14e\u8001\ue14e\u8001\ue290\u8001\ue2ad\u8001\ue2c0"+ - "\u8001\ue2eb\u8001\ue4d0\u8001\ue4eb\u8001\ue7e0\u8001\ue7e6\u8001\ue7e8"+ - "\u8001\ue7eb\u8001\ue7ed\u8001\ue7ee\u8001\ue7f0\u8001\ue7fe\u8001\ue800"+ - "\u8001\ue8c4\u8001\ue900\u8001\ue943\u8001\ue94b\u8001\ue94b\u8001\uee00"+ - "\u8001\uee03\u8001\uee05\u8001\uee1f\u8001\uee21\u8001\uee22\u8001\uee24"+ - "\u8001\uee24\u8001\uee27\u8001\uee27\u8001\uee29\u8001\uee32\u8001\uee34"+ - "\u8001\uee37\u8001\uee39\u8001\uee39\u8001\uee3b\u8001\uee3b\u8001\uee42"+ - "\u8001\uee42\u8001\uee47\u8001\uee47\u8001\uee49\u8001\uee49\u8001\uee4b"+ - "\u8001\uee4b\u8001\uee4d\u8001\uee4f\u8001\uee51\u8001\uee52\u8001\uee54"+ - "\u8001\uee54\u8001\uee57\u8001\uee57\u8001\uee59\u8001\uee59\u8001\uee5b"+ - "\u8001\uee5b\u8001\uee5d\u8001\uee5d\u8001\uee5f\u8001\uee5f\u8001\uee61"+ - "\u8001\uee62\u8001\uee64\u8001\uee64\u8001\uee67\u8001\uee6a\u8001\uee6c"+ - "\u8001\uee72\u8001\uee74\u8001\uee77\u8001\uee79\u8001\uee7c\u8001\uee7e"+ - "\u8001\uee7e\u8001\uee80\u8001\uee89\u8001\uee8b\u8001\uee9b\u8001\ueea1"+ - "\u8001\ueea3\u8001\ueea5\u8001\ueea9\u8001\ueeab\u8001\ueebb\u8002\u0000"+ - "\u8002\ua6df\u8002\ua700\u8002\ub739\u8002\ub740\u8002\ub81d\u8002\ub820"+ - "\u8002\ucea1\u8002\uceb0\u8002\uebe0\u8002\uf800\u8002\ufa1d\u8003\u0000"+ - "\u8003\u134a\u8003\u1350\u8003\u23af\u0006\u0000\n\n\r\r**//[\\\u2028"+ - "\u2029\u0005\u0000\n\n\r\r//[\\\u2028\u2029\u0004\u0000\n\n\r\r\\]\u2028"+ - "\u2029\u04a9\u0000\u0002\u0001\u0000\u0000\u0000\u0000\u0004\u0001\u0000"+ - "\u0000\u0000\u0000\u0006\u0001\u0000\u0000\u0000\u0000\b\u0001\u0000\u0000"+ - "\u0000\u0000\n\u0001\u0000\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000"+ - "\u0000\u000e\u0001\u0000\u0000\u0000\u0000\u0010\u0001\u0000\u0000\u0000"+ - "\u0000\u0012\u0001\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000"+ - "\u0000\u0016\u0001\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000"+ - "\u0000\u001a\u0001\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000"+ - "\u0000\u001e\u0001\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0000"+ - "\"\u0001\u0000\u0000\u0000\u0000$\u0001\u0000\u0000\u0000\u0000&\u0001"+ - "\u0000\u0000\u0000\u0000(\u0001\u0000\u0000\u0000\u0000*\u0001\u0000\u0000"+ - "\u0000\u0000,\u0001\u0000\u0000\u0000\u0000.\u0001\u0000\u0000\u0000\u0000"+ - "0\u0001\u0000\u0000\u0000\u00002\u0001\u0000\u0000\u0000\u00004\u0001"+ - "\u0000\u0000\u0000\u00006\u0001\u0000\u0000\u0000\u00008\u0001\u0000\u0000"+ - "\u0000\u0000:\u0001\u0000\u0000\u0000\u0000<\u0001\u0000\u0000\u0000\u0000"+ - ">\u0001\u0000\u0000\u0000\u0000@\u0001\u0000\u0000\u0000\u0000B\u0001"+ - "\u0000\u0000\u0000\u0000D\u0001\u0000\u0000\u0000\u0000F\u0001\u0000\u0000"+ - "\u0000\u0000H\u0001\u0000\u0000\u0000\u0000J\u0001\u0000\u0000\u0000\u0000"+ - "L\u0001\u0000\u0000\u0000\u0000N\u0001\u0000\u0000\u0000\u0000P\u0001"+ - "\u0000\u0000\u0000\u0000R\u0001\u0000\u0000\u0000\u0000T\u0001\u0000\u0000"+ - "\u0000\u0000V\u0001\u0000\u0000\u0000\u0000X\u0001\u0000\u0000\u0000\u0000"+ - "Z\u0001\u0000\u0000\u0000\u0000\\\u0001\u0000\u0000\u0000\u0000^\u0001"+ - "\u0000\u0000\u0000\u0000`\u0001\u0000\u0000\u0000\u0000b\u0001\u0000\u0000"+ - "\u0000\u0000d\u0001\u0000\u0000\u0000\u0000f\u0001\u0000\u0000\u0000\u0000"+ - "h\u0001\u0000\u0000\u0000\u0000j\u0001\u0000\u0000\u0000\u0000l\u0001"+ - "\u0000\u0000\u0000\u0000n\u0001\u0000\u0000\u0000\u0000p\u0001\u0000\u0000"+ - "\u0000\u0000r\u0001\u0000\u0000\u0000\u0000t\u0001\u0000\u0000\u0000\u0000"+ - "v\u0001\u0000\u0000\u0000\u0000x\u0001\u0000\u0000\u0000\u0000z\u0001"+ - "\u0000\u0000\u0000\u0000|\u0001\u0000\u0000\u0000\u0000~\u0001\u0000\u0000"+ - "\u0000\u0000\u0080\u0001\u0000\u0000\u0000\u0000\u0082\u0001\u0000\u0000"+ - "\u0000\u0000\u0084\u0001\u0000\u0000\u0000\u0000\u0086\u0001\u0000\u0000"+ - "\u0000\u0000\u0088\u0001\u0000\u0000\u0000\u0000\u008a\u0001\u0000\u0000"+ - "\u0000\u0000\u008c\u0001\u0000\u0000\u0000\u0000\u008e\u0001\u0000\u0000"+ - "\u0000\u0000\u0090\u0001\u0000\u0000\u0000\u0000\u0092\u0001\u0000\u0000"+ - "\u0000\u0000\u0094\u0001\u0000\u0000\u0000\u0000\u0096\u0001\u0000\u0000"+ - "\u0000\u0000\u0098\u0001\u0000\u0000\u0000\u0000\u009a\u0001\u0000\u0000"+ - "\u0000\u0000\u009c\u0001\u0000\u0000\u0000\u0000\u009e\u0001\u0000\u0000"+ - "\u0000\u0000\u00a0\u0001\u0000\u0000\u0000\u0000\u00a2\u0001\u0000\u0000"+ - "\u0000\u0000\u00a4\u0001\u0000\u0000\u0000\u0000\u00a6\u0001\u0000\u0000"+ - "\u0000\u0000\u00a8\u0001\u0000\u0000\u0000\u0000\u00aa\u0001\u0000\u0000"+ - "\u0000\u0000\u00ac\u0001\u0000\u0000\u0000\u0000\u00ae\u0001\u0000\u0000"+ - "\u0000\u0000\u00b0\u0001\u0000\u0000\u0000\u0000\u00b2\u0001\u0000\u0000"+ - "\u0000\u0000\u00b4\u0001\u0000\u0000\u0000\u0000\u00b6\u0001\u0000\u0000"+ - "\u0000\u0000\u00b8\u0001\u0000\u0000\u0000\u0000\u00ba\u0001\u0000\u0000"+ - "\u0000\u0000\u00bc\u0001\u0000\u0000\u0000\u0000\u00be\u0001\u0000\u0000"+ - "\u0000\u0000\u00c0\u0001\u0000\u0000\u0000\u0000\u00c2\u0001\u0000\u0000"+ - "\u0000\u0000\u00c4\u0001\u0000\u0000\u0000\u0000\u00c6\u0001\u0000\u0000"+ - "\u0000\u0000\u00c8\u0001\u0000\u0000\u0000\u0000\u00ca\u0001\u0000\u0000"+ - "\u0000\u0000\u00cc\u0001\u0000\u0000\u0000\u0000\u00ce\u0001\u0000\u0000"+ - "\u0000\u0000\u00d0\u0001\u0000\u0000\u0000\u0000\u00d2\u0001\u0000\u0000"+ - "\u0000\u0000\u00d4\u0001\u0000\u0000\u0000\u0000\u00d6\u0001\u0000\u0000"+ - "\u0000\u0000\u00d8\u0001\u0000\u0000\u0000\u0000\u00da\u0001\u0000\u0000"+ - "\u0000\u0000\u00dc\u0001\u0000\u0000\u0000\u0000\u00de\u0001\u0000\u0000"+ - "\u0000\u0000\u00e0\u0001\u0000\u0000\u0000\u0000\u00e2\u0001\u0000\u0000"+ - "\u0000\u0000\u00e4\u0001\u0000\u0000\u0000\u0000\u00e6\u0001\u0000\u0000"+ - "\u0000\u0000\u00e8\u0001\u0000\u0000\u0000\u0000\u00ea\u0001\u0000\u0000"+ - "\u0000\u0000\u00ec\u0001\u0000\u0000\u0000\u0000\u00ee\u0001\u0000\u0000"+ - "\u0000\u0000\u00f0\u0001\u0000\u0000\u0000\u0000\u00f2\u0001\u0000\u0000"+ - "\u0000\u0000\u00f4\u0001\u0000\u0000\u0000\u0000\u00f6\u0001\u0000\u0000"+ - "\u0000\u0000\u00f8\u0001\u0000\u0000\u0000\u0000\u00fa\u0001\u0000\u0000"+ - "\u0000\u0000\u00fc\u0001\u0000\u0000\u0000\u0001\u00fe\u0001\u0000\u0000"+ - "\u0000\u0001\u0100\u0001\u0000\u0000\u0000\u0001\u0102\u0001\u0000\u0000"+ - "\u0000\u0002\u012c\u0001\u0000\u0000\u0000\u0004\u0136\u0001\u0000\u0000"+ - "\u0000\u0006\u0144\u0001\u0000\u0000\u0000\b\u014f\u0001\u0000\u0000\u0000"+ - "\n\u015f\u0001\u0000\u0000\u0000\f\u0161\u0001\u0000\u0000\u0000\u000e"+ - "\u0163\u0001\u0000\u0000\u0000\u0010\u0165\u0001\u0000\u0000\u0000\u0012"+ - "\u0167\u0001\u0000\u0000\u0000\u0014\u016a\u0001\u0000\u0000\u0000\u0016"+ - "\u016f\u0001\u0000\u0000\u0000\u0018\u0172\u0001\u0000\u0000\u0000\u001a"+ - "\u0174\u0001\u0000\u0000\u0000\u001c\u0176\u0001\u0000\u0000\u0000\u001e"+ - "\u0178\u0001\u0000\u0000\u0000 \u017a\u0001\u0000\u0000\u0000\"\u017d"+ - "\u0001\u0000\u0000\u0000$\u017f\u0001\u0000\u0000\u0000&\u0183\u0001\u0000"+ - "\u0000\u0000(\u0185\u0001\u0000\u0000\u0000*\u0188\u0001\u0000\u0000\u0000"+ - ",\u018b\u0001\u0000\u0000\u0000.\u018d\u0001\u0000\u0000\u00000\u018f"+ - "\u0001\u0000\u0000\u00002\u0191\u0001\u0000\u0000\u00004\u0193\u0001\u0000"+ - "\u0000\u00006\u0195\u0001\u0000\u0000\u00008\u0197\u0001\u0000\u0000\u0000"+ - ":\u0199\u0001\u0000\u0000\u0000<\u019c\u0001\u0000\u0000\u0000>\u019f"+ - "\u0001\u0000\u0000\u0000@\u01a1\u0001\u0000\u0000\u0000B\u01a4\u0001\u0000"+ - "\u0000\u0000D\u01a7\u0001\u0000\u0000\u0000F\u01ab\u0001\u0000\u0000\u0000"+ - "H\u01ad\u0001\u0000\u0000\u0000J\u01af\u0001\u0000\u0000\u0000L\u01b2"+ - "\u0001\u0000\u0000\u0000N\u01b5\u0001\u0000\u0000\u0000P\u01b8\u0001\u0000"+ - "\u0000\u0000R\u01bb\u0001\u0000\u0000\u0000T\u01bf\u0001\u0000\u0000\u0000"+ - "V\u01c3\u0001\u0000\u0000\u0000X\u01c5\u0001\u0000\u0000\u0000Z\u01c7"+ - "\u0001\u0000\u0000\u0000\\\u01c9\u0001\u0000\u0000\u0000^\u01cc\u0001"+ - "\u0000\u0000\u0000`\u01cf\u0001\u0000\u0000\u0000b\u01d2\u0001\u0000\u0000"+ - "\u0000d\u01d5\u0001\u0000\u0000\u0000f\u01d8\u0001\u0000\u0000\u0000h"+ - "\u01db\u0001\u0000\u0000\u0000j\u01de\u0001\u0000\u0000\u0000l\u01e2\u0001"+ - "\u0000\u0000\u0000n\u01e6\u0001\u0000\u0000\u0000p\u01eb\u0001\u0000\u0000"+ - "\u0000r\u01ee\u0001\u0000\u0000\u0000t\u01f1\u0001\u0000\u0000\u0000v"+ - "\u01f4\u0001\u0000\u0000\u0000x\u01f8\u0001\u0000\u0000\u0000z\u01fb\u0001"+ - "\u0000\u0000\u0000|\u0209\u0001\u0000\u0000\u0000~\u0226\u0001\u0000\u0000"+ - "\u0000\u0080\u0228\u0001\u0000\u0000\u0000\u0082\u0231\u0001\u0000\u0000"+ - "\u0000\u0084\u0239\u0001\u0000\u0000\u0000\u0086\u0242\u0001\u0000\u0000"+ - "\u0000\u0088\u024b\u0001\u0000\u0000\u0000\u008a\u0256\u0001\u0000\u0000"+ - "\u0000\u008c\u0261\u0001\u0000\u0000\u0000\u008e\u026c\u0001\u0000\u0000"+ - "\u0000\u0090\u026f\u0001\u0000\u0000\u0000\u0092\u0275\u0001\u0000\u0000"+ - "\u0000\u0094\u0278\u0001\u0000\u0000\u0000\u0096\u0283\u0001\u0000\u0000"+ - "\u0000\u0098\u028a\u0001\u0000\u0000\u0000\u009a\u028f\u0001\u0000\u0000"+ - "\u0000\u009c\u0294\u0001\u0000\u0000\u0000\u009e\u0298\u0001\u0000\u0000"+ - "\u0000\u00a0\u029c\u0001\u0000\u0000\u0000\u00a2\u02a2\u0001\u0000\u0000"+ - "\u0000\u00a4\u02aa\u0001\u0000\u0000\u0000\u00a6\u02b1\u0001\u0000\u0000"+ - "\u0000\u00a8\u02b6\u0001\u0000\u0000\u0000\u00aa\u02bf\u0001\u0000\u0000"+ - "\u0000\u00ac\u02c3\u0001\u0000\u0000\u0000\u00ae\u02ca\u0001\u0000\u0000"+ - "\u0000\u00b0\u02d0\u0001\u0000\u0000\u0000\u00b2\u02d9\u0001\u0000\u0000"+ - "\u0000\u00b4\u02e2\u0001\u0000\u0000\u0000\u00b6\u02e7\u0001\u0000\u0000"+ - "\u0000\u00b8\u02ec\u0001\u0000\u0000\u0000\u00ba\u02f4\u0001\u0000\u0000"+ - "\u0000\u00bc\u02f7\u0001\u0000\u0000\u0000\u00be\u02fd\u0001\u0000\u0000"+ - "\u0000\u00c0\u0304\u0001\u0000\u0000\u0000\u00c2\u0307\u0001\u0000\u0000"+ - "\u0000\u00c4\u030b\u0001\u0000\u0000\u0000\u00c6\u030e\u0001\u0000\u0000"+ - "\u0000\u00c8\u0313\u0001\u0000\u0000\u0000\u00ca\u0319\u0001\u0000\u0000"+ - "\u0000\u00cc\u031e\u0001\u0000\u0000\u0000\u00ce\u0326\u0001\u0000\u0000"+ - "\u0000\u00d0\u032c\u0001\u0000\u0000\u0000\u00d2\u0332\u0001\u0000\u0000"+ - "\u0000\u00d4\u0339\u0001\u0000\u0000\u0000\u00d6\u0340\u0001\u0000\u0000"+ - "\u0000\u00d8\u0346\u0001\u0000\u0000\u0000\u00da\u034c\u0001\u0000\u0000"+ - "\u0000\u00dc\u0352\u0001\u0000\u0000\u0000\u00de\u035f\u0001\u0000\u0000"+ - "\u0000\u00e0\u0365\u0001\u0000\u0000\u0000\u00e2\u036b\u0001\u0000\u0000"+ - "\u0000\u00e4\u0375\u0001\u0000\u0000\u0000\u00e6\u037e\u0001\u0000\u0000"+ - "\u0000\u00e8\u038a\u0001\u0000\u0000\u0000\u00ea\u0394\u0001\u0000\u0000"+ - "\u0000\u00ec\u03a0\u0001\u0000\u0000\u0000\u00ee\u03a9\u0001\u0000\u0000"+ - "\u0000\u00f0\u03c0\u0001\u0000\u0000\u0000\u00f2\u03c4\u0001\u0000\u0000"+ - "\u0000\u00f4\u03ca\u0001\u0000\u0000\u0000\u00f6\u03d0\u0001\u0000\u0000"+ - "\u0000\u00f8\u03d4\u0001\u0000\u0000\u0000\u00fa\u03e5\u0001\u0000\u0000"+ - "\u0000\u00fc\u03fb\u0001\u0000\u0000\u0000\u00fe\u03ff\u0001\u0000\u0000"+ - "\u0000\u0100\u0405\u0001\u0000\u0000\u0000\u0102\u040a\u0001\u0000\u0000"+ - "\u0000\u0104\u0410\u0001\u0000\u0000\u0000\u0106\u0416\u0001\u0000\u0000"+ - "\u0000\u0108\u041d\u0001\u0000\u0000\u0000\u010a\u0421\u0001\u0000\u0000"+ - "\u0000\u010c\u0423\u0001\u0000\u0000\u0000\u010e\u0437\u0001\u0000\u0000"+ - "\u0000\u0110\u0439\u0001\u0000\u0000\u0000\u0112\u0442\u0001\u0000\u0000"+ - "\u0000\u0114\u0444\u0001\u0000\u0000\u0000\u0116\u0448\u0001\u0000\u0000"+ - "\u0000\u0118\u044a\u0001\u0000\u0000\u0000\u011a\u044d\u0001\u0000\u0000"+ - "\u0000\u011c\u0457\u0001\u0000\u0000\u0000\u011e\u0459\u0001\u0000\u0000"+ - "\u0000\u0120\u0464\u0001\u0000\u0000\u0000\u0122\u0469\u0001\u0000\u0000"+ - "\u0000\u0124\u0475\u0001\u0000\u0000\u0000\u0126\u0481\u0001\u0000\u0000"+ - "\u0000\u0128\u0485\u0001\u0000\u0000\u0000\u012a\u0487\u0001\u0000\u0000"+ - "\u0000\u012c\u012d\u0004\u0000\u0000\u0000\u012d\u012e\u0005#\u0000\u0000"+ - "\u012e\u012f\u0005!\u0000\u0000\u012f\u0133\u0001\u0000\u0000\u0000\u0130"+ - "\u0132\b\u0000\u0000\u0000\u0131\u0130\u0001\u0000\u0000\u0000\u0132\u0135"+ - "\u0001\u0000\u0000\u0000\u0133\u0131\u0001\u0000\u0000\u0000\u0133\u0134"+ - "\u0001\u0000\u0000\u0000\u0134\u0003\u0001\u0000\u0000\u0000\u0135\u0133"+ - "\u0001\u0000\u0000\u0000\u0136\u0137\u0005/\u0000\u0000\u0137\u0138\u0005"+ - "*\u0000\u0000\u0138\u013c\u0001\u0000\u0000\u0000\u0139\u013b\t\u0000"+ - "\u0000\u0000\u013a\u0139\u0001\u0000\u0000\u0000\u013b\u013e\u0001\u0000"+ - "\u0000\u0000\u013c\u013d\u0001\u0000\u0000\u0000\u013c\u013a\u0001\u0000"+ - "\u0000\u0000\u013d\u013f\u0001\u0000\u0000\u0000\u013e\u013c\u0001\u0000"+ - "\u0000\u0000\u013f\u0140\u0005*\u0000\u0000\u0140\u0141\u0005/\u0000\u0000"+ - "\u0141\u0142\u0001\u0000\u0000\u0000\u0142\u0143\u0006\u0001\u0000\u0000"+ - "\u0143\u0005\u0001\u0000\u0000\u0000\u0144\u0145\u0005/\u0000\u0000\u0145"+ - "\u0146\u0005/\u0000\u0000\u0146\u014a\u0001\u0000\u0000\u0000\u0147\u0149"+ - "\b\u0000\u0000\u0000\u0148\u0147\u0001\u0000\u0000\u0000\u0149\u014c\u0001"+ - "\u0000\u0000\u0000\u014a\u0148\u0001\u0000\u0000\u0000\u014a\u014b\u0001"+ - "\u0000\u0000\u0000\u014b\u014d\u0001\u0000\u0000\u0000\u014c\u014a\u0001"+ - "\u0000\u0000\u0000\u014d\u014e\u0006\u0002\u0000\u0000\u014e\u0007\u0001"+ - "\u0000\u0000\u0000\u014f\u0150\u0005/\u0000\u0000\u0150\u0154\u0003\u0124"+ - "\u0091\u0000\u0151\u0153\u0003\u0126\u0092\u0000\u0152\u0151\u0001\u0000"+ - "\u0000\u0000\u0153\u0156\u0001\u0000\u0000\u0000\u0154\u0152\u0001\u0000"+ - "\u0000\u0000\u0154\u0155\u0001\u0000\u0000\u0000\u0155\u0157\u0001\u0000"+ - "\u0000\u0000\u0156\u0154\u0001\u0000\u0000\u0000\u0157\u0158\u0004\u0003"+ - "\u0001\u0000\u0158\u015c\u0005/\u0000\u0000\u0159\u015b\u0003\u0120\u008f"+ - "\u0000\u015a\u0159\u0001\u0000\u0000\u0000\u015b\u015e\u0001\u0000\u0000"+ - "\u0000\u015c\u015a\u0001\u0000\u0000\u0000\u015c\u015d\u0001\u0000\u0000"+ - "\u0000\u015d\t\u0001\u0000\u0000\u0000\u015e\u015c\u0001\u0000\u0000\u0000"+ - "\u015f\u0160\u0005[\u0000\u0000\u0160\u000b\u0001\u0000\u0000\u0000\u0161"+ - "\u0162\u0005]\u0000\u0000\u0162\r\u0001\u0000\u0000\u0000\u0163\u0164"+ - "\u0005(\u0000\u0000\u0164\u000f\u0001\u0000\u0000\u0000\u0165\u0166\u0005"+ - ")\u0000\u0000\u0166\u0011\u0001\u0000\u0000\u0000\u0167\u0168\u0005{\u0000"+ - "\u0000\u0168\u0169\u0006\b\u0001\u0000\u0169\u0013\u0001\u0000\u0000\u0000"+ - "\u016a\u016b\u0004\t\u0002\u0000\u016b\u016c\u0005}\u0000\u0000\u016c"+ - "\u016d\u0001\u0000\u0000\u0000\u016d\u016e\u0006\t\u0002\u0000\u016e\u0015"+ - "\u0001\u0000\u0000\u0000\u016f\u0170\u0005}\u0000\u0000\u0170\u0171\u0006"+ - "\n\u0003\u0000\u0171\u0017\u0001\u0000\u0000\u0000\u0172\u0173\u0005;"+ - "\u0000\u0000\u0173\u0019\u0001\u0000\u0000\u0000\u0174\u0175\u0005,\u0000"+ - "\u0000\u0175\u001b\u0001\u0000\u0000\u0000\u0176\u0177\u0005=\u0000\u0000"+ - "\u0177\u001d\u0001\u0000\u0000\u0000\u0178\u0179\u0005?\u0000\u0000\u0179"+ - "\u001f\u0001\u0000\u0000\u0000\u017a\u017b\u0005?\u0000\u0000\u017b\u017c"+ - "\u0005.\u0000\u0000\u017c!\u0001\u0000\u0000\u0000\u017d\u017e\u0005:"+ - "\u0000\u0000\u017e#\u0001\u0000\u0000\u0000\u017f\u0180\u0005.\u0000\u0000"+ - "\u0180\u0181\u0005.\u0000\u0000\u0181\u0182\u0005.\u0000\u0000\u0182%"+ - "\u0001\u0000\u0000\u0000\u0183\u0184\u0005.\u0000\u0000\u0184\'\u0001"+ - "\u0000\u0000\u0000\u0185\u0186\u0005+\u0000\u0000\u0186\u0187\u0005+\u0000"+ - "\u0000\u0187)\u0001\u0000\u0000\u0000\u0188\u0189\u0005-\u0000\u0000\u0189"+ - "\u018a\u0005-\u0000\u0000\u018a+\u0001\u0000\u0000\u0000\u018b\u018c\u0005"+ - "+\u0000\u0000\u018c-\u0001\u0000\u0000\u0000\u018d\u018e\u0005-\u0000"+ - "\u0000\u018e/\u0001\u0000\u0000\u0000\u018f\u0190\u0005~\u0000\u0000\u0190"+ - "1\u0001\u0000\u0000\u0000\u0191\u0192\u0005!\u0000\u0000\u01923\u0001"+ - "\u0000\u0000\u0000\u0193\u0194\u0005*\u0000\u0000\u01945\u0001\u0000\u0000"+ - "\u0000\u0195\u0196\u0005/\u0000\u0000\u01967\u0001\u0000\u0000\u0000\u0197"+ - "\u0198\u0005%\u0000\u0000\u01989\u0001\u0000\u0000\u0000\u0199\u019a\u0005"+ - "*\u0000\u0000\u019a\u019b\u0005*\u0000\u0000\u019b;\u0001\u0000\u0000"+ - "\u0000\u019c\u019d\u0005?\u0000\u0000\u019d\u019e\u0005?\u0000\u0000\u019e"+ - "=\u0001\u0000\u0000\u0000\u019f\u01a0\u0005#\u0000\u0000\u01a0?\u0001"+ - "\u0000\u0000\u0000\u01a1\u01a2\u0005>\u0000\u0000\u01a2\u01a3\u0005>\u0000"+ - "\u0000\u01a3A\u0001\u0000\u0000\u0000\u01a4\u01a5\u0005<\u0000\u0000\u01a5"+ - "\u01a6\u0005<\u0000\u0000\u01a6C\u0001\u0000\u0000\u0000\u01a7\u01a8\u0005"+ - ">\u0000\u0000\u01a8\u01a9\u0005>\u0000\u0000\u01a9\u01aa\u0005>\u0000"+ - "\u0000\u01aaE\u0001\u0000\u0000\u0000\u01ab\u01ac\u0005<\u0000\u0000\u01ac"+ - "G\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005>\u0000\u0000\u01aeI\u0001"+ - "\u0000\u0000\u0000\u01af\u01b0\u0005<\u0000\u0000\u01b0\u01b1\u0005=\u0000"+ - "\u0000\u01b1K\u0001\u0000\u0000\u0000\u01b2\u01b3\u0005>\u0000\u0000\u01b3"+ - "\u01b4\u0005=\u0000\u0000\u01b4M\u0001\u0000\u0000\u0000\u01b5\u01b6\u0005"+ - "=\u0000\u0000\u01b6\u01b7\u0005=\u0000\u0000\u01b7O\u0001\u0000\u0000"+ - "\u0000\u01b8\u01b9\u0005!\u0000\u0000\u01b9\u01ba\u0005=\u0000\u0000\u01ba"+ - "Q\u0001\u0000\u0000\u0000\u01bb\u01bc\u0005=\u0000\u0000\u01bc\u01bd\u0005"+ - "=\u0000\u0000\u01bd\u01be\u0005=\u0000\u0000\u01beS\u0001\u0000\u0000"+ - "\u0000\u01bf\u01c0\u0005!\u0000\u0000\u01c0\u01c1\u0005=\u0000\u0000\u01c1"+ - "\u01c2\u0005=\u0000\u0000\u01c2U\u0001\u0000\u0000\u0000\u01c3\u01c4\u0005"+ - "&\u0000\u0000\u01c4W\u0001\u0000\u0000\u0000\u01c5\u01c6\u0005^\u0000"+ - "\u0000\u01c6Y\u0001\u0000\u0000\u0000\u01c7\u01c8\u0005|\u0000\u0000\u01c8"+ - "[\u0001\u0000\u0000\u0000\u01c9\u01ca\u0005&\u0000\u0000\u01ca\u01cb\u0005"+ - "&\u0000\u0000\u01cb]\u0001\u0000\u0000\u0000\u01cc\u01cd\u0005|\u0000"+ - "\u0000\u01cd\u01ce\u0005|\u0000\u0000\u01ce_\u0001\u0000\u0000\u0000\u01cf"+ - "\u01d0\u0005*\u0000\u0000\u01d0\u01d1\u0005=\u0000\u0000\u01d1a\u0001"+ - "\u0000\u0000\u0000\u01d2\u01d3\u0005/\u0000\u0000\u01d3\u01d4\u0005=\u0000"+ - "\u0000\u01d4c\u0001\u0000\u0000\u0000\u01d5\u01d6\u0005%\u0000\u0000\u01d6"+ - "\u01d7\u0005=\u0000\u0000\u01d7e\u0001\u0000\u0000\u0000\u01d8\u01d9\u0005"+ - "+\u0000\u0000\u01d9\u01da\u0005=\u0000\u0000\u01dag\u0001\u0000\u0000"+ - "\u0000\u01db\u01dc\u0005-\u0000\u0000\u01dc\u01dd\u0005=\u0000\u0000\u01dd"+ - "i\u0001\u0000\u0000\u0000\u01de\u01df\u0005<\u0000\u0000\u01df\u01e0\u0005"+ - "<\u0000\u0000\u01e0\u01e1\u0005=\u0000\u0000\u01e1k\u0001\u0000\u0000"+ - "\u0000\u01e2\u01e3\u0005>\u0000\u0000\u01e3\u01e4\u0005>\u0000\u0000\u01e4"+ - "\u01e5\u0005=\u0000\u0000\u01e5m\u0001\u0000\u0000\u0000\u01e6\u01e7\u0005"+ - ">\u0000\u0000\u01e7\u01e8\u0005>\u0000\u0000\u01e8\u01e9\u0005>\u0000"+ - "\u0000\u01e9\u01ea\u0005=\u0000\u0000\u01eao\u0001\u0000\u0000\u0000\u01eb"+ - "\u01ec\u0005&\u0000\u0000\u01ec\u01ed\u0005=\u0000\u0000\u01edq\u0001"+ - "\u0000\u0000\u0000\u01ee\u01ef\u0005^\u0000\u0000\u01ef\u01f0\u0005=\u0000"+ - "\u0000\u01f0s\u0001\u0000\u0000\u0000\u01f1\u01f2\u0005|\u0000\u0000\u01f2"+ - "\u01f3\u0005=\u0000\u0000\u01f3u\u0001\u0000\u0000\u0000\u01f4\u01f5\u0005"+ - "*\u0000\u0000\u01f5\u01f6\u0005*\u0000\u0000\u01f6\u01f7\u0005=\u0000"+ - "\u0000\u01f7w\u0001\u0000\u0000\u0000\u01f8\u01f9\u0005=\u0000\u0000\u01f9"+ - "\u01fa\u0005>\u0000\u0000\u01fay\u0001\u0000\u0000\u0000\u01fb\u01fc\u0005"+ - "n\u0000\u0000\u01fc\u01fd\u0005u\u0000\u0000\u01fd\u01fe\u0005l\u0000"+ - "\u0000\u01fe\u01ff\u0005l\u0000\u0000\u01ff{\u0001\u0000\u0000\u0000\u0200"+ - "\u0201\u0005t\u0000\u0000\u0201\u0202\u0005r\u0000\u0000\u0202\u0203\u0005"+ - "u\u0000\u0000\u0203\u020a\u0005e\u0000\u0000\u0204\u0205\u0005f\u0000"+ - "\u0000\u0205\u0206\u0005a\u0000\u0000\u0206\u0207\u0005l\u0000\u0000\u0207"+ - "\u0208\u0005s\u0000\u0000\u0208\u020a\u0005e\u0000\u0000\u0209\u0200\u0001"+ - "\u0000\u0000\u0000\u0209\u0204\u0001\u0000\u0000\u0000\u020a}\u0001\u0000"+ - "\u0000\u0000\u020b\u020c\u0003\u011c\u008d\u0000\u020c\u020d\u0005.\u0000"+ - "\u0000\u020d\u0211\u0007\u0001\u0000\u0000\u020e\u0210\u0007\u0002\u0000"+ - "\u0000\u020f\u020e\u0001\u0000\u0000\u0000\u0210\u0213\u0001\u0000\u0000"+ - "\u0000\u0211\u020f\u0001\u0000\u0000\u0000\u0211\u0212\u0001\u0000\u0000"+ - "\u0000\u0212\u0215\u0001\u0000\u0000\u0000\u0213\u0211\u0001\u0000\u0000"+ - "\u0000\u0214\u0216\u0003\u011e\u008e\u0000\u0215\u0214\u0001\u0000\u0000"+ - "\u0000\u0215\u0216\u0001\u0000\u0000\u0000\u0216\u0227\u0001\u0000\u0000"+ - "\u0000\u0217\u0218\u0005.\u0000\u0000\u0218\u021c\u0007\u0001\u0000\u0000"+ - "\u0219\u021b\u0007\u0002\u0000\u0000\u021a\u0219\u0001\u0000\u0000\u0000"+ - "\u021b\u021e\u0001\u0000\u0000\u0000\u021c\u021a\u0001\u0000\u0000\u0000"+ - "\u021c\u021d\u0001\u0000\u0000\u0000\u021d\u0220\u0001\u0000\u0000\u0000"+ - "\u021e\u021c\u0001\u0000\u0000\u0000\u021f\u0221\u0003\u011e\u008e\u0000"+ - "\u0220\u021f\u0001\u0000\u0000\u0000\u0220\u0221\u0001\u0000\u0000\u0000"+ - "\u0221\u0227\u0001\u0000\u0000\u0000\u0222\u0224\u0003\u011c\u008d\u0000"+ - "\u0223\u0225\u0003\u011e\u008e\u0000\u0224\u0223\u0001\u0000\u0000\u0000"+ - "\u0224\u0225\u0001\u0000\u0000\u0000\u0225\u0227\u0001\u0000\u0000\u0000"+ - "\u0226\u020b\u0001\u0000\u0000\u0000\u0226\u0217\u0001\u0000\u0000\u0000"+ - "\u0226\u0222\u0001\u0000\u0000\u0000\u0227\u007f\u0001\u0000\u0000\u0000"+ - "\u0228\u0229\u00050\u0000\u0000\u0229\u022a\u0007\u0003\u0000\u0000\u022a"+ - "\u022e\u0007\u0004\u0000\u0000\u022b\u022d\u0003\u011a\u008c\u0000\u022c"+ - "\u022b\u0001\u0000\u0000\u0000\u022d\u0230\u0001\u0000\u0000\u0000\u022e"+ - "\u022c\u0001\u0000\u0000\u0000\u022e\u022f\u0001\u0000\u0000\u0000\u022f"+ - "\u0081\u0001\u0000\u0000\u0000\u0230\u022e\u0001\u0000\u0000\u0000\u0231"+ - "\u0233\u00050\u0000\u0000\u0232\u0234\u0007\u0005\u0000\u0000\u0233\u0232"+ - "\u0001\u0000\u0000\u0000\u0234\u0235\u0001\u0000\u0000\u0000\u0235\u0233"+ - "\u0001\u0000\u0000\u0000\u0235\u0236\u0001\u0000\u0000\u0000\u0236\u0237"+ - "\u0001\u0000\u0000\u0000\u0237\u0238\u0004@\u0003\u0000\u0238\u0083\u0001"+ - "\u0000\u0000\u0000\u0239\u023a\u00050\u0000\u0000\u023a\u023b\u0007\u0006"+ - "\u0000\u0000\u023b\u023f\u0007\u0005\u0000\u0000\u023c\u023e\u0007\u0007"+ - "\u0000\u0000\u023d\u023c\u0001\u0000\u0000\u0000\u023e\u0241\u0001\u0000"+ - "\u0000\u0000\u023f\u023d\u0001\u0000\u0000\u0000\u023f\u0240\u0001\u0000"+ - "\u0000\u0000\u0240\u0085\u0001\u0000\u0000\u0000\u0241\u023f\u0001\u0000"+ - "\u0000\u0000\u0242\u0243\u00050\u0000\u0000\u0243\u0244\u0007\b\u0000"+ - "\u0000\u0244\u0248\u0007\t\u0000\u0000\u0245\u0247\u0007\n\u0000\u0000"+ - "\u0246\u0245\u0001\u0000\u0000\u0000\u0247\u024a\u0001\u0000\u0000\u0000"+ - "\u0248\u0246\u0001\u0000\u0000\u0000\u0248\u0249\u0001\u0000\u0000\u0000"+ - "\u0249\u0087\u0001\u0000\u0000\u0000\u024a\u0248\u0001\u0000\u0000\u0000"+ - "\u024b\u024c\u00050\u0000\u0000\u024c\u024d\u0007\u0003\u0000\u0000\u024d"+ - "\u0251\u0007\u0004\u0000\u0000\u024e\u0250\u0003\u011a\u008c\u0000\u024f"+ - "\u024e\u0001\u0000\u0000\u0000\u0250\u0253\u0001\u0000\u0000\u0000\u0251"+ - "\u024f\u0001\u0000\u0000\u0000\u0251\u0252\u0001\u0000\u0000\u0000\u0252"+ - "\u0254\u0001\u0000\u0000\u0000\u0253\u0251\u0001\u0000\u0000\u0000\u0254"+ - "\u0255\u0005n\u0000\u0000\u0255\u0089\u0001\u0000\u0000\u0000\u0256\u0257"+ - "\u00050\u0000\u0000\u0257\u0258\u0007\u0006\u0000\u0000\u0258\u025c\u0007"+ - "\u0005\u0000\u0000\u0259\u025b\u0007\u0007\u0000\u0000\u025a\u0259\u0001"+ - "\u0000\u0000\u0000\u025b\u025e\u0001\u0000\u0000\u0000\u025c\u025a\u0001"+ - "\u0000\u0000\u0000\u025c\u025d\u0001\u0000\u0000\u0000\u025d\u025f\u0001"+ - "\u0000\u0000\u0000\u025e\u025c\u0001\u0000\u0000\u0000\u025f\u0260\u0005"+ - "n\u0000\u0000\u0260\u008b\u0001\u0000\u0000\u0000\u0261\u0262\u00050\u0000"+ - "\u0000\u0262\u0263\u0007\b\u0000\u0000\u0263\u0267\u0007\t\u0000\u0000"+ - "\u0264\u0266\u0007\n\u0000\u0000\u0265\u0264\u0001\u0000\u0000\u0000\u0266"+ - "\u0269\u0001\u0000\u0000\u0000\u0267\u0265\u0001\u0000\u0000\u0000\u0267"+ - "\u0268\u0001\u0000\u0000\u0000\u0268\u026a\u0001\u0000\u0000\u0000\u0269"+ - "\u0267\u0001\u0000\u0000\u0000\u026a\u026b\u0005n\u0000\u0000\u026b\u008d"+ - "\u0001\u0000\u0000\u0000\u026c\u026d\u0003\u011c\u008d\u0000\u026d\u026e"+ - "\u0005n\u0000\u0000\u026e\u008f\u0001\u0000\u0000\u0000\u026f\u0270\u0005"+ - "b\u0000\u0000\u0270\u0271\u0005r\u0000\u0000\u0271\u0272\u0005e\u0000"+ - "\u0000\u0272\u0273\u0005a\u0000\u0000\u0273\u0274\u0005k\u0000\u0000\u0274"+ - "\u0091\u0001\u0000\u0000\u0000\u0275\u0276\u0005d\u0000\u0000\u0276\u0277"+ - "\u0005o\u0000\u0000\u0277\u0093\u0001\u0000\u0000\u0000\u0278\u0279\u0005"+ - "i\u0000\u0000\u0279\u027a\u0005n\u0000\u0000\u027a\u027b\u0005s\u0000"+ - "\u0000\u027b\u027c\u0005t\u0000\u0000\u027c\u027d\u0005a\u0000\u0000\u027d"+ - "\u027e\u0005n\u0000\u0000\u027e\u027f\u0005c\u0000\u0000\u027f\u0280\u0005"+ - "e\u0000\u0000\u0280\u0281\u0005o\u0000\u0000\u0281\u0282\u0005f\u0000"+ - "\u0000\u0282\u0095\u0001\u0000\u0000\u0000\u0283\u0284\u0005t\u0000\u0000"+ - "\u0284\u0285\u0005y\u0000\u0000\u0285\u0286\u0005p\u0000\u0000\u0286\u0287"+ - "\u0005e\u0000\u0000\u0287\u0288\u0005o\u0000\u0000\u0288\u0289\u0005f"+ - "\u0000\u0000\u0289\u0097\u0001\u0000\u0000\u0000\u028a\u028b\u0005c\u0000"+ - "\u0000\u028b\u028c\u0005a\u0000\u0000\u028c\u028d\u0005s\u0000\u0000\u028d"+ - "\u028e\u0005e\u0000\u0000\u028e\u0099\u0001\u0000\u0000\u0000\u028f\u0290"+ - "\u0005e\u0000\u0000\u0290\u0291\u0005l\u0000\u0000\u0291\u0292\u0005s"+ - "\u0000\u0000\u0292\u0293\u0005e\u0000\u0000\u0293\u009b\u0001\u0000\u0000"+ - "\u0000\u0294\u0295\u0005n\u0000\u0000\u0295\u0296\u0005e\u0000\u0000\u0296"+ - "\u0297\u0005w\u0000\u0000\u0297\u009d\u0001\u0000\u0000\u0000\u0298\u0299"+ - "\u0005v\u0000\u0000\u0299\u029a\u0005a\u0000\u0000\u029a\u029b\u0005r"+ - "\u0000\u0000\u029b\u009f\u0001\u0000\u0000\u0000\u029c\u029d\u0005c\u0000"+ - "\u0000\u029d\u029e\u0005a\u0000\u0000\u029e\u029f\u0005t\u0000\u0000\u029f"+ - "\u02a0\u0005c\u0000\u0000\u02a0\u02a1\u0005h\u0000\u0000\u02a1\u00a1\u0001"+ - "\u0000\u0000\u0000\u02a2\u02a3\u0005f\u0000\u0000\u02a3\u02a4\u0005i\u0000"+ - "\u0000\u02a4\u02a5\u0005n\u0000\u0000\u02a5\u02a6\u0005a\u0000\u0000\u02a6"+ - "\u02a7\u0005l\u0000\u0000\u02a7\u02a8\u0005l\u0000\u0000\u02a8\u02a9\u0005"+ - "y\u0000\u0000\u02a9\u00a3\u0001\u0000\u0000\u0000\u02aa\u02ab\u0005r\u0000"+ - "\u0000\u02ab\u02ac\u0005e\u0000\u0000\u02ac\u02ad\u0005t\u0000\u0000\u02ad"+ - "\u02ae\u0005u\u0000\u0000\u02ae\u02af\u0005r\u0000\u0000\u02af\u02b0\u0005"+ - "n\u0000\u0000\u02b0\u00a5\u0001\u0000\u0000\u0000\u02b1\u02b2\u0005v\u0000"+ - "\u0000\u02b2\u02b3\u0005o\u0000\u0000\u02b3\u02b4\u0005i\u0000\u0000\u02b4"+ - "\u02b5\u0005d\u0000\u0000\u02b5\u00a7\u0001\u0000\u0000\u0000\u02b6\u02b7"+ - "\u0005c\u0000\u0000\u02b7\u02b8\u0005o\u0000\u0000\u02b8\u02b9\u0005n"+ - "\u0000\u0000\u02b9\u02ba\u0005t\u0000\u0000\u02ba\u02bb\u0005i\u0000\u0000"+ - "\u02bb\u02bc\u0005n\u0000\u0000\u02bc\u02bd\u0005u\u0000\u0000\u02bd\u02be"+ - "\u0005e\u0000\u0000\u02be\u00a9\u0001\u0000\u0000\u0000\u02bf\u02c0\u0005"+ - "f\u0000\u0000\u02c0\u02c1\u0005o\u0000\u0000\u02c1\u02c2\u0005r\u0000"+ - "\u0000\u02c2\u00ab\u0001\u0000\u0000\u0000\u02c3\u02c4\u0005s\u0000\u0000"+ - "\u02c4\u02c5\u0005w\u0000\u0000\u02c5\u02c6\u0005i\u0000\u0000\u02c6\u02c7"+ - "\u0005t\u0000\u0000\u02c7\u02c8\u0005c\u0000\u0000\u02c8\u02c9\u0005h"+ - "\u0000\u0000\u02c9\u00ad\u0001\u0000\u0000\u0000\u02ca\u02cb\u0005w\u0000"+ - "\u0000\u02cb\u02cc\u0005h\u0000\u0000\u02cc\u02cd\u0005i\u0000\u0000\u02cd"+ - "\u02ce\u0005l\u0000\u0000\u02ce\u02cf\u0005e\u0000\u0000\u02cf\u00af\u0001"+ - "\u0000\u0000\u0000\u02d0\u02d1\u0005d\u0000\u0000\u02d1\u02d2\u0005e\u0000"+ - "\u0000\u02d2\u02d3\u0005b\u0000\u0000\u02d3\u02d4\u0005u\u0000\u0000\u02d4"+ - "\u02d5\u0005g\u0000\u0000\u02d5\u02d6\u0005g\u0000\u0000\u02d6\u02d7\u0005"+ - "e\u0000\u0000\u02d7\u02d8\u0005r\u0000\u0000\u02d8\u00b1\u0001\u0000\u0000"+ - "\u0000\u02d9\u02da\u0005f\u0000\u0000\u02da\u02db\u0005u\u0000\u0000\u02db"+ - "\u02dc\u0005n\u0000\u0000\u02dc\u02dd\u0005c\u0000\u0000\u02dd\u02de\u0005"+ - "t\u0000\u0000\u02de\u02df\u0005i\u0000\u0000\u02df\u02e0\u0005o\u0000"+ - "\u0000\u02e0\u02e1\u0005n\u0000\u0000\u02e1\u00b3\u0001\u0000\u0000\u0000"+ - "\u02e2\u02e3\u0005t\u0000\u0000\u02e3\u02e4\u0005h\u0000\u0000\u02e4\u02e5"+ - "\u0005i\u0000\u0000\u02e5\u02e6\u0005s\u0000\u0000\u02e6\u00b5\u0001\u0000"+ - "\u0000\u0000\u02e7\u02e8\u0005w\u0000\u0000\u02e8\u02e9\u0005i\u0000\u0000"+ - "\u02e9\u02ea\u0005t\u0000\u0000\u02ea\u02eb\u0005h\u0000\u0000\u02eb\u00b7"+ - "\u0001\u0000\u0000\u0000\u02ec\u02ed\u0005d\u0000\u0000\u02ed\u02ee\u0005"+ - "e\u0000\u0000\u02ee\u02ef\u0005f\u0000\u0000\u02ef\u02f0\u0005a\u0000"+ - "\u0000\u02f0\u02f1\u0005u\u0000\u0000\u02f1\u02f2\u0005l\u0000\u0000\u02f2"+ - "\u02f3\u0005t\u0000\u0000\u02f3\u00b9\u0001\u0000\u0000\u0000\u02f4\u02f5"+ - "\u0005i\u0000\u0000\u02f5\u02f6\u0005f\u0000\u0000\u02f6\u00bb\u0001\u0000"+ - "\u0000\u0000\u02f7\u02f8\u0005t\u0000\u0000\u02f8\u02f9\u0005h\u0000\u0000"+ - "\u02f9\u02fa\u0005r\u0000\u0000\u02fa\u02fb\u0005o\u0000\u0000\u02fb\u02fc"+ - "\u0005w\u0000\u0000\u02fc\u00bd\u0001\u0000\u0000\u0000\u02fd\u02fe\u0005"+ - "d\u0000\u0000\u02fe\u02ff\u0005e\u0000\u0000\u02ff\u0300\u0005l\u0000"+ - "\u0000\u0300\u0301\u0005e\u0000\u0000\u0301\u0302\u0005t\u0000\u0000\u0302"+ - "\u0303\u0005e\u0000\u0000\u0303\u00bf\u0001\u0000\u0000\u0000\u0304\u0305"+ - "\u0005i\u0000\u0000\u0305\u0306\u0005n\u0000\u0000\u0306\u00c1\u0001\u0000"+ - "\u0000\u0000\u0307\u0308\u0005t\u0000\u0000\u0308\u0309\u0005r\u0000\u0000"+ - "\u0309\u030a\u0005y\u0000\u0000\u030a\u00c3\u0001\u0000\u0000\u0000\u030b"+ - "\u030c\u0005a\u0000\u0000\u030c\u030d\u0005s\u0000\u0000\u030d\u00c5\u0001"+ - "\u0000\u0000\u0000\u030e\u030f\u0005f\u0000\u0000\u030f\u0310\u0005r\u0000"+ - "\u0000\u0310\u0311\u0005o\u0000\u0000\u0311\u0312\u0005m\u0000\u0000\u0312"+ - "\u00c7\u0001\u0000\u0000\u0000\u0313\u0314\u0005c\u0000\u0000\u0314\u0315"+ - "\u0005l\u0000\u0000\u0315\u0316\u0005a\u0000\u0000\u0316\u0317\u0005s"+ - "\u0000\u0000\u0317\u0318\u0005s\u0000\u0000\u0318\u00c9\u0001\u0000\u0000"+ - "\u0000\u0319\u031a\u0005e\u0000\u0000\u031a\u031b\u0005n\u0000\u0000\u031b"+ - "\u031c\u0005u\u0000\u0000\u031c\u031d\u0005m\u0000\u0000\u031d\u00cb\u0001"+ - "\u0000\u0000\u0000\u031e\u031f\u0005e\u0000\u0000\u031f\u0320\u0005x\u0000"+ - "\u0000\u0320\u0321\u0005t\u0000\u0000\u0321\u0322\u0005e\u0000\u0000\u0322"+ - "\u0323\u0005n\u0000\u0000\u0323\u0324\u0005d\u0000\u0000\u0324\u0325\u0005"+ - "s\u0000\u0000\u0325\u00cd\u0001\u0000\u0000\u0000\u0326\u0327\u0005s\u0000"+ - "\u0000\u0327\u0328\u0005u\u0000\u0000\u0328\u0329\u0005p\u0000\u0000\u0329"+ - "\u032a\u0005e\u0000\u0000\u032a\u032b\u0005r\u0000\u0000\u032b\u00cf\u0001"+ - "\u0000\u0000\u0000\u032c\u032d\u0005c\u0000\u0000\u032d\u032e\u0005o\u0000"+ - "\u0000\u032e\u032f\u0005n\u0000\u0000\u032f\u0330\u0005s\u0000\u0000\u0330"+ - "\u0331\u0005t\u0000\u0000\u0331\u00d1\u0001\u0000\u0000\u0000\u0332\u0333"+ - "\u0005e\u0000\u0000\u0333\u0334\u0005x\u0000\u0000\u0334\u0335\u0005p"+ - "\u0000\u0000\u0335\u0336\u0005o\u0000\u0000\u0336\u0337\u0005r\u0000\u0000"+ - "\u0337\u0338\u0005t\u0000\u0000\u0338\u00d3\u0001\u0000\u0000\u0000\u0339"+ - "\u033a\u0005i\u0000\u0000\u033a\u033b\u0005m\u0000\u0000\u033b\u033c\u0005"+ - "p\u0000\u0000\u033c\u033d\u0005o\u0000\u0000\u033d\u033e\u0005r\u0000"+ - "\u0000\u033e\u033f\u0005t\u0000\u0000\u033f\u00d5\u0001\u0000\u0000\u0000"+ - "\u0340\u0341\u0005a\u0000\u0000\u0341\u0342\u0005s\u0000\u0000\u0342\u0343"+ - "\u0005y\u0000\u0000\u0343\u0344\u0005n\u0000\u0000\u0344\u0345\u0005c"+ - "\u0000\u0000\u0345\u00d7\u0001\u0000\u0000\u0000\u0346\u0347\u0005a\u0000"+ - "\u0000\u0347\u0348\u0005w\u0000\u0000\u0348\u0349\u0005a\u0000\u0000\u0349"+ - "\u034a\u0005i\u0000\u0000\u034a\u034b\u0005t\u0000\u0000\u034b\u00d9\u0001"+ - "\u0000\u0000\u0000\u034c\u034d\u0005y\u0000\u0000\u034d\u034e\u0005i\u0000"+ - "\u0000\u034e\u034f\u0005e\u0000\u0000\u034f\u0350\u0005l\u0000\u0000\u0350"+ - "\u0351\u0005d\u0000\u0000\u0351\u00db\u0001\u0000\u0000\u0000\u0352\u0353"+ - "\u0005i\u0000\u0000\u0353\u0354\u0005m\u0000\u0000\u0354\u0355\u0005p"+ - "\u0000\u0000\u0355\u0356\u0005l\u0000\u0000\u0356\u0357\u0005e\u0000\u0000"+ - "\u0357\u0358\u0005m\u0000\u0000\u0358\u0359\u0005e\u0000\u0000\u0359\u035a"+ - "\u0005n\u0000\u0000\u035a\u035b\u0005t\u0000\u0000\u035b\u035c\u0005s"+ - "\u0000\u0000\u035c\u035d\u0001\u0000\u0000\u0000\u035d\u035e\u0004m\u0004"+ - "\u0000\u035e\u00dd\u0001\u0000\u0000\u0000\u035f\u0360\u0005l\u0000\u0000"+ - "\u0360\u0361\u0005e\u0000\u0000\u0361\u0362\u0005t\u0000\u0000\u0362\u0363"+ - "\u0001\u0000\u0000\u0000\u0363\u0364\u0004n\u0005\u0000\u0364\u00df\u0001"+ - "\u0000\u0000\u0000\u0365\u0366\u0005l\u0000\u0000\u0366\u0367\u0005e\u0000"+ - "\u0000\u0367\u0368\u0005t\u0000\u0000\u0368\u0369\u0001\u0000\u0000\u0000"+ - "\u0369\u036a\u0004o\u0006\u0000\u036a\u00e1\u0001\u0000\u0000\u0000\u036b"+ - "\u036c\u0005p\u0000\u0000\u036c\u036d\u0005r\u0000\u0000\u036d\u036e\u0005"+ - "i\u0000\u0000\u036e\u036f\u0005v\u0000\u0000\u036f\u0370\u0005a\u0000"+ - "\u0000\u0370\u0371\u0005t\u0000\u0000\u0371\u0372\u0005e\u0000\u0000\u0372"+ - "\u0373\u0001\u0000\u0000\u0000\u0373\u0374\u0004p\u0007\u0000\u0374\u00e3"+ - "\u0001\u0000\u0000\u0000\u0375\u0376\u0005p\u0000\u0000\u0376\u0377\u0005"+ - "u\u0000\u0000\u0377\u0378\u0005b\u0000\u0000\u0378\u0379\u0005l\u0000"+ - "\u0000\u0379\u037a\u0005i\u0000\u0000\u037a\u037b\u0005c\u0000\u0000\u037b"+ - "\u037c\u0001\u0000\u0000\u0000\u037c\u037d\u0004q\b\u0000\u037d\u00e5"+ - "\u0001\u0000\u0000\u0000\u037e\u037f\u0005i\u0000\u0000\u037f\u0380\u0005"+ - "n\u0000\u0000\u0380\u0381\u0005t\u0000\u0000\u0381\u0382\u0005e\u0000"+ - "\u0000\u0382\u0383\u0005r\u0000\u0000\u0383\u0384\u0005f\u0000\u0000\u0384"+ - "\u0385\u0005a\u0000\u0000\u0385\u0386\u0005c\u0000\u0000\u0386\u0387\u0005"+ - "e\u0000\u0000\u0387\u0388\u0001\u0000\u0000\u0000\u0388\u0389\u0004r\t"+ - "\u0000\u0389\u00e7\u0001\u0000\u0000\u0000\u038a\u038b\u0005p\u0000\u0000"+ - "\u038b\u038c\u0005a\u0000\u0000\u038c\u038d\u0005c\u0000\u0000\u038d\u038e"+ - "\u0005k\u0000\u0000\u038e\u038f\u0005a\u0000\u0000\u038f\u0390\u0005g"+ - "\u0000\u0000\u0390\u0391\u0005e\u0000\u0000\u0391\u0392\u0001\u0000\u0000"+ - "\u0000\u0392\u0393\u0004s\n\u0000\u0393\u00e9\u0001\u0000\u0000\u0000"+ - "\u0394\u0395\u0005p\u0000\u0000\u0395\u0396\u0005r\u0000\u0000\u0396\u0397"+ - "\u0005o\u0000\u0000\u0397\u0398\u0005t\u0000\u0000\u0398\u0399\u0005e"+ - "\u0000\u0000\u0399\u039a\u0005c\u0000\u0000\u039a\u039b\u0005t\u0000\u0000"+ - "\u039b\u039c\u0005e\u0000\u0000\u039c\u039d\u0005d\u0000\u0000\u039d\u039e"+ - "\u0001\u0000\u0000\u0000\u039e\u039f\u0004t\u000b\u0000\u039f\u00eb\u0001"+ - "\u0000\u0000\u0000\u03a0\u03a1\u0005s\u0000\u0000\u03a1\u03a2\u0005t\u0000"+ - "\u0000\u03a2\u03a3\u0005a\u0000\u0000\u03a3\u03a4\u0005t\u0000\u0000\u03a4"+ - "\u03a5\u0005i\u0000\u0000\u03a5\u03a6\u0005c\u0000\u0000\u03a6\u03a7\u0001"+ - "\u0000\u0000\u0000\u03a7\u03a8\u0004u\f\u0000\u03a8\u00ed\u0001\u0000"+ - "\u0000\u0000\u03a9\u03ad\u0003\u0122\u0090\u0000\u03aa\u03ac\u0003\u0120"+ - "\u008f\u0000\u03ab\u03aa\u0001\u0000\u0000\u0000\u03ac\u03af\u0001\u0000"+ - "\u0000\u0000\u03ad\u03ab\u0001\u0000\u0000\u0000\u03ad\u03ae\u0001\u0000"+ - "\u0000\u0000\u03ae\u00ef\u0001\u0000\u0000\u0000\u03af\u03ad\u0001\u0000"+ - "\u0000\u0000\u03b0\u03b4\u0005\"\u0000\u0000\u03b1\u03b3\u0003\u0104\u0081"+ - "\u0000\u03b2\u03b1\u0001\u0000\u0000\u0000\u03b3\u03b6\u0001\u0000\u0000"+ - "\u0000\u03b4\u03b2\u0001\u0000\u0000\u0000\u03b4\u03b5\u0001\u0000\u0000"+ - "\u0000\u03b5\u03b7\u0001\u0000\u0000\u0000\u03b6\u03b4\u0001\u0000\u0000"+ - "\u0000\u03b7\u03c1\u0005\"\u0000\u0000\u03b8\u03bc\u0005\'\u0000\u0000"+ - "\u03b9\u03bb\u0003\u0106\u0082\u0000\u03ba\u03b9\u0001\u0000\u0000\u0000"+ - "\u03bb\u03be\u0001\u0000\u0000\u0000\u03bc\u03ba\u0001\u0000\u0000\u0000"+ - "\u03bc\u03bd\u0001\u0000\u0000\u0000\u03bd\u03bf\u0001\u0000\u0000\u0000"+ - "\u03be\u03bc\u0001\u0000\u0000\u0000\u03bf\u03c1\u0005\'\u0000\u0000\u03c0"+ - "\u03b0\u0001\u0000\u0000\u0000\u03c0\u03b8\u0001\u0000\u0000\u0000\u03c1"+ - "\u03c2\u0001\u0000\u0000\u0000\u03c2\u03c3\u0006w\u0004\u0000\u03c3\u00f1"+ - "\u0001\u0000\u0000\u0000\u03c4\u03c5\u0005`\u0000\u0000\u03c5\u03c6\u0006"+ - "x\u0005\u0000\u03c6\u03c7\u0001\u0000\u0000\u0000\u03c7\u03c8\u0006x\u0006"+ - "\u0000\u03c8\u00f3\u0001\u0000\u0000\u0000\u03c9\u03cb\u0007\u000b\u0000"+ - "\u0000\u03ca\u03c9\u0001\u0000\u0000\u0000\u03cb\u03cc\u0001\u0000\u0000"+ - "\u0000\u03cc\u03ca\u0001\u0000\u0000\u0000\u03cc\u03cd\u0001\u0000\u0000"+ - "\u0000\u03cd\u03ce\u0001\u0000\u0000\u0000\u03ce\u03cf\u0006y\u0000\u0000"+ - "\u03cf\u00f5\u0001\u0000\u0000\u0000\u03d0\u03d1\u0007\u0000\u0000\u0000"+ - "\u03d1\u03d2\u0001\u0000\u0000\u0000\u03d2\u03d3\u0006z\u0000\u0000\u03d3"+ - "\u00f7\u0001\u0000\u0000\u0000\u03d4\u03d5\u0005<\u0000\u0000\u03d5\u03d6"+ - "\u0005!\u0000\u0000\u03d6\u03d7\u0005-\u0000\u0000\u03d7\u03d8\u0005-"+ - "\u0000\u0000\u03d8\u03dc\u0001\u0000\u0000\u0000\u03d9\u03db\t\u0000\u0000"+ - "\u0000\u03da\u03d9\u0001\u0000\u0000\u0000\u03db\u03de\u0001\u0000\u0000"+ - "\u0000\u03dc\u03dd\u0001\u0000\u0000\u0000\u03dc\u03da\u0001\u0000\u0000"+ - "\u0000\u03dd\u03df\u0001\u0000\u0000\u0000\u03de\u03dc\u0001\u0000\u0000"+ - "\u0000\u03df\u03e0\u0005-\u0000\u0000\u03e0\u03e1\u0005-\u0000\u0000\u03e1"+ - "\u03e2\u0005>\u0000\u0000\u03e2\u03e3\u0001\u0000\u0000\u0000\u03e3\u03e4"+ - "\u0006{\u0000\u0000\u03e4\u00f9\u0001\u0000\u0000\u0000\u03e5\u03e6\u0005"+ - "<\u0000\u0000\u03e6\u03e7\u0005!\u0000\u0000\u03e7\u03e8\u0005[\u0000"+ - "\u0000\u03e8\u03e9\u0005C\u0000\u0000\u03e9\u03ea\u0005D\u0000\u0000\u03ea"+ - "\u03eb\u0005A\u0000\u0000\u03eb\u03ec\u0005T\u0000\u0000\u03ec\u03ed\u0005"+ - "A\u0000\u0000\u03ed\u03ee\u0005[\u0000\u0000\u03ee\u03f2\u0001\u0000\u0000"+ - "\u0000\u03ef\u03f1\t\u0000\u0000\u0000\u03f0\u03ef\u0001\u0000\u0000\u0000"+ - "\u03f1\u03f4\u0001\u0000\u0000\u0000\u03f2\u03f3\u0001\u0000\u0000\u0000"+ - "\u03f2\u03f0\u0001\u0000\u0000\u0000\u03f3\u03f5\u0001\u0000\u0000\u0000"+ - "\u03f4\u03f2\u0001\u0000\u0000\u0000\u03f5\u03f6\u0005]\u0000\u0000\u03f6"+ - "\u03f7\u0005]\u0000\u0000\u03f7\u03f8\u0005>\u0000\u0000\u03f8\u03f9\u0001"+ - "\u0000\u0000\u0000\u03f9\u03fa\u0006|\u0000\u0000\u03fa\u00fb\u0001\u0000"+ - "\u0000\u0000\u03fb\u03fc\t\u0000\u0000\u0000\u03fc\u03fd\u0001\u0000\u0000"+ - "\u0000\u03fd\u03fe\u0006}\u0007\u0000\u03fe\u00fd\u0001\u0000\u0000\u0000"+ - "\u03ff\u0400\u0005`\u0000\u0000\u0400\u0401\u0006~\b\u0000\u0401\u0402"+ - "\u0001\u0000\u0000\u0000\u0402\u0403\u0006~\t\u0000\u0403\u0404\u0006"+ - "~\u0002\u0000\u0404\u00ff\u0001\u0000\u0000\u0000\u0405\u0406\u0005$\u0000"+ - "\u0000\u0406\u0407\u0005{\u0000\u0000\u0407\u0408\u0001\u0000\u0000\u0000"+ - "\u0408\u0409\u0006\u007f\n\u0000\u0409\u0101\u0001\u0000\u0000\u0000\u040a"+ - "\u040b\b\f\u0000\u0000\u040b\u0103\u0001\u0000\u0000\u0000\u040c\u0411"+ - "\b\r\u0000\u0000\u040d\u040e\u0005\\\u0000\u0000\u040e\u0411\u0003\u0108"+ - "\u0083\u0000\u040f\u0411\u0003\u0118\u008b\u0000\u0410\u040c\u0001\u0000"+ - "\u0000\u0000\u0410\u040d\u0001\u0000\u0000\u0000\u0410\u040f\u0001\u0000"+ - "\u0000\u0000\u0411\u0105\u0001\u0000\u0000\u0000\u0412\u0417\b\u000e\u0000"+ - "\u0000\u0413\u0414\u0005\\\u0000\u0000\u0414\u0417\u0003\u0108\u0083\u0000"+ - "\u0415\u0417\u0003\u0118\u008b\u0000\u0416\u0412\u0001\u0000\u0000\u0000"+ - "\u0416\u0413\u0001\u0000\u0000\u0000\u0416\u0415\u0001\u0000\u0000\u0000"+ - "\u0417\u0107\u0001\u0000\u0000\u0000\u0418\u041e\u0003\u010a\u0084\u0000"+ - "\u0419\u041e\u00050\u0000\u0000\u041a\u041e\u0003\u010c\u0085\u0000\u041b"+ - "\u041e\u0003\u010e\u0086\u0000\u041c\u041e\u0003\u0110\u0087\u0000\u041d"+ - "\u0418\u0001\u0000\u0000\u0000\u041d\u0419\u0001\u0000\u0000\u0000\u041d"+ - "\u041a\u0001\u0000\u0000\u0000\u041d\u041b\u0001\u0000\u0000\u0000\u041d"+ - "\u041c\u0001\u0000\u0000\u0000\u041e\u0109\u0001\u0000\u0000\u0000\u041f"+ - "\u0422\u0003\u0112\u0088\u0000\u0420\u0422\u0003\u0114\u0089\u0000\u0421"+ - "\u041f\u0001\u0000\u0000\u0000\u0421\u0420\u0001\u0000\u0000\u0000\u0422"+ - "\u010b\u0001\u0000\u0000\u0000\u0423\u0424\u0005x\u0000\u0000\u0424\u0425"+ - "\u0003\u011a\u008c\u0000\u0425\u0426\u0003\u011a\u008c\u0000\u0426\u010d"+ - "\u0001\u0000\u0000\u0000\u0427\u0428\u0005u\u0000\u0000\u0428\u0429\u0003"+ - "\u011a\u008c\u0000\u0429\u042a\u0003\u011a\u008c\u0000\u042a\u042b\u0003"+ - "\u011a\u008c\u0000\u042b\u042c\u0003\u011a\u008c\u0000\u042c\u0438\u0001"+ - "\u0000\u0000\u0000\u042d\u042e\u0005u\u0000\u0000\u042e\u042f\u0005{\u0000"+ - "\u0000\u042f\u0431\u0003\u011a\u008c\u0000\u0430\u0432\u0003\u011a\u008c"+ - "\u0000\u0431\u0430\u0001\u0000\u0000\u0000\u0432\u0433\u0001\u0000\u0000"+ - "\u0000\u0433\u0431\u0001\u0000\u0000\u0000\u0433\u0434\u0001\u0000\u0000"+ - "\u0000\u0434\u0435\u0001\u0000\u0000\u0000\u0435\u0436\u0005}\u0000\u0000"+ - "\u0436\u0438\u0001\u0000\u0000\u0000\u0437\u0427\u0001\u0000\u0000\u0000"+ - "\u0437\u042d\u0001\u0000\u0000\u0000\u0438\u010f\u0001\u0000\u0000\u0000"+ - "\u0439\u043a\u0005u\u0000\u0000\u043a\u043c\u0005{\u0000\u0000\u043b\u043d"+ - "\u0003\u011a\u008c\u0000\u043c\u043b\u0001\u0000\u0000\u0000\u043d\u043e"+ - "\u0001\u0000\u0000\u0000\u043e\u043c\u0001\u0000\u0000\u0000\u043e\u043f"+ - "\u0001\u0000\u0000\u0000\u043f\u0440\u0001\u0000\u0000\u0000\u0440\u0441"+ - "\u0005}\u0000\u0000\u0441\u0111\u0001\u0000\u0000\u0000\u0442\u0443\u0007"+ - "\u000f\u0000\u0000\u0443\u0113\u0001\u0000\u0000\u0000\u0444\u0445\b\u0010"+ - "\u0000\u0000\u0445\u0115\u0001\u0000\u0000\u0000\u0446\u0449\u0003\u0112"+ - "\u0088\u0000\u0447\u0449\u0007\u0011\u0000\u0000\u0448\u0446\u0001\u0000"+ - "\u0000\u0000\u0448\u0447\u0001\u0000\u0000\u0000\u0449\u0117\u0001\u0000"+ - "\u0000\u0000\u044a\u044b\u0005\\\u0000\u0000\u044b\u044c\u0007\u0000\u0000"+ - "\u0000\u044c\u0119\u0001\u0000\u0000\u0000\u044d\u044e\u0007\u0012\u0000"+ - "\u0000\u044e\u011b\u0001\u0000\u0000\u0000\u044f\u0458\u00050\u0000\u0000"+ - "\u0450\u0454\u0007\u0013\u0000\u0000\u0451\u0453\u0007\u0002\u0000\u0000"+ - "\u0452\u0451\u0001\u0000\u0000\u0000\u0453\u0456\u0001\u0000\u0000\u0000"+ - "\u0454\u0452\u0001\u0000\u0000\u0000\u0454\u0455\u0001\u0000\u0000\u0000"+ - "\u0455\u0458\u0001\u0000\u0000\u0000\u0456\u0454\u0001\u0000\u0000\u0000"+ - "\u0457\u044f\u0001\u0000\u0000\u0000\u0457\u0450\u0001\u0000\u0000\u0000"+ - "\u0458\u011d\u0001\u0000\u0000\u0000\u0459\u045b\u0007\u0014\u0000\u0000"+ - "\u045a\u045c\u0007\u0015\u0000\u0000\u045b\u045a\u0001\u0000\u0000\u0000"+ - "\u045b\u045c\u0001\u0000\u0000\u0000\u045c\u045e\u0001\u0000\u0000\u0000"+ - "\u045d\u045f\u0007\u0002\u0000\u0000\u045e\u045d\u0001\u0000\u0000\u0000"+ - "\u045f\u0460\u0001\u0000\u0000\u0000\u0460\u045e\u0001\u0000\u0000\u0000"+ - "\u0460\u0461\u0001\u0000\u0000\u0000\u0461\u011f\u0001\u0000\u0000\u0000"+ - "\u0462\u0465\u0003\u0122\u0090\u0000\u0463\u0465\u0007\u0016\u0000\u0000"+ - "\u0464\u0462\u0001\u0000\u0000\u0000\u0464\u0463\u0001\u0000\u0000\u0000"+ - "\u0465\u0121\u0001\u0000\u0000\u0000\u0466\u046a\u0007\u0017\u0000\u0000"+ - "\u0467\u0468\u0005\\\u0000\u0000\u0468\u046a\u0003\u010e\u0086\u0000\u0469"+ - "\u0466\u0001\u0000\u0000\u0000\u0469\u0467\u0001\u0000\u0000\u0000\u046a"+ - "\u0123\u0001\u0000\u0000\u0000\u046b\u0476\b\u0018\u0000\u0000\u046c\u0476"+ - "\u0003\u012a\u0094\u0000\u046d\u0471\u0005[\u0000\u0000\u046e\u0470\u0003"+ - "\u0128\u0093\u0000\u046f\u046e\u0001\u0000\u0000\u0000\u0470\u0473\u0001"+ - "\u0000\u0000\u0000\u0471\u046f\u0001\u0000\u0000\u0000\u0471\u0472\u0001"+ - "\u0000\u0000\u0000\u0472\u0474\u0001\u0000\u0000\u0000\u0473\u0471\u0001"+ - "\u0000\u0000\u0000\u0474\u0476\u0005]\u0000\u0000\u0475\u046b\u0001\u0000"+ - "\u0000\u0000\u0475\u046c\u0001\u0000\u0000\u0000\u0475\u046d\u0001\u0000"+ - "\u0000\u0000\u0476\u0125\u0001\u0000\u0000\u0000\u0477\u0482\b\u0019\u0000"+ - "\u0000\u0478\u0482\u0003\u012a\u0094\u0000\u0479\u047d\u0005[\u0000\u0000"+ - "\u047a\u047c\u0003\u0128\u0093\u0000\u047b\u047a\u0001\u0000\u0000\u0000"+ - "\u047c\u047f\u0001\u0000\u0000\u0000\u047d\u047b\u0001\u0000\u0000\u0000"+ - "\u047d\u047e\u0001\u0000\u0000\u0000\u047e\u0480\u0001\u0000\u0000\u0000"+ - "\u047f\u047d\u0001\u0000\u0000\u0000\u0480\u0482\u0005]\u0000\u0000\u0481"+ - "\u0477\u0001\u0000\u0000\u0000\u0481\u0478\u0001\u0000\u0000\u0000\u0481"+ - "\u0479\u0001\u0000\u0000\u0000\u0482\u0127\u0001\u0000\u0000\u0000\u0483"+ - "\u0486\b\u001a\u0000\u0000\u0484\u0486\u0003\u012a\u0094\u0000\u0485\u0483"+ - "\u0001\u0000\u0000\u0000\u0485\u0484\u0001\u0000\u0000\u0000\u0486\u0129"+ - "\u0001\u0000\u0000\u0000\u0487\u0488\u0005\\\u0000\u0000\u0488\u0489\b"+ - "\u0000\u0000\u0000\u0489\u012b\u0001\u0000\u0000\u0000/\u0000\u0001\u0133"+ - "\u013c\u014a\u0154\u015c\u0209\u0211\u0215\u021c\u0220\u0224\u0226\u022e"+ - "\u0235\u023f\u0248\u0251\u025c\u0267\u03ad\u03b4\u03bc\u03c0\u03cc\u03dc"+ - "\u03f2\u0410\u0416\u041d\u0421\u0433\u0437\u043e\u0448\u0454\u0457\u045b"+ - "\u0460\u0464\u0469\u0471\u0475\u047d\u0481\u0485\u000b\u0000\u0001\u0000"+ - "\u0001\b\u0000\u0004\u0000\u0000\u0001\n\u0001\u0001w\u0002\u0001x\u0003"+ - "\u0005\u0001\u0000\u0000\u0002\u0000\u0001~\u0004\u0007y\u0000\u0005\u0000"+ - "\u0000"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.tokens b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.tokens deleted file mode 100644 index 71b9e418d..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexer.tokens +++ /dev/null @@ -1,230 +0,0 @@ -HashBangLine=1 -MultiLineComment=2 -SingleLineComment=3 -RegularExpressionLiteral=4 -OpenBracket=5 -CloseBracket=6 -OpenParen=7 -CloseParen=8 -OpenBrace=9 -TemplateCloseBrace=10 -CloseBrace=11 -SemiColon=12 -Comma=13 -Assign=14 -QuestionMark=15 -QuestionMarkDot=16 -Colon=17 -Ellipsis=18 -Dot=19 -PlusPlus=20 -MinusMinus=21 -Plus=22 -Minus=23 -BitNot=24 -Not=25 -Multiply=26 -Divide=27 -Modulus=28 -Power=29 -NullCoalesce=30 -Hashtag=31 -RightShiftArithmetic=32 -LeftShiftArithmetic=33 -RightShiftLogical=34 -LessThan=35 -MoreThan=36 -LessThanEquals=37 -GreaterThanEquals=38 -Equals_=39 -NotEquals=40 -IdentityEquals=41 -IdentityNotEquals=42 -BitAnd=43 -BitXOr=44 -BitOr=45 -And=46 -Or=47 -MultiplyAssign=48 -DivideAssign=49 -ModulusAssign=50 -PlusAssign=51 -MinusAssign=52 -LeftShiftArithmeticAssign=53 -RightShiftArithmeticAssign=54 -RightShiftLogicalAssign=55 -BitAndAssign=56 -BitXorAssign=57 -BitOrAssign=58 -PowerAssign=59 -ARROW=60 -NullLiteral=61 -BooleanLiteral=62 -DecimalLiteral=63 -HexIntegerLiteral=64 -OctalIntegerLiteral=65 -OctalIntegerLiteral2=66 -BinaryIntegerLiteral=67 -BigHexIntegerLiteral=68 -BigOctalIntegerLiteral=69 -BigBinaryIntegerLiteral=70 -BigDecimalIntegerLiteral=71 -Break=72 -Do=73 -Instanceof=74 -Typeof=75 -Case=76 -Else=77 -New=78 -Var=79 -Catch=80 -Finally=81 -Return=82 -Void=83 -Continue=84 -For=85 -Switch=86 -While=87 -Debugger=88 -Function_=89 -This=90 -With=91 -Default=92 -If=93 -Throw=94 -Delete=95 -In=96 -Try=97 -As=98 -From=99 -Class=100 -Enum=101 -Extends=102 -Super=103 -Const=104 -Export=105 -Import=106 -Async=107 -Await=108 -Yield=109 -Implements=110 -StrictLet=111 -NonStrictLet=112 -Private=113 -Public=114 -Interface=115 -Package=116 -Protected=117 -Static=118 -Identifier=119 -StringLiteral=120 -BackTick=121 -WhiteSpaces=122 -LineTerminator=123 -HtmlComment=124 -CDataComment=125 -UnexpectedCharacter=126 -TemplateStringStartExpression=127 -TemplateStringAtom=128 -'['=5 -']'=6 -'('=7 -')'=8 -'{'=9 -'}'=11 -';'=12 -','=13 -'='=14 -'?'=15 -'?.'=16 -':'=17 -'...'=18 -'.'=19 -'++'=20 -'--'=21 -'+'=22 -'-'=23 -'~'=24 -'!'=25 -'*'=26 -'/'=27 -'%'=28 -'**'=29 -'??'=30 -'#'=31 -'>>'=32 -'<<'=33 -'>>>'=34 -'<'=35 -'>'=36 -'<='=37 -'>='=38 -'=='=39 -'!='=40 -'==='=41 -'!=='=42 -'&'=43 -'^'=44 -'|'=45 -'&&'=46 -'||'=47 -'*='=48 -'/='=49 -'%='=50 -'+='=51 -'-='=52 -'<<='=53 -'>>='=54 -'>>>='=55 -'&='=56 -'^='=57 -'|='=58 -'**='=59 -'=>'=60 -'null'=61 -'break'=72 -'do'=73 -'instanceof'=74 -'typeof'=75 -'case'=76 -'else'=77 -'new'=78 -'var'=79 -'catch'=80 -'finally'=81 -'return'=82 -'void'=83 -'continue'=84 -'for'=85 -'switch'=86 -'while'=87 -'debugger'=88 -'function'=89 -'this'=90 -'with'=91 -'default'=92 -'if'=93 -'throw'=94 -'delete'=95 -'in'=96 -'try'=97 -'as'=98 -'from'=99 -'class'=100 -'enum'=101 -'extends'=102 -'super'=103 -'const'=104 -'export'=105 -'import'=106 -'async'=107 -'await'=108 -'yield'=109 -'implements'=110 -'private'=113 -'public'=114 -'interface'=115 -'package'=116 -'protected'=117 -'static'=118 -'${'=127 diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexerBase.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexerBase.java deleted file mode 100644 index a032ba4d8..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptLexerBase.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.sudu.experiments.parser.javascript.gen; - -import org.antlr.v4.runtime.*; - -import java.util.Stack; - -/** - * All lexer methods that used in grammar (IsStrictMode) - * should start with Upper Case Char similar to Lexer rules. - */ -public abstract class JavaScriptLexerBase extends Lexer -{ - /** - * Stores values of nested modes. By default mode is strict or - * defined externally (useStrictDefault) - */ - private Stack scopeStrictModes = new Stack(); - - private Token lastToken = null; - /** - * Default value of strict mode - * Can be defined externally by setUseStrictDefault - */ - private boolean useStrictDefault = false; - /** - * Current value of strict mode - * Can be defined during parsing, see StringFunctions.js and StringGlobal.js samples - */ - private boolean useStrictCurrent = false; - /** - * Keeps track of the the current depth of nested template string backticks. - * E.g. after the X in: - * - * `${a ? `${X - * - * templateDepth will be 2. This variable is needed to determine if a `}` is a - * plain CloseBrace, or one that closes an expression inside a template string. - */ - private int templateDepth = 0; - - public JavaScriptLexerBase(CharStream input) { - super(input); - } - - public boolean IsStartOfFile() { - return lastToken == null; - } - - public boolean getStrictDefault() { - return useStrictDefault; - } - - public void setUseStrictDefault(boolean value) { - useStrictDefault = value; - useStrictCurrent = value; - } - - public boolean IsStrictMode() { - return useStrictCurrent; - } - - public boolean IsInTemplateString() { - return this.templateDepth > 0; - } - - /** - * Return the next token from the character stream and records this last - * token in case it resides on the default channel. This recorded token - * is used to determine when the lexer could possibly match a regex - * literal. Also changes scopeStrictModes stack if tokenize special - * string 'use strict'; - * - * @return the next token from the character stream. - */ - @Override - public Token nextToken() { - Token next = super.nextToken(); - - if (next.getChannel() == Token.DEFAULT_CHANNEL) { - // Keep track of the last token on the default channel. - this.lastToken = next; - } - - return next; - } - - protected void ProcessOpenBrace() - { - useStrictCurrent = scopeStrictModes.size() > 0 && scopeStrictModes.peek() ? true : useStrictDefault; - scopeStrictModes.push(useStrictCurrent); - } - - protected void ProcessCloseBrace() - { - useStrictCurrent = scopeStrictModes.size() > 0 ? scopeStrictModes.pop() : useStrictDefault; - } - - protected void ProcessStringLiteral() - { - if (lastToken == null || lastToken.getType() == JavaScriptLexer.OpenBrace) - { - String text = getText(); - if (text.equals("\"use strict\"") || text.equals("'use strict'")) - { - if (scopeStrictModes.size() > 0) - scopeStrictModes.pop(); - useStrictCurrent = true; - scopeStrictModes.push(useStrictCurrent); - } - } - } - - public void IncreaseTemplateDepth() { - this.templateDepth++; - } - - public void DecreaseTemplateDepth() { - this.templateDepth--; - } - - /** - * Returns {@code true} if the lexer can match a regex literal. - */ - protected boolean IsRegexPossible() { - - if (this.lastToken == null) { - // No token has been produced yet: at the start of the input, - // no division is possible, so a regex literal _is_ possible. - return true; - } - - switch (this.lastToken.getType()) { - case JavaScriptLexer.Identifier: - case JavaScriptLexer.NullLiteral: - case JavaScriptLexer.BooleanLiteral: - case JavaScriptLexer.This: - case JavaScriptLexer.CloseBracket: - case JavaScriptLexer.CloseParen: - case JavaScriptLexer.OctalIntegerLiteral: - case JavaScriptLexer.DecimalLiteral: - case JavaScriptLexer.HexIntegerLiteral: - case JavaScriptLexer.StringLiteral: - case JavaScriptLexer.PlusPlus: - case JavaScriptLexer.MinusMinus: - // After any of the tokens above, no regex literal can follow. - return false; - default: - // In all other cases, a regex literal _is_ possible. - return true; - } - } -} diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.interp b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.interp deleted file mode 100644 index 71facc04c..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.interp +++ /dev/null @@ -1,347 +0,0 @@ -token literal names: -null -null -null -null -null -'[' -']' -'(' -')' -'{' -null -'}' -';' -',' -'=' -'?' -'?.' -':' -'...' -'.' -'++' -'--' -'+' -'-' -'~' -'!' -'*' -'/' -'%' -'**' -'??' -'#' -'>>' -'<<' -'>>>' -'<' -'>' -'<=' -'>=' -'==' -'!=' -'===' -'!==' -'&' -'^' -'|' -'&&' -'||' -'*=' -'/=' -'%=' -'+=' -'-=' -'<<=' -'>>=' -'>>>=' -'&=' -'^=' -'|=' -'**=' -'=>' -'null' -null -null -null -null -null -null -null -null -null -null -'break' -'do' -'instanceof' -'typeof' -'case' -'else' -'new' -'var' -'catch' -'finally' -'return' -'void' -'continue' -'for' -'switch' -'while' -'debugger' -'function' -'this' -'with' -'default' -'if' -'throw' -'delete' -'in' -'try' -'as' -'from' -'class' -'enum' -'extends' -'super' -'const' -'export' -'import' -'async' -'await' -'yield' -'implements' -null -null -'private' -'public' -'interface' -'package' -'protected' -'static' -null -null -null -null -null -null -null -null -'${' -null - -token symbolic names: -null -HashBangLine -MultiLineComment -SingleLineComment -RegularExpressionLiteral -OpenBracket -CloseBracket -OpenParen -CloseParen -OpenBrace -TemplateCloseBrace -CloseBrace -SemiColon -Comma -Assign -QuestionMark -QuestionMarkDot -Colon -Ellipsis -Dot -PlusPlus -MinusMinus -Plus -Minus -BitNot -Not -Multiply -Divide -Modulus -Power -NullCoalesce -Hashtag -RightShiftArithmetic -LeftShiftArithmetic -RightShiftLogical -LessThan -MoreThan -LessThanEquals -GreaterThanEquals -Equals_ -NotEquals -IdentityEquals -IdentityNotEquals -BitAnd -BitXOr -BitOr -And -Or -MultiplyAssign -DivideAssign -ModulusAssign -PlusAssign -MinusAssign -LeftShiftArithmeticAssign -RightShiftArithmeticAssign -RightShiftLogicalAssign -BitAndAssign -BitXorAssign -BitOrAssign -PowerAssign -ARROW -NullLiteral -BooleanLiteral -DecimalLiteral -HexIntegerLiteral -OctalIntegerLiteral -OctalIntegerLiteral2 -BinaryIntegerLiteral -BigHexIntegerLiteral -BigOctalIntegerLiteral -BigBinaryIntegerLiteral -BigDecimalIntegerLiteral -Break -Do -Instanceof -Typeof -Case -Else -New -Var -Catch -Finally -Return -Void -Continue -For -Switch -While -Debugger -Function_ -This -With -Default -If -Throw -Delete -In -Try -As -From -Class -Enum -Extends -Super -Const -Export -Import -Async -Await -Yield -Implements -StrictLet -NonStrictLet -Private -Public -Interface -Package -Protected -Static -Identifier -StringLiteral -BackTick -WhiteSpaces -LineTerminator -HtmlComment -CDataComment -UnexpectedCharacter -TemplateStringStartExpression -TemplateStringAtom - -rule names: -program -sourceElement -statement -block -statementList -importStatement -importFromBlock -moduleItems -importDefault -importNamespace -importFrom -aliasName -exportStatement -exportFromBlock -declaration -variableStatement -variableDeclarationList -variableDeclaration -emptyStatement_ -expressionStatement -ifStatement -iterationStatement -varModifier -continueStatement -breakStatement -returnStatement -yieldStatement -withStatement -switchStatement -caseBlock -caseClauses -caseClause -defaultClause -labelledStatement -throwStatement -tryStatement -catchProduction -finallyProduction -debuggerStatement -functionDeclaration -classDeclaration -classTail -classElement -methodDefinition -formalParameterList -formalParameterArg -lastFormalParameterArg -functionBody -sourceElements -arrayLiteral -elementList -arrayElement -propertyAssignment -propertyName -arguments -argument -expressionSequence -singleExpression -assignable -objectLiteral -anonymousFunction -arrowFunctionParameters -arrowFunctionBody -assignmentOperator -literal -templateStringLiteral -templateStringAtom -numericLiteral -bigintLiteral -getter -setter -identifierName -identifier -reservedWord -keyword -let_ -eos -programOrAny -unknownInterval -any - - -atn: -[4, 1, 128, 1059, 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, 1, 0, 3, 0, 162, 8, 0, 1, 0, 3, 0, 165, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 191, 8, 2, 1, 3, 1, 3, 3, 3, 195, 8, 3, 1, 3, 1, 3, 1, 4, 4, 4, 200, 8, 4, 11, 4, 12, 4, 201, 1, 5, 1, 5, 1, 5, 1, 6, 3, 6, 208, 8, 6, 1, 6, 1, 6, 3, 6, 212, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 219, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 225, 8, 7, 10, 7, 12, 7, 228, 9, 7, 1, 7, 1, 7, 3, 7, 232, 8, 7, 3, 7, 234, 8, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 243, 8, 9, 1, 9, 1, 9, 3, 9, 247, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 255, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 260, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 269, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 277, 8, 13, 1, 13, 1, 13, 3, 13, 281, 8, 13, 1, 14, 1, 14, 1, 14, 3, 14, 286, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 295, 8, 16, 10, 16, 12, 16, 298, 9, 16, 1, 17, 1, 17, 1, 17, 3, 17, 303, 8, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 318, 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, 3, 21, 338, 8, 21, 1, 21, 1, 21, 3, 21, 342, 8, 21, 1, 21, 1, 21, 3, 21, 346, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 354, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 363, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 368, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 376, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 381, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 386, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 3, 24, 393, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 3, 25, 400, 8, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 3, 26, 407, 8, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 3, 29, 425, 8, 29, 1, 29, 1, 29, 3, 29, 429, 8, 29, 3, 29, 431, 8, 29, 1, 29, 1, 29, 1, 30, 4, 30, 436, 8, 30, 11, 30, 12, 30, 437, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 444, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 449, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 464, 8, 35, 1, 35, 3, 35, 467, 8, 35, 1, 36, 1, 36, 1, 36, 3, 36, 472, 8, 36, 1, 36, 3, 36, 475, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 3, 39, 486, 8, 39, 1, 39, 1, 39, 3, 39, 490, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 495, 8, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 506, 8, 41, 1, 41, 1, 41, 5, 41, 510, 8, 41, 10, 41, 12, 41, 513, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 521, 8, 42, 10, 42, 12, 42, 524, 9, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 532, 8, 42, 1, 42, 1, 42, 3, 42, 536, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 542, 8, 42, 1, 43, 3, 43, 545, 8, 43, 1, 43, 3, 43, 548, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 553, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 559, 8, 43, 1, 43, 3, 43, 562, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 570, 8, 43, 1, 43, 3, 43, 573, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 578, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 583, 8, 43, 1, 44, 1, 44, 1, 44, 5, 44, 588, 8, 44, 10, 44, 12, 44, 591, 9, 44, 1, 44, 1, 44, 3, 44, 595, 8, 44, 1, 44, 3, 44, 598, 8, 44, 1, 45, 1, 45, 1, 45, 3, 45, 603, 8, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 610, 8, 47, 1, 47, 1, 47, 1, 48, 4, 48, 615, 8, 48, 11, 48, 12, 48, 616, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 5, 50, 624, 8, 50, 10, 50, 12, 50, 627, 9, 50, 1, 50, 3, 50, 630, 8, 50, 1, 50, 4, 50, 633, 8, 50, 11, 50, 12, 50, 634, 1, 50, 5, 50, 638, 8, 50, 10, 50, 12, 50, 641, 9, 50, 1, 50, 5, 50, 644, 8, 50, 10, 50, 12, 50, 647, 9, 50, 1, 51, 3, 51, 650, 8, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 665, 8, 52, 1, 52, 3, 52, 668, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 673, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 690, 8, 52, 1, 52, 3, 52, 693, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 702, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 708, 8, 54, 10, 54, 12, 54, 711, 9, 54, 1, 54, 3, 54, 714, 8, 54, 3, 54, 716, 8, 54, 1, 54, 1, 54, 1, 55, 3, 55, 721, 8, 55, 1, 55, 1, 55, 3, 55, 725, 8, 55, 1, 56, 1, 56, 1, 56, 5, 56, 730, 8, 56, 10, 56, 12, 56, 733, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 739, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 787, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 849, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 857, 8, 57, 1, 57, 1, 57, 3, 57, 861, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 874, 8, 57, 10, 57, 12, 57, 877, 9, 57, 1, 58, 1, 58, 1, 58, 3, 58, 882, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 888, 8, 59, 10, 59, 12, 59, 891, 9, 59, 1, 59, 3, 59, 894, 8, 59, 3, 59, 896, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 902, 8, 60, 1, 60, 1, 60, 3, 60, 906, 8, 60, 1, 60, 1, 60, 3, 60, 910, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 915, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 921, 8, 60, 1, 61, 1, 61, 1, 61, 3, 61, 926, 8, 61, 1, 61, 3, 61, 929, 8, 61, 1, 62, 1, 62, 3, 62, 933, 8, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 944, 8, 64, 1, 65, 1, 65, 5, 65, 948, 8, 65, 10, 65, 12, 65, 951, 9, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 960, 8, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 3, 71, 976, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 3, 73, 983, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1031, 8, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 1039, 8, 76, 1, 77, 1, 77, 4, 77, 1043, 8, 77, 11, 77, 12, 77, 1044, 3, 77, 1047, 8, 77, 1, 78, 4, 78, 1050, 8, 78, 11, 78, 12, 78, 1051, 1, 78, 3, 78, 1055, 8, 78, 1, 79, 1, 79, 1, 79, 2, 1044, 1051, 1, 114, 80, 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, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 0, 10, 1, 0, 26, 28, 1, 0, 22, 23, 1, 0, 32, 34, 1, 0, 35, 38, 1, 0, 39, 42, 1, 0, 48, 59, 1, 0, 63, 67, 1, 0, 68, 71, 4, 0, 98, 99, 107, 107, 112, 112, 119, 119, 1, 0, 111, 112, 1226, 0, 161, 1, 0, 0, 0, 2, 168, 1, 0, 0, 0, 4, 190, 1, 0, 0, 0, 6, 192, 1, 0, 0, 0, 8, 199, 1, 0, 0, 0, 10, 203, 1, 0, 0, 0, 12, 218, 1, 0, 0, 0, 14, 220, 1, 0, 0, 0, 16, 237, 1, 0, 0, 0, 18, 242, 1, 0, 0, 0, 20, 248, 1, 0, 0, 0, 22, 251, 1, 0, 0, 0, 24, 268, 1, 0, 0, 0, 26, 280, 1, 0, 0, 0, 28, 285, 1, 0, 0, 0, 30, 287, 1, 0, 0, 0, 32, 290, 1, 0, 0, 0, 34, 299, 1, 0, 0, 0, 36, 304, 1, 0, 0, 0, 38, 306, 1, 0, 0, 0, 40, 310, 1, 0, 0, 0, 42, 375, 1, 0, 0, 0, 44, 380, 1, 0, 0, 0, 46, 382, 1, 0, 0, 0, 48, 389, 1, 0, 0, 0, 50, 396, 1, 0, 0, 0, 52, 403, 1, 0, 0, 0, 54, 410, 1, 0, 0, 0, 56, 416, 1, 0, 0, 0, 58, 422, 1, 0, 0, 0, 60, 435, 1, 0, 0, 0, 62, 439, 1, 0, 0, 0, 64, 445, 1, 0, 0, 0, 66, 450, 1, 0, 0, 0, 68, 454, 1, 0, 0, 0, 70, 459, 1, 0, 0, 0, 72, 468, 1, 0, 0, 0, 74, 478, 1, 0, 0, 0, 76, 481, 1, 0, 0, 0, 78, 485, 1, 0, 0, 0, 80, 499, 1, 0, 0, 0, 82, 505, 1, 0, 0, 0, 84, 541, 1, 0, 0, 0, 86, 582, 1, 0, 0, 0, 88, 597, 1, 0, 0, 0, 90, 599, 1, 0, 0, 0, 92, 604, 1, 0, 0, 0, 94, 607, 1, 0, 0, 0, 96, 614, 1, 0, 0, 0, 98, 618, 1, 0, 0, 0, 100, 625, 1, 0, 0, 0, 102, 649, 1, 0, 0, 0, 104, 692, 1, 0, 0, 0, 106, 701, 1, 0, 0, 0, 108, 703, 1, 0, 0, 0, 110, 720, 1, 0, 0, 0, 112, 726, 1, 0, 0, 0, 114, 786, 1, 0, 0, 0, 116, 881, 1, 0, 0, 0, 118, 883, 1, 0, 0, 0, 120, 920, 1, 0, 0, 0, 122, 928, 1, 0, 0, 0, 124, 932, 1, 0, 0, 0, 126, 934, 1, 0, 0, 0, 128, 943, 1, 0, 0, 0, 130, 945, 1, 0, 0, 0, 132, 959, 1, 0, 0, 0, 134, 961, 1, 0, 0, 0, 136, 963, 1, 0, 0, 0, 138, 965, 1, 0, 0, 0, 140, 969, 1, 0, 0, 0, 142, 975, 1, 0, 0, 0, 144, 977, 1, 0, 0, 0, 146, 982, 1, 0, 0, 0, 148, 1030, 1, 0, 0, 0, 150, 1032, 1, 0, 0, 0, 152, 1038, 1, 0, 0, 0, 154, 1046, 1, 0, 0, 0, 156, 1054, 1, 0, 0, 0, 158, 1056, 1, 0, 0, 0, 160, 162, 5, 1, 0, 0, 161, 160, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 164, 1, 0, 0, 0, 163, 165, 3, 96, 48, 0, 164, 163, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 5, 0, 0, 1, 167, 1, 1, 0, 0, 0, 168, 169, 3, 4, 2, 0, 169, 3, 1, 0, 0, 0, 170, 191, 3, 6, 3, 0, 171, 191, 3, 30, 15, 0, 172, 191, 3, 10, 5, 0, 173, 191, 3, 24, 12, 0, 174, 191, 3, 36, 18, 0, 175, 191, 3, 80, 40, 0, 176, 191, 3, 38, 19, 0, 177, 191, 3, 40, 20, 0, 178, 191, 3, 42, 21, 0, 179, 191, 3, 46, 23, 0, 180, 191, 3, 48, 24, 0, 181, 191, 3, 50, 25, 0, 182, 191, 3, 52, 26, 0, 183, 191, 3, 54, 27, 0, 184, 191, 3, 66, 33, 0, 185, 191, 3, 56, 28, 0, 186, 191, 3, 68, 34, 0, 187, 191, 3, 70, 35, 0, 188, 191, 3, 76, 38, 0, 189, 191, 3, 78, 39, 0, 190, 170, 1, 0, 0, 0, 190, 171, 1, 0, 0, 0, 190, 172, 1, 0, 0, 0, 190, 173, 1, 0, 0, 0, 190, 174, 1, 0, 0, 0, 190, 175, 1, 0, 0, 0, 190, 176, 1, 0, 0, 0, 190, 177, 1, 0, 0, 0, 190, 178, 1, 0, 0, 0, 190, 179, 1, 0, 0, 0, 190, 180, 1, 0, 0, 0, 190, 181, 1, 0, 0, 0, 190, 182, 1, 0, 0, 0, 190, 183, 1, 0, 0, 0, 190, 184, 1, 0, 0, 0, 190, 185, 1, 0, 0, 0, 190, 186, 1, 0, 0, 0, 190, 187, 1, 0, 0, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 5, 1, 0, 0, 0, 192, 194, 5, 9, 0, 0, 193, 195, 3, 8, 4, 0, 194, 193, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, 196, 197, 5, 11, 0, 0, 197, 7, 1, 0, 0, 0, 198, 200, 3, 4, 2, 0, 199, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 199, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 9, 1, 0, 0, 0, 203, 204, 5, 106, 0, 0, 204, 205, 3, 12, 6, 0, 205, 11, 1, 0, 0, 0, 206, 208, 3, 16, 8, 0, 207, 206, 1, 0, 0, 0, 207, 208, 1, 0, 0, 0, 208, 211, 1, 0, 0, 0, 209, 212, 3, 18, 9, 0, 210, 212, 3, 14, 7, 0, 211, 209, 1, 0, 0, 0, 211, 210, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 3, 20, 10, 0, 214, 215, 3, 152, 76, 0, 215, 219, 1, 0, 0, 0, 216, 217, 5, 120, 0, 0, 217, 219, 3, 152, 76, 0, 218, 207, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 13, 1, 0, 0, 0, 220, 226, 5, 9, 0, 0, 221, 222, 3, 22, 11, 0, 222, 223, 5, 13, 0, 0, 223, 225, 1, 0, 0, 0, 224, 221, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 233, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 231, 3, 22, 11, 0, 230, 232, 5, 13, 0, 0, 231, 230, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 234, 1, 0, 0, 0, 233, 229, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 5, 11, 0, 0, 236, 15, 1, 0, 0, 0, 237, 238, 3, 22, 11, 0, 238, 239, 5, 13, 0, 0, 239, 17, 1, 0, 0, 0, 240, 243, 5, 26, 0, 0, 241, 243, 3, 142, 71, 0, 242, 240, 1, 0, 0, 0, 242, 241, 1, 0, 0, 0, 243, 246, 1, 0, 0, 0, 244, 245, 5, 98, 0, 0, 245, 247, 3, 142, 71, 0, 246, 244, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 19, 1, 0, 0, 0, 248, 249, 5, 99, 0, 0, 249, 250, 5, 120, 0, 0, 250, 21, 1, 0, 0, 0, 251, 254, 3, 142, 71, 0, 252, 253, 5, 98, 0, 0, 253, 255, 3, 142, 71, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 23, 1, 0, 0, 0, 256, 259, 5, 105, 0, 0, 257, 260, 3, 26, 13, 0, 258, 260, 3, 28, 14, 0, 259, 257, 1, 0, 0, 0, 259, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 262, 3, 152, 76, 0, 262, 269, 1, 0, 0, 0, 263, 264, 5, 105, 0, 0, 264, 265, 5, 92, 0, 0, 265, 266, 3, 114, 57, 0, 266, 267, 3, 152, 76, 0, 267, 269, 1, 0, 0, 0, 268, 256, 1, 0, 0, 0, 268, 263, 1, 0, 0, 0, 269, 25, 1, 0, 0, 0, 270, 271, 3, 18, 9, 0, 271, 272, 3, 20, 10, 0, 272, 273, 3, 152, 76, 0, 273, 281, 1, 0, 0, 0, 274, 276, 3, 14, 7, 0, 275, 277, 3, 20, 10, 0, 276, 275, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 279, 3, 152, 76, 0, 279, 281, 1, 0, 0, 0, 280, 270, 1, 0, 0, 0, 280, 274, 1, 0, 0, 0, 281, 27, 1, 0, 0, 0, 282, 286, 3, 30, 15, 0, 283, 286, 3, 80, 40, 0, 284, 286, 3, 78, 39, 0, 285, 282, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 284, 1, 0, 0, 0, 286, 29, 1, 0, 0, 0, 287, 288, 3, 32, 16, 0, 288, 289, 3, 152, 76, 0, 289, 31, 1, 0, 0, 0, 290, 291, 3, 44, 22, 0, 291, 296, 3, 34, 17, 0, 292, 293, 5, 13, 0, 0, 293, 295, 3, 34, 17, 0, 294, 292, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 33, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 299, 302, 3, 116, 58, 0, 300, 301, 5, 14, 0, 0, 301, 303, 3, 114, 57, 0, 302, 300, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 35, 1, 0, 0, 0, 304, 305, 5, 12, 0, 0, 305, 37, 1, 0, 0, 0, 306, 307, 4, 19, 0, 0, 307, 308, 3, 112, 56, 0, 308, 309, 3, 152, 76, 0, 309, 39, 1, 0, 0, 0, 310, 311, 5, 93, 0, 0, 311, 312, 5, 7, 0, 0, 312, 313, 3, 112, 56, 0, 313, 314, 5, 8, 0, 0, 314, 317, 3, 4, 2, 0, 315, 316, 5, 77, 0, 0, 316, 318, 3, 4, 2, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 41, 1, 0, 0, 0, 319, 320, 5, 73, 0, 0, 320, 321, 3, 4, 2, 0, 321, 322, 5, 87, 0, 0, 322, 323, 5, 7, 0, 0, 323, 324, 3, 112, 56, 0, 324, 325, 5, 8, 0, 0, 325, 326, 3, 152, 76, 0, 326, 376, 1, 0, 0, 0, 327, 328, 5, 87, 0, 0, 328, 329, 5, 7, 0, 0, 329, 330, 3, 112, 56, 0, 330, 331, 5, 8, 0, 0, 331, 332, 3, 4, 2, 0, 332, 376, 1, 0, 0, 0, 333, 334, 5, 85, 0, 0, 334, 337, 5, 7, 0, 0, 335, 338, 3, 112, 56, 0, 336, 338, 3, 32, 16, 0, 337, 335, 1, 0, 0, 0, 337, 336, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 341, 5, 12, 0, 0, 340, 342, 3, 112, 56, 0, 341, 340, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 5, 12, 0, 0, 344, 346, 3, 112, 56, 0, 345, 344, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 348, 5, 8, 0, 0, 348, 376, 3, 4, 2, 0, 349, 350, 5, 85, 0, 0, 350, 353, 5, 7, 0, 0, 351, 354, 3, 114, 57, 0, 352, 354, 3, 32, 16, 0, 353, 351, 1, 0, 0, 0, 353, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 5, 96, 0, 0, 356, 357, 3, 112, 56, 0, 357, 358, 5, 8, 0, 0, 358, 359, 3, 4, 2, 0, 359, 376, 1, 0, 0, 0, 360, 362, 5, 85, 0, 0, 361, 363, 5, 108, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 367, 5, 7, 0, 0, 365, 368, 3, 114, 57, 0, 366, 368, 3, 32, 16, 0, 367, 365, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 370, 3, 144, 72, 0, 370, 371, 4, 21, 1, 0, 371, 372, 3, 112, 56, 0, 372, 373, 5, 8, 0, 0, 373, 374, 3, 4, 2, 0, 374, 376, 1, 0, 0, 0, 375, 319, 1, 0, 0, 0, 375, 327, 1, 0, 0, 0, 375, 333, 1, 0, 0, 0, 375, 349, 1, 0, 0, 0, 375, 360, 1, 0, 0, 0, 376, 43, 1, 0, 0, 0, 377, 381, 5, 79, 0, 0, 378, 381, 3, 150, 75, 0, 379, 381, 5, 104, 0, 0, 380, 377, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 379, 1, 0, 0, 0, 381, 45, 1, 0, 0, 0, 382, 385, 5, 84, 0, 0, 383, 384, 4, 23, 2, 0, 384, 386, 3, 144, 72, 0, 385, 383, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 3, 152, 76, 0, 388, 47, 1, 0, 0, 0, 389, 392, 5, 72, 0, 0, 390, 391, 4, 24, 3, 0, 391, 393, 3, 144, 72, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 395, 3, 152, 76, 0, 395, 49, 1, 0, 0, 0, 396, 399, 5, 82, 0, 0, 397, 398, 4, 25, 4, 0, 398, 400, 3, 112, 56, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 402, 3, 152, 76, 0, 402, 51, 1, 0, 0, 0, 403, 406, 5, 109, 0, 0, 404, 405, 4, 26, 5, 0, 405, 407, 3, 112, 56, 0, 406, 404, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 409, 3, 152, 76, 0, 409, 53, 1, 0, 0, 0, 410, 411, 5, 91, 0, 0, 411, 412, 5, 7, 0, 0, 412, 413, 3, 112, 56, 0, 413, 414, 5, 8, 0, 0, 414, 415, 3, 4, 2, 0, 415, 55, 1, 0, 0, 0, 416, 417, 5, 86, 0, 0, 417, 418, 5, 7, 0, 0, 418, 419, 3, 112, 56, 0, 419, 420, 5, 8, 0, 0, 420, 421, 3, 58, 29, 0, 421, 57, 1, 0, 0, 0, 422, 424, 5, 9, 0, 0, 423, 425, 3, 60, 30, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 430, 1, 0, 0, 0, 426, 428, 3, 64, 32, 0, 427, 429, 3, 60, 30, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430, 426, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 5, 11, 0, 0, 433, 59, 1, 0, 0, 0, 434, 436, 3, 62, 31, 0, 435, 434, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 61, 1, 0, 0, 0, 439, 440, 5, 76, 0, 0, 440, 441, 3, 112, 56, 0, 441, 443, 5, 17, 0, 0, 442, 444, 3, 8, 4, 0, 443, 442, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 63, 1, 0, 0, 0, 445, 446, 5, 92, 0, 0, 446, 448, 5, 17, 0, 0, 447, 449, 3, 8, 4, 0, 448, 447, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 65, 1, 0, 0, 0, 450, 451, 3, 144, 72, 0, 451, 452, 5, 17, 0, 0, 452, 453, 3, 4, 2, 0, 453, 67, 1, 0, 0, 0, 454, 455, 5, 94, 0, 0, 455, 456, 4, 34, 6, 0, 456, 457, 3, 112, 56, 0, 457, 458, 3, 152, 76, 0, 458, 69, 1, 0, 0, 0, 459, 460, 5, 97, 0, 0, 460, 466, 3, 6, 3, 0, 461, 463, 3, 72, 36, 0, 462, 464, 3, 74, 37, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 467, 1, 0, 0, 0, 465, 467, 3, 74, 37, 0, 466, 461, 1, 0, 0, 0, 466, 465, 1, 0, 0, 0, 467, 71, 1, 0, 0, 0, 468, 474, 5, 80, 0, 0, 469, 471, 5, 7, 0, 0, 470, 472, 3, 116, 58, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 475, 5, 8, 0, 0, 474, 469, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 477, 3, 6, 3, 0, 477, 73, 1, 0, 0, 0, 478, 479, 5, 81, 0, 0, 479, 480, 3, 6, 3, 0, 480, 75, 1, 0, 0, 0, 481, 482, 5, 88, 0, 0, 482, 483, 3, 152, 76, 0, 483, 77, 1, 0, 0, 0, 484, 486, 5, 107, 0, 0, 485, 484, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 489, 5, 89, 0, 0, 488, 490, 5, 26, 0, 0, 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 3, 144, 72, 0, 492, 494, 5, 7, 0, 0, 493, 495, 3, 88, 44, 0, 494, 493, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 5, 8, 0, 0, 497, 498, 3, 94, 47, 0, 498, 79, 1, 0, 0, 0, 499, 500, 5, 100, 0, 0, 500, 501, 3, 144, 72, 0, 501, 502, 3, 82, 41, 0, 502, 81, 1, 0, 0, 0, 503, 504, 5, 102, 0, 0, 504, 506, 3, 114, 57, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 511, 5, 9, 0, 0, 508, 510, 3, 84, 42, 0, 509, 508, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 514, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 514, 515, 5, 11, 0, 0, 515, 83, 1, 0, 0, 0, 516, 521, 5, 118, 0, 0, 517, 518, 4, 42, 7, 0, 518, 521, 3, 144, 72, 0, 519, 521, 5, 107, 0, 0, 520, 516, 1, 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 524, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 531, 1, 0, 0, 0, 524, 522, 1, 0, 0, 0, 525, 532, 3, 86, 43, 0, 526, 527, 3, 116, 58, 0, 527, 528, 5, 14, 0, 0, 528, 529, 3, 118, 59, 0, 529, 530, 5, 12, 0, 0, 530, 532, 1, 0, 0, 0, 531, 525, 1, 0, 0, 0, 531, 526, 1, 0, 0, 0, 532, 542, 1, 0, 0, 0, 533, 542, 3, 36, 18, 0, 534, 536, 5, 31, 0, 0, 535, 534, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 538, 3, 106, 53, 0, 538, 539, 5, 14, 0, 0, 539, 540, 3, 114, 57, 0, 540, 542, 1, 0, 0, 0, 541, 522, 1, 0, 0, 0, 541, 533, 1, 0, 0, 0, 541, 535, 1, 0, 0, 0, 542, 85, 1, 0, 0, 0, 543, 545, 5, 26, 0, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 547, 1, 0, 0, 0, 546, 548, 5, 31, 0, 0, 547, 546, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 550, 3, 106, 53, 0, 550, 552, 5, 7, 0, 0, 551, 553, 3, 88, 44, 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 5, 8, 0, 0, 555, 556, 3, 94, 47, 0, 556, 583, 1, 0, 0, 0, 557, 559, 5, 26, 0, 0, 558, 557, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 561, 1, 0, 0, 0, 560, 562, 5, 31, 0, 0, 561, 560, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 3, 138, 69, 0, 564, 565, 5, 7, 0, 0, 565, 566, 5, 8, 0, 0, 566, 567, 3, 94, 47, 0, 567, 583, 1, 0, 0, 0, 568, 570, 5, 26, 0, 0, 569, 568, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 572, 1, 0, 0, 0, 571, 573, 5, 31, 0, 0, 572, 571, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 3, 140, 70, 0, 575, 577, 5, 7, 0, 0, 576, 578, 3, 88, 44, 0, 577, 576, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 5, 8, 0, 0, 580, 581, 3, 94, 47, 0, 581, 583, 1, 0, 0, 0, 582, 544, 1, 0, 0, 0, 582, 558, 1, 0, 0, 0, 582, 569, 1, 0, 0, 0, 583, 87, 1, 0, 0, 0, 584, 589, 3, 90, 45, 0, 585, 586, 5, 13, 0, 0, 586, 588, 3, 90, 45, 0, 587, 585, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 594, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 593, 5, 13, 0, 0, 593, 595, 3, 92, 46, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 598, 3, 92, 46, 0, 597, 584, 1, 0, 0, 0, 597, 596, 1, 0, 0, 0, 598, 89, 1, 0, 0, 0, 599, 602, 3, 116, 58, 0, 600, 601, 5, 14, 0, 0, 601, 603, 3, 114, 57, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 91, 1, 0, 0, 0, 604, 605, 5, 18, 0, 0, 605, 606, 3, 114, 57, 0, 606, 93, 1, 0, 0, 0, 607, 609, 5, 9, 0, 0, 608, 610, 3, 96, 48, 0, 609, 608, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 5, 11, 0, 0, 612, 95, 1, 0, 0, 0, 613, 615, 3, 2, 1, 0, 614, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 97, 1, 0, 0, 0, 618, 619, 5, 5, 0, 0, 619, 620, 3, 100, 50, 0, 620, 621, 5, 6, 0, 0, 621, 99, 1, 0, 0, 0, 622, 624, 5, 13, 0, 0, 623, 622, 1, 0, 0, 0, 624, 627, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 629, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 630, 3, 102, 51, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 639, 1, 0, 0, 0, 631, 633, 5, 13, 0, 0, 632, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 632, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 3, 102, 51, 0, 637, 632, 1, 0, 0, 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 645, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 642, 644, 5, 13, 0, 0, 643, 642, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 101, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 650, 5, 18, 0, 0, 649, 648, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 652, 3, 114, 57, 0, 652, 103, 1, 0, 0, 0, 653, 654, 3, 106, 53, 0, 654, 655, 5, 17, 0, 0, 655, 656, 3, 114, 57, 0, 656, 693, 1, 0, 0, 0, 657, 658, 5, 5, 0, 0, 658, 659, 3, 114, 57, 0, 659, 660, 5, 6, 0, 0, 660, 661, 5, 17, 0, 0, 661, 662, 3, 114, 57, 0, 662, 693, 1, 0, 0, 0, 663, 665, 5, 107, 0, 0, 664, 663, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 667, 1, 0, 0, 0, 666, 668, 5, 26, 0, 0, 667, 666, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 670, 3, 106, 53, 0, 670, 672, 5, 7, 0, 0, 671, 673, 3, 88, 44, 0, 672, 671, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 5, 8, 0, 0, 675, 676, 3, 94, 47, 0, 676, 693, 1, 0, 0, 0, 677, 678, 3, 138, 69, 0, 678, 679, 5, 7, 0, 0, 679, 680, 5, 8, 0, 0, 680, 681, 3, 94, 47, 0, 681, 693, 1, 0, 0, 0, 682, 683, 3, 140, 70, 0, 683, 684, 5, 7, 0, 0, 684, 685, 3, 90, 45, 0, 685, 686, 5, 8, 0, 0, 686, 687, 3, 94, 47, 0, 687, 693, 1, 0, 0, 0, 688, 690, 5, 18, 0, 0, 689, 688, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 693, 3, 114, 57, 0, 692, 653, 1, 0, 0, 0, 692, 657, 1, 0, 0, 0, 692, 664, 1, 0, 0, 0, 692, 677, 1, 0, 0, 0, 692, 682, 1, 0, 0, 0, 692, 689, 1, 0, 0, 0, 693, 105, 1, 0, 0, 0, 694, 702, 3, 142, 71, 0, 695, 702, 5, 120, 0, 0, 696, 702, 3, 134, 67, 0, 697, 698, 5, 5, 0, 0, 698, 699, 3, 114, 57, 0, 699, 700, 5, 6, 0, 0, 700, 702, 1, 0, 0, 0, 701, 694, 1, 0, 0, 0, 701, 695, 1, 0, 0, 0, 701, 696, 1, 0, 0, 0, 701, 697, 1, 0, 0, 0, 702, 107, 1, 0, 0, 0, 703, 715, 5, 7, 0, 0, 704, 709, 3, 110, 55, 0, 705, 706, 5, 13, 0, 0, 706, 708, 3, 110, 55, 0, 707, 705, 1, 0, 0, 0, 708, 711, 1, 0, 0, 0, 709, 707, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 712, 714, 5, 13, 0, 0, 713, 712, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 716, 1, 0, 0, 0, 715, 704, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 718, 5, 8, 0, 0, 718, 109, 1, 0, 0, 0, 719, 721, 5, 18, 0, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 724, 1, 0, 0, 0, 722, 725, 3, 114, 57, 0, 723, 725, 3, 144, 72, 0, 724, 722, 1, 0, 0, 0, 724, 723, 1, 0, 0, 0, 725, 111, 1, 0, 0, 0, 726, 731, 3, 114, 57, 0, 727, 728, 5, 13, 0, 0, 728, 730, 3, 114, 57, 0, 729, 727, 1, 0, 0, 0, 730, 733, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 113, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 734, 735, 6, 57, -1, 0, 735, 787, 3, 120, 60, 0, 736, 738, 5, 100, 0, 0, 737, 739, 3, 144, 72, 0, 738, 737, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 787, 3, 82, 41, 0, 741, 742, 5, 78, 0, 0, 742, 743, 3, 114, 57, 0, 743, 744, 3, 108, 54, 0, 744, 787, 1, 0, 0, 0, 745, 746, 5, 78, 0, 0, 746, 787, 3, 114, 57, 42, 747, 748, 5, 78, 0, 0, 748, 749, 5, 19, 0, 0, 749, 787, 3, 144, 72, 0, 750, 751, 5, 95, 0, 0, 751, 787, 3, 114, 57, 37, 752, 753, 5, 83, 0, 0, 753, 787, 3, 114, 57, 36, 754, 755, 5, 75, 0, 0, 755, 787, 3, 114, 57, 35, 756, 757, 5, 20, 0, 0, 757, 787, 3, 114, 57, 34, 758, 759, 5, 21, 0, 0, 759, 787, 3, 114, 57, 33, 760, 761, 5, 22, 0, 0, 761, 787, 3, 114, 57, 32, 762, 763, 5, 23, 0, 0, 763, 787, 3, 114, 57, 31, 764, 765, 5, 24, 0, 0, 765, 787, 3, 114, 57, 30, 766, 767, 5, 25, 0, 0, 767, 787, 3, 114, 57, 29, 768, 769, 5, 108, 0, 0, 769, 787, 3, 114, 57, 28, 770, 771, 5, 106, 0, 0, 771, 772, 5, 7, 0, 0, 772, 773, 3, 114, 57, 0, 773, 774, 5, 8, 0, 0, 774, 787, 1, 0, 0, 0, 775, 787, 3, 52, 26, 0, 776, 787, 5, 90, 0, 0, 777, 787, 3, 144, 72, 0, 778, 787, 5, 103, 0, 0, 779, 787, 3, 128, 64, 0, 780, 787, 3, 98, 49, 0, 781, 787, 3, 118, 59, 0, 782, 783, 5, 7, 0, 0, 783, 784, 3, 112, 56, 0, 784, 785, 5, 8, 0, 0, 785, 787, 1, 0, 0, 0, 786, 734, 1, 0, 0, 0, 786, 736, 1, 0, 0, 0, 786, 741, 1, 0, 0, 0, 786, 745, 1, 0, 0, 0, 786, 747, 1, 0, 0, 0, 786, 750, 1, 0, 0, 0, 786, 752, 1, 0, 0, 0, 786, 754, 1, 0, 0, 0, 786, 756, 1, 0, 0, 0, 786, 758, 1, 0, 0, 0, 786, 760, 1, 0, 0, 0, 786, 762, 1, 0, 0, 0, 786, 764, 1, 0, 0, 0, 786, 766, 1, 0, 0, 0, 786, 768, 1, 0, 0, 0, 786, 770, 1, 0, 0, 0, 786, 775, 1, 0, 0, 0, 786, 776, 1, 0, 0, 0, 786, 777, 1, 0, 0, 0, 786, 778, 1, 0, 0, 0, 786, 779, 1, 0, 0, 0, 786, 780, 1, 0, 0, 0, 786, 781, 1, 0, 0, 0, 786, 782, 1, 0, 0, 0, 787, 875, 1, 0, 0, 0, 788, 789, 10, 46, 0, 0, 789, 790, 5, 16, 0, 0, 790, 874, 3, 114, 57, 47, 791, 792, 10, 27, 0, 0, 792, 793, 5, 29, 0, 0, 793, 874, 3, 114, 57, 27, 794, 795, 10, 26, 0, 0, 795, 796, 7, 0, 0, 0, 796, 874, 3, 114, 57, 27, 797, 798, 10, 25, 0, 0, 798, 799, 7, 1, 0, 0, 799, 874, 3, 114, 57, 26, 800, 801, 10, 24, 0, 0, 801, 802, 5, 30, 0, 0, 802, 874, 3, 114, 57, 25, 803, 804, 10, 23, 0, 0, 804, 805, 7, 2, 0, 0, 805, 874, 3, 114, 57, 24, 806, 807, 10, 22, 0, 0, 807, 808, 7, 3, 0, 0, 808, 874, 3, 114, 57, 23, 809, 810, 10, 21, 0, 0, 810, 811, 5, 74, 0, 0, 811, 874, 3, 114, 57, 22, 812, 813, 10, 20, 0, 0, 813, 814, 5, 96, 0, 0, 814, 874, 3, 114, 57, 21, 815, 816, 10, 19, 0, 0, 816, 817, 7, 4, 0, 0, 817, 874, 3, 114, 57, 20, 818, 819, 10, 18, 0, 0, 819, 820, 5, 43, 0, 0, 820, 874, 3, 114, 57, 19, 821, 822, 10, 17, 0, 0, 822, 823, 5, 44, 0, 0, 823, 874, 3, 114, 57, 18, 824, 825, 10, 16, 0, 0, 825, 826, 5, 45, 0, 0, 826, 874, 3, 114, 57, 17, 827, 828, 10, 15, 0, 0, 828, 829, 5, 46, 0, 0, 829, 874, 3, 114, 57, 16, 830, 831, 10, 14, 0, 0, 831, 832, 5, 47, 0, 0, 832, 874, 3, 114, 57, 15, 833, 834, 10, 13, 0, 0, 834, 835, 5, 15, 0, 0, 835, 836, 3, 114, 57, 0, 836, 837, 5, 17, 0, 0, 837, 838, 3, 114, 57, 14, 838, 874, 1, 0, 0, 0, 839, 840, 10, 12, 0, 0, 840, 841, 5, 14, 0, 0, 841, 874, 3, 114, 57, 12, 842, 843, 10, 11, 0, 0, 843, 844, 3, 126, 63, 0, 844, 845, 3, 114, 57, 11, 845, 874, 1, 0, 0, 0, 846, 848, 10, 45, 0, 0, 847, 849, 5, 16, 0, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 851, 5, 5, 0, 0, 851, 852, 3, 112, 56, 0, 852, 853, 5, 6, 0, 0, 853, 874, 1, 0, 0, 0, 854, 856, 10, 44, 0, 0, 855, 857, 5, 15, 0, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 860, 5, 19, 0, 0, 859, 861, 5, 31, 0, 0, 860, 859, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 874, 3, 142, 71, 0, 863, 864, 10, 41, 0, 0, 864, 874, 3, 108, 54, 0, 865, 866, 10, 39, 0, 0, 866, 867, 4, 57, 30, 0, 867, 874, 5, 20, 0, 0, 868, 869, 10, 38, 0, 0, 869, 870, 4, 57, 32, 0, 870, 874, 5, 21, 0, 0, 871, 872, 10, 9, 0, 0, 872, 874, 3, 130, 65, 0, 873, 788, 1, 0, 0, 0, 873, 791, 1, 0, 0, 0, 873, 794, 1, 0, 0, 0, 873, 797, 1, 0, 0, 0, 873, 800, 1, 0, 0, 0, 873, 803, 1, 0, 0, 0, 873, 806, 1, 0, 0, 0, 873, 809, 1, 0, 0, 0, 873, 812, 1, 0, 0, 0, 873, 815, 1, 0, 0, 0, 873, 818, 1, 0, 0, 0, 873, 821, 1, 0, 0, 0, 873, 824, 1, 0, 0, 0, 873, 827, 1, 0, 0, 0, 873, 830, 1, 0, 0, 0, 873, 833, 1, 0, 0, 0, 873, 839, 1, 0, 0, 0, 873, 842, 1, 0, 0, 0, 873, 846, 1, 0, 0, 0, 873, 854, 1, 0, 0, 0, 873, 863, 1, 0, 0, 0, 873, 865, 1, 0, 0, 0, 873, 868, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 874, 877, 1, 0, 0, 0, 875, 873, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 115, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 878, 882, 3, 144, 72, 0, 879, 882, 3, 98, 49, 0, 880, 882, 3, 118, 59, 0, 881, 878, 1, 0, 0, 0, 881, 879, 1, 0, 0, 0, 881, 880, 1, 0, 0, 0, 882, 117, 1, 0, 0, 0, 883, 895, 5, 9, 0, 0, 884, 889, 3, 104, 52, 0, 885, 886, 5, 13, 0, 0, 886, 888, 3, 104, 52, 0, 887, 885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 892, 894, 5, 13, 0, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 896, 1, 0, 0, 0, 895, 884, 1, 0, 0, 0, 895, 896, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 898, 5, 11, 0, 0, 898, 119, 1, 0, 0, 0, 899, 921, 3, 78, 39, 0, 900, 902, 5, 107, 0, 0, 901, 900, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 905, 5, 89, 0, 0, 904, 906, 5, 26, 0, 0, 905, 904, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 909, 5, 7, 0, 0, 908, 910, 3, 88, 44, 0, 909, 908, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 912, 5, 8, 0, 0, 912, 921, 3, 94, 47, 0, 913, 915, 5, 107, 0, 0, 914, 913, 1, 0, 0, 0, 914, 915, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 3, 122, 61, 0, 917, 918, 5, 60, 0, 0, 918, 919, 3, 124, 62, 0, 919, 921, 1, 0, 0, 0, 920, 899, 1, 0, 0, 0, 920, 901, 1, 0, 0, 0, 920, 914, 1, 0, 0, 0, 921, 121, 1, 0, 0, 0, 922, 929, 3, 144, 72, 0, 923, 925, 5, 7, 0, 0, 924, 926, 3, 88, 44, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 929, 5, 8, 0, 0, 928, 922, 1, 0, 0, 0, 928, 923, 1, 0, 0, 0, 929, 123, 1, 0, 0, 0, 930, 933, 3, 114, 57, 0, 931, 933, 3, 94, 47, 0, 932, 930, 1, 0, 0, 0, 932, 931, 1, 0, 0, 0, 933, 125, 1, 0, 0, 0, 934, 935, 7, 5, 0, 0, 935, 127, 1, 0, 0, 0, 936, 944, 5, 61, 0, 0, 937, 944, 5, 62, 0, 0, 938, 944, 5, 120, 0, 0, 939, 944, 3, 130, 65, 0, 940, 944, 5, 4, 0, 0, 941, 944, 3, 134, 67, 0, 942, 944, 3, 136, 68, 0, 943, 936, 1, 0, 0, 0, 943, 937, 1, 0, 0, 0, 943, 938, 1, 0, 0, 0, 943, 939, 1, 0, 0, 0, 943, 940, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 943, 942, 1, 0, 0, 0, 944, 129, 1, 0, 0, 0, 945, 949, 5, 121, 0, 0, 946, 948, 3, 132, 66, 0, 947, 946, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 952, 1, 0, 0, 0, 951, 949, 1, 0, 0, 0, 952, 953, 5, 121, 0, 0, 953, 131, 1, 0, 0, 0, 954, 960, 5, 128, 0, 0, 955, 956, 5, 127, 0, 0, 956, 957, 3, 114, 57, 0, 957, 958, 5, 10, 0, 0, 958, 960, 1, 0, 0, 0, 959, 954, 1, 0, 0, 0, 959, 955, 1, 0, 0, 0, 960, 133, 1, 0, 0, 0, 961, 962, 7, 6, 0, 0, 962, 135, 1, 0, 0, 0, 963, 964, 7, 7, 0, 0, 964, 137, 1, 0, 0, 0, 965, 966, 4, 69, 34, 0, 966, 967, 3, 144, 72, 0, 967, 968, 3, 106, 53, 0, 968, 139, 1, 0, 0, 0, 969, 970, 4, 70, 35, 0, 970, 971, 3, 144, 72, 0, 971, 972, 3, 106, 53, 0, 972, 141, 1, 0, 0, 0, 973, 976, 3, 144, 72, 0, 974, 976, 3, 146, 73, 0, 975, 973, 1, 0, 0, 0, 975, 974, 1, 0, 0, 0, 976, 143, 1, 0, 0, 0, 977, 978, 7, 8, 0, 0, 978, 145, 1, 0, 0, 0, 979, 983, 3, 148, 74, 0, 980, 983, 5, 61, 0, 0, 981, 983, 5, 62, 0, 0, 982, 979, 1, 0, 0, 0, 982, 980, 1, 0, 0, 0, 982, 981, 1, 0, 0, 0, 983, 147, 1, 0, 0, 0, 984, 1031, 5, 72, 0, 0, 985, 1031, 5, 73, 0, 0, 986, 1031, 5, 74, 0, 0, 987, 1031, 5, 75, 0, 0, 988, 1031, 5, 76, 0, 0, 989, 1031, 5, 77, 0, 0, 990, 1031, 5, 78, 0, 0, 991, 1031, 5, 79, 0, 0, 992, 1031, 5, 80, 0, 0, 993, 1031, 5, 81, 0, 0, 994, 1031, 5, 82, 0, 0, 995, 1031, 5, 83, 0, 0, 996, 1031, 5, 84, 0, 0, 997, 1031, 5, 85, 0, 0, 998, 1031, 5, 86, 0, 0, 999, 1031, 5, 87, 0, 0, 1000, 1031, 5, 88, 0, 0, 1001, 1031, 5, 89, 0, 0, 1002, 1031, 5, 90, 0, 0, 1003, 1031, 5, 91, 0, 0, 1004, 1031, 5, 92, 0, 0, 1005, 1031, 5, 93, 0, 0, 1006, 1031, 5, 94, 0, 0, 1007, 1031, 5, 95, 0, 0, 1008, 1031, 5, 96, 0, 0, 1009, 1031, 5, 97, 0, 0, 1010, 1031, 5, 100, 0, 0, 1011, 1031, 5, 101, 0, 0, 1012, 1031, 5, 102, 0, 0, 1013, 1031, 5, 103, 0, 0, 1014, 1031, 5, 104, 0, 0, 1015, 1031, 5, 105, 0, 0, 1016, 1031, 5, 106, 0, 0, 1017, 1031, 5, 110, 0, 0, 1018, 1031, 3, 150, 75, 0, 1019, 1031, 5, 113, 0, 0, 1020, 1031, 5, 114, 0, 0, 1021, 1031, 5, 115, 0, 0, 1022, 1031, 5, 116, 0, 0, 1023, 1031, 5, 117, 0, 0, 1024, 1031, 5, 118, 0, 0, 1025, 1031, 5, 109, 0, 0, 1026, 1031, 5, 107, 0, 0, 1027, 1031, 5, 108, 0, 0, 1028, 1031, 5, 99, 0, 0, 1029, 1031, 5, 98, 0, 0, 1030, 984, 1, 0, 0, 0, 1030, 985, 1, 0, 0, 0, 1030, 986, 1, 0, 0, 0, 1030, 987, 1, 0, 0, 0, 1030, 988, 1, 0, 0, 0, 1030, 989, 1, 0, 0, 0, 1030, 990, 1, 0, 0, 0, 1030, 991, 1, 0, 0, 0, 1030, 992, 1, 0, 0, 0, 1030, 993, 1, 0, 0, 0, 1030, 994, 1, 0, 0, 0, 1030, 995, 1, 0, 0, 0, 1030, 996, 1, 0, 0, 0, 1030, 997, 1, 0, 0, 0, 1030, 998, 1, 0, 0, 0, 1030, 999, 1, 0, 0, 0, 1030, 1000, 1, 0, 0, 0, 1030, 1001, 1, 0, 0, 0, 1030, 1002, 1, 0, 0, 0, 1030, 1003, 1, 0, 0, 0, 1030, 1004, 1, 0, 0, 0, 1030, 1005, 1, 0, 0, 0, 1030, 1006, 1, 0, 0, 0, 1030, 1007, 1, 0, 0, 0, 1030, 1008, 1, 0, 0, 0, 1030, 1009, 1, 0, 0, 0, 1030, 1010, 1, 0, 0, 0, 1030, 1011, 1, 0, 0, 0, 1030, 1012, 1, 0, 0, 0, 1030, 1013, 1, 0, 0, 0, 1030, 1014, 1, 0, 0, 0, 1030, 1015, 1, 0, 0, 0, 1030, 1016, 1, 0, 0, 0, 1030, 1017, 1, 0, 0, 0, 1030, 1018, 1, 0, 0, 0, 1030, 1019, 1, 0, 0, 0, 1030, 1020, 1, 0, 0, 0, 1030, 1021, 1, 0, 0, 0, 1030, 1022, 1, 0, 0, 0, 1030, 1023, 1, 0, 0, 0, 1030, 1024, 1, 0, 0, 0, 1030, 1025, 1, 0, 0, 0, 1030, 1026, 1, 0, 0, 0, 1030, 1027, 1, 0, 0, 0, 1030, 1028, 1, 0, 0, 0, 1030, 1029, 1, 0, 0, 0, 1031, 149, 1, 0, 0, 0, 1032, 1033, 7, 9, 0, 0, 1033, 151, 1, 0, 0, 0, 1034, 1039, 5, 12, 0, 0, 1035, 1039, 5, 0, 0, 1, 1036, 1039, 4, 76, 36, 0, 1037, 1039, 4, 76, 37, 0, 1038, 1034, 1, 0, 0, 0, 1038, 1035, 1, 0, 0, 0, 1038, 1036, 1, 0, 0, 0, 1038, 1037, 1, 0, 0, 0, 1039, 153, 1, 0, 0, 0, 1040, 1047, 3, 0, 0, 0, 1041, 1043, 3, 158, 79, 0, 1042, 1041, 1, 0, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1044, 1042, 1, 0, 0, 0, 1045, 1047, 1, 0, 0, 0, 1046, 1040, 1, 0, 0, 0, 1046, 1042, 1, 0, 0, 0, 1047, 155, 1, 0, 0, 0, 1048, 1050, 3, 2, 1, 0, 1049, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1051, 1049, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1055, 5, 0, 0, 1, 1054, 1049, 1, 0, 0, 0, 1054, 1053, 1, 0, 0, 0, 1055, 157, 1, 0, 0, 0, 1056, 1057, 9, 0, 0, 0, 1057, 159, 1, 0, 0, 0, 117, 161, 164, 190, 194, 201, 207, 211, 218, 226, 231, 233, 242, 246, 254, 259, 268, 276, 280, 285, 296, 302, 317, 337, 341, 345, 353, 362, 367, 375, 380, 385, 392, 399, 406, 424, 428, 430, 437, 443, 448, 463, 466, 471, 474, 485, 489, 494, 505, 511, 520, 522, 531, 535, 541, 544, 547, 552, 558, 561, 569, 572, 577, 582, 589, 594, 597, 602, 609, 616, 625, 629, 634, 639, 645, 649, 664, 667, 672, 689, 692, 701, 709, 713, 715, 720, 724, 731, 738, 786, 848, 856, 860, 873, 875, 881, 889, 893, 895, 901, 905, 909, 914, 920, 925, 928, 932, 943, 949, 959, 975, 982, 1030, 1038, 1044, 1046, 1051, 1054] \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.java deleted file mode 100644 index ec8d75676..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.java +++ /dev/null @@ -1,9376 +0,0 @@ -// Generated from parser-generator/src/main/resources/grammar/javascript/JavaScriptParser.g4 by ANTLR 4.13.1 -package org.sudu.experiments.parser.javascript.gen; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.misc.*; -import org.antlr.v4.runtime.tree.*; -import java.util.List; -import java.util.Iterator; -import java.util.ArrayList; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public class JavaScriptParser extends JavaScriptParserBase { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - HashBangLine=1, MultiLineComment=2, SingleLineComment=3, RegularExpressionLiteral=4, - OpenBracket=5, CloseBracket=6, OpenParen=7, CloseParen=8, OpenBrace=9, - TemplateCloseBrace=10, CloseBrace=11, SemiColon=12, Comma=13, Assign=14, - QuestionMark=15, QuestionMarkDot=16, Colon=17, Ellipsis=18, Dot=19, PlusPlus=20, - MinusMinus=21, Plus=22, Minus=23, BitNot=24, Not=25, Multiply=26, Divide=27, - Modulus=28, Power=29, NullCoalesce=30, Hashtag=31, RightShiftArithmetic=32, - LeftShiftArithmetic=33, RightShiftLogical=34, LessThan=35, MoreThan=36, - LessThanEquals=37, GreaterThanEquals=38, Equals_=39, NotEquals=40, IdentityEquals=41, - IdentityNotEquals=42, BitAnd=43, BitXOr=44, BitOr=45, And=46, Or=47, MultiplyAssign=48, - DivideAssign=49, ModulusAssign=50, PlusAssign=51, MinusAssign=52, LeftShiftArithmeticAssign=53, - RightShiftArithmeticAssign=54, RightShiftLogicalAssign=55, BitAndAssign=56, - BitXorAssign=57, BitOrAssign=58, PowerAssign=59, ARROW=60, NullLiteral=61, - BooleanLiteral=62, DecimalLiteral=63, HexIntegerLiteral=64, OctalIntegerLiteral=65, - OctalIntegerLiteral2=66, BinaryIntegerLiteral=67, BigHexIntegerLiteral=68, - BigOctalIntegerLiteral=69, BigBinaryIntegerLiteral=70, BigDecimalIntegerLiteral=71, - Break=72, Do=73, Instanceof=74, Typeof=75, Case=76, Else=77, New=78, Var=79, - Catch=80, Finally=81, Return=82, Void=83, Continue=84, For=85, Switch=86, - While=87, Debugger=88, Function_=89, This=90, With=91, Default=92, If=93, - Throw=94, Delete=95, In=96, Try=97, As=98, From=99, Class=100, Enum=101, - Extends=102, Super=103, Const=104, Export=105, Import=106, Async=107, - Await=108, Yield=109, Implements=110, StrictLet=111, NonStrictLet=112, - Private=113, Public=114, Interface=115, Package=116, Protected=117, Static=118, - Identifier=119, StringLiteral=120, BackTick=121, WhiteSpaces=122, LineTerminator=123, - HtmlComment=124, CDataComment=125, UnexpectedCharacter=126, TemplateStringStartExpression=127, - TemplateStringAtom=128; - public static final int - RULE_program = 0, RULE_sourceElement = 1, RULE_statement = 2, RULE_block = 3, - RULE_statementList = 4, RULE_importStatement = 5, RULE_importFromBlock = 6, - RULE_moduleItems = 7, RULE_importDefault = 8, RULE_importNamespace = 9, - RULE_importFrom = 10, RULE_aliasName = 11, RULE_exportStatement = 12, - RULE_exportFromBlock = 13, RULE_declaration = 14, RULE_variableStatement = 15, - RULE_variableDeclarationList = 16, RULE_variableDeclaration = 17, RULE_emptyStatement_ = 18, - RULE_expressionStatement = 19, RULE_ifStatement = 20, RULE_iterationStatement = 21, - RULE_varModifier = 22, RULE_continueStatement = 23, RULE_breakStatement = 24, - RULE_returnStatement = 25, RULE_yieldStatement = 26, RULE_withStatement = 27, - RULE_switchStatement = 28, RULE_caseBlock = 29, RULE_caseClauses = 30, - RULE_caseClause = 31, RULE_defaultClause = 32, RULE_labelledStatement = 33, - RULE_throwStatement = 34, RULE_tryStatement = 35, RULE_catchProduction = 36, - RULE_finallyProduction = 37, RULE_debuggerStatement = 38, RULE_functionDeclaration = 39, - RULE_classDeclaration = 40, RULE_classTail = 41, RULE_classElement = 42, - RULE_methodDefinition = 43, RULE_formalParameterList = 44, RULE_formalParameterArg = 45, - RULE_lastFormalParameterArg = 46, RULE_functionBody = 47, RULE_sourceElements = 48, - RULE_arrayLiteral = 49, RULE_elementList = 50, RULE_arrayElement = 51, - RULE_propertyAssignment = 52, RULE_propertyName = 53, RULE_arguments = 54, - RULE_argument = 55, RULE_expressionSequence = 56, RULE_singleExpression = 57, - RULE_assignable = 58, RULE_objectLiteral = 59, RULE_anonymousFunction = 60, - RULE_arrowFunctionParameters = 61, RULE_arrowFunctionBody = 62, RULE_assignmentOperator = 63, - RULE_literal = 64, RULE_templateStringLiteral = 65, RULE_templateStringAtom = 66, - RULE_numericLiteral = 67, RULE_bigintLiteral = 68, RULE_getter = 69, RULE_setter = 70, - RULE_identifierName = 71, RULE_identifier = 72, RULE_reservedWord = 73, - RULE_keyword = 74, RULE_let_ = 75, RULE_eos = 76, RULE_programOrAny = 77, - RULE_unknownInterval = 78, RULE_any = 79; - private static String[] makeRuleNames() { - return new String[] { - "program", "sourceElement", "statement", "block", "statementList", "importStatement", - "importFromBlock", "moduleItems", "importDefault", "importNamespace", - "importFrom", "aliasName", "exportStatement", "exportFromBlock", "declaration", - "variableStatement", "variableDeclarationList", "variableDeclaration", - "emptyStatement_", "expressionStatement", "ifStatement", "iterationStatement", - "varModifier", "continueStatement", "breakStatement", "returnStatement", - "yieldStatement", "withStatement", "switchStatement", "caseBlock", "caseClauses", - "caseClause", "defaultClause", "labelledStatement", "throwStatement", - "tryStatement", "catchProduction", "finallyProduction", "debuggerStatement", - "functionDeclaration", "classDeclaration", "classTail", "classElement", - "methodDefinition", "formalParameterList", "formalParameterArg", "lastFormalParameterArg", - "functionBody", "sourceElements", "arrayLiteral", "elementList", "arrayElement", - "propertyAssignment", "propertyName", "arguments", "argument", "expressionSequence", - "singleExpression", "assignable", "objectLiteral", "anonymousFunction", - "arrowFunctionParameters", "arrowFunctionBody", "assignmentOperator", - "literal", "templateStringLiteral", "templateStringAtom", "numericLiteral", - "bigintLiteral", "getter", "setter", "identifierName", "identifier", - "reservedWord", "keyword", "let_", "eos", "programOrAny", "unknownInterval", - "any" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, null, null, null, null, "'['", "']'", "'('", "')'", "'{'", null, - "'}'", "';'", "','", "'='", "'?'", "'?.'", "':'", "'...'", "'.'", "'++'", - "'--'", "'+'", "'-'", "'~'", "'!'", "'*'", "'/'", "'%'", "'**'", "'??'", - "'#'", "'>>'", "'<<'", "'>>>'", "'<'", "'>'", "'<='", "'>='", "'=='", - "'!='", "'==='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", "'*='", - "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='", "'>>>='", "'&='", "'^='", - "'|='", "'**='", "'=>'", "'null'", null, null, null, null, null, null, - null, null, null, null, "'break'", "'do'", "'instanceof'", "'typeof'", - "'case'", "'else'", "'new'", "'var'", "'catch'", "'finally'", "'return'", - "'void'", "'continue'", "'for'", "'switch'", "'while'", "'debugger'", - "'function'", "'this'", "'with'", "'default'", "'if'", "'throw'", "'delete'", - "'in'", "'try'", "'as'", "'from'", "'class'", "'enum'", "'extends'", - "'super'", "'const'", "'export'", "'import'", "'async'", "'await'", "'yield'", - "'implements'", null, null, "'private'", "'public'", "'interface'", "'package'", - "'protected'", "'static'", null, null, null, null, null, null, null, - null, "'${'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "HashBangLine", "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", - "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", - "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", - "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", - "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", - "NullCoalesce", "Hashtag", "RightShiftArithmetic", "LeftShiftArithmetic", - "RightShiftLogical", "LessThan", "MoreThan", "LessThanEquals", "GreaterThanEquals", - "Equals_", "NotEquals", "IdentityEquals", "IdentityNotEquals", "BitAnd", - "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", "DivideAssign", "ModulusAssign", - "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", "RightShiftArithmeticAssign", - "RightShiftLogicalAssign", "BitAndAssign", "BitXorAssign", "BitOrAssign", - "PowerAssign", "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", - "HexIntegerLiteral", "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", - "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", - "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", - "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", - "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", - "If", "Throw", "Delete", "In", "Try", "As", "From", "Class", "Enum", - "Extends", "Super", "Const", "Export", "Import", "Async", "Await", "Yield", - "Implements", "StrictLet", "NonStrictLet", "Private", "Public", "Interface", - "Package", "Protected", "Static", "Identifier", "StringLiteral", "BackTick", - "WhiteSpaces", "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", - "TemplateStringStartExpression", "TemplateStringAtom" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - @Override - public String getGrammarFileName() { return "JavaScriptParser.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public ATN getATN() { return _ATN; } - - public JavaScriptParser(TokenStream input) { - super(input); - _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @SuppressWarnings("CheckReturnValue") - public static class ProgramContext extends ParserRuleContext { - public TerminalNode EOF() { return getToken(JavaScriptParser.EOF, 0); } - public TerminalNode HashBangLine() { return getToken(JavaScriptParser.HashBangLine, 0); } - public SourceElementsContext sourceElements() { - return getRuleContext(SourceElementsContext.class,0); - } - public ProgramContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_program; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterProgram(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitProgram(this); - } - } - - public final ProgramContext program() throws RecognitionException { - ProgramContext _localctx = new ProgramContext(_ctx, getState()); - enterRule(_localctx, 0, RULE_program); - try { - enterOuterAlt(_localctx, 1); - { - setState(161); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { - case 1: - { - setState(160); - match(HashBangLine); - } - break; - } - setState(164); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { - case 1: - { - setState(163); - sourceElements(); - } - break; - } - setState(166); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SourceElementContext extends ParserRuleContext { - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public SourceElementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sourceElement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterSourceElement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitSourceElement(this); - } - } - - public final SourceElementContext sourceElement() throws RecognitionException { - SourceElementContext _localctx = new SourceElementContext(_ctx, getState()); - enterRule(_localctx, 2, RULE_sourceElement); - try { - enterOuterAlt(_localctx, 1); - { - setState(168); - statement(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StatementContext extends ParserRuleContext { - public BlockContext block() { - return getRuleContext(BlockContext.class,0); - } - public VariableStatementContext variableStatement() { - return getRuleContext(VariableStatementContext.class,0); - } - public ImportStatementContext importStatement() { - return getRuleContext(ImportStatementContext.class,0); - } - public ExportStatementContext exportStatement() { - return getRuleContext(ExportStatementContext.class,0); - } - public EmptyStatement_Context emptyStatement_() { - return getRuleContext(EmptyStatement_Context.class,0); - } - public ClassDeclarationContext classDeclaration() { - return getRuleContext(ClassDeclarationContext.class,0); - } - public ExpressionStatementContext expressionStatement() { - return getRuleContext(ExpressionStatementContext.class,0); - } - public IfStatementContext ifStatement() { - return getRuleContext(IfStatementContext.class,0); - } - public IterationStatementContext iterationStatement() { - return getRuleContext(IterationStatementContext.class,0); - } - public ContinueStatementContext continueStatement() { - return getRuleContext(ContinueStatementContext.class,0); - } - public BreakStatementContext breakStatement() { - return getRuleContext(BreakStatementContext.class,0); - } - public ReturnStatementContext returnStatement() { - return getRuleContext(ReturnStatementContext.class,0); - } - public YieldStatementContext yieldStatement() { - return getRuleContext(YieldStatementContext.class,0); - } - public WithStatementContext withStatement() { - return getRuleContext(WithStatementContext.class,0); - } - public LabelledStatementContext labelledStatement() { - return getRuleContext(LabelledStatementContext.class,0); - } - public SwitchStatementContext switchStatement() { - return getRuleContext(SwitchStatementContext.class,0); - } - public ThrowStatementContext throwStatement() { - return getRuleContext(ThrowStatementContext.class,0); - } - public TryStatementContext tryStatement() { - return getRuleContext(TryStatementContext.class,0); - } - public DebuggerStatementContext debuggerStatement() { - return getRuleContext(DebuggerStatementContext.class,0); - } - public FunctionDeclarationContext functionDeclaration() { - return getRuleContext(FunctionDeclarationContext.class,0); - } - public StatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_statement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitStatement(this); - } - } - - public final StatementContext statement() throws RecognitionException { - StatementContext _localctx = new StatementContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_statement); - try { - setState(190); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(170); - block(); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(171); - variableStatement(); - } - break; - - case 3: - enterOuterAlt(_localctx, 3); - { - setState(172); - importStatement(); - } - break; - - case 4: - enterOuterAlt(_localctx, 4); - { - setState(173); - exportStatement(); - } - break; - - case 5: - enterOuterAlt(_localctx, 5); - { - setState(174); - emptyStatement_(); - } - break; - - case 6: - enterOuterAlt(_localctx, 6); - { - setState(175); - classDeclaration(); - } - break; - - case 7: - enterOuterAlt(_localctx, 7); - { - setState(176); - expressionStatement(); - } - break; - - case 8: - enterOuterAlt(_localctx, 8); - { - setState(177); - ifStatement(); - } - break; - - case 9: - enterOuterAlt(_localctx, 9); - { - setState(178); - iterationStatement(); - } - break; - - case 10: - enterOuterAlt(_localctx, 10); - { - setState(179); - continueStatement(); - } - break; - - case 11: - enterOuterAlt(_localctx, 11); - { - setState(180); - breakStatement(); - } - break; - - case 12: - enterOuterAlt(_localctx, 12); - { - setState(181); - returnStatement(); - } - break; - - case 13: - enterOuterAlt(_localctx, 13); - { - setState(182); - yieldStatement(); - } - break; - - case 14: - enterOuterAlt(_localctx, 14); - { - setState(183); - withStatement(); - } - break; - - case 15: - enterOuterAlt(_localctx, 15); - { - setState(184); - labelledStatement(); - } - break; - - case 16: - enterOuterAlt(_localctx, 16); - { - setState(185); - switchStatement(); - } - break; - - case 17: - enterOuterAlt(_localctx, 17); - { - setState(186); - throwStatement(); - } - break; - - case 18: - enterOuterAlt(_localctx, 18); - { - setState(187); - tryStatement(); - } - break; - - case 19: - enterOuterAlt(_localctx, 19); - { - setState(188); - debuggerStatement(); - } - break; - - case 20: - enterOuterAlt(_localctx, 20); - { - setState(189); - functionDeclaration(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BlockContext extends ParserRuleContext { - public TerminalNode OpenBrace() { return getToken(JavaScriptParser.OpenBrace, 0); } - public TerminalNode CloseBrace() { return getToken(JavaScriptParser.CloseBrace, 0); } - public StatementListContext statementList() { - return getRuleContext(StatementListContext.class,0); - } - public BlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_block; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBlock(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBlock(this); - } - } - - public final BlockContext block() throws RecognitionException { - BlockContext _localctx = new BlockContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_block); - try { - enterOuterAlt(_localctx, 1); - { - setState(192); - match(OpenBrace); - setState(194); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { - case 1: - { - setState(193); - statementList(); - } - break; - } - setState(196); - match(CloseBrace); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StatementListContext extends ParserRuleContext { - public List statement() { - return getRuleContexts(StatementContext.class); - } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); - } - public StatementListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_statementList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterStatementList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitStatementList(this); - } - } - - public final StatementListContext statementList() throws RecognitionException { - StatementListContext _localctx = new StatementListContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_statementList); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(199); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(198); - statement(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(201); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,4,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportStatementContext extends ParserRuleContext { - public TerminalNode Import() { return getToken(JavaScriptParser.Import, 0); } - public ImportFromBlockContext importFromBlock() { - return getRuleContext(ImportFromBlockContext.class,0); - } - public ImportStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterImportStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitImportStatement(this); - } - } - - public final ImportStatementContext importStatement() throws RecognitionException { - ImportStatementContext _localctx = new ImportStatementContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_importStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(203); - match(Import); - setState(204); - importFromBlock(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportFromBlockContext extends ParserRuleContext { - public ImportFromContext importFrom() { - return getRuleContext(ImportFromContext.class,0); - } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ImportNamespaceContext importNamespace() { - return getRuleContext(ImportNamespaceContext.class,0); - } - public ModuleItemsContext moduleItems() { - return getRuleContext(ModuleItemsContext.class,0); - } - public ImportDefaultContext importDefault() { - return getRuleContext(ImportDefaultContext.class,0); - } - public TerminalNode StringLiteral() { return getToken(JavaScriptParser.StringLiteral, 0); } - public ImportFromBlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importFromBlock; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterImportFromBlock(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitImportFromBlock(this); - } - } - - public final ImportFromBlockContext importFromBlock() throws RecognitionException { - ImportFromBlockContext _localctx = new ImportFromBlockContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_importFromBlock); - try { - setState(218); - _errHandler.sync(this); - switch (_input.LA(1)) { - case OpenBrace: - case Multiply: - case NullLiteral: - case BooleanLiteral: - case Break: - case Do: - case Instanceof: - case Typeof: - case Case: - case Else: - case New: - case Var: - case Catch: - case Finally: - case Return: - case Void: - case Continue: - case For: - case Switch: - case While: - case Debugger: - case Function_: - case This: - case With: - case Default: - case If: - case Throw: - case Delete: - case In: - case Try: - case As: - case From: - case Class: - case Enum: - case Extends: - case Super: - case Const: - case Export: - case Import: - case Async: - case Await: - case Yield: - case Implements: - case StrictLet: - case NonStrictLet: - case Private: - case Public: - case Interface: - case Package: - case Protected: - case Static: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(207); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { - case 1: - { - setState(206); - importDefault(); - } - break; - } - setState(211); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Multiply: - case NullLiteral: - case BooleanLiteral: - case Break: - case Do: - case Instanceof: - case Typeof: - case Case: - case Else: - case New: - case Var: - case Catch: - case Finally: - case Return: - case Void: - case Continue: - case For: - case Switch: - case While: - case Debugger: - case Function_: - case This: - case With: - case Default: - case If: - case Throw: - case Delete: - case In: - case Try: - case As: - case From: - case Class: - case Enum: - case Extends: - case Super: - case Const: - case Export: - case Import: - case Async: - case Await: - case Yield: - case Implements: - case StrictLet: - case NonStrictLet: - case Private: - case Public: - case Interface: - case Package: - case Protected: - case Static: - case Identifier: - { - setState(209); - importNamespace(); - } - break; - case OpenBrace: - { - setState(210); - moduleItems(); - } - break; - default: - throw new NoViableAltException(this); - } - setState(213); - importFrom(); - setState(214); - eos(); - } - break; - case StringLiteral: - enterOuterAlt(_localctx, 2); - { - setState(216); - match(StringLiteral); - setState(217); - eos(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ModuleItemsContext extends ParserRuleContext { - public TerminalNode OpenBrace() { return getToken(JavaScriptParser.OpenBrace, 0); } - public TerminalNode CloseBrace() { return getToken(JavaScriptParser.CloseBrace, 0); } - public List aliasName() { - return getRuleContexts(AliasNameContext.class); - } - public AliasNameContext aliasName(int i) { - return getRuleContext(AliasNameContext.class,i); - } - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public ModuleItemsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_moduleItems; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterModuleItems(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitModuleItems(this); - } - } - - public final ModuleItemsContext moduleItems() throws RecognitionException { - ModuleItemsContext _localctx = new ModuleItemsContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_moduleItems); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(220); - match(OpenBrace); - setState(226); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,8,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(221); - aliasName(); - setState(222); - match(Comma); - } - } - } - setState(228); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,8,_ctx); - } - setState(233); - _errHandler.sync(this); - _la = _input.LA(1); - if (((((_la - 61)) & ~0x3f) == 0 && ((1L << (_la - 61)) & 576460752303421443L) != 0)) { - { - setState(229); - aliasName(); - setState(231); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Comma) { - { - setState(230); - match(Comma); - } - } - - } - } - - setState(235); - match(CloseBrace); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportDefaultContext extends ParserRuleContext { - public AliasNameContext aliasName() { - return getRuleContext(AliasNameContext.class,0); - } - public TerminalNode Comma() { return getToken(JavaScriptParser.Comma, 0); } - public ImportDefaultContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importDefault; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterImportDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitImportDefault(this); - } - } - - public final ImportDefaultContext importDefault() throws RecognitionException { - ImportDefaultContext _localctx = new ImportDefaultContext(_ctx, getState()); - enterRule(_localctx, 16, RULE_importDefault); - try { - enterOuterAlt(_localctx, 1); - { - setState(237); - aliasName(); - setState(238); - match(Comma); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportNamespaceContext extends ParserRuleContext { - public TerminalNode Multiply() { return getToken(JavaScriptParser.Multiply, 0); } - public List identifierName() { - return getRuleContexts(IdentifierNameContext.class); - } - public IdentifierNameContext identifierName(int i) { - return getRuleContext(IdentifierNameContext.class,i); - } - public TerminalNode As() { return getToken(JavaScriptParser.As, 0); } - public ImportNamespaceContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importNamespace; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterImportNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitImportNamespace(this); - } - } - - public final ImportNamespaceContext importNamespace() throws RecognitionException { - ImportNamespaceContext _localctx = new ImportNamespaceContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_importNamespace); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(242); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Multiply: - { - setState(240); - match(Multiply); - } - break; - case NullLiteral: - case BooleanLiteral: - case Break: - case Do: - case Instanceof: - case Typeof: - case Case: - case Else: - case New: - case Var: - case Catch: - case Finally: - case Return: - case Void: - case Continue: - case For: - case Switch: - case While: - case Debugger: - case Function_: - case This: - case With: - case Default: - case If: - case Throw: - case Delete: - case In: - case Try: - case As: - case From: - case Class: - case Enum: - case Extends: - case Super: - case Const: - case Export: - case Import: - case Async: - case Await: - case Yield: - case Implements: - case StrictLet: - case NonStrictLet: - case Private: - case Public: - case Interface: - case Package: - case Protected: - case Static: - case Identifier: - { - setState(241); - identifierName(); - } - break; - default: - throw new NoViableAltException(this); - } - setState(246); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==As) { - { - setState(244); - match(As); - setState(245); - identifierName(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportFromContext extends ParserRuleContext { - public TerminalNode From() { return getToken(JavaScriptParser.From, 0); } - public TerminalNode StringLiteral() { return getToken(JavaScriptParser.StringLiteral, 0); } - public ImportFromContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importFrom; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterImportFrom(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitImportFrom(this); - } - } - - public final ImportFromContext importFrom() throws RecognitionException { - ImportFromContext _localctx = new ImportFromContext(_ctx, getState()); - enterRule(_localctx, 20, RULE_importFrom); - try { - enterOuterAlt(_localctx, 1); - { - setState(248); - match(From); - setState(249); - match(StringLiteral); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AliasNameContext extends ParserRuleContext { - public List identifierName() { - return getRuleContexts(IdentifierNameContext.class); - } - public IdentifierNameContext identifierName(int i) { - return getRuleContext(IdentifierNameContext.class,i); - } - public TerminalNode As() { return getToken(JavaScriptParser.As, 0); } - public AliasNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_aliasName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAliasName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAliasName(this); - } - } - - public final AliasNameContext aliasName() throws RecognitionException { - AliasNameContext _localctx = new AliasNameContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_aliasName); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(251); - identifierName(); - setState(254); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==As) { - { - setState(252); - match(As); - setState(253); - identifierName(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExportStatementContext extends ParserRuleContext { - public ExportStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_exportStatement; } - - public ExportStatementContext() { } - public void copyFrom(ExportStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ExportDefaultDeclarationContext extends ExportStatementContext { - public TerminalNode Export() { return getToken(JavaScriptParser.Export, 0); } - public TerminalNode Default() { return getToken(JavaScriptParser.Default, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ExportDefaultDeclarationContext(ExportStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterExportDefaultDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitExportDefaultDeclaration(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ExportDeclarationContext extends ExportStatementContext { - public TerminalNode Export() { return getToken(JavaScriptParser.Export, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ExportFromBlockContext exportFromBlock() { - return getRuleContext(ExportFromBlockContext.class,0); - } - public DeclarationContext declaration() { - return getRuleContext(DeclarationContext.class,0); - } - public ExportDeclarationContext(ExportStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterExportDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitExportDeclaration(this); - } - } - - public final ExportStatementContext exportStatement() throws RecognitionException { - ExportStatementContext _localctx = new ExportStatementContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_exportStatement); - try { - setState(268); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { - case 1: - _localctx = new ExportDeclarationContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(256); - match(Export); - setState(259); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { - case 1: - { - setState(257); - exportFromBlock(); - } - break; - - case 2: - { - setState(258); - declaration(); - } - break; - } - setState(261); - eos(); - } - break; - - case 2: - _localctx = new ExportDefaultDeclarationContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(263); - match(Export); - setState(264); - match(Default); - setState(265); - singleExpression(0); - setState(266); - eos(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExportFromBlockContext extends ParserRuleContext { - public ImportNamespaceContext importNamespace() { - return getRuleContext(ImportNamespaceContext.class,0); - } - public ImportFromContext importFrom() { - return getRuleContext(ImportFromContext.class,0); - } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ModuleItemsContext moduleItems() { - return getRuleContext(ModuleItemsContext.class,0); - } - public ExportFromBlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_exportFromBlock; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterExportFromBlock(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitExportFromBlock(this); - } - } - - public final ExportFromBlockContext exportFromBlock() throws RecognitionException { - ExportFromBlockContext _localctx = new ExportFromBlockContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_exportFromBlock); - try { - setState(280); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Multiply: - case NullLiteral: - case BooleanLiteral: - case Break: - case Do: - case Instanceof: - case Typeof: - case Case: - case Else: - case New: - case Var: - case Catch: - case Finally: - case Return: - case Void: - case Continue: - case For: - case Switch: - case While: - case Debugger: - case Function_: - case This: - case With: - case Default: - case If: - case Throw: - case Delete: - case In: - case Try: - case As: - case From: - case Class: - case Enum: - case Extends: - case Super: - case Const: - case Export: - case Import: - case Async: - case Await: - case Yield: - case Implements: - case StrictLet: - case NonStrictLet: - case Private: - case Public: - case Interface: - case Package: - case Protected: - case Static: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(270); - importNamespace(); - setState(271); - importFrom(); - setState(272); - eos(); - } - break; - case OpenBrace: - enterOuterAlt(_localctx, 2); - { - setState(274); - moduleItems(); - setState(276); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) { - case 1: - { - setState(275); - importFrom(); - } - break; - } - setState(278); - eos(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DeclarationContext extends ParserRuleContext { - public VariableStatementContext variableStatement() { - return getRuleContext(VariableStatementContext.class,0); - } - public ClassDeclarationContext classDeclaration() { - return getRuleContext(ClassDeclarationContext.class,0); - } - public FunctionDeclarationContext functionDeclaration() { - return getRuleContext(FunctionDeclarationContext.class,0); - } - public DeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_declaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitDeclaration(this); - } - } - - public final DeclarationContext declaration() throws RecognitionException { - DeclarationContext _localctx = new DeclarationContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_declaration); - try { - setState(285); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Var: - case Const: - case StrictLet: - case NonStrictLet: - enterOuterAlt(_localctx, 1); - { - setState(282); - variableStatement(); - } - break; - case Class: - enterOuterAlt(_localctx, 2); - { - setState(283); - classDeclaration(); - } - break; - case Function_: - case Async: - enterOuterAlt(_localctx, 3); - { - setState(284); - functionDeclaration(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariableStatementContext extends ParserRuleContext { - public VariableDeclarationListContext variableDeclarationList() { - return getRuleContext(VariableDeclarationListContext.class,0); - } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public VariableStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variableStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterVariableStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitVariableStatement(this); - } - } - - public final VariableStatementContext variableStatement() throws RecognitionException { - VariableStatementContext _localctx = new VariableStatementContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_variableStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(287); - variableDeclarationList(); - setState(288); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariableDeclarationListContext extends ParserRuleContext { - public VarModifierContext varModifier() { - return getRuleContext(VarModifierContext.class,0); - } - public List variableDeclaration() { - return getRuleContexts(VariableDeclarationContext.class); - } - public VariableDeclarationContext variableDeclaration(int i) { - return getRuleContext(VariableDeclarationContext.class,i); - } - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public VariableDeclarationListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variableDeclarationList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterVariableDeclarationList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitVariableDeclarationList(this); - } - } - - public final VariableDeclarationListContext variableDeclarationList() throws RecognitionException { - VariableDeclarationListContext _localctx = new VariableDeclarationListContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_variableDeclarationList); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(290); - varModifier(); - setState(291); - variableDeclaration(); - setState(296); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,19,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(292); - match(Comma); - setState(293); - variableDeclaration(); - } - } - } - setState(298); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,19,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariableDeclarationContext extends ParserRuleContext { - public AssignableContext assignable() { - return getRuleContext(AssignableContext.class,0); - } - public TerminalNode Assign() { return getToken(JavaScriptParser.Assign, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public VariableDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variableDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterVariableDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitVariableDeclaration(this); - } - } - - public final VariableDeclarationContext variableDeclaration() throws RecognitionException { - VariableDeclarationContext _localctx = new VariableDeclarationContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_variableDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(299); - assignable(); - setState(302); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { - case 1: - { - setState(300); - match(Assign); - setState(301); - singleExpression(0); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EmptyStatement_Context extends ParserRuleContext { - public TerminalNode SemiColon() { return getToken(JavaScriptParser.SemiColon, 0); } - public EmptyStatement_Context(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_emptyStatement_; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterEmptyStatement_(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitEmptyStatement_(this); - } - } - - public final EmptyStatement_Context emptyStatement_() throws RecognitionException { - EmptyStatement_Context _localctx = new EmptyStatement_Context(_ctx, getState()); - enterRule(_localctx, 36, RULE_emptyStatement_); - try { - enterOuterAlt(_localctx, 1); - { - setState(304); - match(SemiColon); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExpressionStatementContext extends ParserRuleContext { - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ExpressionStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expressionStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterExpressionStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitExpressionStatement(this); - } - } - - public final ExpressionStatementContext expressionStatement() throws RecognitionException { - ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_expressionStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(306); - if (!(this.notOpenBraceAndNotFunction())) throw new FailedPredicateException(this, "this.notOpenBraceAndNotFunction()"); - setState(307); - expressionSequence(); - setState(308); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IfStatementContext extends ParserRuleContext { - public TerminalNode If() { return getToken(JavaScriptParser.If, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public List statement() { - return getRuleContexts(StatementContext.class); - } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); - } - public TerminalNode Else() { return getToken(JavaScriptParser.Else, 0); } - public IfStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_ifStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterIfStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitIfStatement(this); - } - } - - public final IfStatementContext ifStatement() throws RecognitionException { - IfStatementContext _localctx = new IfStatementContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_ifStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(310); - match(If); - setState(311); - match(OpenParen); - setState(312); - expressionSequence(); - setState(313); - match(CloseParen); - setState(314); - statement(); - setState(317); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) { - case 1: - { - setState(315); - match(Else); - setState(316); - statement(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IterationStatementContext extends ParserRuleContext { - public IterationStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_iterationStatement; } - - public IterationStatementContext() { } - public void copyFrom(IterationStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DoStatementContext extends IterationStatementContext { - public TerminalNode Do() { return getToken(JavaScriptParser.Do, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public TerminalNode While() { return getToken(JavaScriptParser.While, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public DoStatementContext(IterationStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterDoStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitDoStatement(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class WhileStatementContext extends IterationStatementContext { - public TerminalNode While() { return getToken(JavaScriptParser.While, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public WhileStatementContext(IterationStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterWhileStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitWhileStatement(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ForStatementContext extends IterationStatementContext { - public TerminalNode For() { return getToken(JavaScriptParser.For, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public List SemiColon() { return getTokens(JavaScriptParser.SemiColon); } - public TerminalNode SemiColon(int i) { - return getToken(JavaScriptParser.SemiColon, i); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public List expressionSequence() { - return getRuleContexts(ExpressionSequenceContext.class); - } - public ExpressionSequenceContext expressionSequence(int i) { - return getRuleContext(ExpressionSequenceContext.class,i); - } - public VariableDeclarationListContext variableDeclarationList() { - return getRuleContext(VariableDeclarationListContext.class,0); - } - public ForStatementContext(IterationStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterForStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitForStatement(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ForInStatementContext extends IterationStatementContext { - public TerminalNode For() { return getToken(JavaScriptParser.For, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode In() { return getToken(JavaScriptParser.In, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public VariableDeclarationListContext variableDeclarationList() { - return getRuleContext(VariableDeclarationListContext.class,0); - } - public ForInStatementContext(IterationStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterForInStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitForInStatement(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ForOfStatementContext extends IterationStatementContext { - public TerminalNode For() { return getToken(JavaScriptParser.For, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public VariableDeclarationListContext variableDeclarationList() { - return getRuleContext(VariableDeclarationListContext.class,0); - } - public TerminalNode Await() { return getToken(JavaScriptParser.Await, 0); } - public ForOfStatementContext(IterationStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterForOfStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitForOfStatement(this); - } - } - - public final IterationStatementContext iterationStatement() throws RecognitionException { - IterationStatementContext _localctx = new IterationStatementContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_iterationStatement); - int _la; - try { - setState(375); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) { - case 1: - _localctx = new DoStatementContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(319); - match(Do); - setState(320); - statement(); - setState(321); - match(While); - setState(322); - match(OpenParen); - setState(323); - expressionSequence(); - setState(324); - match(CloseParen); - setState(325); - eos(); - } - break; - - case 2: - _localctx = new WhileStatementContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(327); - match(While); - setState(328); - match(OpenParen); - setState(329); - expressionSequence(); - setState(330); - match(CloseParen); - setState(331); - statement(); - } - break; - - case 3: - _localctx = new ForStatementContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(333); - match(For); - setState(334); - match(OpenParen); - setState(337); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { - case 1: - { - setState(335); - expressionSequence(); - } - break; - - case 2: - { - setState(336); - variableDeclarationList(); - } - break; - } - setState(339); - match(SemiColon); - setState(341); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -2305843009147632976L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 252549697070713087L) != 0)) { - { - setState(340); - expressionSequence(); - } - } - - setState(343); - match(SemiColon); - setState(345); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -2305843009147632976L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 252549697070713087L) != 0)) { - { - setState(344); - expressionSequence(); - } - } - - setState(347); - match(CloseParen); - setState(348); - statement(); - } - break; - - case 4: - _localctx = new ForInStatementContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(349); - match(For); - setState(350); - match(OpenParen); - setState(353); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) { - case 1: - { - setState(351); - singleExpression(0); - } - break; - - case 2: - { - setState(352); - variableDeclarationList(); - } - break; - } - setState(355); - match(In); - setState(356); - expressionSequence(); - setState(357); - match(CloseParen); - setState(358); - statement(); - } - break; - - case 5: - _localctx = new ForOfStatementContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(360); - match(For); - setState(362); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Await) { - { - setState(361); - match(Await); - } - } - - setState(364); - match(OpenParen); - setState(367); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) { - case 1: - { - setState(365); - singleExpression(0); - } - break; - - case 2: - { - setState(366); - variableDeclarationList(); - } - break; - } - setState(369); - identifier(); - setState(370); - if (!(this.p("of"))) throw new FailedPredicateException(this, "this.p(\"of\")"); - setState(371); - expressionSequence(); - setState(372); - match(CloseParen); - setState(373); - statement(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VarModifierContext extends ParserRuleContext { - public TerminalNode Var() { return getToken(JavaScriptParser.Var, 0); } - public Let_Context let_() { - return getRuleContext(Let_Context.class,0); - } - public TerminalNode Const() { return getToken(JavaScriptParser.Const, 0); } - public VarModifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_varModifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterVarModifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitVarModifier(this); - } - } - - public final VarModifierContext varModifier() throws RecognitionException { - VarModifierContext _localctx = new VarModifierContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_varModifier); - try { - setState(380); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Var: - enterOuterAlt(_localctx, 1); - { - setState(377); - match(Var); - } - break; - case StrictLet: - case NonStrictLet: - enterOuterAlt(_localctx, 2); - { - setState(378); - let_(); - } - break; - case Const: - enterOuterAlt(_localctx, 3); - { - setState(379); - match(Const); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ContinueStatementContext extends ParserRuleContext { - public TerminalNode Continue() { return getToken(JavaScriptParser.Continue, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ContinueStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_continueStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterContinueStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitContinueStatement(this); - } - } - - public final ContinueStatementContext continueStatement() throws RecognitionException { - ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState()); - enterRule(_localctx, 46, RULE_continueStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(382); - match(Continue); - setState(385); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) { - case 1: - { - setState(383); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(384); - identifier(); - } - break; - } - setState(387); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BreakStatementContext extends ParserRuleContext { - public TerminalNode Break() { return getToken(JavaScriptParser.Break, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public BreakStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_breakStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBreakStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBreakStatement(this); - } - } - - public final BreakStatementContext breakStatement() throws RecognitionException { - BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_breakStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(389); - match(Break); - setState(392); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { - case 1: - { - setState(390); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(391); - identifier(); - } - break; - } - setState(394); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ReturnStatementContext extends ParserRuleContext { - public TerminalNode Return() { return getToken(JavaScriptParser.Return, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public ReturnStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_returnStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterReturnStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitReturnStatement(this); - } - } - - public final ReturnStatementContext returnStatement() throws RecognitionException { - ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); - enterRule(_localctx, 50, RULE_returnStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(396); - match(Return); - setState(399); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) { - case 1: - { - setState(397); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(398); - expressionSequence(); - } - break; - } - setState(401); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class YieldStatementContext extends ParserRuleContext { - public TerminalNode Yield() { return getToken(JavaScriptParser.Yield, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public YieldStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_yieldStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterYieldStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitYieldStatement(this); - } - } - - public final YieldStatementContext yieldStatement() throws RecognitionException { - YieldStatementContext _localctx = new YieldStatementContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_yieldStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(403); - match(Yield); - setState(406); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { - case 1: - { - setState(404); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(405); - expressionSequence(); - } - break; - } - setState(408); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WithStatementContext extends ParserRuleContext { - public TerminalNode With() { return getToken(JavaScriptParser.With, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public WithStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_withStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterWithStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitWithStatement(this); - } - } - - public final WithStatementContext withStatement() throws RecognitionException { - WithStatementContext _localctx = new WithStatementContext(_ctx, getState()); - enterRule(_localctx, 54, RULE_withStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(410); - match(With); - setState(411); - match(OpenParen); - setState(412); - expressionSequence(); - setState(413); - match(CloseParen); - setState(414); - statement(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SwitchStatementContext extends ParserRuleContext { - public TerminalNode Switch() { return getToken(JavaScriptParser.Switch, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public CaseBlockContext caseBlock() { - return getRuleContext(CaseBlockContext.class,0); - } - public SwitchStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_switchStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterSwitchStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitSwitchStatement(this); - } - } - - public final SwitchStatementContext switchStatement() throws RecognitionException { - SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_switchStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(416); - match(Switch); - setState(417); - match(OpenParen); - setState(418); - expressionSequence(); - setState(419); - match(CloseParen); - setState(420); - caseBlock(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CaseBlockContext extends ParserRuleContext { - public TerminalNode OpenBrace() { return getToken(JavaScriptParser.OpenBrace, 0); } - public TerminalNode CloseBrace() { return getToken(JavaScriptParser.CloseBrace, 0); } - public List caseClauses() { - return getRuleContexts(CaseClausesContext.class); - } - public CaseClausesContext caseClauses(int i) { - return getRuleContext(CaseClausesContext.class,i); - } - public DefaultClauseContext defaultClause() { - return getRuleContext(DefaultClauseContext.class,0); - } - public CaseBlockContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_caseBlock; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterCaseBlock(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitCaseBlock(this); - } - } - - public final CaseBlockContext caseBlock() throws RecognitionException { - CaseBlockContext _localctx = new CaseBlockContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_caseBlock); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(422); - match(OpenBrace); - setState(424); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Case) { - { - setState(423); - caseClauses(); - } - } - - setState(430); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Default) { - { - setState(426); - defaultClause(); - setState(428); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Case) { - { - setState(427); - caseClauses(); - } - } - - } - } - - setState(432); - match(CloseBrace); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CaseClausesContext extends ParserRuleContext { - public List caseClause() { - return getRuleContexts(CaseClauseContext.class); - } - public CaseClauseContext caseClause(int i) { - return getRuleContext(CaseClauseContext.class,i); - } - public CaseClausesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_caseClauses; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterCaseClauses(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitCaseClauses(this); - } - } - - public final CaseClausesContext caseClauses() throws RecognitionException { - CaseClausesContext _localctx = new CaseClausesContext(_ctx, getState()); - enterRule(_localctx, 60, RULE_caseClauses); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(435); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(434); - caseClause(); - } - } - setState(437); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==Case ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CaseClauseContext extends ParserRuleContext { - public TerminalNode Case() { return getToken(JavaScriptParser.Case, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode Colon() { return getToken(JavaScriptParser.Colon, 0); } - public StatementListContext statementList() { - return getRuleContext(StatementListContext.class,0); - } - public CaseClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_caseClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterCaseClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitCaseClause(this); - } - } - - public final CaseClauseContext caseClause() throws RecognitionException { - CaseClauseContext _localctx = new CaseClauseContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_caseClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(439); - match(Case); - setState(440); - expressionSequence(); - setState(441); - match(Colon); - setState(443); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) { - case 1: - { - setState(442); - statementList(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DefaultClauseContext extends ParserRuleContext { - public TerminalNode Default() { return getToken(JavaScriptParser.Default, 0); } - public TerminalNode Colon() { return getToken(JavaScriptParser.Colon, 0); } - public StatementListContext statementList() { - return getRuleContext(StatementListContext.class,0); - } - public DefaultClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_defaultClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterDefaultClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitDefaultClause(this); - } - } - - public final DefaultClauseContext defaultClause() throws RecognitionException { - DefaultClauseContext _localctx = new DefaultClauseContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_defaultClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(445); - match(Default); - setState(446); - match(Colon); - setState(448); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) { - case 1: - { - setState(447); - statementList(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LabelledStatementContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode Colon() { return getToken(JavaScriptParser.Colon, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public LabelledStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_labelledStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLabelledStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLabelledStatement(this); - } - } - - public final LabelledStatementContext labelledStatement() throws RecognitionException { - LabelledStatementContext _localctx = new LabelledStatementContext(_ctx, getState()); - enterRule(_localctx, 66, RULE_labelledStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(450); - identifier(); - setState(451); - match(Colon); - setState(452); - statement(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ThrowStatementContext extends ParserRuleContext { - public TerminalNode Throw() { return getToken(JavaScriptParser.Throw, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public ThrowStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_throwStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterThrowStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitThrowStatement(this); - } - } - - public final ThrowStatementContext throwStatement() throws RecognitionException { - ThrowStatementContext _localctx = new ThrowStatementContext(_ctx, getState()); - enterRule(_localctx, 68, RULE_throwStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(454); - match(Throw); - setState(455); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(456); - expressionSequence(); - setState(457); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TryStatementContext extends ParserRuleContext { - public TerminalNode Try() { return getToken(JavaScriptParser.Try, 0); } - public BlockContext block() { - return getRuleContext(BlockContext.class,0); - } - public CatchProductionContext catchProduction() { - return getRuleContext(CatchProductionContext.class,0); - } - public FinallyProductionContext finallyProduction() { - return getRuleContext(FinallyProductionContext.class,0); - } - public TryStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tryStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterTryStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitTryStatement(this); - } - } - - public final TryStatementContext tryStatement() throws RecognitionException { - TryStatementContext _localctx = new TryStatementContext(_ctx, getState()); - enterRule(_localctx, 70, RULE_tryStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(459); - match(Try); - setState(460); - block(); - setState(466); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Catch: - { - setState(461); - catchProduction(); - setState(463); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) { - case 1: - { - setState(462); - finallyProduction(); - } - break; - } - } - break; - case Finally: - { - setState(465); - finallyProduction(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CatchProductionContext extends ParserRuleContext { - public TerminalNode Catch() { return getToken(JavaScriptParser.Catch, 0); } - public BlockContext block() { - return getRuleContext(BlockContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public AssignableContext assignable() { - return getRuleContext(AssignableContext.class,0); - } - public CatchProductionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_catchProduction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterCatchProduction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitCatchProduction(this); - } - } - - public final CatchProductionContext catchProduction() throws RecognitionException { - CatchProductionContext _localctx = new CatchProductionContext(_ctx, getState()); - enterRule(_localctx, 72, RULE_catchProduction); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(468); - match(Catch); - setState(474); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OpenParen) { - { - setState(469); - match(OpenParen); - setState(471); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OpenBracket || _la==OpenBrace || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(470); - assignable(); - } - } - - setState(473); - match(CloseParen); - } - } - - setState(476); - block(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FinallyProductionContext extends ParserRuleContext { - public TerminalNode Finally() { return getToken(JavaScriptParser.Finally, 0); } - public BlockContext block() { - return getRuleContext(BlockContext.class,0); - } - public FinallyProductionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_finallyProduction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFinallyProduction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFinallyProduction(this); - } - } - - public final FinallyProductionContext finallyProduction() throws RecognitionException { - FinallyProductionContext _localctx = new FinallyProductionContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_finallyProduction); - try { - enterOuterAlt(_localctx, 1); - { - setState(478); - match(Finally); - setState(479); - block(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DebuggerStatementContext extends ParserRuleContext { - public TerminalNode Debugger() { return getToken(JavaScriptParser.Debugger, 0); } - public EosContext eos() { - return getRuleContext(EosContext.class,0); - } - public DebuggerStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_debuggerStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterDebuggerStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitDebuggerStatement(this); - } - } - - public final DebuggerStatementContext debuggerStatement() throws RecognitionException { - DebuggerStatementContext _localctx = new DebuggerStatementContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_debuggerStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(481); - match(Debugger); - setState(482); - eos(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionDeclarationContext extends ParserRuleContext { - public TerminalNode Function_() { return getToken(JavaScriptParser.Function_, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public TerminalNode Async() { return getToken(JavaScriptParser.Async, 0); } - public TerminalNode Multiply() { return getToken(JavaScriptParser.Multiply, 0); } - public FormalParameterListContext formalParameterList() { - return getRuleContext(FormalParameterListContext.class,0); - } - public FunctionDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFunctionDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFunctionDeclaration(this); - } - } - - public final FunctionDeclarationContext functionDeclaration() throws RecognitionException { - FunctionDeclarationContext _localctx = new FunctionDeclarationContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_functionDeclaration); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(485); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Async) { - { - setState(484); - match(Async); - } - } - - setState(487); - match(Function_); - setState(489); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Multiply) { - { - setState(488); - match(Multiply); - } - } - - setState(491); - identifier(); - setState(492); - match(OpenParen); - setState(494); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 262688L) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(493); - formalParameterList(); - } - } - - setState(496); - match(CloseParen); - setState(497); - functionBody(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ClassDeclarationContext extends ParserRuleContext { - public TerminalNode Class() { return getToken(JavaScriptParser.Class, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ClassTailContext classTail() { - return getRuleContext(ClassTailContext.class,0); - } - public ClassDeclarationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_classDeclaration; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterClassDeclaration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitClassDeclaration(this); - } - } - - public final ClassDeclarationContext classDeclaration() throws RecognitionException { - ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState()); - enterRule(_localctx, 80, RULE_classDeclaration); - try { - enterOuterAlt(_localctx, 1); - { - setState(499); - match(Class); - setState(500); - identifier(); - setState(501); - classTail(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ClassTailContext extends ParserRuleContext { - public TerminalNode OpenBrace() { return getToken(JavaScriptParser.OpenBrace, 0); } - public TerminalNode CloseBrace() { return getToken(JavaScriptParser.CloseBrace, 0); } - public TerminalNode Extends() { return getToken(JavaScriptParser.Extends, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public List classElement() { - return getRuleContexts(ClassElementContext.class); - } - public ClassElementContext classElement(int i) { - return getRuleContext(ClassElementContext.class,i); - } - public ClassTailContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_classTail; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterClassTail(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitClassTail(this); - } - } - - public final ClassTailContext classTail() throws RecognitionException { - ClassTailContext _localctx = new ClassTailContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_classTail); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(505); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Extends) { - { - setState(503); - match(Extends); - setState(504); - singleExpression(0); - } - } - - setState(507); - match(OpenBrace); - setState(511); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,48,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(508); - classElement(); - } - } - } - setState(513); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,48,_ctx); - } - setState(514); - match(CloseBrace); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ClassElementContext extends ParserRuleContext { - public MethodDefinitionContext methodDefinition() { - return getRuleContext(MethodDefinitionContext.class,0); - } - public AssignableContext assignable() { - return getRuleContext(AssignableContext.class,0); - } - public TerminalNode Assign() { return getToken(JavaScriptParser.Assign, 0); } - public ObjectLiteralContext objectLiteral() { - return getRuleContext(ObjectLiteralContext.class,0); - } - public TerminalNode SemiColon() { return getToken(JavaScriptParser.SemiColon, 0); } - public List Static() { return getTokens(JavaScriptParser.Static); } - public TerminalNode Static(int i) { - return getToken(JavaScriptParser.Static, i); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List Async() { return getTokens(JavaScriptParser.Async); } - public TerminalNode Async(int i) { - return getToken(JavaScriptParser.Async, i); - } - public EmptyStatement_Context emptyStatement_() { - return getRuleContext(EmptyStatement_Context.class,0); - } - public PropertyNameContext propertyName() { - return getRuleContext(PropertyNameContext.class,0); - } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode Hashtag() { return getToken(JavaScriptParser.Hashtag, 0); } - public ClassElementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_classElement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterClassElement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitClassElement(this); - } - } - - public final ClassElementContext classElement() throws RecognitionException { - ClassElementContext _localctx = new ClassElementContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_classElement); - int _la; - try { - int _alt; - setState(541); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(522); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,50,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - setState(520); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) { - case 1: - { - setState(516); - match(Static); - } - break; - - case 2: - { - setState(517); - if (!(this.n("static"))) throw new FailedPredicateException(this, "this.n(\"static\")"); - setState(518); - identifier(); - } - break; - - case 3: - { - setState(519); - match(Async); - } - break; - } - } - } - setState(524); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,50,_ctx); - } - setState(531); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) { - case 1: - { - setState(525); - methodDefinition(); - } - break; - - case 2: - { - setState(526); - assignable(); - setState(527); - match(Assign); - setState(528); - objectLiteral(); - setState(529); - match(SemiColon); - } - break; - } - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(533); - emptyStatement_(); - } - break; - - case 3: - enterOuterAlt(_localctx, 3); - { - setState(535); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Hashtag) { - { - setState(534); - match(Hashtag); - } - } - - setState(537); - propertyName(); - setState(538); - match(Assign); - setState(539); - singleExpression(0); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MethodDefinitionContext extends ParserRuleContext { - public PropertyNameContext propertyName() { - return getRuleContext(PropertyNameContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public TerminalNode Multiply() { return getToken(JavaScriptParser.Multiply, 0); } - public TerminalNode Hashtag() { return getToken(JavaScriptParser.Hashtag, 0); } - public FormalParameterListContext formalParameterList() { - return getRuleContext(FormalParameterListContext.class,0); - } - public GetterContext getter() { - return getRuleContext(GetterContext.class,0); - } - public SetterContext setter() { - return getRuleContext(SetterContext.class,0); - } - public MethodDefinitionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_methodDefinition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterMethodDefinition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitMethodDefinition(this); - } - } - - public final MethodDefinitionContext methodDefinition() throws RecognitionException { - MethodDefinitionContext _localctx = new MethodDefinitionContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_methodDefinition); - int _la; - try { - setState(582); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(544); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Multiply) { - { - setState(543); - match(Multiply); - } - } - - setState(547); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Hashtag) { - { - setState(546); - match(Hashtag); - } - } - - setState(549); - propertyName(); - setState(550); - match(OpenParen); - setState(552); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 262688L) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(551); - formalParameterList(); - } - } - - setState(554); - match(CloseParen); - setState(555); - functionBody(); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(558); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) { - case 1: - { - setState(557); - match(Multiply); - } - break; - } - setState(561); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) { - case 1: - { - setState(560); - match(Hashtag); - } - break; - } - setState(563); - getter(); - setState(564); - match(OpenParen); - setState(565); - match(CloseParen); - setState(566); - functionBody(); - } - break; - - case 3: - enterOuterAlt(_localctx, 3); - { - setState(569); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) { - case 1: - { - setState(568); - match(Multiply); - } - break; - } - setState(572); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) { - case 1: - { - setState(571); - match(Hashtag); - } - break; - } - setState(574); - setter(); - setState(575); - match(OpenParen); - setState(577); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 262688L) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(576); - formalParameterList(); - } - } - - setState(579); - match(CloseParen); - setState(580); - functionBody(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FormalParameterListContext extends ParserRuleContext { - public List formalParameterArg() { - return getRuleContexts(FormalParameterArgContext.class); - } - public FormalParameterArgContext formalParameterArg(int i) { - return getRuleContext(FormalParameterArgContext.class,i); - } - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public LastFormalParameterArgContext lastFormalParameterArg() { - return getRuleContext(LastFormalParameterArgContext.class,0); - } - public FormalParameterListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_formalParameterList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFormalParameterList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFormalParameterList(this); - } - } - - public final FormalParameterListContext formalParameterList() throws RecognitionException { - FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_formalParameterList); - int _la; - try { - int _alt; - setState(597); - _errHandler.sync(this); - switch (_input.LA(1)) { - case OpenBracket: - case OpenBrace: - case As: - case From: - case Async: - case NonStrictLet: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(584); - formalParameterArg(); - setState(589); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,63,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(585); - match(Comma); - setState(586); - formalParameterArg(); - } - } - } - setState(591); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,63,_ctx); - } - setState(594); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Comma) { - { - setState(592); - match(Comma); - setState(593); - lastFormalParameterArg(); - } - } - - } - break; - case Ellipsis: - enterOuterAlt(_localctx, 2); - { - setState(596); - lastFormalParameterArg(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FormalParameterArgContext extends ParserRuleContext { - public AssignableContext assignable() { - return getRuleContext(AssignableContext.class,0); - } - public TerminalNode Assign() { return getToken(JavaScriptParser.Assign, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public FormalParameterArgContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_formalParameterArg; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFormalParameterArg(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFormalParameterArg(this); - } - } - - public final FormalParameterArgContext formalParameterArg() throws RecognitionException { - FormalParameterArgContext _localctx = new FormalParameterArgContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_formalParameterArg); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(599); - assignable(); - setState(602); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Assign) { - { - setState(600); - match(Assign); - setState(601); - singleExpression(0); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LastFormalParameterArgContext extends ParserRuleContext { - public TerminalNode Ellipsis() { return getToken(JavaScriptParser.Ellipsis, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public LastFormalParameterArgContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lastFormalParameterArg; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLastFormalParameterArg(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLastFormalParameterArg(this); - } - } - - public final LastFormalParameterArgContext lastFormalParameterArg() throws RecognitionException { - LastFormalParameterArgContext _localctx = new LastFormalParameterArgContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_lastFormalParameterArg); - try { - enterOuterAlt(_localctx, 1); - { - setState(604); - match(Ellipsis); - setState(605); - singleExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionBodyContext extends ParserRuleContext { - public TerminalNode OpenBrace() { return getToken(JavaScriptParser.OpenBrace, 0); } - public TerminalNode CloseBrace() { return getToken(JavaScriptParser.CloseBrace, 0); } - public SourceElementsContext sourceElements() { - return getRuleContext(SourceElementsContext.class,0); - } - public FunctionBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionBody; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFunctionBody(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFunctionBody(this); - } - } - - public final FunctionBodyContext functionBody() throws RecognitionException { - FunctionBodyContext _localctx = new FunctionBodyContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_functionBody); - try { - enterOuterAlt(_localctx, 1); - { - setState(607); - match(OpenBrace); - setState(609); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) { - case 1: - { - setState(608); - sourceElements(); - } - break; - } - setState(611); - match(CloseBrace); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SourceElementsContext extends ParserRuleContext { - public List sourceElement() { - return getRuleContexts(SourceElementContext.class); - } - public SourceElementContext sourceElement(int i) { - return getRuleContext(SourceElementContext.class,i); - } - public SourceElementsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sourceElements; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterSourceElements(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitSourceElements(this); - } - } - - public final SourceElementsContext sourceElements() throws RecognitionException { - SourceElementsContext _localctx = new SourceElementsContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_sourceElements); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(614); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(613); - sourceElement(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(616); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,68,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArrayLiteralContext extends ParserRuleContext { - public TerminalNode OpenBracket() { return getToken(JavaScriptParser.OpenBracket, 0); } - public ElementListContext elementList() { - return getRuleContext(ElementListContext.class,0); - } - public TerminalNode CloseBracket() { return getToken(JavaScriptParser.CloseBracket, 0); } - public ArrayLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arrayLiteral; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArrayLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArrayLiteral(this); - } - } - - public final ArrayLiteralContext arrayLiteral() throws RecognitionException { - ArrayLiteralContext _localctx = new ArrayLiteralContext(_ctx, getState()); - enterRule(_localctx, 98, RULE_arrayLiteral); - try { - enterOuterAlt(_localctx, 1); - { - { - setState(618); - match(OpenBracket); - setState(619); - elementList(); - setState(620); - match(CloseBracket); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ElementListContext extends ParserRuleContext { - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public List arrayElement() { - return getRuleContexts(ArrayElementContext.class); - } - public ArrayElementContext arrayElement(int i) { - return getRuleContext(ArrayElementContext.class,i); - } - public ElementListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_elementList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterElementList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitElementList(this); - } - } - - public final ElementListContext elementList() throws RecognitionException { - ElementListContext _localctx = new ElementListContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_elementList); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(625); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,69,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(622); - match(Comma); - } - } - } - setState(627); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,69,_ctx); - } - setState(629); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -2305843009147370832L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 252549697070713087L) != 0)) { - { - setState(628); - arrayElement(); - } - } - - setState(639); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,72,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(632); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(631); - match(Comma); - } - } - setState(634); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==Comma ); - setState(636); - arrayElement(); - } - } - } - setState(641); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,72,_ctx); - } - setState(645); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==Comma) { - { - { - setState(642); - match(Comma); - } - } - setState(647); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArrayElementContext extends ParserRuleContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode Ellipsis() { return getToken(JavaScriptParser.Ellipsis, 0); } - public ArrayElementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arrayElement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArrayElement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArrayElement(this); - } - } - - public final ArrayElementContext arrayElement() throws RecognitionException { - ArrayElementContext _localctx = new ArrayElementContext(_ctx, getState()); - enterRule(_localctx, 102, RULE_arrayElement); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(649); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Ellipsis) { - { - setState(648); - match(Ellipsis); - } - } - - setState(651); - singleExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyAssignmentContext extends ParserRuleContext { - public PropertyAssignmentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyAssignment; } - - public PropertyAssignmentContext() { } - public void copyFrom(PropertyAssignmentContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PropertyExpressionAssignmentContext extends PropertyAssignmentContext { - public PropertyNameContext propertyName() { - return getRuleContext(PropertyNameContext.class,0); - } - public TerminalNode Colon() { return getToken(JavaScriptParser.Colon, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public PropertyExpressionAssignmentContext(PropertyAssignmentContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPropertyExpressionAssignment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPropertyExpressionAssignment(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ComputedPropertyExpressionAssignmentContext extends PropertyAssignmentContext { - public TerminalNode OpenBracket() { return getToken(JavaScriptParser.OpenBracket, 0); } - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode CloseBracket() { return getToken(JavaScriptParser.CloseBracket, 0); } - public TerminalNode Colon() { return getToken(JavaScriptParser.Colon, 0); } - public ComputedPropertyExpressionAssignmentContext(PropertyAssignmentContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterComputedPropertyExpressionAssignment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitComputedPropertyExpressionAssignment(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PropertyShorthandContext extends PropertyAssignmentContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode Ellipsis() { return getToken(JavaScriptParser.Ellipsis, 0); } - public PropertyShorthandContext(PropertyAssignmentContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPropertyShorthand(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPropertyShorthand(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PropertySetterContext extends PropertyAssignmentContext { - public SetterContext setter() { - return getRuleContext(SetterContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public FormalParameterArgContext formalParameterArg() { - return getRuleContext(FormalParameterArgContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public PropertySetterContext(PropertyAssignmentContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPropertySetter(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPropertySetter(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PropertyGetterContext extends PropertyAssignmentContext { - public GetterContext getter() { - return getRuleContext(GetterContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public PropertyGetterContext(PropertyAssignmentContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPropertyGetter(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPropertyGetter(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class FunctionPropertyContext extends PropertyAssignmentContext { - public PropertyNameContext propertyName() { - return getRuleContext(PropertyNameContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public TerminalNode Async() { return getToken(JavaScriptParser.Async, 0); } - public TerminalNode Multiply() { return getToken(JavaScriptParser.Multiply, 0); } - public FormalParameterListContext formalParameterList() { - return getRuleContext(FormalParameterListContext.class,0); - } - public FunctionPropertyContext(PropertyAssignmentContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFunctionProperty(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFunctionProperty(this); - } - } - - public final PropertyAssignmentContext propertyAssignment() throws RecognitionException { - PropertyAssignmentContext _localctx = new PropertyAssignmentContext(_ctx, getState()); - enterRule(_localctx, 104, RULE_propertyAssignment); - int _la; - try { - setState(692); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) { - case 1: - _localctx = new PropertyExpressionAssignmentContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(653); - propertyName(); - setState(654); - match(Colon); - setState(655); - singleExpression(0); - } - break; - - case 2: - _localctx = new ComputedPropertyExpressionAssignmentContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(657); - match(OpenBracket); - setState(658); - singleExpression(0); - setState(659); - match(CloseBracket); - setState(660); - match(Colon); - setState(661); - singleExpression(0); - } - break; - - case 3: - _localctx = new FunctionPropertyContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(664); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { - case 1: - { - setState(663); - match(Async); - } - break; - } - setState(667); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Multiply) { - { - setState(666); - match(Multiply); - } - } - - setState(669); - propertyName(); - setState(670); - match(OpenParen); - setState(672); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 262688L) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(671); - formalParameterList(); - } - } - - setState(674); - match(CloseParen); - setState(675); - functionBody(); - } - break; - - case 4: - _localctx = new PropertyGetterContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(677); - getter(); - setState(678); - match(OpenParen); - setState(679); - match(CloseParen); - setState(680); - functionBody(); - } - break; - - case 5: - _localctx = new PropertySetterContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(682); - setter(); - setState(683); - match(OpenParen); - setState(684); - formalParameterArg(); - setState(685); - match(CloseParen); - setState(686); - functionBody(); - } - break; - - case 6: - _localctx = new PropertyShorthandContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(689); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Ellipsis) { - { - setState(688); - match(Ellipsis); - } - } - - setState(691); - singleExpression(0); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyNameContext extends ParserRuleContext { - public IdentifierNameContext identifierName() { - return getRuleContext(IdentifierNameContext.class,0); - } - public TerminalNode StringLiteral() { return getToken(JavaScriptParser.StringLiteral, 0); } - public NumericLiteralContext numericLiteral() { - return getRuleContext(NumericLiteralContext.class,0); - } - public TerminalNode OpenBracket() { return getToken(JavaScriptParser.OpenBracket, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode CloseBracket() { return getToken(JavaScriptParser.CloseBracket, 0); } - public PropertyNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPropertyName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPropertyName(this); - } - } - - public final PropertyNameContext propertyName() throws RecognitionException { - PropertyNameContext _localctx = new PropertyNameContext(_ctx, getState()); - enterRule(_localctx, 106, RULE_propertyName); - try { - setState(701); - _errHandler.sync(this); - switch (_input.LA(1)) { - case NullLiteral: - case BooleanLiteral: - case Break: - case Do: - case Instanceof: - case Typeof: - case Case: - case Else: - case New: - case Var: - case Catch: - case Finally: - case Return: - case Void: - case Continue: - case For: - case Switch: - case While: - case Debugger: - case Function_: - case This: - case With: - case Default: - case If: - case Throw: - case Delete: - case In: - case Try: - case As: - case From: - case Class: - case Enum: - case Extends: - case Super: - case Const: - case Export: - case Import: - case Async: - case Await: - case Yield: - case Implements: - case StrictLet: - case NonStrictLet: - case Private: - case Public: - case Interface: - case Package: - case Protected: - case Static: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(694); - identifierName(); - } - break; - case StringLiteral: - enterOuterAlt(_localctx, 2); - { - setState(695); - match(StringLiteral); - } - break; - case DecimalLiteral: - case HexIntegerLiteral: - case OctalIntegerLiteral: - case OctalIntegerLiteral2: - case BinaryIntegerLiteral: - enterOuterAlt(_localctx, 3); - { - setState(696); - numericLiteral(); - } - break; - case OpenBracket: - enterOuterAlt(_localctx, 4); - { - setState(697); - match(OpenBracket); - setState(698); - singleExpression(0); - setState(699); - match(CloseBracket); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArgumentsContext extends ParserRuleContext { - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public List argument() { - return getRuleContexts(ArgumentContext.class); - } - public ArgumentContext argument(int i) { - return getRuleContext(ArgumentContext.class,i); - } - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public ArgumentsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arguments; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArguments(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArguments(this); - } - } - - public final ArgumentsContext arguments() throws RecognitionException { - ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState()); - enterRule(_localctx, 108, RULE_arguments); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(703); - match(OpenParen); - setState(715); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -2305843009147370832L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 252549697070713087L) != 0)) { - { - setState(704); - argument(); - setState(709); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,81,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(705); - match(Comma); - setState(706); - argument(); - } - } - } - setState(711); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,81,_ctx); - } - setState(713); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Comma) { - { - setState(712); - match(Comma); - } - } - - } - } - - setState(717); - match(CloseParen); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArgumentContext extends ParserRuleContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode Ellipsis() { return getToken(JavaScriptParser.Ellipsis, 0); } - public ArgumentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_argument; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArgument(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArgument(this); - } - } - - public final ArgumentContext argument() throws RecognitionException { - ArgumentContext _localctx = new ArgumentContext(_ctx, getState()); - enterRule(_localctx, 110, RULE_argument); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(720); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Ellipsis) { - { - setState(719); - match(Ellipsis); - } - } - - setState(724); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) { - case 1: - { - setState(722); - singleExpression(0); - } - break; - - case 2: - { - setState(723); - identifier(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExpressionSequenceContext extends ParserRuleContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public ExpressionSequenceContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expressionSequence; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterExpressionSequence(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitExpressionSequence(this); - } - } - - public final ExpressionSequenceContext expressionSequence() throws RecognitionException { - ExpressionSequenceContext _localctx = new ExpressionSequenceContext(_ctx, getState()); - enterRule(_localctx, 112, RULE_expressionSequence); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(726); - singleExpression(0); - setState(731); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,86,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(727); - match(Comma); - setState(728); - singleExpression(0); - } - } - } - setState(733); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,86,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SingleExpressionContext extends ParserRuleContext { - public SingleExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleExpression; } - - public SingleExpressionContext() { } - public void copyFrom(SingleExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TemplateStringExpressionContext extends SingleExpressionContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TemplateStringLiteralContext templateStringLiteral() { - return getRuleContext(TemplateStringLiteralContext.class,0); - } - public TemplateStringExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterTemplateStringExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitTemplateStringExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TernaryExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode QuestionMark() { return getToken(JavaScriptParser.QuestionMark, 0); } - public TerminalNode Colon() { return getToken(JavaScriptParser.Colon, 0); } - public TernaryExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterTernaryExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitTernaryExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LogicalAndExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode And() { return getToken(JavaScriptParser.And, 0); } - public LogicalAndExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLogicalAndExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLogicalAndExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PowerExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Power() { return getToken(JavaScriptParser.Power, 0); } - public PowerExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPowerExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPowerExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PreIncrementExpressionContext extends SingleExpressionContext { - public TerminalNode PlusPlus() { return getToken(JavaScriptParser.PlusPlus, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public PreIncrementExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPreIncrementExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPreIncrementExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ObjectLiteralExpressionContext extends SingleExpressionContext { - public ObjectLiteralContext objectLiteral() { - return getRuleContext(ObjectLiteralContext.class,0); - } - public ObjectLiteralExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterObjectLiteralExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitObjectLiteralExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MetaExpressionContext extends SingleExpressionContext { - public TerminalNode New() { return getToken(JavaScriptParser.New, 0); } - public TerminalNode Dot() { return getToken(JavaScriptParser.Dot, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MetaExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterMetaExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitMetaExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class InExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode In() { return getToken(JavaScriptParser.In, 0); } - public InExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterInExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitInExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LogicalOrExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Or() { return getToken(JavaScriptParser.Or, 0); } - public LogicalOrExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLogicalOrExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLogicalOrExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class OptionalChainExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode QuestionMarkDot() { return getToken(JavaScriptParser.QuestionMarkDot, 0); } - public OptionalChainExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterOptionalChainExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitOptionalChainExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class NotExpressionContext extends SingleExpressionContext { - public TerminalNode Not() { return getToken(JavaScriptParser.Not, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public NotExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterNotExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitNotExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PreDecreaseExpressionContext extends SingleExpressionContext { - public TerminalNode MinusMinus() { return getToken(JavaScriptParser.MinusMinus, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public PreDecreaseExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPreDecreaseExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPreDecreaseExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArgumentsExpressionContext extends SingleExpressionContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.class,0); - } - public ArgumentsExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArgumentsExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArgumentsExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AwaitExpressionContext extends SingleExpressionContext { - public TerminalNode Await() { return getToken(JavaScriptParser.Await, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public AwaitExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAwaitExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAwaitExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ThisExpressionContext extends SingleExpressionContext { - public TerminalNode This() { return getToken(JavaScriptParser.This, 0); } - public ThisExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterThisExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitThisExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class FunctionExpressionContext extends SingleExpressionContext { - public AnonymousFunctionContext anonymousFunction() { - return getRuleContext(AnonymousFunctionContext.class,0); - } - public FunctionExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFunctionExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFunctionExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UnaryMinusExpressionContext extends SingleExpressionContext { - public TerminalNode Minus() { return getToken(JavaScriptParser.Minus, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public UnaryMinusExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterUnaryMinusExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitUnaryMinusExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AssignmentExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Assign() { return getToken(JavaScriptParser.Assign, 0); } - public AssignmentExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAssignmentExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAssignmentExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PostDecreaseExpressionContext extends SingleExpressionContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode MinusMinus() { return getToken(JavaScriptParser.MinusMinus, 0); } - public PostDecreaseExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPostDecreaseExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPostDecreaseExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TypeofExpressionContext extends SingleExpressionContext { - public TerminalNode Typeof() { return getToken(JavaScriptParser.Typeof, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TypeofExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterTypeofExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitTypeofExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class InstanceofExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Instanceof() { return getToken(JavaScriptParser.Instanceof, 0); } - public InstanceofExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterInstanceofExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitInstanceofExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UnaryPlusExpressionContext extends SingleExpressionContext { - public TerminalNode Plus() { return getToken(JavaScriptParser.Plus, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public UnaryPlusExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterUnaryPlusExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitUnaryPlusExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DeleteExpressionContext extends SingleExpressionContext { - public TerminalNode Delete() { return getToken(JavaScriptParser.Delete, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public DeleteExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterDeleteExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitDeleteExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportExpressionContext extends SingleExpressionContext { - public TerminalNode Import() { return getToken(JavaScriptParser.Import, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public ImportExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterImportExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitImportExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class EqualityExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Equals_() { return getToken(JavaScriptParser.Equals_, 0); } - public TerminalNode NotEquals() { return getToken(JavaScriptParser.NotEquals, 0); } - public TerminalNode IdentityEquals() { return getToken(JavaScriptParser.IdentityEquals, 0); } - public TerminalNode IdentityNotEquals() { return getToken(JavaScriptParser.IdentityNotEquals, 0); } - public EqualityExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterEqualityExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitEqualityExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BitXOrExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode BitXOr() { return getToken(JavaScriptParser.BitXOr, 0); } - public BitXOrExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBitXOrExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBitXOrExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SuperExpressionContext extends SingleExpressionContext { - public TerminalNode Super() { return getToken(JavaScriptParser.Super, 0); } - public SuperExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterSuperExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitSuperExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MultiplicativeExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Multiply() { return getToken(JavaScriptParser.Multiply, 0); } - public TerminalNode Divide() { return getToken(JavaScriptParser.Divide, 0); } - public TerminalNode Modulus() { return getToken(JavaScriptParser.Modulus, 0); } - public MultiplicativeExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterMultiplicativeExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitMultiplicativeExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BitShiftExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode LeftShiftArithmetic() { return getToken(JavaScriptParser.LeftShiftArithmetic, 0); } - public TerminalNode RightShiftArithmetic() { return getToken(JavaScriptParser.RightShiftArithmetic, 0); } - public TerminalNode RightShiftLogical() { return getToken(JavaScriptParser.RightShiftLogical, 0); } - public BitShiftExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBitShiftExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBitShiftExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ParenthesizedExpressionContext extends SingleExpressionContext { - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public ParenthesizedExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterParenthesizedExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitParenthesizedExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdditiveExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode Plus() { return getToken(JavaScriptParser.Plus, 0); } - public TerminalNode Minus() { return getToken(JavaScriptParser.Minus, 0); } - public AdditiveExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAdditiveExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAdditiveExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RelationalExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode LessThan() { return getToken(JavaScriptParser.LessThan, 0); } - public TerminalNode MoreThan() { return getToken(JavaScriptParser.MoreThan, 0); } - public TerminalNode LessThanEquals() { return getToken(JavaScriptParser.LessThanEquals, 0); } - public TerminalNode GreaterThanEquals() { return getToken(JavaScriptParser.GreaterThanEquals, 0); } - public RelationalExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterRelationalExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitRelationalExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PostIncrementExpressionContext extends SingleExpressionContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode PlusPlus() { return getToken(JavaScriptParser.PlusPlus, 0); } - public PostIncrementExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterPostIncrementExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitPostIncrementExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class YieldExpressionContext extends SingleExpressionContext { - public YieldStatementContext yieldStatement() { - return getRuleContext(YieldStatementContext.class,0); - } - public YieldExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterYieldExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitYieldExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BitNotExpressionContext extends SingleExpressionContext { - public TerminalNode BitNot() { return getToken(JavaScriptParser.BitNot, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public BitNotExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBitNotExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBitNotExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class NewExpressionContext extends SingleExpressionContext { - public TerminalNode New() { return getToken(JavaScriptParser.New, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public ArgumentsContext arguments() { - return getRuleContext(ArgumentsContext.class,0); - } - public NewExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterNewExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitNewExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LiteralExpressionContext extends SingleExpressionContext { - public LiteralContext literal() { - return getRuleContext(LiteralContext.class,0); - } - public LiteralExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLiteralExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLiteralExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArrayLiteralExpressionContext extends SingleExpressionContext { - public ArrayLiteralContext arrayLiteral() { - return getRuleContext(ArrayLiteralContext.class,0); - } - public ArrayLiteralExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArrayLiteralExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArrayLiteralExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MemberDotExpressionContext extends SingleExpressionContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode Dot() { return getToken(JavaScriptParser.Dot, 0); } - public IdentifierNameContext identifierName() { - return getRuleContext(IdentifierNameContext.class,0); - } - public TerminalNode QuestionMark() { return getToken(JavaScriptParser.QuestionMark, 0); } - public TerminalNode Hashtag() { return getToken(JavaScriptParser.Hashtag, 0); } - public MemberDotExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterMemberDotExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitMemberDotExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ClassExpressionContext extends SingleExpressionContext { - public TerminalNode Class() { return getToken(JavaScriptParser.Class, 0); } - public ClassTailContext classTail() { - return getRuleContext(ClassTailContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ClassExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterClassExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitClassExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MemberIndexExpressionContext extends SingleExpressionContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode OpenBracket() { return getToken(JavaScriptParser.OpenBracket, 0); } - public ExpressionSequenceContext expressionSequence() { - return getRuleContext(ExpressionSequenceContext.class,0); - } - public TerminalNode CloseBracket() { return getToken(JavaScriptParser.CloseBracket, 0); } - public TerminalNode QuestionMarkDot() { return getToken(JavaScriptParser.QuestionMarkDot, 0); } - public MemberIndexExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterMemberIndexExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitMemberIndexExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class IdentifierExpressionContext extends SingleExpressionContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IdentifierExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterIdentifierExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitIdentifierExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BitAndExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode BitAnd() { return getToken(JavaScriptParser.BitAnd, 0); } - public BitAndExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBitAndExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBitAndExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BitOrExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode BitOr() { return getToken(JavaScriptParser.BitOr, 0); } - public BitOrExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBitOrExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBitOrExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AssignmentOperatorExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public AssignmentOperatorContext assignmentOperator() { - return getRuleContext(AssignmentOperatorContext.class,0); - } - public AssignmentOperatorExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAssignmentOperatorExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAssignmentOperatorExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class VoidExpressionContext extends SingleExpressionContext { - public TerminalNode Void() { return getToken(JavaScriptParser.Void, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public VoidExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterVoidExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitVoidExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CoalesceExpressionContext extends SingleExpressionContext { - public List singleExpression() { - return getRuleContexts(SingleExpressionContext.class); - } - public SingleExpressionContext singleExpression(int i) { - return getRuleContext(SingleExpressionContext.class,i); - } - public TerminalNode NullCoalesce() { return getToken(JavaScriptParser.NullCoalesce, 0); } - public CoalesceExpressionContext(SingleExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterCoalesceExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitCoalesceExpression(this); - } - } - - public final SingleExpressionContext singleExpression() throws RecognitionException { - return singleExpression(0); - } - - private SingleExpressionContext singleExpression(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - SingleExpressionContext _localctx = new SingleExpressionContext(_ctx, _parentState); - SingleExpressionContext _prevctx = _localctx; - int _startState = 114; - enterRecursionRule(_localctx, 114, RULE_singleExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(786); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) { - case 1: - { - _localctx = new FunctionExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(735); - anonymousFunction(); - } - break; - - case 2: - { - _localctx = new ClassExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(736); - match(Class); - setState(738); - _errHandler.sync(this); - _la = _input.LA(1); - if (((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(737); - identifier(); - } - } - - setState(740); - classTail(); - } - break; - - case 3: - { - _localctx = new NewExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(741); - match(New); - setState(742); - singleExpression(0); - setState(743); - arguments(); - } - break; - - case 4: - { - _localctx = new NewExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(745); - match(New); - setState(746); - singleExpression(42); - } - break; - - case 5: - { - _localctx = new MetaExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(747); - match(New); - setState(748); - match(Dot); - setState(749); - identifier(); - } - break; - - case 6: - { - _localctx = new DeleteExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(750); - match(Delete); - setState(751); - singleExpression(37); - } - break; - - case 7: - { - _localctx = new VoidExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(752); - match(Void); - setState(753); - singleExpression(36); - } - break; - - case 8: - { - _localctx = new TypeofExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(754); - match(Typeof); - setState(755); - singleExpression(35); - } - break; - - case 9: - { - _localctx = new PreIncrementExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(756); - match(PlusPlus); - setState(757); - singleExpression(34); - } - break; - - case 10: - { - _localctx = new PreDecreaseExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(758); - match(MinusMinus); - setState(759); - singleExpression(33); - } - break; - - case 11: - { - _localctx = new UnaryPlusExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(760); - match(Plus); - setState(761); - singleExpression(32); - } - break; - - case 12: - { - _localctx = new UnaryMinusExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(762); - match(Minus); - setState(763); - singleExpression(31); - } - break; - - case 13: - { - _localctx = new BitNotExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(764); - match(BitNot); - setState(765); - singleExpression(30); - } - break; - - case 14: - { - _localctx = new NotExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(766); - match(Not); - setState(767); - singleExpression(29); - } - break; - - case 15: - { - _localctx = new AwaitExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(768); - match(Await); - setState(769); - singleExpression(28); - } - break; - - case 16: - { - _localctx = new ImportExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(770); - match(Import); - setState(771); - match(OpenParen); - setState(772); - singleExpression(0); - setState(773); - match(CloseParen); - } - break; - - case 17: - { - _localctx = new YieldExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(775); - yieldStatement(); - } - break; - - case 18: - { - _localctx = new ThisExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(776); - match(This); - } - break; - - case 19: - { - _localctx = new IdentifierExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(777); - identifier(); - } - break; - - case 20: - { - _localctx = new SuperExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(778); - match(Super); - } - break; - - case 21: - { - _localctx = new LiteralExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(779); - literal(); - } - break; - - case 22: - { - _localctx = new ArrayLiteralExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(780); - arrayLiteral(); - } - break; - - case 23: - { - _localctx = new ObjectLiteralExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(781); - objectLiteral(); - } - break; - - case 24: - { - _localctx = new ParenthesizedExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(782); - match(OpenParen); - setState(783); - expressionSequence(); - setState(784); - match(CloseParen); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(875); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,93,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(873); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) { - case 1: - { - _localctx = new OptionalChainExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(788); - if (!(precpred(_ctx, 46))) throw new FailedPredicateException(this, "precpred(_ctx, 46)"); - setState(789); - match(QuestionMarkDot); - setState(790); - singleExpression(47); - } - break; - - case 2: - { - _localctx = new PowerExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(791); - if (!(precpred(_ctx, 27))) throw new FailedPredicateException(this, "precpred(_ctx, 27)"); - setState(792); - match(Power); - setState(793); - singleExpression(27); - } - break; - - case 3: - { - _localctx = new MultiplicativeExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(794); - if (!(precpred(_ctx, 26))) throw new FailedPredicateException(this, "precpred(_ctx, 26)"); - setState(795); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 469762048L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(796); - singleExpression(27); - } - break; - - case 4: - { - _localctx = new AdditiveExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(797); - if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)"); - setState(798); - _la = _input.LA(1); - if ( !(_la==Plus || _la==Minus) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(799); - singleExpression(26); - } - break; - - case 5: - { - _localctx = new CoalesceExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(800); - if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)"); - setState(801); - match(NullCoalesce); - setState(802); - singleExpression(25); - } - break; - - case 6: - { - _localctx = new BitShiftExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(803); - if (!(precpred(_ctx, 23))) throw new FailedPredicateException(this, "precpred(_ctx, 23)"); - setState(804); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 30064771072L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(805); - singleExpression(24); - } - break; - - case 7: - { - _localctx = new RelationalExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(806); - if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)"); - setState(807); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 515396075520L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(808); - singleExpression(23); - } - break; - - case 8: - { - _localctx = new InstanceofExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(809); - if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)"); - setState(810); - match(Instanceof); - setState(811); - singleExpression(22); - } - break; - - case 9: - { - _localctx = new InExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(812); - if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)"); - setState(813); - match(In); - setState(814); - singleExpression(21); - } - break; - - case 10: - { - _localctx = new EqualityExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(815); - if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)"); - setState(816); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8246337208320L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(817); - singleExpression(20); - } - break; - - case 11: - { - _localctx = new BitAndExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(818); - if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)"); - setState(819); - match(BitAnd); - setState(820); - singleExpression(19); - } - break; - - case 12: - { - _localctx = new BitXOrExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(821); - if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)"); - setState(822); - match(BitXOr); - setState(823); - singleExpression(18); - } - break; - - case 13: - { - _localctx = new BitOrExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(824); - if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); - setState(825); - match(BitOr); - setState(826); - singleExpression(17); - } - break; - - case 14: - { - _localctx = new LogicalAndExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(827); - if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); - setState(828); - match(And); - setState(829); - singleExpression(16); - } - break; - - case 15: - { - _localctx = new LogicalOrExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(830); - if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); - setState(831); - match(Or); - setState(832); - singleExpression(15); - } - break; - - case 16: - { - _localctx = new TernaryExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(833); - if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); - setState(834); - match(QuestionMark); - setState(835); - singleExpression(0); - setState(836); - match(Colon); - setState(837); - singleExpression(14); - } - break; - - case 17: - { - _localctx = new AssignmentExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(839); - if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); - setState(840); - match(Assign); - setState(841); - singleExpression(12); - } - break; - - case 18: - { - _localctx = new AssignmentOperatorExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(842); - if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); - setState(843); - assignmentOperator(); - setState(844); - singleExpression(11); - } - break; - - case 19: - { - _localctx = new MemberIndexExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(846); - if (!(precpred(_ctx, 45))) throw new FailedPredicateException(this, "precpred(_ctx, 45)"); - setState(848); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==QuestionMarkDot) { - { - setState(847); - match(QuestionMarkDot); - } - } - - setState(850); - match(OpenBracket); - setState(851); - expressionSequence(); - setState(852); - match(CloseBracket); - } - break; - - case 20: - { - _localctx = new MemberDotExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(854); - if (!(precpred(_ctx, 44))) throw new FailedPredicateException(this, "precpred(_ctx, 44)"); - setState(856); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==QuestionMark) { - { - setState(855); - match(QuestionMark); - } - } - - setState(858); - match(Dot); - setState(860); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Hashtag) { - { - setState(859); - match(Hashtag); - } - } - - setState(862); - identifierName(); - } - break; - - case 21: - { - _localctx = new ArgumentsExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(863); - if (!(precpred(_ctx, 41))) throw new FailedPredicateException(this, "precpred(_ctx, 41)"); - setState(864); - arguments(); - } - break; - - case 22: - { - _localctx = new PostIncrementExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(865); - if (!(precpred(_ctx, 39))) throw new FailedPredicateException(this, "precpred(_ctx, 39)"); - setState(866); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(867); - match(PlusPlus); - } - break; - - case 23: - { - _localctx = new PostDecreaseExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(868); - if (!(precpred(_ctx, 38))) throw new FailedPredicateException(this, "precpred(_ctx, 38)"); - setState(869); - if (!(this.notLineTerminator())) throw new FailedPredicateException(this, "this.notLineTerminator()"); - setState(870); - match(MinusMinus); - } - break; - - case 24: - { - _localctx = new TemplateStringExpressionContext(new SingleExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_singleExpression); - setState(871); - if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(872); - templateStringLiteral(); - } - break; - } - } - } - setState(877); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,93,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AssignableContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ArrayLiteralContext arrayLiteral() { - return getRuleContext(ArrayLiteralContext.class,0); - } - public ObjectLiteralContext objectLiteral() { - return getRuleContext(ObjectLiteralContext.class,0); - } - public AssignableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_assignable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAssignable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAssignable(this); - } - } - - public final AssignableContext assignable() throws RecognitionException { - AssignableContext _localctx = new AssignableContext(_ctx, getState()); - enterRule(_localctx, 116, RULE_assignable); - try { - setState(881); - _errHandler.sync(this); - switch (_input.LA(1)) { - case As: - case From: - case Async: - case NonStrictLet: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(878); - identifier(); - } - break; - case OpenBracket: - enterOuterAlt(_localctx, 2); - { - setState(879); - arrayLiteral(); - } - break; - case OpenBrace: - enterOuterAlt(_localctx, 3); - { - setState(880); - objectLiteral(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ObjectLiteralContext extends ParserRuleContext { - public TerminalNode OpenBrace() { return getToken(JavaScriptParser.OpenBrace, 0); } - public TerminalNode CloseBrace() { return getToken(JavaScriptParser.CloseBrace, 0); } - public List propertyAssignment() { - return getRuleContexts(PropertyAssignmentContext.class); - } - public PropertyAssignmentContext propertyAssignment(int i) { - return getRuleContext(PropertyAssignmentContext.class,i); - } - public List Comma() { return getTokens(JavaScriptParser.Comma); } - public TerminalNode Comma(int i) { - return getToken(JavaScriptParser.Comma, i); - } - public ObjectLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_objectLiteral; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterObjectLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitObjectLiteral(this); - } - } - - public final ObjectLiteralContext objectLiteral() throws RecognitionException { - ObjectLiteralContext _localctx = new ObjectLiteralContext(_ctx, getState()); - enterRule(_localctx, 118, RULE_objectLiteral); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(883); - match(OpenBrace); - setState(895); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) { - case 1: - { - setState(884); - propertyAssignment(); - setState(889); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,95,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(885); - match(Comma); - setState(886); - propertyAssignment(); - } - } - } - setState(891); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,95,_ctx); - } - setState(893); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Comma) { - { - setState(892); - match(Comma); - } - } - - } - break; - } - setState(897); - match(CloseBrace); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnonymousFunctionContext extends ParserRuleContext { - public AnonymousFunctionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_anonymousFunction; } - - public AnonymousFunctionContext() { } - public void copyFrom(AnonymousFunctionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AnonymousFunctionDeclContext extends AnonymousFunctionContext { - public TerminalNode Function_() { return getToken(JavaScriptParser.Function_, 0); } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public TerminalNode Async() { return getToken(JavaScriptParser.Async, 0); } - public TerminalNode Multiply() { return getToken(JavaScriptParser.Multiply, 0); } - public FormalParameterListContext formalParameterList() { - return getRuleContext(FormalParameterListContext.class,0); - } - public AnonymousFunctionDeclContext(AnonymousFunctionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAnonymousFunctionDecl(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAnonymousFunctionDecl(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArrowFunctionContext extends AnonymousFunctionContext { - public ArrowFunctionParametersContext arrowFunctionParameters() { - return getRuleContext(ArrowFunctionParametersContext.class,0); - } - public TerminalNode ARROW() { return getToken(JavaScriptParser.ARROW, 0); } - public ArrowFunctionBodyContext arrowFunctionBody() { - return getRuleContext(ArrowFunctionBodyContext.class,0); - } - public TerminalNode Async() { return getToken(JavaScriptParser.Async, 0); } - public ArrowFunctionContext(AnonymousFunctionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArrowFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArrowFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class FunctionDeclContext extends AnonymousFunctionContext { - public FunctionDeclarationContext functionDeclaration() { - return getRuleContext(FunctionDeclarationContext.class,0); - } - public FunctionDeclContext(AnonymousFunctionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterFunctionDecl(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitFunctionDecl(this); - } - } - - public final AnonymousFunctionContext anonymousFunction() throws RecognitionException { - AnonymousFunctionContext _localctx = new AnonymousFunctionContext(_ctx, getState()); - enterRule(_localctx, 120, RULE_anonymousFunction); - int _la; - try { - setState(920); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,102,_ctx) ) { - case 1: - _localctx = new FunctionDeclContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(899); - functionDeclaration(); - } - break; - - case 2: - _localctx = new AnonymousFunctionDeclContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(901); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Async) { - { - setState(900); - match(Async); - } - } - - setState(903); - match(Function_); - setState(905); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==Multiply) { - { - setState(904); - match(Multiply); - } - } - - setState(907); - match(OpenParen); - setState(909); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 262688L) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(908); - formalParameterList(); - } - } - - setState(911); - match(CloseParen); - setState(912); - functionBody(); - } - break; - - case 3: - _localctx = new ArrowFunctionContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(914); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,101,_ctx) ) { - case 1: - { - setState(913); - match(Async); - } - break; - } - setState(916); - arrowFunctionParameters(); - setState(917); - match(ARROW); - setState(918); - arrowFunctionBody(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArrowFunctionParametersContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode OpenParen() { return getToken(JavaScriptParser.OpenParen, 0); } - public TerminalNode CloseParen() { return getToken(JavaScriptParser.CloseParen, 0); } - public FormalParameterListContext formalParameterList() { - return getRuleContext(FormalParameterListContext.class,0); - } - public ArrowFunctionParametersContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arrowFunctionParameters; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArrowFunctionParameters(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArrowFunctionParameters(this); - } - } - - public final ArrowFunctionParametersContext arrowFunctionParameters() throws RecognitionException { - ArrowFunctionParametersContext _localctx = new ArrowFunctionParametersContext(_ctx, getState()); - enterRule(_localctx, 122, RULE_arrowFunctionParameters); - int _la; - try { - setState(928); - _errHandler.sync(this); - switch (_input.LA(1)) { - case As: - case From: - case Async: - case NonStrictLet: - case Identifier: - enterOuterAlt(_localctx, 1); - { - setState(922); - identifier(); - } - break; - case OpenParen: - enterOuterAlt(_localctx, 2); - { - setState(923); - match(OpenParen); - setState(925); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 262688L) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) { - { - setState(924); - formalParameterList(); - } - } - - setState(927); - match(CloseParen); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ArrowFunctionBodyContext extends ParserRuleContext { - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public FunctionBodyContext functionBody() { - return getRuleContext(FunctionBodyContext.class,0); - } - public ArrowFunctionBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arrowFunctionBody; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterArrowFunctionBody(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitArrowFunctionBody(this); - } - } - - public final ArrowFunctionBodyContext arrowFunctionBody() throws RecognitionException { - ArrowFunctionBodyContext _localctx = new ArrowFunctionBodyContext(_ctx, getState()); - enterRule(_localctx, 124, RULE_arrowFunctionBody); - try { - setState(932); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(930); - singleExpression(0); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(931); - functionBody(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AssignmentOperatorContext extends ParserRuleContext { - public TerminalNode MultiplyAssign() { return getToken(JavaScriptParser.MultiplyAssign, 0); } - public TerminalNode DivideAssign() { return getToken(JavaScriptParser.DivideAssign, 0); } - public TerminalNode ModulusAssign() { return getToken(JavaScriptParser.ModulusAssign, 0); } - public TerminalNode PlusAssign() { return getToken(JavaScriptParser.PlusAssign, 0); } - public TerminalNode MinusAssign() { return getToken(JavaScriptParser.MinusAssign, 0); } - public TerminalNode LeftShiftArithmeticAssign() { return getToken(JavaScriptParser.LeftShiftArithmeticAssign, 0); } - public TerminalNode RightShiftArithmeticAssign() { return getToken(JavaScriptParser.RightShiftArithmeticAssign, 0); } - public TerminalNode RightShiftLogicalAssign() { return getToken(JavaScriptParser.RightShiftLogicalAssign, 0); } - public TerminalNode BitAndAssign() { return getToken(JavaScriptParser.BitAndAssign, 0); } - public TerminalNode BitXorAssign() { return getToken(JavaScriptParser.BitXorAssign, 0); } - public TerminalNode BitOrAssign() { return getToken(JavaScriptParser.BitOrAssign, 0); } - public TerminalNode PowerAssign() { return getToken(JavaScriptParser.PowerAssign, 0); } - public AssignmentOperatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_assignmentOperator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAssignmentOperator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAssignmentOperator(this); - } - } - - public final AssignmentOperatorContext assignmentOperator() throws RecognitionException { - AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState()); - enterRule(_localctx, 126, RULE_assignmentOperator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(934); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1152640029630136320L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LiteralContext extends ParserRuleContext { - public TerminalNode NullLiteral() { return getToken(JavaScriptParser.NullLiteral, 0); } - public TerminalNode BooleanLiteral() { return getToken(JavaScriptParser.BooleanLiteral, 0); } - public TerminalNode StringLiteral() { return getToken(JavaScriptParser.StringLiteral, 0); } - public TemplateStringLiteralContext templateStringLiteral() { - return getRuleContext(TemplateStringLiteralContext.class,0); - } - public TerminalNode RegularExpressionLiteral() { return getToken(JavaScriptParser.RegularExpressionLiteral, 0); } - public NumericLiteralContext numericLiteral() { - return getRuleContext(NumericLiteralContext.class,0); - } - public BigintLiteralContext bigintLiteral() { - return getRuleContext(BigintLiteralContext.class,0); - } - public LiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_literal; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLiteral(this); - } - } - - public final LiteralContext literal() throws RecognitionException { - LiteralContext _localctx = new LiteralContext(_ctx, getState()); - enterRule(_localctx, 128, RULE_literal); - try { - setState(943); - _errHandler.sync(this); - switch (_input.LA(1)) { - case NullLiteral: - enterOuterAlt(_localctx, 1); - { - setState(936); - match(NullLiteral); - } - break; - case BooleanLiteral: - enterOuterAlt(_localctx, 2); - { - setState(937); - match(BooleanLiteral); - } - break; - case StringLiteral: - enterOuterAlt(_localctx, 3); - { - setState(938); - match(StringLiteral); - } - break; - case BackTick: - enterOuterAlt(_localctx, 4); - { - setState(939); - templateStringLiteral(); - } - break; - case RegularExpressionLiteral: - enterOuterAlt(_localctx, 5); - { - setState(940); - match(RegularExpressionLiteral); - } - break; - case DecimalLiteral: - case HexIntegerLiteral: - case OctalIntegerLiteral: - case OctalIntegerLiteral2: - case BinaryIntegerLiteral: - enterOuterAlt(_localctx, 6); - { - setState(941); - numericLiteral(); - } - break; - case BigHexIntegerLiteral: - case BigOctalIntegerLiteral: - case BigBinaryIntegerLiteral: - case BigDecimalIntegerLiteral: - enterOuterAlt(_localctx, 7); - { - setState(942); - bigintLiteral(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TemplateStringLiteralContext extends ParserRuleContext { - public List BackTick() { return getTokens(JavaScriptParser.BackTick); } - public TerminalNode BackTick(int i) { - return getToken(JavaScriptParser.BackTick, i); - } - public List templateStringAtom() { - return getRuleContexts(TemplateStringAtomContext.class); - } - public TemplateStringAtomContext templateStringAtom(int i) { - return getRuleContext(TemplateStringAtomContext.class,i); - } - public TemplateStringLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_templateStringLiteral; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterTemplateStringLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitTemplateStringLiteral(this); - } - } - - public final TemplateStringLiteralContext templateStringLiteral() throws RecognitionException { - TemplateStringLiteralContext _localctx = new TemplateStringLiteralContext(_ctx, getState()); - enterRule(_localctx, 130, RULE_templateStringLiteral); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(945); - match(BackTick); - setState(949); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==TemplateStringStartExpression || _la==TemplateStringAtom) { - { - { - setState(946); - templateStringAtom(); - } - } - setState(951); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(952); - match(BackTick); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TemplateStringAtomContext extends ParserRuleContext { - public TerminalNode TemplateStringAtom() { return getToken(JavaScriptParser.TemplateStringAtom, 0); } - public TerminalNode TemplateStringStartExpression() { return getToken(JavaScriptParser.TemplateStringStartExpression, 0); } - public SingleExpressionContext singleExpression() { - return getRuleContext(SingleExpressionContext.class,0); - } - public TerminalNode TemplateCloseBrace() { return getToken(JavaScriptParser.TemplateCloseBrace, 0); } - public TemplateStringAtomContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_templateStringAtom; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterTemplateStringAtom(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitTemplateStringAtom(this); - } - } - - public final TemplateStringAtomContext templateStringAtom() throws RecognitionException { - TemplateStringAtomContext _localctx = new TemplateStringAtomContext(_ctx, getState()); - enterRule(_localctx, 132, RULE_templateStringAtom); - try { - setState(959); - _errHandler.sync(this); - switch (_input.LA(1)) { - case TemplateStringAtom: - enterOuterAlt(_localctx, 1); - { - setState(954); - match(TemplateStringAtom); - } - break; - case TemplateStringStartExpression: - enterOuterAlt(_localctx, 2); - { - setState(955); - match(TemplateStringStartExpression); - setState(956); - singleExpression(0); - setState(957); - match(TemplateCloseBrace); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NumericLiteralContext extends ParserRuleContext { - public TerminalNode DecimalLiteral() { return getToken(JavaScriptParser.DecimalLiteral, 0); } - public TerminalNode HexIntegerLiteral() { return getToken(JavaScriptParser.HexIntegerLiteral, 0); } - public TerminalNode OctalIntegerLiteral() { return getToken(JavaScriptParser.OctalIntegerLiteral, 0); } - public TerminalNode OctalIntegerLiteral2() { return getToken(JavaScriptParser.OctalIntegerLiteral2, 0); } - public TerminalNode BinaryIntegerLiteral() { return getToken(JavaScriptParser.BinaryIntegerLiteral, 0); } - public NumericLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_numericLiteral; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterNumericLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitNumericLiteral(this); - } - } - - public final NumericLiteralContext numericLiteral() throws RecognitionException { - NumericLiteralContext _localctx = new NumericLiteralContext(_ctx, getState()); - enterRule(_localctx, 134, RULE_numericLiteral); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(961); - _la = _input.LA(1); - if ( !(((((_la - 63)) & ~0x3f) == 0 && ((1L << (_la - 63)) & 31L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BigintLiteralContext extends ParserRuleContext { - public TerminalNode BigDecimalIntegerLiteral() { return getToken(JavaScriptParser.BigDecimalIntegerLiteral, 0); } - public TerminalNode BigHexIntegerLiteral() { return getToken(JavaScriptParser.BigHexIntegerLiteral, 0); } - public TerminalNode BigOctalIntegerLiteral() { return getToken(JavaScriptParser.BigOctalIntegerLiteral, 0); } - public TerminalNode BigBinaryIntegerLiteral() { return getToken(JavaScriptParser.BigBinaryIntegerLiteral, 0); } - public BigintLiteralContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_bigintLiteral; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterBigintLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitBigintLiteral(this); - } - } - - public final BigintLiteralContext bigintLiteral() throws RecognitionException { - BigintLiteralContext _localctx = new BigintLiteralContext(_ctx, getState()); - enterRule(_localctx, 136, RULE_bigintLiteral); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(963); - _la = _input.LA(1); - if ( !(((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 15L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GetterContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyNameContext propertyName() { - return getRuleContext(PropertyNameContext.class,0); - } - public GetterContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_getter; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterGetter(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitGetter(this); - } - } - - public final GetterContext getter() throws RecognitionException { - GetterContext _localctx = new GetterContext(_ctx, getState()); - enterRule(_localctx, 138, RULE_getter); - try { - enterOuterAlt(_localctx, 1); - { - setState(965); - if (!(this.n("get"))) throw new FailedPredicateException(this, "this.n(\"get\")"); - setState(966); - identifier(); - setState(967); - propertyName(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SetterContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyNameContext propertyName() { - return getRuleContext(PropertyNameContext.class,0); - } - public SetterContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_setter; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterSetter(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitSetter(this); - } - } - - public final SetterContext setter() throws RecognitionException { - SetterContext _localctx = new SetterContext(_ctx, getState()); - enterRule(_localctx, 140, RULE_setter); - try { - enterOuterAlt(_localctx, 1); - { - setState(969); - if (!(this.n("set"))) throw new FailedPredicateException(this, "this.n(\"set\")"); - setState(970); - identifier(); - setState(971); - propertyName(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierNameContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ReservedWordContext reservedWord() { - return getRuleContext(ReservedWordContext.class,0); - } - public IdentifierNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterIdentifierName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitIdentifierName(this); - } - } - - public final IdentifierNameContext identifierName() throws RecognitionException { - IdentifierNameContext _localctx = new IdentifierNameContext(_ctx, getState()); - enterRule(_localctx, 142, RULE_identifierName); - try { - setState(975); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(973); - identifier(); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(974); - reservedWord(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierContext extends ParserRuleContext { - public TerminalNode Identifier() { return getToken(JavaScriptParser.Identifier, 0); } - public TerminalNode NonStrictLet() { return getToken(JavaScriptParser.NonStrictLet, 0); } - public TerminalNode Async() { return getToken(JavaScriptParser.Async, 0); } - public TerminalNode As() { return getToken(JavaScriptParser.As, 0); } - public TerminalNode From() { return getToken(JavaScriptParser.From, 0); } - public IdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitIdentifier(this); - } - } - - public final IdentifierContext identifier() throws RecognitionException { - IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); - enterRule(_localctx, 144, RULE_identifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(977); - _la = _input.LA(1); - if ( !(((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & 2114051L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ReservedWordContext extends ParserRuleContext { - public KeywordContext keyword() { - return getRuleContext(KeywordContext.class,0); - } - public TerminalNode NullLiteral() { return getToken(JavaScriptParser.NullLiteral, 0); } - public TerminalNode BooleanLiteral() { return getToken(JavaScriptParser.BooleanLiteral, 0); } - public ReservedWordContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_reservedWord; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterReservedWord(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitReservedWord(this); - } - } - - public final ReservedWordContext reservedWord() throws RecognitionException { - ReservedWordContext _localctx = new ReservedWordContext(_ctx, getState()); - enterRule(_localctx, 146, RULE_reservedWord); - try { - setState(982); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Break: - case Do: - case Instanceof: - case Typeof: - case Case: - case Else: - case New: - case Var: - case Catch: - case Finally: - case Return: - case Void: - case Continue: - case For: - case Switch: - case While: - case Debugger: - case Function_: - case This: - case With: - case Default: - case If: - case Throw: - case Delete: - case In: - case Try: - case As: - case From: - case Class: - case Enum: - case Extends: - case Super: - case Const: - case Export: - case Import: - case Async: - case Await: - case Yield: - case Implements: - case StrictLet: - case NonStrictLet: - case Private: - case Public: - case Interface: - case Package: - case Protected: - case Static: - enterOuterAlt(_localctx, 1); - { - setState(979); - keyword(); - } - break; - case NullLiteral: - enterOuterAlt(_localctx, 2); - { - setState(980); - match(NullLiteral); - } - break; - case BooleanLiteral: - enterOuterAlt(_localctx, 3); - { - setState(981); - match(BooleanLiteral); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class KeywordContext extends ParserRuleContext { - public TerminalNode Break() { return getToken(JavaScriptParser.Break, 0); } - public TerminalNode Do() { return getToken(JavaScriptParser.Do, 0); } - public TerminalNode Instanceof() { return getToken(JavaScriptParser.Instanceof, 0); } - public TerminalNode Typeof() { return getToken(JavaScriptParser.Typeof, 0); } - public TerminalNode Case() { return getToken(JavaScriptParser.Case, 0); } - public TerminalNode Else() { return getToken(JavaScriptParser.Else, 0); } - public TerminalNode New() { return getToken(JavaScriptParser.New, 0); } - public TerminalNode Var() { return getToken(JavaScriptParser.Var, 0); } - public TerminalNode Catch() { return getToken(JavaScriptParser.Catch, 0); } - public TerminalNode Finally() { return getToken(JavaScriptParser.Finally, 0); } - public TerminalNode Return() { return getToken(JavaScriptParser.Return, 0); } - public TerminalNode Void() { return getToken(JavaScriptParser.Void, 0); } - public TerminalNode Continue() { return getToken(JavaScriptParser.Continue, 0); } - public TerminalNode For() { return getToken(JavaScriptParser.For, 0); } - public TerminalNode Switch() { return getToken(JavaScriptParser.Switch, 0); } - public TerminalNode While() { return getToken(JavaScriptParser.While, 0); } - public TerminalNode Debugger() { return getToken(JavaScriptParser.Debugger, 0); } - public TerminalNode Function_() { return getToken(JavaScriptParser.Function_, 0); } - public TerminalNode This() { return getToken(JavaScriptParser.This, 0); } - public TerminalNode With() { return getToken(JavaScriptParser.With, 0); } - public TerminalNode Default() { return getToken(JavaScriptParser.Default, 0); } - public TerminalNode If() { return getToken(JavaScriptParser.If, 0); } - public TerminalNode Throw() { return getToken(JavaScriptParser.Throw, 0); } - public TerminalNode Delete() { return getToken(JavaScriptParser.Delete, 0); } - public TerminalNode In() { return getToken(JavaScriptParser.In, 0); } - public TerminalNode Try() { return getToken(JavaScriptParser.Try, 0); } - public TerminalNode Class() { return getToken(JavaScriptParser.Class, 0); } - public TerminalNode Enum() { return getToken(JavaScriptParser.Enum, 0); } - public TerminalNode Extends() { return getToken(JavaScriptParser.Extends, 0); } - public TerminalNode Super() { return getToken(JavaScriptParser.Super, 0); } - public TerminalNode Const() { return getToken(JavaScriptParser.Const, 0); } - public TerminalNode Export() { return getToken(JavaScriptParser.Export, 0); } - public TerminalNode Import() { return getToken(JavaScriptParser.Import, 0); } - public TerminalNode Implements() { return getToken(JavaScriptParser.Implements, 0); } - public Let_Context let_() { - return getRuleContext(Let_Context.class,0); - } - public TerminalNode Private() { return getToken(JavaScriptParser.Private, 0); } - public TerminalNode Public() { return getToken(JavaScriptParser.Public, 0); } - public TerminalNode Interface() { return getToken(JavaScriptParser.Interface, 0); } - public TerminalNode Package() { return getToken(JavaScriptParser.Package, 0); } - public TerminalNode Protected() { return getToken(JavaScriptParser.Protected, 0); } - public TerminalNode Static() { return getToken(JavaScriptParser.Static, 0); } - public TerminalNode Yield() { return getToken(JavaScriptParser.Yield, 0); } - public TerminalNode Async() { return getToken(JavaScriptParser.Async, 0); } - public TerminalNode Await() { return getToken(JavaScriptParser.Await, 0); } - public TerminalNode From() { return getToken(JavaScriptParser.From, 0); } - public TerminalNode As() { return getToken(JavaScriptParser.As, 0); } - public KeywordContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_keyword; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterKeyword(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitKeyword(this); - } - } - - public final KeywordContext keyword() throws RecognitionException { - KeywordContext _localctx = new KeywordContext(_ctx, getState()); - enterRule(_localctx, 148, RULE_keyword); - try { - setState(1030); - _errHandler.sync(this); - switch (_input.LA(1)) { - case Break: - enterOuterAlt(_localctx, 1); - { - setState(984); - match(Break); - } - break; - case Do: - enterOuterAlt(_localctx, 2); - { - setState(985); - match(Do); - } - break; - case Instanceof: - enterOuterAlt(_localctx, 3); - { - setState(986); - match(Instanceof); - } - break; - case Typeof: - enterOuterAlt(_localctx, 4); - { - setState(987); - match(Typeof); - } - break; - case Case: - enterOuterAlt(_localctx, 5); - { - setState(988); - match(Case); - } - break; - case Else: - enterOuterAlt(_localctx, 6); - { - setState(989); - match(Else); - } - break; - case New: - enterOuterAlt(_localctx, 7); - { - setState(990); - match(New); - } - break; - case Var: - enterOuterAlt(_localctx, 8); - { - setState(991); - match(Var); - } - break; - case Catch: - enterOuterAlt(_localctx, 9); - { - setState(992); - match(Catch); - } - break; - case Finally: - enterOuterAlt(_localctx, 10); - { - setState(993); - match(Finally); - } - break; - case Return: - enterOuterAlt(_localctx, 11); - { - setState(994); - match(Return); - } - break; - case Void: - enterOuterAlt(_localctx, 12); - { - setState(995); - match(Void); - } - break; - case Continue: - enterOuterAlt(_localctx, 13); - { - setState(996); - match(Continue); - } - break; - case For: - enterOuterAlt(_localctx, 14); - { - setState(997); - match(For); - } - break; - case Switch: - enterOuterAlt(_localctx, 15); - { - setState(998); - match(Switch); - } - break; - case While: - enterOuterAlt(_localctx, 16); - { - setState(999); - match(While); - } - break; - case Debugger: - enterOuterAlt(_localctx, 17); - { - setState(1000); - match(Debugger); - } - break; - case Function_: - enterOuterAlt(_localctx, 18); - { - setState(1001); - match(Function_); - } - break; - case This: - enterOuterAlt(_localctx, 19); - { - setState(1002); - match(This); - } - break; - case With: - enterOuterAlt(_localctx, 20); - { - setState(1003); - match(With); - } - break; - case Default: - enterOuterAlt(_localctx, 21); - { - setState(1004); - match(Default); - } - break; - case If: - enterOuterAlt(_localctx, 22); - { - setState(1005); - match(If); - } - break; - case Throw: - enterOuterAlt(_localctx, 23); - { - setState(1006); - match(Throw); - } - break; - case Delete: - enterOuterAlt(_localctx, 24); - { - setState(1007); - match(Delete); - } - break; - case In: - enterOuterAlt(_localctx, 25); - { - setState(1008); - match(In); - } - break; - case Try: - enterOuterAlt(_localctx, 26); - { - setState(1009); - match(Try); - } - break; - case Class: - enterOuterAlt(_localctx, 27); - { - setState(1010); - match(Class); - } - break; - case Enum: - enterOuterAlt(_localctx, 28); - { - setState(1011); - match(Enum); - } - break; - case Extends: - enterOuterAlt(_localctx, 29); - { - setState(1012); - match(Extends); - } - break; - case Super: - enterOuterAlt(_localctx, 30); - { - setState(1013); - match(Super); - } - break; - case Const: - enterOuterAlt(_localctx, 31); - { - setState(1014); - match(Const); - } - break; - case Export: - enterOuterAlt(_localctx, 32); - { - setState(1015); - match(Export); - } - break; - case Import: - enterOuterAlt(_localctx, 33); - { - setState(1016); - match(Import); - } - break; - case Implements: - enterOuterAlt(_localctx, 34); - { - setState(1017); - match(Implements); - } - break; - case StrictLet: - case NonStrictLet: - enterOuterAlt(_localctx, 35); - { - setState(1018); - let_(); - } - break; - case Private: - enterOuterAlt(_localctx, 36); - { - setState(1019); - match(Private); - } - break; - case Public: - enterOuterAlt(_localctx, 37); - { - setState(1020); - match(Public); - } - break; - case Interface: - enterOuterAlt(_localctx, 38); - { - setState(1021); - match(Interface); - } - break; - case Package: - enterOuterAlt(_localctx, 39); - { - setState(1022); - match(Package); - } - break; - case Protected: - enterOuterAlt(_localctx, 40); - { - setState(1023); - match(Protected); - } - break; - case Static: - enterOuterAlt(_localctx, 41); - { - setState(1024); - match(Static); - } - break; - case Yield: - enterOuterAlt(_localctx, 42); - { - setState(1025); - match(Yield); - } - break; - case Async: - enterOuterAlt(_localctx, 43); - { - setState(1026); - match(Async); - } - break; - case Await: - enterOuterAlt(_localctx, 44); - { - setState(1027); - match(Await); - } - break; - case From: - enterOuterAlt(_localctx, 45); - { - setState(1028); - match(From); - } - break; - case As: - enterOuterAlt(_localctx, 46); - { - setState(1029); - match(As); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class Let_Context extends ParserRuleContext { - public TerminalNode NonStrictLet() { return getToken(JavaScriptParser.NonStrictLet, 0); } - public TerminalNode StrictLet() { return getToken(JavaScriptParser.StrictLet, 0); } - public Let_Context(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_let_; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterLet_(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitLet_(this); - } - } - - public final Let_Context let_() throws RecognitionException { - Let_Context _localctx = new Let_Context(_ctx, getState()); - enterRule(_localctx, 150, RULE_let_); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1032); - _la = _input.LA(1); - if ( !(_la==StrictLet || _la==NonStrictLet) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EosContext extends ParserRuleContext { - public TerminalNode SemiColon() { return getToken(JavaScriptParser.SemiColon, 0); } - public TerminalNode EOF() { return getToken(JavaScriptParser.EOF, 0); } - public EosContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_eos; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterEos(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitEos(this); - } - } - - public final EosContext eos() throws RecognitionException { - EosContext _localctx = new EosContext(_ctx, getState()); - enterRule(_localctx, 152, RULE_eos); - try { - setState(1038); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1034); - match(SemiColon); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1035); - match(EOF); - } - break; - - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1036); - if (!(this.lineTerminatorAhead())) throw new FailedPredicateException(this, "this.lineTerminatorAhead()"); - } - break; - - case 4: - enterOuterAlt(_localctx, 4); - { - setState(1037); - if (!(this.closeBrace())) throw new FailedPredicateException(this, "this.closeBrace()"); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ProgramOrAnyContext extends ParserRuleContext { - public ProgramContext program() { - return getRuleContext(ProgramContext.class,0); - } - public List any() { - return getRuleContexts(AnyContext.class); - } - public AnyContext any(int i) { - return getRuleContext(AnyContext.class,i); - } - public ProgramOrAnyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_programOrAny; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterProgramOrAny(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitProgramOrAny(this); - } - } - - public final ProgramOrAnyContext programOrAny() throws RecognitionException { - ProgramOrAnyContext _localctx = new ProgramOrAnyContext(_ctx, getState()); - enterRule(_localctx, 154, RULE_programOrAny); - try { - int _alt; - setState(1046); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1040); - program(); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1042); - _errHandler.sync(this); - _alt = 1+1; - do { - switch (_alt) { - case 1+1: - { - { - setState(1041); - any(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(1044); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,113,_ctx); - } while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnknownIntervalContext extends ParserRuleContext { - public List sourceElement() { - return getRuleContexts(SourceElementContext.class); - } - public SourceElementContext sourceElement(int i) { - return getRuleContext(SourceElementContext.class,i); - } - public TerminalNode EOF() { return getToken(JavaScriptParser.EOF, 0); } - public UnknownIntervalContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unknownInterval; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterUnknownInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitUnknownInterval(this); - } - } - - public final UnknownIntervalContext unknownInterval() throws RecognitionException { - UnknownIntervalContext _localctx = new UnknownIntervalContext(_ctx, getState()); - enterRule(_localctx, 156, RULE_unknownInterval); - try { - int _alt; - setState(1054); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,116,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1049); - _errHandler.sync(this); - _alt = 1+1; - do { - switch (_alt) { - case 1+1: - { - { - setState(1048); - sourceElement(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(1051); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,115,_ctx); - } while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - break; - - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1053); - match(EOF); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnyContext extends ParserRuleContext { - public AnyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_any; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).enterAny(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof JavaScriptParserListener ) ((JavaScriptParserListener)listener).exitAny(this); - } - } - - public final AnyContext any() throws RecognitionException { - AnyContext _localctx = new AnyContext(_ctx, getState()); - enterRule(_localctx, 158, RULE_any); - try { - enterOuterAlt(_localctx, 1); - { - setState(1056); - matchWildcard(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 19: - return expressionStatement_sempred((ExpressionStatementContext)_localctx, predIndex); - - case 21: - return iterationStatement_sempred((IterationStatementContext)_localctx, predIndex); - - case 23: - return continueStatement_sempred((ContinueStatementContext)_localctx, predIndex); - - case 24: - return breakStatement_sempred((BreakStatementContext)_localctx, predIndex); - - case 25: - return returnStatement_sempred((ReturnStatementContext)_localctx, predIndex); - - case 26: - return yieldStatement_sempred((YieldStatementContext)_localctx, predIndex); - - case 34: - return throwStatement_sempred((ThrowStatementContext)_localctx, predIndex); - - case 42: - return classElement_sempred((ClassElementContext)_localctx, predIndex); - - case 57: - return singleExpression_sempred((SingleExpressionContext)_localctx, predIndex); - - case 69: - return getter_sempred((GetterContext)_localctx, predIndex); - - case 70: - return setter_sempred((SetterContext)_localctx, predIndex); - - case 76: - return eos_sempred((EosContext)_localctx, predIndex); - } - return true; - } - private boolean expressionStatement_sempred(ExpressionStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return this.notOpenBraceAndNotFunction(); - } - return true; - } - private boolean iterationStatement_sempred(IterationStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 1: - return this.p("of"); - } - return true; - } - private boolean continueStatement_sempred(ContinueStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return this.notLineTerminator(); - } - return true; - } - private boolean breakStatement_sempred(BreakStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return this.notLineTerminator(); - } - return true; - } - private boolean returnStatement_sempred(ReturnStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 4: - return this.notLineTerminator(); - } - return true; - } - private boolean yieldStatement_sempred(YieldStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 5: - return this.notLineTerminator(); - } - return true; - } - private boolean throwStatement_sempred(ThrowStatementContext _localctx, int predIndex) { - switch (predIndex) { - case 6: - return this.notLineTerminator(); - } - return true; - } - private boolean classElement_sempred(ClassElementContext _localctx, int predIndex) { - switch (predIndex) { - case 7: - return this.n("static"); - } - return true; - } - private boolean singleExpression_sempred(SingleExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 8: - return precpred(_ctx, 46); - - case 9: - return precpred(_ctx, 27); - - case 10: - return precpred(_ctx, 26); - - case 11: - return precpred(_ctx, 25); - - case 12: - return precpred(_ctx, 24); - - case 13: - return precpred(_ctx, 23); - - case 14: - return precpred(_ctx, 22); - - case 15: - return precpred(_ctx, 21); - - case 16: - return precpred(_ctx, 20); - - case 17: - return precpred(_ctx, 19); - - case 18: - return precpred(_ctx, 18); - - case 19: - return precpred(_ctx, 17); - - case 20: - return precpred(_ctx, 16); - - case 21: - return precpred(_ctx, 15); - - case 22: - return precpred(_ctx, 14); - - case 23: - return precpred(_ctx, 13); - - case 24: - return precpred(_ctx, 12); - - case 25: - return precpred(_ctx, 11); - - case 26: - return precpred(_ctx, 45); - - case 27: - return precpred(_ctx, 44); - - case 28: - return precpred(_ctx, 41); - - case 29: - return precpred(_ctx, 39); - - case 30: - return this.notLineTerminator(); - - case 31: - return precpred(_ctx, 38); - - case 32: - return this.notLineTerminator(); - - case 33: - return precpred(_ctx, 9); - } - return true; - } - private boolean getter_sempred(GetterContext _localctx, int predIndex) { - switch (predIndex) { - case 34: - return this.n("get"); - } - return true; - } - private boolean setter_sempred(SetterContext _localctx, int predIndex) { - switch (predIndex) { - case 35: - return this.n("set"); - } - return true; - } - private boolean eos_sempred(EosContext _localctx, int predIndex) { - switch (predIndex) { - case 36: - return this.lineTerminatorAhead(); - - case 37: - return this.closeBrace(); - } - return true; - } - - public static final String _serializedATN = - "\u0004\u0001\u0080\u0423\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ - "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+ - "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+ - "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+ - "\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+ - "\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+ - "\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+ - "\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+ - "\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+ - "\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+ - "\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+ - "\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+ - "\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+ - ",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+ - "1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+ - "6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+ - ";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+ - "@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+ - "E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+ - "J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+ - "O\u0001\u0000\u0003\u0000\u00a2\b\u0000\u0001\u0000\u0003\u0000\u00a5"+ - "\b\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001"+ - "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ - "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ - "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ - "\u0002\u0003\u0002\u00bf\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003\u00c3"+ - "\b\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0004\u0004\u00c8\b\u0004"+ - "\u000b\u0004\f\u0004\u00c9\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006"+ - "\u0003\u0006\u00d0\b\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u00d4\b"+ - "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003"+ - "\u0006\u00db\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0005"+ - "\u0007\u00e1\b\u0007\n\u0007\f\u0007\u00e4\t\u0007\u0001\u0007\u0001\u0007"+ - "\u0003\u0007\u00e8\b\u0007\u0003\u0007\u00ea\b\u0007\u0001\u0007\u0001"+ - "\u0007\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0003\t\u00f3\b\t\u0001"+ - "\t\u0001\t\u0003\t\u00f7\b\t\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001"+ - "\u000b\u0001\u000b\u0003\u000b\u00ff\b\u000b\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u0104\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u010d\b\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0003\r\u0115"+ - "\b\r\u0001\r\u0001\r\u0003\r\u0119\b\r\u0001\u000e\u0001\u000e\u0001\u000e"+ - "\u0003\u000e\u011e\b\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010"+ - "\u0001\u0010\u0001\u0010\u0001\u0010\u0005\u0010\u0127\b\u0010\n\u0010"+ - "\f\u0010\u012a\t\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011"+ - "\u012f\b\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0003\u0014\u013e\b\u0014\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u0152\b\u0015"+ - "\u0001\u0015\u0001\u0015\u0003\u0015\u0156\b\u0015\u0001\u0015\u0001\u0015"+ - "\u0003\u0015\u015a\b\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0003\u0015\u0162\b\u0015\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015"+ - "\u016b\b\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u0170\b"+ - "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ - "\u0015\u0003\u0015\u0178\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0003"+ - "\u0016\u017d\b\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u0182"+ - "\b\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0003"+ - "\u0018\u0189\b\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001"+ - "\u0019\u0003\u0019\u0190\b\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001"+ - "\u001a\u0001\u001a\u0003\u001a\u0197\b\u001a\u0001\u001a\u0001\u001a\u0001"+ - "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+ - "\u001d\u0001\u001d\u0003\u001d\u01a9\b\u001d\u0001\u001d\u0001\u001d\u0003"+ - "\u001d\u01ad\b\u001d\u0003\u001d\u01af\b\u001d\u0001\u001d\u0001\u001d"+ - "\u0001\u001e\u0004\u001e\u01b4\b\u001e\u000b\u001e\f\u001e\u01b5\u0001"+ - "\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u01bc\b\u001f\u0001"+ - " \u0001 \u0001 \u0003 \u01c1\b \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001"+ - "\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0003#\u01d0\b"+ - "#\u0001#\u0003#\u01d3\b#\u0001$\u0001$\u0001$\u0003$\u01d8\b$\u0001$\u0003"+ - "$\u01db\b$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001"+ - "\'\u0003\'\u01e6\b\'\u0001\'\u0001\'\u0003\'\u01ea\b\'\u0001\'\u0001\'"+ - "\u0001\'\u0003\'\u01ef\b\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001"+ - "(\u0001(\u0001)\u0001)\u0003)\u01fa\b)\u0001)\u0001)\u0005)\u01fe\b)\n"+ - ")\f)\u0201\t)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0005*\u0209\b"+ - "*\n*\f*\u020c\t*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0003*\u0214"+ - "\b*\u0001*\u0001*\u0003*\u0218\b*\u0001*\u0001*\u0001*\u0001*\u0003*\u021e"+ - "\b*\u0001+\u0003+\u0221\b+\u0001+\u0003+\u0224\b+\u0001+\u0001+\u0001"+ - "+\u0003+\u0229\b+\u0001+\u0001+\u0001+\u0001+\u0003+\u022f\b+\u0001+\u0003"+ - "+\u0232\b+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001+\u0003+\u023a\b+\u0001"+ - "+\u0003+\u023d\b+\u0001+\u0001+\u0001+\u0003+\u0242\b+\u0001+\u0001+\u0001"+ - "+\u0003+\u0247\b+\u0001,\u0001,\u0001,\u0005,\u024c\b,\n,\f,\u024f\t,"+ - "\u0001,\u0001,\u0003,\u0253\b,\u0001,\u0003,\u0256\b,\u0001-\u0001-\u0001"+ - "-\u0003-\u025b\b-\u0001.\u0001.\u0001.\u0001/\u0001/\u0003/\u0262\b/\u0001"+ - "/\u0001/\u00010\u00040\u0267\b0\u000b0\f0\u0268\u00011\u00011\u00011\u0001"+ - "1\u00012\u00052\u0270\b2\n2\f2\u0273\t2\u00012\u00032\u0276\b2\u00012"+ - "\u00042\u0279\b2\u000b2\f2\u027a\u00012\u00052\u027e\b2\n2\f2\u0281\t"+ - "2\u00012\u00052\u0284\b2\n2\f2\u0287\t2\u00013\u00033\u028a\b3\u00013"+ - "\u00013\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ - "4\u00014\u00014\u00034\u0299\b4\u00014\u00034\u029c\b4\u00014\u00014\u0001"+ - "4\u00034\u02a1\b4\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ - "4\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00034\u02b2\b4\u0001"+ - "4\u00034\u02b5\b4\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0003"+ - "5\u02be\b5\u00016\u00016\u00016\u00016\u00056\u02c4\b6\n6\f6\u02c7\t6"+ - "\u00016\u00036\u02ca\b6\u00036\u02cc\b6\u00016\u00016\u00017\u00037\u02d1"+ - "\b7\u00017\u00017\u00037\u02d5\b7\u00018\u00018\u00018\u00058\u02da\b"+ - "8\n8\f8\u02dd\t8\u00019\u00019\u00019\u00019\u00039\u02e3\b9\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00039\u0313\b9\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00039\u0351\b9\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00039\u0359\b9\u00019\u00019\u00039\u035d"+ - "\b9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00059\u036a\b9\n9\f9\u036d\t9\u0001:\u0001:\u0001:\u0003:\u0372"+ - "\b:\u0001;\u0001;\u0001;\u0001;\u0005;\u0378\b;\n;\f;\u037b\t;\u0001;"+ - "\u0003;\u037e\b;\u0003;\u0380\b;\u0001;\u0001;\u0001<\u0001<\u0003<\u0386"+ - "\b<\u0001<\u0001<\u0003<\u038a\b<\u0001<\u0001<\u0003<\u038e\b<\u0001"+ - "<\u0001<\u0001<\u0003<\u0393\b<\u0001<\u0001<\u0001<\u0001<\u0003<\u0399"+ - "\b<\u0001=\u0001=\u0001=\u0003=\u039e\b=\u0001=\u0003=\u03a1\b=\u0001"+ - ">\u0001>\u0003>\u03a5\b>\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001"+ - "@\u0001@\u0001@\u0003@\u03b0\b@\u0001A\u0001A\u0005A\u03b4\bA\nA\fA\u03b7"+ - "\tA\u0001A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0003B\u03c0\bB\u0001"+ - "C\u0001C\u0001D\u0001D\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001"+ - "F\u0001F\u0001G\u0001G\u0003G\u03d0\bG\u0001H\u0001H\u0001I\u0001I\u0001"+ - "I\u0003I\u03d7\bI\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+ - "J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+ - "J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+ - "J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+ - "J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0003J\u0407"+ - "\bJ\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0003L\u040f\bL\u0001M\u0001"+ - "M\u0004M\u0413\bM\u000bM\fM\u0414\u0003M\u0417\bM\u0001N\u0004N\u041a"+ - "\bN\u000bN\fN\u041b\u0001N\u0003N\u041f\bN\u0001O\u0001O\u0001O\u0002"+ - "\u0414\u041b\u0001rP\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014"+ - "\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfh"+ - "jlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092"+ - "\u0094\u0096\u0098\u009a\u009c\u009e\u0000\n\u0001\u0000\u001a\u001c\u0001"+ - "\u0000\u0016\u0017\u0001\u0000 \"\u0001\u0000#&\u0001\u0000\'*\u0001\u0000"+ - "0;\u0001\u0000?C\u0001\u0000DG\u0004\u0000bckkppww\u0001\u0000op\u04ca"+ - "\u0000\u00a1\u0001\u0000\u0000\u0000\u0002\u00a8\u0001\u0000\u0000\u0000"+ - "\u0004\u00be\u0001\u0000\u0000\u0000\u0006\u00c0\u0001\u0000\u0000\u0000"+ - "\b\u00c7\u0001\u0000\u0000\u0000\n\u00cb\u0001\u0000\u0000\u0000\f\u00da"+ - "\u0001\u0000\u0000\u0000\u000e\u00dc\u0001\u0000\u0000\u0000\u0010\u00ed"+ - "\u0001\u0000\u0000\u0000\u0012\u00f2\u0001\u0000\u0000\u0000\u0014\u00f8"+ - "\u0001\u0000\u0000\u0000\u0016\u00fb\u0001\u0000\u0000\u0000\u0018\u010c"+ - "\u0001\u0000\u0000\u0000\u001a\u0118\u0001\u0000\u0000\u0000\u001c\u011d"+ - "\u0001\u0000\u0000\u0000\u001e\u011f\u0001\u0000\u0000\u0000 \u0122\u0001"+ - "\u0000\u0000\u0000\"\u012b\u0001\u0000\u0000\u0000$\u0130\u0001\u0000"+ - "\u0000\u0000&\u0132\u0001\u0000\u0000\u0000(\u0136\u0001\u0000\u0000\u0000"+ - "*\u0177\u0001\u0000\u0000\u0000,\u017c\u0001\u0000\u0000\u0000.\u017e"+ - "\u0001\u0000\u0000\u00000\u0185\u0001\u0000\u0000\u00002\u018c\u0001\u0000"+ - "\u0000\u00004\u0193\u0001\u0000\u0000\u00006\u019a\u0001\u0000\u0000\u0000"+ - "8\u01a0\u0001\u0000\u0000\u0000:\u01a6\u0001\u0000\u0000\u0000<\u01b3"+ - "\u0001\u0000\u0000\u0000>\u01b7\u0001\u0000\u0000\u0000@\u01bd\u0001\u0000"+ - "\u0000\u0000B\u01c2\u0001\u0000\u0000\u0000D\u01c6\u0001\u0000\u0000\u0000"+ - "F\u01cb\u0001\u0000\u0000\u0000H\u01d4\u0001\u0000\u0000\u0000J\u01de"+ - "\u0001\u0000\u0000\u0000L\u01e1\u0001\u0000\u0000\u0000N\u01e5\u0001\u0000"+ - "\u0000\u0000P\u01f3\u0001\u0000\u0000\u0000R\u01f9\u0001\u0000\u0000\u0000"+ - "T\u021d\u0001\u0000\u0000\u0000V\u0246\u0001\u0000\u0000\u0000X\u0255"+ - "\u0001\u0000\u0000\u0000Z\u0257\u0001\u0000\u0000\u0000\\\u025c\u0001"+ - "\u0000\u0000\u0000^\u025f\u0001\u0000\u0000\u0000`\u0266\u0001\u0000\u0000"+ - "\u0000b\u026a\u0001\u0000\u0000\u0000d\u0271\u0001\u0000\u0000\u0000f"+ - "\u0289\u0001\u0000\u0000\u0000h\u02b4\u0001\u0000\u0000\u0000j\u02bd\u0001"+ - "\u0000\u0000\u0000l\u02bf\u0001\u0000\u0000\u0000n\u02d0\u0001\u0000\u0000"+ - "\u0000p\u02d6\u0001\u0000\u0000\u0000r\u0312\u0001\u0000\u0000\u0000t"+ - "\u0371\u0001\u0000\u0000\u0000v\u0373\u0001\u0000\u0000\u0000x\u0398\u0001"+ - "\u0000\u0000\u0000z\u03a0\u0001\u0000\u0000\u0000|\u03a4\u0001\u0000\u0000"+ - "\u0000~\u03a6\u0001\u0000\u0000\u0000\u0080\u03af\u0001\u0000\u0000\u0000"+ - "\u0082\u03b1\u0001\u0000\u0000\u0000\u0084\u03bf\u0001\u0000\u0000\u0000"+ - "\u0086\u03c1\u0001\u0000\u0000\u0000\u0088\u03c3\u0001\u0000\u0000\u0000"+ - "\u008a\u03c5\u0001\u0000\u0000\u0000\u008c\u03c9\u0001\u0000\u0000\u0000"+ - "\u008e\u03cf\u0001\u0000\u0000\u0000\u0090\u03d1\u0001\u0000\u0000\u0000"+ - "\u0092\u03d6\u0001\u0000\u0000\u0000\u0094\u0406\u0001\u0000\u0000\u0000"+ - "\u0096\u0408\u0001\u0000\u0000\u0000\u0098\u040e\u0001\u0000\u0000\u0000"+ - "\u009a\u0416\u0001\u0000\u0000\u0000\u009c\u041e\u0001\u0000\u0000\u0000"+ - "\u009e\u0420\u0001\u0000\u0000\u0000\u00a0\u00a2\u0005\u0001\u0000\u0000"+ - "\u00a1\u00a0\u0001\u0000\u0000\u0000\u00a1\u00a2\u0001\u0000\u0000\u0000"+ - "\u00a2\u00a4\u0001\u0000\u0000\u0000\u00a3\u00a5\u0003`0\u0000\u00a4\u00a3"+ - "\u0001\u0000\u0000\u0000\u00a4\u00a5\u0001\u0000\u0000\u0000\u00a5\u00a6"+ - "\u0001\u0000\u0000\u0000\u00a6\u00a7\u0005\u0000\u0000\u0001\u00a7\u0001"+ - "\u0001\u0000\u0000\u0000\u00a8\u00a9\u0003\u0004\u0002\u0000\u00a9\u0003"+ - "\u0001\u0000\u0000\u0000\u00aa\u00bf\u0003\u0006\u0003\u0000\u00ab\u00bf"+ - "\u0003\u001e\u000f\u0000\u00ac\u00bf\u0003\n\u0005\u0000\u00ad\u00bf\u0003"+ - "\u0018\f\u0000\u00ae\u00bf\u0003$\u0012\u0000\u00af\u00bf\u0003P(\u0000"+ - "\u00b0\u00bf\u0003&\u0013\u0000\u00b1\u00bf\u0003(\u0014\u0000\u00b2\u00bf"+ - "\u0003*\u0015\u0000\u00b3\u00bf\u0003.\u0017\u0000\u00b4\u00bf\u00030"+ - "\u0018\u0000\u00b5\u00bf\u00032\u0019\u0000\u00b6\u00bf\u00034\u001a\u0000"+ - "\u00b7\u00bf\u00036\u001b\u0000\u00b8\u00bf\u0003B!\u0000\u00b9\u00bf"+ - "\u00038\u001c\u0000\u00ba\u00bf\u0003D\"\u0000\u00bb\u00bf\u0003F#\u0000"+ - "\u00bc\u00bf\u0003L&\u0000\u00bd\u00bf\u0003N\'\u0000\u00be\u00aa\u0001"+ - "\u0000\u0000\u0000\u00be\u00ab\u0001\u0000\u0000\u0000\u00be\u00ac\u0001"+ - "\u0000\u0000\u0000\u00be\u00ad\u0001\u0000\u0000\u0000\u00be\u00ae\u0001"+ - "\u0000\u0000\u0000\u00be\u00af\u0001\u0000\u0000\u0000\u00be\u00b0\u0001"+ - "\u0000\u0000\u0000\u00be\u00b1\u0001\u0000\u0000\u0000\u00be\u00b2\u0001"+ - "\u0000\u0000\u0000\u00be\u00b3\u0001\u0000\u0000\u0000\u00be\u00b4\u0001"+ - "\u0000\u0000\u0000\u00be\u00b5\u0001\u0000\u0000\u0000\u00be\u00b6\u0001"+ - "\u0000\u0000\u0000\u00be\u00b7\u0001\u0000\u0000\u0000\u00be\u00b8\u0001"+ - "\u0000\u0000\u0000\u00be\u00b9\u0001\u0000\u0000\u0000\u00be\u00ba\u0001"+ - "\u0000\u0000\u0000\u00be\u00bb\u0001\u0000\u0000\u0000\u00be\u00bc\u0001"+ - "\u0000\u0000\u0000\u00be\u00bd\u0001\u0000\u0000\u0000\u00bf\u0005\u0001"+ - "\u0000\u0000\u0000\u00c0\u00c2\u0005\t\u0000\u0000\u00c1\u00c3\u0003\b"+ - "\u0004\u0000\u00c2\u00c1\u0001\u0000\u0000\u0000\u00c2\u00c3\u0001\u0000"+ - "\u0000\u0000\u00c3\u00c4\u0001\u0000\u0000\u0000\u00c4\u00c5\u0005\u000b"+ - "\u0000\u0000\u00c5\u0007\u0001\u0000\u0000\u0000\u00c6\u00c8\u0003\u0004"+ - "\u0002\u0000\u00c7\u00c6\u0001\u0000\u0000\u0000\u00c8\u00c9\u0001\u0000"+ - "\u0000\u0000\u00c9\u00c7\u0001\u0000\u0000\u0000\u00c9\u00ca\u0001\u0000"+ - "\u0000\u0000\u00ca\t\u0001\u0000\u0000\u0000\u00cb\u00cc\u0005j\u0000"+ - "\u0000\u00cc\u00cd\u0003\f\u0006\u0000\u00cd\u000b\u0001\u0000\u0000\u0000"+ - "\u00ce\u00d0\u0003\u0010\b\u0000\u00cf\u00ce\u0001\u0000\u0000\u0000\u00cf"+ - "\u00d0\u0001\u0000\u0000\u0000\u00d0\u00d3\u0001\u0000\u0000\u0000\u00d1"+ - "\u00d4\u0003\u0012\t\u0000\u00d2\u00d4\u0003\u000e\u0007\u0000\u00d3\u00d1"+ - "\u0001\u0000\u0000\u0000\u00d3\u00d2\u0001\u0000\u0000\u0000\u00d4\u00d5"+ - "\u0001\u0000\u0000\u0000\u00d5\u00d6\u0003\u0014\n\u0000\u00d6\u00d7\u0003"+ - "\u0098L\u0000\u00d7\u00db\u0001\u0000\u0000\u0000\u00d8\u00d9\u0005x\u0000"+ - "\u0000\u00d9\u00db\u0003\u0098L\u0000\u00da\u00cf\u0001\u0000\u0000\u0000"+ - "\u00da\u00d8\u0001\u0000\u0000\u0000\u00db\r\u0001\u0000\u0000\u0000\u00dc"+ - "\u00e2\u0005\t\u0000\u0000\u00dd\u00de\u0003\u0016\u000b\u0000\u00de\u00df"+ - "\u0005\r\u0000\u0000\u00df\u00e1\u0001\u0000\u0000\u0000\u00e0\u00dd\u0001"+ - "\u0000\u0000\u0000\u00e1\u00e4\u0001\u0000\u0000\u0000\u00e2\u00e0\u0001"+ - "\u0000\u0000\u0000\u00e2\u00e3\u0001\u0000\u0000\u0000\u00e3\u00e9\u0001"+ - "\u0000\u0000\u0000\u00e4\u00e2\u0001\u0000\u0000\u0000\u00e5\u00e7\u0003"+ - "\u0016\u000b\u0000\u00e6\u00e8\u0005\r\u0000\u0000\u00e7\u00e6\u0001\u0000"+ - "\u0000\u0000\u00e7\u00e8\u0001\u0000\u0000\u0000\u00e8\u00ea\u0001\u0000"+ - "\u0000\u0000\u00e9\u00e5\u0001\u0000\u0000\u0000\u00e9\u00ea\u0001\u0000"+ - "\u0000\u0000\u00ea\u00eb\u0001\u0000\u0000\u0000\u00eb\u00ec\u0005\u000b"+ - "\u0000\u0000\u00ec\u000f\u0001\u0000\u0000\u0000\u00ed\u00ee\u0003\u0016"+ - "\u000b\u0000\u00ee\u00ef\u0005\r\u0000\u0000\u00ef\u0011\u0001\u0000\u0000"+ - "\u0000\u00f0\u00f3\u0005\u001a\u0000\u0000\u00f1\u00f3\u0003\u008eG\u0000"+ - "\u00f2\u00f0\u0001\u0000\u0000\u0000\u00f2\u00f1\u0001\u0000\u0000\u0000"+ - "\u00f3\u00f6\u0001\u0000\u0000\u0000\u00f4\u00f5\u0005b\u0000\u0000\u00f5"+ - "\u00f7\u0003\u008eG\u0000\u00f6\u00f4\u0001\u0000\u0000\u0000\u00f6\u00f7"+ - "\u0001\u0000\u0000\u0000\u00f7\u0013\u0001\u0000\u0000\u0000\u00f8\u00f9"+ - "\u0005c\u0000\u0000\u00f9\u00fa\u0005x\u0000\u0000\u00fa\u0015\u0001\u0000"+ - "\u0000\u0000\u00fb\u00fe\u0003\u008eG\u0000\u00fc\u00fd\u0005b\u0000\u0000"+ - "\u00fd\u00ff\u0003\u008eG\u0000\u00fe\u00fc\u0001\u0000\u0000\u0000\u00fe"+ - "\u00ff\u0001\u0000\u0000\u0000\u00ff\u0017\u0001\u0000\u0000\u0000\u0100"+ - "\u0103\u0005i\u0000\u0000\u0101\u0104\u0003\u001a\r\u0000\u0102\u0104"+ - "\u0003\u001c\u000e\u0000\u0103\u0101\u0001\u0000\u0000\u0000\u0103\u0102"+ - "\u0001\u0000\u0000\u0000\u0104\u0105\u0001\u0000\u0000\u0000\u0105\u0106"+ - "\u0003\u0098L\u0000\u0106\u010d\u0001\u0000\u0000\u0000\u0107\u0108\u0005"+ - "i\u0000\u0000\u0108\u0109\u0005\\\u0000\u0000\u0109\u010a\u0003r9\u0000"+ - "\u010a\u010b\u0003\u0098L\u0000\u010b\u010d\u0001\u0000\u0000\u0000\u010c"+ - "\u0100\u0001\u0000\u0000\u0000\u010c\u0107\u0001\u0000\u0000\u0000\u010d"+ - "\u0019\u0001\u0000\u0000\u0000\u010e\u010f\u0003\u0012\t\u0000\u010f\u0110"+ - "\u0003\u0014\n\u0000\u0110\u0111\u0003\u0098L\u0000\u0111\u0119\u0001"+ - "\u0000\u0000\u0000\u0112\u0114\u0003\u000e\u0007\u0000\u0113\u0115\u0003"+ - "\u0014\n\u0000\u0114\u0113\u0001\u0000\u0000\u0000\u0114\u0115\u0001\u0000"+ - "\u0000\u0000\u0115\u0116\u0001\u0000\u0000\u0000\u0116\u0117\u0003\u0098"+ - "L\u0000\u0117\u0119\u0001\u0000\u0000\u0000\u0118\u010e\u0001\u0000\u0000"+ - "\u0000\u0118\u0112\u0001\u0000\u0000\u0000\u0119\u001b\u0001\u0000\u0000"+ - "\u0000\u011a\u011e\u0003\u001e\u000f\u0000\u011b\u011e\u0003P(\u0000\u011c"+ - "\u011e\u0003N\'\u0000\u011d\u011a\u0001\u0000\u0000\u0000\u011d\u011b"+ - "\u0001\u0000\u0000\u0000\u011d\u011c\u0001\u0000\u0000\u0000\u011e\u001d"+ - "\u0001\u0000\u0000\u0000\u011f\u0120\u0003 \u0010\u0000\u0120\u0121\u0003"+ - "\u0098L\u0000\u0121\u001f\u0001\u0000\u0000\u0000\u0122\u0123\u0003,\u0016"+ - "\u0000\u0123\u0128\u0003\"\u0011\u0000\u0124\u0125\u0005\r\u0000\u0000"+ - "\u0125\u0127\u0003\"\u0011\u0000\u0126\u0124\u0001\u0000\u0000\u0000\u0127"+ - "\u012a\u0001\u0000\u0000\u0000\u0128\u0126\u0001\u0000\u0000\u0000\u0128"+ - "\u0129\u0001\u0000\u0000\u0000\u0129!\u0001\u0000\u0000\u0000\u012a\u0128"+ - "\u0001\u0000\u0000\u0000\u012b\u012e\u0003t:\u0000\u012c\u012d\u0005\u000e"+ - "\u0000\u0000\u012d\u012f\u0003r9\u0000\u012e\u012c\u0001\u0000\u0000\u0000"+ - "\u012e\u012f\u0001\u0000\u0000\u0000\u012f#\u0001\u0000\u0000\u0000\u0130"+ - "\u0131\u0005\f\u0000\u0000\u0131%\u0001\u0000\u0000\u0000\u0132\u0133"+ - "\u0004\u0013\u0000\u0000\u0133\u0134\u0003p8\u0000\u0134\u0135\u0003\u0098"+ - "L\u0000\u0135\'\u0001\u0000\u0000\u0000\u0136\u0137\u0005]\u0000\u0000"+ - "\u0137\u0138\u0005\u0007\u0000\u0000\u0138\u0139\u0003p8\u0000\u0139\u013a"+ - "\u0005\b\u0000\u0000\u013a\u013d\u0003\u0004\u0002\u0000\u013b\u013c\u0005"+ - "M\u0000\u0000\u013c\u013e\u0003\u0004\u0002\u0000\u013d\u013b\u0001\u0000"+ - "\u0000\u0000\u013d\u013e\u0001\u0000\u0000\u0000\u013e)\u0001\u0000\u0000"+ - "\u0000\u013f\u0140\u0005I\u0000\u0000\u0140\u0141\u0003\u0004\u0002\u0000"+ - "\u0141\u0142\u0005W\u0000\u0000\u0142\u0143\u0005\u0007\u0000\u0000\u0143"+ - "\u0144\u0003p8\u0000\u0144\u0145\u0005\b\u0000\u0000\u0145\u0146\u0003"+ - "\u0098L\u0000\u0146\u0178\u0001\u0000\u0000\u0000\u0147\u0148\u0005W\u0000"+ - "\u0000\u0148\u0149\u0005\u0007\u0000\u0000\u0149\u014a\u0003p8\u0000\u014a"+ - "\u014b\u0005\b\u0000\u0000\u014b\u014c\u0003\u0004\u0002\u0000\u014c\u0178"+ - "\u0001\u0000\u0000\u0000\u014d\u014e\u0005U\u0000\u0000\u014e\u0151\u0005"+ - "\u0007\u0000\u0000\u014f\u0152\u0003p8\u0000\u0150\u0152\u0003 \u0010"+ - "\u0000\u0151\u014f\u0001\u0000\u0000\u0000\u0151\u0150\u0001\u0000\u0000"+ - "\u0000\u0151\u0152\u0001\u0000\u0000\u0000\u0152\u0153\u0001\u0000\u0000"+ - "\u0000\u0153\u0155\u0005\f\u0000\u0000\u0154\u0156\u0003p8\u0000\u0155"+ - "\u0154\u0001\u0000\u0000\u0000\u0155\u0156\u0001\u0000\u0000\u0000\u0156"+ - "\u0157\u0001\u0000\u0000\u0000\u0157\u0159\u0005\f\u0000\u0000\u0158\u015a"+ - "\u0003p8\u0000\u0159\u0158\u0001\u0000\u0000\u0000\u0159\u015a\u0001\u0000"+ - "\u0000\u0000\u015a\u015b\u0001\u0000\u0000\u0000\u015b\u015c\u0005\b\u0000"+ - "\u0000\u015c\u0178\u0003\u0004\u0002\u0000\u015d\u015e\u0005U\u0000\u0000"+ - "\u015e\u0161\u0005\u0007\u0000\u0000\u015f\u0162\u0003r9\u0000\u0160\u0162"+ - "\u0003 \u0010\u0000\u0161\u015f\u0001\u0000\u0000\u0000\u0161\u0160\u0001"+ - "\u0000\u0000\u0000\u0162\u0163\u0001\u0000\u0000\u0000\u0163\u0164\u0005"+ - "`\u0000\u0000\u0164\u0165\u0003p8\u0000\u0165\u0166\u0005\b\u0000\u0000"+ - "\u0166\u0167\u0003\u0004\u0002\u0000\u0167\u0178\u0001\u0000\u0000\u0000"+ - "\u0168\u016a\u0005U\u0000\u0000\u0169\u016b\u0005l\u0000\u0000\u016a\u0169"+ - "\u0001\u0000\u0000\u0000\u016a\u016b\u0001\u0000\u0000\u0000\u016b\u016c"+ - "\u0001\u0000\u0000\u0000\u016c\u016f\u0005\u0007\u0000\u0000\u016d\u0170"+ - "\u0003r9\u0000\u016e\u0170\u0003 \u0010\u0000\u016f\u016d\u0001\u0000"+ - "\u0000\u0000\u016f\u016e\u0001\u0000\u0000\u0000\u0170\u0171\u0001\u0000"+ - "\u0000\u0000\u0171\u0172\u0003\u0090H\u0000\u0172\u0173\u0004\u0015\u0001"+ - "\u0000\u0173\u0174\u0003p8\u0000\u0174\u0175\u0005\b\u0000\u0000\u0175"+ - "\u0176\u0003\u0004\u0002\u0000\u0176\u0178\u0001\u0000\u0000\u0000\u0177"+ - "\u013f\u0001\u0000\u0000\u0000\u0177\u0147\u0001\u0000\u0000\u0000\u0177"+ - "\u014d\u0001\u0000\u0000\u0000\u0177\u015d\u0001\u0000\u0000\u0000\u0177"+ - "\u0168\u0001\u0000\u0000\u0000\u0178+\u0001\u0000\u0000\u0000\u0179\u017d"+ - "\u0005O\u0000\u0000\u017a\u017d\u0003\u0096K\u0000\u017b\u017d\u0005h"+ - "\u0000\u0000\u017c\u0179\u0001\u0000\u0000\u0000\u017c\u017a\u0001\u0000"+ - "\u0000\u0000\u017c\u017b\u0001\u0000\u0000\u0000\u017d-\u0001\u0000\u0000"+ - "\u0000\u017e\u0181\u0005T\u0000\u0000\u017f\u0180\u0004\u0017\u0002\u0000"+ - "\u0180\u0182\u0003\u0090H\u0000\u0181\u017f\u0001\u0000\u0000\u0000\u0181"+ - "\u0182\u0001\u0000\u0000\u0000\u0182\u0183\u0001\u0000\u0000\u0000\u0183"+ - "\u0184\u0003\u0098L\u0000\u0184/\u0001\u0000\u0000\u0000\u0185\u0188\u0005"+ - "H\u0000\u0000\u0186\u0187\u0004\u0018\u0003\u0000\u0187\u0189\u0003\u0090"+ - "H\u0000\u0188\u0186\u0001\u0000\u0000\u0000\u0188\u0189\u0001\u0000\u0000"+ - "\u0000\u0189\u018a\u0001\u0000\u0000\u0000\u018a\u018b\u0003\u0098L\u0000"+ - "\u018b1\u0001\u0000\u0000\u0000\u018c\u018f\u0005R\u0000\u0000\u018d\u018e"+ - "\u0004\u0019\u0004\u0000\u018e\u0190\u0003p8\u0000\u018f\u018d\u0001\u0000"+ - "\u0000\u0000\u018f\u0190\u0001\u0000\u0000\u0000\u0190\u0191\u0001\u0000"+ - "\u0000\u0000\u0191\u0192\u0003\u0098L\u0000\u01923\u0001\u0000\u0000\u0000"+ - "\u0193\u0196\u0005m\u0000\u0000\u0194\u0195\u0004\u001a\u0005\u0000\u0195"+ - "\u0197\u0003p8\u0000\u0196\u0194\u0001\u0000\u0000\u0000\u0196\u0197\u0001"+ - "\u0000\u0000\u0000\u0197\u0198\u0001\u0000\u0000\u0000\u0198\u0199\u0003"+ - "\u0098L\u0000\u01995\u0001\u0000\u0000\u0000\u019a\u019b\u0005[\u0000"+ - "\u0000\u019b\u019c\u0005\u0007\u0000\u0000\u019c\u019d\u0003p8\u0000\u019d"+ - "\u019e\u0005\b\u0000\u0000\u019e\u019f\u0003\u0004\u0002\u0000\u019f7"+ - "\u0001\u0000\u0000\u0000\u01a0\u01a1\u0005V\u0000\u0000\u01a1\u01a2\u0005"+ - "\u0007\u0000\u0000\u01a2\u01a3\u0003p8\u0000\u01a3\u01a4\u0005\b\u0000"+ - "\u0000\u01a4\u01a5\u0003:\u001d\u0000\u01a59\u0001\u0000\u0000\u0000\u01a6"+ - "\u01a8\u0005\t\u0000\u0000\u01a7\u01a9\u0003<\u001e\u0000\u01a8\u01a7"+ - "\u0001\u0000\u0000\u0000\u01a8\u01a9\u0001\u0000\u0000\u0000\u01a9\u01ae"+ - "\u0001\u0000\u0000\u0000\u01aa\u01ac\u0003@ \u0000\u01ab\u01ad\u0003<"+ - "\u001e\u0000\u01ac\u01ab\u0001\u0000\u0000\u0000\u01ac\u01ad\u0001\u0000"+ - "\u0000\u0000\u01ad\u01af\u0001\u0000\u0000\u0000\u01ae\u01aa\u0001\u0000"+ - "\u0000\u0000\u01ae\u01af\u0001\u0000\u0000\u0000\u01af\u01b0\u0001\u0000"+ - "\u0000\u0000\u01b0\u01b1\u0005\u000b\u0000\u0000\u01b1;\u0001\u0000\u0000"+ - "\u0000\u01b2\u01b4\u0003>\u001f\u0000\u01b3\u01b2\u0001\u0000\u0000\u0000"+ - "\u01b4\u01b5\u0001\u0000\u0000\u0000\u01b5\u01b3\u0001\u0000\u0000\u0000"+ - "\u01b5\u01b6\u0001\u0000\u0000\u0000\u01b6=\u0001\u0000\u0000\u0000\u01b7"+ - "\u01b8\u0005L\u0000\u0000\u01b8\u01b9\u0003p8\u0000\u01b9\u01bb\u0005"+ - "\u0011\u0000\u0000\u01ba\u01bc\u0003\b\u0004\u0000\u01bb\u01ba\u0001\u0000"+ - "\u0000\u0000\u01bb\u01bc\u0001\u0000\u0000\u0000\u01bc?\u0001\u0000\u0000"+ - "\u0000\u01bd\u01be\u0005\\\u0000\u0000\u01be\u01c0\u0005\u0011\u0000\u0000"+ - "\u01bf\u01c1\u0003\b\u0004\u0000\u01c0\u01bf\u0001\u0000\u0000\u0000\u01c0"+ - "\u01c1\u0001\u0000\u0000\u0000\u01c1A\u0001\u0000\u0000\u0000\u01c2\u01c3"+ - "\u0003\u0090H\u0000\u01c3\u01c4\u0005\u0011\u0000\u0000\u01c4\u01c5\u0003"+ - "\u0004\u0002\u0000\u01c5C\u0001\u0000\u0000\u0000\u01c6\u01c7\u0005^\u0000"+ - "\u0000\u01c7\u01c8\u0004\"\u0006\u0000\u01c8\u01c9\u0003p8\u0000\u01c9"+ - "\u01ca\u0003\u0098L\u0000\u01caE\u0001\u0000\u0000\u0000\u01cb\u01cc\u0005"+ - "a\u0000\u0000\u01cc\u01d2\u0003\u0006\u0003\u0000\u01cd\u01cf\u0003H$"+ - "\u0000\u01ce\u01d0\u0003J%\u0000\u01cf\u01ce\u0001\u0000\u0000\u0000\u01cf"+ - "\u01d0\u0001\u0000\u0000\u0000\u01d0\u01d3\u0001\u0000\u0000\u0000\u01d1"+ - "\u01d3\u0003J%\u0000\u01d2\u01cd\u0001\u0000\u0000\u0000\u01d2\u01d1\u0001"+ - "\u0000\u0000\u0000\u01d3G\u0001\u0000\u0000\u0000\u01d4\u01da\u0005P\u0000"+ - "\u0000\u01d5\u01d7\u0005\u0007\u0000\u0000\u01d6\u01d8\u0003t:\u0000\u01d7"+ - "\u01d6\u0001\u0000\u0000\u0000\u01d7\u01d8\u0001\u0000\u0000\u0000\u01d8"+ - "\u01d9\u0001\u0000\u0000\u0000\u01d9\u01db\u0005\b\u0000\u0000\u01da\u01d5"+ - "\u0001\u0000\u0000\u0000\u01da\u01db\u0001\u0000\u0000\u0000\u01db\u01dc"+ - "\u0001\u0000\u0000\u0000\u01dc\u01dd\u0003\u0006\u0003\u0000\u01ddI\u0001"+ - "\u0000\u0000\u0000\u01de\u01df\u0005Q\u0000\u0000\u01df\u01e0\u0003\u0006"+ - "\u0003\u0000\u01e0K\u0001\u0000\u0000\u0000\u01e1\u01e2\u0005X\u0000\u0000"+ - "\u01e2\u01e3\u0003\u0098L\u0000\u01e3M\u0001\u0000\u0000\u0000\u01e4\u01e6"+ - "\u0005k\u0000\u0000\u01e5\u01e4\u0001\u0000\u0000\u0000\u01e5\u01e6\u0001"+ - "\u0000\u0000\u0000\u01e6\u01e7\u0001\u0000\u0000\u0000\u01e7\u01e9\u0005"+ - "Y\u0000\u0000\u01e8\u01ea\u0005\u001a\u0000\u0000\u01e9\u01e8\u0001\u0000"+ - "\u0000\u0000\u01e9\u01ea\u0001\u0000\u0000\u0000\u01ea\u01eb\u0001\u0000"+ - "\u0000\u0000\u01eb\u01ec\u0003\u0090H\u0000\u01ec\u01ee\u0005\u0007\u0000"+ - "\u0000\u01ed\u01ef\u0003X,\u0000\u01ee\u01ed\u0001\u0000\u0000\u0000\u01ee"+ - "\u01ef\u0001\u0000\u0000\u0000\u01ef\u01f0\u0001\u0000\u0000\u0000\u01f0"+ - "\u01f1\u0005\b\u0000\u0000\u01f1\u01f2\u0003^/\u0000\u01f2O\u0001\u0000"+ - "\u0000\u0000\u01f3\u01f4\u0005d\u0000\u0000\u01f4\u01f5\u0003\u0090H\u0000"+ - "\u01f5\u01f6\u0003R)\u0000\u01f6Q\u0001\u0000\u0000\u0000\u01f7\u01f8"+ - "\u0005f\u0000\u0000\u01f8\u01fa\u0003r9\u0000\u01f9\u01f7\u0001\u0000"+ - "\u0000\u0000\u01f9\u01fa\u0001\u0000\u0000\u0000\u01fa\u01fb\u0001\u0000"+ - "\u0000\u0000\u01fb\u01ff\u0005\t\u0000\u0000\u01fc\u01fe\u0003T*\u0000"+ - "\u01fd\u01fc\u0001\u0000\u0000\u0000\u01fe\u0201\u0001\u0000\u0000\u0000"+ - "\u01ff\u01fd\u0001\u0000\u0000\u0000\u01ff\u0200\u0001\u0000\u0000\u0000"+ - "\u0200\u0202\u0001\u0000\u0000\u0000\u0201\u01ff\u0001\u0000\u0000\u0000"+ - "\u0202\u0203\u0005\u000b\u0000\u0000\u0203S\u0001\u0000\u0000\u0000\u0204"+ - "\u0209\u0005v\u0000\u0000\u0205\u0206\u0004*\u0007\u0000\u0206\u0209\u0003"+ - "\u0090H\u0000\u0207\u0209\u0005k\u0000\u0000\u0208\u0204\u0001\u0000\u0000"+ - "\u0000\u0208\u0205\u0001\u0000\u0000\u0000\u0208\u0207\u0001\u0000\u0000"+ - "\u0000\u0209\u020c\u0001\u0000\u0000\u0000\u020a\u0208\u0001\u0000\u0000"+ - "\u0000\u020a\u020b\u0001\u0000\u0000\u0000\u020b\u0213\u0001\u0000\u0000"+ - "\u0000\u020c\u020a\u0001\u0000\u0000\u0000\u020d\u0214\u0003V+\u0000\u020e"+ - "\u020f\u0003t:\u0000\u020f\u0210\u0005\u000e\u0000\u0000\u0210\u0211\u0003"+ - "v;\u0000\u0211\u0212\u0005\f\u0000\u0000\u0212\u0214\u0001\u0000\u0000"+ - "\u0000\u0213\u020d\u0001\u0000\u0000\u0000\u0213\u020e\u0001\u0000\u0000"+ - "\u0000\u0214\u021e\u0001\u0000\u0000\u0000\u0215\u021e\u0003$\u0012\u0000"+ - "\u0216\u0218\u0005\u001f\u0000\u0000\u0217\u0216\u0001\u0000\u0000\u0000"+ - "\u0217\u0218\u0001\u0000\u0000\u0000\u0218\u0219\u0001\u0000\u0000\u0000"+ - "\u0219\u021a\u0003j5\u0000\u021a\u021b\u0005\u000e\u0000\u0000\u021b\u021c"+ - "\u0003r9\u0000\u021c\u021e\u0001\u0000\u0000\u0000\u021d\u020a\u0001\u0000"+ - "\u0000\u0000\u021d\u0215\u0001\u0000\u0000\u0000\u021d\u0217\u0001\u0000"+ - "\u0000\u0000\u021eU\u0001\u0000\u0000\u0000\u021f\u0221\u0005\u001a\u0000"+ - "\u0000\u0220\u021f\u0001\u0000\u0000\u0000\u0220\u0221\u0001\u0000\u0000"+ - "\u0000\u0221\u0223\u0001\u0000\u0000\u0000\u0222\u0224\u0005\u001f\u0000"+ - "\u0000\u0223\u0222\u0001\u0000\u0000\u0000\u0223\u0224\u0001\u0000\u0000"+ - "\u0000\u0224\u0225\u0001\u0000\u0000\u0000\u0225\u0226\u0003j5\u0000\u0226"+ - "\u0228\u0005\u0007\u0000\u0000\u0227\u0229\u0003X,\u0000\u0228\u0227\u0001"+ - "\u0000\u0000\u0000\u0228\u0229\u0001\u0000\u0000\u0000\u0229\u022a\u0001"+ - "\u0000\u0000\u0000\u022a\u022b\u0005\b\u0000\u0000\u022b\u022c\u0003^"+ - "/\u0000\u022c\u0247\u0001\u0000\u0000\u0000\u022d\u022f\u0005\u001a\u0000"+ - "\u0000\u022e\u022d\u0001\u0000\u0000\u0000\u022e\u022f\u0001\u0000\u0000"+ - "\u0000\u022f\u0231\u0001\u0000\u0000\u0000\u0230\u0232\u0005\u001f\u0000"+ - "\u0000\u0231\u0230\u0001\u0000\u0000\u0000\u0231\u0232\u0001\u0000\u0000"+ - "\u0000\u0232\u0233\u0001\u0000\u0000\u0000\u0233\u0234\u0003\u008aE\u0000"+ - "\u0234\u0235\u0005\u0007\u0000\u0000\u0235\u0236\u0005\b\u0000\u0000\u0236"+ - "\u0237\u0003^/\u0000\u0237\u0247\u0001\u0000\u0000\u0000\u0238\u023a\u0005"+ - "\u001a\u0000\u0000\u0239\u0238\u0001\u0000\u0000\u0000\u0239\u023a\u0001"+ - "\u0000\u0000\u0000\u023a\u023c\u0001\u0000\u0000\u0000\u023b\u023d\u0005"+ - "\u001f\u0000\u0000\u023c\u023b\u0001\u0000\u0000\u0000\u023c\u023d\u0001"+ - "\u0000\u0000\u0000\u023d\u023e\u0001\u0000\u0000\u0000\u023e\u023f\u0003"+ - "\u008cF\u0000\u023f\u0241\u0005\u0007\u0000\u0000\u0240\u0242\u0003X,"+ - "\u0000\u0241\u0240\u0001\u0000\u0000\u0000\u0241\u0242\u0001\u0000\u0000"+ - "\u0000\u0242\u0243\u0001\u0000\u0000\u0000\u0243\u0244\u0005\b\u0000\u0000"+ - "\u0244\u0245\u0003^/\u0000\u0245\u0247\u0001\u0000\u0000\u0000\u0246\u0220"+ - "\u0001\u0000\u0000\u0000\u0246\u022e\u0001\u0000\u0000\u0000\u0246\u0239"+ - "\u0001\u0000\u0000\u0000\u0247W\u0001\u0000\u0000\u0000\u0248\u024d\u0003"+ - "Z-\u0000\u0249\u024a\u0005\r\u0000\u0000\u024a\u024c\u0003Z-\u0000\u024b"+ - "\u0249\u0001\u0000\u0000\u0000\u024c\u024f\u0001\u0000\u0000\u0000\u024d"+ - "\u024b\u0001\u0000\u0000\u0000\u024d\u024e\u0001\u0000\u0000\u0000\u024e"+ - "\u0252\u0001\u0000\u0000\u0000\u024f\u024d\u0001\u0000\u0000\u0000\u0250"+ - "\u0251\u0005\r\u0000\u0000\u0251\u0253\u0003\\.\u0000\u0252\u0250\u0001"+ - "\u0000\u0000\u0000\u0252\u0253\u0001\u0000\u0000\u0000\u0253\u0256\u0001"+ - "\u0000\u0000\u0000\u0254\u0256\u0003\\.\u0000\u0255\u0248\u0001\u0000"+ - "\u0000\u0000\u0255\u0254\u0001\u0000\u0000\u0000\u0256Y\u0001\u0000\u0000"+ - "\u0000\u0257\u025a\u0003t:\u0000\u0258\u0259\u0005\u000e\u0000\u0000\u0259"+ - "\u025b\u0003r9\u0000\u025a\u0258\u0001\u0000\u0000\u0000\u025a\u025b\u0001"+ - "\u0000\u0000\u0000\u025b[\u0001\u0000\u0000\u0000\u025c\u025d\u0005\u0012"+ - "\u0000\u0000\u025d\u025e\u0003r9\u0000\u025e]\u0001\u0000\u0000\u0000"+ - "\u025f\u0261\u0005\t\u0000\u0000\u0260\u0262\u0003`0\u0000\u0261\u0260"+ - "\u0001\u0000\u0000\u0000\u0261\u0262\u0001\u0000\u0000\u0000\u0262\u0263"+ - "\u0001\u0000\u0000\u0000\u0263\u0264\u0005\u000b\u0000\u0000\u0264_\u0001"+ - "\u0000\u0000\u0000\u0265\u0267\u0003\u0002\u0001\u0000\u0266\u0265\u0001"+ - "\u0000\u0000\u0000\u0267\u0268\u0001\u0000\u0000\u0000\u0268\u0266\u0001"+ - "\u0000\u0000\u0000\u0268\u0269\u0001\u0000\u0000\u0000\u0269a\u0001\u0000"+ - "\u0000\u0000\u026a\u026b\u0005\u0005\u0000\u0000\u026b\u026c\u0003d2\u0000"+ - "\u026c\u026d\u0005\u0006\u0000\u0000\u026dc\u0001\u0000\u0000\u0000\u026e"+ - "\u0270\u0005\r\u0000\u0000\u026f\u026e\u0001\u0000\u0000\u0000\u0270\u0273"+ - "\u0001\u0000\u0000\u0000\u0271\u026f\u0001\u0000\u0000\u0000\u0271\u0272"+ - "\u0001\u0000\u0000\u0000\u0272\u0275\u0001\u0000\u0000\u0000\u0273\u0271"+ - "\u0001\u0000\u0000\u0000\u0274\u0276\u0003f3\u0000\u0275\u0274\u0001\u0000"+ - "\u0000\u0000\u0275\u0276\u0001\u0000\u0000\u0000\u0276\u027f\u0001\u0000"+ - "\u0000\u0000\u0277\u0279\u0005\r\u0000\u0000\u0278\u0277\u0001\u0000\u0000"+ - "\u0000\u0279\u027a\u0001\u0000\u0000\u0000\u027a\u0278\u0001\u0000\u0000"+ - "\u0000\u027a\u027b\u0001\u0000\u0000\u0000\u027b\u027c\u0001\u0000\u0000"+ - "\u0000\u027c\u027e\u0003f3\u0000\u027d\u0278\u0001\u0000\u0000\u0000\u027e"+ - "\u0281\u0001\u0000\u0000\u0000\u027f\u027d\u0001\u0000\u0000\u0000\u027f"+ - "\u0280\u0001\u0000\u0000\u0000\u0280\u0285\u0001\u0000\u0000\u0000\u0281"+ - "\u027f\u0001\u0000\u0000\u0000\u0282\u0284\u0005\r\u0000\u0000\u0283\u0282"+ - "\u0001\u0000\u0000\u0000\u0284\u0287\u0001\u0000\u0000\u0000\u0285\u0283"+ - "\u0001\u0000\u0000\u0000\u0285\u0286\u0001\u0000\u0000\u0000\u0286e\u0001"+ - "\u0000\u0000\u0000\u0287\u0285\u0001\u0000\u0000\u0000\u0288\u028a\u0005"+ - "\u0012\u0000\u0000\u0289\u0288\u0001\u0000\u0000\u0000\u0289\u028a\u0001"+ - "\u0000\u0000\u0000\u028a\u028b\u0001\u0000\u0000\u0000\u028b\u028c\u0003"+ - "r9\u0000\u028cg\u0001\u0000\u0000\u0000\u028d\u028e\u0003j5\u0000\u028e"+ - "\u028f\u0005\u0011\u0000\u0000\u028f\u0290\u0003r9\u0000\u0290\u02b5\u0001"+ - "\u0000\u0000\u0000\u0291\u0292\u0005\u0005\u0000\u0000\u0292\u0293\u0003"+ - "r9\u0000\u0293\u0294\u0005\u0006\u0000\u0000\u0294\u0295\u0005\u0011\u0000"+ - "\u0000\u0295\u0296\u0003r9\u0000\u0296\u02b5\u0001\u0000\u0000\u0000\u0297"+ - "\u0299\u0005k\u0000\u0000\u0298\u0297\u0001\u0000\u0000\u0000\u0298\u0299"+ - "\u0001\u0000\u0000\u0000\u0299\u029b\u0001\u0000\u0000\u0000\u029a\u029c"+ - "\u0005\u001a\u0000\u0000\u029b\u029a\u0001\u0000\u0000\u0000\u029b\u029c"+ - "\u0001\u0000\u0000\u0000\u029c\u029d\u0001\u0000\u0000\u0000\u029d\u029e"+ - "\u0003j5\u0000\u029e\u02a0\u0005\u0007\u0000\u0000\u029f\u02a1\u0003X"+ - ",\u0000\u02a0\u029f\u0001\u0000\u0000\u0000\u02a0\u02a1\u0001\u0000\u0000"+ - "\u0000\u02a1\u02a2\u0001\u0000\u0000\u0000\u02a2\u02a3\u0005\b\u0000\u0000"+ - "\u02a3\u02a4\u0003^/\u0000\u02a4\u02b5\u0001\u0000\u0000\u0000\u02a5\u02a6"+ - "\u0003\u008aE\u0000\u02a6\u02a7\u0005\u0007\u0000\u0000\u02a7\u02a8\u0005"+ - "\b\u0000\u0000\u02a8\u02a9\u0003^/\u0000\u02a9\u02b5\u0001\u0000\u0000"+ - "\u0000\u02aa\u02ab\u0003\u008cF\u0000\u02ab\u02ac\u0005\u0007\u0000\u0000"+ - "\u02ac\u02ad\u0003Z-\u0000\u02ad\u02ae\u0005\b\u0000\u0000\u02ae\u02af"+ - "\u0003^/\u0000\u02af\u02b5\u0001\u0000\u0000\u0000\u02b0\u02b2\u0005\u0012"+ - "\u0000\u0000\u02b1\u02b0\u0001\u0000\u0000\u0000\u02b1\u02b2\u0001\u0000"+ - "\u0000\u0000\u02b2\u02b3\u0001\u0000\u0000\u0000\u02b3\u02b5\u0003r9\u0000"+ - "\u02b4\u028d\u0001\u0000\u0000\u0000\u02b4\u0291\u0001\u0000\u0000\u0000"+ - "\u02b4\u0298\u0001\u0000\u0000\u0000\u02b4\u02a5\u0001\u0000\u0000\u0000"+ - "\u02b4\u02aa\u0001\u0000\u0000\u0000\u02b4\u02b1\u0001\u0000\u0000\u0000"+ - "\u02b5i\u0001\u0000\u0000\u0000\u02b6\u02be\u0003\u008eG\u0000\u02b7\u02be"+ - "\u0005x\u0000\u0000\u02b8\u02be\u0003\u0086C\u0000\u02b9\u02ba\u0005\u0005"+ - "\u0000\u0000\u02ba\u02bb\u0003r9\u0000\u02bb\u02bc\u0005\u0006\u0000\u0000"+ - "\u02bc\u02be\u0001\u0000\u0000\u0000\u02bd\u02b6\u0001\u0000\u0000\u0000"+ - "\u02bd\u02b7\u0001\u0000\u0000\u0000\u02bd\u02b8\u0001\u0000\u0000\u0000"+ - "\u02bd\u02b9\u0001\u0000\u0000\u0000\u02bek\u0001\u0000\u0000\u0000\u02bf"+ - "\u02cb\u0005\u0007\u0000\u0000\u02c0\u02c5\u0003n7\u0000\u02c1\u02c2\u0005"+ - "\r\u0000\u0000\u02c2\u02c4\u0003n7\u0000\u02c3\u02c1\u0001\u0000\u0000"+ - "\u0000\u02c4\u02c7\u0001\u0000\u0000\u0000\u02c5\u02c3\u0001\u0000\u0000"+ - "\u0000\u02c5\u02c6\u0001\u0000\u0000\u0000\u02c6\u02c9\u0001\u0000\u0000"+ - "\u0000\u02c7\u02c5\u0001\u0000\u0000\u0000\u02c8\u02ca\u0005\r\u0000\u0000"+ - "\u02c9\u02c8\u0001\u0000\u0000\u0000\u02c9\u02ca\u0001\u0000\u0000\u0000"+ - "\u02ca\u02cc\u0001\u0000\u0000\u0000\u02cb\u02c0\u0001\u0000\u0000\u0000"+ - "\u02cb\u02cc\u0001\u0000\u0000\u0000\u02cc\u02cd\u0001\u0000\u0000\u0000"+ - "\u02cd\u02ce\u0005\b\u0000\u0000\u02cem\u0001\u0000\u0000\u0000\u02cf"+ - "\u02d1\u0005\u0012\u0000\u0000\u02d0\u02cf\u0001\u0000\u0000\u0000\u02d0"+ - "\u02d1\u0001\u0000\u0000\u0000\u02d1\u02d4\u0001\u0000\u0000\u0000\u02d2"+ - "\u02d5\u0003r9\u0000\u02d3\u02d5\u0003\u0090H\u0000\u02d4\u02d2\u0001"+ - "\u0000\u0000\u0000\u02d4\u02d3\u0001\u0000\u0000\u0000\u02d5o\u0001\u0000"+ - "\u0000\u0000\u02d6\u02db\u0003r9\u0000\u02d7\u02d8\u0005\r\u0000\u0000"+ - "\u02d8\u02da\u0003r9\u0000\u02d9\u02d7\u0001\u0000\u0000\u0000\u02da\u02dd"+ - "\u0001\u0000\u0000\u0000\u02db\u02d9\u0001\u0000\u0000\u0000\u02db\u02dc"+ - "\u0001\u0000\u0000\u0000\u02dcq\u0001\u0000\u0000\u0000\u02dd\u02db\u0001"+ - "\u0000\u0000\u0000\u02de\u02df\u00069\uffff\uffff\u0000\u02df\u0313\u0003"+ - "x<\u0000\u02e0\u02e2\u0005d\u0000\u0000\u02e1\u02e3\u0003\u0090H\u0000"+ - "\u02e2\u02e1\u0001\u0000\u0000\u0000\u02e2\u02e3\u0001\u0000\u0000\u0000"+ - "\u02e3\u02e4\u0001\u0000\u0000\u0000\u02e4\u0313\u0003R)\u0000\u02e5\u02e6"+ - "\u0005N\u0000\u0000\u02e6\u02e7\u0003r9\u0000\u02e7\u02e8\u0003l6\u0000"+ - "\u02e8\u0313\u0001\u0000\u0000\u0000\u02e9\u02ea\u0005N\u0000\u0000\u02ea"+ - "\u0313\u0003r9*\u02eb\u02ec\u0005N\u0000\u0000\u02ec\u02ed\u0005\u0013"+ - "\u0000\u0000\u02ed\u0313\u0003\u0090H\u0000\u02ee\u02ef\u0005_\u0000\u0000"+ - "\u02ef\u0313\u0003r9%\u02f0\u02f1\u0005S\u0000\u0000\u02f1\u0313\u0003"+ - "r9$\u02f2\u02f3\u0005K\u0000\u0000\u02f3\u0313\u0003r9#\u02f4\u02f5\u0005"+ - "\u0014\u0000\u0000\u02f5\u0313\u0003r9\"\u02f6\u02f7\u0005\u0015\u0000"+ - "\u0000\u02f7\u0313\u0003r9!\u02f8\u02f9\u0005\u0016\u0000\u0000\u02f9"+ - "\u0313\u0003r9 \u02fa\u02fb\u0005\u0017\u0000\u0000\u02fb\u0313\u0003"+ - "r9\u001f\u02fc\u02fd\u0005\u0018\u0000\u0000\u02fd\u0313\u0003r9\u001e"+ - "\u02fe\u02ff\u0005\u0019\u0000\u0000\u02ff\u0313\u0003r9\u001d\u0300\u0301"+ - "\u0005l\u0000\u0000\u0301\u0313\u0003r9\u001c\u0302\u0303\u0005j\u0000"+ - "\u0000\u0303\u0304\u0005\u0007\u0000\u0000\u0304\u0305\u0003r9\u0000\u0305"+ - "\u0306\u0005\b\u0000\u0000\u0306\u0313\u0001\u0000\u0000\u0000\u0307\u0313"+ - "\u00034\u001a\u0000\u0308\u0313\u0005Z\u0000\u0000\u0309\u0313\u0003\u0090"+ - "H\u0000\u030a\u0313\u0005g\u0000\u0000\u030b\u0313\u0003\u0080@\u0000"+ - "\u030c\u0313\u0003b1\u0000\u030d\u0313\u0003v;\u0000\u030e\u030f\u0005"+ - "\u0007\u0000\u0000\u030f\u0310\u0003p8\u0000\u0310\u0311\u0005\b\u0000"+ - "\u0000\u0311\u0313\u0001\u0000\u0000\u0000\u0312\u02de\u0001\u0000\u0000"+ - "\u0000\u0312\u02e0\u0001\u0000\u0000\u0000\u0312\u02e5\u0001\u0000\u0000"+ - "\u0000\u0312\u02e9\u0001\u0000\u0000\u0000\u0312\u02eb\u0001\u0000\u0000"+ - "\u0000\u0312\u02ee\u0001\u0000\u0000\u0000\u0312\u02f0\u0001\u0000\u0000"+ - "\u0000\u0312\u02f2\u0001\u0000\u0000\u0000\u0312\u02f4\u0001\u0000\u0000"+ - "\u0000\u0312\u02f6\u0001\u0000\u0000\u0000\u0312\u02f8\u0001\u0000\u0000"+ - "\u0000\u0312\u02fa\u0001\u0000\u0000\u0000\u0312\u02fc\u0001\u0000\u0000"+ - "\u0000\u0312\u02fe\u0001\u0000\u0000\u0000\u0312\u0300\u0001\u0000\u0000"+ - "\u0000\u0312\u0302\u0001\u0000\u0000\u0000\u0312\u0307\u0001\u0000\u0000"+ - "\u0000\u0312\u0308\u0001\u0000\u0000\u0000\u0312\u0309\u0001\u0000\u0000"+ - "\u0000\u0312\u030a\u0001\u0000\u0000\u0000\u0312\u030b\u0001\u0000\u0000"+ - "\u0000\u0312\u030c\u0001\u0000\u0000\u0000\u0312\u030d\u0001\u0000\u0000"+ - "\u0000\u0312\u030e\u0001\u0000\u0000\u0000\u0313\u036b\u0001\u0000\u0000"+ - "\u0000\u0314\u0315\n.\u0000\u0000\u0315\u0316\u0005\u0010\u0000\u0000"+ - "\u0316\u036a\u0003r9/\u0317\u0318\n\u001b\u0000\u0000\u0318\u0319\u0005"+ - "\u001d\u0000\u0000\u0319\u036a\u0003r9\u001b\u031a\u031b\n\u001a\u0000"+ - "\u0000\u031b\u031c\u0007\u0000\u0000\u0000\u031c\u036a\u0003r9\u001b\u031d"+ - "\u031e\n\u0019\u0000\u0000\u031e\u031f\u0007\u0001\u0000\u0000\u031f\u036a"+ - "\u0003r9\u001a\u0320\u0321\n\u0018\u0000\u0000\u0321\u0322\u0005\u001e"+ - "\u0000\u0000\u0322\u036a\u0003r9\u0019\u0323\u0324\n\u0017\u0000\u0000"+ - "\u0324\u0325\u0007\u0002\u0000\u0000\u0325\u036a\u0003r9\u0018\u0326\u0327"+ - "\n\u0016\u0000\u0000\u0327\u0328\u0007\u0003\u0000\u0000\u0328\u036a\u0003"+ - "r9\u0017\u0329\u032a\n\u0015\u0000\u0000\u032a\u032b\u0005J\u0000\u0000"+ - "\u032b\u036a\u0003r9\u0016\u032c\u032d\n\u0014\u0000\u0000\u032d\u032e"+ - "\u0005`\u0000\u0000\u032e\u036a\u0003r9\u0015\u032f\u0330\n\u0013\u0000"+ - "\u0000\u0330\u0331\u0007\u0004\u0000\u0000\u0331\u036a\u0003r9\u0014\u0332"+ - "\u0333\n\u0012\u0000\u0000\u0333\u0334\u0005+\u0000\u0000\u0334\u036a"+ - "\u0003r9\u0013\u0335\u0336\n\u0011\u0000\u0000\u0336\u0337\u0005,\u0000"+ - "\u0000\u0337\u036a\u0003r9\u0012\u0338\u0339\n\u0010\u0000\u0000\u0339"+ - "\u033a\u0005-\u0000\u0000\u033a\u036a\u0003r9\u0011\u033b\u033c\n\u000f"+ - "\u0000\u0000\u033c\u033d\u0005.\u0000\u0000\u033d\u036a\u0003r9\u0010"+ - "\u033e\u033f\n\u000e\u0000\u0000\u033f\u0340\u0005/\u0000\u0000\u0340"+ - "\u036a\u0003r9\u000f\u0341\u0342\n\r\u0000\u0000\u0342\u0343\u0005\u000f"+ - "\u0000\u0000\u0343\u0344\u0003r9\u0000\u0344\u0345\u0005\u0011\u0000\u0000"+ - "\u0345\u0346\u0003r9\u000e\u0346\u036a\u0001\u0000\u0000\u0000\u0347\u0348"+ - "\n\f\u0000\u0000\u0348\u0349\u0005\u000e\u0000\u0000\u0349\u036a\u0003"+ - "r9\f\u034a\u034b\n\u000b\u0000\u0000\u034b\u034c\u0003~?\u0000\u034c\u034d"+ - "\u0003r9\u000b\u034d\u036a\u0001\u0000\u0000\u0000\u034e\u0350\n-\u0000"+ - "\u0000\u034f\u0351\u0005\u0010\u0000\u0000\u0350\u034f\u0001\u0000\u0000"+ - "\u0000\u0350\u0351\u0001\u0000\u0000\u0000\u0351\u0352\u0001\u0000\u0000"+ - "\u0000\u0352\u0353\u0005\u0005\u0000\u0000\u0353\u0354\u0003p8\u0000\u0354"+ - "\u0355\u0005\u0006\u0000\u0000\u0355\u036a\u0001\u0000\u0000\u0000\u0356"+ - "\u0358\n,\u0000\u0000\u0357\u0359\u0005\u000f\u0000\u0000\u0358\u0357"+ - "\u0001\u0000\u0000\u0000\u0358\u0359\u0001\u0000\u0000\u0000\u0359\u035a"+ - "\u0001\u0000\u0000\u0000\u035a\u035c\u0005\u0013\u0000\u0000\u035b\u035d"+ - "\u0005\u001f\u0000\u0000\u035c\u035b\u0001\u0000\u0000\u0000\u035c\u035d"+ - "\u0001\u0000\u0000\u0000\u035d\u035e\u0001\u0000\u0000\u0000\u035e\u036a"+ - "\u0003\u008eG\u0000\u035f\u0360\n)\u0000\u0000\u0360\u036a\u0003l6\u0000"+ - "\u0361\u0362\n\'\u0000\u0000\u0362\u0363\u00049\u001e\u0000\u0363\u036a"+ - "\u0005\u0014\u0000\u0000\u0364\u0365\n&\u0000\u0000\u0365\u0366\u0004"+ - "9 \u0000\u0366\u036a\u0005\u0015\u0000\u0000\u0367\u0368\n\t\u0000\u0000"+ - "\u0368\u036a\u0003\u0082A\u0000\u0369\u0314\u0001\u0000\u0000\u0000\u0369"+ - "\u0317\u0001\u0000\u0000\u0000\u0369\u031a\u0001\u0000\u0000\u0000\u0369"+ - "\u031d\u0001\u0000\u0000\u0000\u0369\u0320\u0001\u0000\u0000\u0000\u0369"+ - "\u0323\u0001\u0000\u0000\u0000\u0369\u0326\u0001\u0000\u0000\u0000\u0369"+ - "\u0329\u0001\u0000\u0000\u0000\u0369\u032c\u0001\u0000\u0000\u0000\u0369"+ - "\u032f\u0001\u0000\u0000\u0000\u0369\u0332\u0001\u0000\u0000\u0000\u0369"+ - "\u0335\u0001\u0000\u0000\u0000\u0369\u0338\u0001\u0000\u0000\u0000\u0369"+ - "\u033b\u0001\u0000\u0000\u0000\u0369\u033e\u0001\u0000\u0000\u0000\u0369"+ - "\u0341\u0001\u0000\u0000\u0000\u0369\u0347\u0001\u0000\u0000\u0000\u0369"+ - "\u034a\u0001\u0000\u0000\u0000\u0369\u034e\u0001\u0000\u0000\u0000\u0369"+ - "\u0356\u0001\u0000\u0000\u0000\u0369\u035f\u0001\u0000\u0000\u0000\u0369"+ - "\u0361\u0001\u0000\u0000\u0000\u0369\u0364\u0001\u0000\u0000\u0000\u0369"+ - "\u0367\u0001\u0000\u0000\u0000\u036a\u036d\u0001\u0000\u0000\u0000\u036b"+ - "\u0369\u0001\u0000\u0000\u0000\u036b\u036c\u0001\u0000\u0000\u0000\u036c"+ - "s\u0001\u0000\u0000\u0000\u036d\u036b\u0001\u0000\u0000\u0000\u036e\u0372"+ - "\u0003\u0090H\u0000\u036f\u0372\u0003b1\u0000\u0370\u0372\u0003v;\u0000"+ - "\u0371\u036e\u0001\u0000\u0000\u0000\u0371\u036f\u0001\u0000\u0000\u0000"+ - "\u0371\u0370\u0001\u0000\u0000\u0000\u0372u\u0001\u0000\u0000\u0000\u0373"+ - "\u037f\u0005\t\u0000\u0000\u0374\u0379\u0003h4\u0000\u0375\u0376\u0005"+ - "\r\u0000\u0000\u0376\u0378\u0003h4\u0000\u0377\u0375\u0001\u0000\u0000"+ - "\u0000\u0378\u037b\u0001\u0000\u0000\u0000\u0379\u0377\u0001\u0000\u0000"+ - "\u0000\u0379\u037a\u0001\u0000\u0000\u0000\u037a\u037d\u0001\u0000\u0000"+ - "\u0000\u037b\u0379\u0001\u0000\u0000\u0000\u037c\u037e\u0005\r\u0000\u0000"+ - "\u037d\u037c\u0001\u0000\u0000\u0000\u037d\u037e\u0001\u0000\u0000\u0000"+ - "\u037e\u0380\u0001\u0000\u0000\u0000\u037f\u0374\u0001\u0000\u0000\u0000"+ - "\u037f\u0380\u0001\u0000\u0000\u0000\u0380\u0381\u0001\u0000\u0000\u0000"+ - "\u0381\u0382\u0005\u000b\u0000\u0000\u0382w\u0001\u0000\u0000\u0000\u0383"+ - "\u0399\u0003N\'\u0000\u0384\u0386\u0005k\u0000\u0000\u0385\u0384\u0001"+ - "\u0000\u0000\u0000\u0385\u0386\u0001\u0000\u0000\u0000\u0386\u0387\u0001"+ - "\u0000\u0000\u0000\u0387\u0389\u0005Y\u0000\u0000\u0388\u038a\u0005\u001a"+ - "\u0000\u0000\u0389\u0388\u0001\u0000\u0000\u0000\u0389\u038a\u0001\u0000"+ - "\u0000\u0000\u038a\u038b\u0001\u0000\u0000\u0000\u038b\u038d\u0005\u0007"+ - "\u0000\u0000\u038c\u038e\u0003X,\u0000\u038d\u038c\u0001\u0000\u0000\u0000"+ - "\u038d\u038e\u0001\u0000\u0000\u0000\u038e\u038f\u0001\u0000\u0000\u0000"+ - "\u038f\u0390\u0005\b\u0000\u0000\u0390\u0399\u0003^/\u0000\u0391\u0393"+ - "\u0005k\u0000\u0000\u0392\u0391\u0001\u0000\u0000\u0000\u0392\u0393\u0001"+ - "\u0000\u0000\u0000\u0393\u0394\u0001\u0000\u0000\u0000\u0394\u0395\u0003"+ - "z=\u0000\u0395\u0396\u0005<\u0000\u0000\u0396\u0397\u0003|>\u0000\u0397"+ - "\u0399\u0001\u0000\u0000\u0000\u0398\u0383\u0001\u0000\u0000\u0000\u0398"+ - "\u0385\u0001\u0000\u0000\u0000\u0398\u0392\u0001\u0000\u0000\u0000\u0399"+ - "y\u0001\u0000\u0000\u0000\u039a\u03a1\u0003\u0090H\u0000\u039b\u039d\u0005"+ - "\u0007\u0000\u0000\u039c\u039e\u0003X,\u0000\u039d\u039c\u0001\u0000\u0000"+ - "\u0000\u039d\u039e\u0001\u0000\u0000\u0000\u039e\u039f\u0001\u0000\u0000"+ - "\u0000\u039f\u03a1\u0005\b\u0000\u0000\u03a0\u039a\u0001\u0000\u0000\u0000"+ - "\u03a0\u039b\u0001\u0000\u0000\u0000\u03a1{\u0001\u0000\u0000\u0000\u03a2"+ - "\u03a5\u0003r9\u0000\u03a3\u03a5\u0003^/\u0000\u03a4\u03a2\u0001\u0000"+ - "\u0000\u0000\u03a4\u03a3\u0001\u0000\u0000\u0000\u03a5}\u0001\u0000\u0000"+ - "\u0000\u03a6\u03a7\u0007\u0005\u0000\u0000\u03a7\u007f\u0001\u0000\u0000"+ - "\u0000\u03a8\u03b0\u0005=\u0000\u0000\u03a9\u03b0\u0005>\u0000\u0000\u03aa"+ - "\u03b0\u0005x\u0000\u0000\u03ab\u03b0\u0003\u0082A\u0000\u03ac\u03b0\u0005"+ - "\u0004\u0000\u0000\u03ad\u03b0\u0003\u0086C\u0000\u03ae\u03b0\u0003\u0088"+ - "D\u0000\u03af\u03a8\u0001\u0000\u0000\u0000\u03af\u03a9\u0001\u0000\u0000"+ - "\u0000\u03af\u03aa\u0001\u0000\u0000\u0000\u03af\u03ab\u0001\u0000\u0000"+ - "\u0000\u03af\u03ac\u0001\u0000\u0000\u0000\u03af\u03ad\u0001\u0000\u0000"+ - "\u0000\u03af\u03ae\u0001\u0000\u0000\u0000\u03b0\u0081\u0001\u0000\u0000"+ - "\u0000\u03b1\u03b5\u0005y\u0000\u0000\u03b2\u03b4\u0003\u0084B\u0000\u03b3"+ - "\u03b2\u0001\u0000\u0000\u0000\u03b4\u03b7\u0001\u0000\u0000\u0000\u03b5"+ - "\u03b3\u0001\u0000\u0000\u0000\u03b5\u03b6\u0001\u0000\u0000\u0000\u03b6"+ - "\u03b8\u0001\u0000\u0000\u0000\u03b7\u03b5\u0001\u0000\u0000\u0000\u03b8"+ - "\u03b9\u0005y\u0000\u0000\u03b9\u0083\u0001\u0000\u0000\u0000\u03ba\u03c0"+ - "\u0005\u0080\u0000\u0000\u03bb\u03bc\u0005\u007f\u0000\u0000\u03bc\u03bd"+ - "\u0003r9\u0000\u03bd\u03be\u0005\n\u0000\u0000\u03be\u03c0\u0001\u0000"+ - "\u0000\u0000\u03bf\u03ba\u0001\u0000\u0000\u0000\u03bf\u03bb\u0001\u0000"+ - "\u0000\u0000\u03c0\u0085\u0001\u0000\u0000\u0000\u03c1\u03c2\u0007\u0006"+ - "\u0000\u0000\u03c2\u0087\u0001\u0000\u0000\u0000\u03c3\u03c4\u0007\u0007"+ - "\u0000\u0000\u03c4\u0089\u0001\u0000\u0000\u0000\u03c5\u03c6\u0004E\""+ - "\u0000\u03c6\u03c7\u0003\u0090H\u0000\u03c7\u03c8\u0003j5\u0000\u03c8"+ - "\u008b\u0001\u0000\u0000\u0000\u03c9\u03ca\u0004F#\u0000\u03ca\u03cb\u0003"+ - "\u0090H\u0000\u03cb\u03cc\u0003j5\u0000\u03cc\u008d\u0001\u0000\u0000"+ - "\u0000\u03cd\u03d0\u0003\u0090H\u0000\u03ce\u03d0\u0003\u0092I\u0000\u03cf"+ - "\u03cd\u0001\u0000\u0000\u0000\u03cf\u03ce\u0001\u0000\u0000\u0000\u03d0"+ - "\u008f\u0001\u0000\u0000\u0000\u03d1\u03d2\u0007\b\u0000\u0000\u03d2\u0091"+ - "\u0001\u0000\u0000\u0000\u03d3\u03d7\u0003\u0094J\u0000\u03d4\u03d7\u0005"+ - "=\u0000\u0000\u03d5\u03d7\u0005>\u0000\u0000\u03d6\u03d3\u0001\u0000\u0000"+ - "\u0000\u03d6\u03d4\u0001\u0000\u0000\u0000\u03d6\u03d5\u0001\u0000\u0000"+ - "\u0000\u03d7\u0093\u0001\u0000\u0000\u0000\u03d8\u0407\u0005H\u0000\u0000"+ - "\u03d9\u0407\u0005I\u0000\u0000\u03da\u0407\u0005J\u0000\u0000\u03db\u0407"+ - "\u0005K\u0000\u0000\u03dc\u0407\u0005L\u0000\u0000\u03dd\u0407\u0005M"+ - "\u0000\u0000\u03de\u0407\u0005N\u0000\u0000\u03df\u0407\u0005O\u0000\u0000"+ - "\u03e0\u0407\u0005P\u0000\u0000\u03e1\u0407\u0005Q\u0000\u0000\u03e2\u0407"+ - "\u0005R\u0000\u0000\u03e3\u0407\u0005S\u0000\u0000\u03e4\u0407\u0005T"+ - "\u0000\u0000\u03e5\u0407\u0005U\u0000\u0000\u03e6\u0407\u0005V\u0000\u0000"+ - "\u03e7\u0407\u0005W\u0000\u0000\u03e8\u0407\u0005X\u0000\u0000\u03e9\u0407"+ - "\u0005Y\u0000\u0000\u03ea\u0407\u0005Z\u0000\u0000\u03eb\u0407\u0005["+ - "\u0000\u0000\u03ec\u0407\u0005\\\u0000\u0000\u03ed\u0407\u0005]\u0000"+ - "\u0000\u03ee\u0407\u0005^\u0000\u0000\u03ef\u0407\u0005_\u0000\u0000\u03f0"+ - "\u0407\u0005`\u0000\u0000\u03f1\u0407\u0005a\u0000\u0000\u03f2\u0407\u0005"+ - "d\u0000\u0000\u03f3\u0407\u0005e\u0000\u0000\u03f4\u0407\u0005f\u0000"+ - "\u0000\u03f5\u0407\u0005g\u0000\u0000\u03f6\u0407\u0005h\u0000\u0000\u03f7"+ - "\u0407\u0005i\u0000\u0000\u03f8\u0407\u0005j\u0000\u0000\u03f9\u0407\u0005"+ - "n\u0000\u0000\u03fa\u0407\u0003\u0096K\u0000\u03fb\u0407\u0005q\u0000"+ - "\u0000\u03fc\u0407\u0005r\u0000\u0000\u03fd\u0407\u0005s\u0000\u0000\u03fe"+ - "\u0407\u0005t\u0000\u0000\u03ff\u0407\u0005u\u0000\u0000\u0400\u0407\u0005"+ - "v\u0000\u0000\u0401\u0407\u0005m\u0000\u0000\u0402\u0407\u0005k\u0000"+ - "\u0000\u0403\u0407\u0005l\u0000\u0000\u0404\u0407\u0005c\u0000\u0000\u0405"+ - "\u0407\u0005b\u0000\u0000\u0406\u03d8\u0001\u0000\u0000\u0000\u0406\u03d9"+ - "\u0001\u0000\u0000\u0000\u0406\u03da\u0001\u0000\u0000\u0000\u0406\u03db"+ - "\u0001\u0000\u0000\u0000\u0406\u03dc\u0001\u0000\u0000\u0000\u0406\u03dd"+ - "\u0001\u0000\u0000\u0000\u0406\u03de\u0001\u0000\u0000\u0000\u0406\u03df"+ - "\u0001\u0000\u0000\u0000\u0406\u03e0\u0001\u0000\u0000\u0000\u0406\u03e1"+ - "\u0001\u0000\u0000\u0000\u0406\u03e2\u0001\u0000\u0000\u0000\u0406\u03e3"+ - "\u0001\u0000\u0000\u0000\u0406\u03e4\u0001\u0000\u0000\u0000\u0406\u03e5"+ - "\u0001\u0000\u0000\u0000\u0406\u03e6\u0001\u0000\u0000\u0000\u0406\u03e7"+ - "\u0001\u0000\u0000\u0000\u0406\u03e8\u0001\u0000\u0000\u0000\u0406\u03e9"+ - "\u0001\u0000\u0000\u0000\u0406\u03ea\u0001\u0000\u0000\u0000\u0406\u03eb"+ - "\u0001\u0000\u0000\u0000\u0406\u03ec\u0001\u0000\u0000\u0000\u0406\u03ed"+ - "\u0001\u0000\u0000\u0000\u0406\u03ee\u0001\u0000\u0000\u0000\u0406\u03ef"+ - "\u0001\u0000\u0000\u0000\u0406\u03f0\u0001\u0000\u0000\u0000\u0406\u03f1"+ - "\u0001\u0000\u0000\u0000\u0406\u03f2\u0001\u0000\u0000\u0000\u0406\u03f3"+ - "\u0001\u0000\u0000\u0000\u0406\u03f4\u0001\u0000\u0000\u0000\u0406\u03f5"+ - "\u0001\u0000\u0000\u0000\u0406\u03f6\u0001\u0000\u0000\u0000\u0406\u03f7"+ - "\u0001\u0000\u0000\u0000\u0406\u03f8\u0001\u0000\u0000\u0000\u0406\u03f9"+ - "\u0001\u0000\u0000\u0000\u0406\u03fa\u0001\u0000\u0000\u0000\u0406\u03fb"+ - "\u0001\u0000\u0000\u0000\u0406\u03fc\u0001\u0000\u0000\u0000\u0406\u03fd"+ - "\u0001\u0000\u0000\u0000\u0406\u03fe\u0001\u0000\u0000\u0000\u0406\u03ff"+ - "\u0001\u0000\u0000\u0000\u0406\u0400\u0001\u0000\u0000\u0000\u0406\u0401"+ - "\u0001\u0000\u0000\u0000\u0406\u0402\u0001\u0000\u0000\u0000\u0406\u0403"+ - "\u0001\u0000\u0000\u0000\u0406\u0404\u0001\u0000\u0000\u0000\u0406\u0405"+ - "\u0001\u0000\u0000\u0000\u0407\u0095\u0001\u0000\u0000\u0000\u0408\u0409"+ - "\u0007\t\u0000\u0000\u0409\u0097\u0001\u0000\u0000\u0000\u040a\u040f\u0005"+ - "\f\u0000\u0000\u040b\u040f\u0005\u0000\u0000\u0001\u040c\u040f\u0004L"+ - "$\u0000\u040d\u040f\u0004L%\u0000\u040e\u040a\u0001\u0000\u0000\u0000"+ - "\u040e\u040b\u0001\u0000\u0000\u0000\u040e\u040c\u0001\u0000\u0000\u0000"+ - "\u040e\u040d\u0001\u0000\u0000\u0000\u040f\u0099\u0001\u0000\u0000\u0000"+ - "\u0410\u0417\u0003\u0000\u0000\u0000\u0411\u0413\u0003\u009eO\u0000\u0412"+ - "\u0411\u0001\u0000\u0000\u0000\u0413\u0414\u0001\u0000\u0000\u0000\u0414"+ - "\u0415\u0001\u0000\u0000\u0000\u0414\u0412\u0001\u0000\u0000\u0000\u0415"+ - "\u0417\u0001\u0000\u0000\u0000\u0416\u0410\u0001\u0000\u0000\u0000\u0416"+ - "\u0412\u0001\u0000\u0000\u0000\u0417\u009b\u0001\u0000\u0000\u0000\u0418"+ - "\u041a\u0003\u0002\u0001\u0000\u0419\u0418\u0001\u0000\u0000\u0000\u041a"+ - "\u041b\u0001\u0000\u0000\u0000\u041b\u041c\u0001\u0000\u0000\u0000\u041b"+ - "\u0419\u0001\u0000\u0000\u0000\u041c\u041f\u0001\u0000\u0000\u0000\u041d"+ - "\u041f\u0005\u0000\u0000\u0001\u041e\u0419\u0001\u0000\u0000\u0000\u041e"+ - "\u041d\u0001\u0000\u0000\u0000\u041f\u009d\u0001\u0000\u0000\u0000\u0420"+ - "\u0421\t\u0000\u0000\u0000\u0421\u009f\u0001\u0000\u0000\u0000u\u00a1"+ - "\u00a4\u00be\u00c2\u00c9\u00cf\u00d3\u00da\u00e2\u00e7\u00e9\u00f2\u00f6"+ - "\u00fe\u0103\u010c\u0114\u0118\u011d\u0128\u012e\u013d\u0151\u0155\u0159"+ - "\u0161\u016a\u016f\u0177\u017c\u0181\u0188\u018f\u0196\u01a8\u01ac\u01ae"+ - "\u01b5\u01bb\u01c0\u01cf\u01d2\u01d7\u01da\u01e5\u01e9\u01ee\u01f9\u01ff"+ - "\u0208\u020a\u0213\u0217\u021d\u0220\u0223\u0228\u022e\u0231\u0239\u023c"+ - "\u0241\u0246\u024d\u0252\u0255\u025a\u0261\u0268\u0271\u0275\u027a\u027f"+ - "\u0285\u0289\u0298\u029b\u02a0\u02b1\u02b4\u02bd\u02c5\u02c9\u02cb\u02d0"+ - "\u02d4\u02db\u02e2\u0312\u0350\u0358\u035c\u0369\u036b\u0371\u0379\u037d"+ - "\u037f\u0385\u0389\u038d\u0392\u0398\u039d\u03a0\u03a4\u03af\u03b5\u03bf"+ - "\u03cf\u03d6\u0406\u040e\u0414\u0416\u041b\u041e"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.tokens b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.tokens deleted file mode 100644 index 71b9e418d..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParser.tokens +++ /dev/null @@ -1,230 +0,0 @@ -HashBangLine=1 -MultiLineComment=2 -SingleLineComment=3 -RegularExpressionLiteral=4 -OpenBracket=5 -CloseBracket=6 -OpenParen=7 -CloseParen=8 -OpenBrace=9 -TemplateCloseBrace=10 -CloseBrace=11 -SemiColon=12 -Comma=13 -Assign=14 -QuestionMark=15 -QuestionMarkDot=16 -Colon=17 -Ellipsis=18 -Dot=19 -PlusPlus=20 -MinusMinus=21 -Plus=22 -Minus=23 -BitNot=24 -Not=25 -Multiply=26 -Divide=27 -Modulus=28 -Power=29 -NullCoalesce=30 -Hashtag=31 -RightShiftArithmetic=32 -LeftShiftArithmetic=33 -RightShiftLogical=34 -LessThan=35 -MoreThan=36 -LessThanEquals=37 -GreaterThanEquals=38 -Equals_=39 -NotEquals=40 -IdentityEquals=41 -IdentityNotEquals=42 -BitAnd=43 -BitXOr=44 -BitOr=45 -And=46 -Or=47 -MultiplyAssign=48 -DivideAssign=49 -ModulusAssign=50 -PlusAssign=51 -MinusAssign=52 -LeftShiftArithmeticAssign=53 -RightShiftArithmeticAssign=54 -RightShiftLogicalAssign=55 -BitAndAssign=56 -BitXorAssign=57 -BitOrAssign=58 -PowerAssign=59 -ARROW=60 -NullLiteral=61 -BooleanLiteral=62 -DecimalLiteral=63 -HexIntegerLiteral=64 -OctalIntegerLiteral=65 -OctalIntegerLiteral2=66 -BinaryIntegerLiteral=67 -BigHexIntegerLiteral=68 -BigOctalIntegerLiteral=69 -BigBinaryIntegerLiteral=70 -BigDecimalIntegerLiteral=71 -Break=72 -Do=73 -Instanceof=74 -Typeof=75 -Case=76 -Else=77 -New=78 -Var=79 -Catch=80 -Finally=81 -Return=82 -Void=83 -Continue=84 -For=85 -Switch=86 -While=87 -Debugger=88 -Function_=89 -This=90 -With=91 -Default=92 -If=93 -Throw=94 -Delete=95 -In=96 -Try=97 -As=98 -From=99 -Class=100 -Enum=101 -Extends=102 -Super=103 -Const=104 -Export=105 -Import=106 -Async=107 -Await=108 -Yield=109 -Implements=110 -StrictLet=111 -NonStrictLet=112 -Private=113 -Public=114 -Interface=115 -Package=116 -Protected=117 -Static=118 -Identifier=119 -StringLiteral=120 -BackTick=121 -WhiteSpaces=122 -LineTerminator=123 -HtmlComment=124 -CDataComment=125 -UnexpectedCharacter=126 -TemplateStringStartExpression=127 -TemplateStringAtom=128 -'['=5 -']'=6 -'('=7 -')'=8 -'{'=9 -'}'=11 -';'=12 -','=13 -'='=14 -'?'=15 -'?.'=16 -':'=17 -'...'=18 -'.'=19 -'++'=20 -'--'=21 -'+'=22 -'-'=23 -'~'=24 -'!'=25 -'*'=26 -'/'=27 -'%'=28 -'**'=29 -'??'=30 -'#'=31 -'>>'=32 -'<<'=33 -'>>>'=34 -'<'=35 -'>'=36 -'<='=37 -'>='=38 -'=='=39 -'!='=40 -'==='=41 -'!=='=42 -'&'=43 -'^'=44 -'|'=45 -'&&'=46 -'||'=47 -'*='=48 -'/='=49 -'%='=50 -'+='=51 -'-='=52 -'<<='=53 -'>>='=54 -'>>>='=55 -'&='=56 -'^='=57 -'|='=58 -'**='=59 -'=>'=60 -'null'=61 -'break'=72 -'do'=73 -'instanceof'=74 -'typeof'=75 -'case'=76 -'else'=77 -'new'=78 -'var'=79 -'catch'=80 -'finally'=81 -'return'=82 -'void'=83 -'continue'=84 -'for'=85 -'switch'=86 -'while'=87 -'debugger'=88 -'function'=89 -'this'=90 -'with'=91 -'default'=92 -'if'=93 -'throw'=94 -'delete'=95 -'in'=96 -'try'=97 -'as'=98 -'from'=99 -'class'=100 -'enum'=101 -'extends'=102 -'super'=103 -'const'=104 -'export'=105 -'import'=106 -'async'=107 -'await'=108 -'yield'=109 -'implements'=110 -'private'=113 -'public'=114 -'interface'=115 -'package'=116 -'protected'=117 -'static'=118 -'${'=127 diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserBase.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserBase.java deleted file mode 100644 index 4fea4d83d..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserBase.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.sudu.experiments.parser.javascript.gen; - -import org.antlr.v4.runtime.*; - -/** - * All parser methods that used in grammar (p, prev, notLineTerminator, etc.) - * should start with lower case char similar to parser rules. - */ -public abstract class JavaScriptParserBase extends Parser -{ - public JavaScriptParserBase(TokenStream input) { - super(input); - } - - /** - * Short form for prev(String str) - */ - protected boolean p(String str) { - return prev(str); - } - - /** - * Whether the previous token value equals to @param str - */ - protected boolean prev(String str) { - return _input.LT(-1).getText().equals(str); - } - - /** - * Short form for next(String str) - */ - protected boolean n(String str) { - return next(str); - } - - /** - * Whether the next token value equals to @param str - */ - protected boolean next(String str) { - return _input.LT(1).getText().equals(str); - } - - protected boolean notLineTerminator() { - return !here(JavaScriptParser.LineTerminator); - } - - protected boolean notOpenBraceAndNotFunction() { - int nextTokenType = _input.LT(1).getType(); - return nextTokenType != JavaScriptParser.OpenBrace && nextTokenType != JavaScriptParser.Function_; - } - - protected boolean closeBrace() { - return _input.LT(1).getType() == JavaScriptParser.CloseBrace; - } - - /** - * Returns {@code true} iff on the current index of the parser's - * token stream a token of the given {@code type} exists on the - * {@code HIDDEN} channel. - * - * @param type - * the type of the token on the {@code HIDDEN} channel - * to check. - * - * @return {@code true} iff on the current index of the parser's - * token stream a token of the given {@code type} exists on the - * {@code HIDDEN} channel. - */ - private boolean here(final int type) { - - // Get the token ahead of the current index. - int possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 1; - Token ahead = _input.get(possibleIndexEosToken); - - // Check if the token resides on the HIDDEN channel and if it's of the - // provided type. - return (ahead.getChannel() == Lexer.HIDDEN) && (ahead.getType() == type); - } - - /** - * Returns {@code true} iff on the current index of the parser's - * token stream a token exists on the {@code HIDDEN} channel which - * either is a line terminator, or is a multi line comment that - * contains a line terminator. - * - * @return {@code true} iff on the current index of the parser's - * token stream a token exists on the {@code HIDDEN} channel which - * either is a line terminator, or is a multi line comment that - * contains a line terminator. - */ - protected boolean lineTerminatorAhead() { - - // Get the token ahead of the current index. - int possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 1; - Token ahead = _input.get(possibleIndexEosToken); - - if (ahead.getChannel() != Lexer.HIDDEN) { - // We're only interested in tokens on the HIDDEN channel. - return false; - } - - if (ahead.getType() == JavaScriptParser.LineTerminator) { - // There is definitely a line terminator ahead. - return true; - } - - if (ahead.getType() == JavaScriptParser.WhiteSpaces) { - // Get the token ahead of the current whitespaces. - possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 2; - ahead = _input.get(possibleIndexEosToken); - } - - // Get the token's text and type. - String text = ahead.getText(); - int type = ahead.getType(); - - // Check if the token is, or contains a line terminator. - return (type == JavaScriptParser.MultiLineComment && (text.contains("\r") || text.contains("\n"))) || - (type == JavaScriptParser.LineTerminator); - } -} diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserBaseListener.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserBaseListener.java deleted file mode 100644 index ab5821eb5..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserBaseListener.java +++ /dev/null @@ -1,1833 +0,0 @@ -// Generated from parser-generator/src/main/resources/grammar/javascript/JavaScriptParser.g4 by ANTLR 4.13.1 -package org.sudu.experiments.parser.javascript.gen; - -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.tree.ErrorNode; -import org.antlr.v4.runtime.tree.TerminalNode; - -/** - * This class provides an empty implementation of {@link JavaScriptParserListener}, - * which can be extended to create a listener which only needs to handle a subset - * of the available methods. - */ -@SuppressWarnings("CheckReturnValue") -public class JavaScriptParserBaseListener implements JavaScriptParserListener { - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterProgram(JavaScriptParser.ProgramContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitProgram(JavaScriptParser.ProgramContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSourceElement(JavaScriptParser.SourceElementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSourceElement(JavaScriptParser.SourceElementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStatement(JavaScriptParser.StatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStatement(JavaScriptParser.StatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBlock(JavaScriptParser.BlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBlock(JavaScriptParser.BlockContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStatementList(JavaScriptParser.StatementListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStatementList(JavaScriptParser.StatementListContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportStatement(JavaScriptParser.ImportStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportStatement(JavaScriptParser.ImportStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportFromBlock(JavaScriptParser.ImportFromBlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportFromBlock(JavaScriptParser.ImportFromBlockContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModuleItems(JavaScriptParser.ModuleItemsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModuleItems(JavaScriptParser.ModuleItemsContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportDefault(JavaScriptParser.ImportDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportDefault(JavaScriptParser.ImportDefaultContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportNamespace(JavaScriptParser.ImportNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportNamespace(JavaScriptParser.ImportNamespaceContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportFrom(JavaScriptParser.ImportFromContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportFrom(JavaScriptParser.ImportFromContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAliasName(JavaScriptParser.AliasNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAliasName(JavaScriptParser.AliasNameContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExportDeclaration(JavaScriptParser.ExportDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExportDeclaration(JavaScriptParser.ExportDeclarationContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExportDefaultDeclaration(JavaScriptParser.ExportDefaultDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExportDefaultDeclaration(JavaScriptParser.ExportDefaultDeclarationContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExportFromBlock(JavaScriptParser.ExportFromBlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExportFromBlock(JavaScriptParser.ExportFromBlockContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDeclaration(JavaScriptParser.DeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDeclaration(JavaScriptParser.DeclarationContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariableStatement(JavaScriptParser.VariableStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariableStatement(JavaScriptParser.VariableStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariableDeclarationList(JavaScriptParser.VariableDeclarationListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariableDeclarationList(JavaScriptParser.VariableDeclarationListContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariableDeclaration(JavaScriptParser.VariableDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariableDeclaration(JavaScriptParser.VariableDeclarationContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEmptyStatement_(JavaScriptParser.EmptyStatement_Context ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEmptyStatement_(JavaScriptParser.EmptyStatement_Context ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExpressionStatement(JavaScriptParser.ExpressionStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExpressionStatement(JavaScriptParser.ExpressionStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIfStatement(JavaScriptParser.IfStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIfStatement(JavaScriptParser.IfStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDoStatement(JavaScriptParser.DoStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDoStatement(JavaScriptParser.DoStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWhileStatement(JavaScriptParser.WhileStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWhileStatement(JavaScriptParser.WhileStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterForStatement(JavaScriptParser.ForStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitForStatement(JavaScriptParser.ForStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterForInStatement(JavaScriptParser.ForInStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitForInStatement(JavaScriptParser.ForInStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterForOfStatement(JavaScriptParser.ForOfStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitForOfStatement(JavaScriptParser.ForOfStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVarModifier(JavaScriptParser.VarModifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVarModifier(JavaScriptParser.VarModifierContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterContinueStatement(JavaScriptParser.ContinueStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitContinueStatement(JavaScriptParser.ContinueStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBreakStatement(JavaScriptParser.BreakStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBreakStatement(JavaScriptParser.BreakStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReturnStatement(JavaScriptParser.ReturnStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReturnStatement(JavaScriptParser.ReturnStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterYieldStatement(JavaScriptParser.YieldStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitYieldStatement(JavaScriptParser.YieldStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWithStatement(JavaScriptParser.WithStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWithStatement(JavaScriptParser.WithStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSwitchStatement(JavaScriptParser.SwitchStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSwitchStatement(JavaScriptParser.SwitchStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCaseBlock(JavaScriptParser.CaseBlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCaseBlock(JavaScriptParser.CaseBlockContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCaseClauses(JavaScriptParser.CaseClausesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCaseClauses(JavaScriptParser.CaseClausesContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCaseClause(JavaScriptParser.CaseClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCaseClause(JavaScriptParser.CaseClauseContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDefaultClause(JavaScriptParser.DefaultClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDefaultClause(JavaScriptParser.DefaultClauseContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLabelledStatement(JavaScriptParser.LabelledStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLabelledStatement(JavaScriptParser.LabelledStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterThrowStatement(JavaScriptParser.ThrowStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitThrowStatement(JavaScriptParser.ThrowStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTryStatement(JavaScriptParser.TryStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTryStatement(JavaScriptParser.TryStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCatchProduction(JavaScriptParser.CatchProductionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCatchProduction(JavaScriptParser.CatchProductionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFinallyProduction(JavaScriptParser.FinallyProductionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFinallyProduction(JavaScriptParser.FinallyProductionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDebuggerStatement(JavaScriptParser.DebuggerStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDebuggerStatement(JavaScriptParser.DebuggerStatementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionDeclaration(JavaScriptParser.FunctionDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionDeclaration(JavaScriptParser.FunctionDeclarationContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterClassDeclaration(JavaScriptParser.ClassDeclarationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClassDeclaration(JavaScriptParser.ClassDeclarationContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterClassTail(JavaScriptParser.ClassTailContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClassTail(JavaScriptParser.ClassTailContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterClassElement(JavaScriptParser.ClassElementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClassElement(JavaScriptParser.ClassElementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMethodDefinition(JavaScriptParser.MethodDefinitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMethodDefinition(JavaScriptParser.MethodDefinitionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFormalParameterList(JavaScriptParser.FormalParameterListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFormalParameterList(JavaScriptParser.FormalParameterListContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFormalParameterArg(JavaScriptParser.FormalParameterArgContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFormalParameterArg(JavaScriptParser.FormalParameterArgContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLastFormalParameterArg(JavaScriptParser.LastFormalParameterArgContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLastFormalParameterArg(JavaScriptParser.LastFormalParameterArgContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionBody(JavaScriptParser.FunctionBodyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionBody(JavaScriptParser.FunctionBodyContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSourceElements(JavaScriptParser.SourceElementsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSourceElements(JavaScriptParser.SourceElementsContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrayLiteral(JavaScriptParser.ArrayLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrayLiteral(JavaScriptParser.ArrayLiteralContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterElementList(JavaScriptParser.ElementListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitElementList(JavaScriptParser.ElementListContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrayElement(JavaScriptParser.ArrayElementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrayElement(JavaScriptParser.ArrayElementContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyExpressionAssignment(JavaScriptParser.PropertyExpressionAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyExpressionAssignment(JavaScriptParser.PropertyExpressionAssignmentContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComputedPropertyExpressionAssignment(JavaScriptParser.ComputedPropertyExpressionAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComputedPropertyExpressionAssignment(JavaScriptParser.ComputedPropertyExpressionAssignmentContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionProperty(JavaScriptParser.FunctionPropertyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionProperty(JavaScriptParser.FunctionPropertyContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyGetter(JavaScriptParser.PropertyGetterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyGetter(JavaScriptParser.PropertyGetterContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertySetter(JavaScriptParser.PropertySetterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertySetter(JavaScriptParser.PropertySetterContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyShorthand(JavaScriptParser.PropertyShorthandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyShorthand(JavaScriptParser.PropertyShorthandContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyName(JavaScriptParser.PropertyNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyName(JavaScriptParser.PropertyNameContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArguments(JavaScriptParser.ArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArguments(JavaScriptParser.ArgumentsContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArgument(JavaScriptParser.ArgumentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArgument(JavaScriptParser.ArgumentContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExpressionSequence(JavaScriptParser.ExpressionSequenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExpressionSequence(JavaScriptParser.ExpressionSequenceContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTemplateStringExpression(JavaScriptParser.TemplateStringExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTemplateStringExpression(JavaScriptParser.TemplateStringExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTernaryExpression(JavaScriptParser.TernaryExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTernaryExpression(JavaScriptParser.TernaryExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLogicalAndExpression(JavaScriptParser.LogicalAndExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLogicalAndExpression(JavaScriptParser.LogicalAndExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPowerExpression(JavaScriptParser.PowerExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPowerExpression(JavaScriptParser.PowerExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPreIncrementExpression(JavaScriptParser.PreIncrementExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPreIncrementExpression(JavaScriptParser.PreIncrementExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterObjectLiteralExpression(JavaScriptParser.ObjectLiteralExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitObjectLiteralExpression(JavaScriptParser.ObjectLiteralExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMetaExpression(JavaScriptParser.MetaExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMetaExpression(JavaScriptParser.MetaExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInExpression(JavaScriptParser.InExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInExpression(JavaScriptParser.InExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLogicalOrExpression(JavaScriptParser.LogicalOrExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLogicalOrExpression(JavaScriptParser.LogicalOrExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterOptionalChainExpression(JavaScriptParser.OptionalChainExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitOptionalChainExpression(JavaScriptParser.OptionalChainExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNotExpression(JavaScriptParser.NotExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNotExpression(JavaScriptParser.NotExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPreDecreaseExpression(JavaScriptParser.PreDecreaseExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPreDecreaseExpression(JavaScriptParser.PreDecreaseExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArgumentsExpression(JavaScriptParser.ArgumentsExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArgumentsExpression(JavaScriptParser.ArgumentsExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAwaitExpression(JavaScriptParser.AwaitExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAwaitExpression(JavaScriptParser.AwaitExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterThisExpression(JavaScriptParser.ThisExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitThisExpression(JavaScriptParser.ThisExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionExpression(JavaScriptParser.FunctionExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionExpression(JavaScriptParser.FunctionExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnaryMinusExpression(JavaScriptParser.UnaryMinusExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnaryMinusExpression(JavaScriptParser.UnaryMinusExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAssignmentExpression(JavaScriptParser.AssignmentExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAssignmentExpression(JavaScriptParser.AssignmentExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPostDecreaseExpression(JavaScriptParser.PostDecreaseExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPostDecreaseExpression(JavaScriptParser.PostDecreaseExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTypeofExpression(JavaScriptParser.TypeofExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTypeofExpression(JavaScriptParser.TypeofExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInstanceofExpression(JavaScriptParser.InstanceofExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInstanceofExpression(JavaScriptParser.InstanceofExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnaryPlusExpression(JavaScriptParser.UnaryPlusExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnaryPlusExpression(JavaScriptParser.UnaryPlusExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDeleteExpression(JavaScriptParser.DeleteExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDeleteExpression(JavaScriptParser.DeleteExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportExpression(JavaScriptParser.ImportExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportExpression(JavaScriptParser.ImportExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEqualityExpression(JavaScriptParser.EqualityExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEqualityExpression(JavaScriptParser.EqualityExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBitXOrExpression(JavaScriptParser.BitXOrExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBitXOrExpression(JavaScriptParser.BitXOrExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSuperExpression(JavaScriptParser.SuperExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSuperExpression(JavaScriptParser.SuperExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultiplicativeExpression(JavaScriptParser.MultiplicativeExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultiplicativeExpression(JavaScriptParser.MultiplicativeExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBitShiftExpression(JavaScriptParser.BitShiftExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBitShiftExpression(JavaScriptParser.BitShiftExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterParenthesizedExpression(JavaScriptParser.ParenthesizedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitParenthesizedExpression(JavaScriptParser.ParenthesizedExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdditiveExpression(JavaScriptParser.AdditiveExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdditiveExpression(JavaScriptParser.AdditiveExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRelationalExpression(JavaScriptParser.RelationalExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRelationalExpression(JavaScriptParser.RelationalExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPostIncrementExpression(JavaScriptParser.PostIncrementExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPostIncrementExpression(JavaScriptParser.PostIncrementExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterYieldExpression(JavaScriptParser.YieldExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitYieldExpression(JavaScriptParser.YieldExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBitNotExpression(JavaScriptParser.BitNotExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBitNotExpression(JavaScriptParser.BitNotExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNewExpression(JavaScriptParser.NewExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNewExpression(JavaScriptParser.NewExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLiteralExpression(JavaScriptParser.LiteralExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLiteralExpression(JavaScriptParser.LiteralExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrayLiteralExpression(JavaScriptParser.ArrayLiteralExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrayLiteralExpression(JavaScriptParser.ArrayLiteralExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMemberDotExpression(JavaScriptParser.MemberDotExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMemberDotExpression(JavaScriptParser.MemberDotExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterClassExpression(JavaScriptParser.ClassExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClassExpression(JavaScriptParser.ClassExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMemberIndexExpression(JavaScriptParser.MemberIndexExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMemberIndexExpression(JavaScriptParser.MemberIndexExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierExpression(JavaScriptParser.IdentifierExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierExpression(JavaScriptParser.IdentifierExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBitAndExpression(JavaScriptParser.BitAndExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBitAndExpression(JavaScriptParser.BitAndExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBitOrExpression(JavaScriptParser.BitOrExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBitOrExpression(JavaScriptParser.BitOrExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAssignmentOperatorExpression(JavaScriptParser.AssignmentOperatorExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAssignmentOperatorExpression(JavaScriptParser.AssignmentOperatorExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVoidExpression(JavaScriptParser.VoidExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVoidExpression(JavaScriptParser.VoidExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCoalesceExpression(JavaScriptParser.CoalesceExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCoalesceExpression(JavaScriptParser.CoalesceExpressionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAssignable(JavaScriptParser.AssignableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAssignable(JavaScriptParser.AssignableContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterObjectLiteral(JavaScriptParser.ObjectLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitObjectLiteral(JavaScriptParser.ObjectLiteralContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionDecl(JavaScriptParser.FunctionDeclContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionDecl(JavaScriptParser.FunctionDeclContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnonymousFunctionDecl(JavaScriptParser.AnonymousFunctionDeclContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnonymousFunctionDecl(JavaScriptParser.AnonymousFunctionDeclContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrowFunction(JavaScriptParser.ArrowFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrowFunction(JavaScriptParser.ArrowFunctionContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrowFunctionParameters(JavaScriptParser.ArrowFunctionParametersContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrowFunctionParameters(JavaScriptParser.ArrowFunctionParametersContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrowFunctionBody(JavaScriptParser.ArrowFunctionBodyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrowFunctionBody(JavaScriptParser.ArrowFunctionBodyContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAssignmentOperator(JavaScriptParser.AssignmentOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAssignmentOperator(JavaScriptParser.AssignmentOperatorContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLiteral(JavaScriptParser.LiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLiteral(JavaScriptParser.LiteralContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTemplateStringLiteral(JavaScriptParser.TemplateStringLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTemplateStringLiteral(JavaScriptParser.TemplateStringLiteralContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTemplateStringAtom(JavaScriptParser.TemplateStringAtomContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTemplateStringAtom(JavaScriptParser.TemplateStringAtomContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNumericLiteral(JavaScriptParser.NumericLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNumericLiteral(JavaScriptParser.NumericLiteralContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBigintLiteral(JavaScriptParser.BigintLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBigintLiteral(JavaScriptParser.BigintLiteralContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGetter(JavaScriptParser.GetterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGetter(JavaScriptParser.GetterContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetter(JavaScriptParser.SetterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetter(JavaScriptParser.SetterContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierName(JavaScriptParser.IdentifierNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierName(JavaScriptParser.IdentifierNameContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifier(JavaScriptParser.IdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifier(JavaScriptParser.IdentifierContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReservedWord(JavaScriptParser.ReservedWordContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReservedWord(JavaScriptParser.ReservedWordContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterKeyword(JavaScriptParser.KeywordContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitKeyword(JavaScriptParser.KeywordContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLet_(JavaScriptParser.Let_Context ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLet_(JavaScriptParser.Let_Context ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEos(JavaScriptParser.EosContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEos(JavaScriptParser.EosContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterProgramOrAny(JavaScriptParser.ProgramOrAnyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitProgramOrAny(JavaScriptParser.ProgramOrAnyContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnknownInterval(JavaScriptParser.UnknownIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnknownInterval(JavaScriptParser.UnknownIntervalContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAny(JavaScriptParser.AnyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAny(JavaScriptParser.AnyContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

- */ - @Override public void visitErrorNode(ErrorNode node) { } -} \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserListener.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserListener.java deleted file mode 100644 index 20ea3a6cd..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/gen/JavaScriptParserListener.java +++ /dev/null @@ -1,1653 +0,0 @@ -// Generated from parser-generator/src/main/resources/grammar/javascript/JavaScriptParser.g4 by ANTLR 4.13.1 -package org.sudu.experiments.parser.javascript.gen; -import org.antlr.v4.runtime.tree.ParseTreeListener; - -/** - * This interface defines a complete listener for a parse tree produced by - * {@link JavaScriptParser}. - */ -public interface JavaScriptParserListener extends ParseTreeListener { - /** - * Enter a parse tree produced by {@link JavaScriptParser#program}. - * @param ctx the parse tree - */ - void enterProgram(JavaScriptParser.ProgramContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#program}. - * @param ctx the parse tree - */ - void exitProgram(JavaScriptParser.ProgramContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#sourceElement}. - * @param ctx the parse tree - */ - void enterSourceElement(JavaScriptParser.SourceElementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#sourceElement}. - * @param ctx the parse tree - */ - void exitSourceElement(JavaScriptParser.SourceElementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#statement}. - * @param ctx the parse tree - */ - void enterStatement(JavaScriptParser.StatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#statement}. - * @param ctx the parse tree - */ - void exitStatement(JavaScriptParser.StatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#block}. - * @param ctx the parse tree - */ - void enterBlock(JavaScriptParser.BlockContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#block}. - * @param ctx the parse tree - */ - void exitBlock(JavaScriptParser.BlockContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#statementList}. - * @param ctx the parse tree - */ - void enterStatementList(JavaScriptParser.StatementListContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#statementList}. - * @param ctx the parse tree - */ - void exitStatementList(JavaScriptParser.StatementListContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#importStatement}. - * @param ctx the parse tree - */ - void enterImportStatement(JavaScriptParser.ImportStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#importStatement}. - * @param ctx the parse tree - */ - void exitImportStatement(JavaScriptParser.ImportStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#importFromBlock}. - * @param ctx the parse tree - */ - void enterImportFromBlock(JavaScriptParser.ImportFromBlockContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#importFromBlock}. - * @param ctx the parse tree - */ - void exitImportFromBlock(JavaScriptParser.ImportFromBlockContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#moduleItems}. - * @param ctx the parse tree - */ - void enterModuleItems(JavaScriptParser.ModuleItemsContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#moduleItems}. - * @param ctx the parse tree - */ - void exitModuleItems(JavaScriptParser.ModuleItemsContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#importDefault}. - * @param ctx the parse tree - */ - void enterImportDefault(JavaScriptParser.ImportDefaultContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#importDefault}. - * @param ctx the parse tree - */ - void exitImportDefault(JavaScriptParser.ImportDefaultContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#importNamespace}. - * @param ctx the parse tree - */ - void enterImportNamespace(JavaScriptParser.ImportNamespaceContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#importNamespace}. - * @param ctx the parse tree - */ - void exitImportNamespace(JavaScriptParser.ImportNamespaceContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#importFrom}. - * @param ctx the parse tree - */ - void enterImportFrom(JavaScriptParser.ImportFromContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#importFrom}. - * @param ctx the parse tree - */ - void exitImportFrom(JavaScriptParser.ImportFromContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#aliasName}. - * @param ctx the parse tree - */ - void enterAliasName(JavaScriptParser.AliasNameContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#aliasName}. - * @param ctx the parse tree - */ - void exitAliasName(JavaScriptParser.AliasNameContext ctx); - - /** - * Enter a parse tree produced by the {@code ExportDeclaration} - * labeled alternative in {@link JavaScriptParser#exportStatement}. - * @param ctx the parse tree - */ - void enterExportDeclaration(JavaScriptParser.ExportDeclarationContext ctx); - /** - * Exit a parse tree produced by the {@code ExportDeclaration} - * labeled alternative in {@link JavaScriptParser#exportStatement}. - * @param ctx the parse tree - */ - void exitExportDeclaration(JavaScriptParser.ExportDeclarationContext ctx); - - /** - * Enter a parse tree produced by the {@code ExportDefaultDeclaration} - * labeled alternative in {@link JavaScriptParser#exportStatement}. - * @param ctx the parse tree - */ - void enterExportDefaultDeclaration(JavaScriptParser.ExportDefaultDeclarationContext ctx); - /** - * Exit a parse tree produced by the {@code ExportDefaultDeclaration} - * labeled alternative in {@link JavaScriptParser#exportStatement}. - * @param ctx the parse tree - */ - void exitExportDefaultDeclaration(JavaScriptParser.ExportDefaultDeclarationContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#exportFromBlock}. - * @param ctx the parse tree - */ - void enterExportFromBlock(JavaScriptParser.ExportFromBlockContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#exportFromBlock}. - * @param ctx the parse tree - */ - void exitExportFromBlock(JavaScriptParser.ExportFromBlockContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#declaration}. - * @param ctx the parse tree - */ - void enterDeclaration(JavaScriptParser.DeclarationContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#declaration}. - * @param ctx the parse tree - */ - void exitDeclaration(JavaScriptParser.DeclarationContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#variableStatement}. - * @param ctx the parse tree - */ - void enterVariableStatement(JavaScriptParser.VariableStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#variableStatement}. - * @param ctx the parse tree - */ - void exitVariableStatement(JavaScriptParser.VariableStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#variableDeclarationList}. - * @param ctx the parse tree - */ - void enterVariableDeclarationList(JavaScriptParser.VariableDeclarationListContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#variableDeclarationList}. - * @param ctx the parse tree - */ - void exitVariableDeclarationList(JavaScriptParser.VariableDeclarationListContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#variableDeclaration}. - * @param ctx the parse tree - */ - void enterVariableDeclaration(JavaScriptParser.VariableDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#variableDeclaration}. - * @param ctx the parse tree - */ - void exitVariableDeclaration(JavaScriptParser.VariableDeclarationContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#emptyStatement_}. - * @param ctx the parse tree - */ - void enterEmptyStatement_(JavaScriptParser.EmptyStatement_Context ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#emptyStatement_}. - * @param ctx the parse tree - */ - void exitEmptyStatement_(JavaScriptParser.EmptyStatement_Context ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#expressionStatement}. - * @param ctx the parse tree - */ - void enterExpressionStatement(JavaScriptParser.ExpressionStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#expressionStatement}. - * @param ctx the parse tree - */ - void exitExpressionStatement(JavaScriptParser.ExpressionStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#ifStatement}. - * @param ctx the parse tree - */ - void enterIfStatement(JavaScriptParser.IfStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#ifStatement}. - * @param ctx the parse tree - */ - void exitIfStatement(JavaScriptParser.IfStatementContext ctx); - - /** - * Enter a parse tree produced by the {@code DoStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void enterDoStatement(JavaScriptParser.DoStatementContext ctx); - /** - * Exit a parse tree produced by the {@code DoStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void exitDoStatement(JavaScriptParser.DoStatementContext ctx); - - /** - * Enter a parse tree produced by the {@code WhileStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void enterWhileStatement(JavaScriptParser.WhileStatementContext ctx); - /** - * Exit a parse tree produced by the {@code WhileStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void exitWhileStatement(JavaScriptParser.WhileStatementContext ctx); - - /** - * Enter a parse tree produced by the {@code ForStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void enterForStatement(JavaScriptParser.ForStatementContext ctx); - /** - * Exit a parse tree produced by the {@code ForStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void exitForStatement(JavaScriptParser.ForStatementContext ctx); - - /** - * Enter a parse tree produced by the {@code ForInStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void enterForInStatement(JavaScriptParser.ForInStatementContext ctx); - /** - * Exit a parse tree produced by the {@code ForInStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void exitForInStatement(JavaScriptParser.ForInStatementContext ctx); - - /** - * Enter a parse tree produced by the {@code ForOfStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void enterForOfStatement(JavaScriptParser.ForOfStatementContext ctx); - /** - * Exit a parse tree produced by the {@code ForOfStatement} - * labeled alternative in {@link JavaScriptParser#iterationStatement}. - * @param ctx the parse tree - */ - void exitForOfStatement(JavaScriptParser.ForOfStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#varModifier}. - * @param ctx the parse tree - */ - void enterVarModifier(JavaScriptParser.VarModifierContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#varModifier}. - * @param ctx the parse tree - */ - void exitVarModifier(JavaScriptParser.VarModifierContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#continueStatement}. - * @param ctx the parse tree - */ - void enterContinueStatement(JavaScriptParser.ContinueStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#continueStatement}. - * @param ctx the parse tree - */ - void exitContinueStatement(JavaScriptParser.ContinueStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#breakStatement}. - * @param ctx the parse tree - */ - void enterBreakStatement(JavaScriptParser.BreakStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#breakStatement}. - * @param ctx the parse tree - */ - void exitBreakStatement(JavaScriptParser.BreakStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#returnStatement}. - * @param ctx the parse tree - */ - void enterReturnStatement(JavaScriptParser.ReturnStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#returnStatement}. - * @param ctx the parse tree - */ - void exitReturnStatement(JavaScriptParser.ReturnStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#yieldStatement}. - * @param ctx the parse tree - */ - void enterYieldStatement(JavaScriptParser.YieldStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#yieldStatement}. - * @param ctx the parse tree - */ - void exitYieldStatement(JavaScriptParser.YieldStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#withStatement}. - * @param ctx the parse tree - */ - void enterWithStatement(JavaScriptParser.WithStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#withStatement}. - * @param ctx the parse tree - */ - void exitWithStatement(JavaScriptParser.WithStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#switchStatement}. - * @param ctx the parse tree - */ - void enterSwitchStatement(JavaScriptParser.SwitchStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#switchStatement}. - * @param ctx the parse tree - */ - void exitSwitchStatement(JavaScriptParser.SwitchStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#caseBlock}. - * @param ctx the parse tree - */ - void enterCaseBlock(JavaScriptParser.CaseBlockContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#caseBlock}. - * @param ctx the parse tree - */ - void exitCaseBlock(JavaScriptParser.CaseBlockContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#caseClauses}. - * @param ctx the parse tree - */ - void enterCaseClauses(JavaScriptParser.CaseClausesContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#caseClauses}. - * @param ctx the parse tree - */ - void exitCaseClauses(JavaScriptParser.CaseClausesContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#caseClause}. - * @param ctx the parse tree - */ - void enterCaseClause(JavaScriptParser.CaseClauseContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#caseClause}. - * @param ctx the parse tree - */ - void exitCaseClause(JavaScriptParser.CaseClauseContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#defaultClause}. - * @param ctx the parse tree - */ - void enterDefaultClause(JavaScriptParser.DefaultClauseContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#defaultClause}. - * @param ctx the parse tree - */ - void exitDefaultClause(JavaScriptParser.DefaultClauseContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#labelledStatement}. - * @param ctx the parse tree - */ - void enterLabelledStatement(JavaScriptParser.LabelledStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#labelledStatement}. - * @param ctx the parse tree - */ - void exitLabelledStatement(JavaScriptParser.LabelledStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#throwStatement}. - * @param ctx the parse tree - */ - void enterThrowStatement(JavaScriptParser.ThrowStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#throwStatement}. - * @param ctx the parse tree - */ - void exitThrowStatement(JavaScriptParser.ThrowStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#tryStatement}. - * @param ctx the parse tree - */ - void enterTryStatement(JavaScriptParser.TryStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#tryStatement}. - * @param ctx the parse tree - */ - void exitTryStatement(JavaScriptParser.TryStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#catchProduction}. - * @param ctx the parse tree - */ - void enterCatchProduction(JavaScriptParser.CatchProductionContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#catchProduction}. - * @param ctx the parse tree - */ - void exitCatchProduction(JavaScriptParser.CatchProductionContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#finallyProduction}. - * @param ctx the parse tree - */ - void enterFinallyProduction(JavaScriptParser.FinallyProductionContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#finallyProduction}. - * @param ctx the parse tree - */ - void exitFinallyProduction(JavaScriptParser.FinallyProductionContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#debuggerStatement}. - * @param ctx the parse tree - */ - void enterDebuggerStatement(JavaScriptParser.DebuggerStatementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#debuggerStatement}. - * @param ctx the parse tree - */ - void exitDebuggerStatement(JavaScriptParser.DebuggerStatementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#functionDeclaration}. - * @param ctx the parse tree - */ - void enterFunctionDeclaration(JavaScriptParser.FunctionDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#functionDeclaration}. - * @param ctx the parse tree - */ - void exitFunctionDeclaration(JavaScriptParser.FunctionDeclarationContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#classDeclaration}. - * @param ctx the parse tree - */ - void enterClassDeclaration(JavaScriptParser.ClassDeclarationContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#classDeclaration}. - * @param ctx the parse tree - */ - void exitClassDeclaration(JavaScriptParser.ClassDeclarationContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#classTail}. - * @param ctx the parse tree - */ - void enterClassTail(JavaScriptParser.ClassTailContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#classTail}. - * @param ctx the parse tree - */ - void exitClassTail(JavaScriptParser.ClassTailContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#classElement}. - * @param ctx the parse tree - */ - void enterClassElement(JavaScriptParser.ClassElementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#classElement}. - * @param ctx the parse tree - */ - void exitClassElement(JavaScriptParser.ClassElementContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#methodDefinition}. - * @param ctx the parse tree - */ - void enterMethodDefinition(JavaScriptParser.MethodDefinitionContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#methodDefinition}. - * @param ctx the parse tree - */ - void exitMethodDefinition(JavaScriptParser.MethodDefinitionContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#formalParameterList}. - * @param ctx the parse tree - */ - void enterFormalParameterList(JavaScriptParser.FormalParameterListContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#formalParameterList}. - * @param ctx the parse tree - */ - void exitFormalParameterList(JavaScriptParser.FormalParameterListContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#formalParameterArg}. - * @param ctx the parse tree - */ - void enterFormalParameterArg(JavaScriptParser.FormalParameterArgContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#formalParameterArg}. - * @param ctx the parse tree - */ - void exitFormalParameterArg(JavaScriptParser.FormalParameterArgContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#lastFormalParameterArg}. - * @param ctx the parse tree - */ - void enterLastFormalParameterArg(JavaScriptParser.LastFormalParameterArgContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#lastFormalParameterArg}. - * @param ctx the parse tree - */ - void exitLastFormalParameterArg(JavaScriptParser.LastFormalParameterArgContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#functionBody}. - * @param ctx the parse tree - */ - void enterFunctionBody(JavaScriptParser.FunctionBodyContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#functionBody}. - * @param ctx the parse tree - */ - void exitFunctionBody(JavaScriptParser.FunctionBodyContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#sourceElements}. - * @param ctx the parse tree - */ - void enterSourceElements(JavaScriptParser.SourceElementsContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#sourceElements}. - * @param ctx the parse tree - */ - void exitSourceElements(JavaScriptParser.SourceElementsContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#arrayLiteral}. - * @param ctx the parse tree - */ - void enterArrayLiteral(JavaScriptParser.ArrayLiteralContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#arrayLiteral}. - * @param ctx the parse tree - */ - void exitArrayLiteral(JavaScriptParser.ArrayLiteralContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#elementList}. - * @param ctx the parse tree - */ - void enterElementList(JavaScriptParser.ElementListContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#elementList}. - * @param ctx the parse tree - */ - void exitElementList(JavaScriptParser.ElementListContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#arrayElement}. - * @param ctx the parse tree - */ - void enterArrayElement(JavaScriptParser.ArrayElementContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#arrayElement}. - * @param ctx the parse tree - */ - void exitArrayElement(JavaScriptParser.ArrayElementContext ctx); - - /** - * Enter a parse tree produced by the {@code PropertyExpressionAssignment} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void enterPropertyExpressionAssignment(JavaScriptParser.PropertyExpressionAssignmentContext ctx); - /** - * Exit a parse tree produced by the {@code PropertyExpressionAssignment} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void exitPropertyExpressionAssignment(JavaScriptParser.PropertyExpressionAssignmentContext ctx); - - /** - * Enter a parse tree produced by the {@code ComputedPropertyExpressionAssignment} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void enterComputedPropertyExpressionAssignment(JavaScriptParser.ComputedPropertyExpressionAssignmentContext ctx); - /** - * Exit a parse tree produced by the {@code ComputedPropertyExpressionAssignment} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void exitComputedPropertyExpressionAssignment(JavaScriptParser.ComputedPropertyExpressionAssignmentContext ctx); - - /** - * Enter a parse tree produced by the {@code FunctionProperty} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void enterFunctionProperty(JavaScriptParser.FunctionPropertyContext ctx); - /** - * Exit a parse tree produced by the {@code FunctionProperty} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void exitFunctionProperty(JavaScriptParser.FunctionPropertyContext ctx); - - /** - * Enter a parse tree produced by the {@code PropertyGetter} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void enterPropertyGetter(JavaScriptParser.PropertyGetterContext ctx); - /** - * Exit a parse tree produced by the {@code PropertyGetter} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void exitPropertyGetter(JavaScriptParser.PropertyGetterContext ctx); - - /** - * Enter a parse tree produced by the {@code PropertySetter} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void enterPropertySetter(JavaScriptParser.PropertySetterContext ctx); - /** - * Exit a parse tree produced by the {@code PropertySetter} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void exitPropertySetter(JavaScriptParser.PropertySetterContext ctx); - - /** - * Enter a parse tree produced by the {@code PropertyShorthand} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void enterPropertyShorthand(JavaScriptParser.PropertyShorthandContext ctx); - /** - * Exit a parse tree produced by the {@code PropertyShorthand} - * labeled alternative in {@link JavaScriptParser#propertyAssignment}. - * @param ctx the parse tree - */ - void exitPropertyShorthand(JavaScriptParser.PropertyShorthandContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#propertyName}. - * @param ctx the parse tree - */ - void enterPropertyName(JavaScriptParser.PropertyNameContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#propertyName}. - * @param ctx the parse tree - */ - void exitPropertyName(JavaScriptParser.PropertyNameContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#arguments}. - * @param ctx the parse tree - */ - void enterArguments(JavaScriptParser.ArgumentsContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#arguments}. - * @param ctx the parse tree - */ - void exitArguments(JavaScriptParser.ArgumentsContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#argument}. - * @param ctx the parse tree - */ - void enterArgument(JavaScriptParser.ArgumentContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#argument}. - * @param ctx the parse tree - */ - void exitArgument(JavaScriptParser.ArgumentContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#expressionSequence}. - * @param ctx the parse tree - */ - void enterExpressionSequence(JavaScriptParser.ExpressionSequenceContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#expressionSequence}. - * @param ctx the parse tree - */ - void exitExpressionSequence(JavaScriptParser.ExpressionSequenceContext ctx); - - /** - * Enter a parse tree produced by the {@code TemplateStringExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterTemplateStringExpression(JavaScriptParser.TemplateStringExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code TemplateStringExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitTemplateStringExpression(JavaScriptParser.TemplateStringExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code TernaryExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterTernaryExpression(JavaScriptParser.TernaryExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code TernaryExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitTernaryExpression(JavaScriptParser.TernaryExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code LogicalAndExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterLogicalAndExpression(JavaScriptParser.LogicalAndExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code LogicalAndExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitLogicalAndExpression(JavaScriptParser.LogicalAndExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code PowerExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterPowerExpression(JavaScriptParser.PowerExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code PowerExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitPowerExpression(JavaScriptParser.PowerExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code PreIncrementExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterPreIncrementExpression(JavaScriptParser.PreIncrementExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code PreIncrementExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitPreIncrementExpression(JavaScriptParser.PreIncrementExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ObjectLiteralExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterObjectLiteralExpression(JavaScriptParser.ObjectLiteralExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ObjectLiteralExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitObjectLiteralExpression(JavaScriptParser.ObjectLiteralExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code MetaExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterMetaExpression(JavaScriptParser.MetaExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code MetaExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitMetaExpression(JavaScriptParser.MetaExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code InExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterInExpression(JavaScriptParser.InExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code InExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitInExpression(JavaScriptParser.InExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code LogicalOrExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterLogicalOrExpression(JavaScriptParser.LogicalOrExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code LogicalOrExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitLogicalOrExpression(JavaScriptParser.LogicalOrExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code OptionalChainExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterOptionalChainExpression(JavaScriptParser.OptionalChainExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code OptionalChainExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitOptionalChainExpression(JavaScriptParser.OptionalChainExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code NotExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterNotExpression(JavaScriptParser.NotExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code NotExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitNotExpression(JavaScriptParser.NotExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code PreDecreaseExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterPreDecreaseExpression(JavaScriptParser.PreDecreaseExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code PreDecreaseExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitPreDecreaseExpression(JavaScriptParser.PreDecreaseExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ArgumentsExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterArgumentsExpression(JavaScriptParser.ArgumentsExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ArgumentsExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitArgumentsExpression(JavaScriptParser.ArgumentsExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code AwaitExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterAwaitExpression(JavaScriptParser.AwaitExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code AwaitExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitAwaitExpression(JavaScriptParser.AwaitExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ThisExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterThisExpression(JavaScriptParser.ThisExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ThisExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitThisExpression(JavaScriptParser.ThisExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code FunctionExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterFunctionExpression(JavaScriptParser.FunctionExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code FunctionExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitFunctionExpression(JavaScriptParser.FunctionExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code UnaryMinusExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterUnaryMinusExpression(JavaScriptParser.UnaryMinusExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code UnaryMinusExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitUnaryMinusExpression(JavaScriptParser.UnaryMinusExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code AssignmentExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterAssignmentExpression(JavaScriptParser.AssignmentExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code AssignmentExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitAssignmentExpression(JavaScriptParser.AssignmentExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code PostDecreaseExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterPostDecreaseExpression(JavaScriptParser.PostDecreaseExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code PostDecreaseExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitPostDecreaseExpression(JavaScriptParser.PostDecreaseExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code TypeofExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterTypeofExpression(JavaScriptParser.TypeofExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code TypeofExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitTypeofExpression(JavaScriptParser.TypeofExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code InstanceofExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterInstanceofExpression(JavaScriptParser.InstanceofExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code InstanceofExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitInstanceofExpression(JavaScriptParser.InstanceofExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code UnaryPlusExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterUnaryPlusExpression(JavaScriptParser.UnaryPlusExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code UnaryPlusExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitUnaryPlusExpression(JavaScriptParser.UnaryPlusExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code DeleteExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterDeleteExpression(JavaScriptParser.DeleteExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code DeleteExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitDeleteExpression(JavaScriptParser.DeleteExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ImportExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterImportExpression(JavaScriptParser.ImportExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ImportExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitImportExpression(JavaScriptParser.ImportExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code EqualityExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterEqualityExpression(JavaScriptParser.EqualityExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code EqualityExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitEqualityExpression(JavaScriptParser.EqualityExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code BitXOrExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterBitXOrExpression(JavaScriptParser.BitXOrExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code BitXOrExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitBitXOrExpression(JavaScriptParser.BitXOrExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code SuperExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterSuperExpression(JavaScriptParser.SuperExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code SuperExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitSuperExpression(JavaScriptParser.SuperExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code MultiplicativeExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterMultiplicativeExpression(JavaScriptParser.MultiplicativeExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code MultiplicativeExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitMultiplicativeExpression(JavaScriptParser.MultiplicativeExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code BitShiftExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterBitShiftExpression(JavaScriptParser.BitShiftExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code BitShiftExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitBitShiftExpression(JavaScriptParser.BitShiftExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ParenthesizedExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterParenthesizedExpression(JavaScriptParser.ParenthesizedExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ParenthesizedExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitParenthesizedExpression(JavaScriptParser.ParenthesizedExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code AdditiveExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterAdditiveExpression(JavaScriptParser.AdditiveExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code AdditiveExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitAdditiveExpression(JavaScriptParser.AdditiveExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code RelationalExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterRelationalExpression(JavaScriptParser.RelationalExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code RelationalExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitRelationalExpression(JavaScriptParser.RelationalExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code PostIncrementExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterPostIncrementExpression(JavaScriptParser.PostIncrementExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code PostIncrementExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitPostIncrementExpression(JavaScriptParser.PostIncrementExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code YieldExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterYieldExpression(JavaScriptParser.YieldExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code YieldExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitYieldExpression(JavaScriptParser.YieldExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code BitNotExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterBitNotExpression(JavaScriptParser.BitNotExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code BitNotExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitBitNotExpression(JavaScriptParser.BitNotExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code NewExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterNewExpression(JavaScriptParser.NewExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code NewExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitNewExpression(JavaScriptParser.NewExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code LiteralExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterLiteralExpression(JavaScriptParser.LiteralExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code LiteralExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitLiteralExpression(JavaScriptParser.LiteralExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ArrayLiteralExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterArrayLiteralExpression(JavaScriptParser.ArrayLiteralExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ArrayLiteralExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitArrayLiteralExpression(JavaScriptParser.ArrayLiteralExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code MemberDotExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterMemberDotExpression(JavaScriptParser.MemberDotExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code MemberDotExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitMemberDotExpression(JavaScriptParser.MemberDotExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code ClassExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterClassExpression(JavaScriptParser.ClassExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code ClassExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitClassExpression(JavaScriptParser.ClassExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code MemberIndexExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterMemberIndexExpression(JavaScriptParser.MemberIndexExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code MemberIndexExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitMemberIndexExpression(JavaScriptParser.MemberIndexExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code IdentifierExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterIdentifierExpression(JavaScriptParser.IdentifierExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code IdentifierExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitIdentifierExpression(JavaScriptParser.IdentifierExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code BitAndExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterBitAndExpression(JavaScriptParser.BitAndExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code BitAndExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitBitAndExpression(JavaScriptParser.BitAndExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code BitOrExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterBitOrExpression(JavaScriptParser.BitOrExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code BitOrExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitBitOrExpression(JavaScriptParser.BitOrExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code AssignmentOperatorExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterAssignmentOperatorExpression(JavaScriptParser.AssignmentOperatorExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code AssignmentOperatorExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitAssignmentOperatorExpression(JavaScriptParser.AssignmentOperatorExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code VoidExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterVoidExpression(JavaScriptParser.VoidExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code VoidExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitVoidExpression(JavaScriptParser.VoidExpressionContext ctx); - - /** - * Enter a parse tree produced by the {@code CoalesceExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void enterCoalesceExpression(JavaScriptParser.CoalesceExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code CoalesceExpression} - * labeled alternative in {@link JavaScriptParser#singleExpression}. - * @param ctx the parse tree - */ - void exitCoalesceExpression(JavaScriptParser.CoalesceExpressionContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#assignable}. - * @param ctx the parse tree - */ - void enterAssignable(JavaScriptParser.AssignableContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#assignable}. - * @param ctx the parse tree - */ - void exitAssignable(JavaScriptParser.AssignableContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#objectLiteral}. - * @param ctx the parse tree - */ - void enterObjectLiteral(JavaScriptParser.ObjectLiteralContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#objectLiteral}. - * @param ctx the parse tree - */ - void exitObjectLiteral(JavaScriptParser.ObjectLiteralContext ctx); - - /** - * Enter a parse tree produced by the {@code FunctionDecl} - * labeled alternative in {@link JavaScriptParser#anonymousFunction}. - * @param ctx the parse tree - */ - void enterFunctionDecl(JavaScriptParser.FunctionDeclContext ctx); - /** - * Exit a parse tree produced by the {@code FunctionDecl} - * labeled alternative in {@link JavaScriptParser#anonymousFunction}. - * @param ctx the parse tree - */ - void exitFunctionDecl(JavaScriptParser.FunctionDeclContext ctx); - - /** - * Enter a parse tree produced by the {@code AnonymousFunctionDecl} - * labeled alternative in {@link JavaScriptParser#anonymousFunction}. - * @param ctx the parse tree - */ - void enterAnonymousFunctionDecl(JavaScriptParser.AnonymousFunctionDeclContext ctx); - /** - * Exit a parse tree produced by the {@code AnonymousFunctionDecl} - * labeled alternative in {@link JavaScriptParser#anonymousFunction}. - * @param ctx the parse tree - */ - void exitAnonymousFunctionDecl(JavaScriptParser.AnonymousFunctionDeclContext ctx); - - /** - * Enter a parse tree produced by the {@code ArrowFunction} - * labeled alternative in {@link JavaScriptParser#anonymousFunction}. - * @param ctx the parse tree - */ - void enterArrowFunction(JavaScriptParser.ArrowFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code ArrowFunction} - * labeled alternative in {@link JavaScriptParser#anonymousFunction}. - * @param ctx the parse tree - */ - void exitArrowFunction(JavaScriptParser.ArrowFunctionContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#arrowFunctionParameters}. - * @param ctx the parse tree - */ - void enterArrowFunctionParameters(JavaScriptParser.ArrowFunctionParametersContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#arrowFunctionParameters}. - * @param ctx the parse tree - */ - void exitArrowFunctionParameters(JavaScriptParser.ArrowFunctionParametersContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#arrowFunctionBody}. - * @param ctx the parse tree - */ - void enterArrowFunctionBody(JavaScriptParser.ArrowFunctionBodyContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#arrowFunctionBody}. - * @param ctx the parse tree - */ - void exitArrowFunctionBody(JavaScriptParser.ArrowFunctionBodyContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#assignmentOperator}. - * @param ctx the parse tree - */ - void enterAssignmentOperator(JavaScriptParser.AssignmentOperatorContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#assignmentOperator}. - * @param ctx the parse tree - */ - void exitAssignmentOperator(JavaScriptParser.AssignmentOperatorContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#literal}. - * @param ctx the parse tree - */ - void enterLiteral(JavaScriptParser.LiteralContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#literal}. - * @param ctx the parse tree - */ - void exitLiteral(JavaScriptParser.LiteralContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#templateStringLiteral}. - * @param ctx the parse tree - */ - void enterTemplateStringLiteral(JavaScriptParser.TemplateStringLiteralContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#templateStringLiteral}. - * @param ctx the parse tree - */ - void exitTemplateStringLiteral(JavaScriptParser.TemplateStringLiteralContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#templateStringAtom}. - * @param ctx the parse tree - */ - void enterTemplateStringAtom(JavaScriptParser.TemplateStringAtomContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#templateStringAtom}. - * @param ctx the parse tree - */ - void exitTemplateStringAtom(JavaScriptParser.TemplateStringAtomContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#numericLiteral}. - * @param ctx the parse tree - */ - void enterNumericLiteral(JavaScriptParser.NumericLiteralContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#numericLiteral}. - * @param ctx the parse tree - */ - void exitNumericLiteral(JavaScriptParser.NumericLiteralContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#bigintLiteral}. - * @param ctx the parse tree - */ - void enterBigintLiteral(JavaScriptParser.BigintLiteralContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#bigintLiteral}. - * @param ctx the parse tree - */ - void exitBigintLiteral(JavaScriptParser.BigintLiteralContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#getter}. - * @param ctx the parse tree - */ - void enterGetter(JavaScriptParser.GetterContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#getter}. - * @param ctx the parse tree - */ - void exitGetter(JavaScriptParser.GetterContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#setter}. - * @param ctx the parse tree - */ - void enterSetter(JavaScriptParser.SetterContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#setter}. - * @param ctx the parse tree - */ - void exitSetter(JavaScriptParser.SetterContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#identifierName}. - * @param ctx the parse tree - */ - void enterIdentifierName(JavaScriptParser.IdentifierNameContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#identifierName}. - * @param ctx the parse tree - */ - void exitIdentifierName(JavaScriptParser.IdentifierNameContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#identifier}. - * @param ctx the parse tree - */ - void enterIdentifier(JavaScriptParser.IdentifierContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#identifier}. - * @param ctx the parse tree - */ - void exitIdentifier(JavaScriptParser.IdentifierContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#reservedWord}. - * @param ctx the parse tree - */ - void enterReservedWord(JavaScriptParser.ReservedWordContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#reservedWord}. - * @param ctx the parse tree - */ - void exitReservedWord(JavaScriptParser.ReservedWordContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#keyword}. - * @param ctx the parse tree - */ - void enterKeyword(JavaScriptParser.KeywordContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#keyword}. - * @param ctx the parse tree - */ - void exitKeyword(JavaScriptParser.KeywordContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#let_}. - * @param ctx the parse tree - */ - void enterLet_(JavaScriptParser.Let_Context ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#let_}. - * @param ctx the parse tree - */ - void exitLet_(JavaScriptParser.Let_Context ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#eos}. - * @param ctx the parse tree - */ - void enterEos(JavaScriptParser.EosContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#eos}. - * @param ctx the parse tree - */ - void exitEos(JavaScriptParser.EosContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#programOrAny}. - * @param ctx the parse tree - */ - void enterProgramOrAny(JavaScriptParser.ProgramOrAnyContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#programOrAny}. - * @param ctx the parse tree - */ - void exitProgramOrAny(JavaScriptParser.ProgramOrAnyContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#unknownInterval}. - * @param ctx the parse tree - */ - void enterUnknownInterval(JavaScriptParser.UnknownIntervalContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#unknownInterval}. - * @param ctx the parse tree - */ - void exitUnknownInterval(JavaScriptParser.UnknownIntervalContext ctx); - - /** - * Enter a parse tree produced by {@link JavaScriptParser#any}. - * @param ctx the parse tree - */ - void enterAny(JavaScriptParser.AnyContext ctx); - /** - * Exit a parse tree produced by {@link JavaScriptParser#any}. - * @param ctx the parse tree - */ - void exitAny(JavaScriptParser.AnyContext ctx); -} \ No newline at end of file diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFirstLinesLexer.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFirstLinesLexer.java index 48084a9db..c34f0c223 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFirstLinesLexer.java +++ b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFirstLinesLexer.java @@ -1,19 +1,18 @@ package org.sudu.experiments.parser.javascript.parser; import org.antlr.v4.runtime.*; -import org.sudu.experiments.parser.common.base.BaseFirstLinesLexer; +import org.sudu.experiments.parser.common.NullParser; import org.sudu.experiments.parser.common.SplitRules; -import org.sudu.experiments.parser.help.Helper; +import org.sudu.experiments.parser.common.base.BaseFirstLinesLexer; import org.sudu.experiments.parser.javascript.JsSplitRules; -import org.sudu.experiments.parser.javascript.gen.JavaScriptParser; import org.sudu.experiments.parser.javascript.gen.LightJavaScriptLexer; -import org.sudu.experiments.parser.javascript.parser.highlighting.LightJavaScriptLexerHighlighting; +import org.sudu.experiments.parser.javascript.parser.highlighting.LightJavaScriptHighlighting; -public class JavaScriptFirstLinesLexer extends BaseFirstLinesLexer { +public class JavaScriptFirstLinesLexer extends BaseFirstLinesLexer { @Override protected void highlightTokens() { - LightJavaScriptLexerHighlighting.highlightTokens(allTokens, tokenTypes); + LightJavaScriptHighlighting.highlightTokens(allTokens, tokenTypes); } @Override diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFullParser.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFullParser.java deleted file mode 100644 index f17545d6a..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptFullParser.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.sudu.experiments.parser.javascript.parser; - -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.tree.ParseTreeWalker; -import org.sudu.experiments.parser.Interval; -import org.sudu.experiments.parser.ParserConstants; -import org.sudu.experiments.parser.common.base.BaseFullParser; -import org.sudu.experiments.parser.common.SplitRules; -import org.sudu.experiments.parser.common.tree.IntervalNode; -import org.sudu.experiments.parser.javascript.gen.JavaScriptLexer; -import org.sudu.experiments.parser.javascript.gen.JavaScriptParser; -import org.sudu.experiments.parser.javascript.parser.highlighting.JavaScriptLexerHighlighting; -import org.sudu.experiments.parser.javascript.walker.JsWalker; - -// todo fix -public class JavaScriptFullParser extends BaseFullParser { - - public int[] parse(String source) { - long parsingTime = System.currentTimeMillis(); - - initLexer(source); - - JavaScriptParser parser = new JavaScriptParser(tokenStream); - - var program = parser.program(); - ParseTreeWalker walker = new ParseTreeWalker(); - - highlightTokens(); - - JsWalker jsWalker = new JsWalker(tokenTypes, tokenStyles); - walker.walk(jsWalker, program); - - jsWalker.intervals.add(new Interval(0, source.length(), ParserConstants.IntervalTypes.Js.PROGRAM)); - - //todo - var result = getInts(null); - System.out.println("Parsing full js time: " + (System.currentTimeMillis() - parsingTime) + "ms"); - return result; - } - - @Override - protected Lexer initLexer(CharStream stream) { - return new JavaScriptLexer(stream); - } - - @Override - protected JavaScriptParser initParser() { - return null; - } - - @Override - protected SplitRules initSplitRules() { - return null; - } - - @Override - protected boolean tokenFilter(Token token) { - int type = token.getType(); - return type != JavaScriptLexer.LineTerminator - && type != JavaScriptLexer.EOF; - } - - @Override - protected ParserRuleContext getStartRule(JavaScriptParser parser) { - return null; - } - - @Override - protected IntervalNode walk(ParserRuleContext startRule) { - return null; - } - - @Override - protected void highlightTokens() { - for (var token: allTokens) { - int ind = token.getTokenIndex(); - if (isComment(token.getType())) tokenTypes[ind] = ParserConstants.TokenTypes.COMMENT; - } - } - - public static boolean isComment(int tokenType) { - return JavaScriptLexerHighlighting.isComment(tokenType); - } - -} diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptIntervalParser.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptIntervalParser.java index c55deadb1..a10a36040 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptIntervalParser.java +++ b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptIntervalParser.java @@ -4,18 +4,17 @@ import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; +import org.sudu.experiments.parser.common.NullParser; import org.sudu.experiments.parser.common.base.BaseIntervalParser; import org.sudu.experiments.parser.common.graph.ScopeWalker; import org.sudu.experiments.parser.common.tree.IntervalNode; import org.sudu.experiments.parser.common.SplitRules; -import org.sudu.experiments.parser.help.Helper; import org.sudu.experiments.parser.javascript.JsSplitRules; -import org.sudu.experiments.parser.javascript.gen.JavaScriptParser; import org.sudu.experiments.parser.javascript.gen.LightJavaScriptLexer; -import org.sudu.experiments.parser.javascript.parser.highlighting.LightJavaScriptLexerHighlighting; +import org.sudu.experiments.parser.javascript.parser.highlighting.LightJavaScriptHighlighting; import java.util.Arrays; -public class JavaScriptIntervalParser extends BaseIntervalParser { +public class JavaScriptIntervalParser extends BaseIntervalParser { @Override public int[] parseInterval(char[] source, int[] interval, int[] graphInts, char[] graphChars) { @@ -34,12 +33,12 @@ protected Lexer initLexer(CharStream stream) { } @Override - protected JavaScriptParser initParser() { + protected NullParser initParser() { return null; } @Override - protected ParserRuleContext getStartRule(JavaScriptParser parser) { + protected ParserRuleContext getStartRule(NullParser parser) { return null; } @@ -62,11 +61,7 @@ protected boolean tokenFilter(Token token) { @Override protected void highlightTokens() { - LightJavaScriptLexerHighlighting.highlightTokens(allTokens, tokenTypes); - } - - public static boolean isComment(int tokenType) { - return LightJavaScriptLexerHighlighting.isComment(tokenType); + LightJavaScriptHighlighting.highlightTokens(allTokens, tokenTypes); } @Override diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptLightParser.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptLightParser.java index 2d19556a9..cd8c4e2db 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptLightParser.java +++ b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/JavaScriptLightParser.java @@ -1,17 +1,15 @@ package org.sudu.experiments.parser.javascript.parser; import org.antlr.v4.runtime.*; +import org.sudu.experiments.parser.common.NullParser; import org.sudu.experiments.parser.common.base.BaseFullParser; import org.sudu.experiments.parser.common.SplitRules; import org.sudu.experiments.parser.common.tree.IntervalNode; -import org.sudu.experiments.parser.help.Helper; import org.sudu.experiments.parser.javascript.JsSplitRules; -import org.sudu.experiments.parser.javascript.gen.JavaScriptParser; import org.sudu.experiments.parser.javascript.gen.LightJavaScriptLexer; -import org.sudu.experiments.parser.javascript.parser.highlighting.JavaScriptLexerHighlighting; -import org.sudu.experiments.parser.javascript.parser.highlighting.LightJavaScriptLexerHighlighting; +import org.sudu.experiments.parser.javascript.parser.highlighting.LightJavaScriptHighlighting; -public class JavaScriptLightParser extends BaseFullParser { +public class JavaScriptLightParser extends BaseFullParser { @Override public int[] parse(char[] source) { @@ -29,7 +27,7 @@ protected Lexer initLexer(CharStream stream) { } @Override - protected JavaScriptParser initParser() { + protected NullParser initParser() { return null; } @@ -46,7 +44,7 @@ protected boolean tokenFilter(Token token) { } @Override - protected ParserRuleContext getStartRule(JavaScriptParser parser) { + protected ParserRuleContext getStartRule(NullParser parser) { return null; } @@ -57,11 +55,6 @@ protected IntervalNode walk(ParserRuleContext startRule) { @Override protected void highlightTokens() { - LightJavaScriptLexerHighlighting.highlightTokens(allTokens, tokenTypes); + LightJavaScriptHighlighting.highlightTokens(allTokens, tokenTypes); } - - public static boolean isComment(int tokenType) { - return JavaScriptLexerHighlighting.isComment(tokenType); - } - } diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/JavaScriptLexerHighlighting.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/JavaScriptLexerHighlighting.java deleted file mode 100644 index b55e054b5..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/JavaScriptLexerHighlighting.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.sudu.experiments.parser.javascript.parser.highlighting; - -import org.antlr.v4.runtime.Token; -import org.sudu.experiments.parser.javascript.gen.JavaScriptLexer; - -import java.util.List; - -import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; - -public class JavaScriptLexerHighlighting { - - public static void highlightTokens(List allTokens, int[] tokenTypes) { - for (var token : allTokens) { - int ind = token.getTokenIndex(); - int type = token.getType(); - if (isComment(type)) tokenTypes[ind] = COMMENT; - else if (isNull(type)) tokenTypes[ind] = NULL; - else if (isBoolean(type)) tokenTypes[ind] = BOOLEAN; - else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; - else if (isKeyword(type)) tokenTypes[ind] = KEYWORD; - else if (isString(type)) tokenTypes[ind] = STRING; - else if (isSemi(type)) tokenTypes[ind] = SEMI; - } - } - - public static boolean isNull(int tokenType) { - return tokenType == JavaScriptLexer.NullLiteral; - } - - public static boolean isBoolean(int tokenType) { - return tokenType == JavaScriptLexer.BooleanLiteral; - } - - public static boolean isNumeric(int tokenType) { - return tokenType >= JavaScriptLexer.DecimalLiteral - && tokenType <= JavaScriptLexer.BigDecimalIntegerLiteral; - } - - public static boolean isKeyword(int tokenType) { - return tokenType >= JavaScriptLexer.Break - && tokenType <= JavaScriptLexer.Static -// && tokenType != JavaScriptLexer.NonStrictLet - && tokenType != JavaScriptLexer.Async - && tokenType != JavaScriptLexer.As - && tokenType != JavaScriptLexer.From; - } - - public static boolean isString(int tokenType) { - return tokenType == JavaScriptLexer.StringLiteral - || tokenType == JavaScriptLexer.BackTick; - } - - public static boolean isComment(int tokenType) { - return tokenType == JavaScriptLexer.HtmlComment - || tokenType == JavaScriptLexer.CDataComment - || tokenType == JavaScriptLexer.MultiLineComment - || tokenType == JavaScriptLexer.SingleLineComment; - } - - public static boolean isSemi(int tokenType) { - return tokenType == JavaScriptLexer.Comma - || tokenType == JavaScriptLexer.SemiColon; - } - -} diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/LightJavaScriptLexerHighlighting.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/LightJavaScriptHighlighting.java similarity index 73% rename from parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/LightJavaScriptLexerHighlighting.java rename to parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/LightJavaScriptHighlighting.java index b7ea420be..af876c464 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/LightJavaScriptLexerHighlighting.java +++ b/parser/src/main/java/org/sudu/experiments/parser/javascript/parser/highlighting/LightJavaScriptHighlighting.java @@ -7,7 +7,7 @@ import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; -public class LightJavaScriptLexerHighlighting { +public class LightJavaScriptHighlighting { public static void highlightTokens(List allTokens, int[] tokenTypes) { for (var token : allTokens) { @@ -18,6 +18,7 @@ public static void highlightTokens(List allTokens, int[] tokenTypes) { else if (isBoolean(type)) tokenTypes[ind] = BOOLEAN; else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; else if (isKeyword(type)) tokenTypes[ind] = KEYWORD; + else if (isControl(type)) tokenTypes[ind] = CONTROL; else if (isString(type)) tokenTypes[ind] = STRING; else if (isSemi(type)) tokenTypes[ind] = SEMI; } @@ -37,12 +38,25 @@ public static boolean isNumeric(int tokenType) { } public static boolean isKeyword(int tokenType) { - return tokenType >= LightJavaScriptLexer.Break + return (tokenType >= LightJavaScriptLexer.Break && tokenType <= LightJavaScriptLexer.Static && tokenType != LightJavaScriptLexer.Let && tokenType != LightJavaScriptLexer.Async && tokenType != LightJavaScriptLexer.As - && tokenType != LightJavaScriptLexer.From; + && tokenType != LightJavaScriptLexer.From) + && !isControl(tokenType); + } + + public static boolean isControl(int tokenType) { + return switch (tokenType) { + case LightJavaScriptLexer.Return, LightJavaScriptLexer.Break, + LightJavaScriptLexer.Continue, LightJavaScriptLexer.If, + LightJavaScriptLexer.Else, LightJavaScriptLexer.For, + LightJavaScriptLexer.Do, LightJavaScriptLexer.While, + LightJavaScriptLexer.Switch, LightJavaScriptLexer.Case, + LightJavaScriptLexer.Default, LightJavaScriptLexer.Yield -> true; + default -> false; + }; } public static boolean isString(int tokenType) { diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/walker/JsClassWalker.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/walker/JsClassWalker.java deleted file mode 100644 index 9b7a41ae6..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/walker/JsClassWalker.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.sudu.experiments.parser.javascript.walker; - -public class JsClassWalker { -} diff --git a/parser/src/main/java/org/sudu/experiments/parser/javascript/walker/JsWalker.java b/parser/src/main/java/org/sudu/experiments/parser/javascript/walker/JsWalker.java deleted file mode 100644 index 0292c78c2..000000000 --- a/parser/src/main/java/org/sudu/experiments/parser/javascript/walker/JsWalker.java +++ /dev/null @@ -1,117 +0,0 @@ -package org.sudu.experiments.parser.javascript.walker; - -import org.antlr.v4.runtime.tree.TerminalNode; -import org.sudu.experiments.parser.Interval; -import org.sudu.experiments.parser.javascript.gen.JavaScriptParser; -import org.sudu.experiments.parser.javascript.gen.JavaScriptParserBaseListener; - -import java.util.ArrayList; -import java.util.List; - -import static org.sudu.experiments.parser.ParserConstants.TokenTypes.*; -import static org.sudu.experiments.parser.javascript.parser.highlighting.JavaScriptLexerHighlighting.*; -import static org.sudu.experiments.parser.ParserConstants.*; - -public class JsWalker extends JavaScriptParserBaseListener { - - private final int[] tokenTypes; - private final int[] tokenStyles; - public List intervals; - - private int lastIntervalEnd = 0; - - public JsWalker(int[] tokenTypes, int[] tokenStyles) { - this.tokenTypes = tokenTypes; - this.tokenStyles = tokenStyles; - intervals = new ArrayList<>(); - } - - @Override - public void enterFunctionDeclaration(JavaScriptParser.FunctionDeclarationContext ctx) { - super.enterFunctionDeclaration(ctx); - var node = getIdentifier(ctx.identifier()); - var token = node.getSymbol(); - tokenTypes[token.getTokenIndex()] = METHOD; - } - - @Override - public void enterVariableDeclaration(JavaScriptParser.VariableDeclarationContext ctx) { - super.enterVariableDeclaration(ctx); - if (ctx.assignable().identifier() == null) return; - var node = getIdentifier(ctx.assignable().identifier()); - var token = node.getSymbol(); - tokenTypes[token.getTokenIndex()] = FIELD; - } - - @Override - public void enterMethodDefinition(JavaScriptParser.MethodDefinitionContext ctx) { - super.enterMethodDefinition(ctx); - TerminalNode node; - if (ctx.propertyName() != null) node = getPropertyName(ctx.propertyName()); - else if (ctx.getter() != null) node = getIdentifier(ctx.getter().identifier()); - else node = getIdentifier(ctx.setter().identifier()); - - if (node == null) return; - var token = node.getSymbol(); - tokenTypes[token.getTokenIndex()] = METHOD; - } - - @Override - public void enterSourceElement(JavaScriptParser.SourceElementContext ctx) { - super.enterSourceElement(ctx); - int stop = ctx.stop.getStopIndex() + 1; - intervals.add(new Interval(lastIntervalEnd, stop, IntervalTypes.Js.SRC_ELEM)); - } - - @Override - public void exitSourceElement(JavaScriptParser.SourceElementContext ctx) { - super.exitSourceElement(ctx); - lastIntervalEnd = ctx.stop.getStopIndex() + 1; - } - - @Override - public void enterFunctionBody(JavaScriptParser.FunctionBodyContext ctx) { - super.enterFunctionBody(ctx); - lastIntervalEnd = ctx.OpenBrace().getSymbol().getStartIndex() + 1; - } - - @Override - public void visitTerminal(TerminalNode node) { - var token = node.getSymbol(); - int ind = token.getTokenIndex(); - int type = token.getType(); - if (node.getParent() instanceof JavaScriptParser.IdentifierContext) return; - if (isComment(type)) tokenTypes[ind] = COMMENT; - else if (isNull(type)) tokenTypes[ind] = NULL; - else if (isBoolean(type)) tokenTypes[ind] = BOOLEAN; - else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; - else if (isKeyword(type)) tokenTypes[ind] = KEYWORD; - else if (isString(type)) tokenTypes[ind] = STRING; - else if (isSemi(type)) tokenTypes[ind] = SEMI; - } - - private TerminalNode getIdentifier(JavaScriptParser.IdentifierContext ctx) { - return (TerminalNode) ctx.getChild(0); - } - - private TerminalNode getIdentifier(JavaScriptParser.KeywordContext ctx) { - if (ctx.let_() != null) return (TerminalNode) ctx.let_().getChild(0); - else return (TerminalNode) ctx.getChild(0); - } - - private TerminalNode getIdentifier(JavaScriptParser.IdentifierNameContext ctx) { - if (ctx.identifier() != null) return getIdentifier(ctx.identifier()); - else { - if (ctx.reservedWord().keyword() == null) return (TerminalNode) ctx.reservedWord().getChild(0); - else return getIdentifier(ctx.reservedWord().keyword()); - } - } - - private TerminalNode getPropertyName(JavaScriptParser.PropertyNameContext ctx) { - if (ctx.StringLiteral() != null) return ctx.StringLiteral(); - if (ctx.numericLiteral() != null) return (TerminalNode) ctx.numericLiteral().getChild(0); - if (ctx.identifierName() != null) return getIdentifier(ctx.identifierName()); - else return null; - } - -} diff --git a/parser/src/main/java/org/sudu/experiments/parser/json/JsonSplitRules.java b/parser/src/main/java/org/sudu/experiments/parser/json/JsonSplitRules.java index 1be07d981..a8aa9c72c 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/json/JsonSplitRules.java +++ b/parser/src/main/java/org/sudu/experiments/parser/json/JsonSplitRules.java @@ -1,6 +1,8 @@ package org.sudu.experiments.parser.json; +import org.antlr.v4.runtime.Token; import org.sudu.experiments.parser.common.SplitRules; +import org.sudu.experiments.parser.json.gen.JsonLexer; import java.util.List; @@ -8,7 +10,12 @@ public class JsonSplitRules extends SplitRules { @Override public List getRules() { return List.of( - makeRule((_1) -> true, this::splitTokenByLine) + makeRule(this::isMultiline, this::splitTokenByLine) ); } + + private boolean isMultiline(Token token) { + int type = token.getType(); + return type == JsonLexer.COMMENT; + } } diff --git a/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptFirstLinesLexer.java b/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptFirstLinesLexer.java index 72614d518..882986954 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptFirstLinesLexer.java +++ b/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptFirstLinesLexer.java @@ -1,12 +1,9 @@ package org.sudu.experiments.parser.typescript.parser; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.*; import org.sudu.experiments.parser.common.NullParser; import org.sudu.experiments.parser.common.SplitRules; import org.sudu.experiments.parser.common.base.BaseFirstLinesLexer; -import org.sudu.experiments.parser.help.Helper; import org.sudu.experiments.parser.typescript.TsSplitRules; import org.sudu.experiments.parser.typescript.gen.LightTypeScriptLexer; import org.sudu.experiments.parser.typescript.parser.highlighting.LightTypeScriptHighlighting; diff --git a/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/TypeScriptIntervalParser.java b/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptIntervalParser.java similarity index 92% rename from parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/TypeScriptIntervalParser.java rename to parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptIntervalParser.java index f5184a385..706cb5f43 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/TypeScriptIntervalParser.java +++ b/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/TypeScriptIntervalParser.java @@ -1,4 +1,4 @@ -package org.sudu.experiments.parser.typescript.parser.highlighting; +package org.sudu.experiments.parser.typescript.parser; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.Lexer; @@ -11,6 +11,7 @@ import org.sudu.experiments.parser.common.tree.IntervalNode; import org.sudu.experiments.parser.typescript.TsSplitRules; import org.sudu.experiments.parser.typescript.gen.LightTypeScriptLexer; +import org.sudu.experiments.parser.typescript.parser.highlighting.LightTypeScriptHighlighting; import java.util.Arrays; diff --git a/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/LightTypeScriptHighlighting.java b/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/LightTypeScriptHighlighting.java index 47d27607b..bb9008852 100644 --- a/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/LightTypeScriptHighlighting.java +++ b/parser/src/main/java/org/sudu/experiments/parser/typescript/parser/highlighting/LightTypeScriptHighlighting.java @@ -18,6 +18,7 @@ public static void highlightTokens(List allTokens, int[] tokenTypes) { else if (isBoolean(type)) tokenTypes[ind] = BOOLEAN; else if (isNumeric(type)) tokenTypes[ind] = NUMERIC; else if (isKeyword(type)) tokenTypes[ind] = KEYWORD; + else if (isControl(type)) tokenTypes[ind] = CONTROL; else if (isString(type)) tokenTypes[ind] = STRING; else if (isSemi(type)) tokenTypes[ind] = SEMI; } @@ -32,8 +33,21 @@ private static boolean isString(int tokenType) { } private static boolean isKeyword(int tokenType) { - return tokenType >= LightTypeScriptLexer.Break - && tokenType <= LightTypeScriptLexer.Is; + return (tokenType >= LightTypeScriptLexer.Break + && tokenType <= LightTypeScriptLexer.Is) + && !isControl(tokenType); + } + + public static boolean isControl(int tokenType) { + return switch (tokenType) { + case LightTypeScriptLexer.Return, LightTypeScriptLexer.Break, + LightTypeScriptLexer.Continue, LightTypeScriptLexer.If, + LightTypeScriptLexer.Else, LightTypeScriptLexer.For, + LightTypeScriptLexer.Do, LightTypeScriptLexer.While, + LightTypeScriptLexer.Switch, LightTypeScriptLexer.Case, + LightTypeScriptLexer.Default, LightTypeScriptLexer.Yield -> true; + default -> false; + }; } private static boolean isNumeric(int tokenType) {