From 660fd3cf19579df903ec7321d5f42680102d19c6 Mon Sep 17 00:00:00 2001 From: samuelvasecka <samuel.vasecka@gmail.com> Date: Mon, 20 May 2024 11:29:09 +0200 Subject: [PATCH] second commit --- README.md | 3 + app/build.gradle.kts | 12 + app/sample.db | Bin 0 -> 4530176 bytes app/src/main/antlr/PhpLexer.g4 | 386 + app/src/main/antlr/PhpParser.g4 | 980 ++ app/src/main/java/antlr/PhpLexer.java | 1271 ++ app/src/main/java/antlr/PhpLexer.tokens | 416 + app/src/main/java/antlr/PhpLexerBase.java | 193 + app/src/main/java/antlr/PhpParser.java | 14675 ++++++++++++++++ app/src/main/java/antlr/PhpParser.tokens | 416 + .../java/antlr/PhpParserBaseListener.java | 1997 +++ .../main/java/antlr/PhpParserListener.java | 1694 ++ app/src/main/java/githubsqlfinder/App.java | 367 +- .../java/githubsqlfinder/GithubFinder.java | 47 +- app/src/main/java/githubsqlfinder/JDBC.java | 55 +- app/src/main/java/githubsqlfinder/notes.md | 8 - app/src/main/resources/example1.txt | 63 +- app/src/main/resources/example10.txt | 210 +- app/src/main/resources/example2.txt | 59 +- app/src/main/resources/example3.txt | 63 +- app/src/main/resources/example9.txt | 251 +- sample.db | Bin 36864 -> 53248 bytes 22 files changed, 22993 insertions(+), 173 deletions(-) create mode 100644 README.md create mode 100644 app/sample.db create mode 100644 app/src/main/antlr/PhpLexer.g4 create mode 100644 app/src/main/antlr/PhpParser.g4 create mode 100644 app/src/main/java/antlr/PhpLexer.java create mode 100644 app/src/main/java/antlr/PhpLexer.tokens create mode 100644 app/src/main/java/antlr/PhpLexerBase.java create mode 100644 app/src/main/java/antlr/PhpParser.java create mode 100644 app/src/main/java/antlr/PhpParser.tokens create mode 100644 app/src/main/java/antlr/PhpParserBaseListener.java create mode 100644 app/src/main/java/antlr/PhpParserListener.java delete mode 100644 app/src/main/java/githubsqlfinder/notes.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..2e11326 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Poject set up + +1. \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1784a2b..67e2605 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -10,6 +10,7 @@ plugins { // Apply the application plugin to add support for building a CLI application in Java. application antlr + java } repositories { @@ -59,6 +60,17 @@ application { mainClass.set("githubsqlfinder.App") } +//val mode: String by project.extra + +// Set the default value for the parameter +//project.extra["mode"] = "1" + +// Define your run task +tasks.named<JavaExec>("run") { + // Pass the custom parameter as an argument to your application + args(System.getProperty("files", "100"), System.getProperty("batch", "100"), System.getProperty("mode", "2"), System.getProperty("offset", "0"), System.getProperty("sample", "1")) +} + tasks.named<Test>("test") { // Use JUnit Platform for unit tests. useJUnitPlatform() diff --git a/app/sample.db b/app/sample.db new file mode 100644 index 0000000000000000000000000000000000000000..74b87f052289e1921c5ccfe6353c957d1fd09cf0 GIT binary patch literal 4530176 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 literal 0 HcmV?d00001 diff --git a/app/src/main/antlr/PhpLexer.g4 b/app/src/main/antlr/PhpLexer.g4 new file mode 100644 index 0000000..b516acb --- /dev/null +++ b/app/src/main/antlr/PhpLexer.g4 @@ -0,0 +1,386 @@ +/* +PHP grammar. +The MIT License (MIT). +Copyright (c) 2015-2020, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. +Copyright (c) 2019, Thierry Marianne (thierry.marianne@weaving-the-web.org) +Copyright (c) 2019-2020, Student Main for php7, php8 support. + +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. +*/ + +// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine +// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true + +lexer grammar PhpLexer; + +channels { + PhpComments, + ErrorLexem, + SkipChannel +} + +options { + superClass = PhpLexerBase; + caseInsensitive = true; +} + +// Insert here @header for C++ lexer. + +SeaWhitespace : [ \t\r\n]+ -> channel(HIDDEN); +HtmlText : ~[<#]+; +XmlStart : '<?xml' -> pushMode(XML); +PHPStartEcho : PhpStartEchoFragment -> type(Echo), pushMode(PHP); +PHPStart : PhpStartFragment -> channel(SkipChannel), pushMode(PHP); +HtmlScriptOpen : '<script' { this._scriptTag = true; } -> pushMode(INSIDE); +HtmlStyleOpen : '<style' { this._styleTag = true; } -> pushMode(INSIDE); +HtmlComment : '<!' '--' .*? '-->' -> channel(HIDDEN); +HtmlDtd : '<!' .*? '>'; +HtmlOpen : '<' -> pushMode(INSIDE); +Shebang : '#' { this.IsNewLineOrStart(-2) }? '!' ~[\r\n]*; +NumberSign : '#' ~'<'* -> more; +Error : . -> channel(ErrorLexem); + +// TODO: parse xml attributes. +mode XML; + +XmlText : ~'?'+; +XmlClose : '?>' -> popMode; +XmlText2 : '?' -> type(XmlText); + +mode INSIDE; + +PHPStartEchoInside : PhpStartEchoFragment -> type(Echo), pushMode(PHP); +PHPStartInside : PhpStartFragment -> channel(SkipChannel), pushMode(PHP); +HtmlClose : '>' { this.PushModeOnHtmlClose(); }; +HtmlSlashClose : '/>' -> popMode; +HtmlSlash : '/'; +HtmlEquals : '='; + +HtmlStartQuoteString : '\\'? '\'' -> pushMode(HtmlQuoteStringMode); +HtmlStartDoubleQuoteString : '\\'? '"' -> pushMode(HtmlDoubleQuoteStringMode); +HtmlHex : '#' HexDigit+; +HtmlDecimal : Digit+; +HtmlSpace : [ \t\r\n]+ -> channel(HIDDEN); +HtmlName : HtmlNameStartChar HtmlNameChar*; +ErrorInside : . -> channel(ErrorLexem); + +mode HtmlQuoteStringMode; + +PHPStartEchoInsideQuoteString : PhpStartEchoFragment -> type(Echo), pushMode(PHP); +PHPStartInsideQuoteString : PhpStartFragment -> channel(SkipChannel), pushMode(PHP); +HtmlEndQuoteString : '\'' '\''? -> popMode; +HtmlQuoteString : ~[<']+; +ErrorHtmlQuote : . -> channel(ErrorLexem); + +mode HtmlDoubleQuoteStringMode; + +PHPStartEchoDoubleQuoteString : PhpStartEchoFragment -> type(Echo), pushMode(PHP); +PHPStartDoubleQuoteString : PhpStartFragment -> channel(SkipChannel), pushMode(PHP); +HtmlEndDoubleQuoteString : '"' '"'? -> popMode; +HtmlDoubleQuoteString : ~[<"]+; +ErrorHtmlDoubleQuote : . -> channel(ErrorLexem); + +// Parse JavaScript with https://github.com/antlr/grammars-v4/tree/master/javascript if necessary. +// Php blocks can exist inside Script blocks too. +mode SCRIPT; + +ScriptText: ~'<'+; +// TODO: handle JS strings, but handle <?php tags inside them +//ScriptString: '"' (~'"' | '\\' ('\r'? '\n' | .))* '"' -> type(ScriptText); +//ScriptString2: '\'' (~'\'' | '\\' ('\r'? '\n' | .))* '\'' -> type(ScriptText); +HtmlScriptClose : '</' 'script'? '>' -> popMode; +PHPStartInsideScriptEcho : PhpStartEchoFragment -> type(Echo), pushMode(PHP); +PHPStartInsideScript : PhpStartFragment -> channel(SkipChannel), pushMode(PHP); +ScriptText2 : '<' -> type(ScriptText); + +mode STYLE; + +StyleBody: .*? '</' 'style'? '>' -> popMode; + +mode PHP; + +PHPEnd : ('?' | '%' {this.HasAspTags()}?) '>' | '</script>' {this.HasPhpScriptTag()}?; +Whitespace : [ \t\r\n]+ -> channel(SkipChannel); +MultiLineComment : '/*' .*? '*/' -> channel(PhpComments); +SingleLineComment : '//' -> channel(SkipChannel), pushMode(SingleLineCommentMode); +ShellStyleComment : '#' -> channel(SkipChannel), pushMode(SingleLineCommentMode); + +AttributeStart: '#['; + +Abstract : 'abstract'; +Array : 'array'; +As : 'as'; +BinaryCast : 'binary'; +BoolType : 'bool' 'ean'?; +BooleanConstant : 'true' | 'false'; +Break : 'break'; +Callable : 'callable'; +Case : 'case'; +Catch : 'catch'; +Class : 'class'; +Clone : 'clone'; +Const : 'const'; +Continue : 'continue'; +Declare : 'declare'; +Default : 'default'; +Do : 'do'; +DoubleCast : 'real'; +DoubleType : 'double'; +Echo : 'echo'; +Else : 'else'; +ElseIf : 'elseif'; +Empty : 'empty'; +Enum_ : 'enum'; + +EndDeclare : 'enddeclare'; +EndFor : 'endfor'; +EndForeach : 'endforeach'; +EndIf : 'endif'; +EndSwitch : 'endswitch'; +EndWhile : 'endwhile'; + +Eval : 'eval'; +Exit : 'die'; +Extends : 'extends'; +Final : 'final'; +Finally : 'finally'; +FloatCast : 'float'; +For : 'for'; +Foreach : 'foreach'; +Function_ : 'function'; +Global : 'global'; +Goto : 'goto'; +If : 'if'; +Implements : 'implements'; +Import : 'import'; +Include : 'include'; +IncludeOnce : 'include_once'; +InstanceOf : 'instanceof'; +InsteadOf : 'insteadof'; +Int8Cast : 'int8'; +Int16Cast : 'int16'; +Int64Type : 'int64'; +IntType : 'int' 'eger'?; +Interface : 'interface'; +IsSet : 'isset'; +List : 'list'; +LogicalAnd : 'and'; +LogicalOr : 'or'; +LogicalXor : 'xor'; +Match_ : 'match'; +Namespace : 'namespace'; +New : 'new'; +Null : 'null'; +ObjectType : 'object'; +Parent_ : 'parent'; +Partial : 'partial'; +Print : 'print'; +Private : 'private'; +Protected : 'protected'; +Public : 'public'; +Readonly : 'readonly'; +Require : 'require'; +RequireOnce : 'require_once'; +Resource : 'resource'; +Return : 'return'; +Static : 'static'; +StringType : 'string'; +Switch : 'switch'; +Throw : 'throw'; +Trait : 'trait'; +Try : 'try'; +Typeof : 'clrtypeof'; +UintCast : 'uint' ('8' | '16' | '64')?; +UnicodeCast : 'unicode'; +Unset : 'unset'; +Use : 'use'; +Var : 'var'; +While : 'while'; +Yield : 'yield'; +From : 'from'; +LambdaFn : 'fn'; +Ticks : 'ticks'; +Encoding : 'encoding'; +StrictTypes : 'strict_types'; + +Get : '__get'; +Set : '__set'; +Call : '__call'; +CallStatic : '__callstatic'; +Constructor : '__construct'; +Destruct : '__destruct'; +Wakeup : '__wakeup'; +Sleep : '__sleep'; +Autoload : '__autoload'; +IsSet__ : '__isset'; +Unset__ : '__unset'; +ToString__ : '__tostring'; +Invoke : '__invoke'; +SetState : '__set_state'; +Clone__ : '__clone'; +DebugInfo : '__debuginfo'; +Namespace__ : '__namespace__'; +Class__ : '__class__'; +Traic__ : '__trait__'; +Function__ : '__function__'; +Method__ : '__method__'; +Line__ : '__line__'; +File__ : '__file__'; +Dir__ : '__dir__'; + +Spaceship : '<=>'; +Lgeneric : '<:'; +Rgeneric : ':>'; +DoubleArrow : '=>'; +Inc : '++'; +Dec : '--'; +IsIdentical : '==='; +IsNoidentical : '!=='; +IsEqual : '=='; +IsNotEq : '<>' | '!='; +IsSmallerOrEqual : '<='; +IsGreaterOrEqual : '>='; +PlusEqual : '+='; +MinusEqual : '-='; +MulEqual : '*='; +Pow : '**'; +PowEqual : '**='; +DivEqual : '/='; +Concaequal : '.='; +ModEqual : '%='; +ShiftLeftEqual : '<<='; +ShiftRightEqual : '>>='; +AndEqual : '&='; +OrEqual : '|='; +XorEqual : '^='; +BooleanOr : '||'; +BooleanAnd : '&&'; + +NullCoalescing : '??'; +NullCoalescingEqual : '??='; + +ShiftLeft : '<<'; +ShiftRight : '>>'; +DoubleColon : '::'; +ObjectOperator : '->'; +NamespaceSeparator : '\\'; +Ellipsis : '...'; +Less : '<'; +Greater : '>'; +Ampersand : '&'; +Pipe : '|'; +Bang : '!'; +Caret : '^'; +Plus : '+'; +Minus : '-'; +Asterisk : '*'; +Percent : '%'; +Divide : '/'; +Tilde : '~'; +SuppressWarnings : '@'; +Dollar : '$'; +Dot : '.'; +QuestionMark : '?'; +OpenRoundBracket : '('; +CloseRoundBracket : ')'; +OpenSquareBracket : '['; +CloseSquareBracket : ']'; +OpenCurlyBracket : '{'; +CloseCurlyBracket : '}' { this.PopModeOnCurlyBracketClose(); }; +Comma : ','; +Colon : ':'; +SemiColon : ';'; +Eq : '='; +Quote : '\''; +BackQuote : '`'; + +VarName : '$' NameString; +Label : [a-z_][a-z_0-9]*; +Octal : '0' 'o'? OctalDigit+ ('_' OctalDigit+)*; +Decimal : '0' | NonZeroDigit Digit* ('_' Digit+)*; +Real : (LNum '.' LNum? | LNum? '.' LNum) ExponentPart? | LNum+ ExponentPart; +Hex : '0x' HexDigit+ ('_' HexDigit+)*; +Binary : '0b' [01]+ ('_' [01]+)*; + +BackQuoteString : '`' ~'`'* '`'; +SingleQuoteString : '\'' (~('\'' | '\\') | '\\' .)* '\''; +DoubleQuote : '"' -> pushMode(InterpolationString); + +StartNowDoc: + '<<<' [ \t]* '\'' NameString '\'' { this.ShouldPushHereDocMode(1) }? -> pushMode(HereDoc) +; +StartHereDoc : '<<<' [ \t]* NameString { this.ShouldPushHereDocMode(1) }? -> pushMode(HereDoc); +ErrorPhp : . -> channel(ErrorLexem); + +mode InterpolationString; + +VarNameInInterpolation : '$' NameString -> type(VarName); // TODO: fix such cases: "$people->john" +DollarString : '$' -> type(StringPart); +CurlyDollar: + '{' { this.IsCurlyDollar(1) }? { this.SetInsideString(); } -> channel(SkipChannel), pushMode(PHP) +; +CurlyString : '{' -> type(StringPart); +EscapedChar : '\\' . -> type(StringPart); +DoubleQuoteInInterpolation : '"' -> type(DoubleQuote), popMode; +UnicodeEscape : '\\u{' [a-z0-9][a-z0-9]+ '}'; +StringPart : ~[${\\"]+; + +mode SingleLineCommentMode; + +Comment : ~[\r\n?]+ -> channel(PhpComments); +PHPEndSingleLineComment : '?' '>'; +CommentQuestionMark : '?' -> type(Comment), channel(PhpComments); +CommentEnd : [\r\n] -> channel(SkipChannel), popMode; // exit from comment. + +mode HereDoc; +// TODO: interpolation for heredoc strings. + +HereDocText: ~[\r\n]*? ('\r'? '\n' | '\r'); + +// fragments. +// '<?=' will be transformed to 'echo' token. +// '<?= "Hello world"; ?>' will be transformed to '<?php echo "Hello world"; ?>' +fragment PhpStartEchoFragment : '<' ('?' '=' | { this.HasAspTags() }? '%' '='); +fragment PhpStartFragment : '<' ('?' 'php'? | { this.HasAspTags() }? '%'); +fragment NameString : [a-zA-Z_\u0080-\ufffe][a-zA-Z0-9_\u0080-\ufffe]*; +fragment HtmlNameChar : + HtmlNameStartChar + | '-' + | '_' + | '.' + | Digit + | '\u00B7' + | '\u0300' ..'\u036F' + | '\u203F' ..'\u2040' +; +fragment HtmlNameStartChar : + [:a-zA-Z] + | '\u2070' ..'\u218F' + | '\u2C00' ..'\u2FEF' + | '\u3001' ..'\uD7FF' + | '\uF900' ..'\uFDCF' + | '\uFDF0' ..'\uFFFD' +; +fragment LNum : Digit+ ('_' Digit+)*; +fragment ExponentPart : 'e' [+-]? LNum; +fragment NonZeroDigit : [1-9]; +fragment Digit : [0-9]; +fragment OctalDigit : [0-7]; +fragment HexDigit : [a-f0-9]; \ No newline at end of file diff --git a/app/src/main/antlr/PhpParser.g4 b/app/src/main/antlr/PhpParser.g4 new file mode 100644 index 0000000..3ba7eb3 --- /dev/null +++ b/app/src/main/antlr/PhpParser.g4 @@ -0,0 +1,980 @@ +/* +PHP grammar. +The MIT License (MIT). +Copyright (c) 2015-2020, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. +Copyright (c) 2019-2020, Student Main for php7, php8 support. + +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. +*/ + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +parser grammar PhpParser; + +options { + tokenVocab = PhpLexer; +} + +// HTML +// Also see here: https://github.com/antlr/grammars-v4/tree/master/html + +htmlDocument + : Shebang? (inlineHtml | phpBlock)* EOF + ; + +inlineHtml + : htmlElement+ + | scriptText + ; + +// TODO: split into html, css and xml elements +htmlElement + : HtmlDtd + | HtmlClose + | HtmlStyleOpen + | HtmlOpen + | HtmlName + | HtmlSlashClose + | HtmlSlash + | HtmlText + | HtmlEquals + | HtmlStartQuoteString + | HtmlEndQuoteString + | HtmlStartDoubleQuoteString + | HtmlEndDoubleQuoteString + | HtmlHex + | HtmlDecimal + | HtmlQuoteString + | HtmlDoubleQuoteString + | StyleBody + | HtmlScriptOpen + | HtmlScriptClose + | XmlStart XmlText* XmlClose + ; + +// Script +// Parse JavaScript with https://github.com/antlr/grammars-v4/tree/master/javascript if necessary. + +scriptText + : ScriptText+ + ; + +// PHP + +phpBlock + : importStatement* topStatement+ + ; + +importStatement + : Import Namespace namespaceNameList SemiColon + ; + +topStatement + : statement + | useDeclaration + | namespaceDeclaration + | functionDeclaration + | classDeclaration + | globalConstantDeclaration + | enumDeclaration + ; + +useDeclaration + : Use (Function_ | Const)? useDeclarationContentList SemiColon + ; + +useDeclarationContentList + : '\\'? useDeclarationContent (',' '\\'? useDeclarationContent)* + ; + +useDeclarationContent + : namespaceNameList + ; + +namespaceDeclaration + : Namespace ( + namespaceNameList? OpenCurlyBracket namespaceStatement* CloseCurlyBracket + | namespaceNameList SemiColon + ) + ; + +namespaceStatement + : statement + | useDeclaration + | functionDeclaration + | classDeclaration + | globalConstantDeclaration + ; + +functionDeclaration + : attributes? Function_ '&'? identifier typeParameterListInBrackets? '(' formalParameterList ')' ( + ':' QuestionMark? typeHint + )? blockStatement + ; + +classDeclaration + : attributes? Private? modifier? Partial? ( + classEntryType identifier typeParameterListInBrackets? (Extends qualifiedStaticTypeRef)? ( + Implements interfaceList + )? + | Interface identifier typeParameterListInBrackets? (Extends interfaceList)? + ) OpenCurlyBracket classStatement* CloseCurlyBracket + ; + +classEntryType + : Class + | Trait + ; + +interfaceList + : qualifiedStaticTypeRef (',' qualifiedStaticTypeRef)* + ; + +typeParameterListInBrackets + : '<:' typeParameterList ':>' + | '<:' typeParameterWithDefaultsList ':>' + | '<:' typeParameterList ',' typeParameterWithDefaultsList ':>' + ; + +typeParameterList + : typeParameterDecl (',' typeParameterDecl)* + ; + +typeParameterWithDefaultsList + : typeParameterWithDefaultDecl (',' typeParameterWithDefaultDecl)* + ; + +typeParameterDecl + : attributes? identifier + ; + +typeParameterWithDefaultDecl + : attributes? identifier Eq (qualifiedStaticTypeRef | primitiveType) + ; + +genericDynamicArgs + : '<:' typeRef (',' typeRef)* ':>' + ; + +attributes + : attributeGroup+ + ; + +attributeGroup + : AttributeStart (identifier ':')? attribute (',' attribute)* ']' + ; + +attribute + : qualifiedNamespaceName arguments? + ; + +innerStatementList + : innerStatement* + ; + +innerStatement + : statement + | functionDeclaration + | classDeclaration + ; + +// Statements + +statement + : identifier ':' + | blockStatement + | ifStatement + | whileStatement + | doWhileStatement + | forStatement + | switchStatement + | breakStatement + | continueStatement + | returnStatement + | yieldExpression SemiColon + | globalStatement + | staticVariableStatement + | echoStatement + | expressionStatement + | unsetStatement + | foreachStatement + | tryCatchFinally + | throwStatement + | gotoStatement + | declareStatement + | emptyStatement_ + | inlineHtmlStatement + ; + +emptyStatement_ + : SemiColon + ; + +blockStatement + : OpenCurlyBracket innerStatementList CloseCurlyBracket + ; + +ifStatement + : If parentheses statement elseIfStatement* elseStatement? + | If parentheses ':' innerStatementList elseIfColonStatement* elseColonStatement? EndIf SemiColon + ; + +elseIfStatement + : ElseIf parentheses statement + ; + +elseIfColonStatement + : ElseIf parentheses ':' innerStatementList + ; + +elseStatement + : Else statement + ; + +elseColonStatement + : Else ':' innerStatementList + ; + +whileStatement + : While parentheses (statement | ':' innerStatementList EndWhile SemiColon) + ; + +doWhileStatement + : Do statement While parentheses SemiColon + ; + +forStatement + : For '(' forInit? SemiColon expressionList? SemiColon forUpdate? ')' ( + statement + | ':' innerStatementList EndFor SemiColon + ) + ; + +forInit + : expressionList + ; + +forUpdate + : expressionList + ; + +switchStatement + : Switch parentheses ( + OpenCurlyBracket SemiColon? switchBlock* CloseCurlyBracket + | ':' SemiColon? switchBlock* EndSwitch SemiColon + ) + ; + +switchBlock + : ((Case expression | Default) (':' | SemiColon))+ innerStatementList + ; + +breakStatement + : Break expression? SemiColon + ; + +continueStatement + : Continue expression? SemiColon + ; + +returnStatement + : Return expression? SemiColon + ; + +expressionStatement + : expression SemiColon + ; + +unsetStatement + : Unset '(' chainList ')' SemiColon + ; + +foreachStatement + : Foreach ( + '(' expression As arrayDestructuring ')' + | '(' chain As '&'? assignable ('=>' '&'? chain)? ')' + | '(' expression As assignable ('=>' '&'? chain)? ')' + | '(' chain As List '(' assignmentList ')' ')' + ) (statement | ':' innerStatementList EndForeach SemiColon) + ; + +tryCatchFinally + : Try blockStatement (catchClause+ finallyStatement? | catchClause* finallyStatement) + ; + +catchClause + : Catch '(' qualifiedStaticTypeRef ('|' qualifiedStaticTypeRef)* VarName? ')' blockStatement + ; + +finallyStatement + : Finally blockStatement + ; + +throwStatement + : Throw expression SemiColon + ; + +gotoStatement + : Goto identifier SemiColon + ; + +declareStatement + : Declare '(' declareList ')' (statement | ':' innerStatementList EndDeclare SemiColon) + ; + +inlineHtmlStatement + : inlineHtml+ + ; + +declareList + : directive (',' directive)* + ; + +directive + : Ticks Eq (numericConstant | Real) + | Encoding Eq SingleQuoteString + | StrictTypes Eq numericConstant + ; + +formalParameterList + : formalParameter? (',' formalParameter)* ','? + ; + +formalParameter + : attributes? memberModifier* QuestionMark? typeHint? '&'? '...'? variableInitializer + ; + +typeHint + : qualifiedStaticTypeRef + | Callable + | primitiveType + | typeHint '|' typeHint + ; + +globalStatement + : Global globalVar (',' globalVar)* SemiColon + ; + +globalVar + : VarName + | Dollar chain + | Dollar OpenCurlyBracket expression CloseCurlyBracket + ; + +echoStatement + : Echo expressionList SemiColon + ; + +staticVariableStatement + : Static variableInitializer (',' variableInitializer)* SemiColon + ; + +classStatement + : attributes? ( + propertyModifiers typeHint? variableInitializer (',' variableInitializer)* SemiColon + | memberModifiers? ( + Const typeHint? identifierInitializer (',' identifierInitializer)* SemiColon + | Function_ '&'? identifier typeParameterListInBrackets? '(' formalParameterList ')' ( + baseCtorCall + | returnTypeDecl + )? methodBody + ) + ) + | Use qualifiedNamespaceNameList traitAdaptations + ; + +traitAdaptations + : SemiColon + | OpenCurlyBracket traitAdaptationStatement* CloseCurlyBracket + ; + +traitAdaptationStatement + : traitPrecedence + | traitAlias + ; + +traitPrecedence + : qualifiedNamespaceName '::' identifier InsteadOf qualifiedNamespaceNameList SemiColon + ; + +traitAlias + : traitMethodReference As (memberModifier | memberModifier? identifier) SemiColon + ; + +traitMethodReference + : (qualifiedNamespaceName '::')? identifier + ; + +baseCtorCall + : ':' identifier arguments? + ; + +returnTypeDecl + : ':' QuestionMark? typeHint + ; + +methodBody + : SemiColon + | blockStatement + ; + +propertyModifiers + : memberModifiers + | Var + ; + +memberModifiers + : memberModifier+ + ; + +variableInitializer + : VarName (Eq constantInitializer)? + ; + +identifierInitializer + : identifier Eq constantInitializer + ; + +globalConstantDeclaration + : attributes? Const identifierInitializer (',' identifierInitializer)* SemiColon + ; + +enumDeclaration + : Enum_ identifier (Colon (IntType | StringType))? (Implements interfaceList)? OpenCurlyBracket enumItem* CloseCurlyBracket + ; + +enumItem + : Case identifier (Eq expression)? SemiColon + | memberModifiers? functionDeclaration + | Use qualifiedNamespaceNameList traitAdaptations + ; + +expressionList + : expression (',' expression)* + ; + +parentheses + : '(' (expression | yieldExpression) ')' + ; + +// Expressions +// Grouped by priorities: http://php.net/manual/en/language.operators.precedence.php +expression + : Clone expression # CloneExpression + | newExpr # NewExpression + | stringConstant '[' expression ']' # IndexerExpression + | '(' castOperation ')' expression # CastExpression + | ('~' | '@') expression # UnaryOperatorExpression + | ('!' | '+' | '-') expression # UnaryOperatorExpression + | ('++' | '--') chain # PrefixIncDecExpression + | chain ('++' | '--') # PostfixIncDecExpression + | Print expression # PrintExpression + | arrayCreation # ArrayCreationExpression + | chain # ChainExpression + | constant # ScalarExpression + | string # ScalarExpression + | Label # ScalarExpression + | BackQuoteString # BackQuoteStringExpression + | parentheses # ParenthesisExpression + | Yield # SpecialWordExpression + | List '(' assignmentList ')' Eq expression # SpecialWordExpression + | IsSet '(' chainList ')' # SpecialWordExpression + | Empty '(' chain ')' # SpecialWordExpression + | Eval '(' expression ')' # SpecialWordExpression + | Exit ( '(' ')' | parentheses)? # SpecialWordExpression + | (Include | IncludeOnce) expression # SpecialWordExpression + | (Require | RequireOnce) expression # SpecialWordExpression + | lambdaFunctionExpr # LambdaFunctionExpression + | matchExpr # MatchExpression + | <assoc = right> expression op = '**' expression # ArithmeticExpression + | expression InstanceOf typeRef # InstanceOfExpression + | expression op = ('*' | Divide | '%') expression # ArithmeticExpression + | expression op = ('+' | '-' | '.') expression # ArithmeticExpression + | expression op = ('<<' | '>>') expression # ComparisonExpression + | expression op = (Less | '<=' | Greater | '>=') expression # ComparisonExpression + | expression op = ('===' | '!==' | '==' | IsNotEq) expression # ComparisonExpression + | expression op = '&' expression # BitwiseExpression + | expression op = '^' expression # BitwiseExpression + | expression op = '|' expression # BitwiseExpression + | expression op = '&&' expression # BitwiseExpression + | expression op = '||' expression # BitwiseExpression + | expression op = QuestionMark expression? ':' expression # ConditionalExpression + | expression op = '??' expression # NullCoalescingExpression + | expression op = '<=>' expression # SpaceshipExpression + | Throw expression # SpecialWordExpression + | arrayDestructuring Eq expression # ArrayDestructExpression + | assignable assignmentOperator attributes? expression # AssignmentExpression + | assignable Eq attributes? '&' (chain | newExpr) # AssignmentExpression + | expression op = LogicalAnd expression # LogicalExpression + | expression op = LogicalXor expression # LogicalExpression + | expression op = LogicalOr expression # LogicalExpression + ; + +assignable + : chain + | arrayCreation + ; + +arrayCreation + : (Array '(' arrayItemList? ')' | '[' arrayItemList? ']') ('[' expression ']')? + ; + +arrayDestructuring + : '[' ','* indexedDestructItem (','+ indexedDestructItem)* ','* ']' + | '[' keyedDestructItem (','+ keyedDestructItem)* ','? ']' + ; + +indexedDestructItem + : '&'? chain + ; + +keyedDestructItem + : (expression '=>')? '&'? chain + ; + +lambdaFunctionExpr + : Static? Function_ '&'? '(' formalParameterList ')' lambdaFunctionUseVars? (':' typeHint)? blockStatement + | LambdaFn '(' formalParameterList ')' '=>' expression + ; + +matchExpr + : Match_ '(' expression ')' OpenCurlyBracket matchItem (',' matchItem)* ','? CloseCurlyBracket + ; + +matchItem + : expression (',' expression)* '=>' expression + ; + +newExpr + : New typeRef arguments? + ; + +assignmentOperator + : Eq + | '+=' + | '-=' + | '*=' + | '**=' + | '/=' + | '.=' + | '%=' + | '&=' + | '|=' + | '^=' + | '<<=' + | '>>=' + | '??=' + ; + +yieldExpression + : Yield (expression ('=>' expression)? | From expression) + ; + +arrayItemList + : arrayItem (',' arrayItem)* ','? + ; + +arrayItem + : expression ('=>' expression)? + | (expression '=>')? '&' chain + ; + +lambdaFunctionUseVars + : Use '(' lambdaFunctionUseVar (',' lambdaFunctionUseVar)* ')' + ; + +lambdaFunctionUseVar + : '&'? VarName + ; + +qualifiedStaticTypeRef + : qualifiedNamespaceName genericDynamicArgs? + | Static + ; + +typeRef + : (qualifiedNamespaceName | indirectTypeRef) genericDynamicArgs? + | primitiveType + | Static + | anonymousClass + ; + +anonymousClass + : attributes? Private? modifier? Partial? ( + classEntryType typeParameterListInBrackets? (Extends qualifiedStaticTypeRef)? ( + Implements interfaceList + )? + | Interface identifier typeParameterListInBrackets? (Extends interfaceList)? + ) OpenCurlyBracket classStatement* CloseCurlyBracket + ; + +indirectTypeRef + : chainBase ('->' keyedFieldName)* + ; + +qualifiedNamespaceName + : Namespace? '\\'? namespaceNameList + ; + +namespaceNameList + : identifier + | identifier ('\\' identifier)* ('\\' namespaceNameTail)? + ; + +namespaceNameTail + : identifier (As identifier)? + | OpenCurlyBracket namespaceNameTail (',' namespaceNameTail)* ','? CloseCurlyBracket + ; + +qualifiedNamespaceNameList + : qualifiedNamespaceName (',' qualifiedNamespaceName)* + ; + +arguments + : '(' (actualArgument (',' actualArgument)* | yieldExpression)? ','? ')' + ; + +actualArgument + : argumentName? '...'? expression + | '&' chain + ; + +argumentName + : identifier ':' + ; + +constantInitializer + : constant + | string + | Array '(' (arrayItemList ','?)? ')' + | '[' (arrayItemList ','?)? ']' + | ('+' | '-') constantInitializer + | (string | constant) ('.' (string | constant))* + ; + +constant + : Null + | literalConstant + | magicConstant + | classConstant + | qualifiedNamespaceName + ; + +literalConstant + : Real + | BooleanConstant + | numericConstant + | stringConstant + ; + +numericConstant + : Octal + | Decimal + | Hex + | Binary + ; + +classConstant + : (Class | Parent_) '::' (identifier | Constructor | Get | Set) + | (qualifiedStaticTypeRef | keyedVariable | string) '::' ( + identifier + | keyedVariable + ) // 'foo'::$bar works in php7 + ; + +stringConstant + : Label + ; + +string + : StartHereDoc HereDocText+ + | StartNowDoc HereDocText+ + | SingleQuoteString + | DoubleQuote interpolatedStringPart* DoubleQuote + ; + +interpolatedStringPart + : StringPart + | UnicodeEscape + | chain + ; + +chainList + : chain (',' chain)* + ; + +chain + : chainOrigin memberAccess* + //| arrayCreation // [$a,$b]=$c + ; + +chainOrigin + : chainBase + | functionCall + | '(' newExpr ')' + ; + +memberAccess + : '->' keyedFieldName actualArguments? + ; + +functionCall + : functionCallName actualArguments + ; + +functionCallName + : qualifiedNamespaceName + | classConstant + | chainBase + | parentheses + ; + +actualArguments + : genericDynamicArgs? arguments+ squareCurlyExpression* + ; + +chainBase + : keyedVariable ('::' keyedVariable)? + | qualifiedStaticTypeRef '::' keyedVariable + ; + +keyedFieldName + : keyedSimpleFieldName + | keyedVariable + ; + +keyedSimpleFieldName + : (identifier | OpenCurlyBracket expression CloseCurlyBracket) squareCurlyExpression* + ; + +keyedVariable + : Dollar* (VarName | Dollar OpenCurlyBracket expression CloseCurlyBracket) squareCurlyExpression* + ; + +squareCurlyExpression + : '[' expression? ']' + | OpenCurlyBracket expression CloseCurlyBracket + ; + +assignmentList + : assignmentListElement? (',' assignmentListElement?)* + ; + +assignmentListElement + : chain + | List '(' assignmentList ')' + | arrayItem + ; + +modifier + : Abstract + | Final + ; + +identifier + : Label + | Abstract + | Array + | As + | BinaryCast + | BoolType + | BooleanConstant + | Break + | Callable + | Case + | Catch + | Class + | Clone + | Const + | Continue + | Declare + | Default + | Do + | DoubleCast + | DoubleType + | Echo + | Else + | ElseIf + | Empty + | EndDeclare + | EndFor + | EndForeach + | EndIf + | EndSwitch + | EndWhile + | Eval + | Exit + | Extends + | Final + | Finally + | FloatCast + | For + | Foreach + | Function_ + | Global + | Goto + | If + | Implements + | Import + | Include + | IncludeOnce + | InstanceOf + | InsteadOf + | Int16Cast + | Int64Type + | Int8Cast + | Interface + | IntType + | IsSet + | LambdaFn + | List + | LogicalAnd + | LogicalOr + | LogicalXor + | Namespace + | New + | Null + | ObjectType + | Parent_ + | Partial + | Print + | Private + | Protected + | Public + | Readonly + | Require + | RequireOnce + | Resource + | Return + | Static + | StringType + | Switch + | Throw + | Trait + | Try + | Typeof + | UintCast + | UnicodeCast + | Unset + | Use + | Var + | While + | Yield + | From + | Enum_ + | Match_ + | Ticks + | Encoding + | StrictTypes + | Get + | Set + | Call + | CallStatic + | Constructor + | Destruct + | Wakeup + | Sleep + | Autoload + | IsSet__ + | Unset__ + | ToString__ + | Invoke + | SetState + | Clone__ + | DebugInfo + | Namespace__ + | Class__ + | Traic__ + | Function__ + | Method__ + | Line__ + | File__ + | Dir__ + ; + +memberModifier + : Public + | Protected + | Private + | Static + | Abstract + | Final + | Readonly + ; + +magicConstant + : Namespace__ + | Class__ + | Traic__ + | Function__ + | Method__ + | Line__ + | File__ + | Dir__ + ; + +magicMethod + : Get + | Set + | Call + | CallStatic + | Constructor + | Destruct + | Wakeup + | Sleep + | Autoload + | IsSet__ + | Unset__ + | ToString__ + | Invoke + | SetState + | Clone__ + | DebugInfo + ; + +primitiveType + : BoolType + | IntType + | Int64Type + | DoubleType + | StringType + | Resource + | ObjectType + | Array + ; + +castOperation + : BoolType + | Int8Cast + | Int16Cast + | IntType + | Int64Type + | UintCast + | DoubleCast + | DoubleType + | FloatCast + | StringType + | BinaryCast + | UnicodeCast + | Array + | ObjectType + | Resource + | Unset + ; \ No newline at end of file diff --git a/app/src/main/java/antlr/PhpLexer.java b/app/src/main/java/antlr/PhpLexer.java new file mode 100644 index 0000000..c47ccf0 --- /dev/null +++ b/app/src/main/java/antlr/PhpLexer.java @@ -0,0 +1,1271 @@ +package antlr; + +// Generated from PhpLexer.g4 by ANTLR 4.5 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class PhpLexer extends PhpLexerBase { + static { RuntimeMetaData.checkVersion("4.5", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + SeaWhitespace=1, HtmlText=2, XmlStart=3, PHPStart=4, HtmlScriptOpen=5, + HtmlStyleOpen=6, HtmlComment=7, HtmlDtd=8, HtmlOpen=9, Shebang=10, Error=11, + XmlText=12, XmlClose=13, PHPStartInside=14, HtmlClose=15, HtmlSlashClose=16, + HtmlSlash=17, HtmlEquals=18, HtmlStartQuoteString=19, HtmlStartDoubleQuoteString=20, + HtmlHex=21, HtmlDecimal=22, HtmlSpace=23, HtmlName=24, ErrorInside=25, + PHPStartInsideQuoteString=26, HtmlEndQuoteString=27, HtmlQuoteString=28, + ErrorHtmlQuote=29, PHPStartDoubleQuoteString=30, HtmlEndDoubleQuoteString=31, + HtmlDoubleQuoteString=32, ErrorHtmlDoubleQuote=33, ScriptText=34, HtmlScriptClose=35, + PHPStartInsideScript=36, StyleBody=37, PHPEnd=38, Whitespace=39, MultiLineComment=40, + SingleLineComment=41, ShellStyleComment=42, AttributeStart=43, Abstract=44, + Array=45, As=46, BinaryCast=47, BoolType=48, BooleanConstant=49, Break=50, + Callable=51, Case=52, Catch=53, Class=54, Clone=55, Const=56, Continue=57, + Declare=58, Default=59, Do=60, DoubleCast=61, DoubleType=62, Echo=63, + Else=64, ElseIf=65, Empty=66, Enum_=67, EndDeclare=68, EndFor=69, EndForeach=70, + EndIf=71, EndSwitch=72, EndWhile=73, Eval=74, Exit=75, Extends=76, Final=77, + Finally=78, FloatCast=79, For=80, Foreach=81, Function_=82, Global=83, + Goto=84, If=85, Implements=86, Import=87, Include=88, IncludeOnce=89, + InstanceOf=90, InsteadOf=91, Int8Cast=92, Int16Cast=93, Int64Type=94, + IntType=95, Interface=96, IsSet=97, List=98, LogicalAnd=99, LogicalOr=100, + LogicalXor=101, Match_=102, Namespace=103, New=104, Null=105, ObjectType=106, + Parent_=107, Partial=108, Print=109, Private=110, Protected=111, Public=112, + Readonly=113, Require=114, RequireOnce=115, Resource=116, Return=117, + Static=118, StringType=119, Switch=120, Throw=121, Trait=122, Try=123, + Typeof=124, UintCast=125, UnicodeCast=126, Unset=127, Use=128, Var=129, + While=130, Yield=131, From=132, LambdaFn=133, Ticks=134, Encoding=135, + StrictTypes=136, Get=137, Set=138, Call=139, CallStatic=140, Constructor=141, + Destruct=142, Wakeup=143, Sleep=144, Autoload=145, IsSet__=146, Unset__=147, + ToString__=148, Invoke=149, SetState=150, Clone__=151, DebugInfo=152, + Namespace__=153, Class__=154, Traic__=155, Function__=156, Method__=157, + Line__=158, File__=159, Dir__=160, Spaceship=161, Lgeneric=162, Rgeneric=163, + DoubleArrow=164, Inc=165, Dec=166, IsIdentical=167, IsNoidentical=168, + IsEqual=169, IsNotEq=170, IsSmallerOrEqual=171, IsGreaterOrEqual=172, + PlusEqual=173, MinusEqual=174, MulEqual=175, Pow=176, PowEqual=177, DivEqual=178, + Concaequal=179, ModEqual=180, ShiftLeftEqual=181, ShiftRightEqual=182, + AndEqual=183, OrEqual=184, XorEqual=185, BooleanOr=186, BooleanAnd=187, + NullCoalescing=188, NullCoalescingEqual=189, ShiftLeft=190, ShiftRight=191, + DoubleColon=192, ObjectOperator=193, NamespaceSeparator=194, Ellipsis=195, + Less=196, Greater=197, Ampersand=198, Pipe=199, Bang=200, Caret=201, Plus=202, + Minus=203, Asterisk=204, Percent=205, Divide=206, Tilde=207, SuppressWarnings=208, + Dollar=209, Dot=210, QuestionMark=211, OpenRoundBracket=212, CloseRoundBracket=213, + OpenSquareBracket=214, CloseSquareBracket=215, OpenCurlyBracket=216, CloseCurlyBracket=217, + Comma=218, Colon=219, SemiColon=220, Eq=221, Quote=222, BackQuote=223, + VarName=224, Label=225, Octal=226, Decimal=227, Real=228, Hex=229, Binary=230, + BackQuoteString=231, SingleQuoteString=232, DoubleQuote=233, StartNowDoc=234, + StartHereDoc=235, ErrorPhp=236, CurlyDollar=237, UnicodeEscape=238, StringPart=239, + Comment=240, PHPEndSingleLineComment=241, CommentEnd=242, HereDocText=243, + XmlText2=244; + public static final int + PhpComments=2, ErrorLexem=3, SkipChannel=4; + public static final int XML = 1; + public static final int INSIDE = 2; + public static final int HtmlQuoteStringMode = 3; + public static final int HtmlDoubleQuoteStringMode = 4; + public static final int SCRIPT = 5; + public static final int STYLE = 6; + public static final int PHP = 7; + public static final int InterpolationString = 8; + public static final int SingleLineCommentMode = 9; + public static final int HereDoc = 10; + public static String[] modeNames = { + "DEFAULT_MODE", "XML", "INSIDE", "HtmlQuoteStringMode", "HtmlDoubleQuoteStringMode", + "SCRIPT", "STYLE", "PHP", "InterpolationString", "SingleLineCommentMode", + "HereDoc" + }; + + public static final String[] ruleNames = { + "SeaWhitespace", "HtmlText", "XmlStart", "PHPStartEcho", "PHPStart", "HtmlScriptOpen", + "HtmlStyleOpen", "HtmlComment", "HtmlDtd", "HtmlOpen", "Shebang", "NumberSign", + "Error", "XmlText", "XmlClose", "XmlText2", "PHPStartEchoInside", "PHPStartInside", + "HtmlClose", "HtmlSlashClose", "HtmlSlash", "HtmlEquals", "HtmlStartQuoteString", + "HtmlStartDoubleQuoteString", "HtmlHex", "HtmlDecimal", "HtmlSpace", "HtmlName", + "ErrorInside", "PHPStartEchoInsideQuoteString", "PHPStartInsideQuoteString", + "HtmlEndQuoteString", "HtmlQuoteString", "ErrorHtmlQuote", "PHPStartEchoDoubleQuoteString", + "PHPStartDoubleQuoteString", "HtmlEndDoubleQuoteString", "HtmlDoubleQuoteString", + "ErrorHtmlDoubleQuote", "ScriptText", "HtmlScriptClose", "PHPStartInsideScriptEcho", + "PHPStartInsideScript", "ScriptText2", "StyleBody", "PHPEnd", "Whitespace", + "MultiLineComment", "SingleLineComment", "ShellStyleComment", "AttributeStart", + "Abstract", "Array", "As", "BinaryCast", "BoolType", "BooleanConstant", + "Break", "Callable", "Case", "Catch", "Class", "Clone", "Const", "Continue", + "Declare", "Default", "Do", "DoubleCast", "DoubleType", "Echo", "Else", + "ElseIf", "Empty", "Enum_", "EndDeclare", "EndFor", "EndForeach", "EndIf", + "EndSwitch", "EndWhile", "Eval", "Exit", "Extends", "Final", "Finally", + "FloatCast", "For", "Foreach", "Function_", "Global", "Goto", "If", "Implements", + "Import", "Include", "IncludeOnce", "InstanceOf", "InsteadOf", "Int8Cast", + "Int16Cast", "Int64Type", "IntType", "Interface", "IsSet", "List", "LogicalAnd", + "LogicalOr", "LogicalXor", "Match_", "Namespace", "New", "Null", "ObjectType", + "Parent_", "Partial", "Print", "Private", "Protected", "Public", "Readonly", + "Require", "RequireOnce", "Resource", "Return", "Static", "StringType", + "Switch", "Throw", "Trait", "Try", "Typeof", "UintCast", "UnicodeCast", + "Unset", "Use", "Var", "While", "Yield", "From", "LambdaFn", "Ticks", + "Encoding", "StrictTypes", "Get", "Set", "Call", "CallStatic", "Constructor", + "Destruct", "Wakeup", "Sleep", "Autoload", "IsSet__", "Unset__", "ToString__", + "Invoke", "SetState", "Clone__", "DebugInfo", "Namespace__", "Class__", + "Traic__", "Function__", "Method__", "Line__", "File__", "Dir__", "Spaceship", + "Lgeneric", "Rgeneric", "DoubleArrow", "Inc", "Dec", "IsIdentical", "IsNoidentical", + "IsEqual", "IsNotEq", "IsSmallerOrEqual", "IsGreaterOrEqual", "PlusEqual", + "MinusEqual", "MulEqual", "Pow", "PowEqual", "DivEqual", "Concaequal", + "ModEqual", "ShiftLeftEqual", "ShiftRightEqual", "AndEqual", "OrEqual", + "XorEqual", "BooleanOr", "BooleanAnd", "NullCoalescing", "NullCoalescingEqual", + "ShiftLeft", "ShiftRight", "DoubleColon", "ObjectOperator", "NamespaceSeparator", + "Ellipsis", "Less", "Greater", "Ampersand", "Pipe", "Bang", "Caret", "Plus", + "Minus", "Asterisk", "Percent", "Divide", "Tilde", "SuppressWarnings", + "Dollar", "Dot", "QuestionMark", "OpenRoundBracket", "CloseRoundBracket", + "OpenSquareBracket", "CloseSquareBracket", "OpenCurlyBracket", "CloseCurlyBracket", + "Comma", "Colon", "SemiColon", "Eq", "Quote", "BackQuote", "VarName", + "Label", "Octal", "Decimal", "Real", "Hex", "Binary", "BackQuoteString", + "SingleQuoteString", "DoubleQuote", "StartNowDoc", "StartHereDoc", "ErrorPhp", + "VarNameInInterpolation", "DollarString", "CurlyDollar", "CurlyString", + "EscapedChar", "DoubleQuoteInInterpolation", "UnicodeEscape", "StringPart", + "Comment", "PHPEndSingleLineComment", "CommentQuestionMark", "CommentEnd", + "HereDocText", "PhpStartEchoFragment", "PhpStartFragment", "NameString", + "HtmlNameChar", "HtmlNameStartChar", "LNum", "ExponentPart", "NonZeroDigit", + "Digit", "OctalDigit", "HexDigit" + }; + + private static final String[] _LITERAL_NAMES = { + null, null, null, "'<?xml'", null, null, null, null, null, null, null, + null, null, "'?>'", null, null, "'/>'", null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, "'#['", "'abstract'", + "'array'", "'as'", "'binary'", null, null, "'break'", "'callable'", "'case'", + "'catch'", "'class'", "'clone'", "'const'", "'continue'", "'declare'", + "'default'", "'do'", "'real'", "'double'", "'echo'", "'else'", "'elseif'", + "'empty'", "'enum'", "'enddeclare'", "'endfor'", "'endforeach'", "'endif'", + "'endswitch'", "'endwhile'", "'eval'", "'die'", "'extends'", "'final'", + "'finally'", "'float'", "'for'", "'foreach'", "'function'", "'global'", + "'goto'", "'if'", "'implements'", "'import'", "'include'", "'include_once'", + "'instanceof'", "'insteadof'", "'int8'", "'int16'", "'int64'", null, "'interface'", + "'isset'", "'list'", "'and'", "'or'", "'xor'", "'match'", "'namespace'", + "'new'", "'null'", "'object'", "'parent'", "'partial'", "'print'", "'private'", + "'protected'", "'public'", "'readonly'", "'require'", "'require_once'", + "'resource'", "'return'", "'static'", "'string'", "'switch'", "'throw'", + "'trait'", "'try'", "'clrtypeof'", null, "'unicode'", "'unset'", "'use'", + "'var'", "'while'", "'yield'", "'from'", "'fn'", "'ticks'", "'encoding'", + "'strict_types'", "'__get'", "'__set'", "'__call'", "'__callstatic'", + "'__construct'", "'__destruct'", "'__wakeup'", "'__sleep'", "'__autoload'", + "'__isset'", "'__unset'", "'__tostring'", "'__invoke'", "'__set_state'", + "'__clone'", "'__debuginfo'", "'__namespace__'", "'__class__'", "'__trait__'", + "'__function__'", "'__method__'", "'__line__'", "'__file__'", "'__dir__'", + "'<=>'", "'<:'", "':>'", "'=>'", "'++'", "'--'", "'==='", "'!=='", "'=='", + null, "'<='", "'>='", "'+='", "'-='", "'*='", "'**'", "'**='", "'/='", + "'.='", "'%='", "'<<='", "'>>='", "'&='", "'|='", "'^='", "'||'", "'&&'", + "'??'", "'??='", "'<<'", "'>>'", "'::'", "'->'", "'\\'", "'...'", null, + null, "'&'", "'|'", "'!'", "'^'", "'+'", "'-'", "'*'", "'%'", null, "'~'", + "'@'", null, "'.'", null, "'('", "')'", "'['", "']'", null, "'}'", "','", + "':'", "';'", null, "'''", "'`'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, "SeaWhitespace", "HtmlText", "XmlStart", "PHPStart", "HtmlScriptOpen", + "HtmlStyleOpen", "HtmlComment", "HtmlDtd", "HtmlOpen", "Shebang", "Error", + "XmlText", "XmlClose", "PHPStartInside", "HtmlClose", "HtmlSlashClose", + "HtmlSlash", "HtmlEquals", "HtmlStartQuoteString", "HtmlStartDoubleQuoteString", + "HtmlHex", "HtmlDecimal", "HtmlSpace", "HtmlName", "ErrorInside", "PHPStartInsideQuoteString", + "HtmlEndQuoteString", "HtmlQuoteString", "ErrorHtmlQuote", "PHPStartDoubleQuoteString", + "HtmlEndDoubleQuoteString", "HtmlDoubleQuoteString", "ErrorHtmlDoubleQuote", + "ScriptText", "HtmlScriptClose", "PHPStartInsideScript", "StyleBody", + "PHPEnd", "Whitespace", "MultiLineComment", "SingleLineComment", "ShellStyleComment", + "AttributeStart", "Abstract", "Array", "As", "BinaryCast", "BoolType", + "BooleanConstant", "Break", "Callable", "Case", "Catch", "Class", "Clone", + "Const", "Continue", "Declare", "Default", "Do", "DoubleCast", "DoubleType", + "Echo", "Else", "ElseIf", "Empty", "Enum_", "EndDeclare", "EndFor", "EndForeach", + "EndIf", "EndSwitch", "EndWhile", "Eval", "Exit", "Extends", "Final", + "Finally", "FloatCast", "For", "Foreach", "Function_", "Global", "Goto", + "If", "Implements", "Import", "Include", "IncludeOnce", "InstanceOf", + "InsteadOf", "Int8Cast", "Int16Cast", "Int64Type", "IntType", "Interface", + "IsSet", "List", "LogicalAnd", "LogicalOr", "LogicalXor", "Match_", "Namespace", + "New", "Null", "ObjectType", "Parent_", "Partial", "Print", "Private", + "Protected", "Public", "Readonly", "Require", "RequireOnce", "Resource", + "Return", "Static", "StringType", "Switch", "Throw", "Trait", "Try", "Typeof", + "UintCast", "UnicodeCast", "Unset", "Use", "Var", "While", "Yield", "From", + "LambdaFn", "Ticks", "Encoding", "StrictTypes", "Get", "Set", "Call", + "CallStatic", "Constructor", "Destruct", "Wakeup", "Sleep", "Autoload", + "IsSet__", "Unset__", "ToString__", "Invoke", "SetState", "Clone__", "DebugInfo", + "Namespace__", "Class__", "Traic__", "Function__", "Method__", "Line__", + "File__", "Dir__", "Spaceship", "Lgeneric", "Rgeneric", "DoubleArrow", + "Inc", "Dec", "IsIdentical", "IsNoidentical", "IsEqual", "IsNotEq", "IsSmallerOrEqual", + "IsGreaterOrEqual", "PlusEqual", "MinusEqual", "MulEqual", "Pow", "PowEqual", + "DivEqual", "Concaequal", "ModEqual", "ShiftLeftEqual", "ShiftRightEqual", + "AndEqual", "OrEqual", "XorEqual", "BooleanOr", "BooleanAnd", "NullCoalescing", + "NullCoalescingEqual", "ShiftLeft", "ShiftRight", "DoubleColon", "ObjectOperator", + "NamespaceSeparator", "Ellipsis", "Less", "Greater", "Ampersand", "Pipe", + "Bang", "Caret", "Plus", "Minus", "Asterisk", "Percent", "Divide", "Tilde", + "SuppressWarnings", "Dollar", "Dot", "QuestionMark", "OpenRoundBracket", + "CloseRoundBracket", "OpenSquareBracket", "CloseSquareBracket", "OpenCurlyBracket", + "CloseCurlyBracket", "Comma", "Colon", "SemiColon", "Eq", "Quote", "BackQuote", + "VarName", "Label", "Octal", "Decimal", "Real", "Hex", "Binary", "BackQuoteString", + "SingleQuoteString", "DoubleQuote", "StartNowDoc", "StartHereDoc", "ErrorPhp", + "CurlyDollar", "UnicodeEscape", "StringPart", "Comment", "PHPEndSingleLineComment", + "CommentEnd", "HereDocText", "XmlText2" + }; + 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] = "<INVALID>"; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public PhpLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "PhpLexer.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @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 5: + HtmlScriptOpen_action((RuleContext)_localctx, actionIndex); + break; + case 6: + HtmlStyleOpen_action((RuleContext)_localctx, actionIndex); + break; + case 18: + HtmlClose_action((RuleContext)_localctx, actionIndex); + break; + case 224: + CloseCurlyBracket_action((RuleContext)_localctx, actionIndex); + break; + case 246: + CurlyDollar_action((RuleContext)_localctx, actionIndex); + break; + } + } + private void HtmlScriptOpen_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 0: + this._scriptTag = true; + break; + } + } + private void HtmlStyleOpen_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 1: + this._styleTag = true; + break; + } + } + private void HtmlClose_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 2: + this.PushModeOnHtmlClose(); + break; + } + } + private void CloseCurlyBracket_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 3: + this.PopModeOnCurlyBracketClose(); + break; + } + } + private void CurlyDollar_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 4: + this.SetInsideString(); + break; + } + } + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 10: + return Shebang_sempred((RuleContext)_localctx, predIndex); + case 45: + return PHPEnd_sempred((RuleContext)_localctx, predIndex); + case 241: + return StartNowDoc_sempred((RuleContext)_localctx, predIndex); + case 242: + return StartHereDoc_sempred((RuleContext)_localctx, predIndex); + case 246: + return CurlyDollar_sempred((RuleContext)_localctx, predIndex); + case 257: + return PhpStartEchoFragment_sempred((RuleContext)_localctx, predIndex); + case 258: + return PhpStartFragment_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean Shebang_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return this.IsNewLineOrStart(-2) ; + } + return true; + } + private boolean PHPEnd_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return this.HasAspTags(); + case 2: + return this.HasPhpScriptTag(); + } + return true; + } + private boolean StartNowDoc_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return this.ShouldPushHereDocMode(1) ; + } + return true; + } + private boolean StartHereDoc_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 4: + return this.ShouldPushHereDocMode(1) ; + } + return true; + } + private boolean CurlyDollar_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 5: + return this.IsCurlyDollar(1) ; + } + return true; + } + private boolean PhpStartEchoFragment_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 6: + return this.HasAspTags() ; + } + return true; + } + private boolean PhpStartFragment_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 7: + return this.HasAspTags() ; + } + return true; + } + + public static final String _serializedATN = + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2\u00f6\u08e4\b\1\b"+ + "\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5"+ + "\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16"+ + "\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25"+ + "\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34"+ + "\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4"+ + "%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60"+ + "\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67"+ + "\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\t"+ + "B\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4"+ + "N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\t"+ + "Y\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td"+ + "\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p"+ + "\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{"+ + "\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080\4\u0081\t\u0081\4\u0082"+ + "\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086"+ + "\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b"+ + "\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e\4\u008f\t\u008f"+ + "\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094"+ + "\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098"+ + "\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c\4\u009d"+ + "\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0\t\u00a0\4\u00a1\t\u00a1"+ + "\4\u00a2\t\u00a2\4\u00a3\t\u00a3\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6"+ + "\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa"+ + "\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae\t\u00ae\4\u00af"+ + "\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1\4\u00b2\t\u00b2\4\u00b3\t\u00b3"+ + "\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8"+ + "\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc\t\u00bc"+ + "\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf\4\u00c0\t\u00c0\4\u00c1"+ + "\t\u00c1\4\u00c2\t\u00c2\4\u00c3\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5"+ + "\4\u00c6\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca"+ + "\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd\t\u00cd\4\u00ce\t\u00ce"+ + "\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1\t\u00d1\4\u00d2\t\u00d2\4\u00d3"+ + "\t\u00d3\4\u00d4\t\u00d4\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7"+ + "\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da\4\u00db\t\u00db\4\u00dc"+ + "\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df\t\u00df\4\u00e0\t\u00e0"+ + "\4\u00e1\t\u00e1\4\u00e2\t\u00e2\4\u00e3\t\u00e3\4\u00e4\t\u00e4\4\u00e5"+ + "\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8\t\u00e8\4\u00e9\t\u00e9"+ + "\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec\4\u00ed\t\u00ed\4\u00ee"+ + "\t\u00ee\4\u00ef\t\u00ef\4\u00f0\t\u00f0\4\u00f1\t\u00f1\4\u00f2\t\u00f2"+ + "\4\u00f3\t\u00f3\4\u00f4\t\u00f4\4\u00f5\t\u00f5\4\u00f6\t\u00f6\4\u00f7"+ + "\t\u00f7\4\u00f8\t\u00f8\4\u00f9\t\u00f9\4\u00fa\t\u00fa\4\u00fb\t\u00fb"+ + "\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe\t\u00fe\4\u00ff\t\u00ff\4\u0100"+ + "\t\u0100\4\u0101\t\u0101\4\u0102\t\u0102\4\u0103\t\u0103\4\u0104\t\u0104"+ + "\4\u0105\t\u0105\4\u0106\t\u0106\4\u0107\t\u0107\4\u0108\t\u0108\4\u0109"+ + "\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b\4\u010c\t\u010c\4\u010d\t\u010d"+ + "\3\2\6\2\u0227\n\2\r\2\16\2\u0228\3\2\3\2\3\3\6\3\u022e\n\3\r\3\16\3\u022f"+ + "\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3"+ + "\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b"+ + "\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u0262\n\t\f\t"+ + "\16\t\u0265\13\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\7\n\u0271\n\n"+ + "\f\n\16\n\u0274\13\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\7\f\u0280"+ + "\n\f\f\f\16\f\u0283\13\f\3\r\3\r\7\r\u0287\n\r\f\r\16\r\u028a\13\r\3\r"+ + "\3\r\3\16\3\16\3\16\3\16\3\17\6\17\u0293\n\17\r\17\16\17\u0294\3\20\3"+ + "\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3"+ + "\23\3\23\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3"+ + "\27\3\27\3\30\5\30\u02b7\n\30\3\30\3\30\3\30\3\30\3\31\5\31\u02be\n\31"+ + "\3\31\3\31\3\31\3\31\3\32\3\32\6\32\u02c6\n\32\r\32\16\32\u02c7\3\33\6"+ + "\33\u02cb\n\33\r\33\16\33\u02cc\3\34\6\34\u02d0\n\34\r\34\16\34\u02d1"+ + "\3\34\3\34\3\35\3\35\7\35\u02d8\n\35\f\35\16\35\u02db\13\35\3\36\3\36"+ + "\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3!\3!\5!\u02ed\n!\3"+ + "!\3!\3\"\6\"\u02f2\n\"\r\"\16\"\u02f3\3#\3#\3#\3#\3$\3$\3$\3$\3$\3%\3"+ + "%\3%\3%\3%\3&\3&\5&\u0306\n&\3&\3&\3\'\6\'\u030b\n\'\r\'\16\'\u030c\3"+ + "(\3(\3(\3(\3)\6)\u0314\n)\r)\16)\u0315\3*\3*\3*\3*\3*\3*\3*\3*\3*\5*\u0321"+ + "\n*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3-\3-\3-\3-\3.\7.\u0336"+ + "\n.\f.\16.\u0339\13.\3.\3.\3.\3.\3.\3.\3.\3.\5.\u0343\n.\3.\3.\3.\3.\3"+ + "/\3/\3/\5/\u034c\n/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\5/\u035a\n/\3"+ + "\60\6\60\u035d\n\60\r\60\16\60\u035e\3\60\3\60\3\61\3\61\3\61\3\61\7\61"+ + "\u0367\n\61\f\61\16\61\u036a\13\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62"+ + "\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\65\3\65"+ + "\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\67"+ + "\3\67\3\67\38\38\38\38\38\38\38\39\39\39\39\39\39\39\39\59\u03a0\n9\3"+ + ":\3:\3:\3:\3:\3:\3:\3:\3:\5:\u03ab\n:\3;\3;\3;\3;\3;\3;\3<\3<\3<\3<\3"+ + "<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3@\3"+ + "@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3"+ + "C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3D\3E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3"+ + "G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3J\3J\3K\3"+ + "K\3K\3K\3K\3K\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3N\3N\3"+ + "N\3N\3N\3N\3N\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3Q\3"+ + "Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3"+ + "T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3V\3W\3W\3W\3W\3W\3"+ + "W\3W\3W\3X\3X\3X\3X\3X\3X\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3[\3[\3"+ + "[\3[\3[\3[\3[\3[\3[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3^\3^\3"+ + "^\3_\3_\3_\3_\3_\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3a\3a\3a\3a\3"+ + "a\3a\3a\3a\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3"+ + "c\3c\3c\3c\3c\3d\3d\3d\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3f\3"+ + "f\3f\3f\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\5h\u04f1\nh\3i\3i\3"+ + "i\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3l\3l\3l\3l\3"+ + "m\3m\3m\3n\3n\3n\3n\3o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3"+ + "q\3q\3q\3q\3r\3r\3r\3r\3r\3s\3s\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3t\3t\3"+ + "u\3u\3u\3u\3u\3u\3u\3u\3v\3v\3v\3v\3v\3v\3w\3w\3w\3w\3w\3w\3w\3w\3x\3"+ + "x\3x\3x\3x\3x\3x\3x\3x\3x\3y\3y\3y\3y\3y\3y\3y\3z\3z\3z\3z\3z\3z\3z\3"+ + "z\3z\3{\3{\3{\3{\3{\3{\3{\3{\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3"+ + "}\3}\3}\3}\3}\3}\3}\3}\3}\3~\3~\3~\3~\3~\3~\3~\3\177\3\177\3\177\3\177"+ + "\3\177\3\177\3\177\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080"+ + "\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0082\3\u0082"+ + "\3\u0082\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083"+ + "\3\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085\3\u0085"+ + "\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0086\3\u0086\3\u0086"+ + "\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u05c8"+ + "\n\u0086\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087"+ + "\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089"+ + "\3\u0089\3\u008a\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008b"+ + "\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008d"+ + "\3\u008d\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008f\3\u008f"+ + "\3\u008f\3\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090"+ + "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091"+ + "\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092"+ + "\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093\3\u0093"+ + "\3\u0093\3\u0093\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094"+ + "\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095"+ + "\3\u0095\3\u0095\3\u0095\3\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096"+ + "\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0097\3\u0097"+ + "\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097"+ + "\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098"+ + "\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u009a"+ + "\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a"+ + "\3\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b"+ + "\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009d"+ + "\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d"+ + "\3\u009d\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e"+ + "\3\u009e\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+ + "\3\u009f\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0"+ + "\3\u00a0\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1"+ + "\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2"+ + "\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2"+ + "\3\u00a2\3\u00a2\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3"+ + "\3\u00a3\3\u00a3\3\u00a3\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4"+ + "\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5"+ + "\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6"+ + "\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+ + "\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7"+ + "\3\u00a7\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8"+ + "\3\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9"+ + "\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ac\3\u00ac"+ + "\3\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae\3\u00ae\3\u00af\3\u00af"+ + "\3\u00af\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b1\3\u00b1"+ + "\3\u00b2\3\u00b2\3\u00b2\3\u00b3\3\u00b3\3\u00b3\3\u00b3\5\u00b3\u071d"+ + "\n\u00b3\3\u00b4\3\u00b4\3\u00b4\3\u00b5\3\u00b5\3\u00b5\3\u00b6\3\u00b6"+ + "\3\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b8\3\u00b8\3\u00b8\3\u00b9\3\u00b9"+ + "\3\u00b9\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00bb\3\u00bb\3\u00bb\3\u00bc"+ + "\3\u00bc\3\u00bc\3\u00bd\3\u00bd\3\u00bd\3\u00be\3\u00be\3\u00be\3\u00be"+ + "\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00c0\3\u00c0\3\u00c0\3\u00c1\3\u00c1"+ + "\3\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c4\3\u00c4"+ + "\3\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c7"+ + "\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8\3\u00c9\3\u00c9\3\u00c9\3\u00ca"+ + "\3\u00ca\3\u00ca\3\u00cb\3\u00cb\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cd"+ + "\3\u00cd\3\u00ce\3\u00ce\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d1\3\u00d1"+ + "\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d4\3\u00d4\3\u00d5\3\u00d5\3\u00d6"+ + "\3\u00d6\3\u00d7\3\u00d7\3\u00d8\3\u00d8\3\u00d9\3\u00d9\3\u00da\3\u00da"+ + "\3\u00db\3\u00db\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00de\3\u00de\3\u00df"+ + "\3\u00df\3\u00e0\3\u00e0\3\u00e1\3\u00e1\3\u00e2\3\u00e2\3\u00e2\3\u00e3"+ + "\3\u00e3\3\u00e4\3\u00e4\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e7\3\u00e7"+ + "\3\u00e8\3\u00e8\3\u00e9\3\u00e9\3\u00e9\3\u00ea\3\u00ea\7\u00ea\u07ac"+ + "\n\u00ea\f\u00ea\16\u00ea\u07af\13\u00ea\3\u00eb\3\u00eb\5\u00eb\u07b3"+ + "\n\u00eb\3\u00eb\6\u00eb\u07b6\n\u00eb\r\u00eb\16\u00eb\u07b7\3\u00eb"+ + "\3\u00eb\6\u00eb\u07bc\n\u00eb\r\u00eb\16\u00eb\u07bd\7\u00eb\u07c0\n"+ + "\u00eb\f\u00eb\16\u00eb\u07c3\13\u00eb\3\u00ec\3\u00ec\3\u00ec\7\u00ec"+ + "\u07c8\n\u00ec\f\u00ec\16\u00ec\u07cb\13\u00ec\3\u00ec\3\u00ec\6\u00ec"+ + "\u07cf\n\u00ec\r\u00ec\16\u00ec\u07d0\7\u00ec\u07d3\n\u00ec\f\u00ec\16"+ + "\u00ec\u07d6\13\u00ec\5\u00ec\u07d8\n\u00ec\3\u00ed\3\u00ed\3\u00ed\5"+ + "\u00ed\u07dd\n\u00ed\3\u00ed\5\u00ed\u07e0\n\u00ed\3\u00ed\3\u00ed\5\u00ed"+ + "\u07e4\n\u00ed\3\u00ed\5\u00ed\u07e7\n\u00ed\3\u00ed\6\u00ed\u07ea\n\u00ed"+ + "\r\u00ed\16\u00ed\u07eb\3\u00ed\3\u00ed\5\u00ed\u07f0\n\u00ed\3\u00ee"+ + "\3\u00ee\3\u00ee\3\u00ee\6\u00ee\u07f6\n\u00ee\r\u00ee\16\u00ee\u07f7"+ + "\3\u00ee\3\u00ee\6\u00ee\u07fc\n\u00ee\r\u00ee\16\u00ee\u07fd\7\u00ee"+ + "\u0800\n\u00ee\f\u00ee\16\u00ee\u0803\13\u00ee\3\u00ef\3\u00ef\3\u00ef"+ + "\3\u00ef\6\u00ef\u0809\n\u00ef\r\u00ef\16\u00ef\u080a\3\u00ef\3\u00ef"+ + "\6\u00ef\u080f\n\u00ef\r\u00ef\16\u00ef\u0810\7\u00ef\u0813\n\u00ef\f"+ + "\u00ef\16\u00ef\u0816\13\u00ef\3\u00f0\3\u00f0\7\u00f0\u081a\n\u00f0\f"+ + "\u00f0\16\u00f0\u081d\13\u00f0\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f1"+ + "\3\u00f1\7\u00f1\u0825\n\u00f1\f\u00f1\16\u00f1\u0828\13\u00f1\3\u00f1"+ + "\3\u00f1\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f3\3\u00f3\3\u00f3\3\u00f3"+ + "\3\u00f3\7\u00f3\u0835\n\u00f3\f\u00f3\16\u00f3\u0838\13\u00f3\3\u00f3"+ + "\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f4\3\u00f4\3\u00f4"+ + "\3\u00f4\3\u00f4\7\u00f4\u0846\n\u00f4\f\u00f4\16\u00f4\u0849\13\u00f4"+ + "\3\u00f4\3\u00f4\3\u00f4\3\u00f4\3\u00f4\3\u00f5\3\u00f5\3\u00f5\3\u00f5"+ + "\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f7\3\u00f7\3\u00f7\3\u00f7"+ + "\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f9\3\u00f9"+ + "\3\u00f9\3\u00f9\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fb\3\u00fb"+ + "\3\u00fb\3\u00fb\3\u00fb\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+ + "\6\u00fc\u0878\n\u00fc\r\u00fc\16\u00fc\u0879\3\u00fc\3\u00fc\3\u00fd"+ + "\6\u00fd\u087f\n\u00fd\r\u00fd\16\u00fd\u0880\3\u00fe\6\u00fe\u0884\n"+ + "\u00fe\r\u00fe\16\u00fe\u0885\3\u00fe\3\u00fe\3\u00ff\3\u00ff\3\u00ff"+ + "\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0101\3\u0101\3\u0101\3\u0101"+ + "\3\u0101\3\u0102\7\u0102\u0898\n\u0102\f\u0102\16\u0102\u089b\13\u0102"+ + "\3\u0102\5\u0102\u089e\n\u0102\3\u0102\3\u0102\5\u0102\u08a2\n\u0102\3"+ + "\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\5\u0103\u08aa\n\u0103\3"+ + "\u0104\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u08b1\n\u0104\3\u0104\3"+ + "\u0104\5\u0104\u08b5\n\u0104\3\u0105\3\u0105\7\u0105\u08b9\n\u0105\f\u0105"+ + "\16\u0105\u08bc\13\u0105\3\u0106\3\u0106\3\u0106\3\u0106\5\u0106\u08c2"+ + "\n\u0106\3\u0107\5\u0107\u08c5\n\u0107\3\u0108\6\u0108\u08c8\n\u0108\r"+ + "\u0108\16\u0108\u08c9\3\u0108\3\u0108\6\u0108\u08ce\n\u0108\r\u0108\16"+ + "\u0108\u08cf\7\u0108\u08d2\n\u0108\f\u0108\16\u0108\u08d5\13\u0108\3\u0109"+ + "\3\u0109\5\u0109\u08d9\n\u0109\3\u0109\3\u0109\3\u010a\3\u010a\3\u010b"+ + "\3\u010b\3\u010c\3\u010c\3\u010d\3\u010d\7\u0263\u0272\u0337\u0368\u0899"+ + "\2\u010e\r\3\17\4\21\5\23\2\25\6\27\7\31\b\33\t\35\n\37\13!\f#\2%\r\'"+ + "\16)\17+\u00f6-\2/\20\61\21\63\22\65\23\67\249\25;\26=\27?\30A\31C\32"+ + "E\33G\2I\34K\35M\36O\37Q\2S U!W\"Y#[$]%_\2a&c\2e\'g(i)k*m+o,q-s.u/w\60"+ + "y\61{\62}\63\177\64\u0081\65\u0083\66\u0085\67\u00878\u00899\u008b:\u008d"+ + ";\u008f<\u0091=\u0093>\u0095?\u0097@\u0099A\u009bB\u009dC\u009fD\u00a1"+ + "E\u00a3F\u00a5G\u00a7H\u00a9I\u00abJ\u00adK\u00afL\u00b1M\u00b3N\u00b5"+ + "O\u00b7P\u00b9Q\u00bbR\u00bdS\u00bfT\u00c1U\u00c3V\u00c5W\u00c7X\u00c9"+ + "Y\u00cbZ\u00cd[\u00cf\\\u00d1]\u00d3^\u00d5_\u00d7`\u00d9a\u00dbb\u00dd"+ + "c\u00dfd\u00e1e\u00e3f\u00e5g\u00e7h\u00e9i\u00ebj\u00edk\u00efl\u00f1"+ + "m\u00f3n\u00f5o\u00f7p\u00f9q\u00fbr\u00fds\u00fft\u0101u\u0103v\u0105"+ + "w\u0107x\u0109y\u010bz\u010d{\u010f|\u0111}\u0113~\u0115\177\u0117\u0080"+ + "\u0119\u0081\u011b\u0082\u011d\u0083\u011f\u0084\u0121\u0085\u0123\u0086"+ + "\u0125\u0087\u0127\u0088\u0129\u0089\u012b\u008a\u012d\u008b\u012f\u008c"+ + "\u0131\u008d\u0133\u008e\u0135\u008f\u0137\u0090\u0139\u0091\u013b\u0092"+ + "\u013d\u0093\u013f\u0094\u0141\u0095\u0143\u0096\u0145\u0097\u0147\u0098"+ + "\u0149\u0099\u014b\u009a\u014d\u009b\u014f\u009c\u0151\u009d\u0153\u009e"+ + "\u0155\u009f\u0157\u00a0\u0159\u00a1\u015b\u00a2\u015d\u00a3\u015f\u00a4"+ + "\u0161\u00a5\u0163\u00a6\u0165\u00a7\u0167\u00a8\u0169\u00a9\u016b\u00aa"+ + "\u016d\u00ab\u016f\u00ac\u0171\u00ad\u0173\u00ae\u0175\u00af\u0177\u00b0"+ + "\u0179\u00b1\u017b\u00b2\u017d\u00b3\u017f\u00b4\u0181\u00b5\u0183\u00b6"+ + "\u0185\u00b7\u0187\u00b8\u0189\u00b9\u018b\u00ba\u018d\u00bb\u018f\u00bc"+ + "\u0191\u00bd\u0193\u00be\u0195\u00bf\u0197\u00c0\u0199\u00c1\u019b\u00c2"+ + "\u019d\u00c3\u019f\u00c4\u01a1\u00c5\u01a3\u00c6\u01a5\u00c7\u01a7\u00c8"+ + "\u01a9\u00c9\u01ab\u00ca\u01ad\u00cb\u01af\u00cc\u01b1\u00cd\u01b3\u00ce"+ + "\u01b5\u00cf\u01b7\u00d0\u01b9\u00d1\u01bb\u00d2\u01bd\u00d3\u01bf\u00d4"+ + "\u01c1\u00d5\u01c3\u00d6\u01c5\u00d7\u01c7\u00d8\u01c9\u00d9\u01cb\u00da"+ + "\u01cd\u00db\u01cf\u00dc\u01d1\u00dd\u01d3\u00de\u01d5\u00df\u01d7\u00e0"+ + "\u01d9\u00e1\u01db\u00e2\u01dd\u00e3\u01df\u00e4\u01e1\u00e5\u01e3\u00e6"+ + "\u01e5\u00e7\u01e7\u00e8\u01e9\u00e9\u01eb\u00ea\u01ed\u00eb\u01ef\u00ec"+ + "\u01f1\u00ed\u01f3\u00ee\u01f5\2\u01f7\2\u01f9\u00ef\u01fb\2\u01fd\2\u01ff"+ + "\2\u0201\u00f0\u0203\u00f1\u0205\u00f2\u0207\u00f3\u0209\2\u020b\u00f4"+ + "\u020d\u00f5\u020f\2\u0211\2\u0213\2\u0215\2\u0217\2\u0219\2\u021b\2\u021d"+ + "\2\u021f\2\u0221\2\u0223\2\r\2\3\4\5\6\7\b\t\n\13\f\34\5\2\13\f\17\17"+ + "\"\"\4\2%%>>\4\2\f\f\17\17\3\2>>\3\2AA\4\2))>>\4\2$$>>\4\2aac|\5\2\62"+ + ";aac|\3\2\62\63\3\2bb\4\2))^^\4\2\13\13\"\"\4\2\62;c|\6\2$$&&^^}}\5\2"+ + "\f\f\17\17AA\6\2C\\aac|\u0082\0\7\2\62;C\\aac|\u0082\0\4\2/\60aa\5\2\u00b9"+ + "\u00b9\u0302\u0371\u2041\u2042\n\2<<C\\c|\u2072\u2191\u2c02\u2ff1\u3003"+ + "\ud801\uf902\ufdd1\ufdf2\uffff\4\2--//\3\2\63;\3\2\62;\3\2\629\4\2\62"+ + ";ch\u0919\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2"+ + "\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2"+ + "\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\3\'\3\2\2\2\3)\3\2\2\2\3+\3\2\2\2\4"+ + "-\3\2\2\2\4/\3\2\2\2\4\61\3\2\2\2\4\63\3\2\2\2\4\65\3\2\2\2\4\67\3\2\2"+ + "\2\49\3\2\2\2\4;\3\2\2\2\4=\3\2\2\2\4?\3\2\2\2\4A\3\2\2\2\4C\3\2\2\2\4"+ + "E\3\2\2\2\5G\3\2\2\2\5I\3\2\2\2\5K\3\2\2\2\5M\3\2\2\2\5O\3\2\2\2\6Q\3"+ + "\2\2\2\6S\3\2\2\2\6U\3\2\2\2\6W\3\2\2\2\6Y\3\2\2\2\7[\3\2\2\2\7]\3\2\2"+ + "\2\7_\3\2\2\2\7a\3\2\2\2\7c\3\2\2\2\be\3\2\2\2\tg\3\2\2\2\ti\3\2\2\2\t"+ + "k\3\2\2\2\tm\3\2\2\2\to\3\2\2\2\tq\3\2\2\2\ts\3\2\2\2\tu\3\2\2\2\tw\3"+ + "\2\2\2\ty\3\2\2\2\t{\3\2\2\2\t}\3\2\2\2\t\177\3\2\2\2\t\u0081\3\2\2\2"+ + "\t\u0083\3\2\2\2\t\u0085\3\2\2\2\t\u0087\3\2\2\2\t\u0089\3\2\2\2\t\u008b"+ + "\3\2\2\2\t\u008d\3\2\2\2\t\u008f\3\2\2\2\t\u0091\3\2\2\2\t\u0093\3\2\2"+ + "\2\t\u0095\3\2\2\2\t\u0097\3\2\2\2\t\u0099\3\2\2\2\t\u009b\3\2\2\2\t\u009d"+ + "\3\2\2\2\t\u009f\3\2\2\2\t\u00a1\3\2\2\2\t\u00a3\3\2\2\2\t\u00a5\3\2\2"+ + "\2\t\u00a7\3\2\2\2\t\u00a9\3\2\2\2\t\u00ab\3\2\2\2\t\u00ad\3\2\2\2\t\u00af"+ + "\3\2\2\2\t\u00b1\3\2\2\2\t\u00b3\3\2\2\2\t\u00b5\3\2\2\2\t\u00b7\3\2\2"+ + "\2\t\u00b9\3\2\2\2\t\u00bb\3\2\2\2\t\u00bd\3\2\2\2\t\u00bf\3\2\2\2\t\u00c1"+ + "\3\2\2\2\t\u00c3\3\2\2\2\t\u00c5\3\2\2\2\t\u00c7\3\2\2\2\t\u00c9\3\2\2"+ + "\2\t\u00cb\3\2\2\2\t\u00cd\3\2\2\2\t\u00cf\3\2\2\2\t\u00d1\3\2\2\2\t\u00d3"+ + "\3\2\2\2\t\u00d5\3\2\2\2\t\u00d7\3\2\2\2\t\u00d9\3\2\2\2\t\u00db\3\2\2"+ + "\2\t\u00dd\3\2\2\2\t\u00df\3\2\2\2\t\u00e1\3\2\2\2\t\u00e3\3\2\2\2\t\u00e5"+ + "\3\2\2\2\t\u00e7\3\2\2\2\t\u00e9\3\2\2\2\t\u00eb\3\2\2\2\t\u00ed\3\2\2"+ + "\2\t\u00ef\3\2\2\2\t\u00f1\3\2\2\2\t\u00f3\3\2\2\2\t\u00f5\3\2\2\2\t\u00f7"+ + "\3\2\2\2\t\u00f9\3\2\2\2\t\u00fb\3\2\2\2\t\u00fd\3\2\2\2\t\u00ff\3\2\2"+ + "\2\t\u0101\3\2\2\2\t\u0103\3\2\2\2\t\u0105\3\2\2\2\t\u0107\3\2\2\2\t\u0109"+ + "\3\2\2\2\t\u010b\3\2\2\2\t\u010d\3\2\2\2\t\u010f\3\2\2\2\t\u0111\3\2\2"+ + "\2\t\u0113\3\2\2\2\t\u0115\3\2\2\2\t\u0117\3\2\2\2\t\u0119\3\2\2\2\t\u011b"+ + "\3\2\2\2\t\u011d\3\2\2\2\t\u011f\3\2\2\2\t\u0121\3\2\2\2\t\u0123\3\2\2"+ + "\2\t\u0125\3\2\2\2\t\u0127\3\2\2\2\t\u0129\3\2\2\2\t\u012b\3\2\2\2\t\u012d"+ + "\3\2\2\2\t\u012f\3\2\2\2\t\u0131\3\2\2\2\t\u0133\3\2\2\2\t\u0135\3\2\2"+ + "\2\t\u0137\3\2\2\2\t\u0139\3\2\2\2\t\u013b\3\2\2\2\t\u013d\3\2\2\2\t\u013f"+ + "\3\2\2\2\t\u0141\3\2\2\2\t\u0143\3\2\2\2\t\u0145\3\2\2\2\t\u0147\3\2\2"+ + "\2\t\u0149\3\2\2\2\t\u014b\3\2\2\2\t\u014d\3\2\2\2\t\u014f\3\2\2\2\t\u0151"+ + "\3\2\2\2\t\u0153\3\2\2\2\t\u0155\3\2\2\2\t\u0157\3\2\2\2\t\u0159\3\2\2"+ + "\2\t\u015b\3\2\2\2\t\u015d\3\2\2\2\t\u015f\3\2\2\2\t\u0161\3\2\2\2\t\u0163"+ + "\3\2\2\2\t\u0165\3\2\2\2\t\u0167\3\2\2\2\t\u0169\3\2\2\2\t\u016b\3\2\2"+ + "\2\t\u016d\3\2\2\2\t\u016f\3\2\2\2\t\u0171\3\2\2\2\t\u0173\3\2\2\2\t\u0175"+ + "\3\2\2\2\t\u0177\3\2\2\2\t\u0179\3\2\2\2\t\u017b\3\2\2\2\t\u017d\3\2\2"+ + "\2\t\u017f\3\2\2\2\t\u0181\3\2\2\2\t\u0183\3\2\2\2\t\u0185\3\2\2\2\t\u0187"+ + "\3\2\2\2\t\u0189\3\2\2\2\t\u018b\3\2\2\2\t\u018d\3\2\2\2\t\u018f\3\2\2"+ + "\2\t\u0191\3\2\2\2\t\u0193\3\2\2\2\t\u0195\3\2\2\2\t\u0197\3\2\2\2\t\u0199"+ + "\3\2\2\2\t\u019b\3\2\2\2\t\u019d\3\2\2\2\t\u019f\3\2\2\2\t\u01a1\3\2\2"+ + "\2\t\u01a3\3\2\2\2\t\u01a5\3\2\2\2\t\u01a7\3\2\2\2\t\u01a9\3\2\2\2\t\u01ab"+ + "\3\2\2\2\t\u01ad\3\2\2\2\t\u01af\3\2\2\2\t\u01b1\3\2\2\2\t\u01b3\3\2\2"+ + "\2\t\u01b5\3\2\2\2\t\u01b7\3\2\2\2\t\u01b9\3\2\2\2\t\u01bb\3\2\2\2\t\u01bd"+ + "\3\2\2\2\t\u01bf\3\2\2\2\t\u01c1\3\2\2\2\t\u01c3\3\2\2\2\t\u01c5\3\2\2"+ + "\2\t\u01c7\3\2\2\2\t\u01c9\3\2\2\2\t\u01cb\3\2\2\2\t\u01cd\3\2\2\2\t\u01cf"+ + "\3\2\2\2\t\u01d1\3\2\2\2\t\u01d3\3\2\2\2\t\u01d5\3\2\2\2\t\u01d7\3\2\2"+ + "\2\t\u01d9\3\2\2\2\t\u01db\3\2\2\2\t\u01dd\3\2\2\2\t\u01df\3\2\2\2\t\u01e1"+ + "\3\2\2\2\t\u01e3\3\2\2\2\t\u01e5\3\2\2\2\t\u01e7\3\2\2\2\t\u01e9\3\2\2"+ + "\2\t\u01eb\3\2\2\2\t\u01ed\3\2\2\2\t\u01ef\3\2\2\2\t\u01f1\3\2\2\2\t\u01f3"+ + "\3\2\2\2\n\u01f5\3\2\2\2\n\u01f7\3\2\2\2\n\u01f9\3\2\2\2\n\u01fb\3\2\2"+ + "\2\n\u01fd\3\2\2\2\n\u01ff\3\2\2\2\n\u0201\3\2\2\2\n\u0203\3\2\2\2\13"+ + "\u0205\3\2\2\2\13\u0207\3\2\2\2\13\u0209\3\2\2\2\13\u020b\3\2\2\2\f\u020d"+ + "\3\2\2\2\r\u0226\3\2\2\2\17\u022d\3\2\2\2\21\u0231\3\2\2\2\23\u0239\3"+ + "\2\2\2\25\u023e\3\2\2\2\27\u0243\3\2\2\2\31\u024f\3\2\2\2\33\u025a\3\2"+ + "\2\2\35\u026c\3\2\2\2\37\u0277\3\2\2\2!\u027b\3\2\2\2#\u0284\3\2\2\2%"+ + "\u028d\3\2\2\2\'\u0292\3\2\2\2)\u0296\3\2\2\2+\u029b\3\2\2\2-\u029f\3"+ + "\2\2\2/\u02a4\3\2\2\2\61\u02a9\3\2\2\2\63\u02ac\3\2\2\2\65\u02b1\3\2\2"+ + "\2\67\u02b3\3\2\2\29\u02b6\3\2\2\2;\u02bd\3\2\2\2=\u02c3\3\2\2\2?\u02ca"+ + "\3\2\2\2A\u02cf\3\2\2\2C\u02d5\3\2\2\2E\u02dc\3\2\2\2G\u02e0\3\2\2\2I"+ + "\u02e5\3\2\2\2K\u02ea\3\2\2\2M\u02f1\3\2\2\2O\u02f5\3\2\2\2Q\u02f9\3\2"+ + "\2\2S\u02fe\3\2\2\2U\u0303\3\2\2\2W\u030a\3\2\2\2Y\u030e\3\2\2\2[\u0313"+ + "\3\2\2\2]\u0317\3\2\2\2_\u0326\3\2\2\2a\u032b\3\2\2\2c\u0330\3\2\2\2e"+ + "\u0337\3\2\2\2g\u0359\3\2\2\2i\u035c\3\2\2\2k\u0362\3\2\2\2m\u0370\3\2"+ + "\2\2o\u0376\3\2\2\2q\u037b\3\2\2\2s\u037e\3\2\2\2u\u0387\3\2\2\2w\u038d"+ + "\3\2\2\2y\u0390\3\2\2\2{\u0397\3\2\2\2}\u03aa\3\2\2\2\177\u03ac\3\2\2"+ + "\2\u0081\u03b2\3\2\2\2\u0083\u03bb\3\2\2\2\u0085\u03c0\3\2\2\2\u0087\u03c6"+ + "\3\2\2\2\u0089\u03cc\3\2\2\2\u008b\u03d2\3\2\2\2\u008d\u03d8\3\2\2\2\u008f"+ + "\u03e1\3\2\2\2\u0091\u03e9\3\2\2\2\u0093\u03f1\3\2\2\2\u0095\u03f4\3\2"+ + "\2\2\u0097\u03f9\3\2\2\2\u0099\u0400\3\2\2\2\u009b\u0405\3\2\2\2\u009d"+ + "\u040a\3\2\2\2\u009f\u0411\3\2\2\2\u00a1\u0417\3\2\2\2\u00a3\u041c\3\2"+ + "\2\2\u00a5\u0427\3\2\2\2\u00a7\u042e\3\2\2\2\u00a9\u0439\3\2\2\2\u00ab"+ + "\u043f\3\2\2\2\u00ad\u0449\3\2\2\2\u00af\u0452\3\2\2\2\u00b1\u0457\3\2"+ + "\2\2\u00b3\u045b\3\2\2\2\u00b5\u0463\3\2\2\2\u00b7\u0469\3\2\2\2\u00b9"+ + "\u0471\3\2\2\2\u00bb\u0477\3\2\2\2\u00bd\u047b\3\2\2\2\u00bf\u0483\3\2"+ + "\2\2\u00c1\u048c\3\2\2\2\u00c3\u0493\3\2\2\2\u00c5\u0498\3\2\2\2\u00c7"+ + "\u049b\3\2\2\2\u00c9\u04a6\3\2\2\2\u00cb\u04ad\3\2\2\2\u00cd\u04b5\3\2"+ + "\2\2\u00cf\u04c2\3\2\2\2\u00d1\u04cd\3\2\2\2\u00d3\u04d7\3\2\2\2\u00d5"+ + "\u04dc\3\2\2\2\u00d7\u04e2\3\2\2\2\u00d9\u04e8\3\2\2\2\u00db\u04f2\3\2"+ + "\2\2\u00dd\u04fc\3\2\2\2\u00df\u0502\3\2\2\2\u00e1\u0507\3\2\2\2\u00e3"+ + "\u050b\3\2\2\2\u00e5\u050e\3\2\2\2\u00e7\u0512\3\2\2\2\u00e9\u0518\3\2"+ + "\2\2\u00eb\u0522\3\2\2\2\u00ed\u0526\3\2\2\2\u00ef\u052b\3\2\2\2\u00f1"+ + "\u0532\3\2\2\2\u00f3\u0539\3\2\2\2\u00f5\u0541\3\2\2\2\u00f7\u0547\3\2"+ + "\2\2\u00f9\u054f\3\2\2\2\u00fb\u0559\3\2\2\2\u00fd\u0560\3\2\2\2\u00ff"+ + "\u0569\3\2\2\2\u0101\u0571\3\2\2\2\u0103\u057e\3\2\2\2\u0105\u0587\3\2"+ + "\2\2\u0107\u058e\3\2\2\2\u0109\u0595\3\2\2\2\u010b\u059c\3\2\2\2\u010d"+ + "\u05a3\3\2\2\2\u010f\u05a9\3\2\2\2\u0111\u05af\3\2\2\2\u0113\u05b3\3\2"+ + "\2\2\u0115\u05bd\3\2\2\2\u0117\u05c9\3\2\2\2\u0119\u05d1\3\2\2\2\u011b"+ + "\u05d7\3\2\2\2\u011d\u05db\3\2\2\2\u011f\u05df\3\2\2\2\u0121\u05e5\3\2"+ + "\2\2\u0123\u05eb\3\2\2\2\u0125\u05f0\3\2\2\2\u0127\u05f3\3\2\2\2\u0129"+ + "\u05f9\3\2\2\2\u012b\u0602\3\2\2\2\u012d\u060f\3\2\2\2\u012f\u0615\3\2"+ + "\2\2\u0131\u061b\3\2\2\2\u0133\u0622\3\2\2\2\u0135\u062f\3\2\2\2\u0137"+ + "\u063b\3\2\2\2\u0139\u0646\3\2\2\2\u013b\u064f\3\2\2\2\u013d\u0657\3\2"+ + "\2\2\u013f\u0662\3\2\2\2\u0141\u066a\3\2\2\2\u0143\u0672\3\2\2\2\u0145"+ + "\u067d\3\2\2\2\u0147\u0686\3\2\2\2\u0149\u0692\3\2\2\2\u014b\u069a\3\2"+ + "\2\2\u014d\u06a6\3\2\2\2\u014f\u06b4\3\2\2\2\u0151\u06be\3\2\2\2\u0153"+ + "\u06c8\3\2\2\2\u0155\u06d5\3\2\2\2\u0157\u06e0\3\2\2\2\u0159\u06e9\3\2"+ + "\2\2\u015b\u06f2\3\2\2\2\u015d\u06fa\3\2\2\2\u015f\u06fe\3\2\2\2\u0161"+ + "\u0701\3\2\2\2\u0163\u0704\3\2\2\2\u0165\u0707\3\2\2\2\u0167\u070a\3\2"+ + "\2\2\u0169\u070d\3\2\2\2\u016b\u0711\3\2\2\2\u016d\u0715\3\2\2\2\u016f"+ + "\u071c\3\2\2\2\u0171\u071e\3\2\2\2\u0173\u0721\3\2\2\2\u0175\u0724\3\2"+ + "\2\2\u0177\u0727\3\2\2\2\u0179\u072a\3\2\2\2\u017b\u072d\3\2\2\2\u017d"+ + "\u0730\3\2\2\2\u017f\u0734\3\2\2\2\u0181\u0737\3\2\2\2\u0183\u073a\3\2"+ + "\2\2\u0185\u073d\3\2\2\2\u0187\u0741\3\2\2\2\u0189\u0745\3\2\2\2\u018b"+ + "\u0748\3\2\2\2\u018d\u074b\3\2\2\2\u018f\u074e\3\2\2\2\u0191\u0751\3\2"+ + "\2\2\u0193\u0754\3\2\2\2\u0195\u0757\3\2\2\2\u0197\u075b\3\2\2\2\u0199"+ + "\u075e\3\2\2\2\u019b\u0761\3\2\2\2\u019d\u0764\3\2\2\2\u019f\u0767\3\2"+ + "\2\2\u01a1\u0769\3\2\2\2\u01a3\u076d\3\2\2\2\u01a5\u076f\3\2\2\2\u01a7"+ + "\u0771\3\2\2\2\u01a9\u0773\3\2\2\2\u01ab\u0775\3\2\2\2\u01ad\u0777\3\2"+ + "\2\2\u01af\u0779\3\2\2\2\u01b1\u077b\3\2\2\2\u01b3\u077d\3\2\2\2\u01b5"+ + "\u077f\3\2\2\2\u01b7\u0781\3\2\2\2\u01b9\u0783\3\2\2\2\u01bb\u0785\3\2"+ + "\2\2\u01bd\u0787\3\2\2\2\u01bf\u0789\3\2\2\2\u01c1\u078b\3\2\2\2\u01c3"+ + "\u078d\3\2\2\2\u01c5\u078f\3\2\2\2\u01c7\u0791\3\2\2\2\u01c9\u0793\3\2"+ + "\2\2\u01cb\u0795\3\2\2\2\u01cd\u0797\3\2\2\2\u01cf\u079a\3\2\2\2\u01d1"+ + "\u079c\3\2\2\2\u01d3\u079e\3\2\2\2\u01d5\u07a0\3\2\2\2\u01d7\u07a2\3\2"+ + "\2\2\u01d9\u07a4\3\2\2\2\u01db\u07a6\3\2\2\2\u01dd\u07a9\3\2\2\2\u01df"+ + "\u07b0\3\2\2\2\u01e1\u07d7\3\2\2\2\u01e3\u07ef\3\2\2\2\u01e5\u07f1\3\2"+ + "\2\2\u01e7\u0804\3\2\2\2\u01e9\u0817\3\2\2\2\u01eb\u0820\3\2\2\2\u01ed"+ + "\u082b\3\2\2\2\u01ef\u082f\3\2\2\2\u01f1\u0840\3\2\2\2\u01f3\u084f\3\2"+ + "\2\2\u01f5\u0853\3\2\2\2\u01f7\u0858\3\2\2\2\u01f9\u085c\3\2\2\2\u01fb"+ + "\u0863\3\2\2\2\u01fd\u0867\3\2\2\2\u01ff\u086c\3\2\2\2\u0201\u0871\3\2"+ + "\2\2\u0203\u087e\3\2\2\2\u0205\u0883\3\2\2\2\u0207\u0889\3\2\2\2\u0209"+ + "\u088c\3\2\2\2\u020b\u0891\3\2\2\2\u020d\u0899\3\2\2\2\u020f\u08a3\3\2"+ + "\2\2\u0211\u08ab\3\2\2\2\u0213\u08b6\3\2\2\2\u0215\u08c1\3\2\2\2\u0217"+ + "\u08c4\3\2\2\2\u0219\u08c7\3\2\2\2\u021b\u08d6\3\2\2\2\u021d\u08dc\3\2"+ + "\2\2\u021f\u08de\3\2\2\2\u0221\u08e0\3\2\2\2\u0223\u08e2\3\2\2\2\u0225"+ + "\u0227\t\2\2\2\u0226\u0225\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u0226\3\2"+ + "\2\2\u0228\u0229\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\b\2\2\2\u022b"+ + "\16\3\2\2\2\u022c\u022e\n\3\2\2\u022d\u022c\3\2\2\2\u022e\u022f\3\2\2"+ + "\2\u022f\u022d\3\2\2\2\u022f\u0230\3\2\2\2\u0230\20\3\2\2\2\u0231\u0232"+ + "\7>\2\2\u0232\u0233\7A\2\2\u0233\u0234\7z\2\2\u0234\u0235\7o\2\2\u0235"+ + "\u0236\7n\2\2\u0236\u0237\3\2\2\2\u0237\u0238\b\4\3\2\u0238\22\3\2\2\2"+ + "\u0239\u023a\5\u020f\u0103\2\u023a\u023b\3\2\2\2\u023b\u023c\b\5\4\2\u023c"+ + "\u023d\b\5\5\2\u023d\24\3\2\2\2\u023e\u023f\5\u0211\u0104\2\u023f\u0240"+ + "\3\2\2\2\u0240\u0241\b\6\6\2\u0241\u0242\b\6\5\2\u0242\26\3\2\2\2\u0243"+ + "\u0244\7>\2\2\u0244\u0245\7u\2\2\u0245\u0246\7e\2\2\u0246\u0247\7t\2\2"+ + "\u0247\u0248\7k\2\2\u0248\u0249\7r\2\2\u0249\u024a\7v\2\2\u024a\u024b"+ + "\3\2\2\2\u024b\u024c\b\7\7\2\u024c\u024d\3\2\2\2\u024d\u024e\b\7\b\2\u024e"+ + "\30\3\2\2\2\u024f\u0250\7>\2\2\u0250\u0251\7u\2\2\u0251\u0252\7v\2\2\u0252"+ + "\u0253\7{\2\2\u0253\u0254\7n\2\2\u0254\u0255\7g\2\2\u0255\u0256\3\2\2"+ + "\2\u0256\u0257\b\b\t\2\u0257\u0258\3\2\2\2\u0258\u0259\b\b\b\2\u0259\32"+ + "\3\2\2\2\u025a\u025b\7>\2\2\u025b\u025c\7#\2\2\u025c\u025d\3\2\2\2\u025d"+ + "\u025e\7/\2\2\u025e\u025f\7/\2\2\u025f\u0263\3\2\2\2\u0260\u0262\13\2"+ + "\2\2\u0261\u0260\3\2\2\2\u0262\u0265\3\2\2\2\u0263\u0264\3\2\2\2\u0263"+ + "\u0261\3\2\2\2\u0264\u0266\3\2\2\2\u0265\u0263\3\2\2\2\u0266\u0267\7/"+ + "\2\2\u0267\u0268\7/\2\2\u0268\u0269\7@\2\2\u0269\u026a\3\2\2\2\u026a\u026b"+ + "\b\t\2\2\u026b\34\3\2\2\2\u026c\u026d\7>\2\2\u026d\u026e\7#\2\2\u026e"+ + "\u0272\3\2\2\2\u026f\u0271\13\2\2\2\u0270\u026f\3\2\2\2\u0271\u0274\3"+ + "\2\2\2\u0272\u0273\3\2\2\2\u0272\u0270\3\2\2\2\u0273\u0275\3\2\2\2\u0274"+ + "\u0272\3\2\2\2\u0275\u0276\7@\2\2\u0276\36\3\2\2\2\u0277\u0278\7>\2\2"+ + "\u0278\u0279\3\2\2\2\u0279\u027a\b\13\b\2\u027a \3\2\2\2\u027b\u027c\7"+ + "%\2\2\u027c\u027d\6\f\2\2\u027d\u0281\7#\2\2\u027e\u0280\n\4\2\2\u027f"+ + "\u027e\3\2\2\2\u0280\u0283\3\2\2\2\u0281\u027f\3\2\2\2\u0281\u0282\3\2"+ + "\2\2\u0282\"\3\2\2\2\u0283\u0281\3\2\2\2\u0284\u0288\7%\2\2\u0285\u0287"+ + "\n\5\2\2\u0286\u0285\3\2\2\2\u0287\u028a\3\2\2\2\u0288\u0286\3\2\2\2\u0288"+ + "\u0289\3\2\2\2\u0289\u028b\3\2\2\2\u028a\u0288\3\2\2\2\u028b\u028c\b\r"+ + "\n\2\u028c$\3\2\2\2\u028d\u028e\13\2\2\2\u028e\u028f\3\2\2\2\u028f\u0290"+ + "\b\16\13\2\u0290&\3\2\2\2\u0291\u0293\n\6\2\2\u0292\u0291\3\2\2\2\u0293"+ + "\u0294\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295(\3\2\2\2"+ + "\u0296\u0297\7A\2\2\u0297\u0298\7@\2\2\u0298\u0299\3\2\2\2\u0299\u029a"+ + "\b\20\f\2\u029a*\3\2\2\2\u029b\u029c\7A\2\2\u029c\u029d\3\2\2\2\u029d"+ + "\u029e\b\21\r\2\u029e,\3\2\2\2\u029f\u02a0\5\u020f\u0103\2\u02a0\u02a1"+ + "\3\2\2\2\u02a1\u02a2\b\22\4\2\u02a2\u02a3\b\22\5\2\u02a3.\3\2\2\2\u02a4"+ + "\u02a5\5\u0211\u0104\2\u02a5\u02a6\3\2\2\2\u02a6\u02a7\b\23\6\2\u02a7"+ + "\u02a8\b\23\5\2\u02a8\60\3\2\2\2\u02a9\u02aa\7@\2\2\u02aa\u02ab\b\24\16"+ + "\2\u02ab\62\3\2\2\2\u02ac\u02ad\7\61\2\2\u02ad\u02ae\7@\2\2\u02ae\u02af"+ + "\3\2\2\2\u02af\u02b0\b\25\f\2\u02b0\64\3\2\2\2\u02b1\u02b2\7\61\2\2\u02b2"+ + "\66\3\2\2\2\u02b3\u02b4\7?\2\2\u02b48\3\2\2\2\u02b5\u02b7\7^\2\2\u02b6"+ + "\u02b5\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02b8\3\2\2\2\u02b8\u02b9\7)"+ + "\2\2\u02b9\u02ba\3\2\2\2\u02ba\u02bb\b\30\17\2\u02bb:\3\2\2\2\u02bc\u02be"+ + "\7^\2\2\u02bd\u02bc\3\2\2\2\u02bd\u02be\3\2\2\2\u02be\u02bf\3\2\2\2\u02bf"+ + "\u02c0\7$\2\2\u02c0\u02c1\3\2\2\2\u02c1\u02c2\b\31\20\2\u02c2<\3\2\2\2"+ + "\u02c3\u02c5\7%\2\2\u02c4\u02c6\5\u0223\u010d\2\u02c5\u02c4\3\2\2\2\u02c6"+ + "\u02c7\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c8>\3\2\2\2"+ + "\u02c9\u02cb\5\u021f\u010b\2\u02ca\u02c9\3\2\2\2\u02cb\u02cc\3\2\2\2\u02cc"+ + "\u02ca\3\2\2\2\u02cc\u02cd\3\2\2\2\u02cd@\3\2\2\2\u02ce\u02d0\t\2\2\2"+ + "\u02cf\u02ce\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02cf\3\2\2\2\u02d1\u02d2"+ + "\3\2\2\2\u02d2\u02d3\3\2\2\2\u02d3\u02d4\b\34\2\2\u02d4B\3\2\2\2\u02d5"+ + "\u02d9\5\u0217\u0107\2\u02d6\u02d8\5\u0215\u0106\2\u02d7\u02d6\3\2\2\2"+ + "\u02d8\u02db\3\2\2\2\u02d9\u02d7\3\2\2\2\u02d9\u02da\3\2\2\2\u02daD\3"+ + "\2\2\2\u02db\u02d9\3\2\2\2\u02dc\u02dd\13\2\2\2\u02dd\u02de\3\2\2\2\u02de"+ + "\u02df\b\36\13\2\u02dfF\3\2\2\2\u02e0\u02e1\5\u020f\u0103\2\u02e1\u02e2"+ + "\3\2\2\2\u02e2\u02e3\b\37\4\2\u02e3\u02e4\b\37\5\2\u02e4H\3\2\2\2\u02e5"+ + "\u02e6\5\u0211\u0104\2\u02e6\u02e7\3\2\2\2\u02e7\u02e8\b \6\2\u02e8\u02e9"+ + "\b \5\2\u02e9J\3\2\2\2\u02ea\u02ec\7)\2\2\u02eb\u02ed\7)\2\2\u02ec\u02eb"+ + "\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02ee\3\2\2\2\u02ee\u02ef\b!\f\2\u02ef"+ + "L\3\2\2\2\u02f0\u02f2\n\7\2\2\u02f1\u02f0\3\2\2\2\u02f2\u02f3\3\2\2\2"+ + "\u02f3\u02f1\3\2\2\2\u02f3\u02f4\3\2\2\2\u02f4N\3\2\2\2\u02f5\u02f6\13"+ + "\2\2\2\u02f6\u02f7\3\2\2\2\u02f7\u02f8\b#\13\2\u02f8P\3\2\2\2\u02f9\u02fa"+ + "\5\u020f\u0103\2\u02fa\u02fb\3\2\2\2\u02fb\u02fc\b$\4\2\u02fc\u02fd\b"+ + "$\5\2\u02fdR\3\2\2\2\u02fe\u02ff\5\u0211\u0104\2\u02ff\u0300\3\2\2\2\u0300"+ + "\u0301\b%\6\2\u0301\u0302\b%\5\2\u0302T\3\2\2\2\u0303\u0305\7$\2\2\u0304"+ + "\u0306\7$\2\2\u0305\u0304\3\2\2\2\u0305\u0306\3\2\2\2\u0306\u0307\3\2"+ + "\2\2\u0307\u0308\b&\f\2\u0308V\3\2\2\2\u0309\u030b\n\b\2\2\u030a\u0309"+ + "\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030a\3\2\2\2\u030c\u030d\3\2\2\2\u030d"+ + "X\3\2\2\2\u030e\u030f\13\2\2\2\u030f\u0310\3\2\2\2\u0310\u0311\b(\13\2"+ + "\u0311Z\3\2\2\2\u0312\u0314\n\5\2\2\u0313\u0312\3\2\2\2\u0314\u0315\3"+ + "\2\2\2\u0315\u0313\3\2\2\2\u0315\u0316\3\2\2\2\u0316\\\3\2\2\2\u0317\u0318"+ + "\7>\2\2\u0318\u0319\7\61\2\2\u0319\u0320\3\2\2\2\u031a\u031b\7u\2\2\u031b"+ + "\u031c\7e\2\2\u031c\u031d\7t\2\2\u031d\u031e\7k\2\2\u031e\u031f\7r\2\2"+ + "\u031f\u0321\7v\2\2\u0320\u031a\3\2\2\2\u0320\u0321\3\2\2\2\u0321\u0322"+ + "\3\2\2\2\u0322\u0323\7@\2\2\u0323\u0324\3\2\2\2\u0324\u0325\b*\f\2\u0325"+ + "^\3\2\2\2\u0326\u0327\5\u020f\u0103\2\u0327\u0328\3\2\2\2\u0328\u0329"+ + "\b+\4\2\u0329\u032a\b+\5\2\u032a`\3\2\2\2\u032b\u032c\5\u0211\u0104\2"+ + "\u032c\u032d\3\2\2\2\u032d\u032e\b,\6\2\u032e\u032f\b,\5\2\u032fb\3\2"+ + "\2\2\u0330\u0331\7>\2\2\u0331\u0332\3\2\2\2\u0332\u0333\b-\21\2\u0333"+ + "d\3\2\2\2\u0334\u0336\13\2\2\2\u0335\u0334\3\2\2\2\u0336\u0339\3\2\2\2"+ + "\u0337\u0338\3\2\2\2\u0337\u0335\3\2\2\2\u0338\u033a\3\2\2\2\u0339\u0337"+ + "\3\2\2\2\u033a\u033b\7>\2\2\u033b\u033c\7\61\2\2\u033c\u0342\3\2\2\2\u033d"+ + "\u033e\7u\2\2\u033e\u033f\7v\2\2\u033f\u0340\7{\2\2\u0340\u0341\7n\2\2"+ + "\u0341\u0343\7g\2\2\u0342\u033d\3\2\2\2\u0342\u0343\3\2\2\2\u0343\u0344"+ + "\3\2\2\2\u0344\u0345\7@\2\2\u0345\u0346\3\2\2\2\u0346\u0347\b.\f\2\u0347"+ + "f\3\2\2\2\u0348\u034c\7A\2\2\u0349\u034a\7\'\2\2\u034a\u034c\6/\3\2\u034b"+ + "\u0348\3\2\2\2\u034b\u0349\3\2\2\2\u034c\u034d\3\2\2\2\u034d\u035a\7@"+ + "\2\2\u034e\u034f\7>\2\2\u034f\u0350\7\61\2\2\u0350\u0351\7u\2\2\u0351"+ + "\u0352\7e\2\2\u0352\u0353\7t\2\2\u0353\u0354\7k\2\2\u0354\u0355\7r\2\2"+ + "\u0355\u0356\7v\2\2\u0356\u0357\7@\2\2\u0357\u0358\3\2\2\2\u0358\u035a"+ + "\6/\4\2\u0359\u034b\3\2\2\2\u0359\u034e\3\2\2\2\u035ah\3\2\2\2\u035b\u035d"+ + "\t\2\2\2\u035c\u035b\3\2\2\2\u035d\u035e\3\2\2\2\u035e\u035c\3\2\2\2\u035e"+ + "\u035f\3\2\2\2\u035f\u0360\3\2\2\2\u0360\u0361\b\60\6\2\u0361j\3\2\2\2"+ + "\u0362\u0363\7\61\2\2\u0363\u0364\7,\2\2\u0364\u0368\3\2\2\2\u0365\u0367"+ + "\13\2\2\2\u0366\u0365\3\2\2\2\u0367\u036a\3\2\2\2\u0368\u0369\3\2\2\2"+ + "\u0368\u0366\3\2\2\2\u0369\u036b\3\2\2\2\u036a\u0368\3\2\2\2\u036b\u036c"+ + "\7,\2\2\u036c\u036d\7\61\2\2\u036d\u036e\3\2\2\2\u036e\u036f\b\61\22\2"+ + "\u036fl\3\2\2\2\u0370\u0371\7\61\2\2\u0371\u0372\7\61\2\2\u0372\u0373"+ + "\3\2\2\2\u0373\u0374\b\62\6\2\u0374\u0375\b\62\23\2\u0375n\3\2\2\2\u0376"+ + "\u0377\7%\2\2\u0377\u0378\3\2\2\2\u0378\u0379\b\63\6\2\u0379\u037a\b\63"+ + "\23\2\u037ap\3\2\2\2\u037b\u037c\7%\2\2\u037c\u037d\7]\2\2\u037dr\3\2"+ + "\2\2\u037e\u037f\7c\2\2\u037f\u0380\7d\2\2\u0380\u0381\7u\2\2\u0381\u0382"+ + "\7v\2\2\u0382\u0383\7t\2\2\u0383\u0384\7c\2\2\u0384\u0385\7e\2\2\u0385"+ + "\u0386\7v\2\2\u0386t\3\2\2\2\u0387\u0388\7c\2\2\u0388\u0389\7t\2\2\u0389"+ + "\u038a\7t\2\2\u038a\u038b\7c\2\2\u038b\u038c\7{\2\2\u038cv\3\2\2\2\u038d"+ + "\u038e\7c\2\2\u038e\u038f\7u\2\2\u038fx\3\2\2\2\u0390\u0391\7d\2\2\u0391"+ + "\u0392\7k\2\2\u0392\u0393\7p\2\2\u0393\u0394\7c\2\2\u0394\u0395\7t\2\2"+ + "\u0395\u0396\7{\2\2\u0396z\3\2\2\2\u0397\u0398\7d\2\2\u0398\u0399\7q\2"+ + "\2\u0399\u039a\7q\2\2\u039a\u039b\7n\2\2\u039b\u039f\3\2\2\2\u039c\u039d"+ + "\7g\2\2\u039d\u039e\7c\2\2\u039e\u03a0\7p\2\2\u039f\u039c\3\2\2\2\u039f"+ + "\u03a0\3\2\2\2\u03a0|\3\2\2\2\u03a1\u03a2\7v\2\2\u03a2\u03a3\7t\2\2\u03a3"+ + "\u03a4\7w\2\2\u03a4\u03ab\7g\2\2\u03a5\u03a6\7h\2\2\u03a6\u03a7\7c\2\2"+ + "\u03a7\u03a8\7n\2\2\u03a8\u03a9\7u\2\2\u03a9\u03ab\7g\2\2\u03aa\u03a1"+ + "\3\2\2\2\u03aa\u03a5\3\2\2\2\u03ab~\3\2\2\2\u03ac\u03ad\7d\2\2\u03ad\u03ae"+ + "\7t\2\2\u03ae\u03af\7g\2\2\u03af\u03b0\7c\2\2\u03b0\u03b1\7m\2\2\u03b1"+ + "\u0080\3\2\2\2\u03b2\u03b3\7e\2\2\u03b3\u03b4\7c\2\2\u03b4\u03b5\7n\2"+ + "\2\u03b5\u03b6\7n\2\2\u03b6\u03b7\7c\2\2\u03b7\u03b8\7d\2\2\u03b8\u03b9"+ + "\7n\2\2\u03b9\u03ba\7g\2\2\u03ba\u0082\3\2\2\2\u03bb\u03bc\7e\2\2\u03bc"+ + "\u03bd\7c\2\2\u03bd\u03be\7u\2\2\u03be\u03bf\7g\2\2\u03bf\u0084\3\2\2"+ + "\2\u03c0\u03c1\7e\2\2\u03c1\u03c2\7c\2\2\u03c2\u03c3\7v\2\2\u03c3\u03c4"+ + "\7e\2\2\u03c4\u03c5\7j\2\2\u03c5\u0086\3\2\2\2\u03c6\u03c7\7e\2\2\u03c7"+ + "\u03c8\7n\2\2\u03c8\u03c9\7c\2\2\u03c9\u03ca\7u\2\2\u03ca\u03cb\7u\2\2"+ + "\u03cb\u0088\3\2\2\2\u03cc\u03cd\7e\2\2\u03cd\u03ce\7n\2\2\u03ce\u03cf"+ + "\7q\2\2\u03cf\u03d0\7p\2\2\u03d0\u03d1\7g\2\2\u03d1\u008a\3\2\2\2\u03d2"+ + "\u03d3\7e\2\2\u03d3\u03d4\7q\2\2\u03d4\u03d5\7p\2\2\u03d5\u03d6\7u\2\2"+ + "\u03d6\u03d7\7v\2\2\u03d7\u008c\3\2\2\2\u03d8\u03d9\7e\2\2\u03d9\u03da"+ + "\7q\2\2\u03da\u03db\7p\2\2\u03db\u03dc\7v\2\2\u03dc\u03dd\7k\2\2\u03dd"+ + "\u03de\7p\2\2\u03de\u03df\7w\2\2\u03df\u03e0\7g\2\2\u03e0\u008e\3\2\2"+ + "\2\u03e1\u03e2\7f\2\2\u03e2\u03e3\7g\2\2\u03e3\u03e4\7e\2\2\u03e4\u03e5"+ + "\7n\2\2\u03e5\u03e6\7c\2\2\u03e6\u03e7\7t\2\2\u03e7\u03e8\7g\2\2\u03e8"+ + "\u0090\3\2\2\2\u03e9\u03ea\7f\2\2\u03ea\u03eb\7g\2\2\u03eb\u03ec\7h\2"+ + "\2\u03ec\u03ed\7c\2\2\u03ed\u03ee\7w\2\2\u03ee\u03ef\7n\2\2\u03ef\u03f0"+ + "\7v\2\2\u03f0\u0092\3\2\2\2\u03f1\u03f2\7f\2\2\u03f2\u03f3\7q\2\2\u03f3"+ + "\u0094\3\2\2\2\u03f4\u03f5\7t\2\2\u03f5\u03f6\7g\2\2\u03f6\u03f7\7c\2"+ + "\2\u03f7\u03f8\7n\2\2\u03f8\u0096\3\2\2\2\u03f9\u03fa\7f\2\2\u03fa\u03fb"+ + "\7q\2\2\u03fb\u03fc\7w\2\2\u03fc\u03fd\7d\2\2\u03fd\u03fe\7n\2\2\u03fe"+ + "\u03ff\7g\2\2\u03ff\u0098\3\2\2\2\u0400\u0401\7g\2\2\u0401\u0402\7e\2"+ + "\2\u0402\u0403\7j\2\2\u0403\u0404\7q\2\2\u0404\u009a\3\2\2\2\u0405\u0406"+ + "\7g\2\2\u0406\u0407\7n\2\2\u0407\u0408\7u\2\2\u0408\u0409\7g\2\2\u0409"+ + "\u009c\3\2\2\2\u040a\u040b\7g\2\2\u040b\u040c\7n\2\2\u040c\u040d\7u\2"+ + "\2\u040d\u040e\7g\2\2\u040e\u040f\7k\2\2\u040f\u0410\7h\2\2\u0410\u009e"+ + "\3\2\2\2\u0411\u0412\7g\2\2\u0412\u0413\7o\2\2\u0413\u0414\7r\2\2\u0414"+ + "\u0415\7v\2\2\u0415\u0416\7{\2\2\u0416\u00a0\3\2\2\2\u0417\u0418\7g\2"+ + "\2\u0418\u0419\7p\2\2\u0419\u041a\7w\2\2\u041a\u041b\7o\2\2\u041b\u00a2"+ + "\3\2\2\2\u041c\u041d\7g\2\2\u041d\u041e\7p\2\2\u041e\u041f\7f\2\2\u041f"+ + "\u0420\7f\2\2\u0420\u0421\7g\2\2\u0421\u0422\7e\2\2\u0422\u0423\7n\2\2"+ + "\u0423\u0424\7c\2\2\u0424\u0425\7t\2\2\u0425\u0426\7g\2\2\u0426\u00a4"+ + "\3\2\2\2\u0427\u0428\7g\2\2\u0428\u0429\7p\2\2\u0429\u042a\7f\2\2\u042a"+ + "\u042b\7h\2\2\u042b\u042c\7q\2\2\u042c\u042d\7t\2\2\u042d\u00a6\3\2\2"+ + "\2\u042e\u042f\7g\2\2\u042f\u0430\7p\2\2\u0430\u0431\7f\2\2\u0431\u0432"+ + "\7h\2\2\u0432\u0433\7q\2\2\u0433\u0434\7t\2\2\u0434\u0435\7g\2\2\u0435"+ + "\u0436\7c\2\2\u0436\u0437\7e\2\2\u0437\u0438\7j\2\2\u0438\u00a8\3\2\2"+ + "\2\u0439\u043a\7g\2\2\u043a\u043b\7p\2\2\u043b\u043c\7f\2\2\u043c\u043d"+ + "\7k\2\2\u043d\u043e\7h\2\2\u043e\u00aa\3\2\2\2\u043f\u0440\7g\2\2\u0440"+ + "\u0441\7p\2\2\u0441\u0442\7f\2\2\u0442\u0443\7u\2\2\u0443\u0444\7y\2\2"+ + "\u0444\u0445\7k\2\2\u0445\u0446\7v\2\2\u0446\u0447\7e\2\2\u0447\u0448"+ + "\7j\2\2\u0448\u00ac\3\2\2\2\u0449\u044a\7g\2\2\u044a\u044b\7p\2\2\u044b"+ + "\u044c\7f\2\2\u044c\u044d\7y\2\2\u044d\u044e\7j\2\2\u044e\u044f\7k\2\2"+ + "\u044f\u0450\7n\2\2\u0450\u0451\7g\2\2\u0451\u00ae\3\2\2\2\u0452\u0453"+ + "\7g\2\2\u0453\u0454\7x\2\2\u0454\u0455\7c\2\2\u0455\u0456\7n\2\2\u0456"+ + "\u00b0\3\2\2\2\u0457\u0458\7f\2\2\u0458\u0459\7k\2\2\u0459\u045a\7g\2"+ + "\2\u045a\u00b2\3\2\2\2\u045b\u045c\7g\2\2\u045c\u045d\7z\2\2\u045d\u045e"+ + "\7v\2\2\u045e\u045f\7g\2\2\u045f\u0460\7p\2\2\u0460\u0461\7f\2\2\u0461"+ + "\u0462\7u\2\2\u0462\u00b4\3\2\2\2\u0463\u0464\7h\2\2\u0464\u0465\7k\2"+ + "\2\u0465\u0466\7p\2\2\u0466\u0467\7c\2\2\u0467\u0468\7n\2\2\u0468\u00b6"+ + "\3\2\2\2\u0469\u046a\7h\2\2\u046a\u046b\7k\2\2\u046b\u046c\7p\2\2\u046c"+ + "\u046d\7c\2\2\u046d\u046e\7n\2\2\u046e\u046f\7n\2\2\u046f\u0470\7{\2\2"+ + "\u0470\u00b8\3\2\2\2\u0471\u0472\7h\2\2\u0472\u0473\7n\2\2\u0473\u0474"+ + "\7q\2\2\u0474\u0475\7c\2\2\u0475\u0476\7v\2\2\u0476\u00ba\3\2\2\2\u0477"+ + "\u0478\7h\2\2\u0478\u0479\7q\2\2\u0479\u047a\7t\2\2\u047a\u00bc\3\2\2"+ + "\2\u047b\u047c\7h\2\2\u047c\u047d\7q\2\2\u047d\u047e\7t\2\2\u047e\u047f"+ + "\7g\2\2\u047f\u0480\7c\2\2\u0480\u0481\7e\2\2\u0481\u0482\7j\2\2\u0482"+ + "\u00be\3\2\2\2\u0483\u0484\7h\2\2\u0484\u0485\7w\2\2\u0485\u0486\7p\2"+ + "\2\u0486\u0487\7e\2\2\u0487\u0488\7v\2\2\u0488\u0489\7k\2\2\u0489\u048a"+ + "\7q\2\2\u048a\u048b\7p\2\2\u048b\u00c0\3\2\2\2\u048c\u048d\7i\2\2\u048d"+ + "\u048e\7n\2\2\u048e\u048f\7q\2\2\u048f\u0490\7d\2\2\u0490\u0491\7c\2\2"+ + "\u0491\u0492\7n\2\2\u0492\u00c2\3\2\2\2\u0493\u0494\7i\2\2\u0494\u0495"+ + "\7q\2\2\u0495\u0496\7v\2\2\u0496\u0497\7q\2\2\u0497\u00c4\3\2\2\2\u0498"+ + "\u0499\7k\2\2\u0499\u049a\7h\2\2\u049a\u00c6\3\2\2\2\u049b\u049c\7k\2"+ + "\2\u049c\u049d\7o\2\2\u049d\u049e\7r\2\2\u049e\u049f\7n\2\2\u049f\u04a0"+ + "\7g\2\2\u04a0\u04a1\7o\2\2\u04a1\u04a2\7g\2\2\u04a2\u04a3\7p\2\2\u04a3"+ + "\u04a4\7v\2\2\u04a4\u04a5\7u\2\2\u04a5\u00c8\3\2\2\2\u04a6\u04a7\7k\2"+ + "\2\u04a7\u04a8\7o\2\2\u04a8\u04a9\7r\2\2\u04a9\u04aa\7q\2\2\u04aa\u04ab"+ + "\7t\2\2\u04ab\u04ac\7v\2\2\u04ac\u00ca\3\2\2\2\u04ad\u04ae\7k\2\2\u04ae"+ + "\u04af\7p\2\2\u04af\u04b0\7e\2\2\u04b0\u04b1\7n\2\2\u04b1\u04b2\7w\2\2"+ + "\u04b2\u04b3\7f\2\2\u04b3\u04b4\7g\2\2\u04b4\u00cc\3\2\2\2\u04b5\u04b6"+ + "\7k\2\2\u04b6\u04b7\7p\2\2\u04b7\u04b8\7e\2\2\u04b8\u04b9\7n\2\2\u04b9"+ + "\u04ba\7w\2\2\u04ba\u04bb\7f\2\2\u04bb\u04bc\7g\2\2\u04bc\u04bd\7a\2\2"+ + "\u04bd\u04be\7q\2\2\u04be\u04bf\7p\2\2\u04bf\u04c0\7e\2\2\u04c0\u04c1"+ + "\7g\2\2\u04c1\u00ce\3\2\2\2\u04c2\u04c3\7k\2\2\u04c3\u04c4\7p\2\2\u04c4"+ + "\u04c5\7u\2\2\u04c5\u04c6\7v\2\2\u04c6\u04c7\7c\2\2\u04c7\u04c8\7p\2\2"+ + "\u04c8\u04c9\7e\2\2\u04c9\u04ca\7g\2\2\u04ca\u04cb\7q\2\2\u04cb\u04cc"+ + "\7h\2\2\u04cc\u00d0\3\2\2\2\u04cd\u04ce\7k\2\2\u04ce\u04cf\7p\2\2\u04cf"+ + "\u04d0\7u\2\2\u04d0\u04d1\7v\2\2\u04d1\u04d2\7g\2\2\u04d2\u04d3\7c\2\2"+ + "\u04d3\u04d4\7f\2\2\u04d4\u04d5\7q\2\2\u04d5\u04d6\7h\2\2\u04d6\u00d2"+ + "\3\2\2\2\u04d7\u04d8\7k\2\2\u04d8\u04d9\7p\2\2\u04d9\u04da\7v\2\2\u04da"+ + "\u04db\7:\2\2\u04db\u00d4\3\2\2\2\u04dc\u04dd\7k\2\2\u04dd\u04de\7p\2"+ + "\2\u04de\u04df\7v\2\2\u04df\u04e0\7\63\2\2\u04e0\u04e1\78\2\2\u04e1\u00d6"+ + "\3\2\2\2\u04e2\u04e3\7k\2\2\u04e3\u04e4\7p\2\2\u04e4\u04e5\7v\2\2\u04e5"+ + "\u04e6\78\2\2\u04e6\u04e7\7\66\2\2\u04e7\u00d8\3\2\2\2\u04e8\u04e9\7k"+ + "\2\2\u04e9\u04ea\7p\2\2\u04ea\u04eb\7v\2\2\u04eb\u04f0\3\2\2\2\u04ec\u04ed"+ + "\7g\2\2\u04ed\u04ee\7i\2\2\u04ee\u04ef\7g\2\2\u04ef\u04f1\7t\2\2\u04f0"+ + "\u04ec\3\2\2\2\u04f0\u04f1\3\2\2\2\u04f1\u00da\3\2\2\2\u04f2\u04f3\7k"+ + "\2\2\u04f3\u04f4\7p\2\2\u04f4\u04f5\7v\2\2\u04f5\u04f6\7g\2\2\u04f6\u04f7"+ + "\7t\2\2\u04f7\u04f8\7h\2\2\u04f8\u04f9\7c\2\2\u04f9\u04fa\7e\2\2\u04fa"+ + "\u04fb\7g\2\2\u04fb\u00dc\3\2\2\2\u04fc\u04fd\7k\2\2\u04fd\u04fe\7u\2"+ + "\2\u04fe\u04ff\7u\2\2\u04ff\u0500\7g\2\2\u0500\u0501\7v\2\2\u0501\u00de"+ + "\3\2\2\2\u0502\u0503\7n\2\2\u0503\u0504\7k\2\2\u0504\u0505\7u\2\2\u0505"+ + "\u0506\7v\2\2\u0506\u00e0\3\2\2\2\u0507\u0508\7c\2\2\u0508\u0509\7p\2"+ + "\2\u0509\u050a\7f\2\2\u050a\u00e2\3\2\2\2\u050b\u050c\7q\2\2\u050c\u050d"+ + "\7t\2\2\u050d\u00e4\3\2\2\2\u050e\u050f\7z\2\2\u050f\u0510\7q\2\2\u0510"+ + "\u0511\7t\2\2\u0511\u00e6\3\2\2\2\u0512\u0513\7o\2\2\u0513\u0514\7c\2"+ + "\2\u0514\u0515\7v\2\2\u0515\u0516\7e\2\2\u0516\u0517\7j\2\2\u0517\u00e8"+ + "\3\2\2\2\u0518\u0519\7p\2\2\u0519\u051a\7c\2\2\u051a\u051b\7o\2\2\u051b"+ + "\u051c\7g\2\2\u051c\u051d\7u\2\2\u051d\u051e\7r\2\2\u051e\u051f\7c\2\2"+ + "\u051f\u0520\7e\2\2\u0520\u0521\7g\2\2\u0521\u00ea\3\2\2\2\u0522\u0523"+ + "\7p\2\2\u0523\u0524\7g\2\2\u0524\u0525\7y\2\2\u0525\u00ec\3\2\2\2\u0526"+ + "\u0527\7p\2\2\u0527\u0528\7w\2\2\u0528\u0529\7n\2\2\u0529\u052a\7n\2\2"+ + "\u052a\u00ee\3\2\2\2\u052b\u052c\7q\2\2\u052c\u052d\7d\2\2\u052d\u052e"+ + "\7l\2\2\u052e\u052f\7g\2\2\u052f\u0530\7e\2\2\u0530\u0531\7v\2\2\u0531"+ + "\u00f0\3\2\2\2\u0532\u0533\7r\2\2\u0533\u0534\7c\2\2\u0534\u0535\7t\2"+ + "\2\u0535\u0536\7g\2\2\u0536\u0537\7p\2\2\u0537\u0538\7v\2\2\u0538\u00f2"+ + "\3\2\2\2\u0539\u053a\7r\2\2\u053a\u053b\7c\2\2\u053b\u053c\7t\2\2\u053c"+ + "\u053d\7v\2\2\u053d\u053e\7k\2\2\u053e\u053f\7c\2\2\u053f\u0540\7n\2\2"+ + "\u0540\u00f4\3\2\2\2\u0541\u0542\7r\2\2\u0542\u0543\7t\2\2\u0543\u0544"+ + "\7k\2\2\u0544\u0545\7p\2\2\u0545\u0546\7v\2\2\u0546\u00f6\3\2\2\2\u0547"+ + "\u0548\7r\2\2\u0548\u0549\7t\2\2\u0549\u054a\7k\2\2\u054a\u054b\7x\2\2"+ + "\u054b\u054c\7c\2\2\u054c\u054d\7v\2\2\u054d\u054e\7g\2\2\u054e\u00f8"+ + "\3\2\2\2\u054f\u0550\7r\2\2\u0550\u0551\7t\2\2\u0551\u0552\7q\2\2\u0552"+ + "\u0553\7v\2\2\u0553\u0554\7g\2\2\u0554\u0555\7e\2\2\u0555\u0556\7v\2\2"+ + "\u0556\u0557\7g\2\2\u0557\u0558\7f\2\2\u0558\u00fa\3\2\2\2\u0559\u055a"+ + "\7r\2\2\u055a\u055b\7w\2\2\u055b\u055c\7d\2\2\u055c\u055d\7n\2\2\u055d"+ + "\u055e\7k\2\2\u055e\u055f\7e\2\2\u055f\u00fc\3\2\2\2\u0560\u0561\7t\2"+ + "\2\u0561\u0562\7g\2\2\u0562\u0563\7c\2\2\u0563\u0564\7f\2\2\u0564\u0565"+ + "\7q\2\2\u0565\u0566\7p\2\2\u0566\u0567\7n\2\2\u0567\u0568\7{\2\2\u0568"+ + "\u00fe\3\2\2\2\u0569\u056a\7t\2\2\u056a\u056b\7g\2\2\u056b\u056c\7s\2"+ + "\2\u056c\u056d\7w\2\2\u056d\u056e\7k\2\2\u056e\u056f\7t\2\2\u056f\u0570"+ + "\7g\2\2\u0570\u0100\3\2\2\2\u0571\u0572\7t\2\2\u0572\u0573\7g\2\2\u0573"+ + "\u0574\7s\2\2\u0574\u0575\7w\2\2\u0575\u0576\7k\2\2\u0576\u0577\7t\2\2"+ + "\u0577\u0578\7g\2\2\u0578\u0579\7a\2\2\u0579\u057a\7q\2\2\u057a\u057b"+ + "\7p\2\2\u057b\u057c\7e\2\2\u057c\u057d\7g\2\2\u057d\u0102\3\2\2\2\u057e"+ + "\u057f\7t\2\2\u057f\u0580\7g\2\2\u0580\u0581\7u\2\2\u0581\u0582\7q\2\2"+ + "\u0582\u0583\7w\2\2\u0583\u0584\7t\2\2\u0584\u0585\7e\2\2\u0585\u0586"+ + "\7g\2\2\u0586\u0104\3\2\2\2\u0587\u0588\7t\2\2\u0588\u0589\7g\2\2\u0589"+ + "\u058a\7v\2\2\u058a\u058b\7w\2\2\u058b\u058c\7t\2\2\u058c\u058d\7p\2\2"+ + "\u058d\u0106\3\2\2\2\u058e\u058f\7u\2\2\u058f\u0590\7v\2\2\u0590\u0591"+ + "\7c\2\2\u0591\u0592\7v\2\2\u0592\u0593\7k\2\2\u0593\u0594\7e\2\2\u0594"+ + "\u0108\3\2\2\2\u0595\u0596\7u\2\2\u0596\u0597\7v\2\2\u0597\u0598\7t\2"+ + "\2\u0598\u0599\7k\2\2\u0599\u059a\7p\2\2\u059a\u059b\7i\2\2\u059b\u010a"+ + "\3\2\2\2\u059c\u059d\7u\2\2\u059d\u059e\7y\2\2\u059e\u059f\7k\2\2\u059f"+ + "\u05a0\7v\2\2\u05a0\u05a1\7e\2\2\u05a1\u05a2\7j\2\2\u05a2\u010c\3\2\2"+ + "\2\u05a3\u05a4\7v\2\2\u05a4\u05a5\7j\2\2\u05a5\u05a6\7t\2\2\u05a6\u05a7"+ + "\7q\2\2\u05a7\u05a8\7y\2\2\u05a8\u010e\3\2\2\2\u05a9\u05aa\7v\2\2\u05aa"+ + "\u05ab\7t\2\2\u05ab\u05ac\7c\2\2\u05ac\u05ad\7k\2\2\u05ad\u05ae\7v\2\2"+ + "\u05ae\u0110\3\2\2\2\u05af\u05b0\7v\2\2\u05b0\u05b1\7t\2\2\u05b1\u05b2"+ + "\7{\2\2\u05b2\u0112\3\2\2\2\u05b3\u05b4\7e\2\2\u05b4\u05b5\7n\2\2\u05b5"+ + "\u05b6\7t\2\2\u05b6\u05b7\7v\2\2\u05b7\u05b8\7{\2\2\u05b8\u05b9\7r\2\2"+ + "\u05b9\u05ba\7g\2\2\u05ba\u05bb\7q\2\2\u05bb\u05bc\7h\2\2\u05bc\u0114"+ + "\3\2\2\2\u05bd\u05be\7w\2\2\u05be\u05bf\7k\2\2\u05bf\u05c0\7p\2\2\u05c0"+ + "\u05c1\7v\2\2\u05c1\u05c7\3\2\2\2\u05c2\u05c8\7:\2\2\u05c3\u05c4\7\63"+ + "\2\2\u05c4\u05c8\78\2\2\u05c5\u05c6\78\2\2\u05c6\u05c8\7\66\2\2\u05c7"+ + "\u05c2\3\2\2\2\u05c7\u05c3\3\2\2\2\u05c7\u05c5\3\2\2\2\u05c7\u05c8\3\2"+ + "\2\2\u05c8\u0116\3\2\2\2\u05c9\u05ca\7w\2\2\u05ca\u05cb\7p\2\2\u05cb\u05cc"+ + "\7k\2\2\u05cc\u05cd\7e\2\2\u05cd\u05ce\7q\2\2\u05ce\u05cf\7f\2\2\u05cf"+ + "\u05d0\7g\2\2\u05d0\u0118\3\2\2\2\u05d1\u05d2\7w\2\2\u05d2\u05d3\7p\2"+ + "\2\u05d3\u05d4\7u\2\2\u05d4\u05d5\7g\2\2\u05d5\u05d6\7v\2\2\u05d6\u011a"+ + "\3\2\2\2\u05d7\u05d8\7w\2\2\u05d8\u05d9\7u\2\2\u05d9\u05da\7g\2\2\u05da"+ + "\u011c\3\2\2\2\u05db\u05dc\7x\2\2\u05dc\u05dd\7c\2\2\u05dd\u05de\7t\2"+ + "\2\u05de\u011e\3\2\2\2\u05df\u05e0\7y\2\2\u05e0\u05e1\7j\2\2\u05e1\u05e2"+ + "\7k\2\2\u05e2\u05e3\7n\2\2\u05e3\u05e4\7g\2\2\u05e4\u0120\3\2\2\2\u05e5"+ + "\u05e6\7{\2\2\u05e6\u05e7\7k\2\2\u05e7\u05e8\7g\2\2\u05e8\u05e9\7n\2\2"+ + "\u05e9\u05ea\7f\2\2\u05ea\u0122\3\2\2\2\u05eb\u05ec\7h\2\2\u05ec\u05ed"+ + "\7t\2\2\u05ed\u05ee\7q\2\2\u05ee\u05ef\7o\2\2\u05ef\u0124\3\2\2\2\u05f0"+ + "\u05f1\7h\2\2\u05f1\u05f2\7p\2\2\u05f2\u0126\3\2\2\2\u05f3\u05f4\7v\2"+ + "\2\u05f4\u05f5\7k\2\2\u05f5\u05f6\7e\2\2\u05f6\u05f7\7m\2\2\u05f7\u05f8"+ + "\7u\2\2\u05f8\u0128\3\2\2\2\u05f9\u05fa\7g\2\2\u05fa\u05fb\7p\2\2\u05fb"+ + "\u05fc\7e\2\2\u05fc\u05fd\7q\2\2\u05fd\u05fe\7f\2\2\u05fe\u05ff\7k\2\2"+ + "\u05ff\u0600\7p\2\2\u0600\u0601\7i\2\2\u0601\u012a\3\2\2\2\u0602\u0603"+ + "\7u\2\2\u0603\u0604\7v\2\2\u0604\u0605\7t\2\2\u0605\u0606\7k\2\2\u0606"+ + "\u0607\7e\2\2\u0607\u0608\7v\2\2\u0608\u0609\7a\2\2\u0609\u060a\7v\2\2"+ + "\u060a\u060b\7{\2\2\u060b\u060c\7r\2\2\u060c\u060d\7g\2\2\u060d\u060e"+ + "\7u\2\2\u060e\u012c\3\2\2\2\u060f\u0610\7a\2\2\u0610\u0611\7a\2\2\u0611"+ + "\u0612\7i\2\2\u0612\u0613\7g\2\2\u0613\u0614\7v\2\2\u0614\u012e\3\2\2"+ + "\2\u0615\u0616\7a\2\2\u0616\u0617\7a\2\2\u0617\u0618\7u\2\2\u0618\u0619"+ + "\7g\2\2\u0619\u061a\7v\2\2\u061a\u0130\3\2\2\2\u061b\u061c\7a\2\2\u061c"+ + "\u061d\7a\2\2\u061d\u061e\7e\2\2\u061e\u061f\7c\2\2\u061f\u0620\7n\2\2"+ + "\u0620\u0621\7n\2\2\u0621\u0132\3\2\2\2\u0622\u0623\7a\2\2\u0623\u0624"+ + "\7a\2\2\u0624\u0625\7e\2\2\u0625\u0626\7c\2\2\u0626\u0627\7n\2\2\u0627"+ + "\u0628\7n\2\2\u0628\u0629\7u\2\2\u0629\u062a\7v\2\2\u062a\u062b\7c\2\2"+ + "\u062b\u062c\7v\2\2\u062c\u062d\7k\2\2\u062d\u062e\7e\2\2\u062e\u0134"+ + "\3\2\2\2\u062f\u0630\7a\2\2\u0630\u0631\7a\2\2\u0631\u0632\7e\2\2\u0632"+ + "\u0633\7q\2\2\u0633\u0634\7p\2\2\u0634\u0635\7u\2\2\u0635\u0636\7v\2\2"+ + "\u0636\u0637\7t\2\2\u0637\u0638\7w\2\2\u0638\u0639\7e\2\2\u0639\u063a"+ + "\7v\2\2\u063a\u0136\3\2\2\2\u063b\u063c\7a\2\2\u063c\u063d\7a\2\2\u063d"+ + "\u063e\7f\2\2\u063e\u063f\7g\2\2\u063f\u0640\7u\2\2\u0640\u0641\7v\2\2"+ + "\u0641\u0642\7t\2\2\u0642\u0643\7w\2\2\u0643\u0644\7e\2\2\u0644\u0645"+ + "\7v\2\2\u0645\u0138\3\2\2\2\u0646\u0647\7a\2\2\u0647\u0648\7a\2\2\u0648"+ + "\u0649\7y\2\2\u0649\u064a\7c\2\2\u064a\u064b\7m\2\2\u064b\u064c\7g\2\2"+ + "\u064c\u064d\7w\2\2\u064d\u064e\7r\2\2\u064e\u013a\3\2\2\2\u064f\u0650"+ + "\7a\2\2\u0650\u0651\7a\2\2\u0651\u0652\7u\2\2\u0652\u0653\7n\2\2\u0653"+ + "\u0654\7g\2\2\u0654\u0655\7g\2\2\u0655\u0656\7r\2\2\u0656\u013c\3\2\2"+ + "\2\u0657\u0658\7a\2\2\u0658\u0659\7a\2\2\u0659\u065a\7c\2\2\u065a\u065b"+ + "\7w\2\2\u065b\u065c\7v\2\2\u065c\u065d\7q\2\2\u065d\u065e\7n\2\2\u065e"+ + "\u065f\7q\2\2\u065f\u0660\7c\2\2\u0660\u0661\7f\2\2\u0661\u013e\3\2\2"+ + "\2\u0662\u0663\7a\2\2\u0663\u0664\7a\2\2\u0664\u0665\7k\2\2\u0665\u0666"+ + "\7u\2\2\u0666\u0667\7u\2\2\u0667\u0668\7g\2\2\u0668\u0669\7v\2\2\u0669"+ + "\u0140\3\2\2\2\u066a\u066b\7a\2\2\u066b\u066c\7a\2\2\u066c\u066d\7w\2"+ + "\2\u066d\u066e\7p\2\2\u066e\u066f\7u\2\2\u066f\u0670\7g\2\2\u0670\u0671"+ + "\7v\2\2\u0671\u0142\3\2\2\2\u0672\u0673\7a\2\2\u0673\u0674\7a\2\2\u0674"+ + "\u0675\7v\2\2\u0675\u0676\7q\2\2\u0676\u0677\7u\2\2\u0677\u0678\7v\2\2"+ + "\u0678\u0679\7t\2\2\u0679\u067a\7k\2\2\u067a\u067b\7p\2\2\u067b\u067c"+ + "\7i\2\2\u067c\u0144\3\2\2\2\u067d\u067e\7a\2\2\u067e\u067f\7a\2\2\u067f"+ + "\u0680\7k\2\2\u0680\u0681\7p\2\2\u0681\u0682\7x\2\2\u0682\u0683\7q\2\2"+ + "\u0683\u0684\7m\2\2\u0684\u0685\7g\2\2\u0685\u0146\3\2\2\2\u0686\u0687"+ + "\7a\2\2\u0687\u0688\7a\2\2\u0688\u0689\7u\2\2\u0689\u068a\7g\2\2\u068a"+ + "\u068b\7v\2\2\u068b\u068c\7a\2\2\u068c\u068d\7u\2\2\u068d\u068e\7v\2\2"+ + "\u068e\u068f\7c\2\2\u068f\u0690\7v\2\2\u0690\u0691\7g\2\2\u0691\u0148"+ + "\3\2\2\2\u0692\u0693\7a\2\2\u0693\u0694\7a\2\2\u0694\u0695\7e\2\2\u0695"+ + "\u0696\7n\2\2\u0696\u0697\7q\2\2\u0697\u0698\7p\2\2\u0698\u0699\7g\2\2"+ + "\u0699\u014a\3\2\2\2\u069a\u069b\7a\2\2\u069b\u069c\7a\2\2\u069c\u069d"+ + "\7f\2\2\u069d\u069e\7g\2\2\u069e\u069f\7d\2\2\u069f\u06a0\7w\2\2\u06a0"+ + "\u06a1\7i\2\2\u06a1\u06a2\7k\2\2\u06a2\u06a3\7p\2\2\u06a3\u06a4\7h\2\2"+ + "\u06a4\u06a5\7q\2\2\u06a5\u014c\3\2\2\2\u06a6\u06a7\7a\2\2\u06a7\u06a8"+ + "\7a\2\2\u06a8\u06a9\7p\2\2\u06a9\u06aa\7c\2\2\u06aa\u06ab\7o\2\2\u06ab"+ + "\u06ac\7g\2\2\u06ac\u06ad\7u\2\2\u06ad\u06ae\7r\2\2\u06ae\u06af\7c\2\2"+ + "\u06af\u06b0\7e\2\2\u06b0\u06b1\7g\2\2\u06b1\u06b2\7a\2\2\u06b2\u06b3"+ + "\7a\2\2\u06b3\u014e\3\2\2\2\u06b4\u06b5\7a\2\2\u06b5\u06b6\7a\2\2\u06b6"+ + "\u06b7\7e\2\2\u06b7\u06b8\7n\2\2\u06b8\u06b9\7c\2\2\u06b9\u06ba\7u\2\2"+ + "\u06ba\u06bb\7u\2\2\u06bb\u06bc\7a\2\2\u06bc\u06bd\7a\2\2\u06bd\u0150"+ + "\3\2\2\2\u06be\u06bf\7a\2\2\u06bf\u06c0\7a\2\2\u06c0\u06c1\7v\2\2\u06c1"+ + "\u06c2\7t\2\2\u06c2\u06c3\7c\2\2\u06c3\u06c4\7k\2\2\u06c4\u06c5\7v\2\2"+ + "\u06c5\u06c6\7a\2\2\u06c6\u06c7\7a\2\2\u06c7\u0152\3\2\2\2\u06c8\u06c9"+ + "\7a\2\2\u06c9\u06ca\7a\2\2\u06ca\u06cb\7h\2\2\u06cb\u06cc\7w\2\2\u06cc"+ + "\u06cd\7p\2\2\u06cd\u06ce\7e\2\2\u06ce\u06cf\7v\2\2\u06cf\u06d0\7k\2\2"+ + "\u06d0\u06d1\7q\2\2\u06d1\u06d2\7p\2\2\u06d2\u06d3\7a\2\2\u06d3\u06d4"+ + "\7a\2\2\u06d4\u0154\3\2\2\2\u06d5\u06d6\7a\2\2\u06d6\u06d7\7a\2\2\u06d7"+ + "\u06d8\7o\2\2\u06d8\u06d9\7g\2\2\u06d9\u06da\7v\2\2\u06da\u06db\7j\2\2"+ + "\u06db\u06dc\7q\2\2\u06dc\u06dd\7f\2\2\u06dd\u06de\7a\2\2\u06de\u06df"+ + "\7a\2\2\u06df\u0156\3\2\2\2\u06e0\u06e1\7a\2\2\u06e1\u06e2\7a\2\2\u06e2"+ + "\u06e3\7n\2\2\u06e3\u06e4\7k\2\2\u06e4\u06e5\7p\2\2\u06e5\u06e6\7g\2\2"+ + "\u06e6\u06e7\7a\2\2\u06e7\u06e8\7a\2\2\u06e8\u0158\3\2\2\2\u06e9\u06ea"+ + "\7a\2\2\u06ea\u06eb\7a\2\2\u06eb\u06ec\7h\2\2\u06ec\u06ed\7k\2\2\u06ed"+ + "\u06ee\7n\2\2\u06ee\u06ef\7g\2\2\u06ef\u06f0\7a\2\2\u06f0\u06f1\7a\2\2"+ + "\u06f1\u015a\3\2\2\2\u06f2\u06f3\7a\2\2\u06f3\u06f4\7a\2\2\u06f4\u06f5"+ + "\7f\2\2\u06f5\u06f6\7k\2\2\u06f6\u06f7\7t\2\2\u06f7\u06f8\7a\2\2\u06f8"+ + "\u06f9\7a\2\2\u06f9\u015c\3\2\2\2\u06fa\u06fb\7>\2\2\u06fb\u06fc\7?\2"+ + "\2\u06fc\u06fd\7@\2\2\u06fd\u015e\3\2\2\2\u06fe\u06ff\7>\2\2\u06ff\u0700"+ + "\7<\2\2\u0700\u0160\3\2\2\2\u0701\u0702\7<\2\2\u0702\u0703\7@\2\2\u0703"+ + "\u0162\3\2\2\2\u0704\u0705\7?\2\2\u0705\u0706\7@\2\2\u0706\u0164\3\2\2"+ + "\2\u0707\u0708\7-\2\2\u0708\u0709\7-\2\2\u0709\u0166\3\2\2\2\u070a\u070b"+ + "\7/\2\2\u070b\u070c\7/\2\2\u070c\u0168\3\2\2\2\u070d\u070e\7?\2\2\u070e"+ + "\u070f\7?\2\2\u070f\u0710\7?\2\2\u0710\u016a\3\2\2\2\u0711\u0712\7#\2"+ + "\2\u0712\u0713\7?\2\2\u0713\u0714\7?\2\2\u0714\u016c\3\2\2\2\u0715\u0716"+ + "\7?\2\2\u0716\u0717\7?\2\2\u0717\u016e\3\2\2\2\u0718\u0719\7>\2\2\u0719"+ + "\u071d\7@\2\2\u071a\u071b\7#\2\2\u071b\u071d\7?\2\2\u071c\u0718\3\2\2"+ + "\2\u071c\u071a\3\2\2\2\u071d\u0170\3\2\2\2\u071e\u071f\7>\2\2\u071f\u0720"+ + "\7?\2\2\u0720\u0172\3\2\2\2\u0721\u0722\7@\2\2\u0722\u0723\7?\2\2\u0723"+ + "\u0174\3\2\2\2\u0724\u0725\7-\2\2\u0725\u0726\7?\2\2\u0726\u0176\3\2\2"+ + "\2\u0727\u0728\7/\2\2\u0728\u0729\7?\2\2\u0729\u0178\3\2\2\2\u072a\u072b"+ + "\7,\2\2\u072b\u072c\7?\2\2\u072c\u017a\3\2\2\2\u072d\u072e\7,\2\2\u072e"+ + "\u072f\7,\2\2\u072f\u017c\3\2\2\2\u0730\u0731\7,\2\2\u0731\u0732\7,\2"+ + "\2\u0732\u0733\7?\2\2\u0733\u017e\3\2\2\2\u0734\u0735\7\61\2\2\u0735\u0736"+ + "\7?\2\2\u0736\u0180\3\2\2\2\u0737\u0738\7\60\2\2\u0738\u0739\7?\2\2\u0739"+ + "\u0182\3\2\2\2\u073a\u073b\7\'\2\2\u073b\u073c\7?\2\2\u073c\u0184\3\2"+ + "\2\2\u073d\u073e\7>\2\2\u073e\u073f\7>\2\2\u073f\u0740\7?\2\2\u0740\u0186"+ + "\3\2\2\2\u0741\u0742\7@\2\2\u0742\u0743\7@\2\2\u0743\u0744\7?\2\2\u0744"+ + "\u0188\3\2\2\2\u0745\u0746\7(\2\2\u0746\u0747\7?\2\2\u0747\u018a\3\2\2"+ + "\2\u0748\u0749\7~\2\2\u0749\u074a\7?\2\2\u074a\u018c\3\2\2\2\u074b\u074c"+ + "\7`\2\2\u074c\u074d\7?\2\2\u074d\u018e\3\2\2\2\u074e\u074f\7~\2\2\u074f"+ + "\u0750\7~\2\2\u0750\u0190\3\2\2\2\u0751\u0752\7(\2\2\u0752\u0753\7(\2"+ + "\2\u0753\u0192\3\2\2\2\u0754\u0755\7A\2\2\u0755\u0756\7A\2\2\u0756\u0194"+ + "\3\2\2\2\u0757\u0758\7A\2\2\u0758\u0759\7A\2\2\u0759\u075a\7?\2\2\u075a"+ + "\u0196\3\2\2\2\u075b\u075c\7>\2\2\u075c\u075d\7>\2\2\u075d\u0198\3\2\2"+ + "\2\u075e\u075f\7@\2\2\u075f\u0760\7@\2\2\u0760\u019a\3\2\2\2\u0761\u0762"+ + "\7<\2\2\u0762\u0763\7<\2\2\u0763\u019c\3\2\2\2\u0764\u0765\7/\2\2\u0765"+ + "\u0766\7@\2\2\u0766\u019e\3\2\2\2\u0767\u0768\7^\2\2\u0768\u01a0\3\2\2"+ + "\2\u0769\u076a\7\60\2\2\u076a\u076b\7\60\2\2\u076b\u076c\7\60\2\2\u076c"+ + "\u01a2\3\2\2\2\u076d\u076e\7>\2\2\u076e\u01a4\3\2\2\2\u076f\u0770\7@\2"+ + "\2\u0770\u01a6\3\2\2\2\u0771\u0772\7(\2\2\u0772\u01a8\3\2\2\2\u0773\u0774"+ + "\7~\2\2\u0774\u01aa\3\2\2\2\u0775\u0776\7#\2\2\u0776\u01ac\3\2\2\2\u0777"+ + "\u0778\7`\2\2\u0778\u01ae\3\2\2\2\u0779\u077a\7-\2\2\u077a\u01b0\3\2\2"+ + "\2\u077b\u077c\7/\2\2\u077c\u01b2\3\2\2\2\u077d\u077e\7,\2\2\u077e\u01b4"+ + "\3\2\2\2\u077f\u0780\7\'\2\2\u0780\u01b6\3\2\2\2\u0781\u0782\7\61\2\2"+ + "\u0782\u01b8\3\2\2\2\u0783\u0784\7\u0080\2\2\u0784\u01ba\3\2\2\2\u0785"+ + "\u0786\7B\2\2\u0786\u01bc\3\2\2\2\u0787\u0788\7&\2\2\u0788\u01be\3\2\2"+ + "\2\u0789\u078a\7\60\2\2\u078a\u01c0\3\2\2\2\u078b\u078c\7A\2\2\u078c\u01c2"+ + "\3\2\2\2\u078d\u078e\7*\2\2\u078e\u01c4\3\2\2\2\u078f\u0790\7+\2\2\u0790"+ + "\u01c6\3\2\2\2\u0791\u0792\7]\2\2\u0792\u01c8\3\2\2\2\u0793\u0794\7_\2"+ + "\2\u0794\u01ca\3\2\2\2\u0795\u0796\7}\2\2\u0796\u01cc\3\2\2\2\u0797\u0798"+ + "\7\177\2\2\u0798\u0799\b\u00e2\24\2\u0799\u01ce\3\2\2\2\u079a\u079b\7"+ + ".\2\2\u079b\u01d0\3\2\2\2\u079c\u079d\7<\2\2\u079d\u01d2\3\2\2\2\u079e"+ + "\u079f\7=\2\2\u079f\u01d4\3\2\2\2\u07a0\u07a1\7?\2\2\u07a1\u01d6\3\2\2"+ + "\2\u07a2\u07a3\7)\2\2\u07a3\u01d8\3\2\2\2\u07a4\u07a5\7b\2\2\u07a5\u01da"+ + "\3\2\2\2\u07a6\u07a7\7&\2\2\u07a7\u07a8\5\u0213\u0105\2\u07a8\u01dc\3"+ + "\2\2\2\u07a9\u07ad\t\t\2\2\u07aa\u07ac\t\n\2\2\u07ab\u07aa\3\2\2\2\u07ac"+ + "\u07af\3\2\2\2\u07ad\u07ab\3\2\2\2\u07ad\u07ae\3\2\2\2\u07ae\u01de\3\2"+ + "\2\2\u07af\u07ad\3\2\2\2\u07b0\u07b2\7\62\2\2\u07b1\u07b3\7q\2\2\u07b2"+ + "\u07b1\3\2\2\2\u07b2\u07b3\3\2\2\2\u07b3\u07b5\3\2\2\2\u07b4\u07b6\5\u0221"+ + "\u010c\2\u07b5\u07b4\3\2\2\2\u07b6\u07b7\3\2\2\2\u07b7\u07b5\3\2\2\2\u07b7"+ + "\u07b8\3\2\2\2\u07b8\u07c1\3\2\2\2\u07b9\u07bb\7a\2\2\u07ba\u07bc\5\u0221"+ + "\u010c\2\u07bb\u07ba\3\2\2\2\u07bc\u07bd\3\2\2\2\u07bd\u07bb\3\2\2\2\u07bd"+ + "\u07be\3\2\2\2\u07be\u07c0\3\2\2\2\u07bf\u07b9\3\2\2\2\u07c0\u07c3\3\2"+ + "\2\2\u07c1\u07bf\3\2\2\2\u07c1\u07c2\3\2\2\2\u07c2\u01e0\3\2\2\2\u07c3"+ + "\u07c1\3\2\2\2\u07c4\u07d8\7\62\2\2\u07c5\u07c9\5\u021d\u010a\2\u07c6"+ + "\u07c8\5\u021f\u010b\2\u07c7\u07c6\3\2\2\2\u07c8\u07cb\3\2\2\2\u07c9\u07c7"+ + "\3\2\2\2\u07c9\u07ca\3\2\2\2\u07ca\u07d4\3\2\2\2\u07cb\u07c9\3\2\2\2\u07cc"+ + "\u07ce\7a\2\2\u07cd\u07cf\5\u021f\u010b\2\u07ce\u07cd\3\2\2\2\u07cf\u07d0"+ + "\3\2\2\2\u07d0\u07ce\3\2\2\2\u07d0\u07d1\3\2\2\2\u07d1\u07d3\3\2\2\2\u07d2"+ + "\u07cc\3\2\2\2\u07d3\u07d6\3\2\2\2\u07d4\u07d2\3\2\2\2\u07d4\u07d5\3\2"+ + "\2\2\u07d5\u07d8\3\2\2\2\u07d6\u07d4\3\2\2\2\u07d7\u07c4\3\2\2\2\u07d7"+ + "\u07c5\3\2\2\2\u07d8\u01e2\3\2\2\2\u07d9\u07da\5\u0219\u0108\2\u07da\u07dc"+ + "\7\60\2\2\u07db\u07dd\5\u0219\u0108\2\u07dc\u07db\3\2\2\2\u07dc\u07dd"+ + "\3\2\2\2\u07dd\u07e4\3\2\2\2\u07de\u07e0\5\u0219\u0108\2\u07df\u07de\3"+ + "\2\2\2\u07df\u07e0\3\2\2\2\u07e0\u07e1\3\2\2\2\u07e1\u07e2\7\60\2\2\u07e2"+ + "\u07e4\5\u0219\u0108\2\u07e3\u07d9\3\2\2\2\u07e3\u07df\3\2\2\2\u07e4\u07e6"+ + "\3\2\2\2\u07e5\u07e7\5\u021b\u0109\2\u07e6\u07e5\3\2\2\2\u07e6\u07e7\3"+ + "\2\2\2\u07e7\u07f0\3\2\2\2\u07e8\u07ea\5\u0219\u0108\2\u07e9\u07e8\3\2"+ + "\2\2\u07ea\u07eb\3\2\2\2\u07eb\u07e9\3\2\2\2\u07eb\u07ec\3\2\2\2\u07ec"+ + "\u07ed\3\2\2\2\u07ed\u07ee\5\u021b\u0109\2\u07ee\u07f0\3\2\2\2\u07ef\u07e3"+ + "\3\2\2\2\u07ef\u07e9\3\2\2\2\u07f0\u01e4\3\2\2\2\u07f1\u07f2\7\62\2\2"+ + "\u07f2\u07f3\7z\2\2\u07f3\u07f5\3\2\2\2\u07f4\u07f6\5\u0223\u010d\2\u07f5"+ + "\u07f4\3\2\2\2\u07f6\u07f7\3\2\2\2\u07f7\u07f5\3\2\2\2\u07f7\u07f8\3\2"+ + "\2\2\u07f8\u0801\3\2\2\2\u07f9\u07fb\7a\2\2\u07fa\u07fc\5\u0223\u010d"+ + "\2\u07fb\u07fa\3\2\2\2\u07fc\u07fd\3\2\2\2\u07fd\u07fb\3\2\2\2\u07fd\u07fe"+ + "\3\2\2\2\u07fe\u0800\3\2\2\2\u07ff\u07f9\3\2\2\2\u0800\u0803\3\2\2\2\u0801"+ + "\u07ff\3\2\2\2\u0801\u0802\3\2\2\2\u0802\u01e6\3\2\2\2\u0803\u0801\3\2"+ + "\2\2\u0804\u0805\7\62\2\2\u0805\u0806\7d\2\2\u0806\u0808\3\2\2\2\u0807"+ + "\u0809\t\13\2\2\u0808\u0807\3\2\2\2\u0809\u080a\3\2\2\2\u080a\u0808\3"+ + "\2\2\2\u080a\u080b\3\2\2\2\u080b\u0814\3\2\2\2\u080c\u080e\7a\2\2\u080d"+ + "\u080f\t\13\2\2\u080e\u080d\3\2\2\2\u080f\u0810\3\2\2\2\u0810\u080e\3"+ + "\2\2\2\u0810\u0811\3\2\2\2\u0811\u0813\3\2\2\2\u0812\u080c\3\2\2\2\u0813"+ + "\u0816\3\2\2\2\u0814\u0812\3\2\2\2\u0814\u0815\3\2\2\2\u0815\u01e8\3\2"+ + "\2\2\u0816\u0814\3\2\2\2\u0817\u081b\7b\2\2\u0818\u081a\n\f\2\2\u0819"+ + "\u0818\3\2\2\2\u081a\u081d\3\2\2\2\u081b\u0819\3\2\2\2\u081b\u081c\3\2"+ + "\2\2\u081c\u081e\3\2\2\2\u081d\u081b\3\2\2\2\u081e\u081f\7b\2\2\u081f"+ + "\u01ea\3\2\2\2\u0820\u0826\7)\2\2\u0821\u0825\n\r\2\2\u0822\u0823\7^\2"+ + "\2\u0823\u0825\13\2\2\2\u0824\u0821\3\2\2\2\u0824\u0822\3\2\2\2\u0825"+ + "\u0828\3\2\2\2\u0826\u0824\3\2\2\2\u0826\u0827\3\2\2\2\u0827\u0829\3\2"+ + "\2\2\u0828\u0826\3\2\2\2\u0829\u082a\7)\2\2\u082a\u01ec\3\2\2\2\u082b"+ + "\u082c\7$\2\2\u082c\u082d\3\2\2\2\u082d\u082e\b\u00f2\25\2\u082e\u01ee"+ + "\3\2\2\2\u082f\u0830\7>\2\2\u0830\u0831\7>\2\2\u0831\u0832\7>\2\2\u0832"+ + "\u0836\3\2\2\2\u0833\u0835\t\16\2\2\u0834\u0833\3\2\2\2\u0835\u0838\3"+ + "\2\2\2\u0836\u0834\3\2\2\2\u0836\u0837\3\2\2\2\u0837\u0839\3\2\2\2\u0838"+ + "\u0836\3\2\2\2\u0839\u083a\7)\2\2\u083a\u083b\5\u0213\u0105\2\u083b\u083c"+ + "\7)\2\2\u083c\u083d\6\u00f3\5\2\u083d\u083e\3\2\2\2\u083e\u083f\b\u00f3"+ + "\26\2\u083f\u01f0\3\2\2\2\u0840\u0841\7>\2\2\u0841\u0842\7>\2\2\u0842"+ + "\u0843\7>\2\2\u0843\u0847\3\2\2\2\u0844\u0846\t\16\2\2\u0845\u0844\3\2"+ + "\2\2\u0846\u0849\3\2\2\2\u0847\u0845\3\2\2\2\u0847\u0848\3\2\2\2\u0848"+ + "\u084a\3\2\2\2\u0849\u0847\3\2\2\2\u084a\u084b\5\u0213\u0105\2\u084b\u084c"+ + "\6\u00f4\6\2\u084c\u084d\3\2\2\2\u084d\u084e\b\u00f4\26\2\u084e\u01f2"+ + "\3\2\2\2\u084f\u0850\13\2\2\2\u0850\u0851\3\2\2\2\u0851\u0852\b\u00f5"+ + "\13\2\u0852\u01f4\3\2\2\2\u0853\u0854\7&\2\2\u0854\u0855\5\u0213\u0105"+ + "\2\u0855\u0856\3\2\2\2\u0856\u0857\b\u00f6\27\2\u0857\u01f6\3\2\2\2\u0858"+ + "\u0859\7&\2\2\u0859\u085a\3\2\2\2\u085a\u085b\b\u00f7\30\2\u085b\u01f8"+ + "\3\2\2\2\u085c\u085d\7}\2\2\u085d\u085e\6\u00f8\7\2\u085e\u085f\b\u00f8"+ + "\31\2\u085f\u0860\3\2\2\2\u0860\u0861\b\u00f8\6\2\u0861\u0862\b\u00f8"+ + "\5\2\u0862\u01fa\3\2\2\2\u0863\u0864\7}\2\2\u0864\u0865\3\2\2\2\u0865"+ + "\u0866\b\u00f9\30\2\u0866\u01fc\3\2\2\2\u0867\u0868\7^\2\2\u0868\u0869"+ + "\13\2\2\2\u0869\u086a\3\2\2\2\u086a\u086b\b\u00fa\30\2\u086b\u01fe\3\2"+ + "\2\2\u086c\u086d\7$\2\2\u086d\u086e\3\2\2\2\u086e\u086f\b\u00fb\32\2\u086f"+ + "\u0870\b\u00fb\f\2\u0870\u0200\3\2\2\2\u0871\u0872\7^\2\2\u0872\u0873"+ + "\7w\2\2\u0873\u0874\7}\2\2\u0874\u0875\3\2\2\2\u0875\u0877\t\17\2\2\u0876"+ + "\u0878\t\17\2\2\u0877\u0876\3\2\2\2\u0878\u0879\3\2\2\2\u0879\u0877\3"+ + "\2\2\2\u0879\u087a\3\2\2\2\u087a\u087b\3\2\2\2\u087b\u087c\7\177\2\2\u087c"+ + "\u0202\3\2\2\2\u087d\u087f\n\20\2\2\u087e\u087d\3\2\2\2\u087f\u0880\3"+ + "\2\2\2\u0880\u087e\3\2\2\2\u0880\u0881\3\2\2\2\u0881\u0204\3\2\2\2\u0882"+ + "\u0884\n\21\2\2\u0883\u0882\3\2\2\2\u0884\u0885\3\2\2\2\u0885\u0883\3"+ + "\2\2\2\u0885\u0886\3\2\2\2\u0886\u0887\3\2\2\2\u0887\u0888\b\u00fe\22"+ + "\2\u0888\u0206\3\2\2\2\u0889\u088a\7A\2\2\u088a\u088b\7@\2\2\u088b\u0208"+ + "\3\2\2\2\u088c\u088d\7A\2\2\u088d\u088e\3\2\2\2\u088e\u088f\b\u0100\33"+ + "\2\u088f\u0890\b\u0100\22\2\u0890\u020a\3\2\2\2\u0891\u0892\t\4\2\2\u0892"+ + "\u0893\3\2\2\2\u0893\u0894\b\u0101\6\2\u0894\u0895\b\u0101\f\2\u0895\u020c"+ + "\3\2\2\2\u0896\u0898\n\4\2\2\u0897\u0896\3\2\2\2\u0898\u089b\3\2\2\2\u0899"+ + "\u089a\3\2\2\2\u0899\u0897\3\2\2\2\u089a\u08a1\3\2\2\2\u089b\u0899\3\2"+ + "\2\2\u089c\u089e\7\17\2\2\u089d\u089c\3\2\2\2\u089d\u089e\3\2\2\2\u089e"+ + "\u089f\3\2\2\2\u089f\u08a2\7\f\2\2\u08a0\u08a2\7\17\2\2\u08a1\u089d\3"+ + "\2\2\2\u08a1\u08a0\3\2\2\2\u08a2\u020e\3\2\2\2\u08a3\u08a9\7>\2\2\u08a4"+ + "\u08a5\7A\2\2\u08a5\u08aa\7?\2\2\u08a6\u08a7\6\u0103\b\2\u08a7\u08a8\7"+ + "\'\2\2\u08a8\u08aa\7?\2\2\u08a9\u08a4\3\2\2\2\u08a9\u08a6\3\2\2\2\u08aa"+ + "\u0210\3\2\2\2\u08ab\u08b4\7>\2\2\u08ac\u08b0\7A\2\2\u08ad\u08ae\7r\2"+ + "\2\u08ae\u08af\7j\2\2\u08af\u08b1\7r\2\2\u08b0\u08ad\3\2\2\2\u08b0\u08b1"+ + "\3\2\2\2\u08b1\u08b5\3\2\2\2\u08b2\u08b3\6\u0104\t\2\u08b3\u08b5\7\'\2"+ + "\2\u08b4\u08ac\3\2\2\2\u08b4\u08b2\3\2\2\2\u08b5\u0212\3\2\2\2\u08b6\u08ba"+ + "\t\22\2\2\u08b7\u08b9\t\23\2\2\u08b8\u08b7\3\2\2\2\u08b9\u08bc\3\2\2\2"+ + "\u08ba\u08b8\3\2\2\2\u08ba\u08bb\3\2\2\2\u08bb\u0214\3\2\2\2\u08bc\u08ba"+ + "\3\2\2\2\u08bd\u08c2\5\u0217\u0107\2\u08be\u08c2\t\24\2\2\u08bf\u08c2"+ + "\5\u021f\u010b\2\u08c0\u08c2\t\25\2\2\u08c1\u08bd\3\2\2\2\u08c1\u08be"+ + "\3\2\2\2\u08c1\u08bf\3\2\2\2\u08c1\u08c0\3\2\2\2\u08c2\u0216\3\2\2\2\u08c3"+ + "\u08c5\t\26\2\2\u08c4\u08c3\3\2\2\2\u08c5\u0218\3\2\2\2\u08c6\u08c8\5"+ + "\u021f\u010b\2\u08c7\u08c6\3\2\2\2\u08c8\u08c9\3\2\2\2\u08c9\u08c7\3\2"+ + "\2\2\u08c9\u08ca\3\2\2\2\u08ca\u08d3\3\2\2\2\u08cb\u08cd\7a\2\2\u08cc"+ + "\u08ce\5\u021f\u010b\2\u08cd\u08cc\3\2\2\2\u08ce\u08cf\3\2\2\2\u08cf\u08cd"+ + "\3\2\2\2\u08cf\u08d0\3\2\2\2\u08d0\u08d2\3\2\2\2\u08d1\u08cb\3\2\2\2\u08d2"+ + "\u08d5\3\2\2\2\u08d3\u08d1\3\2\2\2\u08d3\u08d4\3\2\2\2\u08d4\u021a\3\2"+ + "\2\2\u08d5\u08d3\3\2\2\2\u08d6\u08d8\7g\2\2\u08d7\u08d9\t\27\2\2\u08d8"+ + "\u08d7\3\2\2\2\u08d8\u08d9\3\2\2\2\u08d9\u08da\3\2\2\2\u08da\u08db\5\u0219"+ + "\u0108\2\u08db\u021c\3\2\2\2\u08dc\u08dd\t\30\2\2\u08dd\u021e\3\2\2\2"+ + "\u08de\u08df\t\31\2\2\u08df\u0220\3\2\2\2\u08e0\u08e1\t\32\2\2\u08e1\u0222"+ + "\3\2\2\2\u08e2\u08e3\t\33\2\2\u08e3\u0224\3\2\2\2U\2\3\4\5\6\7\b\t\n\13"+ + "\f\u0228\u022f\u0263\u0272\u0281\u0288\u0294\u02b6\u02bd\u02c7\u02cc\u02d1"+ + "\u02d9\u02ec\u02f3\u0305\u030c\u0315\u0320\u0337\u0342\u034b\u0359\u035e"+ + "\u0368\u039f\u03aa\u04f0\u05c7\u071c\u07ad\u07b2\u07b7\u07bd\u07c1\u07c9"+ + "\u07d0\u07d4\u07d7\u07dc\u07df\u07e3\u07e6\u07eb\u07ef\u07f7\u07fd\u0801"+ + "\u080a\u0810\u0814\u081b\u0824\u0826\u0836\u0847\u0879\u0880\u0885\u0899"+ + "\u089d\u08a1\u08a9\u08b0\u08b4\u08ba\u08c1\u08c4\u08c9\u08cf\u08d3\u08d8"+ + "\34\2\3\2\7\3\2\tA\2\7\t\2\2\6\2\3\7\2\7\4\2\3\b\3\5\2\2\2\5\2\6\2\2\t"+ + "\16\2\3\24\4\7\5\2\7\6\2\t$\2\2\4\2\7\13\2\3\u00e2\5\7\n\2\7\f\2\t\u00e2"+ + "\2\t\u00f1\2\3\u00f8\6\t\u00eb\2\t\u00f2\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/antlr/PhpLexer.tokens b/app/src/main/java/antlr/PhpLexer.tokens new file mode 100644 index 0000000..67693cc --- /dev/null +++ b/app/src/main/java/antlr/PhpLexer.tokens @@ -0,0 +1,416 @@ +SeaWhitespace=1 +HtmlText=2 +XmlStart=3 +PHPStart=4 +HtmlScriptOpen=5 +HtmlStyleOpen=6 +HtmlComment=7 +HtmlDtd=8 +HtmlOpen=9 +Shebang=10 +Error=11 +XmlText=12 +XmlClose=13 +PHPStartInside=14 +HtmlClose=15 +HtmlSlashClose=16 +HtmlSlash=17 +HtmlEquals=18 +HtmlStartQuoteString=19 +HtmlStartDoubleQuoteString=20 +HtmlHex=21 +HtmlDecimal=22 +HtmlSpace=23 +HtmlName=24 +ErrorInside=25 +PHPStartInsideQuoteString=26 +HtmlEndQuoteString=27 +HtmlQuoteString=28 +ErrorHtmlQuote=29 +PHPStartDoubleQuoteString=30 +HtmlEndDoubleQuoteString=31 +HtmlDoubleQuoteString=32 +ErrorHtmlDoubleQuote=33 +ScriptText=34 +HtmlScriptClose=35 +PHPStartInsideScript=36 +StyleBody=37 +PHPEnd=38 +Whitespace=39 +MultiLineComment=40 +SingleLineComment=41 +ShellStyleComment=42 +AttributeStart=43 +Abstract=44 +Array=45 +As=46 +BinaryCast=47 +BoolType=48 +BooleanConstant=49 +Break=50 +Callable=51 +Case=52 +Catch=53 +Class=54 +Clone=55 +Const=56 +Continue=57 +Declare=58 +Default=59 +Do=60 +DoubleCast=61 +DoubleType=62 +Echo=63 +Else=64 +ElseIf=65 +Empty=66 +Enum_=67 +EndDeclare=68 +EndFor=69 +EndForeach=70 +EndIf=71 +EndSwitch=72 +EndWhile=73 +Eval=74 +Exit=75 +Extends=76 +Final=77 +Finally=78 +FloatCast=79 +For=80 +Foreach=81 +Function_=82 +Global=83 +Goto=84 +If=85 +Implements=86 +Import=87 +Include=88 +IncludeOnce=89 +InstanceOf=90 +InsteadOf=91 +Int8Cast=92 +Int16Cast=93 +Int64Type=94 +IntType=95 +Interface=96 +IsSet=97 +List=98 +LogicalAnd=99 +LogicalOr=100 +LogicalXor=101 +Match_=102 +Namespace=103 +New=104 +Null=105 +ObjectType=106 +Parent_=107 +Partial=108 +Print=109 +Private=110 +Protected=111 +Public=112 +Readonly=113 +Require=114 +RequireOnce=115 +Resource=116 +Return=117 +Static=118 +StringType=119 +Switch=120 +Throw=121 +Trait=122 +Try=123 +Typeof=124 +UintCast=125 +UnicodeCast=126 +Unset=127 +Use=128 +Var=129 +While=130 +Yield=131 +From=132 +LambdaFn=133 +Ticks=134 +Encoding=135 +StrictTypes=136 +Get=137 +Set=138 +Call=139 +CallStatic=140 +Constructor=141 +Destruct=142 +Wakeup=143 +Sleep=144 +Autoload=145 +IsSet__=146 +Unset__=147 +ToString__=148 +Invoke=149 +SetState=150 +Clone__=151 +DebugInfo=152 +Namespace__=153 +Class__=154 +Traic__=155 +Function__=156 +Method__=157 +Line__=158 +File__=159 +Dir__=160 +Spaceship=161 +Lgeneric=162 +Rgeneric=163 +DoubleArrow=164 +Inc=165 +Dec=166 +IsIdentical=167 +IsNoidentical=168 +IsEqual=169 +IsNotEq=170 +IsSmallerOrEqual=171 +IsGreaterOrEqual=172 +PlusEqual=173 +MinusEqual=174 +MulEqual=175 +Pow=176 +PowEqual=177 +DivEqual=178 +Concaequal=179 +ModEqual=180 +ShiftLeftEqual=181 +ShiftRightEqual=182 +AndEqual=183 +OrEqual=184 +XorEqual=185 +BooleanOr=186 +BooleanAnd=187 +NullCoalescing=188 +NullCoalescingEqual=189 +ShiftLeft=190 +ShiftRight=191 +DoubleColon=192 +ObjectOperator=193 +NamespaceSeparator=194 +Ellipsis=195 +Less=196 +Greater=197 +Ampersand=198 +Pipe=199 +Bang=200 +Caret=201 +Plus=202 +Minus=203 +Asterisk=204 +Percent=205 +Divide=206 +Tilde=207 +SuppressWarnings=208 +Dollar=209 +Dot=210 +QuestionMark=211 +OpenRoundBracket=212 +CloseRoundBracket=213 +OpenSquareBracket=214 +CloseSquareBracket=215 +OpenCurlyBracket=216 +CloseCurlyBracket=217 +Comma=218 +Colon=219 +SemiColon=220 +Eq=221 +Quote=222 +BackQuote=223 +VarName=224 +Label=225 +Octal=226 +Decimal=227 +Real=228 +Hex=229 +Binary=230 +BackQuoteString=231 +SingleQuoteString=232 +DoubleQuote=233 +StartNowDoc=234 +StartHereDoc=235 +ErrorPhp=236 +CurlyDollar=237 +UnicodeEscape=238 +StringPart=239 +Comment=240 +PHPEndSingleLineComment=241 +CommentEnd=242 +HereDocText=243 +XmlText2=244 +'<?xml'=3 +'?>'=13 +'/>'=16 +'#['=43 +'abstract'=44 +'array'=45 +'as'=46 +'binary'=47 +'break'=50 +'callable'=51 +'case'=52 +'catch'=53 +'class'=54 +'clone'=55 +'const'=56 +'continue'=57 +'declare'=58 +'default'=59 +'do'=60 +'real'=61 +'double'=62 +'echo'=63 +'else'=64 +'elseif'=65 +'empty'=66 +'enum'=67 +'enddeclare'=68 +'endfor'=69 +'endforeach'=70 +'endif'=71 +'endswitch'=72 +'endwhile'=73 +'eval'=74 +'die'=75 +'extends'=76 +'final'=77 +'finally'=78 +'float'=79 +'for'=80 +'foreach'=81 +'function'=82 +'global'=83 +'goto'=84 +'if'=85 +'implements'=86 +'import'=87 +'include'=88 +'include_once'=89 +'instanceof'=90 +'insteadof'=91 +'int8'=92 +'int16'=93 +'int64'=94 +'interface'=96 +'isset'=97 +'list'=98 +'and'=99 +'or'=100 +'xor'=101 +'match'=102 +'namespace'=103 +'new'=104 +'null'=105 +'object'=106 +'parent'=107 +'partial'=108 +'print'=109 +'private'=110 +'protected'=111 +'public'=112 +'readonly'=113 +'require'=114 +'require_once'=115 +'resource'=116 +'return'=117 +'static'=118 +'string'=119 +'switch'=120 +'throw'=121 +'trait'=122 +'try'=123 +'clrtypeof'=124 +'unicode'=126 +'unset'=127 +'use'=128 +'var'=129 +'while'=130 +'yield'=131 +'from'=132 +'fn'=133 +'ticks'=134 +'encoding'=135 +'strict_types'=136 +'__get'=137 +'__set'=138 +'__call'=139 +'__callstatic'=140 +'__construct'=141 +'__destruct'=142 +'__wakeup'=143 +'__sleep'=144 +'__autoload'=145 +'__isset'=146 +'__unset'=147 +'__tostring'=148 +'__invoke'=149 +'__set_state'=150 +'__clone'=151 +'__debuginfo'=152 +'__namespace__'=153 +'__class__'=154 +'__trait__'=155 +'__function__'=156 +'__method__'=157 +'__line__'=158 +'__file__'=159 +'__dir__'=160 +'<=>'=161 +'<:'=162 +':>'=163 +'=>'=164 +'++'=165 +'--'=166 +'==='=167 +'!=='=168 +'=='=169 +'<='=171 +'>='=172 +'+='=173 +'-='=174 +'*='=175 +'**'=176 +'**='=177 +'/='=178 +'.='=179 +'%='=180 +'<<='=181 +'>>='=182 +'&='=183 +'|='=184 +'^='=185 +'||'=186 +'&&'=187 +'??'=188 +'??='=189 +'<<'=190 +'>>'=191 +'::'=192 +'->'=193 +'\\'=194 +'...'=195 +'&'=198 +'|'=199 +'!'=200 +'^'=201 +'+'=202 +'-'=203 +'*'=204 +'%'=205 +'~'=207 +'@'=208 +'.'=210 +'('=212 +')'=213 +'['=214 +']'=215 +'}'=217 +','=218 +':'=219 +';'=220 +'\''=222 +'`'=223 diff --git a/app/src/main/java/antlr/PhpLexerBase.java b/app/src/main/java/antlr/PhpLexerBase.java new file mode 100644 index 0000000..ecb835d --- /dev/null +++ b/app/src/main/java/antlr/PhpLexerBase.java @@ -0,0 +1,193 @@ +package antlr; + +/* +PHP grammar. +The MIT License (MIT). +Copyright (c) 2015-2019, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. +Copyright (c) 2019, Thierry Marianne (thierry.marianne@weaving-the-web.org) + +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. +*/ + +import org.antlr.v4.runtime.*; + +public abstract class PhpLexerBase extends Lexer +{ + protected boolean AspTags = true; + protected boolean _scriptTag; + protected boolean _styleTag; + protected String _heredocIdentifier; + protected int _prevTokenType; + protected String _htmlNameText; + protected boolean _phpScript; + protected boolean _insideString; + + public PhpLexerBase(CharStream input) { + super(input); + } + + @Override + public Token nextToken() { + CommonToken token = (CommonToken)super.nextToken(); + + if (token.getType() == PhpLexer.PHPEnd || token.getType() == PhpLexer.PHPEndSingleLineComment) + { + if (_mode == PhpLexer.SingleLineCommentMode) + { + // SingleLineCommentMode for such allowed syntax: + // <?php echo "Hello world"; // comment ?> + popMode(); // exit from SingleLineComment mode. + } + popMode(); // exit from PHP mode. + + if ("</script>".equals(token.getText())) + { + _phpScript = false; + token.setType(PhpLexer.HtmlScriptClose); + } + else + { + // Add semicolon to the end of statement if it is absente. + // For example: <?php echo "Hello world" ?> + if (_prevTokenType == PhpLexer.SemiColon || _prevTokenType == PhpLexer.Colon + || _prevTokenType == PhpLexer.OpenCurlyBracket || _prevTokenType == PhpLexer.CloseCurlyBracket) + { + token.setChannel(PhpLexer.SkipChannel); + } + else + { + token.setType(PhpLexer.SemiColon); + } + } + } + else if (token.getType() == PhpLexer.HtmlName) + { + _htmlNameText = token.getText(); + } + else if (token.getType() == PhpLexer.HtmlDoubleQuoteString) + { + if ("php".equals(token.getText()) && "language".equals(_htmlNameText)) + { + _phpScript = true; + } + } + else if (_mode == PhpLexer.HereDoc) + { + // Heredoc and Nowdoc syntax support: http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc + switch (token.getType()) + { + case PhpLexer.StartHereDoc: + case PhpLexer.StartNowDoc: + _heredocIdentifier = token.getText().substring(3).trim().replace("'",""); + break; + + case PhpLexer.HereDocText: + if (CheckHeredocEnd(token.getText())) + { + popMode(); + + String heredocIdentifier = GetHeredocIdentifier(token.getText()); + if (token.getText().trim().endsWith(";")) + { + token = new CommonToken(PhpLexer.SemiColon, heredocIdentifier + ";\n"); + } + else + { + token = (CommonToken)super.nextToken(); + token.setText(heredocIdentifier + "\n;"); + } + } + break; + } + } + else if (_mode == PhpLexer.PHP) + { + if (_channel != PhpLexer.HIDDEN) + { + _prevTokenType = token.getType(); + } + } + + return token; + } + + private String GetHeredocIdentifier(String text) { + String trimmedText = text.trim(); + boolean semi = (trimmedText.length() > 0) ? (trimmedText.charAt(trimmedText.length() - 1) == ';') : false; + return semi ? trimmedText.substring(0, trimmedText.length() - 1) : trimmedText; + } + + private boolean CheckHeredocEnd(String text) { + return GetHeredocIdentifier(text).equals(_heredocIdentifier); + } + + protected boolean IsNewLineOrStart(int pos) { + return this._input.LA(pos) <= 0 || this._input.LA(pos) == '\r' || this._input.LA(pos) == '\n'; + } + + protected void PushModeOnHtmlClose() { + popMode(); + if (_scriptTag) + { + if (!_phpScript) + { + pushMode(PhpLexer.SCRIPT); + } + else + { + pushMode(PhpLexer.PHP); + } + _scriptTag = false; + } + else if (_styleTag) + { + pushMode(PhpLexer.STYLE); + _styleTag = false; + } + } + + protected boolean HasAspTags() { + return this.AspTags; + } + + protected boolean HasPhpScriptTag() { + return this._phpScript; + } + + protected void PopModeOnCurlyBracketClose() { + if (_insideString) + { + _insideString = false; + setChannel(PhpLexer.SkipChannel); + popMode(); + } + } + + protected boolean ShouldPushHereDocMode(int pos) { + return _input.LA(pos) == '\r' || _input.LA(pos) == '\n'; + } + + protected boolean IsCurlyDollar(int pos) { + return _input.LA(pos) == '$'; + } + + protected void SetInsideString() { + _insideString = true; + } +} diff --git a/app/src/main/java/antlr/PhpParser.java b/app/src/main/java/antlr/PhpParser.java new file mode 100644 index 0000000..c3c7353 --- /dev/null +++ b/app/src/main/java/antlr/PhpParser.java @@ -0,0 +1,14675 @@ +package antlr; + +// Generated from PhpParser.g4 by ANTLR 4.5 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class PhpParser extends Parser { + static { RuntimeMetaData.checkVersion("4.5", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + SeaWhitespace=1, HtmlText=2, XmlStart=3, PHPStart=4, HtmlScriptOpen=5, + HtmlStyleOpen=6, HtmlComment=7, HtmlDtd=8, HtmlOpen=9, Shebang=10, Error=11, + XmlText=12, XmlClose=13, PHPStartInside=14, HtmlClose=15, HtmlSlashClose=16, + HtmlSlash=17, HtmlEquals=18, HtmlStartQuoteString=19, HtmlStartDoubleQuoteString=20, + HtmlHex=21, HtmlDecimal=22, HtmlSpace=23, HtmlName=24, ErrorInside=25, + PHPStartInsideQuoteString=26, HtmlEndQuoteString=27, HtmlQuoteString=28, + ErrorHtmlQuote=29, PHPStartDoubleQuoteString=30, HtmlEndDoubleQuoteString=31, + HtmlDoubleQuoteString=32, ErrorHtmlDoubleQuote=33, ScriptText=34, HtmlScriptClose=35, + PHPStartInsideScript=36, StyleBody=37, PHPEnd=38, Whitespace=39, MultiLineComment=40, + SingleLineComment=41, ShellStyleComment=42, AttributeStart=43, Abstract=44, + Array=45, As=46, BinaryCast=47, BoolType=48, BooleanConstant=49, Break=50, + Callable=51, Case=52, Catch=53, Class=54, Clone=55, Const=56, Continue=57, + Declare=58, Default=59, Do=60, DoubleCast=61, DoubleType=62, Echo=63, + Else=64, ElseIf=65, Empty=66, Enum_=67, EndDeclare=68, EndFor=69, EndForeach=70, + EndIf=71, EndSwitch=72, EndWhile=73, Eval=74, Exit=75, Extends=76, Final=77, + Finally=78, FloatCast=79, For=80, Foreach=81, Function_=82, Global=83, + Goto=84, If=85, Implements=86, Import=87, Include=88, IncludeOnce=89, + InstanceOf=90, InsteadOf=91, Int8Cast=92, Int16Cast=93, Int64Type=94, + IntType=95, Interface=96, IsSet=97, List=98, LogicalAnd=99, LogicalOr=100, + LogicalXor=101, Match_=102, Namespace=103, New=104, Null=105, ObjectType=106, + Parent_=107, Partial=108, Print=109, Private=110, Protected=111, Public=112, + Readonly=113, Require=114, RequireOnce=115, Resource=116, Return=117, + Static=118, StringType=119, Switch=120, Throw=121, Trait=122, Try=123, + Typeof=124, UintCast=125, UnicodeCast=126, Unset=127, Use=128, Var=129, + While=130, Yield=131, From=132, LambdaFn=133, Ticks=134, Encoding=135, + StrictTypes=136, Get=137, Set=138, Call=139, CallStatic=140, Constructor=141, + Destruct=142, Wakeup=143, Sleep=144, Autoload=145, IsSet__=146, Unset__=147, + ToString__=148, Invoke=149, SetState=150, Clone__=151, DebugInfo=152, + Namespace__=153, Class__=154, Traic__=155, Function__=156, Method__=157, + Line__=158, File__=159, Dir__=160, Spaceship=161, Lgeneric=162, Rgeneric=163, + DoubleArrow=164, Inc=165, Dec=166, IsIdentical=167, IsNoidentical=168, + IsEqual=169, IsNotEq=170, IsSmallerOrEqual=171, IsGreaterOrEqual=172, + PlusEqual=173, MinusEqual=174, MulEqual=175, Pow=176, PowEqual=177, DivEqual=178, + Concaequal=179, ModEqual=180, ShiftLeftEqual=181, ShiftRightEqual=182, + AndEqual=183, OrEqual=184, XorEqual=185, BooleanOr=186, BooleanAnd=187, + NullCoalescing=188, NullCoalescingEqual=189, ShiftLeft=190, ShiftRight=191, + DoubleColon=192, ObjectOperator=193, NamespaceSeparator=194, Ellipsis=195, + Less=196, Greater=197, Ampersand=198, Pipe=199, Bang=200, Caret=201, Plus=202, + Minus=203, Asterisk=204, Percent=205, Divide=206, Tilde=207, SuppressWarnings=208, + Dollar=209, Dot=210, QuestionMark=211, OpenRoundBracket=212, CloseRoundBracket=213, + OpenSquareBracket=214, CloseSquareBracket=215, OpenCurlyBracket=216, CloseCurlyBracket=217, + Comma=218, Colon=219, SemiColon=220, Eq=221, Quote=222, BackQuote=223, + VarName=224, Label=225, Octal=226, Decimal=227, Real=228, Hex=229, Binary=230, + BackQuoteString=231, SingleQuoteString=232, DoubleQuote=233, StartNowDoc=234, + StartHereDoc=235, ErrorPhp=236, CurlyDollar=237, UnicodeEscape=238, StringPart=239, + Comment=240, PHPEndSingleLineComment=241, CommentEnd=242, HereDocText=243, + XmlText2=244; + public static final int + RULE_htmlDocument = 0, RULE_inlineHtml = 1, RULE_htmlElement = 2, RULE_scriptText = 3, + RULE_phpBlock = 4, RULE_importStatement = 5, RULE_topStatement = 6, RULE_useDeclaration = 7, + RULE_useDeclarationContentList = 8, RULE_useDeclarationContent = 9, RULE_namespaceDeclaration = 10, + RULE_namespaceStatement = 11, RULE_functionDeclaration = 12, RULE_classDeclaration = 13, + RULE_classEntryType = 14, RULE_interfaceList = 15, RULE_typeParameterListInBrackets = 16, + RULE_typeParameterList = 17, RULE_typeParameterWithDefaultsList = 18, + RULE_typeParameterDecl = 19, RULE_typeParameterWithDefaultDecl = 20, RULE_genericDynamicArgs = 21, + RULE_attributes = 22, RULE_attributeGroup = 23, RULE_attribute = 24, RULE_innerStatementList = 25, + RULE_innerStatement = 26, RULE_statement = 27, RULE_emptyStatement_ = 28, + RULE_blockStatement = 29, RULE_ifStatement = 30, RULE_elseIfStatement = 31, + RULE_elseIfColonStatement = 32, RULE_elseStatement = 33, RULE_elseColonStatement = 34, + RULE_whileStatement = 35, RULE_doWhileStatement = 36, RULE_forStatement = 37, + RULE_forInit = 38, RULE_forUpdate = 39, RULE_switchStatement = 40, RULE_switchBlock = 41, + RULE_breakStatement = 42, RULE_continueStatement = 43, RULE_returnStatement = 44, + RULE_expressionStatement = 45, RULE_unsetStatement = 46, RULE_foreachStatement = 47, + RULE_tryCatchFinally = 48, RULE_catchClause = 49, RULE_finallyStatement = 50, + RULE_throwStatement = 51, RULE_gotoStatement = 52, RULE_declareStatement = 53, + RULE_inlineHtmlStatement = 54, RULE_declareList = 55, RULE_directive = 56, + RULE_formalParameterList = 57, RULE_formalParameter = 58, RULE_typeHint = 59, + RULE_globalStatement = 60, RULE_globalVar = 61, RULE_echoStatement = 62, + RULE_staticVariableStatement = 63, RULE_classStatement = 64, RULE_traitAdaptations = 65, + RULE_traitAdaptationStatement = 66, RULE_traitPrecedence = 67, RULE_traitAlias = 68, + RULE_traitMethodReference = 69, RULE_baseCtorCall = 70, RULE_returnTypeDecl = 71, + RULE_methodBody = 72, RULE_propertyModifiers = 73, RULE_memberModifiers = 74, + RULE_variableInitializer = 75, RULE_identifierInitializer = 76, RULE_globalConstantDeclaration = 77, + RULE_enumDeclaration = 78, RULE_enumItem = 79, RULE_expressionList = 80, + RULE_parentheses = 81, RULE_expression = 82, RULE_assignable = 83, RULE_arrayCreation = 84, + RULE_arrayDestructuring = 85, RULE_indexedDestructItem = 86, RULE_keyedDestructItem = 87, + RULE_lambdaFunctionExpr = 88, RULE_matchExpr = 89, RULE_matchItem = 90, + RULE_newExpr = 91, RULE_assignmentOperator = 92, RULE_yieldExpression = 93, + RULE_arrayItemList = 94, RULE_arrayItem = 95, RULE_lambdaFunctionUseVars = 96, + RULE_lambdaFunctionUseVar = 97, RULE_qualifiedStaticTypeRef = 98, RULE_typeRef = 99, + RULE_anonymousClass = 100, RULE_indirectTypeRef = 101, RULE_qualifiedNamespaceName = 102, + RULE_namespaceNameList = 103, RULE_namespaceNameTail = 104, RULE_qualifiedNamespaceNameList = 105, + RULE_arguments = 106, RULE_actualArgument = 107, RULE_argumentName = 108, + RULE_constantInitializer = 109, RULE_constant = 110, RULE_literalConstant = 111, + RULE_numericConstant = 112, RULE_classConstant = 113, RULE_stringConstant = 114, + RULE_string = 115, RULE_interpolatedStringPart = 116, RULE_chainList = 117, + RULE_chain = 118, RULE_chainOrigin = 119, RULE_memberAccess = 120, RULE_functionCall = 121, + RULE_functionCallName = 122, RULE_actualArguments = 123, RULE_chainBase = 124, + RULE_keyedFieldName = 125, RULE_keyedSimpleFieldName = 126, RULE_keyedVariable = 127, + RULE_squareCurlyExpression = 128, RULE_assignmentList = 129, RULE_assignmentListElement = 130, + RULE_modifier = 131, RULE_identifier = 132, RULE_memberModifier = 133, + RULE_magicConstant = 134, RULE_magicMethod = 135, RULE_primitiveType = 136, + RULE_castOperation = 137; + public static final String[] ruleNames = { + "htmlDocument", "inlineHtml", "htmlElement", "scriptText", "phpBlock", + "importStatement", "topStatement", "useDeclaration", "useDeclarationContentList", + "useDeclarationContent", "namespaceDeclaration", "namespaceStatement", + "functionDeclaration", "classDeclaration", "classEntryType", "interfaceList", + "typeParameterListInBrackets", "typeParameterList", "typeParameterWithDefaultsList", + "typeParameterDecl", "typeParameterWithDefaultDecl", "genericDynamicArgs", + "attributes", "attributeGroup", "attribute", "innerStatementList", "innerStatement", + "statement", "emptyStatement_", "blockStatement", "ifStatement", "elseIfStatement", + "elseIfColonStatement", "elseStatement", "elseColonStatement", "whileStatement", + "doWhileStatement", "forStatement", "forInit", "forUpdate", "switchStatement", + "switchBlock", "breakStatement", "continueStatement", "returnStatement", + "expressionStatement", "unsetStatement", "foreachStatement", "tryCatchFinally", + "catchClause", "finallyStatement", "throwStatement", "gotoStatement", + "declareStatement", "inlineHtmlStatement", "declareList", "directive", + "formalParameterList", "formalParameter", "typeHint", "globalStatement", + "globalVar", "echoStatement", "staticVariableStatement", "classStatement", + "traitAdaptations", "traitAdaptationStatement", "traitPrecedence", "traitAlias", + "traitMethodReference", "baseCtorCall", "returnTypeDecl", "methodBody", + "propertyModifiers", "memberModifiers", "variableInitializer", "identifierInitializer", + "globalConstantDeclaration", "enumDeclaration", "enumItem", "expressionList", + "parentheses", "expression", "assignable", "arrayCreation", "arrayDestructuring", + "indexedDestructItem", "keyedDestructItem", "lambdaFunctionExpr", "matchExpr", + "matchItem", "newExpr", "assignmentOperator", "yieldExpression", "arrayItemList", + "arrayItem", "lambdaFunctionUseVars", "lambdaFunctionUseVar", "qualifiedStaticTypeRef", + "typeRef", "anonymousClass", "indirectTypeRef", "qualifiedNamespaceName", + "namespaceNameList", "namespaceNameTail", "qualifiedNamespaceNameList", + "arguments", "actualArgument", "argumentName", "constantInitializer", + "constant", "literalConstant", "numericConstant", "classConstant", "stringConstant", + "string", "interpolatedStringPart", "chainList", "chain", "chainOrigin", + "memberAccess", "functionCall", "functionCallName", "actualArguments", + "chainBase", "keyedFieldName", "keyedSimpleFieldName", "keyedVariable", + "squareCurlyExpression", "assignmentList", "assignmentListElement", "modifier", + "identifier", "memberModifier", "magicConstant", "magicMethod", "primitiveType", + "castOperation" + }; + + private static final String[] _LITERAL_NAMES = { + null, null, null, "'<?xml'", null, null, null, null, null, null, null, + null, null, "'?>'", null, null, "'/>'", null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, "'#['", "'abstract'", + "'array'", "'as'", "'binary'", null, null, "'break'", "'callable'", "'case'", + "'catch'", "'class'", "'clone'", "'const'", "'continue'", "'declare'", + "'default'", "'do'", "'real'", "'double'", "'echo'", "'else'", "'elseif'", + "'empty'", "'enum'", "'enddeclare'", "'endfor'", "'endforeach'", "'endif'", + "'endswitch'", "'endwhile'", "'eval'", "'die'", "'extends'", "'final'", + "'finally'", "'float'", "'for'", "'foreach'", "'function'", "'global'", + "'goto'", "'if'", "'implements'", "'import'", "'include'", "'include_once'", + "'instanceof'", "'insteadof'", "'int8'", "'int16'", "'int64'", null, "'interface'", + "'isset'", "'list'", "'and'", "'or'", "'xor'", "'match'", "'namespace'", + "'new'", "'null'", "'object'", "'parent'", "'partial'", "'print'", "'private'", + "'protected'", "'public'", "'readonly'", "'require'", "'require_once'", + "'resource'", "'return'", "'static'", "'string'", "'switch'", "'throw'", + "'trait'", "'try'", "'clrtypeof'", null, "'unicode'", "'unset'", "'use'", + "'var'", "'while'", "'yield'", "'from'", "'fn'", "'ticks'", "'encoding'", + "'strict_types'", "'__get'", "'__set'", "'__call'", "'__callstatic'", + "'__construct'", "'__destruct'", "'__wakeup'", "'__sleep'", "'__autoload'", + "'__isset'", "'__unset'", "'__tostring'", "'__invoke'", "'__set_state'", + "'__clone'", "'__debuginfo'", "'__namespace__'", "'__class__'", "'__trait__'", + "'__function__'", "'__method__'", "'__line__'", "'__file__'", "'__dir__'", + "'<=>'", "'<:'", "':>'", "'=>'", "'++'", "'--'", "'==='", "'!=='", "'=='", + null, "'<='", "'>='", "'+='", "'-='", "'*='", "'**'", "'**='", "'/='", + "'.='", "'%='", "'<<='", "'>>='", "'&='", "'|='", "'^='", "'||'", "'&&'", + "'??'", "'??='", "'<<'", "'>>'", "'::'", "'->'", "'\\'", "'...'", null, + null, "'&'", "'|'", "'!'", "'^'", "'+'", "'-'", "'*'", "'%'", null, "'~'", + "'@'", null, "'.'", null, "'('", "')'", "'['", "']'", null, "'}'", "','", + "':'", "';'", null, "'''", "'`'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, "SeaWhitespace", "HtmlText", "XmlStart", "PHPStart", "HtmlScriptOpen", + "HtmlStyleOpen", "HtmlComment", "HtmlDtd", "HtmlOpen", "Shebang", "Error", + "XmlText", "XmlClose", "PHPStartInside", "HtmlClose", "HtmlSlashClose", + "HtmlSlash", "HtmlEquals", "HtmlStartQuoteString", "HtmlStartDoubleQuoteString", + "HtmlHex", "HtmlDecimal", "HtmlSpace", "HtmlName", "ErrorInside", "PHPStartInsideQuoteString", + "HtmlEndQuoteString", "HtmlQuoteString", "ErrorHtmlQuote", "PHPStartDoubleQuoteString", + "HtmlEndDoubleQuoteString", "HtmlDoubleQuoteString", "ErrorHtmlDoubleQuote", + "ScriptText", "HtmlScriptClose", "PHPStartInsideScript", "StyleBody", + "PHPEnd", "Whitespace", "MultiLineComment", "SingleLineComment", "ShellStyleComment", + "AttributeStart", "Abstract", "Array", "As", "BinaryCast", "BoolType", + "BooleanConstant", "Break", "Callable", "Case", "Catch", "Class", "Clone", + "Const", "Continue", "Declare", "Default", "Do", "DoubleCast", "DoubleType", + "Echo", "Else", "ElseIf", "Empty", "Enum_", "EndDeclare", "EndFor", "EndForeach", + "EndIf", "EndSwitch", "EndWhile", "Eval", "Exit", "Extends", "Final", + "Finally", "FloatCast", "For", "Foreach", "Function_", "Global", "Goto", + "If", "Implements", "Import", "Include", "IncludeOnce", "InstanceOf", + "InsteadOf", "Int8Cast", "Int16Cast", "Int64Type", "IntType", "Interface", + "IsSet", "List", "LogicalAnd", "LogicalOr", "LogicalXor", "Match_", "Namespace", + "New", "Null", "ObjectType", "Parent_", "Partial", "Print", "Private", + "Protected", "Public", "Readonly", "Require", "RequireOnce", "Resource", + "Return", "Static", "StringType", "Switch", "Throw", "Trait", "Try", "Typeof", + "UintCast", "UnicodeCast", "Unset", "Use", "Var", "While", "Yield", "From", + "LambdaFn", "Ticks", "Encoding", "StrictTypes", "Get", "Set", "Call", + "CallStatic", "Constructor", "Destruct", "Wakeup", "Sleep", "Autoload", + "IsSet__", "Unset__", "ToString__", "Invoke", "SetState", "Clone__", "DebugInfo", + "Namespace__", "Class__", "Traic__", "Function__", "Method__", "Line__", + "File__", "Dir__", "Spaceship", "Lgeneric", "Rgeneric", "DoubleArrow", + "Inc", "Dec", "IsIdentical", "IsNoidentical", "IsEqual", "IsNotEq", "IsSmallerOrEqual", + "IsGreaterOrEqual", "PlusEqual", "MinusEqual", "MulEqual", "Pow", "PowEqual", + "DivEqual", "Concaequal", "ModEqual", "ShiftLeftEqual", "ShiftRightEqual", + "AndEqual", "OrEqual", "XorEqual", "BooleanOr", "BooleanAnd", "NullCoalescing", + "NullCoalescingEqual", "ShiftLeft", "ShiftRight", "DoubleColon", "ObjectOperator", + "NamespaceSeparator", "Ellipsis", "Less", "Greater", "Ampersand", "Pipe", + "Bang", "Caret", "Plus", "Minus", "Asterisk", "Percent", "Divide", "Tilde", + "SuppressWarnings", "Dollar", "Dot", "QuestionMark", "OpenRoundBracket", + "CloseRoundBracket", "OpenSquareBracket", "CloseSquareBracket", "OpenCurlyBracket", + "CloseCurlyBracket", "Comma", "Colon", "SemiColon", "Eq", "Quote", "BackQuote", + "VarName", "Label", "Octal", "Decimal", "Real", "Hex", "Binary", "BackQuoteString", + "SingleQuoteString", "DoubleQuote", "StartNowDoc", "StartHereDoc", "ErrorPhp", + "CurlyDollar", "UnicodeEscape", "StringPart", "Comment", "PHPEndSingleLineComment", + "CommentEnd", "HereDocText", "XmlText2" + }; + 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] = "<INVALID>"; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "PhpParser.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public PhpParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + public static class HtmlDocumentContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(PhpParser.EOF, 0); } + public TerminalNode Shebang() { return getToken(PhpParser.Shebang, 0); } + public List<InlineHtmlContext> inlineHtml() { + return getRuleContexts(InlineHtmlContext.class); + } + public InlineHtmlContext inlineHtml(int i) { + return getRuleContext(InlineHtmlContext.class,i); + } + public List<PhpBlockContext> phpBlock() { + return getRuleContexts(PhpBlockContext.class); + } + public PhpBlockContext phpBlock(int i) { + return getRuleContext(PhpBlockContext.class,i); + } + public HtmlDocumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_htmlDocument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterHtmlDocument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitHtmlDocument(this); + } + } + + public final HtmlDocumentContext htmlDocument() throws RecognitionException { + HtmlDocumentContext _localctx = new HtmlDocumentContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_htmlDocument); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(277); + _la = _input.LA(1); + if (_la==Shebang) { + { + setState(276); + match(Shebang); + } + } + + setState(283); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << HtmlText) | (1L << XmlStart) | (1L << HtmlScriptOpen) | (1L << HtmlStyleOpen) | (1L << HtmlDtd) | (1L << HtmlOpen) | (1L << HtmlClose) | (1L << HtmlSlashClose) | (1L << HtmlSlash) | (1L << HtmlEquals) | (1L << HtmlStartQuoteString) | (1L << HtmlStartDoubleQuoteString) | (1L << HtmlHex) | (1L << HtmlDecimal) | (1L << HtmlName) | (1L << HtmlEndQuoteString) | (1L << HtmlQuoteString) | (1L << HtmlEndDoubleQuoteString) | (1L << HtmlDoubleQuoteString) | (1L << ScriptText) | (1L << HtmlScriptClose) | (1L << StyleBody) | (1L << AttributeStart) | (1L << Abstract) | (1L << Array) | (1L << As) | (1L << BinaryCast) | (1L << BoolType) | (1L << BooleanConstant) | (1L << Break) | (1L << Callable) | (1L << Case) | (1L << Catch) | (1L << Class) | (1L << Clone) | (1L << Const) | (1L << Continue) | (1L << Declare) | (1L << Default) | (1L << Do) | (1L << DoubleCast) | (1L << DoubleType) | (1L << Echo))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Else - 64)) | (1L << (ElseIf - 64)) | (1L << (Empty - 64)) | (1L << (Enum_ - 64)) | (1L << (EndDeclare - 64)) | (1L << (EndFor - 64)) | (1L << (EndForeach - 64)) | (1L << (EndIf - 64)) | (1L << (EndSwitch - 64)) | (1L << (EndWhile - 64)) | (1L << (Eval - 64)) | (1L << (Exit - 64)) | (1L << (Extends - 64)) | (1L << (Final - 64)) | (1L << (Finally - 64)) | (1L << (FloatCast - 64)) | (1L << (For - 64)) | (1L << (Foreach - 64)) | (1L << (Function_ - 64)) | (1L << (Global - 64)) | (1L << (Goto - 64)) | (1L << (If - 64)) | (1L << (Implements - 64)) | (1L << (Import - 64)) | (1L << (Include - 64)) | (1L << (IncludeOnce - 64)) | (1L << (InstanceOf - 64)) | (1L << (InsteadOf - 64)) | (1L << (Int8Cast - 64)) | (1L << (Int16Cast - 64)) | (1L << (Int64Type - 64)) | (1L << (IntType - 64)) | (1L << (Interface - 64)) | (1L << (IsSet - 64)) | (1L << (List - 64)) | (1L << (LogicalAnd - 64)) | (1L << (LogicalOr - 64)) | (1L << (LogicalXor - 64)) | (1L << (Match_ - 64)) | (1L << (Namespace - 64)) | (1L << (New - 64)) | (1L << (Null - 64)) | (1L << (ObjectType - 64)) | (1L << (Parent_ - 64)) | (1L << (Partial - 64)) | (1L << (Print - 64)) | (1L << (Private - 64)) | (1L << (Protected - 64)) | (1L << (Public - 64)) | (1L << (Readonly - 64)) | (1L << (Require - 64)) | (1L << (RequireOnce - 64)) | (1L << (Resource - 64)) | (1L << (Return - 64)) | (1L << (Static - 64)) | (1L << (StringType - 64)) | (1L << (Switch - 64)) | (1L << (Throw - 64)) | (1L << (Trait - 64)) | (1L << (Try - 64)) | (1L << (Typeof - 64)) | (1L << (UintCast - 64)) | (1L << (UnicodeCast - 64)) | (1L << (Unset - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (Use - 128)) | (1L << (Var - 128)) | (1L << (While - 128)) | (1L << (Yield - 128)) | (1L << (From - 128)) | (1L << (LambdaFn - 128)) | (1L << (Ticks - 128)) | (1L << (Encoding - 128)) | (1L << (StrictTypes - 128)) | (1L << (Get - 128)) | (1L << (Set - 128)) | (1L << (Call - 128)) | (1L << (CallStatic - 128)) | (1L << (Constructor - 128)) | (1L << (Destruct - 128)) | (1L << (Wakeup - 128)) | (1L << (Sleep - 128)) | (1L << (Autoload - 128)) | (1L << (IsSet__ - 128)) | (1L << (Unset__ - 128)) | (1L << (ToString__ - 128)) | (1L << (Invoke - 128)) | (1L << (SetState - 128)) | (1L << (Clone__ - 128)) | (1L << (DebugInfo - 128)) | (1L << (Namespace__ - 128)) | (1L << (Class__ - 128)) | (1L << (Traic__ - 128)) | (1L << (Function__ - 128)) | (1L << (Method__ - 128)) | (1L << (Line__ - 128)) | (1L << (File__ - 128)) | (1L << (Dir__ - 128)) | (1L << (Inc - 128)) | (1L << (Dec - 128)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (OpenCurlyBracket - 194)) | (1L << (SemiColon - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(281); + switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { + case 1: + { + setState(279); + inlineHtml(); + } + break; + case 2: + { + setState(280); + phpBlock(); + } + break; + } + } + setState(285); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(286); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InlineHtmlContext extends ParserRuleContext { + public List<HtmlElementContext> htmlElement() { + return getRuleContexts(HtmlElementContext.class); + } + public HtmlElementContext htmlElement(int i) { + return getRuleContext(HtmlElementContext.class,i); + } + public ScriptTextContext scriptText() { + return getRuleContext(ScriptTextContext.class,0); + } + public InlineHtmlContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inlineHtml; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInlineHtml(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInlineHtml(this); + } + } + + public final InlineHtmlContext inlineHtml() throws RecognitionException { + InlineHtmlContext _localctx = new InlineHtmlContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_inlineHtml); + try { + int _alt; + setState(294); + switch (_input.LA(1)) { + case HtmlText: + case XmlStart: + case HtmlScriptOpen: + case HtmlStyleOpen: + case HtmlDtd: + case HtmlOpen: + case HtmlClose: + case HtmlSlashClose: + case HtmlSlash: + case HtmlEquals: + case HtmlStartQuoteString: + case HtmlStartDoubleQuoteString: + case HtmlHex: + case HtmlDecimal: + case HtmlName: + case HtmlEndQuoteString: + case HtmlQuoteString: + case HtmlEndDoubleQuoteString: + case HtmlDoubleQuoteString: + case HtmlScriptClose: + case StyleBody: + enterOuterAlt(_localctx, 1); + { + setState(289); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(288); + htmlElement(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(291); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,3,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case ScriptText: + enterOuterAlt(_localctx, 2); + { + setState(293); + scriptText(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class HtmlElementContext extends ParserRuleContext { + public TerminalNode HtmlDtd() { return getToken(PhpParser.HtmlDtd, 0); } + public TerminalNode HtmlClose() { return getToken(PhpParser.HtmlClose, 0); } + public TerminalNode HtmlStyleOpen() { return getToken(PhpParser.HtmlStyleOpen, 0); } + public TerminalNode HtmlOpen() { return getToken(PhpParser.HtmlOpen, 0); } + public TerminalNode HtmlName() { return getToken(PhpParser.HtmlName, 0); } + public TerminalNode HtmlSlashClose() { return getToken(PhpParser.HtmlSlashClose, 0); } + public TerminalNode HtmlSlash() { return getToken(PhpParser.HtmlSlash, 0); } + public TerminalNode HtmlText() { return getToken(PhpParser.HtmlText, 0); } + public TerminalNode HtmlEquals() { return getToken(PhpParser.HtmlEquals, 0); } + public TerminalNode HtmlStartQuoteString() { return getToken(PhpParser.HtmlStartQuoteString, 0); } + public TerminalNode HtmlEndQuoteString() { return getToken(PhpParser.HtmlEndQuoteString, 0); } + public TerminalNode HtmlStartDoubleQuoteString() { return getToken(PhpParser.HtmlStartDoubleQuoteString, 0); } + public TerminalNode HtmlEndDoubleQuoteString() { return getToken(PhpParser.HtmlEndDoubleQuoteString, 0); } + public TerminalNode HtmlHex() { return getToken(PhpParser.HtmlHex, 0); } + public TerminalNode HtmlDecimal() { return getToken(PhpParser.HtmlDecimal, 0); } + public TerminalNode HtmlQuoteString() { return getToken(PhpParser.HtmlQuoteString, 0); } + public TerminalNode HtmlDoubleQuoteString() { return getToken(PhpParser.HtmlDoubleQuoteString, 0); } + public TerminalNode StyleBody() { return getToken(PhpParser.StyleBody, 0); } + public TerminalNode HtmlScriptOpen() { return getToken(PhpParser.HtmlScriptOpen, 0); } + public TerminalNode HtmlScriptClose() { return getToken(PhpParser.HtmlScriptClose, 0); } + public TerminalNode XmlStart() { return getToken(PhpParser.XmlStart, 0); } + public TerminalNode XmlClose() { return getToken(PhpParser.XmlClose, 0); } + public List<TerminalNode> XmlText() { return getTokens(PhpParser.XmlText); } + public TerminalNode XmlText(int i) { + return getToken(PhpParser.XmlText, i); + } + public HtmlElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_htmlElement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterHtmlElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitHtmlElement(this); + } + } + + public final HtmlElementContext htmlElement() throws RecognitionException { + HtmlElementContext _localctx = new HtmlElementContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_htmlElement); + int _la; + try { + setState(324); + switch (_input.LA(1)) { + case HtmlDtd: + enterOuterAlt(_localctx, 1); + { + setState(296); + match(HtmlDtd); + } + break; + case HtmlClose: + enterOuterAlt(_localctx, 2); + { + setState(297); + match(HtmlClose); + } + break; + case HtmlStyleOpen: + enterOuterAlt(_localctx, 3); + { + setState(298); + match(HtmlStyleOpen); + } + break; + case HtmlOpen: + enterOuterAlt(_localctx, 4); + { + setState(299); + match(HtmlOpen); + } + break; + case HtmlName: + enterOuterAlt(_localctx, 5); + { + setState(300); + match(HtmlName); + } + break; + case HtmlSlashClose: + enterOuterAlt(_localctx, 6); + { + setState(301); + match(HtmlSlashClose); + } + break; + case HtmlSlash: + enterOuterAlt(_localctx, 7); + { + setState(302); + match(HtmlSlash); + } + break; + case HtmlText: + enterOuterAlt(_localctx, 8); + { + setState(303); + match(HtmlText); + } + break; + case HtmlEquals: + enterOuterAlt(_localctx, 9); + { + setState(304); + match(HtmlEquals); + } + break; + case HtmlStartQuoteString: + enterOuterAlt(_localctx, 10); + { + setState(305); + match(HtmlStartQuoteString); + } + break; + case HtmlEndQuoteString: + enterOuterAlt(_localctx, 11); + { + setState(306); + match(HtmlEndQuoteString); + } + break; + case HtmlStartDoubleQuoteString: + enterOuterAlt(_localctx, 12); + { + setState(307); + match(HtmlStartDoubleQuoteString); + } + break; + case HtmlEndDoubleQuoteString: + enterOuterAlt(_localctx, 13); + { + setState(308); + match(HtmlEndDoubleQuoteString); + } + break; + case HtmlHex: + enterOuterAlt(_localctx, 14); + { + setState(309); + match(HtmlHex); + } + break; + case HtmlDecimal: + enterOuterAlt(_localctx, 15); + { + setState(310); + match(HtmlDecimal); + } + break; + case HtmlQuoteString: + enterOuterAlt(_localctx, 16); + { + setState(311); + match(HtmlQuoteString); + } + break; + case HtmlDoubleQuoteString: + enterOuterAlt(_localctx, 17); + { + setState(312); + match(HtmlDoubleQuoteString); + } + break; + case StyleBody: + enterOuterAlt(_localctx, 18); + { + setState(313); + match(StyleBody); + } + break; + case HtmlScriptOpen: + enterOuterAlt(_localctx, 19); + { + setState(314); + match(HtmlScriptOpen); + } + break; + case HtmlScriptClose: + enterOuterAlt(_localctx, 20); + { + setState(315); + match(HtmlScriptClose); + } + break; + case XmlStart: + enterOuterAlt(_localctx, 21); + { + setState(316); + match(XmlStart); + setState(320); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==XmlText) { + { + { + setState(317); + match(XmlText); + } + } + setState(322); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(323); + match(XmlClose); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ScriptTextContext extends ParserRuleContext { + public List<TerminalNode> ScriptText() { return getTokens(PhpParser.ScriptText); } + public TerminalNode ScriptText(int i) { + return getToken(PhpParser.ScriptText, i); + } + public ScriptTextContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_scriptText; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterScriptText(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitScriptText(this); + } + } + + public final ScriptTextContext scriptText() throws RecognitionException { + ScriptTextContext _localctx = new ScriptTextContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_scriptText); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(327); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(326); + match(ScriptText); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(329); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,7,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PhpBlockContext extends ParserRuleContext { + public List<ImportStatementContext> importStatement() { + return getRuleContexts(ImportStatementContext.class); + } + public ImportStatementContext importStatement(int i) { + return getRuleContext(ImportStatementContext.class,i); + } + public List<TopStatementContext> topStatement() { + return getRuleContexts(TopStatementContext.class); + } + public TopStatementContext topStatement(int i) { + return getRuleContext(TopStatementContext.class,i); + } + public PhpBlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_phpBlock; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterPhpBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitPhpBlock(this); + } + } + + public final PhpBlockContext phpBlock() throws RecognitionException { + PhpBlockContext _localctx = new PhpBlockContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_phpBlock); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(334); + _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(331); + importStatement(); + } + } + } + setState(336); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); + } + setState(338); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(337); + topStatement(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(340); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,9,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ImportStatementContext extends ParserRuleContext { + public TerminalNode Import() { return getToken(PhpParser.Import, 0); } + public TerminalNode Namespace() { return getToken(PhpParser.Namespace, 0); } + public NamespaceNameListContext namespaceNameList() { + return getRuleContext(NamespaceNameListContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 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 PhpParserListener ) ((PhpParserListener)listener).enterImportStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)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(342); + match(Import); + setState(343); + match(Namespace); + setState(344); + namespaceNameList(); + setState(345); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TopStatementContext extends ParserRuleContext { + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public UseDeclarationContext useDeclaration() { + return getRuleContext(UseDeclarationContext.class,0); + } + public NamespaceDeclarationContext namespaceDeclaration() { + return getRuleContext(NamespaceDeclarationContext.class,0); + } + public FunctionDeclarationContext functionDeclaration() { + return getRuleContext(FunctionDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public GlobalConstantDeclarationContext globalConstantDeclaration() { + return getRuleContext(GlobalConstantDeclarationContext.class,0); + } + public EnumDeclarationContext enumDeclaration() { + return getRuleContext(EnumDeclarationContext.class,0); + } + public TopStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_topStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTopStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTopStatement(this); + } + } + + public final TopStatementContext topStatement() throws RecognitionException { + TopStatementContext _localctx = new TopStatementContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_topStatement); + try { + setState(354); + switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(347); + statement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(348); + useDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(349); + namespaceDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(350); + functionDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(351); + classDeclaration(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(352); + globalConstantDeclaration(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(353); + enumDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UseDeclarationContext extends ParserRuleContext { + public TerminalNode Use() { return getToken(PhpParser.Use, 0); } + public UseDeclarationContentListContext useDeclarationContentList() { + return getRuleContext(UseDeclarationContentListContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public TerminalNode Function_() { return getToken(PhpParser.Function_, 0); } + public TerminalNode Const() { return getToken(PhpParser.Const, 0); } + public UseDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_useDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterUseDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitUseDeclaration(this); + } + } + + public final UseDeclarationContext useDeclaration() throws RecognitionException { + UseDeclarationContext _localctx = new UseDeclarationContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_useDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(356); + match(Use); + setState(358); + switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { + case 1: + { + setState(357); + _la = _input.LA(1); + if ( !(_la==Const || _la==Function_) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + break; + } + setState(360); + useDeclarationContentList(); + setState(361); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UseDeclarationContentListContext extends ParserRuleContext { + public List<UseDeclarationContentContext> useDeclarationContent() { + return getRuleContexts(UseDeclarationContentContext.class); + } + public UseDeclarationContentContext useDeclarationContent(int i) { + return getRuleContext(UseDeclarationContentContext.class,i); + } + public UseDeclarationContentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_useDeclarationContentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterUseDeclarationContentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitUseDeclarationContentList(this); + } + } + + public final UseDeclarationContentListContext useDeclarationContentList() throws RecognitionException { + UseDeclarationContentListContext _localctx = new UseDeclarationContentListContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_useDeclarationContentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(364); + _la = _input.LA(1); + if (_la==NamespaceSeparator) { + { + setState(363); + match(NamespaceSeparator); + } + } + + setState(366); + useDeclarationContent(); + setState(374); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(367); + match(Comma); + setState(369); + _la = _input.LA(1); + if (_la==NamespaceSeparator) { + { + setState(368); + match(NamespaceSeparator); + } + } + + setState(371); + useDeclarationContent(); + } + } + setState(376); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UseDeclarationContentContext extends ParserRuleContext { + public NamespaceNameListContext namespaceNameList() { + return getRuleContext(NamespaceNameListContext.class,0); + } + public UseDeclarationContentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_useDeclarationContent; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterUseDeclarationContent(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitUseDeclarationContent(this); + } + } + + public final UseDeclarationContentContext useDeclarationContent() throws RecognitionException { + UseDeclarationContentContext _localctx = new UseDeclarationContentContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_useDeclarationContent); + try { + enterOuterAlt(_localctx, 1); + { + setState(377); + namespaceNameList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamespaceDeclarationContext extends ParserRuleContext { + public TerminalNode Namespace() { return getToken(PhpParser.Namespace, 0); } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public NamespaceNameListContext namespaceNameList() { + return getRuleContext(NamespaceNameListContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public List<NamespaceStatementContext> namespaceStatement() { + return getRuleContexts(NamespaceStatementContext.class); + } + public NamespaceStatementContext namespaceStatement(int i) { + return getRuleContext(NamespaceStatementContext.class,i); + } + public NamespaceDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namespaceDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNamespaceDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNamespaceDeclaration(this); + } + } + + public final NamespaceDeclarationContext namespaceDeclaration() throws RecognitionException { + NamespaceDeclarationContext _localctx = new NamespaceDeclarationContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_namespaceDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(379); + match(Namespace); + setState(394); + switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { + case 1: + { + setState(381); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)))) != 0) || _la==Label) { + { + setState(380); + namespaceNameList(); + } + } + + setState(383); + match(OpenCurlyBracket); + setState(387); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << HtmlText) | (1L << XmlStart) | (1L << HtmlScriptOpen) | (1L << HtmlStyleOpen) | (1L << HtmlDtd) | (1L << HtmlOpen) | (1L << HtmlClose) | (1L << HtmlSlashClose) | (1L << HtmlSlash) | (1L << HtmlEquals) | (1L << HtmlStartQuoteString) | (1L << HtmlStartDoubleQuoteString) | (1L << HtmlHex) | (1L << HtmlDecimal) | (1L << HtmlName) | (1L << HtmlEndQuoteString) | (1L << HtmlQuoteString) | (1L << HtmlEndDoubleQuoteString) | (1L << HtmlDoubleQuoteString) | (1L << ScriptText) | (1L << HtmlScriptClose) | (1L << StyleBody) | (1L << AttributeStart) | (1L << Abstract) | (1L << Array) | (1L << As) | (1L << BinaryCast) | (1L << BoolType) | (1L << BooleanConstant) | (1L << Break) | (1L << Callable) | (1L << Case) | (1L << Catch) | (1L << Class) | (1L << Clone) | (1L << Const) | (1L << Continue) | (1L << Declare) | (1L << Default) | (1L << Do) | (1L << DoubleCast) | (1L << DoubleType) | (1L << Echo))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Else - 64)) | (1L << (ElseIf - 64)) | (1L << (Empty - 64)) | (1L << (Enum_ - 64)) | (1L << (EndDeclare - 64)) | (1L << (EndFor - 64)) | (1L << (EndForeach - 64)) | (1L << (EndIf - 64)) | (1L << (EndSwitch - 64)) | (1L << (EndWhile - 64)) | (1L << (Eval - 64)) | (1L << (Exit - 64)) | (1L << (Extends - 64)) | (1L << (Final - 64)) | (1L << (Finally - 64)) | (1L << (FloatCast - 64)) | (1L << (For - 64)) | (1L << (Foreach - 64)) | (1L << (Function_ - 64)) | (1L << (Global - 64)) | (1L << (Goto - 64)) | (1L << (If - 64)) | (1L << (Implements - 64)) | (1L << (Import - 64)) | (1L << (Include - 64)) | (1L << (IncludeOnce - 64)) | (1L << (InstanceOf - 64)) | (1L << (InsteadOf - 64)) | (1L << (Int8Cast - 64)) | (1L << (Int16Cast - 64)) | (1L << (Int64Type - 64)) | (1L << (IntType - 64)) | (1L << (Interface - 64)) | (1L << (IsSet - 64)) | (1L << (List - 64)) | (1L << (LogicalAnd - 64)) | (1L << (LogicalOr - 64)) | (1L << (LogicalXor - 64)) | (1L << (Match_ - 64)) | (1L << (Namespace - 64)) | (1L << (New - 64)) | (1L << (Null - 64)) | (1L << (ObjectType - 64)) | (1L << (Parent_ - 64)) | (1L << (Partial - 64)) | (1L << (Print - 64)) | (1L << (Private - 64)) | (1L << (Protected - 64)) | (1L << (Public - 64)) | (1L << (Readonly - 64)) | (1L << (Require - 64)) | (1L << (RequireOnce - 64)) | (1L << (Resource - 64)) | (1L << (Return - 64)) | (1L << (Static - 64)) | (1L << (StringType - 64)) | (1L << (Switch - 64)) | (1L << (Throw - 64)) | (1L << (Trait - 64)) | (1L << (Try - 64)) | (1L << (Typeof - 64)) | (1L << (UintCast - 64)) | (1L << (UnicodeCast - 64)) | (1L << (Unset - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (Use - 128)) | (1L << (Var - 128)) | (1L << (While - 128)) | (1L << (Yield - 128)) | (1L << (From - 128)) | (1L << (LambdaFn - 128)) | (1L << (Ticks - 128)) | (1L << (Encoding - 128)) | (1L << (StrictTypes - 128)) | (1L << (Get - 128)) | (1L << (Set - 128)) | (1L << (Call - 128)) | (1L << (CallStatic - 128)) | (1L << (Constructor - 128)) | (1L << (Destruct - 128)) | (1L << (Wakeup - 128)) | (1L << (Sleep - 128)) | (1L << (Autoload - 128)) | (1L << (IsSet__ - 128)) | (1L << (Unset__ - 128)) | (1L << (ToString__ - 128)) | (1L << (Invoke - 128)) | (1L << (SetState - 128)) | (1L << (Clone__ - 128)) | (1L << (DebugInfo - 128)) | (1L << (Namespace__ - 128)) | (1L << (Class__ - 128)) | (1L << (Traic__ - 128)) | (1L << (Function__ - 128)) | (1L << (Method__ - 128)) | (1L << (Line__ - 128)) | (1L << (File__ - 128)) | (1L << (Dir__ - 128)) | (1L << (Inc - 128)) | (1L << (Dec - 128)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (OpenCurlyBracket - 194)) | (1L << (SemiColon - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + { + setState(384); + namespaceStatement(); + } + } + setState(389); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(390); + match(CloseCurlyBracket); + } + break; + case 2: + { + setState(391); + namespaceNameList(); + setState(392); + match(SemiColon); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamespaceStatementContext extends ParserRuleContext { + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public UseDeclarationContext useDeclaration() { + return getRuleContext(UseDeclarationContext.class,0); + } + public FunctionDeclarationContext functionDeclaration() { + return getRuleContext(FunctionDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public GlobalConstantDeclarationContext globalConstantDeclaration() { + return getRuleContext(GlobalConstantDeclarationContext.class,0); + } + public NamespaceStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namespaceStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNamespaceStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNamespaceStatement(this); + } + } + + public final NamespaceStatementContext namespaceStatement() throws RecognitionException { + NamespaceStatementContext _localctx = new NamespaceStatementContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_namespaceStatement); + try { + setState(401); + switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(396); + statement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(397); + useDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(398); + functionDeclaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(399); + classDeclaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(400); + globalConstantDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionDeclarationContext extends ParserRuleContext { + public TerminalNode Function_() { return getToken(PhpParser.Function_, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TypeParameterListInBracketsContext typeParameterListInBrackets() { + return getRuleContext(TypeParameterListInBracketsContext.class,0); + } + public TypeHintContext typeHint() { + return getRuleContext(TypeHintContext.class,0); + } + public TerminalNode QuestionMark() { return getToken(PhpParser.QuestionMark, 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 PhpParserListener ) ((PhpParserListener)listener).enterFunctionDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitFunctionDeclaration(this); + } + } + + public final FunctionDeclarationContext functionDeclaration() throws RecognitionException { + FunctionDeclarationContext _localctx = new FunctionDeclarationContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_functionDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(404); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(403); + attributes(); + } + } + + setState(406); + match(Function_); + setState(408); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(407); + match(Ampersand); + } + } + + setState(410); + identifier(); + setState(412); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(411); + typeParameterListInBrackets(); + } + } + + setState(414); + match(OpenRoundBracket); + setState(415); + formalParameterList(); + setState(416); + match(CloseRoundBracket); + setState(422); + _la = _input.LA(1); + if (_la==Colon) { + { + setState(417); + match(Colon); + setState(419); + _la = _input.LA(1); + if (_la==QuestionMark) { + { + setState(418); + match(QuestionMark); + } + } + + setState(421); + typeHint(0); + } + } + + setState(424); + blockStatement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassDeclarationContext extends ParserRuleContext { + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public ClassEntryTypeContext classEntryType() { + return getRuleContext(ClassEntryTypeContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode Interface() { return getToken(PhpParser.Interface, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode Private() { return getToken(PhpParser.Private, 0); } + public ModifierContext modifier() { + return getRuleContext(ModifierContext.class,0); + } + public TerminalNode Partial() { return getToken(PhpParser.Partial, 0); } + public List<ClassStatementContext> classStatement() { + return getRuleContexts(ClassStatementContext.class); + } + public ClassStatementContext classStatement(int i) { + return getRuleContext(ClassStatementContext.class,i); + } + public TypeParameterListInBracketsContext typeParameterListInBrackets() { + return getRuleContext(TypeParameterListInBracketsContext.class,0); + } + public TerminalNode Extends() { return getToken(PhpParser.Extends, 0); } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef() { + return getRuleContext(QualifiedStaticTypeRefContext.class,0); + } + public TerminalNode Implements() { return getToken(PhpParser.Implements, 0); } + public InterfaceListContext interfaceList() { + return getRuleContext(InterfaceListContext.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 PhpParserListener ) ((PhpParserListener)listener).enterClassDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitClassDeclaration(this); + } + } + + public final ClassDeclarationContext classDeclaration() throws RecognitionException { + ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_classDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(427); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(426); + attributes(); + } + } + + setState(430); + _la = _input.LA(1); + if (_la==Private) { + { + setState(429); + match(Private); + } + } + + setState(433); + _la = _input.LA(1); + if (_la==Abstract || _la==Final) { + { + setState(432); + modifier(); + } + } + + setState(436); + _la = _input.LA(1); + if (_la==Partial) { + { + setState(435); + match(Partial); + } + } + + setState(460); + switch (_input.LA(1)) { + case Class: + case Trait: + { + setState(438); + classEntryType(); + setState(439); + identifier(); + setState(441); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(440); + typeParameterListInBrackets(); + } + } + + setState(445); + _la = _input.LA(1); + if (_la==Extends) { + { + setState(443); + match(Extends); + setState(444); + qualifiedStaticTypeRef(); + } + } + + setState(449); + _la = _input.LA(1); + if (_la==Implements) { + { + setState(447); + match(Implements); + setState(448); + interfaceList(); + } + } + + } + break; + case Interface: + { + setState(451); + match(Interface); + setState(452); + identifier(); + setState(454); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(453); + typeParameterListInBrackets(); + } + } + + setState(458); + _la = _input.LA(1); + if (_la==Extends) { + { + setState(456); + match(Extends); + setState(457); + interfaceList(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + setState(462); + match(OpenCurlyBracket); + setState(466); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AttributeStart) | (1L << Abstract) | (1L << Const))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (Final - 77)) | (1L << (Function_ - 77)) | (1L << (Private - 77)) | (1L << (Protected - 77)) | (1L << (Public - 77)) | (1L << (Readonly - 77)) | (1L << (Static - 77)) | (1L << (Use - 77)) | (1L << (Var - 77)))) != 0)) { + { + { + setState(463); + classStatement(); + } + } + setState(468); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(469); + match(CloseCurlyBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassEntryTypeContext extends ParserRuleContext { + public TerminalNode Class() { return getToken(PhpParser.Class, 0); } + public TerminalNode Trait() { return getToken(PhpParser.Trait, 0); } + public ClassEntryTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classEntryType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterClassEntryType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitClassEntryType(this); + } + } + + public final ClassEntryTypeContext classEntryType() throws RecognitionException { + ClassEntryTypeContext _localctx = new ClassEntryTypeContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_classEntryType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(471); + _la = _input.LA(1); + if ( !(_la==Class || _la==Trait) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceListContext extends ParserRuleContext { + public List<QualifiedStaticTypeRefContext> qualifiedStaticTypeRef() { + return getRuleContexts(QualifiedStaticTypeRefContext.class); + } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef(int i) { + return getRuleContext(QualifiedStaticTypeRefContext.class,i); + } + public InterfaceListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInterfaceList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInterfaceList(this); + } + } + + public final InterfaceListContext interfaceList() throws RecognitionException { + InterfaceListContext _localctx = new InterfaceListContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_interfaceList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(473); + qualifiedStaticTypeRef(); + setState(478); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(474); + match(Comma); + setState(475); + qualifiedStaticTypeRef(); + } + } + setState(480); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterListInBracketsContext extends ParserRuleContext { + public TypeParameterListContext typeParameterList() { + return getRuleContext(TypeParameterListContext.class,0); + } + public TypeParameterWithDefaultsListContext typeParameterWithDefaultsList() { + return getRuleContext(TypeParameterWithDefaultsListContext.class,0); + } + public TypeParameterListInBracketsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterListInBrackets; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeParameterListInBrackets(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeParameterListInBrackets(this); + } + } + + public final TypeParameterListInBracketsContext typeParameterListInBrackets() throws RecognitionException { + TypeParameterListInBracketsContext _localctx = new TypeParameterListInBracketsContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_typeParameterListInBrackets); + try { + setState(495); + switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(481); + match(Lgeneric); + setState(482); + typeParameterList(); + setState(483); + match(Rgeneric); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(485); + match(Lgeneric); + setState(486); + typeParameterWithDefaultsList(); + setState(487); + match(Rgeneric); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(489); + match(Lgeneric); + setState(490); + typeParameterList(); + setState(491); + match(Comma); + setState(492); + typeParameterWithDefaultsList(); + setState(493); + match(Rgeneric); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterListContext extends ParserRuleContext { + public List<TypeParameterDeclContext> typeParameterDecl() { + return getRuleContexts(TypeParameterDeclContext.class); + } + public TypeParameterDeclContext typeParameterDecl(int i) { + return getRuleContext(TypeParameterDeclContext.class,i); + } + public TypeParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeParameterList(this); + } + } + + public final TypeParameterListContext typeParameterList() throws RecognitionException { + TypeParameterListContext _localctx = new TypeParameterListContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_typeParameterList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(497); + typeParameterDecl(); + setState(502); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,37,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(498); + match(Comma); + setState(499); + typeParameterDecl(); + } + } + } + setState(504); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,37,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterWithDefaultsListContext extends ParserRuleContext { + public List<TypeParameterWithDefaultDeclContext> typeParameterWithDefaultDecl() { + return getRuleContexts(TypeParameterWithDefaultDeclContext.class); + } + public TypeParameterWithDefaultDeclContext typeParameterWithDefaultDecl(int i) { + return getRuleContext(TypeParameterWithDefaultDeclContext.class,i); + } + public TypeParameterWithDefaultsListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterWithDefaultsList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeParameterWithDefaultsList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeParameterWithDefaultsList(this); + } + } + + public final TypeParameterWithDefaultsListContext typeParameterWithDefaultsList() throws RecognitionException { + TypeParameterWithDefaultsListContext _localctx = new TypeParameterWithDefaultsListContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_typeParameterWithDefaultsList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(505); + typeParameterWithDefaultDecl(); + setState(510); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(506); + match(Comma); + setState(507); + typeParameterWithDefaultDecl(); + } + } + setState(512); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterDeclContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TypeParameterDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeParameterDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeParameterDecl(this); + } + } + + public final TypeParameterDeclContext typeParameterDecl() throws RecognitionException { + TypeParameterDeclContext _localctx = new TypeParameterDeclContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_typeParameterDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(514); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(513); + attributes(); + } + } + + setState(516); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterWithDefaultDeclContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef() { + return getRuleContext(QualifiedStaticTypeRefContext.class,0); + } + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TypeParameterWithDefaultDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterWithDefaultDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeParameterWithDefaultDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeParameterWithDefaultDecl(this); + } + } + + public final TypeParameterWithDefaultDeclContext typeParameterWithDefaultDecl() throws RecognitionException { + TypeParameterWithDefaultDeclContext _localctx = new TypeParameterWithDefaultDeclContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_typeParameterWithDefaultDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(519); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(518); + attributes(); + } + } + + setState(521); + identifier(); + setState(522); + match(Eq); + setState(525); + switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) { + case 1: + { + setState(523); + qualifiedStaticTypeRef(); + } + break; + case 2: + { + setState(524); + primitiveType(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GenericDynamicArgsContext extends ParserRuleContext { + public List<TypeRefContext> typeRef() { + return getRuleContexts(TypeRefContext.class); + } + public TypeRefContext typeRef(int i) { + return getRuleContext(TypeRefContext.class,i); + } + public GenericDynamicArgsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_genericDynamicArgs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterGenericDynamicArgs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitGenericDynamicArgs(this); + } + } + + public final GenericDynamicArgsContext genericDynamicArgs() throws RecognitionException { + GenericDynamicArgsContext _localctx = new GenericDynamicArgsContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_genericDynamicArgs); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(527); + match(Lgeneric); + setState(528); + typeRef(); + setState(533); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(529); + match(Comma); + setState(530); + typeRef(); + } + } + setState(535); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(536); + match(Rgeneric); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AttributesContext extends ParserRuleContext { + public List<AttributeGroupContext> attributeGroup() { + return getRuleContexts(AttributeGroupContext.class); + } + public AttributeGroupContext attributeGroup(int i) { + return getRuleContext(AttributeGroupContext.class,i); + } + public AttributesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attributes; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAttributes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAttributes(this); + } + } + + public final AttributesContext attributes() throws RecognitionException { + AttributesContext _localctx = new AttributesContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_attributes); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(539); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(538); + attributeGroup(); + } + } + setState(541); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==AttributeStart ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AttributeGroupContext extends ParserRuleContext { + public TerminalNode AttributeStart() { return getToken(PhpParser.AttributeStart, 0); } + public List<AttributeContext> attribute() { + return getRuleContexts(AttributeContext.class); + } + public AttributeContext attribute(int i) { + return getRuleContext(AttributeContext.class,i); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AttributeGroupContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attributeGroup; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAttributeGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAttributeGroup(this); + } + } + + public final AttributeGroupContext attributeGroup() throws RecognitionException { + AttributeGroupContext _localctx = new AttributeGroupContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_attributeGroup); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(543); + match(AttributeStart); + setState(547); + switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { + case 1: + { + setState(544); + identifier(); + setState(545); + match(Colon); + } + break; + } + setState(549); + attribute(); + setState(554); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(550); + match(Comma); + setState(551); + attribute(); + } + } + setState(556); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(557); + match(CloseSquareBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AttributeContext extends ParserRuleContext { + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public ArgumentsContext arguments() { + return getRuleContext(ArgumentsContext.class,0); + } + public AttributeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attribute; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAttribute(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAttribute(this); + } + } + + public final AttributeContext attribute() throws RecognitionException { + AttributeContext _localctx = new AttributeContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_attribute); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(559); + qualifiedNamespaceName(); + setState(561); + _la = _input.LA(1); + if (_la==OpenRoundBracket) { + { + setState(560); + arguments(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InnerStatementListContext extends ParserRuleContext { + public List<InnerStatementContext> innerStatement() { + return getRuleContexts(InnerStatementContext.class); + } + public InnerStatementContext innerStatement(int i) { + return getRuleContext(InnerStatementContext.class,i); + } + public InnerStatementListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_innerStatementList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInnerStatementList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInnerStatementList(this); + } + } + + public final InnerStatementListContext innerStatementList() throws RecognitionException { + InnerStatementListContext _localctx = new InnerStatementListContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_innerStatementList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(566); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,47,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(563); + innerStatement(); + } + } + } + setState(568); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,47,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InnerStatementContext extends ParserRuleContext { + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public FunctionDeclarationContext functionDeclaration() { + return getRuleContext(FunctionDeclarationContext.class,0); + } + public ClassDeclarationContext classDeclaration() { + return getRuleContext(ClassDeclarationContext.class,0); + } + public InnerStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_innerStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInnerStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInnerStatement(this); + } + } + + public final InnerStatementContext innerStatement() throws RecognitionException { + InnerStatementContext _localctx = new InnerStatementContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_innerStatement); + try { + setState(572); + switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(569); + statement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(570); + functionDeclaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(571); + classDeclaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public IfStatementContext ifStatement() { + return getRuleContext(IfStatementContext.class,0); + } + public WhileStatementContext whileStatement() { + return getRuleContext(WhileStatementContext.class,0); + } + public DoWhileStatementContext doWhileStatement() { + return getRuleContext(DoWhileStatementContext.class,0); + } + public ForStatementContext forStatement() { + return getRuleContext(ForStatementContext.class,0); + } + public SwitchStatementContext switchStatement() { + return getRuleContext(SwitchStatementContext.class,0); + } + public BreakStatementContext breakStatement() { + return getRuleContext(BreakStatementContext.class,0); + } + public ContinueStatementContext continueStatement() { + return getRuleContext(ContinueStatementContext.class,0); + } + public ReturnStatementContext returnStatement() { + return getRuleContext(ReturnStatementContext.class,0); + } + public YieldExpressionContext yieldExpression() { + return getRuleContext(YieldExpressionContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public GlobalStatementContext globalStatement() { + return getRuleContext(GlobalStatementContext.class,0); + } + public StaticVariableStatementContext staticVariableStatement() { + return getRuleContext(StaticVariableStatementContext.class,0); + } + public EchoStatementContext echoStatement() { + return getRuleContext(EchoStatementContext.class,0); + } + public ExpressionStatementContext expressionStatement() { + return getRuleContext(ExpressionStatementContext.class,0); + } + public UnsetStatementContext unsetStatement() { + return getRuleContext(UnsetStatementContext.class,0); + } + public ForeachStatementContext foreachStatement() { + return getRuleContext(ForeachStatementContext.class,0); + } + public TryCatchFinallyContext tryCatchFinally() { + return getRuleContext(TryCatchFinallyContext.class,0); + } + public ThrowStatementContext throwStatement() { + return getRuleContext(ThrowStatementContext.class,0); + } + public GotoStatementContext gotoStatement() { + return getRuleContext(GotoStatementContext.class,0); + } + public DeclareStatementContext declareStatement() { + return getRuleContext(DeclareStatementContext.class,0); + } + public EmptyStatement_Context emptyStatement_() { + return getRuleContext(EmptyStatement_Context.class,0); + } + public InlineHtmlStatementContext inlineHtmlStatement() { + return getRuleContext(InlineHtmlStatementContext.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 PhpParserListener ) ((PhpParserListener)listener).enterStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitStatement(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_statement); + try { + setState(601); + switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(574); + identifier(); + setState(575); + match(Colon); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(577); + blockStatement(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(578); + ifStatement(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(579); + whileStatement(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(580); + doWhileStatement(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(581); + forStatement(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(582); + switchStatement(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(583); + breakStatement(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(584); + continueStatement(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(585); + returnStatement(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(586); + yieldExpression(); + setState(587); + match(SemiColon); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(589); + globalStatement(); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(590); + staticVariableStatement(); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(591); + echoStatement(); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(592); + expressionStatement(); + } + break; + case 16: + enterOuterAlt(_localctx, 16); + { + setState(593); + unsetStatement(); + } + break; + case 17: + enterOuterAlt(_localctx, 17); + { + setState(594); + foreachStatement(); + } + break; + case 18: + enterOuterAlt(_localctx, 18); + { + setState(595); + tryCatchFinally(); + } + break; + case 19: + enterOuterAlt(_localctx, 19); + { + setState(596); + throwStatement(); + } + break; + case 20: + enterOuterAlt(_localctx, 20); + { + setState(597); + gotoStatement(); + } + break; + case 21: + enterOuterAlt(_localctx, 21); + { + setState(598); + declareStatement(); + } + break; + case 22: + enterOuterAlt(_localctx, 22); + { + setState(599); + emptyStatement_(); + } + break; + case 23: + enterOuterAlt(_localctx, 23); + { + setState(600); + inlineHtmlStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EmptyStatement_Context extends ParserRuleContext { + public TerminalNode SemiColon() { return getToken(PhpParser.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 PhpParserListener ) ((PhpParserListener)listener).enterEmptyStatement_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitEmptyStatement_(this); + } + } + + public final EmptyStatement_Context emptyStatement_() throws RecognitionException { + EmptyStatement_Context _localctx = new EmptyStatement_Context(_ctx, getState()); + enterRule(_localctx, 56, RULE_emptyStatement_); + try { + enterOuterAlt(_localctx, 1); + { + setState(603); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BlockStatementContext extends ParserRuleContext { + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public BlockStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_blockStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterBlockStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitBlockStatement(this); + } + } + + public final BlockStatementContext blockStatement() throws RecognitionException { + BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_blockStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(605); + match(OpenCurlyBracket); + setState(606); + innerStatementList(); + setState(607); + match(CloseCurlyBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IfStatementContext extends ParserRuleContext { + public TerminalNode If() { return getToken(PhpParser.If, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public List<ElseIfStatementContext> elseIfStatement() { + return getRuleContexts(ElseIfStatementContext.class); + } + public ElseIfStatementContext elseIfStatement(int i) { + return getRuleContext(ElseIfStatementContext.class,i); + } + public ElseStatementContext elseStatement() { + return getRuleContext(ElseStatementContext.class,0); + } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public TerminalNode EndIf() { return getToken(PhpParser.EndIf, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public List<ElseIfColonStatementContext> elseIfColonStatement() { + return getRuleContexts(ElseIfColonStatementContext.class); + } + public ElseIfColonStatementContext elseIfColonStatement(int i) { + return getRuleContext(ElseIfColonStatementContext.class,i); + } + public ElseColonStatementContext elseColonStatement() { + return getRuleContext(ElseColonStatementContext.class,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 PhpParserListener ) ((PhpParserListener)listener).enterIfStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitIfStatement(this); + } + } + + public final IfStatementContext ifStatement() throws RecognitionException { + IfStatementContext _localctx = new IfStatementContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_ifStatement); + int _la; + try { + int _alt; + setState(637); + switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(609); + match(If); + setState(610); + parentheses(); + setState(611); + statement(); + setState(615); + _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(612); + elseIfStatement(); + } + } + } + setState(617); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,50,_ctx); + } + setState(619); + switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) { + case 1: + { + setState(618); + elseStatement(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(621); + match(If); + setState(622); + parentheses(); + setState(623); + match(Colon); + setState(624); + innerStatementList(); + setState(628); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==ElseIf) { + { + { + setState(625); + elseIfColonStatement(); + } + } + setState(630); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(632); + _la = _input.LA(1); + if (_la==Else) { + { + setState(631); + elseColonStatement(); + } + } + + setState(634); + match(EndIf); + setState(635); + match(SemiColon); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElseIfStatementContext extends ParserRuleContext { + public TerminalNode ElseIf() { return getToken(PhpParser.ElseIf, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public ElseIfStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elseIfStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterElseIfStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitElseIfStatement(this); + } + } + + public final ElseIfStatementContext elseIfStatement() throws RecognitionException { + ElseIfStatementContext _localctx = new ElseIfStatementContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_elseIfStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(639); + match(ElseIf); + setState(640); + parentheses(); + setState(641); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElseIfColonStatementContext extends ParserRuleContext { + public TerminalNode ElseIf() { return getToken(PhpParser.ElseIf, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public ElseIfColonStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elseIfColonStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterElseIfColonStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitElseIfColonStatement(this); + } + } + + public final ElseIfColonStatementContext elseIfColonStatement() throws RecognitionException { + ElseIfColonStatementContext _localctx = new ElseIfColonStatementContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_elseIfColonStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(643); + match(ElseIf); + setState(644); + parentheses(); + setState(645); + match(Colon); + setState(646); + innerStatementList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElseStatementContext extends ParserRuleContext { + public TerminalNode Else() { return getToken(PhpParser.Else, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public ElseStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elseStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterElseStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitElseStatement(this); + } + } + + public final ElseStatementContext elseStatement() throws RecognitionException { + ElseStatementContext _localctx = new ElseStatementContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_elseStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(648); + match(Else); + setState(649); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElseColonStatementContext extends ParserRuleContext { + public TerminalNode Else() { return getToken(PhpParser.Else, 0); } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public ElseColonStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elseColonStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterElseColonStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitElseColonStatement(this); + } + } + + public final ElseColonStatementContext elseColonStatement() throws RecognitionException { + ElseColonStatementContext _localctx = new ElseColonStatementContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_elseColonStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(651); + match(Else); + setState(652); + match(Colon); + setState(653); + innerStatementList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WhileStatementContext extends ParserRuleContext { + public TerminalNode While() { return getToken(PhpParser.While, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public TerminalNode EndWhile() { return getToken(PhpParser.EndWhile, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public WhileStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whileStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterWhileStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitWhileStatement(this); + } + } + + public final WhileStatementContext whileStatement() throws RecognitionException { + WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_whileStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(655); + match(While); + setState(656); + parentheses(); + setState(663); + switch (_input.LA(1)) { + case HtmlText: + case XmlStart: + case HtmlScriptOpen: + case HtmlStyleOpen: + case HtmlDtd: + case HtmlOpen: + case HtmlClose: + case HtmlSlashClose: + case HtmlSlash: + case HtmlEquals: + case HtmlStartQuoteString: + case HtmlStartDoubleQuoteString: + case HtmlHex: + case HtmlDecimal: + case HtmlName: + case HtmlEndQuoteString: + case HtmlQuoteString: + case HtmlEndDoubleQuoteString: + case HtmlDoubleQuoteString: + case ScriptText: + case HtmlScriptClose: + case StyleBody: + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Inc: + case Dec: + case NamespaceSeparator: + case Bang: + case Plus: + case Minus: + case Tilde: + case SuppressWarnings: + case Dollar: + case OpenRoundBracket: + case OpenSquareBracket: + case OpenCurlyBracket: + case SemiColon: + case VarName: + case Label: + case Octal: + case Decimal: + case Real: + case Hex: + case Binary: + case BackQuoteString: + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + { + setState(657); + statement(); + } + break; + case Colon: + { + setState(658); + match(Colon); + setState(659); + innerStatementList(); + setState(660); + match(EndWhile); + setState(661); + match(SemiColon); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DoWhileStatementContext extends ParserRuleContext { + public TerminalNode Do() { return getToken(PhpParser.Do, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public TerminalNode While() { return getToken(PhpParser.While, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public DoWhileStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_doWhileStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterDoWhileStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitDoWhileStatement(this); + } + } + + public final DoWhileStatementContext doWhileStatement() throws RecognitionException { + DoWhileStatementContext _localctx = new DoWhileStatementContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_doWhileStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(665); + match(Do); + setState(666); + statement(); + setState(667); + match(While); + setState(668); + parentheses(); + setState(669); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForStatementContext extends ParserRuleContext { + public TerminalNode For() { return getToken(PhpParser.For, 0); } + public List<TerminalNode> SemiColon() { return getTokens(PhpParser.SemiColon); } + public TerminalNode SemiColon(int i) { + return getToken(PhpParser.SemiColon, i); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public TerminalNode EndFor() { return getToken(PhpParser.EndFor, 0); } + public ForInitContext forInit() { + return getRuleContext(ForInitContext.class,0); + } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public ForUpdateContext forUpdate() { + return getRuleContext(ForUpdateContext.class,0); + } + public ForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterForStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitForStatement(this); + } + } + + public final ForStatementContext forStatement() throws RecognitionException { + ForStatementContext _localctx = new ForStatementContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_forStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(671); + match(For); + setState(672); + match(OpenRoundBracket); + setState(674); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(673); + forInit(); + } + } + + setState(676); + match(SemiColon); + setState(678); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(677); + expressionList(); + } + } + + setState(680); + match(SemiColon); + setState(682); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(681); + forUpdate(); + } + } + + setState(684); + match(CloseRoundBracket); + setState(691); + switch (_input.LA(1)) { + case HtmlText: + case XmlStart: + case HtmlScriptOpen: + case HtmlStyleOpen: + case HtmlDtd: + case HtmlOpen: + case HtmlClose: + case HtmlSlashClose: + case HtmlSlash: + case HtmlEquals: + case HtmlStartQuoteString: + case HtmlStartDoubleQuoteString: + case HtmlHex: + case HtmlDecimal: + case HtmlName: + case HtmlEndQuoteString: + case HtmlQuoteString: + case HtmlEndDoubleQuoteString: + case HtmlDoubleQuoteString: + case ScriptText: + case HtmlScriptClose: + case StyleBody: + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Inc: + case Dec: + case NamespaceSeparator: + case Bang: + case Plus: + case Minus: + case Tilde: + case SuppressWarnings: + case Dollar: + case OpenRoundBracket: + case OpenSquareBracket: + case OpenCurlyBracket: + case SemiColon: + case VarName: + case Label: + case Octal: + case Decimal: + case Real: + case Hex: + case Binary: + case BackQuoteString: + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + { + setState(685); + statement(); + } + break; + case Colon: + { + setState(686); + match(Colon); + setState(687); + innerStatementList(); + setState(688); + match(EndFor); + setState(689); + match(SemiColon); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForInitContext extends ParserRuleContext { + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public ForInitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forInit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterForInit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitForInit(this); + } + } + + public final ForInitContext forInit() throws RecognitionException { + ForInitContext _localctx = new ForInitContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_forInit); + try { + enterOuterAlt(_localctx, 1); + { + setState(693); + expressionList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForUpdateContext extends ParserRuleContext { + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public ForUpdateContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forUpdate; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterForUpdate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitForUpdate(this); + } + } + + public final ForUpdateContext forUpdate() throws RecognitionException { + ForUpdateContext _localctx = new ForUpdateContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_forUpdate); + try { + enterOuterAlt(_localctx, 1); + { + setState(695); + expressionList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchStatementContext extends ParserRuleContext { + public TerminalNode Switch() { return getToken(PhpParser.Switch, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public TerminalNode EndSwitch() { return getToken(PhpParser.EndSwitch, 0); } + public List<TerminalNode> SemiColon() { return getTokens(PhpParser.SemiColon); } + public TerminalNode SemiColon(int i) { + return getToken(PhpParser.SemiColon, i); + } + public List<SwitchBlockContext> switchBlock() { + return getRuleContexts(SwitchBlockContext.class); + } + public SwitchBlockContext switchBlock(int i) { + return getRuleContext(SwitchBlockContext.class,i); + } + 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 PhpParserListener ) ((PhpParserListener)listener).enterSwitchStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitSwitchStatement(this); + } + } + + public final SwitchStatementContext switchStatement() throws RecognitionException { + SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_switchStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(697); + match(Switch); + setState(698); + parentheses(); + setState(722); + switch (_input.LA(1)) { + case OpenCurlyBracket: + { + setState(699); + match(OpenCurlyBracket); + setState(701); + _la = _input.LA(1); + if (_la==SemiColon) { + { + setState(700); + match(SemiColon); + } + } + + setState(706); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Case || _la==Default) { + { + { + setState(703); + switchBlock(); + } + } + setState(708); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(709); + match(CloseCurlyBracket); + } + break; + case Colon: + { + setState(710); + match(Colon); + setState(712); + _la = _input.LA(1); + if (_la==SemiColon) { + { + setState(711); + match(SemiColon); + } + } + + setState(717); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Case || _la==Default) { + { + { + setState(714); + switchBlock(); + } + } + setState(719); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(720); + match(EndSwitch); + setState(721); + match(SemiColon); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchBlockContext extends ParserRuleContext { + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public List<TerminalNode> SemiColon() { return getTokens(PhpParser.SemiColon); } + public TerminalNode SemiColon(int i) { + return getToken(PhpParser.SemiColon, i); + } + public List<TerminalNode> Case() { return getTokens(PhpParser.Case); } + public TerminalNode Case(int i) { + return getToken(PhpParser.Case, i); + } + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List<TerminalNode> Default() { return getTokens(PhpParser.Default); } + public TerminalNode Default(int i) { + return getToken(PhpParser.Default, i); + } + public SwitchBlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchBlock; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterSwitchBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitSwitchBlock(this); + } + } + + public final SwitchBlockContext switchBlock() throws RecognitionException { + SwitchBlockContext _localctx = new SwitchBlockContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_switchBlock); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(730); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(727); + switch (_input.LA(1)) { + case Case: + { + setState(724); + match(Case); + setState(725); + expression(0); + } + break; + case Default: + { + setState(726); + match(Default); + } + break; + default: + throw new NoViableAltException(this); + } + setState(729); + _la = _input.LA(1); + if ( !(_la==Colon || _la==SemiColon) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(732); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,66,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + setState(734); + innerStatementList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BreakStatementContext extends ParserRuleContext { + public TerminalNode Break() { return getToken(PhpParser.Break, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.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 PhpParserListener ) ((PhpParserListener)listener).enterBreakStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitBreakStatement(this); + } + } + + public final BreakStatementContext breakStatement() throws RecognitionException { + BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_breakStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(736); + match(Break); + setState(738); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(737); + expression(0); + } + } + + setState(740); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ContinueStatementContext extends ParserRuleContext { + public TerminalNode Continue() { return getToken(PhpParser.Continue, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.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 PhpParserListener ) ((PhpParserListener)listener).enterContinueStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitContinueStatement(this); + } + } + + public final ContinueStatementContext continueStatement() throws RecognitionException { + ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_continueStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(742); + match(Continue); + setState(744); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(743); + expression(0); + } + } + + setState(746); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReturnStatementContext extends ParserRuleContext { + public TerminalNode Return() { return getToken(PhpParser.Return, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.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 PhpParserListener ) ((PhpParserListener)listener).enterReturnStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitReturnStatement(this); + } + } + + public final ReturnStatementContext returnStatement() throws RecognitionException { + ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_returnStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(748); + match(Return); + setState(750); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(749); + expression(0); + } + } + + setState(752); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 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 PhpParserListener ) ((PhpParserListener)listener).enterExpressionStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitExpressionStatement(this); + } + } + + public final ExpressionStatementContext expressionStatement() throws RecognitionException { + ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_expressionStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(754); + expression(0); + setState(755); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnsetStatementContext extends ParserRuleContext { + public TerminalNode Unset() { return getToken(PhpParser.Unset, 0); } + public ChainListContext chainList() { + return getRuleContext(ChainListContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public UnsetStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsetStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterUnsetStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitUnsetStatement(this); + } + } + + public final UnsetStatementContext unsetStatement() throws RecognitionException { + UnsetStatementContext _localctx = new UnsetStatementContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_unsetStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(757); + match(Unset); + setState(758); + match(OpenRoundBracket); + setState(759); + chainList(); + setState(760); + match(CloseRoundBracket); + setState(761); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForeachStatementContext extends ParserRuleContext { + public TerminalNode Foreach() { return getToken(PhpParser.Foreach, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode As() { return getToken(PhpParser.As, 0); } + public ArrayDestructuringContext arrayDestructuring() { + return getRuleContext(ArrayDestructuringContext.class,0); + } + public List<ChainContext> chain() { + return getRuleContexts(ChainContext.class); + } + public ChainContext chain(int i) { + return getRuleContext(ChainContext.class,i); + } + public AssignableContext assignable() { + return getRuleContext(AssignableContext.class,0); + } + public TerminalNode List() { return getToken(PhpParser.List, 0); } + public AssignmentListContext assignmentList() { + return getRuleContext(AssignmentListContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public TerminalNode EndForeach() { return getToken(PhpParser.EndForeach, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public ForeachStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_foreachStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterForeachStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitForeachStatement(this); + } + } + + public final ForeachStatementContext foreachStatement() throws RecognitionException { + ForeachStatementContext _localctx = new ForeachStatementContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_foreachStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(763); + match(Foreach); + setState(808); + switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { + case 1: + { + setState(764); + match(OpenRoundBracket); + setState(765); + expression(0); + setState(766); + match(As); + setState(767); + arrayDestructuring(); + setState(768); + match(CloseRoundBracket); + } + break; + case 2: + { + setState(770); + match(OpenRoundBracket); + setState(771); + chain(); + setState(772); + match(As); + setState(774); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(773); + match(Ampersand); + } + } + + setState(776); + assignable(); + setState(782); + _la = _input.LA(1); + if (_la==DoubleArrow) { + { + setState(777); + match(DoubleArrow); + setState(779); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(778); + match(Ampersand); + } + } + + setState(781); + chain(); + } + } + + setState(784); + match(CloseRoundBracket); + } + break; + case 3: + { + setState(786); + match(OpenRoundBracket); + setState(787); + expression(0); + setState(788); + match(As); + setState(789); + assignable(); + setState(795); + _la = _input.LA(1); + if (_la==DoubleArrow) { + { + setState(790); + match(DoubleArrow); + setState(792); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(791); + match(Ampersand); + } + } + + setState(794); + chain(); + } + } + + setState(797); + match(CloseRoundBracket); + } + break; + case 4: + { + setState(799); + match(OpenRoundBracket); + setState(800); + chain(); + setState(801); + match(As); + setState(802); + match(List); + setState(803); + match(OpenRoundBracket); + setState(804); + assignmentList(); + setState(805); + match(CloseRoundBracket); + setState(806); + match(CloseRoundBracket); + } + break; + } + setState(816); + switch (_input.LA(1)) { + case HtmlText: + case XmlStart: + case HtmlScriptOpen: + case HtmlStyleOpen: + case HtmlDtd: + case HtmlOpen: + case HtmlClose: + case HtmlSlashClose: + case HtmlSlash: + case HtmlEquals: + case HtmlStartQuoteString: + case HtmlStartDoubleQuoteString: + case HtmlHex: + case HtmlDecimal: + case HtmlName: + case HtmlEndQuoteString: + case HtmlQuoteString: + case HtmlEndDoubleQuoteString: + case HtmlDoubleQuoteString: + case ScriptText: + case HtmlScriptClose: + case StyleBody: + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Inc: + case Dec: + case NamespaceSeparator: + case Bang: + case Plus: + case Minus: + case Tilde: + case SuppressWarnings: + case Dollar: + case OpenRoundBracket: + case OpenSquareBracket: + case OpenCurlyBracket: + case SemiColon: + case VarName: + case Label: + case Octal: + case Decimal: + case Real: + case Hex: + case Binary: + case BackQuoteString: + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + { + setState(810); + statement(); + } + break; + case Colon: + { + setState(811); + match(Colon); + setState(812); + innerStatementList(); + setState(813); + match(EndForeach); + setState(814); + match(SemiColon); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TryCatchFinallyContext extends ParserRuleContext { + public TerminalNode Try() { return getToken(PhpParser.Try, 0); } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public FinallyStatementContext finallyStatement() { + return getRuleContext(FinallyStatementContext.class,0); + } + public List<CatchClauseContext> catchClause() { + return getRuleContexts(CatchClauseContext.class); + } + public CatchClauseContext catchClause(int i) { + return getRuleContext(CatchClauseContext.class,i); + } + public TryCatchFinallyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tryCatchFinally; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTryCatchFinally(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTryCatchFinally(this); + } + } + + public final TryCatchFinallyContext tryCatchFinally() throws RecognitionException { + TryCatchFinallyContext _localctx = new TryCatchFinallyContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_tryCatchFinally); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(818); + match(Try); + setState(819); + blockStatement(); + setState(835); + switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) { + case 1: + { + setState(821); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(820); + catchClause(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(823); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,77,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + setState(826); + switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) { + case 1: + { + setState(825); + finallyStatement(); + } + break; + } + } + break; + case 2: + { + setState(831); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Catch) { + { + { + setState(828); + catchClause(); + } + } + setState(833); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(834); + finallyStatement(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CatchClauseContext extends ParserRuleContext { + public TerminalNode Catch() { return getToken(PhpParser.Catch, 0); } + public List<QualifiedStaticTypeRefContext> qualifiedStaticTypeRef() { + return getRuleContexts(QualifiedStaticTypeRefContext.class); + } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef(int i) { + return getRuleContext(QualifiedStaticTypeRefContext.class,i); + } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public TerminalNode VarName() { return getToken(PhpParser.VarName, 0); } + public CatchClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catchClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterCatchClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitCatchClause(this); + } + } + + public final CatchClauseContext catchClause() throws RecognitionException { + CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_catchClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(837); + match(Catch); + setState(838); + match(OpenRoundBracket); + setState(839); + qualifiedStaticTypeRef(); + setState(844); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Pipe) { + { + { + setState(840); + match(Pipe); + setState(841); + qualifiedStaticTypeRef(); + } + } + setState(846); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(848); + _la = _input.LA(1); + if (_la==VarName) { + { + setState(847); + match(VarName); + } + } + + setState(850); + match(CloseRoundBracket); + setState(851); + blockStatement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FinallyStatementContext extends ParserRuleContext { + public TerminalNode Finally() { return getToken(PhpParser.Finally, 0); } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public FinallyStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_finallyStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterFinallyStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitFinallyStatement(this); + } + } + + public final FinallyStatementContext finallyStatement() throws RecognitionException { + FinallyStatementContext _localctx = new FinallyStatementContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_finallyStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(853); + match(Finally); + setState(854); + blockStatement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ThrowStatementContext extends ParserRuleContext { + public TerminalNode Throw() { return getToken(PhpParser.Throw, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 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 PhpParserListener ) ((PhpParserListener)listener).enterThrowStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitThrowStatement(this); + } + } + + public final ThrowStatementContext throwStatement() throws RecognitionException { + ThrowStatementContext _localctx = new ThrowStatementContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_throwStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(856); + match(Throw); + setState(857); + expression(0); + setState(858); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GotoStatementContext extends ParserRuleContext { + public TerminalNode Goto() { return getToken(PhpParser.Goto, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public GotoStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_gotoStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterGotoStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitGotoStatement(this); + } + } + + public final GotoStatementContext gotoStatement() throws RecognitionException { + GotoStatementContext _localctx = new GotoStatementContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_gotoStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(860); + match(Goto); + setState(861); + identifier(); + setState(862); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeclareStatementContext extends ParserRuleContext { + public TerminalNode Declare() { return getToken(PhpParser.Declare, 0); } + public DeclareListContext declareList() { + return getRuleContext(DeclareListContext.class,0); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public InnerStatementListContext innerStatementList() { + return getRuleContext(InnerStatementListContext.class,0); + } + public TerminalNode EndDeclare() { return getToken(PhpParser.EndDeclare, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public DeclareStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declareStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterDeclareStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitDeclareStatement(this); + } + } + + public final DeclareStatementContext declareStatement() throws RecognitionException { + DeclareStatementContext _localctx = new DeclareStatementContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_declareStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(864); + match(Declare); + setState(865); + match(OpenRoundBracket); + setState(866); + declareList(); + setState(867); + match(CloseRoundBracket); + setState(874); + switch (_input.LA(1)) { + case HtmlText: + case XmlStart: + case HtmlScriptOpen: + case HtmlStyleOpen: + case HtmlDtd: + case HtmlOpen: + case HtmlClose: + case HtmlSlashClose: + case HtmlSlash: + case HtmlEquals: + case HtmlStartQuoteString: + case HtmlStartDoubleQuoteString: + case HtmlHex: + case HtmlDecimal: + case HtmlName: + case HtmlEndQuoteString: + case HtmlQuoteString: + case HtmlEndDoubleQuoteString: + case HtmlDoubleQuoteString: + case ScriptText: + case HtmlScriptClose: + case StyleBody: + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Inc: + case Dec: + case NamespaceSeparator: + case Bang: + case Plus: + case Minus: + case Tilde: + case SuppressWarnings: + case Dollar: + case OpenRoundBracket: + case OpenSquareBracket: + case OpenCurlyBracket: + case SemiColon: + case VarName: + case Label: + case Octal: + case Decimal: + case Real: + case Hex: + case Binary: + case BackQuoteString: + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + { + setState(868); + statement(); + } + break; + case Colon: + { + setState(869); + match(Colon); + setState(870); + innerStatementList(); + setState(871); + match(EndDeclare); + setState(872); + match(SemiColon); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InlineHtmlStatementContext extends ParserRuleContext { + public List<InlineHtmlContext> inlineHtml() { + return getRuleContexts(InlineHtmlContext.class); + } + public InlineHtmlContext inlineHtml(int i) { + return getRuleContext(InlineHtmlContext.class,i); + } + public InlineHtmlStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inlineHtmlStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInlineHtmlStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInlineHtmlStatement(this); + } + } + + public final InlineHtmlStatementContext inlineHtmlStatement() throws RecognitionException { + InlineHtmlStatementContext _localctx = new InlineHtmlStatementContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_inlineHtmlStatement); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(877); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(876); + inlineHtml(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(879); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,84,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeclareListContext extends ParserRuleContext { + public List<DirectiveContext> directive() { + return getRuleContexts(DirectiveContext.class); + } + public DirectiveContext directive(int i) { + return getRuleContext(DirectiveContext.class,i); + } + public DeclareListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declareList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterDeclareList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitDeclareList(this); + } + } + + public final DeclareListContext declareList() throws RecognitionException { + DeclareListContext _localctx = new DeclareListContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_declareList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(881); + directive(); + setState(886); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(882); + match(Comma); + setState(883); + directive(); + } + } + setState(888); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DirectiveContext extends ParserRuleContext { + public TerminalNode Ticks() { return getToken(PhpParser.Ticks, 0); } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public NumericConstantContext numericConstant() { + return getRuleContext(NumericConstantContext.class,0); + } + public TerminalNode Real() { return getToken(PhpParser.Real, 0); } + public TerminalNode Encoding() { return getToken(PhpParser.Encoding, 0); } + public TerminalNode SingleQuoteString() { return getToken(PhpParser.SingleQuoteString, 0); } + public TerminalNode StrictTypes() { return getToken(PhpParser.StrictTypes, 0); } + public DirectiveContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_directive; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterDirective(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitDirective(this); + } + } + + public final DirectiveContext directive() throws RecognitionException { + DirectiveContext _localctx = new DirectiveContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_directive); + try { + setState(901); + switch (_input.LA(1)) { + case Ticks: + enterOuterAlt(_localctx, 1); + { + setState(889); + match(Ticks); + setState(890); + match(Eq); + setState(893); + switch (_input.LA(1)) { + case Octal: + case Decimal: + case Hex: + case Binary: + { + setState(891); + numericConstant(); + } + break; + case Real: + { + setState(892); + match(Real); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case Encoding: + enterOuterAlt(_localctx, 2); + { + setState(895); + match(Encoding); + setState(896); + match(Eq); + setState(897); + match(SingleQuoteString); + } + break; + case StrictTypes: + enterOuterAlt(_localctx, 3); + { + setState(898); + match(StrictTypes); + setState(899); + match(Eq); + setState(900); + numericConstant(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParameterListContext extends ParserRuleContext { + public List<FormalParameterContext> formalParameter() { + return getRuleContexts(FormalParameterContext.class); + } + public FormalParameterContext formalParameter(int i) { + return getRuleContext(FormalParameterContext.class,i); + } + 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 PhpParserListener ) ((PhpParserListener)listener).enterFormalParameterList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitFormalParameterList(this); + } + } + + public final FormalParameterListContext formalParameterList() throws RecognitionException { + FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_formalParameterList); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(904); + _la = _input.LA(1); + if (((((_la - 43)) & ~0x3f) == 0 && ((1L << (_la - 43)) & ((1L << (AttributeStart - 43)) | (1L << (Abstract - 43)) | (1L << (Array - 43)) | (1L << (As - 43)) | (1L << (BinaryCast - 43)) | (1L << (BoolType - 43)) | (1L << (BooleanConstant - 43)) | (1L << (Break - 43)) | (1L << (Callable - 43)) | (1L << (Case - 43)) | (1L << (Catch - 43)) | (1L << (Class - 43)) | (1L << (Clone - 43)) | (1L << (Const - 43)) | (1L << (Continue - 43)) | (1L << (Declare - 43)) | (1L << (Default - 43)) | (1L << (Do - 43)) | (1L << (DoubleCast - 43)) | (1L << (DoubleType - 43)) | (1L << (Echo - 43)) | (1L << (Else - 43)) | (1L << (ElseIf - 43)) | (1L << (Empty - 43)) | (1L << (Enum_ - 43)) | (1L << (EndDeclare - 43)) | (1L << (EndFor - 43)) | (1L << (EndForeach - 43)) | (1L << (EndIf - 43)) | (1L << (EndSwitch - 43)) | (1L << (EndWhile - 43)) | (1L << (Eval - 43)) | (1L << (Exit - 43)) | (1L << (Extends - 43)) | (1L << (Final - 43)) | (1L << (Finally - 43)) | (1L << (FloatCast - 43)) | (1L << (For - 43)) | (1L << (Foreach - 43)) | (1L << (Function_ - 43)) | (1L << (Global - 43)) | (1L << (Goto - 43)) | (1L << (If - 43)) | (1L << (Implements - 43)) | (1L << (Import - 43)) | (1L << (Include - 43)) | (1L << (IncludeOnce - 43)) | (1L << (InstanceOf - 43)) | (1L << (InsteadOf - 43)) | (1L << (Int8Cast - 43)) | (1L << (Int16Cast - 43)) | (1L << (Int64Type - 43)) | (1L << (IntType - 43)) | (1L << (Interface - 43)) | (1L << (IsSet - 43)) | (1L << (List - 43)) | (1L << (LogicalAnd - 43)) | (1L << (LogicalOr - 43)) | (1L << (LogicalXor - 43)) | (1L << (Match_ - 43)) | (1L << (Namespace - 43)) | (1L << (New - 43)) | (1L << (Null - 43)) | (1L << (ObjectType - 43)))) != 0) || ((((_la - 107)) & ~0x3f) == 0 && ((1L << (_la - 107)) & ((1L << (Parent_ - 107)) | (1L << (Partial - 107)) | (1L << (Print - 107)) | (1L << (Private - 107)) | (1L << (Protected - 107)) | (1L << (Public - 107)) | (1L << (Readonly - 107)) | (1L << (Require - 107)) | (1L << (RequireOnce - 107)) | (1L << (Resource - 107)) | (1L << (Return - 107)) | (1L << (Static - 107)) | (1L << (StringType - 107)) | (1L << (Switch - 107)) | (1L << (Throw - 107)) | (1L << (Trait - 107)) | (1L << (Try - 107)) | (1L << (Typeof - 107)) | (1L << (UintCast - 107)) | (1L << (UnicodeCast - 107)) | (1L << (Unset - 107)) | (1L << (Use - 107)) | (1L << (Var - 107)) | (1L << (While - 107)) | (1L << (Yield - 107)) | (1L << (From - 107)) | (1L << (LambdaFn - 107)) | (1L << (Ticks - 107)) | (1L << (Encoding - 107)) | (1L << (StrictTypes - 107)) | (1L << (Get - 107)) | (1L << (Set - 107)) | (1L << (Call - 107)) | (1L << (CallStatic - 107)) | (1L << (Constructor - 107)) | (1L << (Destruct - 107)) | (1L << (Wakeup - 107)) | (1L << (Sleep - 107)) | (1L << (Autoload - 107)) | (1L << (IsSet__ - 107)) | (1L << (Unset__ - 107)) | (1L << (ToString__ - 107)) | (1L << (Invoke - 107)) | (1L << (SetState - 107)) | (1L << (Clone__ - 107)) | (1L << (DebugInfo - 107)) | (1L << (Namespace__ - 107)) | (1L << (Class__ - 107)) | (1L << (Traic__ - 107)) | (1L << (Function__ - 107)) | (1L << (Method__ - 107)) | (1L << (Line__ - 107)) | (1L << (File__ - 107)) | (1L << (Dir__ - 107)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ellipsis - 194)) | (1L << (Ampersand - 194)) | (1L << (QuestionMark - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)))) != 0)) { + { + setState(903); + formalParameter(); + } + } + + setState(910); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,89,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(906); + match(Comma); + setState(907); + formalParameter(); + } + } + } + setState(912); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,89,_ctx); + } + setState(914); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(913); + match(Comma); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParameterContext extends ParserRuleContext { + public VariableInitializerContext variableInitializer() { + return getRuleContext(VariableInitializerContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public List<MemberModifierContext> memberModifier() { + return getRuleContexts(MemberModifierContext.class); + } + public MemberModifierContext memberModifier(int i) { + return getRuleContext(MemberModifierContext.class,i); + } + public TerminalNode QuestionMark() { return getToken(PhpParser.QuestionMark, 0); } + public TypeHintContext typeHint() { + return getRuleContext(TypeHintContext.class,0); + } + public FormalParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterFormalParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitFormalParameter(this); + } + } + + public final FormalParameterContext formalParameter() throws RecognitionException { + FormalParameterContext _localctx = new FormalParameterContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_formalParameter); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(917); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(916); + attributes(); + } + } + + setState(922); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,92,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(919); + memberModifier(); + } + } + } + setState(924); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,92,_ctx); + } + setState(926); + _la = _input.LA(1); + if (_la==QuestionMark) { + { + setState(925); + match(QuestionMark); + } + } + + setState(929); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)))) != 0) || _la==NamespaceSeparator || _la==Label) { + { + setState(928); + typeHint(0); + } + } + + setState(932); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(931); + match(Ampersand); + } + } + + setState(935); + _la = _input.LA(1); + if (_la==Ellipsis) { + { + setState(934); + match(Ellipsis); + } + } + + setState(937); + variableInitializer(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeHintContext extends ParserRuleContext { + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef() { + return getRuleContext(QualifiedStaticTypeRefContext.class,0); + } + public TerminalNode Callable() { return getToken(PhpParser.Callable, 0); } + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public List<TypeHintContext> typeHint() { + return getRuleContexts(TypeHintContext.class); + } + public TypeHintContext typeHint(int i) { + return getRuleContext(TypeHintContext.class,i); + } + public TypeHintContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeHint; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeHint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeHint(this); + } + } + + public final TypeHintContext typeHint() throws RecognitionException { + return typeHint(0); + } + + private TypeHintContext typeHint(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + TypeHintContext _localctx = new TypeHintContext(_ctx, _parentState); + TypeHintContext _prevctx = _localctx; + int _startState = 118; + enterRecursionRule(_localctx, 118, RULE_typeHint, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(943); + switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) { + case 1: + { + setState(940); + qualifiedStaticTypeRef(); + } + break; + case 2: + { + setState(941); + match(Callable); + } + break; + case 3: + { + setState(942); + primitiveType(); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(950); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,98,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new TypeHintContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_typeHint); + setState(945); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(946); + match(Pipe); + setState(947); + typeHint(2); + } + } + } + setState(952); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,98,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class GlobalStatementContext extends ParserRuleContext { + public TerminalNode Global() { return getToken(PhpParser.Global, 0); } + public List<GlobalVarContext> globalVar() { + return getRuleContexts(GlobalVarContext.class); + } + public GlobalVarContext globalVar(int i) { + return getRuleContext(GlobalVarContext.class,i); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public GlobalStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_globalStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterGlobalStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitGlobalStatement(this); + } + } + + public final GlobalStatementContext globalStatement() throws RecognitionException { + GlobalStatementContext _localctx = new GlobalStatementContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_globalStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(953); + match(Global); + setState(954); + globalVar(); + setState(959); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(955); + match(Comma); + setState(956); + globalVar(); + } + } + setState(961); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(962); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GlobalVarContext extends ParserRuleContext { + public TerminalNode VarName() { return getToken(PhpParser.VarName, 0); } + public TerminalNode Dollar() { return getToken(PhpParser.Dollar, 0); } + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public GlobalVarContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_globalVar; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterGlobalVar(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitGlobalVar(this); + } + } + + public final GlobalVarContext globalVar() throws RecognitionException { + GlobalVarContext _localctx = new GlobalVarContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_globalVar); + try { + setState(972); + switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(964); + match(VarName); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(965); + match(Dollar); + setState(966); + chain(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(967); + match(Dollar); + setState(968); + match(OpenCurlyBracket); + setState(969); + expression(0); + setState(970); + match(CloseCurlyBracket); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EchoStatementContext extends ParserRuleContext { + public TerminalNode Echo() { return getToken(PhpParser.Echo, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public EchoStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_echoStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterEchoStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitEchoStatement(this); + } + } + + public final EchoStatementContext echoStatement() throws RecognitionException { + EchoStatementContext _localctx = new EchoStatementContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_echoStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(974); + match(Echo); + setState(975); + expressionList(); + setState(976); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StaticVariableStatementContext extends ParserRuleContext { + public TerminalNode Static() { return getToken(PhpParser.Static, 0); } + public List<VariableInitializerContext> variableInitializer() { + return getRuleContexts(VariableInitializerContext.class); + } + public VariableInitializerContext variableInitializer(int i) { + return getRuleContext(VariableInitializerContext.class,i); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public StaticVariableStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_staticVariableStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterStaticVariableStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitStaticVariableStatement(this); + } + } + + public final StaticVariableStatementContext staticVariableStatement() throws RecognitionException { + StaticVariableStatementContext _localctx = new StaticVariableStatementContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_staticVariableStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(978); + match(Static); + setState(979); + variableInitializer(); + setState(984); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(980); + match(Comma); + setState(981); + variableInitializer(); + } + } + setState(986); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(987); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassStatementContext extends ParserRuleContext { + public PropertyModifiersContext propertyModifiers() { + return getRuleContext(PropertyModifiersContext.class,0); + } + public List<VariableInitializerContext> variableInitializer() { + return getRuleContexts(VariableInitializerContext.class); + } + public VariableInitializerContext variableInitializer(int i) { + return getRuleContext(VariableInitializerContext.class,i); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode Const() { return getToken(PhpParser.Const, 0); } + public List<IdentifierInitializerContext> identifierInitializer() { + return getRuleContexts(IdentifierInitializerContext.class); + } + public IdentifierInitializerContext identifierInitializer(int i) { + return getRuleContext(IdentifierInitializerContext.class,i); + } + public TerminalNode Function_() { return getToken(PhpParser.Function_, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public MethodBodyContext methodBody() { + return getRuleContext(MethodBodyContext.class,0); + } + public TypeHintContext typeHint() { + return getRuleContext(TypeHintContext.class,0); + } + public MemberModifiersContext memberModifiers() { + return getRuleContext(MemberModifiersContext.class,0); + } + public TypeParameterListInBracketsContext typeParameterListInBrackets() { + return getRuleContext(TypeParameterListInBracketsContext.class,0); + } + public BaseCtorCallContext baseCtorCall() { + return getRuleContext(BaseCtorCallContext.class,0); + } + public ReturnTypeDeclContext returnTypeDecl() { + return getRuleContext(ReturnTypeDeclContext.class,0); + } + public TerminalNode Use() { return getToken(PhpParser.Use, 0); } + public QualifiedNamespaceNameListContext qualifiedNamespaceNameList() { + return getRuleContext(QualifiedNamespaceNameListContext.class,0); + } + public TraitAdaptationsContext traitAdaptations() { + return getRuleContext(TraitAdaptationsContext.class,0); + } + public ClassStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterClassStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitClassStatement(this); + } + } + + public final ClassStatementContext classStatement() throws RecognitionException { + ClassStatementContext _localctx = new ClassStatementContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_classStatement); + int _la; + try { + setState(1048); + switch (_input.LA(1)) { + case AttributeStart: + case Abstract: + case Const: + case Final: + case Function_: + case Private: + case Protected: + case Public: + case Readonly: + case Static: + case Var: + enterOuterAlt(_localctx, 1); + { + setState(990); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(989); + attributes(); + } + } + + setState(1042); + switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) { + case 1: + { + setState(992); + propertyModifiers(); + setState(994); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)))) != 0) || _la==NamespaceSeparator || _la==Label) { + { + setState(993); + typeHint(0); + } + } + + setState(996); + variableInitializer(); + setState(1001); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(997); + match(Comma); + setState(998); + variableInitializer(); + } + } + setState(1003); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1004); + match(SemiColon); + } + break; + case 2: + { + setState(1007); + _la = _input.LA(1); + if (_la==Abstract || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (Final - 77)) | (1L << (Private - 77)) | (1L << (Protected - 77)) | (1L << (Public - 77)) | (1L << (Readonly - 77)) | (1L << (Static - 77)))) != 0)) { + { + setState(1006); + memberModifiers(); + } + } + + setState(1040); + switch (_input.LA(1)) { + case Const: + { + setState(1009); + match(Const); + setState(1011); + switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) { + case 1: + { + setState(1010); + typeHint(0); + } + break; + } + setState(1013); + identifierInitializer(); + setState(1018); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1014); + match(Comma); + setState(1015); + identifierInitializer(); + } + } + setState(1020); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1021); + match(SemiColon); + } + break; + case Function_: + { + setState(1023); + match(Function_); + setState(1025); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(1024); + match(Ampersand); + } + } + + setState(1027); + identifier(); + setState(1029); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(1028); + typeParameterListInBrackets(); + } + } + + setState(1031); + match(OpenRoundBracket); + setState(1032); + formalParameterList(); + setState(1033); + match(CloseRoundBracket); + setState(1036); + switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) { + case 1: + { + setState(1034); + baseCtorCall(); + } + break; + case 2: + { + setState(1035); + returnTypeDecl(); + } + break; + } + setState(1038); + methodBody(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + } + } + break; + case Use: + enterOuterAlt(_localctx, 2); + { + setState(1044); + match(Use); + setState(1045); + qualifiedNamespaceNameList(); + setState(1046); + traitAdaptations(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TraitAdaptationsContext extends ParserRuleContext { + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public List<TraitAdaptationStatementContext> traitAdaptationStatement() { + return getRuleContexts(TraitAdaptationStatementContext.class); + } + public TraitAdaptationStatementContext traitAdaptationStatement(int i) { + return getRuleContext(TraitAdaptationStatementContext.class,i); + } + public TraitAdaptationsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_traitAdaptations; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTraitAdaptations(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTraitAdaptations(this); + } + } + + public final TraitAdaptationsContext traitAdaptations() throws RecognitionException { + TraitAdaptationsContext _localctx = new TraitAdaptationsContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_traitAdaptations); + int _la; + try { + setState(1059); + switch (_input.LA(1)) { + case SemiColon: + enterOuterAlt(_localctx, 1); + { + setState(1050); + match(SemiColon); + } + break; + case OpenCurlyBracket: + enterOuterAlt(_localctx, 2); + { + setState(1051); + match(OpenCurlyBracket); + setState(1055); + _errHandler.sync(this); + _la = _input.LA(1); + while (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)))) != 0) || _la==NamespaceSeparator || _la==Label) { + { + { + setState(1052); + traitAdaptationStatement(); + } + } + setState(1057); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1058); + match(CloseCurlyBracket); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TraitAdaptationStatementContext extends ParserRuleContext { + public TraitPrecedenceContext traitPrecedence() { + return getRuleContext(TraitPrecedenceContext.class,0); + } + public TraitAliasContext traitAlias() { + return getRuleContext(TraitAliasContext.class,0); + } + public TraitAdaptationStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_traitAdaptationStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTraitAdaptationStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTraitAdaptationStatement(this); + } + } + + public final TraitAdaptationStatementContext traitAdaptationStatement() throws RecognitionException { + TraitAdaptationStatementContext _localctx = new TraitAdaptationStatementContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_traitAdaptationStatement); + try { + setState(1063); + switch ( getInterpreter().adaptivePredict(_input,116,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1061); + traitPrecedence(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1062); + traitAlias(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TraitPrecedenceContext extends ParserRuleContext { + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode InsteadOf() { return getToken(PhpParser.InsteadOf, 0); } + public QualifiedNamespaceNameListContext qualifiedNamespaceNameList() { + return getRuleContext(QualifiedNamespaceNameListContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public TraitPrecedenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_traitPrecedence; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTraitPrecedence(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTraitPrecedence(this); + } + } + + public final TraitPrecedenceContext traitPrecedence() throws RecognitionException { + TraitPrecedenceContext _localctx = new TraitPrecedenceContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_traitPrecedence); + try { + enterOuterAlt(_localctx, 1); + { + setState(1065); + qualifiedNamespaceName(); + setState(1066); + match(DoubleColon); + setState(1067); + identifier(); + setState(1068); + match(InsteadOf); + setState(1069); + qualifiedNamespaceNameList(); + setState(1070); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TraitAliasContext extends ParserRuleContext { + public TraitMethodReferenceContext traitMethodReference() { + return getRuleContext(TraitMethodReferenceContext.class,0); + } + public TerminalNode As() { return getToken(PhpParser.As, 0); } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public MemberModifierContext memberModifier() { + return getRuleContext(MemberModifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TraitAliasContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_traitAlias; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTraitAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTraitAlias(this); + } + } + + public final TraitAliasContext traitAlias() throws RecognitionException { + TraitAliasContext _localctx = new TraitAliasContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_traitAlias); + try { + enterOuterAlt(_localctx, 1); + { + setState(1072); + traitMethodReference(); + setState(1073); + match(As); + setState(1079); + switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) { + case 1: + { + setState(1074); + memberModifier(); + } + break; + case 2: + { + setState(1076); + switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) { + case 1: + { + setState(1075); + memberModifier(); + } + break; + } + setState(1078); + identifier(); + } + break; + } + setState(1081); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TraitMethodReferenceContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public TraitMethodReferenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_traitMethodReference; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTraitMethodReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTraitMethodReference(this); + } + } + + public final TraitMethodReferenceContext traitMethodReference() throws RecognitionException { + TraitMethodReferenceContext _localctx = new TraitMethodReferenceContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_traitMethodReference); + try { + enterOuterAlt(_localctx, 1); + { + setState(1086); + switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) { + case 1: + { + setState(1083); + qualifiedNamespaceName(); + setState(1084); + match(DoubleColon); + } + break; + } + setState(1088); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BaseCtorCallContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ArgumentsContext arguments() { + return getRuleContext(ArgumentsContext.class,0); + } + public BaseCtorCallContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_baseCtorCall; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterBaseCtorCall(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitBaseCtorCall(this); + } + } + + public final BaseCtorCallContext baseCtorCall() throws RecognitionException { + BaseCtorCallContext _localctx = new BaseCtorCallContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_baseCtorCall); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1090); + match(Colon); + setState(1091); + identifier(); + setState(1093); + _la = _input.LA(1); + if (_la==OpenRoundBracket) { + { + setState(1092); + arguments(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReturnTypeDeclContext extends ParserRuleContext { + public TypeHintContext typeHint() { + return getRuleContext(TypeHintContext.class,0); + } + public TerminalNode QuestionMark() { return getToken(PhpParser.QuestionMark, 0); } + public ReturnTypeDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_returnTypeDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterReturnTypeDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitReturnTypeDecl(this); + } + } + + public final ReturnTypeDeclContext returnTypeDecl() throws RecognitionException { + ReturnTypeDeclContext _localctx = new ReturnTypeDeclContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_returnTypeDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1095); + match(Colon); + setState(1097); + _la = _input.LA(1); + if (_la==QuestionMark) { + { + setState(1096); + match(QuestionMark); + } + } + + setState(1099); + typeHint(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodBodyContext extends ParserRuleContext { + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public MethodBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMethodBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMethodBody(this); + } + } + + public final MethodBodyContext methodBody() throws RecognitionException { + MethodBodyContext _localctx = new MethodBodyContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_methodBody); + try { + setState(1103); + switch (_input.LA(1)) { + case SemiColon: + enterOuterAlt(_localctx, 1); + { + setState(1101); + match(SemiColon); + } + break; + case OpenCurlyBracket: + enterOuterAlt(_localctx, 2); + { + setState(1102); + blockStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PropertyModifiersContext extends ParserRuleContext { + public MemberModifiersContext memberModifiers() { + return getRuleContext(MemberModifiersContext.class,0); + } + public TerminalNode Var() { return getToken(PhpParser.Var, 0); } + public PropertyModifiersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_propertyModifiers; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterPropertyModifiers(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitPropertyModifiers(this); + } + } + + public final PropertyModifiersContext propertyModifiers() throws RecognitionException { + PropertyModifiersContext _localctx = new PropertyModifiersContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_propertyModifiers); + try { + setState(1107); + switch (_input.LA(1)) { + case Abstract: + case Final: + case Private: + case Protected: + case Public: + case Readonly: + case Static: + enterOuterAlt(_localctx, 1); + { + setState(1105); + memberModifiers(); + } + break; + case Var: + enterOuterAlt(_localctx, 2); + { + setState(1106); + match(Var); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MemberModifiersContext extends ParserRuleContext { + public List<MemberModifierContext> memberModifier() { + return getRuleContexts(MemberModifierContext.class); + } + public MemberModifierContext memberModifier(int i) { + return getRuleContext(MemberModifierContext.class,i); + } + public MemberModifiersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_memberModifiers; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMemberModifiers(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMemberModifiers(this); + } + } + + public final MemberModifiersContext memberModifiers() throws RecognitionException { + MemberModifiersContext _localctx = new MemberModifiersContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_memberModifiers); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1110); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1109); + memberModifier(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1112); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,124,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableInitializerContext extends ParserRuleContext { + public TerminalNode VarName() { return getToken(PhpParser.VarName, 0); } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public ConstantInitializerContext constantInitializer() { + return getRuleContext(ConstantInitializerContext.class,0); + } + public VariableInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterVariableInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitVariableInitializer(this); + } + } + + public final VariableInitializerContext variableInitializer() throws RecognitionException { + VariableInitializerContext _localctx = new VariableInitializerContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_variableInitializer); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1114); + match(VarName); + setState(1117); + _la = _input.LA(1); + if (_la==Eq) { + { + setState(1115); + match(Eq); + setState(1116); + constantInitializer(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierInitializerContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public ConstantInitializerContext constantInitializer() { + return getRuleContext(ConstantInitializerContext.class,0); + } + public IdentifierInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterIdentifierInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitIdentifierInitializer(this); + } + } + + public final IdentifierInitializerContext identifierInitializer() throws RecognitionException { + IdentifierInitializerContext _localctx = new IdentifierInitializerContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_identifierInitializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1119); + identifier(); + setState(1120); + match(Eq); + setState(1121); + constantInitializer(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GlobalConstantDeclarationContext extends ParserRuleContext { + public TerminalNode Const() { return getToken(PhpParser.Const, 0); } + public List<IdentifierInitializerContext> identifierInitializer() { + return getRuleContexts(IdentifierInitializerContext.class); + } + public IdentifierInitializerContext identifierInitializer(int i) { + return getRuleContext(IdentifierInitializerContext.class,i); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public GlobalConstantDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_globalConstantDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterGlobalConstantDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitGlobalConstantDeclaration(this); + } + } + + public final GlobalConstantDeclarationContext globalConstantDeclaration() throws RecognitionException { + GlobalConstantDeclarationContext _localctx = new GlobalConstantDeclarationContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_globalConstantDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1124); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(1123); + attributes(); + } + } + + setState(1126); + match(Const); + setState(1127); + identifierInitializer(); + setState(1132); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1128); + match(Comma); + setState(1129); + identifierInitializer(); + } + } + setState(1134); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1135); + match(SemiColon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumDeclarationContext extends ParserRuleContext { + public TerminalNode Enum_() { return getToken(PhpParser.Enum_, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public TerminalNode Colon() { return getToken(PhpParser.Colon, 0); } + public TerminalNode Implements() { return getToken(PhpParser.Implements, 0); } + public InterfaceListContext interfaceList() { + return getRuleContext(InterfaceListContext.class,0); + } + public List<EnumItemContext> enumItem() { + return getRuleContexts(EnumItemContext.class); + } + public EnumItemContext enumItem(int i) { + return getRuleContext(EnumItemContext.class,i); + } + public TerminalNode IntType() { return getToken(PhpParser.IntType, 0); } + public TerminalNode StringType() { return getToken(PhpParser.StringType, 0); } + public EnumDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumDeclaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterEnumDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitEnumDeclaration(this); + } + } + + public final EnumDeclarationContext enumDeclaration() throws RecognitionException { + EnumDeclarationContext _localctx = new EnumDeclarationContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_enumDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1137); + match(Enum_); + setState(1138); + identifier(); + setState(1141); + _la = _input.LA(1); + if (_la==Colon) { + { + setState(1139); + match(Colon); + setState(1140); + _la = _input.LA(1); + if ( !(_la==IntType || _la==StringType) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + + setState(1145); + _la = _input.LA(1); + if (_la==Implements) { + { + setState(1143); + match(Implements); + setState(1144); + interfaceList(); + } + } + + setState(1147); + match(OpenCurlyBracket); + setState(1151); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AttributeStart) | (1L << Abstract) | (1L << Case))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (Final - 77)) | (1L << (Function_ - 77)) | (1L << (Private - 77)) | (1L << (Protected - 77)) | (1L << (Public - 77)) | (1L << (Readonly - 77)) | (1L << (Static - 77)) | (1L << (Use - 77)))) != 0)) { + { + { + setState(1148); + enumItem(); + } + } + setState(1153); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1154); + match(CloseCurlyBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnumItemContext extends ParserRuleContext { + public TerminalNode Case() { return getToken(PhpParser.Case, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode SemiColon() { return getToken(PhpParser.SemiColon, 0); } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public FunctionDeclarationContext functionDeclaration() { + return getRuleContext(FunctionDeclarationContext.class,0); + } + public MemberModifiersContext memberModifiers() { + return getRuleContext(MemberModifiersContext.class,0); + } + public TerminalNode Use() { return getToken(PhpParser.Use, 0); } + public QualifiedNamespaceNameListContext qualifiedNamespaceNameList() { + return getRuleContext(QualifiedNamespaceNameListContext.class,0); + } + public TraitAdaptationsContext traitAdaptations() { + return getRuleContext(TraitAdaptationsContext.class,0); + } + public EnumItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enumItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterEnumItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitEnumItem(this); + } + } + + public final EnumItemContext enumItem() throws RecognitionException { + EnumItemContext _localctx = new EnumItemContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_enumItem); + int _la; + try { + setState(1172); + switch (_input.LA(1)) { + case Case: + enterOuterAlt(_localctx, 1); + { + setState(1156); + match(Case); + setState(1157); + identifier(); + setState(1160); + _la = _input.LA(1); + if (_la==Eq) { + { + setState(1158); + match(Eq); + setState(1159); + expression(0); + } + } + + setState(1162); + match(SemiColon); + } + break; + case AttributeStart: + case Abstract: + case Final: + case Function_: + case Private: + case Protected: + case Public: + case Readonly: + case Static: + enterOuterAlt(_localctx, 2); + { + setState(1165); + _la = _input.LA(1); + if (_la==Abstract || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (Final - 77)) | (1L << (Private - 77)) | (1L << (Protected - 77)) | (1L << (Public - 77)) | (1L << (Readonly - 77)) | (1L << (Static - 77)))) != 0)) { + { + setState(1164); + memberModifiers(); + } + } + + setState(1167); + functionDeclaration(); + } + break; + case Use: + enterOuterAlt(_localctx, 3); + { + setState(1168); + match(Use); + setState(1169); + qualifiedNamespaceNameList(); + setState(1170); + traitAdaptations(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionListContext extends ParserRuleContext { + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public ExpressionListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterExpressionList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitExpressionList(this); + } + } + + public final ExpressionListContext expressionList() throws RecognitionException { + ExpressionListContext _localctx = new ExpressionListContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_expressionList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1174); + expression(0); + setState(1179); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1175); + match(Comma); + setState(1176); + expression(0); + } + } + setState(1181); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParenthesesContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public YieldExpressionContext yieldExpression() { + return getRuleContext(YieldExpressionContext.class,0); + } + public ParenthesesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parentheses; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterParentheses(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitParentheses(this); + } + } + + public final ParenthesesContext parentheses() throws RecognitionException { + ParenthesesContext _localctx = new ParenthesesContext(_ctx, getState()); + enterRule(_localctx, 162, RULE_parentheses); + try { + enterOuterAlt(_localctx, 1); + { + setState(1182); + match(OpenRoundBracket); + setState(1185); + switch ( getInterpreter().adaptivePredict(_input,135,_ctx) ) { + case 1: + { + setState(1183); + expression(0); + } + break; + case 2: + { + setState(1184); + yieldExpression(); + } + break; + } + setState(1187); + match(CloseRoundBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + + public ExpressionContext() { } + public void copyFrom(ExpressionContext ctx) { + super.copyFrom(ctx); + } + } + public static class ChainExpressionContext extends ExpressionContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public ChainExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterChainExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitChainExpression(this); + } + } + public static class SpecialWordExpressionContext extends ExpressionContext { + public TerminalNode List() { return getToken(PhpParser.List, 0); } + public AssignmentListContext assignmentList() { + return getRuleContext(AssignmentListContext.class,0); + } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode Include() { return getToken(PhpParser.Include, 0); } + public TerminalNode IncludeOnce() { return getToken(PhpParser.IncludeOnce, 0); } + public TerminalNode Require() { return getToken(PhpParser.Require, 0); } + public TerminalNode RequireOnce() { return getToken(PhpParser.RequireOnce, 0); } + public TerminalNode Throw() { return getToken(PhpParser.Throw, 0); } + public TerminalNode Yield() { return getToken(PhpParser.Yield, 0); } + public TerminalNode IsSet() { return getToken(PhpParser.IsSet, 0); } + public ChainListContext chainList() { + return getRuleContext(ChainListContext.class,0); + } + public TerminalNode Empty() { return getToken(PhpParser.Empty, 0); } + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public TerminalNode Eval() { return getToken(PhpParser.Eval, 0); } + public TerminalNode Exit() { return getToken(PhpParser.Exit, 0); } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public SpecialWordExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterSpecialWordExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitSpecialWordExpression(this); + } + } + public static class ArrayCreationExpressionContext extends ExpressionContext { + public ArrayCreationContext arrayCreation() { + return getRuleContext(ArrayCreationContext.class,0); + } + public ArrayCreationExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArrayCreationExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArrayCreationExpression(this); + } + } + public static class BackQuoteStringExpressionContext extends ExpressionContext { + public TerminalNode BackQuoteString() { return getToken(PhpParser.BackQuoteString, 0); } + public BackQuoteStringExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterBackQuoteStringExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitBackQuoteStringExpression(this); + } + } + public static class MatchExpressionContext extends ExpressionContext { + public MatchExprContext matchExpr() { + return getRuleContext(MatchExprContext.class,0); + } + public MatchExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMatchExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMatchExpression(this); + } + } + public static class LogicalExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode LogicalAnd() { return getToken(PhpParser.LogicalAnd, 0); } + public TerminalNode LogicalXor() { return getToken(PhpParser.LogicalXor, 0); } + public TerminalNode LogicalOr() { return getToken(PhpParser.LogicalOr, 0); } + public LogicalExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterLogicalExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitLogicalExpression(this); + } + } + public static class PrintExpressionContext extends ExpressionContext { + public TerminalNode Print() { return getToken(PhpParser.Print, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public PrintExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterPrintExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitPrintExpression(this); + } + } + public static class AssignmentExpressionContext extends ExpressionContext { + public AssignableContext assignable() { + return getRuleContext(AssignableContext.class,0); + } + public AssignmentOperatorContext assignmentOperator() { + return getRuleContext(AssignmentOperatorContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public NewExprContext newExpr() { + return getRuleContext(NewExprContext.class,0); + } + public AssignmentExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAssignmentExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAssignmentExpression(this); + } + } + public static class PostfixIncDecExpressionContext extends ExpressionContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public PostfixIncDecExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterPostfixIncDecExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitPostfixIncDecExpression(this); + } + } + public static class CloneExpressionContext extends ExpressionContext { + public TerminalNode Clone() { return getToken(PhpParser.Clone, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public CloneExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterCloneExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitCloneExpression(this); + } + } + public static class UnaryOperatorExpressionContext extends ExpressionContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public UnaryOperatorExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterUnaryOperatorExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitUnaryOperatorExpression(this); + } + } + public static class NewExpressionContext extends ExpressionContext { + public NewExprContext newExpr() { + return getRuleContext(NewExprContext.class,0); + } + public NewExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNewExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNewExpression(this); + } + } + public static class ParenthesisExpressionContext extends ExpressionContext { + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public ParenthesisExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterParenthesisExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitParenthesisExpression(this); + } + } + public static class SpaceshipExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public SpaceshipExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterSpaceshipExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitSpaceshipExpression(this); + } + } + public static class ConditionalExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode QuestionMark() { return getToken(PhpParser.QuestionMark, 0); } + public ConditionalExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterConditionalExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitConditionalExpression(this); + } + } + public static class NullCoalescingExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public NullCoalescingExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNullCoalescingExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNullCoalescingExpression(this); + } + } + public static class ArithmeticExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode Divide() { return getToken(PhpParser.Divide, 0); } + public ArithmeticExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArithmeticExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArithmeticExpression(this); + } + } + public static class IndexerExpressionContext extends ExpressionContext { + public StringConstantContext stringConstant() { + return getRuleContext(StringConstantContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IndexerExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterIndexerExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitIndexerExpression(this); + } + } + public static class ScalarExpressionContext extends ExpressionContext { + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TerminalNode Label() { return getToken(PhpParser.Label, 0); } + public ScalarExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterScalarExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitScalarExpression(this); + } + } + public static class PrefixIncDecExpressionContext extends ExpressionContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public PrefixIncDecExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterPrefixIncDecExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitPrefixIncDecExpression(this); + } + } + public static class ComparisonExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode Less() { return getToken(PhpParser.Less, 0); } + public TerminalNode Greater() { return getToken(PhpParser.Greater, 0); } + public TerminalNode IsNotEq() { return getToken(PhpParser.IsNotEq, 0); } + public ComparisonExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterComparisonExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitComparisonExpression(this); + } + } + public static class CastExpressionContext extends ExpressionContext { + public CastOperationContext castOperation() { + return getRuleContext(CastOperationContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public CastExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterCastExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitCastExpression(this); + } + } + public static class InstanceOfExpressionContext extends ExpressionContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode InstanceOf() { return getToken(PhpParser.InstanceOf, 0); } + public TypeRefContext typeRef() { + return getRuleContext(TypeRefContext.class,0); + } + public InstanceOfExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInstanceOfExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInstanceOfExpression(this); + } + } + public static class ArrayDestructExpressionContext extends ExpressionContext { + public ArrayDestructuringContext arrayDestructuring() { + return getRuleContext(ArrayDestructuringContext.class,0); + } + public TerminalNode Eq() { return getToken(PhpParser.Eq, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ArrayDestructExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArrayDestructExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArrayDestructExpression(this); + } + } + public static class LambdaFunctionExpressionContext extends ExpressionContext { + public LambdaFunctionExprContext lambdaFunctionExpr() { + return getRuleContext(LambdaFunctionExprContext.class,0); + } + public LambdaFunctionExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterLambdaFunctionExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitLambdaFunctionExpression(this); + } + } + public static class BitwiseExpressionContext extends ExpressionContext { + public Token op; + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public BitwiseExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterBitwiseExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitBitwiseExpression(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + return expression(0); + } + + private ExpressionContext expression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); + ExpressionContext _prevctx = _localctx; + int _startState = 164; + enterRecursionRule(_localctx, 164, RULE_expression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1279); + switch ( getInterpreter().adaptivePredict(_input,140,_ctx) ) { + case 1: + { + _localctx = new CloneExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(1190); + match(Clone); + setState(1191); + expression(48); + } + break; + case 2: + { + _localctx = new CastExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1192); + match(OpenRoundBracket); + setState(1193); + castOperation(); + setState(1194); + match(CloseRoundBracket); + setState(1195); + expression(45); + } + break; + case 3: + { + _localctx = new UnaryOperatorExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1197); + _la = _input.LA(1); + if ( !(_la==Tilde || _la==SuppressWarnings) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1198); + expression(44); + } + break; + case 4: + { + _localctx = new UnaryOperatorExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1199); + _la = _input.LA(1); + if ( !(((((_la - 200)) & ~0x3f) == 0 && ((1L << (_la - 200)) & ((1L << (Bang - 200)) | (1L << (Plus - 200)) | (1L << (Minus - 200)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1200); + expression(43); + } + break; + case 5: + { + _localctx = new PrintExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1201); + match(Print); + setState(1202); + expression(40); + } + break; + case 6: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1203); + match(List); + setState(1204); + match(OpenRoundBracket); + setState(1205); + assignmentList(); + setState(1206); + match(CloseRoundBracket); + setState(1207); + match(Eq); + setState(1208); + expression(31); + } + break; + case 7: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1210); + _la = _input.LA(1); + if ( !(_la==Include || _la==IncludeOnce) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1211); + expression(26); + } + break; + case 8: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1212); + _la = _input.LA(1); + if ( !(_la==Require || _la==RequireOnce) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1213); + expression(25); + } + break; + case 9: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1214); + match(Throw); + setState(1215); + expression(7); + } + break; + case 10: + { + _localctx = new ArrayDestructExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1216); + arrayDestructuring(); + setState(1217); + match(Eq); + setState(1218); + expression(6); + } + break; + case 11: + { + _localctx = new AssignmentExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1220); + assignable(); + setState(1221); + assignmentOperator(); + setState(1223); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(1222); + attributes(); + } + } + + setState(1225); + expression(5); + } + break; + case 12: + { + _localctx = new NewExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1227); + newExpr(); + } + break; + case 13: + { + _localctx = new IndexerExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1228); + stringConstant(); + setState(1229); + match(OpenSquareBracket); + setState(1230); + expression(0); + setState(1231); + match(CloseSquareBracket); + } + break; + case 14: + { + _localctx = new PrefixIncDecExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1233); + _la = _input.LA(1); + if ( !(_la==Inc || _la==Dec) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1234); + chain(); + } + break; + case 15: + { + _localctx = new PostfixIncDecExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1235); + chain(); + setState(1236); + _la = _input.LA(1); + if ( !(_la==Inc || _la==Dec) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + break; + case 16: + { + _localctx = new ArrayCreationExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1238); + arrayCreation(); + } + break; + case 17: + { + _localctx = new ChainExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1239); + chain(); + } + break; + case 18: + { + _localctx = new ScalarExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1240); + constant(); + } + break; + case 19: + { + _localctx = new ScalarExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1241); + string(); + } + break; + case 20: + { + _localctx = new ScalarExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1242); + match(Label); + } + break; + case 21: + { + _localctx = new BackQuoteStringExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1243); + match(BackQuoteString); + } + break; + case 22: + { + _localctx = new ParenthesisExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1244); + parentheses(); + } + break; + case 23: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1245); + match(Yield); + } + break; + case 24: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1246); + match(IsSet); + setState(1247); + match(OpenRoundBracket); + setState(1248); + chainList(); + setState(1249); + match(CloseRoundBracket); + } + break; + case 25: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1251); + match(Empty); + setState(1252); + match(OpenRoundBracket); + setState(1253); + chain(); + setState(1254); + match(CloseRoundBracket); + } + break; + case 26: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1256); + match(Eval); + setState(1257); + match(OpenRoundBracket); + setState(1258); + expression(0); + setState(1259); + match(CloseRoundBracket); + } + break; + case 27: + { + _localctx = new SpecialWordExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1261); + match(Exit); + setState(1265); + switch ( getInterpreter().adaptivePredict(_input,137,_ctx) ) { + case 1: + { + setState(1262); + match(OpenRoundBracket); + setState(1263); + match(CloseRoundBracket); + } + break; + case 2: + { + setState(1264); + parentheses(); + } + break; + } + } + break; + case 28: + { + _localctx = new LambdaFunctionExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1267); + lambdaFunctionExpr(); + } + break; + case 29: + { + _localctx = new MatchExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1268); + matchExpr(); + } + break; + case 30: + { + _localctx = new AssignmentExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(1269); + assignable(); + setState(1270); + match(Eq); + setState(1272); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(1271); + attributes(); + } + } + + setState(1274); + match(Ampersand); + setState(1277); + switch ( getInterpreter().adaptivePredict(_input,139,_ctx) ) { + case 1: + { + setState(1275); + chain(); + } + break; + case 2: + { + setState(1276); + newExpr(); + } + break; + } + } + break; + } + _ctx.stop = _input.LT(-1); + setState(1341); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,143,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(1339); + switch ( getInterpreter().adaptivePredict(_input,142,_ctx) ) { + case 1: + { + _localctx = new ArithmeticExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1281); + if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)"); + setState(1282); + ((ArithmeticExpressionContext)_localctx).op = match(Pow); + setState(1283); + expression(22); + } + break; + case 2: + { + _localctx = new ArithmeticExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1284); + if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)"); + setState(1285); + ((ArithmeticExpressionContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (Asterisk - 204)) | (1L << (Percent - 204)) | (1L << (Divide - 204)))) != 0)) ) { + ((ArithmeticExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } else { + consume(); + } + setState(1286); + expression(21); + } + break; + case 3: + { + _localctx = new ArithmeticExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1287); + if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)"); + setState(1288); + ((ArithmeticExpressionContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (Plus - 202)) | (1L << (Minus - 202)) | (1L << (Dot - 202)))) != 0)) ) { + ((ArithmeticExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } else { + consume(); + } + setState(1289); + expression(20); + } + break; + case 4: + { + _localctx = new ComparisonExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1290); + if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)"); + setState(1291); + ((ComparisonExpressionContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ShiftLeft || _la==ShiftRight) ) { + ((ComparisonExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } else { + consume(); + } + setState(1292); + expression(19); + } + break; + case 5: + { + _localctx = new ComparisonExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1293); + if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)"); + setState(1294); + ((ComparisonExpressionContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 171)) & ~0x3f) == 0 && ((1L << (_la - 171)) & ((1L << (IsSmallerOrEqual - 171)) | (1L << (IsGreaterOrEqual - 171)) | (1L << (Less - 171)) | (1L << (Greater - 171)))) != 0)) ) { + ((ComparisonExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } else { + consume(); + } + setState(1295); + expression(18); + } + break; + case 6: + { + _localctx = new ComparisonExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1296); + if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); + setState(1297); + ((ComparisonExpressionContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 167)) & ~0x3f) == 0 && ((1L << (_la - 167)) & ((1L << (IsIdentical - 167)) | (1L << (IsNoidentical - 167)) | (1L << (IsEqual - 167)) | (1L << (IsNotEq - 167)))) != 0)) ) { + ((ComparisonExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } else { + consume(); + } + setState(1298); + expression(17); + } + break; + case 7: + { + _localctx = new BitwiseExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1299); + if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); + setState(1300); + ((BitwiseExpressionContext)_localctx).op = match(Ampersand); + setState(1301); + expression(16); + } + break; + case 8: + { + _localctx = new BitwiseExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1302); + if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); + setState(1303); + ((BitwiseExpressionContext)_localctx).op = match(Caret); + setState(1304); + expression(15); + } + break; + case 9: + { + _localctx = new BitwiseExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1305); + if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); + setState(1306); + ((BitwiseExpressionContext)_localctx).op = match(Pipe); + setState(1307); + expression(14); + } + break; + case 10: + { + _localctx = new BitwiseExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1308); + if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); + setState(1309); + ((BitwiseExpressionContext)_localctx).op = match(BooleanAnd); + setState(1310); + expression(13); + } + break; + case 11: + { + _localctx = new BitwiseExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1311); + if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); + setState(1312); + ((BitwiseExpressionContext)_localctx).op = match(BooleanOr); + setState(1313); + expression(12); + } + break; + case 12: + { + _localctx = new ConditionalExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1314); + if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); + setState(1315); + ((ConditionalExpressionContext)_localctx).op = match(QuestionMark); + setState(1317); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1316); + expression(0); + } + } + + setState(1319); + match(Colon); + setState(1320); + expression(11); + } + break; + case 13: + { + _localctx = new NullCoalescingExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1321); + if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); + setState(1322); + ((NullCoalescingExpressionContext)_localctx).op = match(NullCoalescing); + setState(1323); + expression(10); + } + break; + case 14: + { + _localctx = new SpaceshipExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1324); + if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); + setState(1325); + ((SpaceshipExpressionContext)_localctx).op = match(Spaceship); + setState(1326); + expression(9); + } + break; + case 15: + { + _localctx = new LogicalExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1327); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(1328); + ((LogicalExpressionContext)_localctx).op = match(LogicalAnd); + setState(1329); + expression(4); + } + break; + case 16: + { + _localctx = new LogicalExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1330); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(1331); + ((LogicalExpressionContext)_localctx).op = match(LogicalXor); + setState(1332); + expression(3); + } + break; + case 17: + { + _localctx = new LogicalExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1333); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(1334); + ((LogicalExpressionContext)_localctx).op = match(LogicalOr); + setState(1335); + expression(2); + } + break; + case 18: + { + _localctx = new InstanceOfExpressionContext(new ExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(1336); + if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)"); + setState(1337); + match(InstanceOf); + setState(1338); + typeRef(); + } + break; + } + } + } + setState(1343); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,143,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class AssignableContext extends ParserRuleContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public ArrayCreationContext arrayCreation() { + return getRuleContext(ArrayCreationContext.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 PhpParserListener ) ((PhpParserListener)listener).enterAssignable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAssignable(this); + } + } + + public final AssignableContext assignable() throws RecognitionException { + AssignableContext _localctx = new AssignableContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_assignable); + try { + setState(1346); + switch ( getInterpreter().adaptivePredict(_input,144,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1344); + chain(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1345); + arrayCreation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayCreationContext extends ParserRuleContext { + public TerminalNode Array() { return getToken(PhpParser.Array, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ArrayItemListContext arrayItemList() { + return getRuleContext(ArrayItemListContext.class,0); + } + public ArrayCreationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayCreation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArrayCreation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArrayCreation(this); + } + } + + public final ArrayCreationContext arrayCreation() throws RecognitionException { + ArrayCreationContext _localctx = new ArrayCreationContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_arrayCreation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1359); + switch (_input.LA(1)) { + case Array: + { + setState(1348); + match(Array); + setState(1349); + match(OpenRoundBracket); + setState(1351); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ampersand - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1350); + arrayItemList(); + } + } + + setState(1353); + match(CloseRoundBracket); + } + break; + case OpenSquareBracket: + { + setState(1354); + match(OpenSquareBracket); + setState(1356); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ampersand - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1355); + arrayItemList(); + } + } + + setState(1358); + match(CloseSquareBracket); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1365); + switch ( getInterpreter().adaptivePredict(_input,148,_ctx) ) { + case 1: + { + setState(1361); + match(OpenSquareBracket); + setState(1362); + expression(0); + setState(1363); + match(CloseSquareBracket); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayDestructuringContext extends ParserRuleContext { + public List<IndexedDestructItemContext> indexedDestructItem() { + return getRuleContexts(IndexedDestructItemContext.class); + } + public IndexedDestructItemContext indexedDestructItem(int i) { + return getRuleContext(IndexedDestructItemContext.class,i); + } + public List<KeyedDestructItemContext> keyedDestructItem() { + return getRuleContexts(KeyedDestructItemContext.class); + } + public KeyedDestructItemContext keyedDestructItem(int i) { + return getRuleContext(KeyedDestructItemContext.class,i); + } + public ArrayDestructuringContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayDestructuring; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArrayDestructuring(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArrayDestructuring(this); + } + } + + public final ArrayDestructuringContext arrayDestructuring() throws RecognitionException { + ArrayDestructuringContext _localctx = new ArrayDestructuringContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_arrayDestructuring); + int _la; + try { + int _alt; + setState(1412); + switch ( getInterpreter().adaptivePredict(_input,156,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1367); + match(OpenSquareBracket); + setState(1371); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1368); + match(Comma); + } + } + setState(1373); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1374); + indexedDestructItem(); + setState(1383); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,151,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1376); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1375); + match(Comma); + } + } + setState(1378); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==Comma ); + setState(1380); + indexedDestructItem(); + } + } + } + setState(1385); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,151,_ctx); + } + setState(1389); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1386); + match(Comma); + } + } + setState(1391); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1392); + match(CloseSquareBracket); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1394); + match(OpenSquareBracket); + setState(1395); + keyedDestructItem(); + setState(1404); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,154,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1397); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1396); + match(Comma); + } + } + setState(1399); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==Comma ); + setState(1401); + keyedDestructItem(); + } + } + } + setState(1406); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,154,_ctx); + } + setState(1408); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(1407); + match(Comma); + } + } + + setState(1410); + match(CloseSquareBracket); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IndexedDestructItemContext extends ParserRuleContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public IndexedDestructItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_indexedDestructItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterIndexedDestructItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitIndexedDestructItem(this); + } + } + + public final IndexedDestructItemContext indexedDestructItem() throws RecognitionException { + IndexedDestructItemContext _localctx = new IndexedDestructItemContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_indexedDestructItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1415); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(1414); + match(Ampersand); + } + } + + setState(1417); + chain(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeyedDestructItemContext extends ParserRuleContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public KeyedDestructItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_keyedDestructItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterKeyedDestructItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitKeyedDestructItem(this); + } + } + + public final KeyedDestructItemContext keyedDestructItem() throws RecognitionException { + KeyedDestructItemContext _localctx = new KeyedDestructItemContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_keyedDestructItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1422); + switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) { + case 1: + { + setState(1419); + expression(0); + setState(1420); + match(DoubleArrow); + } + break; + } + setState(1425); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(1424); + match(Ampersand); + } + } + + setState(1427); + chain(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LambdaFunctionExprContext extends ParserRuleContext { + public TerminalNode Function_() { return getToken(PhpParser.Function_, 0); } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public BlockStatementContext blockStatement() { + return getRuleContext(BlockStatementContext.class,0); + } + public TerminalNode Static() { return getToken(PhpParser.Static, 0); } + public LambdaFunctionUseVarsContext lambdaFunctionUseVars() { + return getRuleContext(LambdaFunctionUseVarsContext.class,0); + } + public TypeHintContext typeHint() { + return getRuleContext(TypeHintContext.class,0); + } + public TerminalNode LambdaFn() { return getToken(PhpParser.LambdaFn, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public LambdaFunctionExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaFunctionExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterLambdaFunctionExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitLambdaFunctionExpr(this); + } + } + + public final LambdaFunctionExprContext lambdaFunctionExpr() throws RecognitionException { + LambdaFunctionExprContext _localctx = new LambdaFunctionExprContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_lambdaFunctionExpr); + int _la; + try { + setState(1455); + switch (_input.LA(1)) { + case Function_: + case Static: + enterOuterAlt(_localctx, 1); + { + setState(1430); + _la = _input.LA(1); + if (_la==Static) { + { + setState(1429); + match(Static); + } + } + + setState(1432); + match(Function_); + setState(1434); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(1433); + match(Ampersand); + } + } + + setState(1436); + match(OpenRoundBracket); + setState(1437); + formalParameterList(); + setState(1438); + match(CloseRoundBracket); + setState(1440); + _la = _input.LA(1); + if (_la==Use) { + { + setState(1439); + lambdaFunctionUseVars(); + } + } + + setState(1444); + _la = _input.LA(1); + if (_la==Colon) { + { + setState(1442); + match(Colon); + setState(1443); + typeHint(0); + } + } + + setState(1446); + blockStatement(); + } + break; + case LambdaFn: + enterOuterAlt(_localctx, 2); + { + setState(1448); + match(LambdaFn); + setState(1449); + match(OpenRoundBracket); + setState(1450); + formalParameterList(); + setState(1451); + match(CloseRoundBracket); + setState(1452); + match(DoubleArrow); + setState(1453); + expression(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MatchExprContext extends ParserRuleContext { + public TerminalNode Match_() { return getToken(PhpParser.Match_, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public List<MatchItemContext> matchItem() { + return getRuleContexts(MatchItemContext.class); + } + public MatchItemContext matchItem(int i) { + return getRuleContext(MatchItemContext.class,i); + } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public MatchExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_matchExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMatchExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMatchExpr(this); + } + } + + public final MatchExprContext matchExpr() throws RecognitionException { + MatchExprContext _localctx = new MatchExprContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_matchExpr); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1457); + match(Match_); + setState(1458); + match(OpenRoundBracket); + setState(1459); + expression(0); + setState(1460); + match(CloseRoundBracket); + setState(1461); + match(OpenCurlyBracket); + setState(1462); + matchItem(); + setState(1467); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,165,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1463); + match(Comma); + setState(1464); + matchItem(); + } + } + } + setState(1469); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,165,_ctx); + } + setState(1471); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(1470); + match(Comma); + } + } + + setState(1473); + match(CloseCurlyBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MatchItemContext extends ParserRuleContext { + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public MatchItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_matchItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMatchItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMatchItem(this); + } + } + + public final MatchItemContext matchItem() throws RecognitionException { + MatchItemContext _localctx = new MatchItemContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_matchItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1475); + expression(0); + setState(1480); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1476); + match(Comma); + setState(1477); + expression(0); + } + } + setState(1482); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1483); + match(DoubleArrow); + setState(1484); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NewExprContext extends ParserRuleContext { + public TerminalNode New() { return getToken(PhpParser.New, 0); } + public TypeRefContext typeRef() { + return getRuleContext(TypeRefContext.class,0); + } + public ArgumentsContext arguments() { + return getRuleContext(ArgumentsContext.class,0); + } + public NewExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_newExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNewExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNewExpr(this); + } + } + + public final NewExprContext newExpr() throws RecognitionException { + NewExprContext _localctx = new NewExprContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_newExpr); + try { + enterOuterAlt(_localctx, 1); + { + setState(1486); + match(New); + setState(1487); + typeRef(); + setState(1489); + switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) { + case 1: + { + setState(1488); + arguments(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentOperatorContext extends ParserRuleContext { + public TerminalNode Eq() { return getToken(PhpParser.Eq, 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 PhpParserListener ) ((PhpParserListener)listener).enterAssignmentOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAssignmentOperator(this); + } + } + + public final AssignmentOperatorContext assignmentOperator() throws RecognitionException { + AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_assignmentOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1491); + _la = _input.LA(1); + if ( !(((((_la - 173)) & ~0x3f) == 0 && ((1L << (_la - 173)) & ((1L << (PlusEqual - 173)) | (1L << (MinusEqual - 173)) | (1L << (MulEqual - 173)) | (1L << (PowEqual - 173)) | (1L << (DivEqual - 173)) | (1L << (Concaequal - 173)) | (1L << (ModEqual - 173)) | (1L << (ShiftLeftEqual - 173)) | (1L << (ShiftRightEqual - 173)) | (1L << (AndEqual - 173)) | (1L << (OrEqual - 173)) | (1L << (XorEqual - 173)) | (1L << (NullCoalescingEqual - 173)) | (1L << (Eq - 173)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class YieldExpressionContext extends ParserRuleContext { + public TerminalNode Yield() { return getToken(PhpParser.Yield, 0); } + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode From() { return getToken(PhpParser.From, 0); } + public YieldExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_yieldExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterYieldExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitYieldExpression(this); + } + } + + public final YieldExpressionContext yieldExpression() throws RecognitionException { + YieldExpressionContext _localctx = new YieldExpressionContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_yieldExpression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1493); + match(Yield); + setState(1501); + switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) { + case 1: + { + setState(1494); + expression(0); + setState(1497); + _la = _input.LA(1); + if (_la==DoubleArrow) { + { + setState(1495); + match(DoubleArrow); + setState(1496); + expression(0); + } + } + + } + break; + case 2: + { + setState(1499); + match(From); + setState(1500); + expression(0); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayItemListContext extends ParserRuleContext { + public List<ArrayItemContext> arrayItem() { + return getRuleContexts(ArrayItemContext.class); + } + public ArrayItemContext arrayItem(int i) { + return getRuleContext(ArrayItemContext.class,i); + } + public ArrayItemListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayItemList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArrayItemList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArrayItemList(this); + } + } + + public final ArrayItemListContext arrayItemList() throws RecognitionException { + ArrayItemListContext _localctx = new ArrayItemListContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_arrayItemList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1503); + arrayItem(); + setState(1508); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,171,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1504); + match(Comma); + setState(1505); + arrayItem(); + } + } + } + setState(1510); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,171,_ctx); + } + setState(1512); + switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) { + case 1: + { + setState(1511); + match(Comma); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayItemContext extends ParserRuleContext { + public List<ExpressionContext> expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public ArrayItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArrayItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArrayItem(this); + } + } + + public final ArrayItemContext arrayItem() throws RecognitionException { + ArrayItemContext _localctx = new ArrayItemContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_arrayItem); + int _la; + try { + setState(1526); + switch ( getInterpreter().adaptivePredict(_input,175,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1514); + expression(0); + setState(1517); + _la = _input.LA(1); + if (_la==DoubleArrow) { + { + setState(1515); + match(DoubleArrow); + setState(1516); + expression(0); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1522); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1519); + expression(0); + setState(1520); + match(DoubleArrow); + } + } + + setState(1524); + match(Ampersand); + setState(1525); + chain(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LambdaFunctionUseVarsContext extends ParserRuleContext { + public TerminalNode Use() { return getToken(PhpParser.Use, 0); } + public List<LambdaFunctionUseVarContext> lambdaFunctionUseVar() { + return getRuleContexts(LambdaFunctionUseVarContext.class); + } + public LambdaFunctionUseVarContext lambdaFunctionUseVar(int i) { + return getRuleContext(LambdaFunctionUseVarContext.class,i); + } + public LambdaFunctionUseVarsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaFunctionUseVars; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterLambdaFunctionUseVars(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitLambdaFunctionUseVars(this); + } + } + + public final LambdaFunctionUseVarsContext lambdaFunctionUseVars() throws RecognitionException { + LambdaFunctionUseVarsContext _localctx = new LambdaFunctionUseVarsContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_lambdaFunctionUseVars); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1528); + match(Use); + setState(1529); + match(OpenRoundBracket); + setState(1530); + lambdaFunctionUseVar(); + setState(1535); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1531); + match(Comma); + setState(1532); + lambdaFunctionUseVar(); + } + } + setState(1537); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1538); + match(CloseRoundBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LambdaFunctionUseVarContext extends ParserRuleContext { + public TerminalNode VarName() { return getToken(PhpParser.VarName, 0); } + public LambdaFunctionUseVarContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaFunctionUseVar; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterLambdaFunctionUseVar(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitLambdaFunctionUseVar(this); + } + } + + public final LambdaFunctionUseVarContext lambdaFunctionUseVar() throws RecognitionException { + LambdaFunctionUseVarContext _localctx = new LambdaFunctionUseVarContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_lambdaFunctionUseVar); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1541); + _la = _input.LA(1); + if (_la==Ampersand) { + { + setState(1540); + match(Ampersand); + } + } + + setState(1543); + match(VarName); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QualifiedStaticTypeRefContext extends ParserRuleContext { + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public GenericDynamicArgsContext genericDynamicArgs() { + return getRuleContext(GenericDynamicArgsContext.class,0); + } + public TerminalNode Static() { return getToken(PhpParser.Static, 0); } + public QualifiedStaticTypeRefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedStaticTypeRef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterQualifiedStaticTypeRef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitQualifiedStaticTypeRef(this); + } + } + + public final QualifiedStaticTypeRefContext qualifiedStaticTypeRef() throws RecognitionException { + QualifiedStaticTypeRefContext _localctx = new QualifiedStaticTypeRefContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_qualifiedStaticTypeRef); + try { + setState(1550); + switch ( getInterpreter().adaptivePredict(_input,179,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1545); + qualifiedNamespaceName(); + setState(1547); + switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) { + case 1: + { + setState(1546); + genericDynamicArgs(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1549); + match(Static); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeRefContext extends ParserRuleContext { + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public IndirectTypeRefContext indirectTypeRef() { + return getRuleContext(IndirectTypeRefContext.class,0); + } + public GenericDynamicArgsContext genericDynamicArgs() { + return getRuleContext(GenericDynamicArgsContext.class,0); + } + public PrimitiveTypeContext primitiveType() { + return getRuleContext(PrimitiveTypeContext.class,0); + } + public TerminalNode Static() { return getToken(PhpParser.Static, 0); } + public AnonymousClassContext anonymousClass() { + return getRuleContext(AnonymousClassContext.class,0); + } + public TypeRefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeRef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterTypeRef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitTypeRef(this); + } + } + + public final TypeRefContext typeRef() throws RecognitionException { + TypeRefContext _localctx = new TypeRefContext(_ctx, getState()); + enterRule(_localctx, 198, RULE_typeRef); + try { + setState(1562); + switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1554); + switch ( getInterpreter().adaptivePredict(_input,180,_ctx) ) { + case 1: + { + setState(1552); + qualifiedNamespaceName(); + } + break; + case 2: + { + setState(1553); + indirectTypeRef(); + } + break; + } + setState(1557); + switch ( getInterpreter().adaptivePredict(_input,181,_ctx) ) { + case 1: + { + setState(1556); + genericDynamicArgs(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1559); + primitiveType(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1560); + match(Static); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1561); + anonymousClass(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AnonymousClassContext extends ParserRuleContext { + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public ClassEntryTypeContext classEntryType() { + return getRuleContext(ClassEntryTypeContext.class,0); + } + public TerminalNode Interface() { return getToken(PhpParser.Interface, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode Private() { return getToken(PhpParser.Private, 0); } + public ModifierContext modifier() { + return getRuleContext(ModifierContext.class,0); + } + public TerminalNode Partial() { return getToken(PhpParser.Partial, 0); } + public List<ClassStatementContext> classStatement() { + return getRuleContexts(ClassStatementContext.class); + } + public ClassStatementContext classStatement(int i) { + return getRuleContext(ClassStatementContext.class,i); + } + public TypeParameterListInBracketsContext typeParameterListInBrackets() { + return getRuleContext(TypeParameterListInBracketsContext.class,0); + } + public TerminalNode Extends() { return getToken(PhpParser.Extends, 0); } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef() { + return getRuleContext(QualifiedStaticTypeRefContext.class,0); + } + public TerminalNode Implements() { return getToken(PhpParser.Implements, 0); } + public InterfaceListContext interfaceList() { + return getRuleContext(InterfaceListContext.class,0); + } + public AnonymousClassContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_anonymousClass; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAnonymousClass(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAnonymousClass(this); + } + } + + public final AnonymousClassContext anonymousClass() throws RecognitionException { + AnonymousClassContext _localctx = new AnonymousClassContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_anonymousClass); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1565); + _la = _input.LA(1); + if (_la==AttributeStart) { + { + setState(1564); + attributes(); + } + } + + setState(1568); + _la = _input.LA(1); + if (_la==Private) { + { + setState(1567); + match(Private); + } + } + + setState(1571); + _la = _input.LA(1); + if (_la==Abstract || _la==Final) { + { + setState(1570); + modifier(); + } + } + + setState(1574); + _la = _input.LA(1); + if (_la==Partial) { + { + setState(1573); + match(Partial); + } + } + + setState(1597); + switch (_input.LA(1)) { + case Class: + case Trait: + { + setState(1576); + classEntryType(); + setState(1578); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(1577); + typeParameterListInBrackets(); + } + } + + setState(1582); + _la = _input.LA(1); + if (_la==Extends) { + { + setState(1580); + match(Extends); + setState(1581); + qualifiedStaticTypeRef(); + } + } + + setState(1586); + _la = _input.LA(1); + if (_la==Implements) { + { + setState(1584); + match(Implements); + setState(1585); + interfaceList(); + } + } + + } + break; + case Interface: + { + setState(1588); + match(Interface); + setState(1589); + identifier(); + setState(1591); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(1590); + typeParameterListInBrackets(); + } + } + + setState(1595); + _la = _input.LA(1); + if (_la==Extends) { + { + setState(1593); + match(Extends); + setState(1594); + interfaceList(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + setState(1599); + match(OpenCurlyBracket); + setState(1603); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AttributeStart) | (1L << Abstract) | (1L << Const))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (Final - 77)) | (1L << (Function_ - 77)) | (1L << (Private - 77)) | (1L << (Protected - 77)) | (1L << (Public - 77)) | (1L << (Readonly - 77)) | (1L << (Static - 77)) | (1L << (Use - 77)) | (1L << (Var - 77)))) != 0)) { + { + { + setState(1600); + classStatement(); + } + } + setState(1605); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1606); + match(CloseCurlyBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IndirectTypeRefContext extends ParserRuleContext { + public ChainBaseContext chainBase() { + return getRuleContext(ChainBaseContext.class,0); + } + public List<KeyedFieldNameContext> keyedFieldName() { + return getRuleContexts(KeyedFieldNameContext.class); + } + public KeyedFieldNameContext keyedFieldName(int i) { + return getRuleContext(KeyedFieldNameContext.class,i); + } + public IndirectTypeRefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_indirectTypeRef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterIndirectTypeRef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitIndirectTypeRef(this); + } + } + + public final IndirectTypeRefContext indirectTypeRef() throws RecognitionException { + IndirectTypeRefContext _localctx = new IndirectTypeRefContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_indirectTypeRef); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1608); + chainBase(); + setState(1613); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,194,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1609); + match(ObjectOperator); + setState(1610); + keyedFieldName(); + } + } + } + setState(1615); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,194,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QualifiedNamespaceNameContext extends ParserRuleContext { + public NamespaceNameListContext namespaceNameList() { + return getRuleContext(NamespaceNameListContext.class,0); + } + public TerminalNode Namespace() { return getToken(PhpParser.Namespace, 0); } + public QualifiedNamespaceNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedNamespaceName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterQualifiedNamespaceName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitQualifiedNamespaceName(this); + } + } + + public final QualifiedNamespaceNameContext qualifiedNamespaceName() throws RecognitionException { + QualifiedNamespaceNameContext _localctx = new QualifiedNamespaceNameContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_qualifiedNamespaceName); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1617); + switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) { + case 1: + { + setState(1616); + match(Namespace); + } + break; + } + setState(1620); + _la = _input.LA(1); + if (_la==NamespaceSeparator) { + { + setState(1619); + match(NamespaceSeparator); + } + } + + setState(1622); + namespaceNameList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamespaceNameListContext extends ParserRuleContext { + public List<IdentifierContext> identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public NamespaceNameTailContext namespaceNameTail() { + return getRuleContext(NamespaceNameTailContext.class,0); + } + public NamespaceNameListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namespaceNameList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNamespaceNameList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNamespaceNameList(this); + } + } + + public final NamespaceNameListContext namespaceNameList() throws RecognitionException { + NamespaceNameListContext _localctx = new NamespaceNameListContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_namespaceNameList); + try { + int _alt; + setState(1637); + switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1624); + identifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1625); + identifier(); + setState(1630); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,197,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1626); + match(NamespaceSeparator); + setState(1627); + identifier(); + } + } + } + setState(1632); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,197,_ctx); + } + setState(1635); + switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) { + case 1: + { + setState(1633); + match(NamespaceSeparator); + setState(1634); + namespaceNameTail(); + } + break; + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamespaceNameTailContext extends ParserRuleContext { + public List<IdentifierContext> identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode As() { return getToken(PhpParser.As, 0); } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public List<NamespaceNameTailContext> namespaceNameTail() { + return getRuleContexts(NamespaceNameTailContext.class); + } + public NamespaceNameTailContext namespaceNameTail(int i) { + return getRuleContext(NamespaceNameTailContext.class,i); + } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public NamespaceNameTailContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namespaceNameTail; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNamespaceNameTail(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNamespaceNameTail(this); + } + } + + public final NamespaceNameTailContext namespaceNameTail() throws RecognitionException { + NamespaceNameTailContext _localctx = new NamespaceNameTailContext(_ctx, getState()); + enterRule(_localctx, 208, RULE_namespaceNameTail); + int _la; + try { + int _alt; + setState(1658); + switch (_input.LA(1)) { + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Label: + enterOuterAlt(_localctx, 1); + { + setState(1639); + identifier(); + setState(1642); + switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) { + case 1: + { + setState(1640); + match(As); + setState(1641); + identifier(); + } + break; + } + } + break; + case OpenCurlyBracket: + enterOuterAlt(_localctx, 2); + { + setState(1644); + match(OpenCurlyBracket); + setState(1645); + namespaceNameTail(); + setState(1650); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,201,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1646); + match(Comma); + setState(1647); + namespaceNameTail(); + } + } + } + setState(1652); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,201,_ctx); + } + setState(1654); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(1653); + match(Comma); + } + } + + setState(1656); + match(CloseCurlyBracket); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QualifiedNamespaceNameListContext extends ParserRuleContext { + public List<QualifiedNamespaceNameContext> qualifiedNamespaceName() { + return getRuleContexts(QualifiedNamespaceNameContext.class); + } + public QualifiedNamespaceNameContext qualifiedNamespaceName(int i) { + return getRuleContext(QualifiedNamespaceNameContext.class,i); + } + public QualifiedNamespaceNameListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedNamespaceNameList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterQualifiedNamespaceNameList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitQualifiedNamespaceNameList(this); + } + } + + public final QualifiedNamespaceNameListContext qualifiedNamespaceNameList() throws RecognitionException { + QualifiedNamespaceNameListContext _localctx = new QualifiedNamespaceNameListContext(_ctx, getState()); + enterRule(_localctx, 210, RULE_qualifiedNamespaceNameList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1660); + qualifiedNamespaceName(); + setState(1665); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1661); + match(Comma); + setState(1662); + qualifiedNamespaceName(); + } + } + setState(1667); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArgumentsContext extends ParserRuleContext { + public List<ActualArgumentContext> actualArgument() { + return getRuleContexts(ActualArgumentContext.class); + } + public ActualArgumentContext actualArgument(int i) { + return getRuleContext(ActualArgumentContext.class,i); + } + public YieldExpressionContext yieldExpression() { + return getRuleContext(YieldExpressionContext.class,0); + } + 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 PhpParserListener ) ((PhpParserListener)listener).enterArguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArguments(this); + } + } + + public final ArgumentsContext arguments() throws RecognitionException { + ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState()); + enterRule(_localctx, 212, RULE_arguments); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1668); + match(OpenRoundBracket); + setState(1678); + switch ( getInterpreter().adaptivePredict(_input,206,_ctx) ) { + case 1: + { + setState(1669); + actualArgument(); + setState(1674); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,205,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1670); + match(Comma); + setState(1671); + actualArgument(); + } + } + } + setState(1676); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,205,_ctx); + } + } + break; + case 2: + { + setState(1677); + yieldExpression(); + } + break; + } + setState(1681); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(1680); + match(Comma); + } + } + + setState(1683); + match(CloseRoundBracket); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ActualArgumentContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ArgumentNameContext argumentName() { + return getRuleContext(ArgumentNameContext.class,0); + } + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public ActualArgumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_actualArgument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterActualArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitActualArgument(this); + } + } + + public final ActualArgumentContext actualArgument() throws RecognitionException { + ActualArgumentContext _localctx = new ActualArgumentContext(_ctx, getState()); + enterRule(_localctx, 214, RULE_actualArgument); + int _la; + try { + setState(1694); + switch (_input.LA(1)) { + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Inc: + case Dec: + case NamespaceSeparator: + case Ellipsis: + case Bang: + case Plus: + case Minus: + case Tilde: + case SuppressWarnings: + case Dollar: + case OpenRoundBracket: + case OpenSquareBracket: + case VarName: + case Label: + case Octal: + case Decimal: + case Real: + case Hex: + case Binary: + case BackQuoteString: + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + enterOuterAlt(_localctx, 1); + { + setState(1686); + switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) { + case 1: + { + setState(1685); + argumentName(); + } + break; + } + setState(1689); + _la = _input.LA(1); + if (_la==Ellipsis) { + { + setState(1688); + match(Ellipsis); + } + } + + setState(1691); + expression(0); + } + break; + case Ampersand: + enterOuterAlt(_localctx, 2); + { + setState(1692); + match(Ampersand); + setState(1693); + chain(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArgumentNameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ArgumentNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argumentName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterArgumentName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitArgumentName(this); + } + } + + public final ArgumentNameContext argumentName() throws RecognitionException { + ArgumentNameContext _localctx = new ArgumentNameContext(_ctx, getState()); + enterRule(_localctx, 216, RULE_argumentName); + try { + enterOuterAlt(_localctx, 1); + { + setState(1696); + identifier(); + setState(1697); + match(Colon); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantInitializerContext extends ParserRuleContext { + public List<ConstantContext> constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public List<StringContext> string() { + return getRuleContexts(StringContext.class); + } + public StringContext string(int i) { + return getRuleContext(StringContext.class,i); + } + public TerminalNode Array() { return getToken(PhpParser.Array, 0); } + public ArrayItemListContext arrayItemList() { + return getRuleContext(ArrayItemListContext.class,0); + } + public ConstantInitializerContext constantInitializer() { + return getRuleContext(ConstantInitializerContext.class,0); + } + public ConstantInitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantInitializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterConstantInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitConstantInitializer(this); + } + } + + public final ConstantInitializerContext constantInitializer() throws RecognitionException { + ConstantInitializerContext _localctx = new ConstantInitializerContext(_ctx, getState()); + enterRule(_localctx, 218, RULE_constantInitializer); + int _la; + try { + setState(1734); + switch ( getInterpreter().adaptivePredict(_input,218,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1699); + constant(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1700); + string(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1701); + match(Array); + setState(1702); + match(OpenRoundBracket); + setState(1707); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ampersand - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1703); + arrayItemList(); + setState(1705); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(1704); + match(Comma); + } + } + + } + } + + setState(1709); + match(CloseRoundBracket); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1710); + match(OpenSquareBracket); + setState(1715); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ampersand - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1711); + arrayItemList(); + setState(1713); + _la = _input.LA(1); + if (_la==Comma) { + { + setState(1712); + match(Comma); + } + } + + } + } + + setState(1717); + match(CloseSquareBracket); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1718); + _la = _input.LA(1); + if ( !(_la==Plus || _la==Minus) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1719); + constantInitializer(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1722); + switch ( getInterpreter().adaptivePredict(_input,215,_ctx) ) { + case 1: + { + setState(1720); + string(); + } + break; + case 2: + { + setState(1721); + constant(); + } + break; + } + setState(1731); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Dot) { + { + { + setState(1724); + match(Dot); + setState(1727); + switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) { + case 1: + { + setState(1725); + string(); + } + break; + case 2: + { + setState(1726); + constant(); + } + break; + } + } + } + setState(1733); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantContext extends ParserRuleContext { + public TerminalNode Null() { return getToken(PhpParser.Null, 0); } + public LiteralConstantContext literalConstant() { + return getRuleContext(LiteralConstantContext.class,0); + } + public MagicConstantContext magicConstant() { + return getRuleContext(MagicConstantContext.class,0); + } + public ClassConstantContext classConstant() { + return getRuleContext(ClassConstantContext.class,0); + } + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public ConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitConstant(this); + } + } + + public final ConstantContext constant() throws RecognitionException { + ConstantContext _localctx = new ConstantContext(_ctx, getState()); + enterRule(_localctx, 220, RULE_constant); + try { + setState(1741); + switch ( getInterpreter().adaptivePredict(_input,219,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1736); + match(Null); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1737); + literalConstant(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1738); + magicConstant(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1739); + classConstant(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1740); + qualifiedNamespaceName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LiteralConstantContext extends ParserRuleContext { + public TerminalNode Real() { return getToken(PhpParser.Real, 0); } + public TerminalNode BooleanConstant() { return getToken(PhpParser.BooleanConstant, 0); } + public NumericConstantContext numericConstant() { + return getRuleContext(NumericConstantContext.class,0); + } + public StringConstantContext stringConstant() { + return getRuleContext(StringConstantContext.class,0); + } + public LiteralConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literalConstant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterLiteralConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitLiteralConstant(this); + } + } + + public final LiteralConstantContext literalConstant() throws RecognitionException { + LiteralConstantContext _localctx = new LiteralConstantContext(_ctx, getState()); + enterRule(_localctx, 222, RULE_literalConstant); + try { + setState(1747); + switch (_input.LA(1)) { + case Real: + enterOuterAlt(_localctx, 1); + { + setState(1743); + match(Real); + } + break; + case BooleanConstant: + enterOuterAlt(_localctx, 2); + { + setState(1744); + match(BooleanConstant); + } + break; + case Octal: + case Decimal: + case Hex: + case Binary: + enterOuterAlt(_localctx, 3); + { + setState(1745); + numericConstant(); + } + break; + case Label: + enterOuterAlt(_localctx, 4); + { + setState(1746); + stringConstant(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NumericConstantContext extends ParserRuleContext { + public TerminalNode Octal() { return getToken(PhpParser.Octal, 0); } + public TerminalNode Decimal() { return getToken(PhpParser.Decimal, 0); } + public TerminalNode Hex() { return getToken(PhpParser.Hex, 0); } + public TerminalNode Binary() { return getToken(PhpParser.Binary, 0); } + public NumericConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_numericConstant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterNumericConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitNumericConstant(this); + } + } + + public final NumericConstantContext numericConstant() throws RecognitionException { + NumericConstantContext _localctx = new NumericConstantContext(_ctx, getState()); + enterRule(_localctx, 224, RULE_numericConstant); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1749); + _la = _input.LA(1); + if ( !(((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (Octal - 226)) | (1L << (Decimal - 226)) | (1L << (Hex - 226)) | (1L << (Binary - 226)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ClassConstantContext extends ParserRuleContext { + public TerminalNode Class() { return getToken(PhpParser.Class, 0); } + public TerminalNode Parent_() { return getToken(PhpParser.Parent_, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode Constructor() { return getToken(PhpParser.Constructor, 0); } + public TerminalNode Get() { return getToken(PhpParser.Get, 0); } + public TerminalNode Set() { return getToken(PhpParser.Set, 0); } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef() { + return getRuleContext(QualifiedStaticTypeRefContext.class,0); + } + public List<KeyedVariableContext> keyedVariable() { + return getRuleContexts(KeyedVariableContext.class); + } + public KeyedVariableContext keyedVariable(int i) { + return getRuleContext(KeyedVariableContext.class,i); + } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public ClassConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_classConstant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterClassConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitClassConstant(this); + } + } + + public final ClassConstantContext classConstant() throws RecognitionException { + ClassConstantContext _localctx = new ClassConstantContext(_ctx, getState()); + enterRule(_localctx, 226, RULE_classConstant); + int _la; + try { + setState(1769); + switch ( getInterpreter().adaptivePredict(_input,224,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1751); + _la = _input.LA(1); + if ( !(_la==Class || _la==Parent_) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + setState(1752); + match(DoubleColon); + setState(1757); + switch ( getInterpreter().adaptivePredict(_input,221,_ctx) ) { + case 1: + { + setState(1753); + identifier(); + } + break; + case 2: + { + setState(1754); + match(Constructor); + } + break; + case 3: + { + setState(1755); + match(Get); + } + break; + case 4: + { + setState(1756); + match(Set); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1762); + switch (_input.LA(1)) { + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case NamespaceSeparator: + case Label: + { + setState(1759); + qualifiedStaticTypeRef(); + } + break; + case Dollar: + case VarName: + { + setState(1760); + keyedVariable(); + } + break; + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + { + setState(1761); + string(); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1764); + match(DoubleColon); + setState(1767); + switch (_input.LA(1)) { + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Label: + { + setState(1765); + identifier(); + } + break; + case Dollar: + case VarName: + { + setState(1766); + keyedVariable(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StringConstantContext extends ParserRuleContext { + public TerminalNode Label() { return getToken(PhpParser.Label, 0); } + public StringConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_stringConstant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterStringConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitStringConstant(this); + } + } + + public final StringConstantContext stringConstant() throws RecognitionException { + StringConstantContext _localctx = new StringConstantContext(_ctx, getState()); + enterRule(_localctx, 228, RULE_stringConstant); + try { + enterOuterAlt(_localctx, 1); + { + setState(1771); + match(Label); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StringContext extends ParserRuleContext { + public TerminalNode StartHereDoc() { return getToken(PhpParser.StartHereDoc, 0); } + public List<TerminalNode> HereDocText() { return getTokens(PhpParser.HereDocText); } + public TerminalNode HereDocText(int i) { + return getToken(PhpParser.HereDocText, i); + } + public TerminalNode StartNowDoc() { return getToken(PhpParser.StartNowDoc, 0); } + public TerminalNode SingleQuoteString() { return getToken(PhpParser.SingleQuoteString, 0); } + public List<TerminalNode> DoubleQuote() { return getTokens(PhpParser.DoubleQuote); } + public TerminalNode DoubleQuote(int i) { + return getToken(PhpParser.DoubleQuote, i); + } + public List<InterpolatedStringPartContext> interpolatedStringPart() { + return getRuleContexts(InterpolatedStringPartContext.class); + } + public InterpolatedStringPartContext interpolatedStringPart(int i) { + return getRuleContext(InterpolatedStringPartContext.class,i); + } + public StringContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_string; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterString(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitString(this); + } + } + + public final StringContext string() throws RecognitionException { + StringContext _localctx = new StringContext(_ctx, getState()); + enterRule(_localctx, 230, RULE_string); + try { + int _alt; + setState(1794); + switch (_input.LA(1)) { + case StartHereDoc: + enterOuterAlt(_localctx, 1); + { + setState(1773); + match(StartHereDoc); + setState(1775); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1774); + match(HereDocText); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1777); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,225,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case StartNowDoc: + enterOuterAlt(_localctx, 2); + { + setState(1779); + match(StartNowDoc); + setState(1781); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1780); + match(HereDocText); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1783); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,226,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case SingleQuoteString: + enterOuterAlt(_localctx, 3); + { + setState(1785); + match(SingleQuoteString); + } + break; + case DoubleQuote: + enterOuterAlt(_localctx, 4); + { + setState(1786); + match(DoubleQuote); + setState(1790); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,227,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1787); + interpolatedStringPart(); + } + } + } + setState(1792); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,227,_ctx); + } + setState(1793); + match(DoubleQuote); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterpolatedStringPartContext extends ParserRuleContext { + public TerminalNode StringPart() { return getToken(PhpParser.StringPart, 0); } + public TerminalNode UnicodeEscape() { return getToken(PhpParser.UnicodeEscape, 0); } + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public InterpolatedStringPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interpolatedStringPart; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterInterpolatedStringPart(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitInterpolatedStringPart(this); + } + } + + public final InterpolatedStringPartContext interpolatedStringPart() throws RecognitionException { + InterpolatedStringPartContext _localctx = new InterpolatedStringPartContext(_ctx, getState()); + enterRule(_localctx, 232, RULE_interpolatedStringPart); + try { + setState(1799); + switch (_input.LA(1)) { + case StringPart: + enterOuterAlt(_localctx, 1); + { + setState(1796); + match(StringPart); + } + break; + case UnicodeEscape: + enterOuterAlt(_localctx, 2); + { + setState(1797); + match(UnicodeEscape); + } + break; + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case NamespaceSeparator: + case Dollar: + case OpenRoundBracket: + case VarName: + case Label: + case SingleQuoteString: + case DoubleQuote: + case StartNowDoc: + case StartHereDoc: + enterOuterAlt(_localctx, 3); + { + setState(1798); + chain(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ChainListContext extends ParserRuleContext { + public List<ChainContext> chain() { + return getRuleContexts(ChainContext.class); + } + public ChainContext chain(int i) { + return getRuleContext(ChainContext.class,i); + } + public ChainListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_chainList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterChainList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitChainList(this); + } + } + + public final ChainListContext chainList() throws RecognitionException { + ChainListContext _localctx = new ChainListContext(_ctx, getState()); + enterRule(_localctx, 234, RULE_chainList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1801); + chain(); + setState(1806); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1802); + match(Comma); + setState(1803); + chain(); + } + } + setState(1808); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ChainContext extends ParserRuleContext { + public ChainOriginContext chainOrigin() { + return getRuleContext(ChainOriginContext.class,0); + } + public List<MemberAccessContext> memberAccess() { + return getRuleContexts(MemberAccessContext.class); + } + public MemberAccessContext memberAccess(int i) { + return getRuleContext(MemberAccessContext.class,i); + } + public ChainContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_chain; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterChain(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitChain(this); + } + } + + public final ChainContext chain() throws RecognitionException { + ChainContext _localctx = new ChainContext(_ctx, getState()); + enterRule(_localctx, 236, RULE_chain); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1809); + chainOrigin(); + setState(1813); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,231,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1810); + memberAccess(); + } + } + } + setState(1815); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,231,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ChainOriginContext extends ParserRuleContext { + public ChainBaseContext chainBase() { + return getRuleContext(ChainBaseContext.class,0); + } + public FunctionCallContext functionCall() { + return getRuleContext(FunctionCallContext.class,0); + } + public NewExprContext newExpr() { + return getRuleContext(NewExprContext.class,0); + } + public ChainOriginContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_chainOrigin; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterChainOrigin(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitChainOrigin(this); + } + } + + public final ChainOriginContext chainOrigin() throws RecognitionException { + ChainOriginContext _localctx = new ChainOriginContext(_ctx, getState()); + enterRule(_localctx, 238, RULE_chainOrigin); + try { + setState(1822); + switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1816); + chainBase(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1817); + functionCall(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1818); + match(OpenRoundBracket); + setState(1819); + newExpr(); + setState(1820); + match(CloseRoundBracket); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MemberAccessContext extends ParserRuleContext { + public KeyedFieldNameContext keyedFieldName() { + return getRuleContext(KeyedFieldNameContext.class,0); + } + public ActualArgumentsContext actualArguments() { + return getRuleContext(ActualArgumentsContext.class,0); + } + public MemberAccessContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_memberAccess; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMemberAccess(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMemberAccess(this); + } + } + + public final MemberAccessContext memberAccess() throws RecognitionException { + MemberAccessContext _localctx = new MemberAccessContext(_ctx, getState()); + enterRule(_localctx, 240, RULE_memberAccess); + try { + enterOuterAlt(_localctx, 1); + { + setState(1824); + match(ObjectOperator); + setState(1825); + keyedFieldName(); + setState(1827); + switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) { + case 1: + { + setState(1826); + actualArguments(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionCallContext extends ParserRuleContext { + public FunctionCallNameContext functionCallName() { + return getRuleContext(FunctionCallNameContext.class,0); + } + public ActualArgumentsContext actualArguments() { + return getRuleContext(ActualArgumentsContext.class,0); + } + public FunctionCallContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionCall; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterFunctionCall(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitFunctionCall(this); + } + } + + public final FunctionCallContext functionCall() throws RecognitionException { + FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState()); + enterRule(_localctx, 242, RULE_functionCall); + try { + enterOuterAlt(_localctx, 1); + { + setState(1829); + functionCallName(); + setState(1830); + actualArguments(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionCallNameContext extends ParserRuleContext { + public QualifiedNamespaceNameContext qualifiedNamespaceName() { + return getRuleContext(QualifiedNamespaceNameContext.class,0); + } + public ClassConstantContext classConstant() { + return getRuleContext(ClassConstantContext.class,0); + } + public ChainBaseContext chainBase() { + return getRuleContext(ChainBaseContext.class,0); + } + public ParenthesesContext parentheses() { + return getRuleContext(ParenthesesContext.class,0); + } + public FunctionCallNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionCallName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterFunctionCallName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitFunctionCallName(this); + } + } + + public final FunctionCallNameContext functionCallName() throws RecognitionException { + FunctionCallNameContext _localctx = new FunctionCallNameContext(_ctx, getState()); + enterRule(_localctx, 244, RULE_functionCallName); + try { + setState(1836); + switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1832); + qualifiedNamespaceName(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1833); + classConstant(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1834); + chainBase(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1835); + parentheses(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ActualArgumentsContext extends ParserRuleContext { + public GenericDynamicArgsContext genericDynamicArgs() { + return getRuleContext(GenericDynamicArgsContext.class,0); + } + public List<ArgumentsContext> arguments() { + return getRuleContexts(ArgumentsContext.class); + } + public ArgumentsContext arguments(int i) { + return getRuleContext(ArgumentsContext.class,i); + } + public List<SquareCurlyExpressionContext> squareCurlyExpression() { + return getRuleContexts(SquareCurlyExpressionContext.class); + } + public SquareCurlyExpressionContext squareCurlyExpression(int i) { + return getRuleContext(SquareCurlyExpressionContext.class,i); + } + public ActualArgumentsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_actualArguments; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterActualArguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitActualArguments(this); + } + } + + public final ActualArgumentsContext actualArguments() throws RecognitionException { + ActualArgumentsContext _localctx = new ActualArgumentsContext(_ctx, getState()); + enterRule(_localctx, 246, RULE_actualArguments); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1839); + _la = _input.LA(1); + if (_la==Lgeneric) { + { + setState(1838); + genericDynamicArgs(); + } + } + + setState(1842); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1841); + arguments(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1844); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,236,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + setState(1849); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,237,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1846); + squareCurlyExpression(); + } + } + } + setState(1851); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,237,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ChainBaseContext extends ParserRuleContext { + public List<KeyedVariableContext> keyedVariable() { + return getRuleContexts(KeyedVariableContext.class); + } + public KeyedVariableContext keyedVariable(int i) { + return getRuleContext(KeyedVariableContext.class,i); + } + public QualifiedStaticTypeRefContext qualifiedStaticTypeRef() { + return getRuleContext(QualifiedStaticTypeRefContext.class,0); + } + public ChainBaseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_chainBase; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterChainBase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitChainBase(this); + } + } + + public final ChainBaseContext chainBase() throws RecognitionException { + ChainBaseContext _localctx = new ChainBaseContext(_ctx, getState()); + enterRule(_localctx, 248, RULE_chainBase); + try { + setState(1861); + switch (_input.LA(1)) { + case Dollar: + case VarName: + enterOuterAlt(_localctx, 1); + { + setState(1852); + keyedVariable(); + setState(1855); + switch ( getInterpreter().adaptivePredict(_input,238,_ctx) ) { + case 1: + { + setState(1853); + match(DoubleColon); + setState(1854); + keyedVariable(); + } + break; + } + } + break; + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case NamespaceSeparator: + case Label: + enterOuterAlt(_localctx, 2); + { + setState(1857); + qualifiedStaticTypeRef(); + setState(1858); + match(DoubleColon); + setState(1859); + keyedVariable(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeyedFieldNameContext extends ParserRuleContext { + public KeyedSimpleFieldNameContext keyedSimpleFieldName() { + return getRuleContext(KeyedSimpleFieldNameContext.class,0); + } + public KeyedVariableContext keyedVariable() { + return getRuleContext(KeyedVariableContext.class,0); + } + public KeyedFieldNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_keyedFieldName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterKeyedFieldName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitKeyedFieldName(this); + } + } + + public final KeyedFieldNameContext keyedFieldName() throws RecognitionException { + KeyedFieldNameContext _localctx = new KeyedFieldNameContext(_ctx, getState()); + enterRule(_localctx, 250, RULE_keyedFieldName); + try { + setState(1865); + switch (_input.LA(1)) { + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case OpenCurlyBracket: + case Label: + enterOuterAlt(_localctx, 1); + { + setState(1863); + keyedSimpleFieldName(); + } + break; + case Dollar: + case VarName: + enterOuterAlt(_localctx, 2); + { + setState(1864); + keyedVariable(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeyedSimpleFieldNameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public List<SquareCurlyExpressionContext> squareCurlyExpression() { + return getRuleContexts(SquareCurlyExpressionContext.class); + } + public SquareCurlyExpressionContext squareCurlyExpression(int i) { + return getRuleContext(SquareCurlyExpressionContext.class,i); + } + public KeyedSimpleFieldNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_keyedSimpleFieldName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterKeyedSimpleFieldName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitKeyedSimpleFieldName(this); + } + } + + public final KeyedSimpleFieldNameContext keyedSimpleFieldName() throws RecognitionException { + KeyedSimpleFieldNameContext _localctx = new KeyedSimpleFieldNameContext(_ctx, getState()); + enterRule(_localctx, 252, RULE_keyedSimpleFieldName); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1872); + switch (_input.LA(1)) { + case Abstract: + case Array: + case As: + case BinaryCast: + case BoolType: + case BooleanConstant: + case Break: + case Callable: + case Case: + case Catch: + case Class: + case Clone: + case Const: + case Continue: + case Declare: + case Default: + case Do: + case DoubleCast: + case DoubleType: + case Echo: + case Else: + case ElseIf: + case Empty: + case Enum_: + case EndDeclare: + case EndFor: + case EndForeach: + case EndIf: + case EndSwitch: + case EndWhile: + case Eval: + case Exit: + case Extends: + case Final: + case Finally: + case FloatCast: + case For: + case Foreach: + case Function_: + case Global: + case Goto: + case If: + case Implements: + case Import: + case Include: + case IncludeOnce: + case InstanceOf: + case InsteadOf: + case Int8Cast: + case Int16Cast: + case Int64Type: + case IntType: + case Interface: + case IsSet: + case List: + case LogicalAnd: + case LogicalOr: + case LogicalXor: + case Match_: + case Namespace: + case New: + case Null: + case ObjectType: + case Parent_: + case Partial: + case Print: + case Private: + case Protected: + case Public: + case Readonly: + case Require: + case RequireOnce: + case Resource: + case Return: + case Static: + case StringType: + case Switch: + case Throw: + case Trait: + case Try: + case Typeof: + case UintCast: + case UnicodeCast: + case Unset: + case Use: + case Var: + case While: + case Yield: + case From: + case LambdaFn: + case Ticks: + case Encoding: + case StrictTypes: + case Get: + case Set: + case Call: + case CallStatic: + case Constructor: + case Destruct: + case Wakeup: + case Sleep: + case Autoload: + case IsSet__: + case Unset__: + case ToString__: + case Invoke: + case SetState: + case Clone__: + case DebugInfo: + case Namespace__: + case Class__: + case Traic__: + case Function__: + case Method__: + case Line__: + case File__: + case Dir__: + case Label: + { + setState(1867); + identifier(); + } + break; + case OpenCurlyBracket: + { + setState(1868); + match(OpenCurlyBracket); + setState(1869); + expression(0); + setState(1870); + match(CloseCurlyBracket); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1877); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,242,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1874); + squareCurlyExpression(); + } + } + } + setState(1879); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,242,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeyedVariableContext extends ParserRuleContext { + public TerminalNode VarName() { return getToken(PhpParser.VarName, 0); } + public List<TerminalNode> Dollar() { return getTokens(PhpParser.Dollar); } + public TerminalNode Dollar(int i) { + return getToken(PhpParser.Dollar, i); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public List<SquareCurlyExpressionContext> squareCurlyExpression() { + return getRuleContexts(SquareCurlyExpressionContext.class); + } + public SquareCurlyExpressionContext squareCurlyExpression(int i) { + return getRuleContext(SquareCurlyExpressionContext.class,i); + } + public KeyedVariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_keyedVariable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterKeyedVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitKeyedVariable(this); + } + } + + public final KeyedVariableContext keyedVariable() throws RecognitionException { + KeyedVariableContext _localctx = new KeyedVariableContext(_ctx, getState()); + enterRule(_localctx, 254, RULE_keyedVariable); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1883); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,243,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1880); + match(Dollar); + } + } + } + setState(1885); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,243,_ctx); + } + setState(1892); + switch (_input.LA(1)) { + case VarName: + { + setState(1886); + match(VarName); + } + break; + case Dollar: + { + setState(1887); + match(Dollar); + setState(1888); + match(OpenCurlyBracket); + setState(1889); + expression(0); + setState(1890); + match(CloseCurlyBracket); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1897); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,245,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1894); + squareCurlyExpression(); + } + } + } + setState(1899); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,245,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SquareCurlyExpressionContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode OpenCurlyBracket() { return getToken(PhpParser.OpenCurlyBracket, 0); } + public TerminalNode CloseCurlyBracket() { return getToken(PhpParser.CloseCurlyBracket, 0); } + public SquareCurlyExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_squareCurlyExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterSquareCurlyExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitSquareCurlyExpression(this); + } + } + + public final SquareCurlyExpressionContext squareCurlyExpression() throws RecognitionException { + SquareCurlyExpressionContext _localctx = new SquareCurlyExpressionContext(_ctx, getState()); + enterRule(_localctx, 256, RULE_squareCurlyExpression); + int _la; + try { + setState(1909); + switch (_input.LA(1)) { + case OpenSquareBracket: + enterOuterAlt(_localctx, 1); + { + setState(1900); + match(OpenSquareBracket); + setState(1902); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1901); + expression(0); + } + } + + setState(1904); + match(CloseSquareBracket); + } + break; + case OpenCurlyBracket: + enterOuterAlt(_localctx, 2); + { + setState(1905); + match(OpenCurlyBracket); + setState(1906); + expression(0); + setState(1907); + match(CloseCurlyBracket); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentListContext extends ParserRuleContext { + public List<AssignmentListElementContext> assignmentListElement() { + return getRuleContexts(AssignmentListElementContext.class); + } + public AssignmentListElementContext assignmentListElement(int i) { + return getRuleContext(AssignmentListElementContext.class,i); + } + public AssignmentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAssignmentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAssignmentList(this); + } + } + + public final AssignmentListContext assignmentList() throws RecognitionException { + AssignmentListContext _localctx = new AssignmentListContext(_ctx, getState()); + enterRule(_localctx, 258, RULE_assignmentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1912); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ampersand - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1911); + assignmentListElement(); + } + } + + setState(1920); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Comma) { + { + { + setState(1914); + match(Comma); + setState(1916); + _la = _input.LA(1); + if (((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)) | (1L << (Inc - 108)) | (1L << (Dec - 108)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (NamespaceSeparator - 194)) | (1L << (Ampersand - 194)) | (1L << (Bang - 194)) | (1L << (Plus - 194)) | (1L << (Minus - 194)) | (1L << (Tilde - 194)) | (1L << (SuppressWarnings - 194)) | (1L << (Dollar - 194)) | (1L << (OpenRoundBracket - 194)) | (1L << (OpenSquareBracket - 194)) | (1L << (VarName - 194)) | (1L << (Label - 194)) | (1L << (Octal - 194)) | (1L << (Decimal - 194)) | (1L << (Real - 194)) | (1L << (Hex - 194)) | (1L << (Binary - 194)) | (1L << (BackQuoteString - 194)) | (1L << (SingleQuoteString - 194)) | (1L << (DoubleQuote - 194)) | (1L << (StartNowDoc - 194)) | (1L << (StartHereDoc - 194)))) != 0)) { + { + setState(1915); + assignmentListElement(); + } + } + + } + } + setState(1922); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentListElementContext extends ParserRuleContext { + public ChainContext chain() { + return getRuleContext(ChainContext.class,0); + } + public TerminalNode List() { return getToken(PhpParser.List, 0); } + public AssignmentListContext assignmentList() { + return getRuleContext(AssignmentListContext.class,0); + } + public ArrayItemContext arrayItem() { + return getRuleContext(ArrayItemContext.class,0); + } + public AssignmentListElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentListElement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterAssignmentListElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitAssignmentListElement(this); + } + } + + public final AssignmentListElementContext assignmentListElement() throws RecognitionException { + AssignmentListElementContext _localctx = new AssignmentListElementContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_assignmentListElement); + try { + setState(1930); + switch ( getInterpreter().adaptivePredict(_input,251,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1923); + chain(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1924); + match(List); + setState(1925); + match(OpenRoundBracket); + setState(1926); + assignmentList(); + setState(1927); + match(CloseRoundBracket); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1929); + arrayItem(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ModifierContext extends ParserRuleContext { + public TerminalNode Abstract() { return getToken(PhpParser.Abstract, 0); } + public TerminalNode Final() { return getToken(PhpParser.Final, 0); } + public ModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_modifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitModifier(this); + } + } + + public final ModifierContext modifier() throws RecognitionException { + ModifierContext _localctx = new ModifierContext(_ctx, getState()); + enterRule(_localctx, 262, RULE_modifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1932); + _la = _input.LA(1); + if ( !(_la==Abstract || _la==Final) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierContext extends ParserRuleContext { + public TerminalNode Label() { return getToken(PhpParser.Label, 0); } + public TerminalNode Abstract() { return getToken(PhpParser.Abstract, 0); } + public TerminalNode Array() { return getToken(PhpParser.Array, 0); } + public TerminalNode As() { return getToken(PhpParser.As, 0); } + public TerminalNode BinaryCast() { return getToken(PhpParser.BinaryCast, 0); } + public TerminalNode BoolType() { return getToken(PhpParser.BoolType, 0); } + public TerminalNode BooleanConstant() { return getToken(PhpParser.BooleanConstant, 0); } + public TerminalNode Break() { return getToken(PhpParser.Break, 0); } + public TerminalNode Callable() { return getToken(PhpParser.Callable, 0); } + public TerminalNode Case() { return getToken(PhpParser.Case, 0); } + public TerminalNode Catch() { return getToken(PhpParser.Catch, 0); } + public TerminalNode Class() { return getToken(PhpParser.Class, 0); } + public TerminalNode Clone() { return getToken(PhpParser.Clone, 0); } + public TerminalNode Const() { return getToken(PhpParser.Const, 0); } + public TerminalNode Continue() { return getToken(PhpParser.Continue, 0); } + public TerminalNode Declare() { return getToken(PhpParser.Declare, 0); } + public TerminalNode Default() { return getToken(PhpParser.Default, 0); } + public TerminalNode Do() { return getToken(PhpParser.Do, 0); } + public TerminalNode DoubleCast() { return getToken(PhpParser.DoubleCast, 0); } + public TerminalNode DoubleType() { return getToken(PhpParser.DoubleType, 0); } + public TerminalNode Echo() { return getToken(PhpParser.Echo, 0); } + public TerminalNode Else() { return getToken(PhpParser.Else, 0); } + public TerminalNode ElseIf() { return getToken(PhpParser.ElseIf, 0); } + public TerminalNode Empty() { return getToken(PhpParser.Empty, 0); } + public TerminalNode EndDeclare() { return getToken(PhpParser.EndDeclare, 0); } + public TerminalNode EndFor() { return getToken(PhpParser.EndFor, 0); } + public TerminalNode EndForeach() { return getToken(PhpParser.EndForeach, 0); } + public TerminalNode EndIf() { return getToken(PhpParser.EndIf, 0); } + public TerminalNode EndSwitch() { return getToken(PhpParser.EndSwitch, 0); } + public TerminalNode EndWhile() { return getToken(PhpParser.EndWhile, 0); } + public TerminalNode Eval() { return getToken(PhpParser.Eval, 0); } + public TerminalNode Exit() { return getToken(PhpParser.Exit, 0); } + public TerminalNode Extends() { return getToken(PhpParser.Extends, 0); } + public TerminalNode Final() { return getToken(PhpParser.Final, 0); } + public TerminalNode Finally() { return getToken(PhpParser.Finally, 0); } + public TerminalNode FloatCast() { return getToken(PhpParser.FloatCast, 0); } + public TerminalNode For() { return getToken(PhpParser.For, 0); } + public TerminalNode Foreach() { return getToken(PhpParser.Foreach, 0); } + public TerminalNode Function_() { return getToken(PhpParser.Function_, 0); } + public TerminalNode Global() { return getToken(PhpParser.Global, 0); } + public TerminalNode Goto() { return getToken(PhpParser.Goto, 0); } + public TerminalNode If() { return getToken(PhpParser.If, 0); } + public TerminalNode Implements() { return getToken(PhpParser.Implements, 0); } + public TerminalNode Import() { return getToken(PhpParser.Import, 0); } + public TerminalNode Include() { return getToken(PhpParser.Include, 0); } + public TerminalNode IncludeOnce() { return getToken(PhpParser.IncludeOnce, 0); } + public TerminalNode InstanceOf() { return getToken(PhpParser.InstanceOf, 0); } + public TerminalNode InsteadOf() { return getToken(PhpParser.InsteadOf, 0); } + public TerminalNode Int16Cast() { return getToken(PhpParser.Int16Cast, 0); } + public TerminalNode Int64Type() { return getToken(PhpParser.Int64Type, 0); } + public TerminalNode Int8Cast() { return getToken(PhpParser.Int8Cast, 0); } + public TerminalNode Interface() { return getToken(PhpParser.Interface, 0); } + public TerminalNode IntType() { return getToken(PhpParser.IntType, 0); } + public TerminalNode IsSet() { return getToken(PhpParser.IsSet, 0); } + public TerminalNode LambdaFn() { return getToken(PhpParser.LambdaFn, 0); } + public TerminalNode List() { return getToken(PhpParser.List, 0); } + public TerminalNode LogicalAnd() { return getToken(PhpParser.LogicalAnd, 0); } + public TerminalNode LogicalOr() { return getToken(PhpParser.LogicalOr, 0); } + public TerminalNode LogicalXor() { return getToken(PhpParser.LogicalXor, 0); } + public TerminalNode Namespace() { return getToken(PhpParser.Namespace, 0); } + public TerminalNode New() { return getToken(PhpParser.New, 0); } + public TerminalNode Null() { return getToken(PhpParser.Null, 0); } + public TerminalNode ObjectType() { return getToken(PhpParser.ObjectType, 0); } + public TerminalNode Parent_() { return getToken(PhpParser.Parent_, 0); } + public TerminalNode Partial() { return getToken(PhpParser.Partial, 0); } + public TerminalNode Print() { return getToken(PhpParser.Print, 0); } + public TerminalNode Private() { return getToken(PhpParser.Private, 0); } + public TerminalNode Protected() { return getToken(PhpParser.Protected, 0); } + public TerminalNode Public() { return getToken(PhpParser.Public, 0); } + public TerminalNode Readonly() { return getToken(PhpParser.Readonly, 0); } + public TerminalNode Require() { return getToken(PhpParser.Require, 0); } + public TerminalNode RequireOnce() { return getToken(PhpParser.RequireOnce, 0); } + public TerminalNode Resource() { return getToken(PhpParser.Resource, 0); } + public TerminalNode Return() { return getToken(PhpParser.Return, 0); } + public TerminalNode Static() { return getToken(PhpParser.Static, 0); } + public TerminalNode StringType() { return getToken(PhpParser.StringType, 0); } + public TerminalNode Switch() { return getToken(PhpParser.Switch, 0); } + public TerminalNode Throw() { return getToken(PhpParser.Throw, 0); } + public TerminalNode Trait() { return getToken(PhpParser.Trait, 0); } + public TerminalNode Try() { return getToken(PhpParser.Try, 0); } + public TerminalNode Typeof() { return getToken(PhpParser.Typeof, 0); } + public TerminalNode UintCast() { return getToken(PhpParser.UintCast, 0); } + public TerminalNode UnicodeCast() { return getToken(PhpParser.UnicodeCast, 0); } + public TerminalNode Unset() { return getToken(PhpParser.Unset, 0); } + public TerminalNode Use() { return getToken(PhpParser.Use, 0); } + public TerminalNode Var() { return getToken(PhpParser.Var, 0); } + public TerminalNode While() { return getToken(PhpParser.While, 0); } + public TerminalNode Yield() { return getToken(PhpParser.Yield, 0); } + public TerminalNode From() { return getToken(PhpParser.From, 0); } + public TerminalNode Enum_() { return getToken(PhpParser.Enum_, 0); } + public TerminalNode Match_() { return getToken(PhpParser.Match_, 0); } + public TerminalNode Ticks() { return getToken(PhpParser.Ticks, 0); } + public TerminalNode Encoding() { return getToken(PhpParser.Encoding, 0); } + public TerminalNode StrictTypes() { return getToken(PhpParser.StrictTypes, 0); } + public TerminalNode Get() { return getToken(PhpParser.Get, 0); } + public TerminalNode Set() { return getToken(PhpParser.Set, 0); } + public TerminalNode Call() { return getToken(PhpParser.Call, 0); } + public TerminalNode CallStatic() { return getToken(PhpParser.CallStatic, 0); } + public TerminalNode Constructor() { return getToken(PhpParser.Constructor, 0); } + public TerminalNode Destruct() { return getToken(PhpParser.Destruct, 0); } + public TerminalNode Wakeup() { return getToken(PhpParser.Wakeup, 0); } + public TerminalNode Sleep() { return getToken(PhpParser.Sleep, 0); } + public TerminalNode Autoload() { return getToken(PhpParser.Autoload, 0); } + public TerminalNode IsSet__() { return getToken(PhpParser.IsSet__, 0); } + public TerminalNode Unset__() { return getToken(PhpParser.Unset__, 0); } + public TerminalNode ToString__() { return getToken(PhpParser.ToString__, 0); } + public TerminalNode Invoke() { return getToken(PhpParser.Invoke, 0); } + public TerminalNode SetState() { return getToken(PhpParser.SetState, 0); } + public TerminalNode Clone__() { return getToken(PhpParser.Clone__, 0); } + public TerminalNode DebugInfo() { return getToken(PhpParser.DebugInfo, 0); } + public TerminalNode Namespace__() { return getToken(PhpParser.Namespace__, 0); } + public TerminalNode Class__() { return getToken(PhpParser.Class__, 0); } + public TerminalNode Traic__() { return getToken(PhpParser.Traic__, 0); } + public TerminalNode Function__() { return getToken(PhpParser.Function__, 0); } + public TerminalNode Method__() { return getToken(PhpParser.Method__, 0); } + public TerminalNode Line__() { return getToken(PhpParser.Line__, 0); } + public TerminalNode File__() { return getToken(PhpParser.File__, 0); } + public TerminalNode Dir__() { return getToken(PhpParser.Dir__, 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 PhpParserListener ) ((PhpParserListener)listener).enterIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitIdentifier(this); + } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 264, RULE_identifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1934); + _la = _input.LA(1); + if ( !(((((_la - 44)) & ~0x3f) == 0 && ((1L << (_la - 44)) & ((1L << (Abstract - 44)) | (1L << (Array - 44)) | (1L << (As - 44)) | (1L << (BinaryCast - 44)) | (1L << (BoolType - 44)) | (1L << (BooleanConstant - 44)) | (1L << (Break - 44)) | (1L << (Callable - 44)) | (1L << (Case - 44)) | (1L << (Catch - 44)) | (1L << (Class - 44)) | (1L << (Clone - 44)) | (1L << (Const - 44)) | (1L << (Continue - 44)) | (1L << (Declare - 44)) | (1L << (Default - 44)) | (1L << (Do - 44)) | (1L << (DoubleCast - 44)) | (1L << (DoubleType - 44)) | (1L << (Echo - 44)) | (1L << (Else - 44)) | (1L << (ElseIf - 44)) | (1L << (Empty - 44)) | (1L << (Enum_ - 44)) | (1L << (EndDeclare - 44)) | (1L << (EndFor - 44)) | (1L << (EndForeach - 44)) | (1L << (EndIf - 44)) | (1L << (EndSwitch - 44)) | (1L << (EndWhile - 44)) | (1L << (Eval - 44)) | (1L << (Exit - 44)) | (1L << (Extends - 44)) | (1L << (Final - 44)) | (1L << (Finally - 44)) | (1L << (FloatCast - 44)) | (1L << (For - 44)) | (1L << (Foreach - 44)) | (1L << (Function_ - 44)) | (1L << (Global - 44)) | (1L << (Goto - 44)) | (1L << (If - 44)) | (1L << (Implements - 44)) | (1L << (Import - 44)) | (1L << (Include - 44)) | (1L << (IncludeOnce - 44)) | (1L << (InstanceOf - 44)) | (1L << (InsteadOf - 44)) | (1L << (Int8Cast - 44)) | (1L << (Int16Cast - 44)) | (1L << (Int64Type - 44)) | (1L << (IntType - 44)) | (1L << (Interface - 44)) | (1L << (IsSet - 44)) | (1L << (List - 44)) | (1L << (LogicalAnd - 44)) | (1L << (LogicalOr - 44)) | (1L << (LogicalXor - 44)) | (1L << (Match_ - 44)) | (1L << (Namespace - 44)) | (1L << (New - 44)) | (1L << (Null - 44)) | (1L << (ObjectType - 44)) | (1L << (Parent_ - 44)))) != 0) || ((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (Partial - 108)) | (1L << (Print - 108)) | (1L << (Private - 108)) | (1L << (Protected - 108)) | (1L << (Public - 108)) | (1L << (Readonly - 108)) | (1L << (Require - 108)) | (1L << (RequireOnce - 108)) | (1L << (Resource - 108)) | (1L << (Return - 108)) | (1L << (Static - 108)) | (1L << (StringType - 108)) | (1L << (Switch - 108)) | (1L << (Throw - 108)) | (1L << (Trait - 108)) | (1L << (Try - 108)) | (1L << (Typeof - 108)) | (1L << (UintCast - 108)) | (1L << (UnicodeCast - 108)) | (1L << (Unset - 108)) | (1L << (Use - 108)) | (1L << (Var - 108)) | (1L << (While - 108)) | (1L << (Yield - 108)) | (1L << (From - 108)) | (1L << (LambdaFn - 108)) | (1L << (Ticks - 108)) | (1L << (Encoding - 108)) | (1L << (StrictTypes - 108)) | (1L << (Get - 108)) | (1L << (Set - 108)) | (1L << (Call - 108)) | (1L << (CallStatic - 108)) | (1L << (Constructor - 108)) | (1L << (Destruct - 108)) | (1L << (Wakeup - 108)) | (1L << (Sleep - 108)) | (1L << (Autoload - 108)) | (1L << (IsSet__ - 108)) | (1L << (Unset__ - 108)) | (1L << (ToString__ - 108)) | (1L << (Invoke - 108)) | (1L << (SetState - 108)) | (1L << (Clone__ - 108)) | (1L << (DebugInfo - 108)) | (1L << (Namespace__ - 108)) | (1L << (Class__ - 108)) | (1L << (Traic__ - 108)) | (1L << (Function__ - 108)) | (1L << (Method__ - 108)) | (1L << (Line__ - 108)) | (1L << (File__ - 108)) | (1L << (Dir__ - 108)))) != 0) || _la==Label) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MemberModifierContext extends ParserRuleContext { + public TerminalNode Public() { return getToken(PhpParser.Public, 0); } + public TerminalNode Protected() { return getToken(PhpParser.Protected, 0); } + public TerminalNode Private() { return getToken(PhpParser.Private, 0); } + public TerminalNode Static() { return getToken(PhpParser.Static, 0); } + public TerminalNode Abstract() { return getToken(PhpParser.Abstract, 0); } + public TerminalNode Final() { return getToken(PhpParser.Final, 0); } + public TerminalNode Readonly() { return getToken(PhpParser.Readonly, 0); } + public MemberModifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_memberModifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMemberModifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMemberModifier(this); + } + } + + public final MemberModifierContext memberModifier() throws RecognitionException { + MemberModifierContext _localctx = new MemberModifierContext(_ctx, getState()); + enterRule(_localctx, 266, RULE_memberModifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1936); + _la = _input.LA(1); + if ( !(_la==Abstract || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (Final - 77)) | (1L << (Private - 77)) | (1L << (Protected - 77)) | (1L << (Public - 77)) | (1L << (Readonly - 77)) | (1L << (Static - 77)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MagicConstantContext extends ParserRuleContext { + public TerminalNode Namespace__() { return getToken(PhpParser.Namespace__, 0); } + public TerminalNode Class__() { return getToken(PhpParser.Class__, 0); } + public TerminalNode Traic__() { return getToken(PhpParser.Traic__, 0); } + public TerminalNode Function__() { return getToken(PhpParser.Function__, 0); } + public TerminalNode Method__() { return getToken(PhpParser.Method__, 0); } + public TerminalNode Line__() { return getToken(PhpParser.Line__, 0); } + public TerminalNode File__() { return getToken(PhpParser.File__, 0); } + public TerminalNode Dir__() { return getToken(PhpParser.Dir__, 0); } + public MagicConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_magicConstant; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMagicConstant(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMagicConstant(this); + } + } + + public final MagicConstantContext magicConstant() throws RecognitionException { + MagicConstantContext _localctx = new MagicConstantContext(_ctx, getState()); + enterRule(_localctx, 268, RULE_magicConstant); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1938); + _la = _input.LA(1); + if ( !(((((_la - 153)) & ~0x3f) == 0 && ((1L << (_la - 153)) & ((1L << (Namespace__ - 153)) | (1L << (Class__ - 153)) | (1L << (Traic__ - 153)) | (1L << (Function__ - 153)) | (1L << (Method__ - 153)) | (1L << (Line__ - 153)) | (1L << (File__ - 153)) | (1L << (Dir__ - 153)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MagicMethodContext extends ParserRuleContext { + public TerminalNode Get() { return getToken(PhpParser.Get, 0); } + public TerminalNode Set() { return getToken(PhpParser.Set, 0); } + public TerminalNode Call() { return getToken(PhpParser.Call, 0); } + public TerminalNode CallStatic() { return getToken(PhpParser.CallStatic, 0); } + public TerminalNode Constructor() { return getToken(PhpParser.Constructor, 0); } + public TerminalNode Destruct() { return getToken(PhpParser.Destruct, 0); } + public TerminalNode Wakeup() { return getToken(PhpParser.Wakeup, 0); } + public TerminalNode Sleep() { return getToken(PhpParser.Sleep, 0); } + public TerminalNode Autoload() { return getToken(PhpParser.Autoload, 0); } + public TerminalNode IsSet__() { return getToken(PhpParser.IsSet__, 0); } + public TerminalNode Unset__() { return getToken(PhpParser.Unset__, 0); } + public TerminalNode ToString__() { return getToken(PhpParser.ToString__, 0); } + public TerminalNode Invoke() { return getToken(PhpParser.Invoke, 0); } + public TerminalNode SetState() { return getToken(PhpParser.SetState, 0); } + public TerminalNode Clone__() { return getToken(PhpParser.Clone__, 0); } + public TerminalNode DebugInfo() { return getToken(PhpParser.DebugInfo, 0); } + public MagicMethodContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_magicMethod; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterMagicMethod(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitMagicMethod(this); + } + } + + public final MagicMethodContext magicMethod() throws RecognitionException { + MagicMethodContext _localctx = new MagicMethodContext(_ctx, getState()); + enterRule(_localctx, 270, RULE_magicMethod); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1940); + _la = _input.LA(1); + if ( !(((((_la - 137)) & ~0x3f) == 0 && ((1L << (_la - 137)) & ((1L << (Get - 137)) | (1L << (Set - 137)) | (1L << (Call - 137)) | (1L << (CallStatic - 137)) | (1L << (Constructor - 137)) | (1L << (Destruct - 137)) | (1L << (Wakeup - 137)) | (1L << (Sleep - 137)) | (1L << (Autoload - 137)) | (1L << (IsSet__ - 137)) | (1L << (Unset__ - 137)) | (1L << (ToString__ - 137)) | (1L << (Invoke - 137)) | (1L << (SetState - 137)) | (1L << (Clone__ - 137)) | (1L << (DebugInfo - 137)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimitiveTypeContext extends ParserRuleContext { + public TerminalNode BoolType() { return getToken(PhpParser.BoolType, 0); } + public TerminalNode IntType() { return getToken(PhpParser.IntType, 0); } + public TerminalNode Int64Type() { return getToken(PhpParser.Int64Type, 0); } + public TerminalNode DoubleType() { return getToken(PhpParser.DoubleType, 0); } + public TerminalNode StringType() { return getToken(PhpParser.StringType, 0); } + public TerminalNode Resource() { return getToken(PhpParser.Resource, 0); } + public TerminalNode ObjectType() { return getToken(PhpParser.ObjectType, 0); } + public TerminalNode Array() { return getToken(PhpParser.Array, 0); } + public PrimitiveTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primitiveType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterPrimitiveType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitPrimitiveType(this); + } + } + + public final PrimitiveTypeContext primitiveType() throws RecognitionException { + PrimitiveTypeContext _localctx = new PrimitiveTypeContext(_ctx, getState()); + enterRule(_localctx, 272, RULE_primitiveType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1942); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Array) | (1L << BoolType) | (1L << DoubleType))) != 0) || ((((_la - 94)) & ~0x3f) == 0 && ((1L << (_la - 94)) & ((1L << (Int64Type - 94)) | (1L << (IntType - 94)) | (1L << (ObjectType - 94)) | (1L << (Resource - 94)) | (1L << (StringType - 94)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CastOperationContext extends ParserRuleContext { + public TerminalNode BoolType() { return getToken(PhpParser.BoolType, 0); } + public TerminalNode Int8Cast() { return getToken(PhpParser.Int8Cast, 0); } + public TerminalNode Int16Cast() { return getToken(PhpParser.Int16Cast, 0); } + public TerminalNode IntType() { return getToken(PhpParser.IntType, 0); } + public TerminalNode Int64Type() { return getToken(PhpParser.Int64Type, 0); } + public TerminalNode UintCast() { return getToken(PhpParser.UintCast, 0); } + public TerminalNode DoubleCast() { return getToken(PhpParser.DoubleCast, 0); } + public TerminalNode DoubleType() { return getToken(PhpParser.DoubleType, 0); } + public TerminalNode FloatCast() { return getToken(PhpParser.FloatCast, 0); } + public TerminalNode StringType() { return getToken(PhpParser.StringType, 0); } + public TerminalNode BinaryCast() { return getToken(PhpParser.BinaryCast, 0); } + public TerminalNode UnicodeCast() { return getToken(PhpParser.UnicodeCast, 0); } + public TerminalNode Array() { return getToken(PhpParser.Array, 0); } + public TerminalNode ObjectType() { return getToken(PhpParser.ObjectType, 0); } + public TerminalNode Resource() { return getToken(PhpParser.Resource, 0); } + public TerminalNode Unset() { return getToken(PhpParser.Unset, 0); } + public CastOperationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_castOperation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).enterCastOperation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof PhpParserListener ) ((PhpParserListener)listener).exitCastOperation(this); + } + } + + public final CastOperationContext castOperation() throws RecognitionException { + CastOperationContext _localctx = new CastOperationContext(_ctx, getState()); + enterRule(_localctx, 274, RULE_castOperation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1944); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Array) | (1L << BinaryCast) | (1L << BoolType) | (1L << DoubleCast) | (1L << DoubleType))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (FloatCast - 79)) | (1L << (Int8Cast - 79)) | (1L << (Int16Cast - 79)) | (1L << (Int64Type - 79)) | (1L << (IntType - 79)) | (1L << (ObjectType - 79)) | (1L << (Resource - 79)) | (1L << (StringType - 79)) | (1L << (UintCast - 79)) | (1L << (UnicodeCast - 79)) | (1L << (Unset - 79)))) != 0)) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } + } + } + 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 59: + return typeHint_sempred((TypeHintContext)_localctx, predIndex); + case 82: + return expression_sempred((ExpressionContext)_localctx, predIndex); + } + return true; + } + private boolean typeHint_sempred(TypeHintContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 1); + } + return true; + } + private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return precpred(_ctx, 22); + case 2: + return precpred(_ctx, 20); + case 3: + return precpred(_ctx, 19); + case 4: + return precpred(_ctx, 18); + case 5: + return precpred(_ctx, 17); + case 6: + return precpred(_ctx, 16); + case 7: + return precpred(_ctx, 15); + case 8: + return precpred(_ctx, 14); + case 9: + return precpred(_ctx, 13); + case 10: + return precpred(_ctx, 12); + case 11: + return precpred(_ctx, 11); + case 12: + return precpred(_ctx, 10); + case 13: + return precpred(_ctx, 9); + case 14: + return precpred(_ctx, 8); + case 15: + return precpred(_ctx, 3); + case 16: + return precpred(_ctx, 2); + case 17: + return precpred(_ctx, 1); + case 18: + return precpred(_ctx, 21); + } + return true; + } + + public static final String _serializedATN = + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3\u00f6\u079d\4\2\t"+ + "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ + "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+ + "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+ + "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080"+ + "\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085"+ + "\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089"+ + "\4\u008a\t\u008a\4\u008b\t\u008b\3\2\5\2\u0118\n\2\3\2\3\2\7\2\u011c\n"+ + "\2\f\2\16\2\u011f\13\2\3\2\3\2\3\3\6\3\u0124\n\3\r\3\16\3\u0125\3\3\5"+ + "\3\u0129\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3"+ + "\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4\u0141\n\4\f\4\16\4\u0144\13\4\3\4\5"+ + "\4\u0147\n\4\3\5\6\5\u014a\n\5\r\5\16\5\u014b\3\6\7\6\u014f\n\6\f\6\16"+ + "\6\u0152\13\6\3\6\6\6\u0155\n\6\r\6\16\6\u0156\3\7\3\7\3\7\3\7\3\7\3\b"+ + "\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u0165\n\b\3\t\3\t\5\t\u0169\n\t\3\t\3\t\3"+ + "\t\3\n\5\n\u016f\n\n\3\n\3\n\3\n\5\n\u0174\n\n\3\n\7\n\u0177\n\n\f\n\16"+ + "\n\u017a\13\n\3\13\3\13\3\f\3\f\5\f\u0180\n\f\3\f\3\f\7\f\u0184\n\f\f"+ + "\f\16\f\u0187\13\f\3\f\3\f\3\f\3\f\5\f\u018d\n\f\3\r\3\r\3\r\3\r\3\r\5"+ + "\r\u0194\n\r\3\16\5\16\u0197\n\16\3\16\3\16\5\16\u019b\n\16\3\16\3\16"+ + "\5\16\u019f\n\16\3\16\3\16\3\16\3\16\3\16\5\16\u01a6\n\16\3\16\5\16\u01a9"+ + "\n\16\3\16\3\16\3\17\5\17\u01ae\n\17\3\17\5\17\u01b1\n\17\3\17\5\17\u01b4"+ + "\n\17\3\17\5\17\u01b7\n\17\3\17\3\17\3\17\5\17\u01bc\n\17\3\17\3\17\5"+ + "\17\u01c0\n\17\3\17\3\17\5\17\u01c4\n\17\3\17\3\17\3\17\5\17\u01c9\n\17"+ + "\3\17\3\17\5\17\u01cd\n\17\5\17\u01cf\n\17\3\17\3\17\7\17\u01d3\n\17\f"+ + "\17\16\17\u01d6\13\17\3\17\3\17\3\20\3\20\3\21\3\21\3\21\7\21\u01df\n"+ + "\21\f\21\16\21\u01e2\13\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\5\22\u01f2\n\22\3\23\3\23\3\23\7\23\u01f7\n"+ + "\23\f\23\16\23\u01fa\13\23\3\24\3\24\3\24\7\24\u01ff\n\24\f\24\16\24\u0202"+ + "\13\24\3\25\5\25\u0205\n\25\3\25\3\25\3\26\5\26\u020a\n\26\3\26\3\26\3"+ + "\26\3\26\5\26\u0210\n\26\3\27\3\27\3\27\3\27\7\27\u0216\n\27\f\27\16\27"+ + "\u0219\13\27\3\27\3\27\3\30\6\30\u021e\n\30\r\30\16\30\u021f\3\31\3\31"+ + "\3\31\3\31\5\31\u0226\n\31\3\31\3\31\3\31\7\31\u022b\n\31\f\31\16\31\u022e"+ + "\13\31\3\31\3\31\3\32\3\32\5\32\u0234\n\32\3\33\7\33\u0237\n\33\f\33\16"+ + "\33\u023a\13\33\3\34\3\34\3\34\5\34\u023f\n\34\3\35\3\35\3\35\3\35\3\35"+ + "\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35"+ + "\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\5\35\u025c\n\35\3\36\3\36\3\37"+ + "\3\37\3\37\3\37\3 \3 \3 \3 \7 \u0268\n \f \16 \u026b\13 \3 \5 \u026e\n"+ + " \3 \3 \3 \3 \3 \7 \u0275\n \f \16 \u0278\13 \3 \5 \u027b\n \3 \3 \3 "+ + "\5 \u0280\n \3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3$\3$\3$\3$\3%\3"+ + "%\3%\3%\3%\3%\3%\3%\5%\u029a\n%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\5\'\u02a5"+ + "\n\'\3\'\3\'\5\'\u02a9\n\'\3\'\3\'\5\'\u02ad\n\'\3\'\3\'\3\'\3\'\3\'\3"+ + "\'\3\'\5\'\u02b6\n\'\3(\3(\3)\3)\3*\3*\3*\3*\5*\u02c0\n*\3*\7*\u02c3\n"+ + "*\f*\16*\u02c6\13*\3*\3*\3*\5*\u02cb\n*\3*\7*\u02ce\n*\f*\16*\u02d1\13"+ + "*\3*\3*\5*\u02d5\n*\3+\3+\3+\5+\u02da\n+\3+\6+\u02dd\n+\r+\16+\u02de\3"+ + "+\3+\3,\3,\5,\u02e5\n,\3,\3,\3-\3-\5-\u02eb\n-\3-\3-\3.\3.\5.\u02f1\n"+ + ".\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61"+ + "\3\61\3\61\3\61\3\61\3\61\3\61\5\61\u0309\n\61\3\61\3\61\3\61\5\61\u030e"+ + "\n\61\3\61\5\61\u0311\n\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\5\61"+ + "\u031b\n\61\3\61\5\61\u031e\n\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3"+ + "\61\3\61\3\61\3\61\5\61\u032b\n\61\3\61\3\61\3\61\3\61\3\61\3\61\5\61"+ + "\u0333\n\61\3\62\3\62\3\62\6\62\u0338\n\62\r\62\16\62\u0339\3\62\5\62"+ + "\u033d\n\62\3\62\7\62\u0340\n\62\f\62\16\62\u0343\13\62\3\62\5\62\u0346"+ + "\n\62\3\63\3\63\3\63\3\63\3\63\7\63\u034d\n\63\f\63\16\63\u0350\13\63"+ + "\3\63\5\63\u0353\n\63\3\63\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3\65\3\65"+ + "\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67"+ + "\5\67\u036d\n\67\38\68\u0370\n8\r8\168\u0371\39\39\39\79\u0377\n9\f9\16"+ + "9\u037a\139\3:\3:\3:\3:\5:\u0380\n:\3:\3:\3:\3:\3:\3:\5:\u0388\n:\3;\5"+ + ";\u038b\n;\3;\3;\7;\u038f\n;\f;\16;\u0392\13;\3;\5;\u0395\n;\3<\5<\u0398"+ + "\n<\3<\7<\u039b\n<\f<\16<\u039e\13<\3<\5<\u03a1\n<\3<\5<\u03a4\n<\3<\5"+ + "<\u03a7\n<\3<\5<\u03aa\n<\3<\3<\3=\3=\3=\3=\5=\u03b2\n=\3=\3=\3=\7=\u03b7"+ + "\n=\f=\16=\u03ba\13=\3>\3>\3>\3>\7>\u03c0\n>\f>\16>\u03c3\13>\3>\3>\3"+ + "?\3?\3?\3?\3?\3?\3?\3?\5?\u03cf\n?\3@\3@\3@\3@\3A\3A\3A\3A\7A\u03d9\n"+ + "A\fA\16A\u03dc\13A\3A\3A\3B\5B\u03e1\nB\3B\3B\5B\u03e5\nB\3B\3B\3B\7B"+ + "\u03ea\nB\fB\16B\u03ed\13B\3B\3B\3B\5B\u03f2\nB\3B\3B\5B\u03f6\nB\3B\3"+ + "B\3B\7B\u03fb\nB\fB\16B\u03fe\13B\3B\3B\3B\3B\5B\u0404\nB\3B\3B\5B\u0408"+ + "\nB\3B\3B\3B\3B\3B\5B\u040f\nB\3B\3B\5B\u0413\nB\5B\u0415\nB\3B\3B\3B"+ + "\3B\5B\u041b\nB\3C\3C\3C\7C\u0420\nC\fC\16C\u0423\13C\3C\5C\u0426\nC\3"+ + "D\3D\5D\u042a\nD\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\5F\u0437\nF\3F\5F\u043a"+ + "\nF\3F\3F\3G\3G\3G\5G\u0441\nG\3G\3G\3H\3H\3H\5H\u0448\nH\3I\3I\5I\u044c"+ + "\nI\3I\3I\3J\3J\5J\u0452\nJ\3K\3K\5K\u0456\nK\3L\6L\u0459\nL\rL\16L\u045a"+ + "\3M\3M\3M\5M\u0460\nM\3N\3N\3N\3N\3O\5O\u0467\nO\3O\3O\3O\3O\7O\u046d"+ + "\nO\fO\16O\u0470\13O\3O\3O\3P\3P\3P\3P\5P\u0478\nP\3P\3P\5P\u047c\nP\3"+ + "P\3P\7P\u0480\nP\fP\16P\u0483\13P\3P\3P\3Q\3Q\3Q\3Q\5Q\u048b\nQ\3Q\3Q"+ + "\3Q\5Q\u0490\nQ\3Q\3Q\3Q\3Q\3Q\5Q\u0497\nQ\3R\3R\3R\7R\u049c\nR\fR\16"+ + "R\u049f\13R\3S\3S\3S\5S\u04a4\nS\3S\3S\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3"+ + "T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3"+ + "T\5T\u04ca\nT\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3"+ + "T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\5T\u04f4"+ + "\nT\3T\3T\3T\3T\3T\5T\u04fb\nT\3T\3T\3T\5T\u0500\nT\5T\u0502\nT\3T\3T"+ + "\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T"+ + "\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\5T\u0528\nT\3T\3T\3T\3T\3T\3T\3T\3T"+ + "\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\7T\u053e\nT\fT\16T\u0541\13T\3U\3"+ + "U\5U\u0545\nU\3V\3V\3V\5V\u054a\nV\3V\3V\3V\5V\u054f\nV\3V\5V\u0552\n"+ + "V\3V\3V\3V\3V\5V\u0558\nV\3W\3W\7W\u055c\nW\fW\16W\u055f\13W\3W\3W\6W"+ + "\u0563\nW\rW\16W\u0564\3W\7W\u0568\nW\fW\16W\u056b\13W\3W\7W\u056e\nW"+ + "\fW\16W\u0571\13W\3W\3W\3W\3W\3W\6W\u0578\nW\rW\16W\u0579\3W\7W\u057d"+ + "\nW\fW\16W\u0580\13W\3W\5W\u0583\nW\3W\3W\5W\u0587\nW\3X\5X\u058a\nX\3"+ + "X\3X\3Y\3Y\3Y\5Y\u0591\nY\3Y\5Y\u0594\nY\3Y\3Y\3Z\5Z\u0599\nZ\3Z\3Z\5"+ + "Z\u059d\nZ\3Z\3Z\3Z\3Z\5Z\u05a3\nZ\3Z\3Z\5Z\u05a7\nZ\3Z\3Z\3Z\3Z\3Z\3"+ + "Z\3Z\3Z\3Z\5Z\u05b2\nZ\3[\3[\3[\3[\3[\3[\3[\3[\7[\u05bc\n[\f[\16[\u05bf"+ + "\13[\3[\5[\u05c2\n[\3[\3[\3\\\3\\\3\\\7\\\u05c9\n\\\f\\\16\\\u05cc\13"+ + "\\\3\\\3\\\3\\\3]\3]\3]\5]\u05d4\n]\3^\3^\3_\3_\3_\3_\5_\u05dc\n_\3_\3"+ + "_\5_\u05e0\n_\3`\3`\3`\7`\u05e5\n`\f`\16`\u05e8\13`\3`\5`\u05eb\n`\3a"+ + "\3a\3a\5a\u05f0\na\3a\3a\3a\5a\u05f5\na\3a\3a\5a\u05f9\na\3b\3b\3b\3b"+ + "\3b\7b\u0600\nb\fb\16b\u0603\13b\3b\3b\3c\5c\u0608\nc\3c\3c\3d\3d\5d\u060e"+ + "\nd\3d\5d\u0611\nd\3e\3e\5e\u0615\ne\3e\5e\u0618\ne\3e\3e\3e\5e\u061d"+ + "\ne\3f\5f\u0620\nf\3f\5f\u0623\nf\3f\5f\u0626\nf\3f\5f\u0629\nf\3f\3f"+ + "\5f\u062d\nf\3f\3f\5f\u0631\nf\3f\3f\5f\u0635\nf\3f\3f\3f\5f\u063a\nf"+ + "\3f\3f\5f\u063e\nf\5f\u0640\nf\3f\3f\7f\u0644\nf\ff\16f\u0647\13f\3f\3"+ + "f\3g\3g\3g\7g\u064e\ng\fg\16g\u0651\13g\3h\5h\u0654\nh\3h\5h\u0657\nh"+ + "\3h\3h\3i\3i\3i\3i\7i\u065f\ni\fi\16i\u0662\13i\3i\3i\5i\u0666\ni\5i\u0668"+ + "\ni\3j\3j\3j\5j\u066d\nj\3j\3j\3j\3j\7j\u0673\nj\fj\16j\u0676\13j\3j\5"+ + "j\u0679\nj\3j\3j\5j\u067d\nj\3k\3k\3k\7k\u0682\nk\fk\16k\u0685\13k\3l"+ + "\3l\3l\3l\7l\u068b\nl\fl\16l\u068e\13l\3l\5l\u0691\nl\3l\5l\u0694\nl\3"+ + "l\3l\3m\5m\u0699\nm\3m\5m\u069c\nm\3m\3m\3m\5m\u06a1\nm\3n\3n\3n\3o\3"+ + "o\3o\3o\3o\3o\5o\u06ac\no\5o\u06ae\no\3o\3o\3o\3o\5o\u06b4\no\5o\u06b6"+ + "\no\3o\3o\3o\3o\3o\5o\u06bd\no\3o\3o\3o\5o\u06c2\no\7o\u06c4\no\fo\16"+ + "o\u06c7\13o\5o\u06c9\no\3p\3p\3p\3p\3p\5p\u06d0\np\3q\3q\3q\3q\5q\u06d6"+ + "\nq\3r\3r\3s\3s\3s\3s\3s\3s\5s\u06e0\ns\3s\3s\3s\5s\u06e5\ns\3s\3s\3s"+ + "\5s\u06ea\ns\5s\u06ec\ns\3t\3t\3u\3u\6u\u06f2\nu\ru\16u\u06f3\3u\3u\6"+ + "u\u06f8\nu\ru\16u\u06f9\3u\3u\3u\7u\u06ff\nu\fu\16u\u0702\13u\3u\5u\u0705"+ + "\nu\3v\3v\3v\5v\u070a\nv\3w\3w\3w\7w\u070f\nw\fw\16w\u0712\13w\3x\3x\7"+ + "x\u0716\nx\fx\16x\u0719\13x\3y\3y\3y\3y\3y\3y\5y\u0721\ny\3z\3z\3z\5z"+ + "\u0726\nz\3{\3{\3{\3|\3|\3|\3|\5|\u072f\n|\3}\5}\u0732\n}\3}\6}\u0735"+ + "\n}\r}\16}\u0736\3}\7}\u073a\n}\f}\16}\u073d\13}\3~\3~\3~\5~\u0742\n~"+ + "\3~\3~\3~\3~\5~\u0748\n~\3\177\3\177\5\177\u074c\n\177\3\u0080\3\u0080"+ + "\3\u0080\3\u0080\3\u0080\5\u0080\u0753\n\u0080\3\u0080\7\u0080\u0756\n"+ + "\u0080\f\u0080\16\u0080\u0759\13\u0080\3\u0081\7\u0081\u075c\n\u0081\f"+ + "\u0081\16\u0081\u075f\13\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081"+ + "\3\u0081\5\u0081\u0767\n\u0081\3\u0081\7\u0081\u076a\n\u0081\f\u0081\16"+ + "\u0081\u076d\13\u0081\3\u0082\3\u0082\5\u0082\u0771\n\u0082\3\u0082\3"+ + "\u0082\3\u0082\3\u0082\3\u0082\5\u0082\u0778\n\u0082\3\u0083\5\u0083\u077b"+ + "\n\u0083\3\u0083\3\u0083\5\u0083\u077f\n\u0083\7\u0083\u0781\n\u0083\f"+ + "\u0083\16\u0083\u0784\13\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084"+ + "\3\u0084\3\u0084\5\u0084\u078d\n\u0084\3\u0085\3\u0085\3\u0086\3\u0086"+ + "\3\u0087\3\u0087\3\u0088\3\u0088\3\u0089\3\u0089\3\u008a\3\u008a\3\u008b"+ + "\3\u008b\3\u008b\2\4x\u00a6\u008c\2\4\6\b\n\f\16\20\22\24\26\30\32\34"+ + "\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082"+ + "\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a"+ + "\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2"+ + "\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca"+ + "\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2"+ + "\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa"+ + "\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112"+ + "\u0114\2\33\4\2::TT\4\288||\3\2\u00dd\u00de\4\2aayy\3\2\u00d1\u00d2\4"+ + "\2\u00ca\u00ca\u00cc\u00cd\3\2Z[\3\2tu\3\2\u00a7\u00a8\3\2\u00ce\u00d0"+ + "\4\2\u00cc\u00cd\u00d4\u00d4\3\2\u00c0\u00c1\4\2\u00ad\u00ae\u00c6\u00c7"+ + "\3\2\u00a9\u00ac\6\2\u00af\u00b1\u00b3\u00bb\u00bf\u00bf\u00df\u00df\3"+ + "\2\u00cc\u00cd\4\2\u00e4\u00e5\u00e7\u00e8\4\288mm\4\2..OO\4\2.\u00a2"+ + "\u00e3\u00e3\6\2..OOpsxx\3\2\u009b\u00a2\3\2\u008b\u009a\t\2//\62\62@"+ + "@`allvvyy\13\2//\61\62?@QQ^allvvyy\177\u0081\u088a\2\u0117\3\2\2\2\4\u0128"+ + "\3\2\2\2\6\u0146\3\2\2\2\b\u0149\3\2\2\2\n\u0150\3\2\2\2\f\u0158\3\2\2"+ + "\2\16\u0164\3\2\2\2\20\u0166\3\2\2\2\22\u016e\3\2\2\2\24\u017b\3\2\2\2"+ + "\26\u017d\3\2\2\2\30\u0193\3\2\2\2\32\u0196\3\2\2\2\34\u01ad\3\2\2\2\36"+ + "\u01d9\3\2\2\2 \u01db\3\2\2\2\"\u01f1\3\2\2\2$\u01f3\3\2\2\2&\u01fb\3"+ + "\2\2\2(\u0204\3\2\2\2*\u0209\3\2\2\2,\u0211\3\2\2\2.\u021d\3\2\2\2\60"+ + "\u0221\3\2\2\2\62\u0231\3\2\2\2\64\u0238\3\2\2\2\66\u023e\3\2\2\28\u025b"+ + "\3\2\2\2:\u025d\3\2\2\2<\u025f\3\2\2\2>\u027f\3\2\2\2@\u0281\3\2\2\2B"+ + "\u0285\3\2\2\2D\u028a\3\2\2\2F\u028d\3\2\2\2H\u0291\3\2\2\2J\u029b\3\2"+ + "\2\2L\u02a1\3\2\2\2N\u02b7\3\2\2\2P\u02b9\3\2\2\2R\u02bb\3\2\2\2T\u02dc"+ + "\3\2\2\2V\u02e2\3\2\2\2X\u02e8\3\2\2\2Z\u02ee\3\2\2\2\\\u02f4\3\2\2\2"+ + "^\u02f7\3\2\2\2`\u02fd\3\2\2\2b\u0334\3\2\2\2d\u0347\3\2\2\2f\u0357\3"+ + "\2\2\2h\u035a\3\2\2\2j\u035e\3\2\2\2l\u0362\3\2\2\2n\u036f\3\2\2\2p\u0373"+ + "\3\2\2\2r\u0387\3\2\2\2t\u038a\3\2\2\2v\u0397\3\2\2\2x\u03b1\3\2\2\2z"+ + "\u03bb\3\2\2\2|\u03ce\3\2\2\2~\u03d0\3\2\2\2\u0080\u03d4\3\2\2\2\u0082"+ + "\u041a\3\2\2\2\u0084\u0425\3\2\2\2\u0086\u0429\3\2\2\2\u0088\u042b\3\2"+ + "\2\2\u008a\u0432\3\2\2\2\u008c\u0440\3\2\2\2\u008e\u0444\3\2\2\2\u0090"+ + "\u0449\3\2\2\2\u0092\u0451\3\2\2\2\u0094\u0455\3\2\2\2\u0096\u0458\3\2"+ + "\2\2\u0098\u045c\3\2\2\2\u009a\u0461\3\2\2\2\u009c\u0466\3\2\2\2\u009e"+ + "\u0473\3\2\2\2\u00a0\u0496\3\2\2\2\u00a2\u0498\3\2\2\2\u00a4\u04a0\3\2"+ + "\2\2\u00a6\u0501\3\2\2\2\u00a8\u0544\3\2\2\2\u00aa\u0551\3\2\2\2\u00ac"+ + "\u0586\3\2\2\2\u00ae\u0589\3\2\2\2\u00b0\u0590\3\2\2\2\u00b2\u05b1\3\2"+ + "\2\2\u00b4\u05b3\3\2\2\2\u00b6\u05c5\3\2\2\2\u00b8\u05d0\3\2\2\2\u00ba"+ + "\u05d5\3\2\2\2\u00bc\u05d7\3\2\2\2\u00be\u05e1\3\2\2\2\u00c0\u05f8\3\2"+ + "\2\2\u00c2\u05fa\3\2\2\2\u00c4\u0607\3\2\2\2\u00c6\u0610\3\2\2\2\u00c8"+ + "\u061c\3\2\2\2\u00ca\u061f\3\2\2\2\u00cc\u064a\3\2\2\2\u00ce\u0653\3\2"+ + "\2\2\u00d0\u0667\3\2\2\2\u00d2\u067c\3\2\2\2\u00d4\u067e\3\2\2\2\u00d6"+ + "\u0686\3\2\2\2\u00d8\u06a0\3\2\2\2\u00da\u06a2\3\2\2\2\u00dc\u06c8\3\2"+ + "\2\2\u00de\u06cf\3\2\2\2\u00e0\u06d5\3\2\2\2\u00e2\u06d7\3\2\2\2\u00e4"+ + "\u06eb\3\2\2\2\u00e6\u06ed\3\2\2\2\u00e8\u0704\3\2\2\2\u00ea\u0709\3\2"+ + "\2\2\u00ec\u070b\3\2\2\2\u00ee\u0713\3\2\2\2\u00f0\u0720\3\2\2\2\u00f2"+ + "\u0722\3\2\2\2\u00f4\u0727\3\2\2\2\u00f6\u072e\3\2\2\2\u00f8\u0731\3\2"+ + "\2\2\u00fa\u0747\3\2\2\2\u00fc\u074b\3\2\2\2\u00fe\u0752\3\2\2\2\u0100"+ + "\u075d\3\2\2\2\u0102\u0777\3\2\2\2\u0104\u077a\3\2\2\2\u0106\u078c\3\2"+ + "\2\2\u0108\u078e\3\2\2\2\u010a\u0790\3\2\2\2\u010c\u0792\3\2\2\2\u010e"+ + "\u0794\3\2\2\2\u0110\u0796\3\2\2\2\u0112\u0798\3\2\2\2\u0114\u079a\3\2"+ + "\2\2\u0116\u0118\7\f\2\2\u0117\u0116\3\2\2\2\u0117\u0118\3\2\2\2\u0118"+ + "\u011d\3\2\2\2\u0119\u011c\5\4\3\2\u011a\u011c\5\n\6\2\u011b\u0119\3\2"+ + "\2\2\u011b\u011a\3\2\2\2\u011c\u011f\3\2\2\2\u011d\u011b\3\2\2\2\u011d"+ + "\u011e\3\2\2\2\u011e\u0120\3\2\2\2\u011f\u011d\3\2\2\2\u0120\u0121\7\2"+ + "\2\3\u0121\3\3\2\2\2\u0122\u0124\5\6\4\2\u0123\u0122\3\2\2\2\u0124\u0125"+ + "\3\2\2\2\u0125\u0123\3\2\2\2\u0125\u0126\3\2\2\2\u0126\u0129\3\2\2\2\u0127"+ + "\u0129\5\b\5\2\u0128\u0123\3\2\2\2\u0128\u0127\3\2\2\2\u0129\5\3\2\2\2"+ + "\u012a\u0147\7\n\2\2\u012b\u0147\7\21\2\2\u012c\u0147\7\b\2\2\u012d\u0147"+ + "\7\13\2\2\u012e\u0147\7\32\2\2\u012f\u0147\7\22\2\2\u0130\u0147\7\23\2"+ + "\2\u0131\u0147\7\4\2\2\u0132\u0147\7\24\2\2\u0133\u0147\7\25\2\2\u0134"+ + "\u0147\7\35\2\2\u0135\u0147\7\26\2\2\u0136\u0147\7!\2\2\u0137\u0147\7"+ + "\27\2\2\u0138\u0147\7\30\2\2\u0139\u0147\7\36\2\2\u013a\u0147\7\"\2\2"+ + "\u013b\u0147\7\'\2\2\u013c\u0147\7\7\2\2\u013d\u0147\7%\2\2\u013e\u0142"+ + "\7\5\2\2\u013f\u0141\7\16\2\2\u0140\u013f\3\2\2\2\u0141\u0144\3\2\2\2"+ + "\u0142\u0140\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0145\3\2\2\2\u0144\u0142"+ + "\3\2\2\2\u0145\u0147\7\17\2\2\u0146\u012a\3\2\2\2\u0146\u012b\3\2\2\2"+ + "\u0146\u012c\3\2\2\2\u0146\u012d\3\2\2\2\u0146\u012e\3\2\2\2\u0146\u012f"+ + "\3\2\2\2\u0146\u0130\3\2\2\2\u0146\u0131\3\2\2\2\u0146\u0132\3\2\2\2\u0146"+ + "\u0133\3\2\2\2\u0146\u0134\3\2\2\2\u0146\u0135\3\2\2\2\u0146\u0136\3\2"+ + "\2\2\u0146\u0137\3\2\2\2\u0146\u0138\3\2\2\2\u0146\u0139\3\2\2\2\u0146"+ + "\u013a\3\2\2\2\u0146\u013b\3\2\2\2\u0146\u013c\3\2\2\2\u0146\u013d\3\2"+ + "\2\2\u0146\u013e\3\2\2\2\u0147\7\3\2\2\2\u0148\u014a\7$\2\2\u0149\u0148"+ + "\3\2\2\2\u014a\u014b\3\2\2\2\u014b\u0149\3\2\2\2\u014b\u014c\3\2\2\2\u014c"+ + "\t\3\2\2\2\u014d\u014f\5\f\7\2\u014e\u014d\3\2\2\2\u014f\u0152\3\2\2\2"+ + "\u0150\u014e\3\2\2\2\u0150\u0151\3\2\2\2\u0151\u0154\3\2\2\2\u0152\u0150"+ + "\3\2\2\2\u0153\u0155\5\16\b\2\u0154\u0153\3\2\2\2\u0155\u0156\3\2\2\2"+ + "\u0156\u0154\3\2\2\2\u0156\u0157\3\2\2\2\u0157\13\3\2\2\2\u0158\u0159"+ + "\7Y\2\2\u0159\u015a\7i\2\2\u015a\u015b\5\u00d0i\2\u015b\u015c\7\u00de"+ + "\2\2\u015c\r\3\2\2\2\u015d\u0165\58\35\2\u015e\u0165\5\20\t\2\u015f\u0165"+ + "\5\26\f\2\u0160\u0165\5\32\16\2\u0161\u0165\5\34\17\2\u0162\u0165\5\u009c"+ + "O\2\u0163\u0165\5\u009eP\2\u0164\u015d\3\2\2\2\u0164\u015e\3\2\2\2\u0164"+ + "\u015f\3\2\2\2\u0164\u0160\3\2\2\2\u0164\u0161\3\2\2\2\u0164\u0162\3\2"+ + "\2\2\u0164\u0163\3\2\2\2\u0165\17\3\2\2\2\u0166\u0168\7\u0082\2\2\u0167"+ + "\u0169\t\2\2\2\u0168\u0167\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016a\3\2"+ + "\2\2\u016a\u016b\5\22\n\2\u016b\u016c\7\u00de\2\2\u016c\21\3\2\2\2\u016d"+ + "\u016f\7\u00c4\2\2\u016e\u016d\3\2\2\2\u016e\u016f\3\2\2\2\u016f\u0170"+ + "\3\2\2\2\u0170\u0178\5\24\13\2\u0171\u0173\7\u00dc\2\2\u0172\u0174\7\u00c4"+ + "\2\2\u0173\u0172\3\2\2\2\u0173\u0174\3\2\2\2\u0174\u0175\3\2\2\2\u0175"+ + "\u0177\5\24\13\2\u0176\u0171\3\2\2\2\u0177\u017a\3\2\2\2\u0178\u0176\3"+ + "\2\2\2\u0178\u0179\3\2\2\2\u0179\23\3\2\2\2\u017a\u0178\3\2\2\2\u017b"+ + "\u017c\5\u00d0i\2\u017c\25\3\2\2\2\u017d\u018c\7i\2\2\u017e\u0180\5\u00d0"+ + "i\2\u017f\u017e\3\2\2\2\u017f\u0180\3\2\2\2\u0180\u0181\3\2\2\2\u0181"+ + "\u0185\7\u00da\2\2\u0182\u0184\5\30\r\2\u0183\u0182\3\2\2\2\u0184\u0187"+ + "\3\2\2\2\u0185\u0183\3\2\2\2\u0185\u0186\3\2\2\2\u0186\u0188\3\2\2\2\u0187"+ + "\u0185\3\2\2\2\u0188\u018d\7\u00db\2\2\u0189\u018a\5\u00d0i\2\u018a\u018b"+ + "\7\u00de\2\2\u018b\u018d\3\2\2\2\u018c\u017f\3\2\2\2\u018c\u0189\3\2\2"+ + "\2\u018d\27\3\2\2\2\u018e\u0194\58\35\2\u018f\u0194\5\20\t\2\u0190\u0194"+ + "\5\32\16\2\u0191\u0194\5\34\17\2\u0192\u0194\5\u009cO\2\u0193\u018e\3"+ + "\2\2\2\u0193\u018f\3\2\2\2\u0193\u0190\3\2\2\2\u0193\u0191\3\2\2\2\u0193"+ + "\u0192\3\2\2\2\u0194\31\3\2\2\2\u0195\u0197\5.\30\2\u0196\u0195\3\2\2"+ + "\2\u0196\u0197\3\2\2\2\u0197\u0198\3\2\2\2\u0198\u019a\7T\2\2\u0199\u019b"+ + "\7\u00c8\2\2\u019a\u0199\3\2\2\2\u019a\u019b\3\2\2\2\u019b\u019c\3\2\2"+ + "\2\u019c\u019e\5\u010a\u0086\2\u019d\u019f\5\"\22\2\u019e\u019d\3\2\2"+ + "\2\u019e\u019f\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0\u01a1\7\u00d6\2\2\u01a1"+ + "\u01a2\5t;\2\u01a2\u01a8\7\u00d7\2\2\u01a3\u01a5\7\u00dd\2\2\u01a4\u01a6"+ + "\7\u00d5\2\2\u01a5\u01a4\3\2\2\2\u01a5\u01a6\3\2\2\2\u01a6\u01a7\3\2\2"+ + "\2\u01a7\u01a9\5x=\2\u01a8\u01a3\3\2\2\2\u01a8\u01a9\3\2\2\2\u01a9\u01aa"+ + "\3\2\2\2\u01aa\u01ab\5<\37\2\u01ab\33\3\2\2\2\u01ac\u01ae\5.\30\2\u01ad"+ + "\u01ac\3\2\2\2\u01ad\u01ae\3\2\2\2\u01ae\u01b0\3\2\2\2\u01af\u01b1\7p"+ + "\2\2\u01b0\u01af\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01b3\3\2\2\2\u01b2"+ + "\u01b4\5\u0108\u0085\2\u01b3\u01b2\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4\u01b6"+ + "\3\2\2\2\u01b5\u01b7\7n\2\2\u01b6\u01b5\3\2\2\2\u01b6\u01b7\3\2\2\2\u01b7"+ + "\u01ce\3\2\2\2\u01b8\u01b9\5\36\20\2\u01b9\u01bb\5\u010a\u0086\2\u01ba"+ + "\u01bc\5\"\22\2\u01bb\u01ba\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc\u01bf\3"+ + "\2\2\2\u01bd\u01be\7N\2\2\u01be\u01c0\5\u00c6d\2\u01bf\u01bd\3\2\2\2\u01bf"+ + "\u01c0\3\2\2\2\u01c0\u01c3\3\2\2\2\u01c1\u01c2\7X\2\2\u01c2\u01c4\5 \21"+ + "\2\u01c3\u01c1\3\2\2\2\u01c3\u01c4\3\2\2\2\u01c4\u01cf\3\2\2\2\u01c5\u01c6"+ + "\7b\2\2\u01c6\u01c8\5\u010a\u0086\2\u01c7\u01c9\5\"\22\2\u01c8\u01c7\3"+ + "\2\2\2\u01c8\u01c9\3\2\2\2\u01c9\u01cc\3\2\2\2\u01ca\u01cb\7N\2\2\u01cb"+ + "\u01cd\5 \21\2\u01cc\u01ca\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01cf\3\2"+ + "\2\2\u01ce\u01b8\3\2\2\2\u01ce\u01c5\3\2\2\2\u01cf\u01d0\3\2\2\2\u01d0"+ + "\u01d4\7\u00da\2\2\u01d1\u01d3\5\u0082B\2\u01d2\u01d1\3\2\2\2\u01d3\u01d6"+ + "\3\2\2\2\u01d4\u01d2\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d7\3\2\2\2\u01d6"+ + "\u01d4\3\2\2\2\u01d7\u01d8\7\u00db\2\2\u01d8\35\3\2\2\2\u01d9\u01da\t"+ + "\3\2\2\u01da\37\3\2\2\2\u01db\u01e0\5\u00c6d\2\u01dc\u01dd\7\u00dc\2\2"+ + "\u01dd\u01df\5\u00c6d\2\u01de\u01dc\3\2\2\2\u01df\u01e2\3\2\2\2\u01e0"+ + "\u01de\3\2\2\2\u01e0\u01e1\3\2\2\2\u01e1!\3\2\2\2\u01e2\u01e0\3\2\2\2"+ + "\u01e3\u01e4\7\u00a4\2\2\u01e4\u01e5\5$\23\2\u01e5\u01e6\7\u00a5\2\2\u01e6"+ + "\u01f2\3\2\2\2\u01e7\u01e8\7\u00a4\2\2\u01e8\u01e9\5&\24\2\u01e9\u01ea"+ + "\7\u00a5\2\2\u01ea\u01f2\3\2\2\2\u01eb\u01ec\7\u00a4\2\2\u01ec\u01ed\5"+ + "$\23\2\u01ed\u01ee\7\u00dc\2\2\u01ee\u01ef\5&\24\2\u01ef\u01f0\7\u00a5"+ + "\2\2\u01f0\u01f2\3\2\2\2\u01f1\u01e3\3\2\2\2\u01f1\u01e7\3\2\2\2\u01f1"+ + "\u01eb\3\2\2\2\u01f2#\3\2\2\2\u01f3\u01f8\5(\25\2\u01f4\u01f5\7\u00dc"+ + "\2\2\u01f5\u01f7\5(\25\2\u01f6\u01f4\3\2\2\2\u01f7\u01fa\3\2\2\2\u01f8"+ + "\u01f6\3\2\2\2\u01f8\u01f9\3\2\2\2\u01f9%\3\2\2\2\u01fa\u01f8\3\2\2\2"+ + "\u01fb\u0200\5*\26\2\u01fc\u01fd\7\u00dc\2\2\u01fd\u01ff\5*\26\2\u01fe"+ + "\u01fc\3\2\2\2\u01ff\u0202\3\2\2\2\u0200\u01fe\3\2\2\2\u0200\u0201\3\2"+ + "\2\2\u0201\'\3\2\2\2\u0202\u0200\3\2\2\2\u0203\u0205\5.\30\2\u0204\u0203"+ + "\3\2\2\2\u0204\u0205\3\2\2\2\u0205\u0206\3\2\2\2\u0206\u0207\5\u010a\u0086"+ + "\2\u0207)\3\2\2\2\u0208\u020a\5.\30\2\u0209\u0208\3\2\2\2\u0209\u020a"+ + "\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u020c\5\u010a\u0086\2\u020c\u020f\7"+ + "\u00df\2\2\u020d\u0210\5\u00c6d\2\u020e\u0210\5\u0112\u008a\2\u020f\u020d"+ + "\3\2\2\2\u020f\u020e\3\2\2\2\u0210+\3\2\2\2\u0211\u0212\7\u00a4\2\2\u0212"+ + "\u0217\5\u00c8e\2\u0213\u0214\7\u00dc\2\2\u0214\u0216\5\u00c8e\2\u0215"+ + "\u0213\3\2\2\2\u0216\u0219\3\2\2\2\u0217\u0215\3\2\2\2\u0217\u0218\3\2"+ + "\2\2\u0218\u021a\3\2\2\2\u0219\u0217\3\2\2\2\u021a\u021b\7\u00a5\2\2\u021b"+ + "-\3\2\2\2\u021c\u021e\5\60\31\2\u021d\u021c\3\2\2\2\u021e\u021f\3\2\2"+ + "\2\u021f\u021d\3\2\2\2\u021f\u0220\3\2\2\2\u0220/\3\2\2\2\u0221\u0225"+ + "\7-\2\2\u0222\u0223\5\u010a\u0086\2\u0223\u0224\7\u00dd\2\2\u0224\u0226"+ + "\3\2\2\2\u0225\u0222\3\2\2\2\u0225\u0226\3\2\2\2\u0226\u0227\3\2\2\2\u0227"+ + "\u022c\5\62\32\2\u0228\u0229\7\u00dc\2\2\u0229\u022b\5\62\32\2\u022a\u0228"+ + "\3\2\2\2\u022b\u022e\3\2\2\2\u022c\u022a\3\2\2\2\u022c\u022d\3\2\2\2\u022d"+ + "\u022f\3\2\2\2\u022e\u022c\3\2\2\2\u022f\u0230\7\u00d9\2\2\u0230\61\3"+ + "\2\2\2\u0231\u0233\5\u00ceh\2\u0232\u0234\5\u00d6l\2\u0233\u0232\3\2\2"+ + "\2\u0233\u0234\3\2\2\2\u0234\63\3\2\2\2\u0235\u0237\5\66\34\2\u0236\u0235"+ + "\3\2\2\2\u0237\u023a\3\2\2\2\u0238\u0236\3\2\2\2\u0238\u0239\3\2\2\2\u0239"+ + "\65\3\2\2\2\u023a\u0238\3\2\2\2\u023b\u023f\58\35\2\u023c\u023f\5\32\16"+ + "\2\u023d\u023f\5\34\17\2\u023e\u023b\3\2\2\2\u023e\u023c\3\2\2\2\u023e"+ + "\u023d\3\2\2\2\u023f\67\3\2\2\2\u0240\u0241\5\u010a\u0086\2\u0241\u0242"+ + "\7\u00dd\2\2\u0242\u025c\3\2\2\2\u0243\u025c\5<\37\2\u0244\u025c\5> \2"+ + "\u0245\u025c\5H%\2\u0246\u025c\5J&\2\u0247\u025c\5L\'\2\u0248\u025c\5"+ + "R*\2\u0249\u025c\5V,\2\u024a\u025c\5X-\2\u024b\u025c\5Z.\2\u024c\u024d"+ + "\5\u00bc_\2\u024d\u024e\7\u00de\2\2\u024e\u025c\3\2\2\2\u024f\u025c\5"+ + "z>\2\u0250\u025c\5\u0080A\2\u0251\u025c\5~@\2\u0252\u025c\5\\/\2\u0253"+ + "\u025c\5^\60\2\u0254\u025c\5`\61\2\u0255\u025c\5b\62\2\u0256\u025c\5h"+ + "\65\2\u0257\u025c\5j\66\2\u0258\u025c\5l\67\2\u0259\u025c\5:\36\2\u025a"+ + "\u025c\5n8\2\u025b\u0240\3\2\2\2\u025b\u0243\3\2\2\2\u025b\u0244\3\2\2"+ + "\2\u025b\u0245\3\2\2\2\u025b\u0246\3\2\2\2\u025b\u0247\3\2\2\2\u025b\u0248"+ + "\3\2\2\2\u025b\u0249\3\2\2\2\u025b\u024a\3\2\2\2\u025b\u024b\3\2\2\2\u025b"+ + "\u024c\3\2\2\2\u025b\u024f\3\2\2\2\u025b\u0250\3\2\2\2\u025b\u0251\3\2"+ + "\2\2\u025b\u0252\3\2\2\2\u025b\u0253\3\2\2\2\u025b\u0254\3\2\2\2\u025b"+ + "\u0255\3\2\2\2\u025b\u0256\3\2\2\2\u025b\u0257\3\2\2\2\u025b\u0258\3\2"+ + "\2\2\u025b\u0259\3\2\2\2\u025b\u025a\3\2\2\2\u025c9\3\2\2\2\u025d\u025e"+ + "\7\u00de\2\2\u025e;\3\2\2\2\u025f\u0260\7\u00da\2\2\u0260\u0261\5\64\33"+ + "\2\u0261\u0262\7\u00db\2\2\u0262=\3\2\2\2\u0263\u0264\7W\2\2\u0264\u0265"+ + "\5\u00a4S\2\u0265\u0269\58\35\2\u0266\u0268\5@!\2\u0267\u0266\3\2\2\2"+ + "\u0268\u026b\3\2\2\2\u0269\u0267\3\2\2\2\u0269\u026a\3\2\2\2\u026a\u026d"+ + "\3\2\2\2\u026b\u0269\3\2\2\2\u026c\u026e\5D#\2\u026d\u026c\3\2\2\2\u026d"+ + "\u026e\3\2\2\2\u026e\u0280\3\2\2\2\u026f\u0270\7W\2\2\u0270\u0271\5\u00a4"+ + "S\2\u0271\u0272\7\u00dd\2\2\u0272\u0276\5\64\33\2\u0273\u0275\5B\"\2\u0274"+ + "\u0273\3\2\2\2\u0275\u0278\3\2\2\2\u0276\u0274\3\2\2\2\u0276\u0277\3\2"+ + "\2\2\u0277\u027a\3\2\2\2\u0278\u0276\3\2\2\2\u0279\u027b\5F$\2\u027a\u0279"+ + "\3\2\2\2\u027a\u027b\3\2\2\2\u027b\u027c\3\2\2\2\u027c\u027d\7I\2\2\u027d"+ + "\u027e\7\u00de\2\2\u027e\u0280\3\2\2\2\u027f\u0263\3\2\2\2\u027f\u026f"+ + "\3\2\2\2\u0280?\3\2\2\2\u0281\u0282\7C\2\2\u0282\u0283\5\u00a4S\2\u0283"+ + "\u0284\58\35\2\u0284A\3\2\2\2\u0285\u0286\7C\2\2\u0286\u0287\5\u00a4S"+ + "\2\u0287\u0288\7\u00dd\2\2\u0288\u0289\5\64\33\2\u0289C\3\2\2\2\u028a"+ + "\u028b\7B\2\2\u028b\u028c\58\35\2\u028cE\3\2\2\2\u028d\u028e\7B\2\2\u028e"+ + "\u028f\7\u00dd\2\2\u028f\u0290\5\64\33\2\u0290G\3\2\2\2\u0291\u0292\7"+ + "\u0084\2\2\u0292\u0299\5\u00a4S\2\u0293\u029a\58\35\2\u0294\u0295\7\u00dd"+ + "\2\2\u0295\u0296\5\64\33\2\u0296\u0297\7K\2\2\u0297\u0298\7\u00de\2\2"+ + "\u0298\u029a\3\2\2\2\u0299\u0293\3\2\2\2\u0299\u0294\3\2\2\2\u029aI\3"+ + "\2\2\2\u029b\u029c\7>\2\2\u029c\u029d\58\35\2\u029d\u029e\7\u0084\2\2"+ + "\u029e\u029f\5\u00a4S\2\u029f\u02a0\7\u00de\2\2\u02a0K\3\2\2\2\u02a1\u02a2"+ + "\7R\2\2\u02a2\u02a4\7\u00d6\2\2\u02a3\u02a5\5N(\2\u02a4\u02a3\3\2\2\2"+ + "\u02a4\u02a5\3\2\2\2\u02a5\u02a6\3\2\2\2\u02a6\u02a8\7\u00de\2\2\u02a7"+ + "\u02a9\5\u00a2R\2\u02a8\u02a7\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02aa"+ + "\3\2\2\2\u02aa\u02ac\7\u00de\2\2\u02ab\u02ad\5P)\2\u02ac\u02ab\3\2\2\2"+ + "\u02ac\u02ad\3\2\2\2\u02ad\u02ae\3\2\2\2\u02ae\u02b5\7\u00d7\2\2\u02af"+ + "\u02b6\58\35\2\u02b0\u02b1\7\u00dd\2\2\u02b1\u02b2\5\64\33\2\u02b2\u02b3"+ + "\7G\2\2\u02b3\u02b4\7\u00de\2\2\u02b4\u02b6\3\2\2\2\u02b5\u02af\3\2\2"+ + "\2\u02b5\u02b0\3\2\2\2\u02b6M\3\2\2\2\u02b7\u02b8\5\u00a2R\2\u02b8O\3"+ + "\2\2\2\u02b9\u02ba\5\u00a2R\2\u02baQ\3\2\2\2\u02bb\u02bc\7z\2\2\u02bc"+ + "\u02d4\5\u00a4S\2\u02bd\u02bf\7\u00da\2\2\u02be\u02c0\7\u00de\2\2\u02bf"+ + "\u02be\3\2\2\2\u02bf\u02c0\3\2\2\2\u02c0\u02c4\3\2\2\2\u02c1\u02c3\5T"+ + "+\2\u02c2\u02c1\3\2\2\2\u02c3\u02c6\3\2\2\2\u02c4\u02c2\3\2\2\2\u02c4"+ + "\u02c5\3\2\2\2\u02c5\u02c7\3\2\2\2\u02c6\u02c4\3\2\2\2\u02c7\u02d5\7\u00db"+ + "\2\2\u02c8\u02ca\7\u00dd\2\2\u02c9\u02cb\7\u00de\2\2\u02ca\u02c9\3\2\2"+ + "\2\u02ca\u02cb\3\2\2\2\u02cb\u02cf\3\2\2\2\u02cc\u02ce\5T+\2\u02cd\u02cc"+ + "\3\2\2\2\u02ce\u02d1\3\2\2\2\u02cf\u02cd\3\2\2\2\u02cf\u02d0\3\2\2\2\u02d0"+ + "\u02d2\3\2\2\2\u02d1\u02cf\3\2\2\2\u02d2\u02d3\7J\2\2\u02d3\u02d5\7\u00de"+ + "\2\2\u02d4\u02bd\3\2\2\2\u02d4\u02c8\3\2\2\2\u02d5S\3\2\2\2\u02d6\u02d7"+ + "\7\66\2\2\u02d7\u02da\5\u00a6T\2\u02d8\u02da\7=\2\2\u02d9\u02d6\3\2\2"+ + "\2\u02d9\u02d8\3\2\2\2\u02da\u02db\3\2\2\2\u02db\u02dd\t\4\2\2\u02dc\u02d9"+ + "\3\2\2\2\u02dd\u02de\3\2\2\2\u02de\u02dc\3\2\2\2\u02de\u02df\3\2\2\2\u02df"+ + "\u02e0\3\2\2\2\u02e0\u02e1\5\64\33\2\u02e1U\3\2\2\2\u02e2\u02e4\7\64\2"+ + "\2\u02e3\u02e5\5\u00a6T\2\u02e4\u02e3\3\2\2\2\u02e4\u02e5\3\2\2\2\u02e5"+ + "\u02e6\3\2\2\2\u02e6\u02e7\7\u00de\2\2\u02e7W\3\2\2\2\u02e8\u02ea\7;\2"+ + "\2\u02e9\u02eb\5\u00a6T\2\u02ea\u02e9\3\2\2\2\u02ea\u02eb\3\2\2\2\u02eb"+ + "\u02ec\3\2\2\2\u02ec\u02ed\7\u00de\2\2\u02edY\3\2\2\2\u02ee\u02f0\7w\2"+ + "\2\u02ef\u02f1\5\u00a6T\2\u02f0\u02ef\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1"+ + "\u02f2\3\2\2\2\u02f2\u02f3\7\u00de\2\2\u02f3[\3\2\2\2\u02f4\u02f5\5\u00a6"+ + "T\2\u02f5\u02f6\7\u00de\2\2\u02f6]\3\2\2\2\u02f7\u02f8\7\u0081\2\2\u02f8"+ + "\u02f9\7\u00d6\2\2\u02f9\u02fa\5\u00ecw\2\u02fa\u02fb\7\u00d7\2\2\u02fb"+ + "\u02fc\7\u00de\2\2\u02fc_\3\2\2\2\u02fd\u032a\7S\2\2\u02fe\u02ff\7\u00d6"+ + "\2\2\u02ff\u0300\5\u00a6T\2\u0300\u0301\7\60\2\2\u0301\u0302\5\u00acW"+ + "\2\u0302\u0303\7\u00d7\2\2\u0303\u032b\3\2\2\2\u0304\u0305\7\u00d6\2\2"+ + "\u0305\u0306\5\u00eex\2\u0306\u0308\7\60\2\2\u0307\u0309\7\u00c8\2\2\u0308"+ + "\u0307\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030a\3\2\2\2\u030a\u0310\5\u00a8"+ + "U\2\u030b\u030d\7\u00a6\2\2\u030c\u030e\7\u00c8\2\2\u030d\u030c\3\2\2"+ + "\2\u030d\u030e\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0311\5\u00eex\2\u0310"+ + "\u030b\3\2\2\2\u0310\u0311\3\2\2\2\u0311\u0312\3\2\2\2\u0312\u0313\7\u00d7"+ + "\2\2\u0313\u032b\3\2\2\2\u0314\u0315\7\u00d6\2\2\u0315\u0316\5\u00a6T"+ + "\2\u0316\u0317\7\60\2\2\u0317\u031d\5\u00a8U\2\u0318\u031a\7\u00a6\2\2"+ + "\u0319\u031b\7\u00c8\2\2\u031a\u0319\3\2\2\2\u031a\u031b\3\2\2\2\u031b"+ + "\u031c\3\2\2\2\u031c\u031e\5\u00eex\2\u031d\u0318\3\2\2\2\u031d\u031e"+ + "\3\2\2\2\u031e\u031f\3\2\2\2\u031f\u0320\7\u00d7\2\2\u0320\u032b\3\2\2"+ + "\2\u0321\u0322\7\u00d6\2\2\u0322\u0323\5\u00eex\2\u0323\u0324\7\60\2\2"+ + "\u0324\u0325\7d\2\2\u0325\u0326\7\u00d6\2\2\u0326\u0327\5\u0104\u0083"+ + "\2\u0327\u0328\7\u00d7\2\2\u0328\u0329\7\u00d7\2\2\u0329\u032b\3\2\2\2"+ + "\u032a\u02fe\3\2\2\2\u032a\u0304\3\2\2\2\u032a\u0314\3\2\2\2\u032a\u0321"+ + "\3\2\2\2\u032b\u0332\3\2\2\2\u032c\u0333\58\35\2\u032d\u032e\7\u00dd\2"+ + "\2\u032e\u032f\5\64\33\2\u032f\u0330\7H\2\2\u0330\u0331\7\u00de\2\2\u0331"+ + "\u0333\3\2\2\2\u0332\u032c\3\2\2\2\u0332\u032d\3\2\2\2\u0333a\3\2\2\2"+ + "\u0334\u0335\7}\2\2\u0335\u0345\5<\37\2\u0336\u0338\5d\63\2\u0337\u0336"+ + "\3\2\2\2\u0338\u0339\3\2\2\2\u0339\u0337\3\2\2\2\u0339\u033a\3\2\2\2\u033a"+ + "\u033c\3\2\2\2\u033b\u033d\5f\64\2\u033c\u033b\3\2\2\2\u033c\u033d\3\2"+ + "\2\2\u033d\u0346\3\2\2\2\u033e\u0340\5d\63\2\u033f\u033e\3\2\2\2\u0340"+ + "\u0343\3\2\2\2\u0341\u033f\3\2\2\2\u0341\u0342\3\2\2\2\u0342\u0344\3\2"+ + "\2\2\u0343\u0341\3\2\2\2\u0344\u0346\5f\64\2\u0345\u0337\3\2\2\2\u0345"+ + "\u0341\3\2\2\2\u0346c\3\2\2\2\u0347\u0348\7\67\2\2\u0348\u0349\7\u00d6"+ + "\2\2\u0349\u034e\5\u00c6d\2\u034a\u034b\7\u00c9\2\2\u034b\u034d\5\u00c6"+ + "d\2\u034c\u034a\3\2\2\2\u034d\u0350\3\2\2\2\u034e\u034c\3\2\2\2\u034e"+ + "\u034f\3\2\2\2\u034f\u0352\3\2\2\2\u0350\u034e\3\2\2\2\u0351\u0353\7\u00e2"+ + "\2\2\u0352\u0351\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u0354\3\2\2\2\u0354"+ + "\u0355\7\u00d7\2\2\u0355\u0356\5<\37\2\u0356e\3\2\2\2\u0357\u0358\7P\2"+ + "\2\u0358\u0359\5<\37\2\u0359g\3\2\2\2\u035a\u035b\7{\2\2\u035b\u035c\5"+ + "\u00a6T\2\u035c\u035d\7\u00de\2\2\u035di\3\2\2\2\u035e\u035f\7V\2\2\u035f"+ + "\u0360\5\u010a\u0086\2\u0360\u0361\7\u00de\2\2\u0361k\3\2\2\2\u0362\u0363"+ + "\7<\2\2\u0363\u0364\7\u00d6\2\2\u0364\u0365\5p9\2\u0365\u036c\7\u00d7"+ + "\2\2\u0366\u036d\58\35\2\u0367\u0368\7\u00dd\2\2\u0368\u0369\5\64\33\2"+ + "\u0369\u036a\7F\2\2\u036a\u036b\7\u00de\2\2\u036b\u036d\3\2\2\2\u036c"+ + "\u0366\3\2\2\2\u036c\u0367\3\2\2\2\u036dm\3\2\2\2\u036e\u0370\5\4\3\2"+ + "\u036f\u036e\3\2\2\2\u0370\u0371\3\2\2\2\u0371\u036f\3\2\2\2\u0371\u0372"+ + "\3\2\2\2\u0372o\3\2\2\2\u0373\u0378\5r:\2\u0374\u0375\7\u00dc\2\2\u0375"+ + "\u0377\5r:\2\u0376\u0374\3\2\2\2\u0377\u037a\3\2\2\2\u0378\u0376\3\2\2"+ + "\2\u0378\u0379\3\2\2\2\u0379q\3\2\2\2\u037a\u0378\3\2\2\2\u037b\u037c"+ + "\7\u0088\2\2\u037c\u037f\7\u00df\2\2\u037d\u0380\5\u00e2r\2\u037e\u0380"+ + "\7\u00e6\2\2\u037f\u037d\3\2\2\2\u037f\u037e\3\2\2\2\u0380\u0388\3\2\2"+ + "\2\u0381\u0382\7\u0089\2\2\u0382\u0383\7\u00df\2\2\u0383\u0388\7\u00ea"+ + "\2\2\u0384\u0385\7\u008a\2\2\u0385\u0386\7\u00df\2\2\u0386\u0388\5\u00e2"+ + "r\2\u0387\u037b\3\2\2\2\u0387\u0381\3\2\2\2\u0387\u0384\3\2\2\2\u0388"+ + "s\3\2\2\2\u0389\u038b\5v<\2\u038a\u0389\3\2\2\2\u038a\u038b\3\2\2\2\u038b"+ + "\u0390\3\2\2\2\u038c\u038d\7\u00dc\2\2\u038d\u038f\5v<\2\u038e\u038c\3"+ + "\2\2\2\u038f\u0392\3\2\2\2\u0390\u038e\3\2\2\2\u0390\u0391\3\2\2\2\u0391"+ + "\u0394\3\2\2\2\u0392\u0390\3\2\2\2\u0393\u0395\7\u00dc\2\2\u0394\u0393"+ + "\3\2\2\2\u0394\u0395\3\2\2\2\u0395u\3\2\2\2\u0396\u0398\5.\30\2\u0397"+ + "\u0396\3\2\2\2\u0397\u0398\3\2\2\2\u0398\u039c\3\2\2\2\u0399\u039b\5\u010c"+ + "\u0087\2\u039a\u0399\3\2\2\2\u039b\u039e\3\2\2\2\u039c\u039a\3\2\2\2\u039c"+ + "\u039d\3\2\2\2\u039d\u03a0\3\2\2\2\u039e\u039c\3\2\2\2\u039f\u03a1\7\u00d5"+ + "\2\2\u03a0\u039f\3\2\2\2\u03a0\u03a1\3\2\2\2\u03a1\u03a3\3\2\2\2\u03a2"+ + "\u03a4\5x=\2\u03a3\u03a2\3\2\2\2\u03a3\u03a4\3\2\2\2\u03a4\u03a6\3\2\2"+ + "\2\u03a5\u03a7\7\u00c8\2\2\u03a6\u03a5\3\2\2\2\u03a6\u03a7\3\2\2\2\u03a7"+ + "\u03a9\3\2\2\2\u03a8\u03aa\7\u00c5\2\2\u03a9\u03a8\3\2\2\2\u03a9\u03aa"+ + "\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab\u03ac\5\u0098M\2\u03acw\3\2\2\2\u03ad"+ + "\u03ae\b=\1\2\u03ae\u03b2\5\u00c6d\2\u03af\u03b2\7\65\2\2\u03b0\u03b2"+ + "\5\u0112\u008a\2\u03b1\u03ad\3\2\2\2\u03b1\u03af\3\2\2\2\u03b1\u03b0\3"+ + "\2\2\2\u03b2\u03b8\3\2\2\2\u03b3\u03b4\f\3\2\2\u03b4\u03b5\7\u00c9\2\2"+ + "\u03b5\u03b7\5x=\4\u03b6\u03b3\3\2\2\2\u03b7\u03ba\3\2\2\2\u03b8\u03b6"+ + "\3\2\2\2\u03b8\u03b9\3\2\2\2\u03b9y\3\2\2\2\u03ba\u03b8\3\2\2\2\u03bb"+ + "\u03bc\7U\2\2\u03bc\u03c1\5|?\2\u03bd\u03be\7\u00dc\2\2\u03be\u03c0\5"+ + "|?\2\u03bf\u03bd\3\2\2\2\u03c0\u03c3\3\2\2\2\u03c1\u03bf\3\2\2\2\u03c1"+ + "\u03c2\3\2\2\2\u03c2\u03c4\3\2\2\2\u03c3\u03c1\3\2\2\2\u03c4\u03c5\7\u00de"+ + "\2\2\u03c5{\3\2\2\2\u03c6\u03cf\7\u00e2\2\2\u03c7\u03c8\7\u00d3\2\2\u03c8"+ + "\u03cf\5\u00eex\2\u03c9\u03ca\7\u00d3\2\2\u03ca\u03cb\7\u00da\2\2\u03cb"+ + "\u03cc\5\u00a6T\2\u03cc\u03cd\7\u00db\2\2\u03cd\u03cf\3\2\2\2\u03ce\u03c6"+ + "\3\2\2\2\u03ce\u03c7\3\2\2\2\u03ce\u03c9\3\2\2\2\u03cf}\3\2\2\2\u03d0"+ + "\u03d1\7A\2\2\u03d1\u03d2\5\u00a2R\2\u03d2\u03d3\7\u00de\2\2\u03d3\177"+ + "\3\2\2\2\u03d4\u03d5\7x\2\2\u03d5\u03da\5\u0098M\2\u03d6\u03d7\7\u00dc"+ + "\2\2\u03d7\u03d9\5\u0098M\2\u03d8\u03d6\3\2\2\2\u03d9\u03dc\3\2\2\2\u03da"+ + "\u03d8\3\2\2\2\u03da\u03db\3\2\2\2\u03db\u03dd\3\2\2\2\u03dc\u03da\3\2"+ + "\2\2\u03dd\u03de\7\u00de\2\2\u03de\u0081\3\2\2\2\u03df\u03e1\5.\30\2\u03e0"+ + "\u03df\3\2\2\2\u03e0\u03e1\3\2\2\2\u03e1\u0414\3\2\2\2\u03e2\u03e4\5\u0094"+ + "K\2\u03e3\u03e5\5x=\2\u03e4\u03e3\3\2\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e6"+ + "\3\2\2\2\u03e6\u03eb\5\u0098M\2\u03e7\u03e8\7\u00dc\2\2\u03e8\u03ea\5"+ + "\u0098M\2\u03e9\u03e7\3\2\2\2\u03ea\u03ed\3\2\2\2\u03eb\u03e9\3\2\2\2"+ + "\u03eb\u03ec\3\2\2\2\u03ec\u03ee\3\2\2\2\u03ed\u03eb\3\2\2\2\u03ee\u03ef"+ + "\7\u00de\2\2\u03ef\u0415\3\2\2\2\u03f0\u03f2\5\u0096L\2\u03f1\u03f0\3"+ + "\2\2\2\u03f1\u03f2\3\2\2\2\u03f2\u0412\3\2\2\2\u03f3\u03f5\7:\2\2\u03f4"+ + "\u03f6\5x=\2\u03f5\u03f4\3\2\2\2\u03f5\u03f6\3\2\2\2\u03f6\u03f7\3\2\2"+ + "\2\u03f7\u03fc\5\u009aN\2\u03f8\u03f9\7\u00dc\2\2\u03f9\u03fb\5\u009a"+ + "N\2\u03fa\u03f8\3\2\2\2\u03fb\u03fe\3\2\2\2\u03fc\u03fa\3\2\2\2\u03fc"+ + "\u03fd\3\2\2\2\u03fd\u03ff\3\2\2\2\u03fe\u03fc\3\2\2\2\u03ff\u0400\7\u00de"+ + "\2\2\u0400\u0413\3\2\2\2\u0401\u0403\7T\2\2\u0402\u0404\7\u00c8\2\2\u0403"+ + "\u0402\3\2\2\2\u0403\u0404\3\2\2\2\u0404\u0405\3\2\2\2\u0405\u0407\5\u010a"+ + "\u0086\2\u0406\u0408\5\"\22\2\u0407\u0406\3\2\2\2\u0407\u0408\3\2\2\2"+ + "\u0408\u0409\3\2\2\2\u0409\u040a\7\u00d6\2\2\u040a\u040b\5t;\2\u040b\u040e"+ + "\7\u00d7\2\2\u040c\u040f\5\u008eH\2\u040d\u040f\5\u0090I\2\u040e\u040c"+ + "\3\2\2\2\u040e\u040d\3\2\2\2\u040e\u040f\3\2\2\2\u040f\u0410\3\2\2\2\u0410"+ + "\u0411\5\u0092J\2\u0411\u0413\3\2\2\2\u0412\u03f3\3\2\2\2\u0412\u0401"+ + "\3\2\2\2\u0413\u0415\3\2\2\2\u0414\u03e2\3\2\2\2\u0414\u03f1\3\2\2\2\u0415"+ + "\u041b\3\2\2\2\u0416\u0417\7\u0082\2\2\u0417\u0418\5\u00d4k\2\u0418\u0419"+ + "\5\u0084C\2\u0419\u041b\3\2\2\2\u041a\u03e0\3\2\2\2\u041a\u0416\3\2\2"+ + "\2\u041b\u0083\3\2\2\2\u041c\u0426\7\u00de\2\2\u041d\u0421\7\u00da\2\2"+ + "\u041e\u0420\5\u0086D\2\u041f\u041e\3\2\2\2\u0420\u0423\3\2\2\2\u0421"+ + "\u041f\3\2\2\2\u0421\u0422\3\2\2\2\u0422\u0424\3\2\2\2\u0423\u0421\3\2"+ + "\2\2\u0424\u0426\7\u00db\2\2\u0425\u041c\3\2\2\2\u0425\u041d\3\2\2\2\u0426"+ + "\u0085\3\2\2\2\u0427\u042a\5\u0088E\2\u0428\u042a\5\u008aF\2\u0429\u0427"+ + "\3\2\2\2\u0429\u0428\3\2\2\2\u042a\u0087\3\2\2\2\u042b\u042c\5\u00ceh"+ + "\2\u042c\u042d\7\u00c2\2\2\u042d\u042e\5\u010a\u0086\2\u042e\u042f\7]"+ + "\2\2\u042f\u0430\5\u00d4k\2\u0430\u0431\7\u00de\2\2\u0431\u0089\3\2\2"+ + "\2\u0432\u0433\5\u008cG\2\u0433\u0439\7\60\2\2\u0434\u043a\5\u010c\u0087"+ + "\2\u0435\u0437\5\u010c\u0087\2\u0436\u0435\3\2\2\2\u0436\u0437\3\2\2\2"+ + "\u0437\u0438\3\2\2\2\u0438\u043a\5\u010a\u0086\2\u0439\u0434\3\2\2\2\u0439"+ + "\u0436\3\2\2\2\u043a\u043b\3\2\2\2\u043b\u043c\7\u00de\2\2\u043c\u008b"+ + "\3\2\2\2\u043d\u043e\5\u00ceh\2\u043e\u043f\7\u00c2\2\2\u043f\u0441\3"+ + "\2\2\2\u0440\u043d\3\2\2\2\u0440\u0441\3\2\2\2\u0441\u0442\3\2\2\2\u0442"+ + "\u0443\5\u010a\u0086\2\u0443\u008d\3\2\2\2\u0444\u0445\7\u00dd\2\2\u0445"+ + "\u0447\5\u010a\u0086\2\u0446\u0448\5\u00d6l\2\u0447\u0446\3\2\2\2\u0447"+ + "\u0448\3\2\2\2\u0448\u008f\3\2\2\2\u0449\u044b\7\u00dd\2\2\u044a\u044c"+ + "\7\u00d5\2\2\u044b\u044a\3\2\2\2\u044b\u044c\3\2\2\2\u044c\u044d\3\2\2"+ + "\2\u044d\u044e\5x=\2\u044e\u0091\3\2\2\2\u044f\u0452\7\u00de\2\2\u0450"+ + "\u0452\5<\37\2\u0451\u044f\3\2\2\2\u0451\u0450\3\2\2\2\u0452\u0093\3\2"+ + "\2\2\u0453\u0456\5\u0096L\2\u0454\u0456\7\u0083\2\2\u0455\u0453\3\2\2"+ + "\2\u0455\u0454\3\2\2\2\u0456\u0095\3\2\2\2\u0457\u0459\5\u010c\u0087\2"+ + "\u0458\u0457\3\2\2\2\u0459\u045a\3\2\2\2\u045a\u0458\3\2\2\2\u045a\u045b"+ + "\3\2\2\2\u045b\u0097\3\2\2\2\u045c\u045f\7\u00e2\2\2\u045d\u045e\7\u00df"+ + "\2\2\u045e\u0460\5\u00dco\2\u045f\u045d\3\2\2\2\u045f\u0460\3\2\2\2\u0460"+ + "\u0099\3\2\2\2\u0461\u0462\5\u010a\u0086\2\u0462\u0463\7\u00df\2\2\u0463"+ + "\u0464\5\u00dco\2\u0464\u009b\3\2\2\2\u0465\u0467\5.\30\2\u0466\u0465"+ + "\3\2\2\2\u0466\u0467\3\2\2\2\u0467\u0468\3\2\2\2\u0468\u0469\7:\2\2\u0469"+ + "\u046e\5\u009aN\2\u046a\u046b\7\u00dc\2\2\u046b\u046d\5\u009aN\2\u046c"+ + "\u046a\3\2\2\2\u046d\u0470\3\2\2\2\u046e\u046c\3\2\2\2\u046e\u046f\3\2"+ + "\2\2\u046f\u0471\3\2\2\2\u0470\u046e\3\2\2\2\u0471\u0472\7\u00de\2\2\u0472"+ + "\u009d\3\2\2\2\u0473\u0474\7E\2\2\u0474\u0477\5\u010a\u0086\2\u0475\u0476"+ + "\7\u00dd\2\2\u0476\u0478\t\5\2\2\u0477\u0475\3\2\2\2\u0477\u0478\3\2\2"+ + "\2\u0478\u047b\3\2\2\2\u0479\u047a\7X\2\2\u047a\u047c\5 \21\2\u047b\u0479"+ + "\3\2\2\2\u047b\u047c\3\2\2\2\u047c\u047d\3\2\2\2\u047d\u0481\7\u00da\2"+ + "\2\u047e\u0480\5\u00a0Q\2\u047f\u047e\3\2\2\2\u0480\u0483\3\2\2\2\u0481"+ + "\u047f\3\2\2\2\u0481\u0482\3\2\2\2\u0482\u0484\3\2\2\2\u0483\u0481\3\2"+ + "\2\2\u0484\u0485\7\u00db\2\2\u0485\u009f\3\2\2\2\u0486\u0487\7\66\2\2"+ + "\u0487\u048a\5\u010a\u0086\2\u0488\u0489\7\u00df\2\2\u0489\u048b\5\u00a6"+ + "T\2\u048a\u0488\3\2\2\2\u048a\u048b\3\2\2\2\u048b\u048c\3\2\2\2\u048c"+ + "\u048d\7\u00de\2\2\u048d\u0497\3\2\2\2\u048e\u0490\5\u0096L\2\u048f\u048e"+ + "\3\2\2\2\u048f\u0490\3\2\2\2\u0490\u0491\3\2\2\2\u0491\u0497\5\32\16\2"+ + "\u0492\u0493\7\u0082\2\2\u0493\u0494\5\u00d4k\2\u0494\u0495\5\u0084C\2"+ + "\u0495\u0497\3\2\2\2\u0496\u0486\3\2\2\2\u0496\u048f\3\2\2\2\u0496\u0492"+ + "\3\2\2\2\u0497\u00a1\3\2\2\2\u0498\u049d\5\u00a6T\2\u0499\u049a\7\u00dc"+ + "\2\2\u049a\u049c\5\u00a6T\2\u049b\u0499\3\2\2\2\u049c\u049f\3\2\2\2\u049d"+ + "\u049b\3\2\2\2\u049d\u049e\3\2\2\2\u049e\u00a3\3\2\2\2\u049f\u049d\3\2"+ + "\2\2\u04a0\u04a3\7\u00d6\2\2\u04a1\u04a4\5\u00a6T\2\u04a2\u04a4\5\u00bc"+ + "_\2\u04a3\u04a1\3\2\2\2\u04a3\u04a2\3\2\2\2\u04a4\u04a5\3\2\2\2\u04a5"+ + "\u04a6\7\u00d7\2\2\u04a6\u00a5\3\2\2\2\u04a7\u04a8\bT\1\2\u04a8\u04a9"+ + "\79\2\2\u04a9\u0502\5\u00a6T\62\u04aa\u04ab\7\u00d6\2\2\u04ab\u04ac\5"+ + "\u0114\u008b\2\u04ac\u04ad\7\u00d7\2\2\u04ad\u04ae\5\u00a6T/\u04ae\u0502"+ + "\3\2\2\2\u04af\u04b0\t\6\2\2\u04b0\u0502\5\u00a6T.\u04b1\u04b2\t\7\2\2"+ + "\u04b2\u0502\5\u00a6T-\u04b3\u04b4\7o\2\2\u04b4\u0502\5\u00a6T*\u04b5"+ + "\u04b6\7d\2\2\u04b6\u04b7\7\u00d6\2\2\u04b7\u04b8\5\u0104\u0083\2\u04b8"+ + "\u04b9\7\u00d7\2\2\u04b9\u04ba\7\u00df\2\2\u04ba\u04bb\5\u00a6T!\u04bb"+ + "\u0502\3\2\2\2\u04bc\u04bd\t\b\2\2\u04bd\u0502\5\u00a6T\34\u04be\u04bf"+ + "\t\t\2\2\u04bf\u0502\5\u00a6T\33\u04c0\u04c1\7{\2\2\u04c1\u0502\5\u00a6"+ + "T\t\u04c2\u04c3\5\u00acW\2\u04c3\u04c4\7\u00df\2\2\u04c4\u04c5\5\u00a6"+ + "T\b\u04c5\u0502\3\2\2\2\u04c6\u04c7\5\u00a8U\2\u04c7\u04c9\5\u00ba^\2"+ + "\u04c8\u04ca\5.\30\2\u04c9\u04c8\3\2\2\2\u04c9\u04ca\3\2\2\2\u04ca\u04cb"+ + "\3\2\2\2\u04cb\u04cc\5\u00a6T\7\u04cc\u0502\3\2\2\2\u04cd\u0502\5\u00b8"+ + "]\2\u04ce\u04cf\5\u00e6t\2\u04cf\u04d0\7\u00d8\2\2\u04d0\u04d1\5\u00a6"+ + "T\2\u04d1\u04d2\7\u00d9\2\2\u04d2\u0502\3\2\2\2\u04d3\u04d4\t\n\2\2\u04d4"+ + "\u0502\5\u00eex\2\u04d5\u04d6\5\u00eex\2\u04d6\u04d7\t\n\2\2\u04d7\u0502"+ + "\3\2\2\2\u04d8\u0502\5\u00aaV\2\u04d9\u0502\5\u00eex\2\u04da\u0502\5\u00de"+ + "p\2\u04db\u0502\5\u00e8u\2\u04dc\u0502\7\u00e3\2\2\u04dd\u0502\7\u00e9"+ + "\2\2\u04de\u0502\5\u00a4S\2\u04df\u0502\7\u0085\2\2\u04e0\u04e1\7c\2\2"+ + "\u04e1\u04e2\7\u00d6\2\2\u04e2\u04e3\5\u00ecw\2\u04e3\u04e4\7\u00d7\2"+ + "\2\u04e4\u0502\3\2\2\2\u04e5\u04e6\7D\2\2\u04e6\u04e7\7\u00d6\2\2\u04e7"+ + "\u04e8\5\u00eex\2\u04e8\u04e9\7\u00d7\2\2\u04e9\u0502\3\2\2\2\u04ea\u04eb"+ + "\7L\2\2\u04eb\u04ec\7\u00d6\2\2\u04ec\u04ed\5\u00a6T\2\u04ed\u04ee\7\u00d7"+ + "\2\2\u04ee\u0502\3\2\2\2\u04ef\u04f3\7M\2\2\u04f0\u04f1\7\u00d6\2\2\u04f1"+ + "\u04f4\7\u00d7\2\2\u04f2\u04f4\5\u00a4S\2\u04f3\u04f0\3\2\2\2\u04f3\u04f2"+ + "\3\2\2\2\u04f3\u04f4\3\2\2\2\u04f4\u0502\3\2\2\2\u04f5\u0502\5\u00b2Z"+ + "\2\u04f6\u0502\5\u00b4[\2\u04f7\u04f8\5\u00a8U\2\u04f8\u04fa\7\u00df\2"+ + "\2\u04f9\u04fb\5.\30\2\u04fa\u04f9\3\2\2\2\u04fa\u04fb\3\2\2\2\u04fb\u04fc"+ + "\3\2\2\2\u04fc\u04ff\7\u00c8\2\2\u04fd\u0500\5\u00eex\2\u04fe\u0500\5"+ + "\u00b8]\2\u04ff\u04fd\3\2\2\2\u04ff\u04fe\3\2\2\2\u0500\u0502\3\2\2\2"+ + "\u0501\u04a7\3\2\2\2\u0501\u04aa\3\2\2\2\u0501\u04af\3\2\2\2\u0501\u04b1"+ + "\3\2\2\2\u0501\u04b3\3\2\2\2\u0501\u04b5\3\2\2\2\u0501\u04bc\3\2\2\2\u0501"+ + "\u04be\3\2\2\2\u0501\u04c0\3\2\2\2\u0501\u04c2\3\2\2\2\u0501\u04c6\3\2"+ + "\2\2\u0501\u04cd\3\2\2\2\u0501\u04ce\3\2\2\2\u0501\u04d3\3\2\2\2\u0501"+ + "\u04d5\3\2\2\2\u0501\u04d8\3\2\2\2\u0501\u04d9\3\2\2\2\u0501\u04da\3\2"+ + "\2\2\u0501\u04db\3\2\2\2\u0501\u04dc\3\2\2\2\u0501\u04dd\3\2\2\2\u0501"+ + "\u04de\3\2\2\2\u0501\u04df\3\2\2\2\u0501\u04e0\3\2\2\2\u0501\u04e5\3\2"+ + "\2\2\u0501\u04ea\3\2\2\2\u0501\u04ef\3\2\2\2\u0501\u04f5\3\2\2\2\u0501"+ + "\u04f6\3\2\2\2\u0501\u04f7\3\2\2\2\u0502\u053f\3\2\2\2\u0503\u0504\f\30"+ + "\2\2\u0504\u0505\7\u00b2\2\2\u0505\u053e\5\u00a6T\30\u0506\u0507\f\26"+ + "\2\2\u0507\u0508\t\13\2\2\u0508\u053e\5\u00a6T\27\u0509\u050a\f\25\2\2"+ + "\u050a\u050b\t\f\2\2\u050b\u053e\5\u00a6T\26\u050c\u050d\f\24\2\2\u050d"+ + "\u050e\t\r\2\2\u050e\u053e\5\u00a6T\25\u050f\u0510\f\23\2\2\u0510\u0511"+ + "\t\16\2\2\u0511\u053e\5\u00a6T\24\u0512\u0513\f\22\2\2\u0513\u0514\t\17"+ + "\2\2\u0514\u053e\5\u00a6T\23\u0515\u0516\f\21\2\2\u0516\u0517\7\u00c8"+ + "\2\2\u0517\u053e\5\u00a6T\22\u0518\u0519\f\20\2\2\u0519\u051a\7\u00cb"+ + "\2\2\u051a\u053e\5\u00a6T\21\u051b\u051c\f\17\2\2\u051c\u051d\7\u00c9"+ + "\2\2\u051d\u053e\5\u00a6T\20\u051e\u051f\f\16\2\2\u051f\u0520\7\u00bd"+ + "\2\2\u0520\u053e\5\u00a6T\17\u0521\u0522\f\r\2\2\u0522\u0523\7\u00bc\2"+ + "\2\u0523\u053e\5\u00a6T\16\u0524\u0525\f\f\2\2\u0525\u0527\7\u00d5\2\2"+ + "\u0526\u0528\5\u00a6T\2\u0527\u0526\3\2\2\2\u0527\u0528\3\2\2\2\u0528"+ + "\u0529\3\2\2\2\u0529\u052a\7\u00dd\2\2\u052a\u053e\5\u00a6T\r\u052b\u052c"+ + "\f\13\2\2\u052c\u052d\7\u00be\2\2\u052d\u053e\5\u00a6T\f\u052e\u052f\f"+ + "\n\2\2\u052f\u0530\7\u00a3\2\2\u0530\u053e\5\u00a6T\13\u0531\u0532\f\5"+ + "\2\2\u0532\u0533\7e\2\2\u0533\u053e\5\u00a6T\6\u0534\u0535\f\4\2\2\u0535"+ + "\u0536\7g\2\2\u0536\u053e\5\u00a6T\5\u0537\u0538\f\3\2\2\u0538\u0539\7"+ + "f\2\2\u0539\u053e\5\u00a6T\4\u053a\u053b\f\27\2\2\u053b\u053c\7\\\2\2"+ + "\u053c\u053e\5\u00c8e\2\u053d\u0503\3\2\2\2\u053d\u0506\3\2\2\2\u053d"+ + "\u0509\3\2\2\2\u053d\u050c\3\2\2\2\u053d\u050f\3\2\2\2\u053d\u0512\3\2"+ + "\2\2\u053d\u0515\3\2\2\2\u053d\u0518\3\2\2\2\u053d\u051b\3\2\2\2\u053d"+ + "\u051e\3\2\2\2\u053d\u0521\3\2\2\2\u053d\u0524\3\2\2\2\u053d\u052b\3\2"+ + "\2\2\u053d\u052e\3\2\2\2\u053d\u0531\3\2\2\2\u053d\u0534\3\2\2\2\u053d"+ + "\u0537\3\2\2\2\u053d\u053a\3\2\2\2\u053e\u0541\3\2\2\2\u053f\u053d\3\2"+ + "\2\2\u053f\u0540\3\2\2\2\u0540\u00a7\3\2\2\2\u0541\u053f\3\2\2\2\u0542"+ + "\u0545\5\u00eex\2\u0543\u0545\5\u00aaV\2\u0544\u0542\3\2\2\2\u0544\u0543"+ + "\3\2\2\2\u0545\u00a9\3\2\2\2\u0546\u0547\7/\2\2\u0547\u0549\7\u00d6\2"+ + "\2\u0548\u054a\5\u00be`\2\u0549\u0548\3\2\2\2\u0549\u054a\3\2\2\2\u054a"+ + "\u054b\3\2\2\2\u054b\u0552\7\u00d7\2\2\u054c\u054e\7\u00d8\2\2\u054d\u054f"+ + "\5\u00be`\2\u054e\u054d\3\2\2\2\u054e\u054f\3\2\2\2\u054f\u0550\3\2\2"+ + "\2\u0550\u0552\7\u00d9\2\2\u0551\u0546\3\2\2\2\u0551\u054c\3\2\2\2\u0552"+ + "\u0557\3\2\2\2\u0553\u0554\7\u00d8\2\2\u0554\u0555\5\u00a6T\2\u0555\u0556"+ + "\7\u00d9\2\2\u0556\u0558\3\2\2\2\u0557\u0553\3\2\2\2\u0557\u0558\3\2\2"+ + "\2\u0558\u00ab\3\2\2\2\u0559\u055d\7\u00d8\2\2\u055a\u055c\7\u00dc\2\2"+ + "\u055b\u055a\3\2\2\2\u055c\u055f\3\2\2\2\u055d\u055b\3\2\2\2\u055d\u055e"+ + "\3\2\2\2\u055e\u0560\3\2\2\2\u055f\u055d\3\2\2\2\u0560\u0569\5\u00aeX"+ + "\2\u0561\u0563\7\u00dc\2\2\u0562\u0561\3\2\2\2\u0563\u0564\3\2\2\2\u0564"+ + "\u0562\3\2\2\2\u0564\u0565\3\2\2\2\u0565\u0566\3\2\2\2\u0566\u0568\5\u00ae"+ + "X\2\u0567\u0562\3\2\2\2\u0568\u056b\3\2\2\2\u0569\u0567\3\2\2\2\u0569"+ + "\u056a\3\2\2\2\u056a\u056f\3\2\2\2\u056b\u0569\3\2\2\2\u056c\u056e\7\u00dc"+ + "\2\2\u056d\u056c\3\2\2\2\u056e\u0571\3\2\2\2\u056f\u056d\3\2\2\2\u056f"+ + "\u0570\3\2\2\2\u0570\u0572\3\2\2\2\u0571\u056f\3\2\2\2\u0572\u0573\7\u00d9"+ + "\2\2\u0573\u0587\3\2\2\2\u0574\u0575\7\u00d8\2\2\u0575\u057e\5\u00b0Y"+ + "\2\u0576\u0578\7\u00dc\2\2\u0577\u0576\3\2\2\2\u0578\u0579\3\2\2\2\u0579"+ + "\u0577\3\2\2\2\u0579\u057a\3\2\2\2\u057a\u057b\3\2\2\2\u057b\u057d\5\u00b0"+ + "Y\2\u057c\u0577\3\2\2\2\u057d\u0580\3\2\2\2\u057e\u057c\3\2\2\2\u057e"+ + "\u057f\3\2\2\2\u057f\u0582\3\2\2\2\u0580\u057e\3\2\2\2\u0581\u0583\7\u00dc"+ + "\2\2\u0582\u0581\3\2\2\2\u0582\u0583\3\2\2\2\u0583\u0584\3\2\2\2\u0584"+ + "\u0585\7\u00d9\2\2\u0585\u0587\3\2\2\2\u0586\u0559\3\2\2\2\u0586\u0574"+ + "\3\2\2\2\u0587\u00ad\3\2\2\2\u0588\u058a\7\u00c8\2\2\u0589\u0588\3\2\2"+ + "\2\u0589\u058a\3\2\2\2\u058a\u058b\3\2\2\2\u058b\u058c\5\u00eex\2\u058c"+ + "\u00af\3\2\2\2\u058d\u058e\5\u00a6T\2\u058e\u058f\7\u00a6\2\2\u058f\u0591"+ + "\3\2\2\2\u0590\u058d\3\2\2\2\u0590\u0591\3\2\2\2\u0591\u0593\3\2\2\2\u0592"+ + "\u0594\7\u00c8\2\2\u0593\u0592\3\2\2\2\u0593\u0594\3\2\2\2\u0594\u0595"+ + "\3\2\2\2\u0595\u0596\5\u00eex\2\u0596\u00b1\3\2\2\2\u0597\u0599\7x\2\2"+ + "\u0598\u0597\3\2\2\2\u0598\u0599\3\2\2\2\u0599\u059a\3\2\2\2\u059a\u059c"+ + "\7T\2\2\u059b\u059d\7\u00c8\2\2\u059c\u059b\3\2\2\2\u059c\u059d\3\2\2"+ + "\2\u059d\u059e\3\2\2\2\u059e\u059f\7\u00d6\2\2\u059f\u05a0\5t;\2\u05a0"+ + "\u05a2\7\u00d7\2\2\u05a1\u05a3\5\u00c2b\2\u05a2\u05a1\3\2\2\2\u05a2\u05a3"+ + "\3\2\2\2\u05a3\u05a6\3\2\2\2\u05a4\u05a5\7\u00dd\2\2\u05a5\u05a7\5x=\2"+ + "\u05a6\u05a4\3\2\2\2\u05a6\u05a7\3\2\2\2\u05a7\u05a8\3\2\2\2\u05a8\u05a9"+ + "\5<\37\2\u05a9\u05b2\3\2\2\2\u05aa\u05ab\7\u0087\2\2\u05ab\u05ac\7\u00d6"+ + "\2\2\u05ac\u05ad\5t;\2\u05ad\u05ae\7\u00d7\2\2\u05ae\u05af\7\u00a6\2\2"+ + "\u05af\u05b0\5\u00a6T\2\u05b0\u05b2\3\2\2\2\u05b1\u0598\3\2\2\2\u05b1"+ + "\u05aa\3\2\2\2\u05b2\u00b3\3\2\2\2\u05b3\u05b4\7h\2\2\u05b4\u05b5\7\u00d6"+ + "\2\2\u05b5\u05b6\5\u00a6T\2\u05b6\u05b7\7\u00d7\2\2\u05b7\u05b8\7\u00da"+ + "\2\2\u05b8\u05bd\5\u00b6\\\2\u05b9\u05ba\7\u00dc\2\2\u05ba\u05bc\5\u00b6"+ + "\\\2\u05bb\u05b9\3\2\2\2\u05bc\u05bf\3\2\2\2\u05bd\u05bb\3\2\2\2\u05bd"+ + "\u05be\3\2\2\2\u05be\u05c1\3\2\2\2\u05bf\u05bd\3\2\2\2\u05c0\u05c2\7\u00dc"+ + "\2\2\u05c1\u05c0\3\2\2\2\u05c1\u05c2\3\2\2\2\u05c2\u05c3\3\2\2\2\u05c3"+ + "\u05c4\7\u00db\2\2\u05c4\u00b5\3\2\2\2\u05c5\u05ca\5\u00a6T\2\u05c6\u05c7"+ + "\7\u00dc\2\2\u05c7\u05c9\5\u00a6T\2\u05c8\u05c6\3\2\2\2\u05c9\u05cc\3"+ + "\2\2\2\u05ca\u05c8\3\2\2\2\u05ca\u05cb\3\2\2\2\u05cb\u05cd\3\2\2\2\u05cc"+ + "\u05ca\3\2\2\2\u05cd\u05ce\7\u00a6\2\2\u05ce\u05cf\5\u00a6T\2\u05cf\u00b7"+ + "\3\2\2\2\u05d0\u05d1\7j\2\2\u05d1\u05d3\5\u00c8e\2\u05d2\u05d4\5\u00d6"+ + "l\2\u05d3\u05d2\3\2\2\2\u05d3\u05d4\3\2\2\2\u05d4\u00b9\3\2\2\2\u05d5"+ + "\u05d6\t\20\2\2\u05d6\u00bb\3\2\2\2\u05d7\u05df\7\u0085\2\2\u05d8\u05db"+ + "\5\u00a6T\2\u05d9\u05da\7\u00a6\2\2\u05da\u05dc\5\u00a6T\2\u05db\u05d9"+ + "\3\2\2\2\u05db\u05dc\3\2\2\2\u05dc\u05e0\3\2\2\2\u05dd\u05de\7\u0086\2"+ + "\2\u05de\u05e0\5\u00a6T\2\u05df\u05d8\3\2\2\2\u05df\u05dd\3\2\2\2\u05e0"+ + "\u00bd\3\2\2\2\u05e1\u05e6\5\u00c0a\2\u05e2\u05e3\7\u00dc\2\2\u05e3\u05e5"+ + "\5\u00c0a\2\u05e4\u05e2\3\2\2\2\u05e5\u05e8\3\2\2\2\u05e6\u05e4\3\2\2"+ + "\2\u05e6\u05e7\3\2\2\2\u05e7\u05ea\3\2\2\2\u05e8\u05e6\3\2\2\2\u05e9\u05eb"+ + "\7\u00dc\2\2\u05ea\u05e9\3\2\2\2\u05ea\u05eb\3\2\2\2\u05eb\u00bf\3\2\2"+ + "\2\u05ec\u05ef\5\u00a6T\2\u05ed\u05ee\7\u00a6\2\2\u05ee\u05f0\5\u00a6"+ + "T\2\u05ef\u05ed\3\2\2\2\u05ef\u05f0\3\2\2\2\u05f0\u05f9\3\2\2\2\u05f1"+ + "\u05f2\5\u00a6T\2\u05f2\u05f3\7\u00a6\2\2\u05f3\u05f5\3\2\2\2\u05f4\u05f1"+ + "\3\2\2\2\u05f4\u05f5\3\2\2\2\u05f5\u05f6\3\2\2\2\u05f6\u05f7\7\u00c8\2"+ + "\2\u05f7\u05f9\5\u00eex\2\u05f8\u05ec\3\2\2\2\u05f8\u05f4\3\2\2\2\u05f9"+ + "\u00c1\3\2\2\2\u05fa\u05fb\7\u0082\2\2\u05fb\u05fc\7\u00d6\2\2\u05fc\u0601"+ + "\5\u00c4c\2\u05fd\u05fe\7\u00dc\2\2\u05fe\u0600\5\u00c4c\2\u05ff\u05fd"+ + "\3\2\2\2\u0600\u0603\3\2\2\2\u0601\u05ff\3\2\2\2\u0601\u0602\3\2\2\2\u0602"+ + "\u0604\3\2\2\2\u0603\u0601\3\2\2\2\u0604\u0605\7\u00d7\2\2\u0605\u00c3"+ + "\3\2\2\2\u0606\u0608\7\u00c8\2\2\u0607\u0606\3\2\2\2\u0607\u0608\3\2\2"+ + "\2\u0608\u0609\3\2\2\2\u0609\u060a\7\u00e2\2\2\u060a\u00c5\3\2\2\2\u060b"+ + "\u060d\5\u00ceh\2\u060c\u060e\5,\27\2\u060d\u060c\3\2\2\2\u060d\u060e"+ + "\3\2\2\2\u060e\u0611\3\2\2\2\u060f\u0611\7x\2\2\u0610\u060b\3\2\2\2\u0610"+ + "\u060f\3\2\2\2\u0611\u00c7\3\2\2\2\u0612\u0615\5\u00ceh\2\u0613\u0615"+ + "\5\u00ccg\2\u0614\u0612\3\2\2\2\u0614\u0613\3\2\2\2\u0615\u0617\3\2\2"+ + "\2\u0616\u0618\5,\27\2\u0617\u0616\3\2\2\2\u0617\u0618\3\2\2\2\u0618\u061d"+ + "\3\2\2\2\u0619\u061d\5\u0112\u008a\2\u061a\u061d\7x\2\2\u061b\u061d\5"+ + "\u00caf\2\u061c\u0614\3\2\2\2\u061c\u0619\3\2\2\2\u061c\u061a\3\2\2\2"+ + "\u061c\u061b\3\2\2\2\u061d\u00c9\3\2\2\2\u061e\u0620\5.\30\2\u061f\u061e"+ + "\3\2\2\2\u061f\u0620\3\2\2\2\u0620\u0622\3\2\2\2\u0621\u0623\7p\2\2\u0622"+ + "\u0621\3\2\2\2\u0622\u0623\3\2\2\2\u0623\u0625\3\2\2\2\u0624\u0626\5\u0108"+ + "\u0085\2\u0625\u0624\3\2\2\2\u0625\u0626\3\2\2\2\u0626\u0628\3\2\2\2\u0627"+ + "\u0629\7n\2\2\u0628\u0627\3\2\2\2\u0628\u0629\3\2\2\2\u0629\u063f\3\2"+ + "\2\2\u062a\u062c\5\36\20\2\u062b\u062d\5\"\22\2\u062c\u062b\3\2\2\2\u062c"+ + "\u062d\3\2\2\2\u062d\u0630\3\2\2\2\u062e\u062f\7N\2\2\u062f\u0631\5\u00c6"+ + "d\2\u0630\u062e\3\2\2\2\u0630\u0631\3\2\2\2\u0631\u0634\3\2\2\2\u0632"+ + "\u0633\7X\2\2\u0633\u0635\5 \21\2\u0634\u0632\3\2\2\2\u0634\u0635\3\2"+ + "\2\2\u0635\u0640\3\2\2\2\u0636\u0637\7b\2\2\u0637\u0639\5\u010a\u0086"+ + "\2\u0638\u063a\5\"\22\2\u0639\u0638\3\2\2\2\u0639\u063a\3\2\2\2\u063a"+ + "\u063d\3\2\2\2\u063b\u063c\7N\2\2\u063c\u063e\5 \21\2\u063d\u063b\3\2"+ + "\2\2\u063d\u063e\3\2\2\2\u063e\u0640\3\2\2\2\u063f\u062a\3\2\2\2\u063f"+ + "\u0636\3\2\2\2\u0640\u0641\3\2\2\2\u0641\u0645\7\u00da\2\2\u0642\u0644"+ + "\5\u0082B\2\u0643\u0642\3\2\2\2\u0644\u0647\3\2\2\2\u0645\u0643\3\2\2"+ + "\2\u0645\u0646\3\2\2\2\u0646\u0648\3\2\2\2\u0647\u0645\3\2\2\2\u0648\u0649"+ + "\7\u00db\2\2\u0649\u00cb\3\2\2\2\u064a\u064f\5\u00fa~\2\u064b\u064c\7"+ + "\u00c3\2\2\u064c\u064e\5\u00fc\177\2\u064d\u064b\3\2\2\2\u064e\u0651\3"+ + "\2\2\2\u064f\u064d\3\2\2\2\u064f\u0650\3\2\2\2\u0650\u00cd\3\2\2\2\u0651"+ + "\u064f\3\2\2\2\u0652\u0654\7i\2\2\u0653\u0652\3\2\2\2\u0653\u0654\3\2"+ + "\2\2\u0654\u0656\3\2\2\2\u0655\u0657\7\u00c4\2\2\u0656\u0655\3\2\2\2\u0656"+ + "\u0657\3\2\2\2\u0657\u0658\3\2\2\2\u0658\u0659\5\u00d0i\2\u0659\u00cf"+ + "\3\2\2\2\u065a\u0668\5\u010a\u0086\2\u065b\u0660\5\u010a\u0086\2\u065c"+ + "\u065d\7\u00c4\2\2\u065d\u065f\5\u010a\u0086\2\u065e\u065c\3\2\2\2\u065f"+ + "\u0662\3\2\2\2\u0660\u065e\3\2\2\2\u0660\u0661\3\2\2\2\u0661\u0665\3\2"+ + "\2\2\u0662\u0660\3\2\2\2\u0663\u0664\7\u00c4\2\2\u0664\u0666\5\u00d2j"+ + "\2\u0665\u0663\3\2\2\2\u0665\u0666\3\2\2\2\u0666\u0668\3\2\2\2\u0667\u065a"+ + "\3\2\2\2\u0667\u065b\3\2\2\2\u0668\u00d1\3\2\2\2\u0669\u066c\5\u010a\u0086"+ + "\2\u066a\u066b\7\60\2\2\u066b\u066d\5\u010a\u0086\2\u066c\u066a\3\2\2"+ + "\2\u066c\u066d\3\2\2\2\u066d\u067d\3\2\2\2\u066e\u066f\7\u00da\2\2\u066f"+ + "\u0674\5\u00d2j\2\u0670\u0671\7\u00dc\2\2\u0671\u0673\5\u00d2j\2\u0672"+ + "\u0670\3\2\2\2\u0673\u0676\3\2\2\2\u0674\u0672\3\2\2\2\u0674\u0675\3\2"+ + "\2\2\u0675\u0678\3\2\2\2\u0676\u0674\3\2\2\2\u0677\u0679\7\u00dc\2\2\u0678"+ + "\u0677\3\2\2\2\u0678\u0679\3\2\2\2\u0679\u067a\3\2\2\2\u067a\u067b\7\u00db"+ + "\2\2\u067b\u067d\3\2\2\2\u067c\u0669\3\2\2\2\u067c\u066e\3\2\2\2\u067d"+ + "\u00d3\3\2\2\2\u067e\u0683\5\u00ceh\2\u067f\u0680\7\u00dc\2\2\u0680\u0682"+ + "\5\u00ceh\2\u0681\u067f\3\2\2\2\u0682\u0685\3\2\2\2\u0683\u0681\3\2\2"+ + "\2\u0683\u0684\3\2\2\2\u0684\u00d5\3\2\2\2\u0685\u0683\3\2\2\2\u0686\u0690"+ + "\7\u00d6\2\2\u0687\u068c\5\u00d8m\2\u0688\u0689\7\u00dc\2\2\u0689\u068b"+ + "\5\u00d8m\2\u068a\u0688\3\2\2\2\u068b\u068e\3\2\2\2\u068c\u068a\3\2\2"+ + "\2\u068c\u068d\3\2\2\2\u068d\u0691\3\2\2\2\u068e\u068c\3\2\2\2\u068f\u0691"+ + "\5\u00bc_\2\u0690\u0687\3\2\2\2\u0690\u068f\3\2\2\2\u0690\u0691\3\2\2"+ + "\2\u0691\u0693\3\2\2\2\u0692\u0694\7\u00dc\2\2\u0693\u0692\3\2\2\2\u0693"+ + "\u0694\3\2\2\2\u0694\u0695\3\2\2\2\u0695\u0696\7\u00d7\2\2\u0696\u00d7"+ + "\3\2\2\2\u0697\u0699\5\u00dan\2\u0698\u0697\3\2\2\2\u0698\u0699\3\2\2"+ + "\2\u0699\u069b\3\2\2\2\u069a\u069c\7\u00c5\2\2\u069b\u069a\3\2\2\2\u069b"+ + "\u069c\3\2\2\2\u069c\u069d\3\2\2\2\u069d\u06a1\5\u00a6T\2\u069e\u069f"+ + "\7\u00c8\2\2\u069f\u06a1\5\u00eex\2\u06a0\u0698\3\2\2\2\u06a0\u069e\3"+ + "\2\2\2\u06a1\u00d9\3\2\2\2\u06a2\u06a3\5\u010a\u0086\2\u06a3\u06a4\7\u00dd"+ + "\2\2\u06a4\u00db\3\2\2\2\u06a5\u06c9\5\u00dep\2\u06a6\u06c9\5\u00e8u\2"+ + "\u06a7\u06a8\7/\2\2\u06a8\u06ad\7\u00d6\2\2\u06a9\u06ab\5\u00be`\2\u06aa"+ + "\u06ac\7\u00dc\2\2\u06ab\u06aa\3\2\2\2\u06ab\u06ac\3\2\2\2\u06ac\u06ae"+ + "\3\2\2\2\u06ad\u06a9\3\2\2\2\u06ad\u06ae\3\2\2\2\u06ae\u06af\3\2\2\2\u06af"+ + "\u06c9\7\u00d7\2\2\u06b0\u06b5\7\u00d8\2\2\u06b1\u06b3\5\u00be`\2\u06b2"+ + "\u06b4\7\u00dc\2\2\u06b3\u06b2\3\2\2\2\u06b3\u06b4\3\2\2\2\u06b4\u06b6"+ + "\3\2\2\2\u06b5\u06b1\3\2\2\2\u06b5\u06b6\3\2\2\2\u06b6\u06b7\3\2\2\2\u06b7"+ + "\u06c9\7\u00d9\2\2\u06b8\u06b9\t\21\2\2\u06b9\u06c9\5\u00dco\2\u06ba\u06bd"+ + "\5\u00e8u\2\u06bb\u06bd\5\u00dep\2\u06bc\u06ba\3\2\2\2\u06bc\u06bb\3\2"+ + "\2\2\u06bd\u06c5\3\2\2\2\u06be\u06c1\7\u00d4\2\2\u06bf\u06c2\5\u00e8u"+ + "\2\u06c0\u06c2\5\u00dep\2\u06c1\u06bf\3\2\2\2\u06c1\u06c0\3\2\2\2\u06c2"+ + "\u06c4\3\2\2\2\u06c3\u06be\3\2\2\2\u06c4\u06c7\3\2\2\2\u06c5\u06c3\3\2"+ + "\2\2\u06c5\u06c6\3\2\2\2\u06c6\u06c9\3\2\2\2\u06c7\u06c5\3\2\2\2\u06c8"+ + "\u06a5\3\2\2\2\u06c8\u06a6\3\2\2\2\u06c8\u06a7\3\2\2\2\u06c8\u06b0\3\2"+ + "\2\2\u06c8\u06b8\3\2\2\2\u06c8\u06bc\3\2\2\2\u06c9\u00dd\3\2\2\2\u06ca"+ + "\u06d0\7k\2\2\u06cb\u06d0\5\u00e0q\2\u06cc\u06d0\5\u010e\u0088\2\u06cd"+ + "\u06d0\5\u00e4s\2\u06ce\u06d0\5\u00ceh\2\u06cf\u06ca\3\2\2\2\u06cf\u06cb"+ + "\3\2\2\2\u06cf\u06cc\3\2\2\2\u06cf\u06cd\3\2\2\2\u06cf\u06ce\3\2\2\2\u06d0"+ + "\u00df\3\2\2\2\u06d1\u06d6\7\u00e6\2\2\u06d2\u06d6\7\63\2\2\u06d3\u06d6"+ + "\5\u00e2r\2\u06d4\u06d6\5\u00e6t\2\u06d5\u06d1\3\2\2\2\u06d5\u06d2\3\2"+ + "\2\2\u06d5\u06d3\3\2\2\2\u06d5\u06d4\3\2\2\2\u06d6\u00e1\3\2\2\2\u06d7"+ + "\u06d8\t\22\2\2\u06d8\u00e3\3\2\2\2\u06d9\u06da\t\23\2\2\u06da\u06df\7"+ + "\u00c2\2\2\u06db\u06e0\5\u010a\u0086\2\u06dc\u06e0\7\u008f\2\2\u06dd\u06e0"+ + "\7\u008b\2\2\u06de\u06e0\7\u008c\2\2\u06df\u06db\3\2\2\2\u06df\u06dc\3"+ + "\2\2\2\u06df\u06dd\3\2\2\2\u06df\u06de\3\2\2\2\u06e0\u06ec\3\2\2\2\u06e1"+ + "\u06e5\5\u00c6d\2\u06e2\u06e5\5\u0100\u0081\2\u06e3\u06e5\5\u00e8u\2\u06e4"+ + "\u06e1\3\2\2\2\u06e4\u06e2\3\2\2\2\u06e4\u06e3\3\2\2\2\u06e5\u06e6\3\2"+ + "\2\2\u06e6\u06e9\7\u00c2\2\2\u06e7\u06ea\5\u010a\u0086\2\u06e8\u06ea\5"+ + "\u0100\u0081\2\u06e9\u06e7\3\2\2\2\u06e9\u06e8\3\2\2\2\u06ea\u06ec\3\2"+ + "\2\2\u06eb\u06d9\3\2\2\2\u06eb\u06e4\3\2\2\2\u06ec\u00e5\3\2\2\2\u06ed"+ + "\u06ee\7\u00e3\2\2\u06ee\u00e7\3\2\2\2\u06ef\u06f1\7\u00ed\2\2\u06f0\u06f2"+ + "\7\u00f5\2\2\u06f1\u06f0\3\2\2\2\u06f2\u06f3\3\2\2\2\u06f3\u06f1\3\2\2"+ + "\2\u06f3\u06f4\3\2\2\2\u06f4\u0705\3\2\2\2\u06f5\u06f7\7\u00ec\2\2\u06f6"+ + "\u06f8\7\u00f5\2\2\u06f7\u06f6\3\2\2\2\u06f8\u06f9\3\2\2\2\u06f9\u06f7"+ + "\3\2\2\2\u06f9\u06fa\3\2\2\2\u06fa\u0705\3\2\2\2\u06fb\u0705\7\u00ea\2"+ + "\2\u06fc\u0700\7\u00eb\2\2\u06fd\u06ff\5\u00eav\2\u06fe\u06fd\3\2\2\2"+ + "\u06ff\u0702\3\2\2\2\u0700\u06fe\3\2\2\2\u0700\u0701\3\2\2\2\u0701\u0703"+ + "\3\2\2\2\u0702\u0700\3\2\2\2\u0703\u0705\7\u00eb\2\2\u0704\u06ef\3\2\2"+ + "\2\u0704\u06f5\3\2\2\2\u0704\u06fb\3\2\2\2\u0704\u06fc\3\2\2\2\u0705\u00e9"+ + "\3\2\2\2\u0706\u070a\7\u00f1\2\2\u0707\u070a\7\u00f0\2\2\u0708\u070a\5"+ + "\u00eex\2\u0709\u0706\3\2\2\2\u0709\u0707\3\2\2\2\u0709\u0708\3\2\2\2"+ + "\u070a\u00eb\3\2\2\2\u070b\u0710\5\u00eex\2\u070c\u070d\7\u00dc\2\2\u070d"+ + "\u070f\5\u00eex\2\u070e\u070c\3\2\2\2\u070f\u0712\3\2\2\2\u0710\u070e"+ + "\3\2\2\2\u0710\u0711\3\2\2\2\u0711\u00ed\3\2\2\2\u0712\u0710\3\2\2\2\u0713"+ + "\u0717\5\u00f0y\2\u0714\u0716\5\u00f2z\2\u0715\u0714\3\2\2\2\u0716\u0719"+ + "\3\2\2\2\u0717\u0715\3\2\2\2\u0717\u0718\3\2\2\2\u0718\u00ef\3\2\2\2\u0719"+ + "\u0717\3\2\2\2\u071a\u0721\5\u00fa~\2\u071b\u0721\5\u00f4{\2\u071c\u071d"+ + "\7\u00d6\2\2\u071d\u071e\5\u00b8]\2\u071e\u071f\7\u00d7\2\2\u071f\u0721"+ + "\3\2\2\2\u0720\u071a\3\2\2\2\u0720\u071b\3\2\2\2\u0720\u071c\3\2\2\2\u0721"+ + "\u00f1\3\2\2\2\u0722\u0723\7\u00c3\2\2\u0723\u0725\5\u00fc\177\2\u0724"+ + "\u0726\5\u00f8}\2\u0725\u0724\3\2\2\2\u0725\u0726\3\2\2\2\u0726\u00f3"+ + "\3\2\2\2\u0727\u0728\5\u00f6|\2\u0728\u0729\5\u00f8}\2\u0729\u00f5\3\2"+ + "\2\2\u072a\u072f\5\u00ceh\2\u072b\u072f\5\u00e4s\2\u072c\u072f\5\u00fa"+ + "~\2\u072d\u072f\5\u00a4S\2\u072e\u072a\3\2\2\2\u072e\u072b\3\2\2\2\u072e"+ + "\u072c\3\2\2\2\u072e\u072d\3\2\2\2\u072f\u00f7\3\2\2\2\u0730\u0732\5,"+ + "\27\2\u0731\u0730\3\2\2\2\u0731\u0732\3\2\2\2\u0732\u0734\3\2\2\2\u0733"+ + "\u0735\5\u00d6l\2\u0734\u0733\3\2\2\2\u0735\u0736\3\2\2\2\u0736\u0734"+ + "\3\2\2\2\u0736\u0737\3\2\2\2\u0737\u073b\3\2\2\2\u0738\u073a\5\u0102\u0082"+ + "\2\u0739\u0738\3\2\2\2\u073a\u073d\3\2\2\2\u073b\u0739\3\2\2\2\u073b\u073c"+ + "\3\2\2\2\u073c\u00f9\3\2\2\2\u073d\u073b\3\2\2\2\u073e\u0741\5\u0100\u0081"+ + "\2\u073f\u0740\7\u00c2\2\2\u0740\u0742\5\u0100\u0081\2\u0741\u073f\3\2"+ + "\2\2\u0741\u0742\3\2\2\2\u0742\u0748\3\2\2\2\u0743\u0744\5\u00c6d\2\u0744"+ + "\u0745\7\u00c2\2\2\u0745\u0746\5\u0100\u0081\2\u0746\u0748\3\2\2\2\u0747"+ + "\u073e\3\2\2\2\u0747\u0743\3\2\2\2\u0748\u00fb\3\2\2\2\u0749\u074c\5\u00fe"+ + "\u0080\2\u074a\u074c\5\u0100\u0081\2\u074b\u0749\3\2\2\2\u074b\u074a\3"+ + "\2\2\2\u074c\u00fd\3\2\2\2\u074d\u0753\5\u010a\u0086\2\u074e\u074f\7\u00da"+ + "\2\2\u074f\u0750\5\u00a6T\2\u0750\u0751\7\u00db\2\2\u0751\u0753\3\2\2"+ + "\2\u0752\u074d\3\2\2\2\u0752\u074e\3\2\2\2\u0753\u0757\3\2\2\2\u0754\u0756"+ + "\5\u0102\u0082\2\u0755\u0754\3\2\2\2\u0756\u0759\3\2\2\2\u0757\u0755\3"+ + "\2\2\2\u0757\u0758\3\2\2\2\u0758\u00ff\3\2\2\2\u0759\u0757\3\2\2\2\u075a"+ + "\u075c\7\u00d3\2\2\u075b\u075a\3\2\2\2\u075c\u075f\3\2\2\2\u075d\u075b"+ + "\3\2\2\2\u075d\u075e\3\2\2\2\u075e\u0766\3\2\2\2\u075f\u075d\3\2\2\2\u0760"+ + "\u0767\7\u00e2\2\2\u0761\u0762\7\u00d3\2\2\u0762\u0763\7\u00da\2\2\u0763"+ + "\u0764\5\u00a6T\2\u0764\u0765\7\u00db\2\2\u0765\u0767\3\2\2\2\u0766\u0760"+ + "\3\2\2\2\u0766\u0761\3\2\2\2\u0767\u076b\3\2\2\2\u0768\u076a\5\u0102\u0082"+ + "\2\u0769\u0768\3\2\2\2\u076a\u076d\3\2\2\2\u076b\u0769\3\2\2\2\u076b\u076c"+ + "\3\2\2\2\u076c\u0101\3\2\2\2\u076d\u076b\3\2\2\2\u076e\u0770\7\u00d8\2"+ + "\2\u076f\u0771\5\u00a6T\2\u0770\u076f\3\2\2\2\u0770\u0771\3\2\2\2\u0771"+ + "\u0772\3\2\2\2\u0772\u0778\7\u00d9\2\2\u0773\u0774\7\u00da\2\2\u0774\u0775"+ + "\5\u00a6T\2\u0775\u0776\7\u00db\2\2\u0776\u0778\3\2\2\2\u0777\u076e\3"+ + "\2\2\2\u0777\u0773\3\2\2\2\u0778\u0103\3\2\2\2\u0779\u077b\5\u0106\u0084"+ + "\2\u077a\u0779\3\2\2\2\u077a\u077b\3\2\2\2\u077b\u0782\3\2\2\2\u077c\u077e"+ + "\7\u00dc\2\2\u077d\u077f\5\u0106\u0084\2\u077e\u077d\3\2\2\2\u077e\u077f"+ + "\3\2\2\2\u077f\u0781\3\2\2\2\u0780\u077c\3\2\2\2\u0781\u0784\3\2\2\2\u0782"+ + "\u0780\3\2\2\2\u0782\u0783\3\2\2\2\u0783\u0105\3\2\2\2\u0784\u0782\3\2"+ + "\2\2\u0785\u078d\5\u00eex\2\u0786\u0787\7d\2\2\u0787\u0788\7\u00d6\2\2"+ + "\u0788\u0789\5\u0104\u0083\2\u0789\u078a\7\u00d7\2\2\u078a\u078d\3\2\2"+ + "\2\u078b\u078d\5\u00c0a\2\u078c\u0785\3\2\2\2\u078c\u0786\3\2\2\2\u078c"+ + "\u078b\3\2\2\2\u078d\u0107\3\2\2\2\u078e\u078f\t\24\2\2\u078f\u0109\3"+ + "\2\2\2\u0790\u0791\t\25\2\2\u0791\u010b\3\2\2\2\u0792\u0793\t\26\2\2\u0793"+ + "\u010d\3\2\2\2\u0794\u0795\t\27\2\2\u0795\u010f\3\2\2\2\u0796\u0797\t"+ + "\30\2\2\u0797\u0111\3\2\2\2\u0798\u0799\t\31\2\2\u0799\u0113\3\2\2\2\u079a"+ + "\u079b\t\32\2\2\u079b\u0115\3\2\2\2\u00fe\u0117\u011b\u011d\u0125\u0128"+ + "\u0142\u0146\u014b\u0150\u0156\u0164\u0168\u016e\u0173\u0178\u017f\u0185"+ + "\u018c\u0193\u0196\u019a\u019e\u01a5\u01a8\u01ad\u01b0\u01b3\u01b6\u01bb"+ + "\u01bf\u01c3\u01c8\u01cc\u01ce\u01d4\u01e0\u01f1\u01f8\u0200\u0204\u0209"+ + "\u020f\u0217\u021f\u0225\u022c\u0233\u0238\u023e\u025b\u0269\u026d\u0276"+ + "\u027a\u027f\u0299\u02a4\u02a8\u02ac\u02b5\u02bf\u02c4\u02ca\u02cf\u02d4"+ + "\u02d9\u02de\u02e4\u02ea\u02f0\u0308\u030d\u0310\u031a\u031d\u032a\u0332"+ + "\u0339\u033c\u0341\u0345\u034e\u0352\u036c\u0371\u0378\u037f\u0387\u038a"+ + "\u0390\u0394\u0397\u039c\u03a0\u03a3\u03a6\u03a9\u03b1\u03b8\u03c1\u03ce"+ + "\u03da\u03e0\u03e4\u03eb\u03f1\u03f5\u03fc\u0403\u0407\u040e\u0412\u0414"+ + "\u041a\u0421\u0425\u0429\u0436\u0439\u0440\u0447\u044b\u0451\u0455\u045a"+ + "\u045f\u0466\u046e\u0477\u047b\u0481\u048a\u048f\u0496\u049d\u04a3\u04c9"+ + "\u04f3\u04fa\u04ff\u0501\u0527\u053d\u053f\u0544\u0549\u054e\u0551\u0557"+ + "\u055d\u0564\u0569\u056f\u0579\u057e\u0582\u0586\u0589\u0590\u0593\u0598"+ + "\u059c\u05a2\u05a6\u05b1\u05bd\u05c1\u05ca\u05d3\u05db\u05df\u05e6\u05ea"+ + "\u05ef\u05f4\u05f8\u0601\u0607\u060d\u0610\u0614\u0617\u061c\u061f\u0622"+ + "\u0625\u0628\u062c\u0630\u0634\u0639\u063d\u063f\u0645\u064f\u0653\u0656"+ + "\u0660\u0665\u0667\u066c\u0674\u0678\u067c\u0683\u068c\u0690\u0693\u0698"+ + "\u069b\u06a0\u06ab\u06ad\u06b3\u06b5\u06bc\u06c1\u06c5\u06c8\u06cf\u06d5"+ + "\u06df\u06e4\u06e9\u06eb\u06f3\u06f9\u0700\u0704\u0709\u0710\u0717\u0720"+ + "\u0725\u072e\u0731\u0736\u073b\u0741\u0747\u074b\u0752\u0757\u075d\u0766"+ + "\u076b\u0770\u0777\u077a\u077e\u0782\u078c"; + 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/app/src/main/java/antlr/PhpParser.tokens b/app/src/main/java/antlr/PhpParser.tokens new file mode 100644 index 0000000..67693cc --- /dev/null +++ b/app/src/main/java/antlr/PhpParser.tokens @@ -0,0 +1,416 @@ +SeaWhitespace=1 +HtmlText=2 +XmlStart=3 +PHPStart=4 +HtmlScriptOpen=5 +HtmlStyleOpen=6 +HtmlComment=7 +HtmlDtd=8 +HtmlOpen=9 +Shebang=10 +Error=11 +XmlText=12 +XmlClose=13 +PHPStartInside=14 +HtmlClose=15 +HtmlSlashClose=16 +HtmlSlash=17 +HtmlEquals=18 +HtmlStartQuoteString=19 +HtmlStartDoubleQuoteString=20 +HtmlHex=21 +HtmlDecimal=22 +HtmlSpace=23 +HtmlName=24 +ErrorInside=25 +PHPStartInsideQuoteString=26 +HtmlEndQuoteString=27 +HtmlQuoteString=28 +ErrorHtmlQuote=29 +PHPStartDoubleQuoteString=30 +HtmlEndDoubleQuoteString=31 +HtmlDoubleQuoteString=32 +ErrorHtmlDoubleQuote=33 +ScriptText=34 +HtmlScriptClose=35 +PHPStartInsideScript=36 +StyleBody=37 +PHPEnd=38 +Whitespace=39 +MultiLineComment=40 +SingleLineComment=41 +ShellStyleComment=42 +AttributeStart=43 +Abstract=44 +Array=45 +As=46 +BinaryCast=47 +BoolType=48 +BooleanConstant=49 +Break=50 +Callable=51 +Case=52 +Catch=53 +Class=54 +Clone=55 +Const=56 +Continue=57 +Declare=58 +Default=59 +Do=60 +DoubleCast=61 +DoubleType=62 +Echo=63 +Else=64 +ElseIf=65 +Empty=66 +Enum_=67 +EndDeclare=68 +EndFor=69 +EndForeach=70 +EndIf=71 +EndSwitch=72 +EndWhile=73 +Eval=74 +Exit=75 +Extends=76 +Final=77 +Finally=78 +FloatCast=79 +For=80 +Foreach=81 +Function_=82 +Global=83 +Goto=84 +If=85 +Implements=86 +Import=87 +Include=88 +IncludeOnce=89 +InstanceOf=90 +InsteadOf=91 +Int8Cast=92 +Int16Cast=93 +Int64Type=94 +IntType=95 +Interface=96 +IsSet=97 +List=98 +LogicalAnd=99 +LogicalOr=100 +LogicalXor=101 +Match_=102 +Namespace=103 +New=104 +Null=105 +ObjectType=106 +Parent_=107 +Partial=108 +Print=109 +Private=110 +Protected=111 +Public=112 +Readonly=113 +Require=114 +RequireOnce=115 +Resource=116 +Return=117 +Static=118 +StringType=119 +Switch=120 +Throw=121 +Trait=122 +Try=123 +Typeof=124 +UintCast=125 +UnicodeCast=126 +Unset=127 +Use=128 +Var=129 +While=130 +Yield=131 +From=132 +LambdaFn=133 +Ticks=134 +Encoding=135 +StrictTypes=136 +Get=137 +Set=138 +Call=139 +CallStatic=140 +Constructor=141 +Destruct=142 +Wakeup=143 +Sleep=144 +Autoload=145 +IsSet__=146 +Unset__=147 +ToString__=148 +Invoke=149 +SetState=150 +Clone__=151 +DebugInfo=152 +Namespace__=153 +Class__=154 +Traic__=155 +Function__=156 +Method__=157 +Line__=158 +File__=159 +Dir__=160 +Spaceship=161 +Lgeneric=162 +Rgeneric=163 +DoubleArrow=164 +Inc=165 +Dec=166 +IsIdentical=167 +IsNoidentical=168 +IsEqual=169 +IsNotEq=170 +IsSmallerOrEqual=171 +IsGreaterOrEqual=172 +PlusEqual=173 +MinusEqual=174 +MulEqual=175 +Pow=176 +PowEqual=177 +DivEqual=178 +Concaequal=179 +ModEqual=180 +ShiftLeftEqual=181 +ShiftRightEqual=182 +AndEqual=183 +OrEqual=184 +XorEqual=185 +BooleanOr=186 +BooleanAnd=187 +NullCoalescing=188 +NullCoalescingEqual=189 +ShiftLeft=190 +ShiftRight=191 +DoubleColon=192 +ObjectOperator=193 +NamespaceSeparator=194 +Ellipsis=195 +Less=196 +Greater=197 +Ampersand=198 +Pipe=199 +Bang=200 +Caret=201 +Plus=202 +Minus=203 +Asterisk=204 +Percent=205 +Divide=206 +Tilde=207 +SuppressWarnings=208 +Dollar=209 +Dot=210 +QuestionMark=211 +OpenRoundBracket=212 +CloseRoundBracket=213 +OpenSquareBracket=214 +CloseSquareBracket=215 +OpenCurlyBracket=216 +CloseCurlyBracket=217 +Comma=218 +Colon=219 +SemiColon=220 +Eq=221 +Quote=222 +BackQuote=223 +VarName=224 +Label=225 +Octal=226 +Decimal=227 +Real=228 +Hex=229 +Binary=230 +BackQuoteString=231 +SingleQuoteString=232 +DoubleQuote=233 +StartNowDoc=234 +StartHereDoc=235 +ErrorPhp=236 +CurlyDollar=237 +UnicodeEscape=238 +StringPart=239 +Comment=240 +PHPEndSingleLineComment=241 +CommentEnd=242 +HereDocText=243 +XmlText2=244 +'<?xml'=3 +'?>'=13 +'/>'=16 +'#['=43 +'abstract'=44 +'array'=45 +'as'=46 +'binary'=47 +'break'=50 +'callable'=51 +'case'=52 +'catch'=53 +'class'=54 +'clone'=55 +'const'=56 +'continue'=57 +'declare'=58 +'default'=59 +'do'=60 +'real'=61 +'double'=62 +'echo'=63 +'else'=64 +'elseif'=65 +'empty'=66 +'enum'=67 +'enddeclare'=68 +'endfor'=69 +'endforeach'=70 +'endif'=71 +'endswitch'=72 +'endwhile'=73 +'eval'=74 +'die'=75 +'extends'=76 +'final'=77 +'finally'=78 +'float'=79 +'for'=80 +'foreach'=81 +'function'=82 +'global'=83 +'goto'=84 +'if'=85 +'implements'=86 +'import'=87 +'include'=88 +'include_once'=89 +'instanceof'=90 +'insteadof'=91 +'int8'=92 +'int16'=93 +'int64'=94 +'interface'=96 +'isset'=97 +'list'=98 +'and'=99 +'or'=100 +'xor'=101 +'match'=102 +'namespace'=103 +'new'=104 +'null'=105 +'object'=106 +'parent'=107 +'partial'=108 +'print'=109 +'private'=110 +'protected'=111 +'public'=112 +'readonly'=113 +'require'=114 +'require_once'=115 +'resource'=116 +'return'=117 +'static'=118 +'string'=119 +'switch'=120 +'throw'=121 +'trait'=122 +'try'=123 +'clrtypeof'=124 +'unicode'=126 +'unset'=127 +'use'=128 +'var'=129 +'while'=130 +'yield'=131 +'from'=132 +'fn'=133 +'ticks'=134 +'encoding'=135 +'strict_types'=136 +'__get'=137 +'__set'=138 +'__call'=139 +'__callstatic'=140 +'__construct'=141 +'__destruct'=142 +'__wakeup'=143 +'__sleep'=144 +'__autoload'=145 +'__isset'=146 +'__unset'=147 +'__tostring'=148 +'__invoke'=149 +'__set_state'=150 +'__clone'=151 +'__debuginfo'=152 +'__namespace__'=153 +'__class__'=154 +'__trait__'=155 +'__function__'=156 +'__method__'=157 +'__line__'=158 +'__file__'=159 +'__dir__'=160 +'<=>'=161 +'<:'=162 +':>'=163 +'=>'=164 +'++'=165 +'--'=166 +'==='=167 +'!=='=168 +'=='=169 +'<='=171 +'>='=172 +'+='=173 +'-='=174 +'*='=175 +'**'=176 +'**='=177 +'/='=178 +'.='=179 +'%='=180 +'<<='=181 +'>>='=182 +'&='=183 +'|='=184 +'^='=185 +'||'=186 +'&&'=187 +'??'=188 +'??='=189 +'<<'=190 +'>>'=191 +'::'=192 +'->'=193 +'\\'=194 +'...'=195 +'&'=198 +'|'=199 +'!'=200 +'^'=201 +'+'=202 +'-'=203 +'*'=204 +'%'=205 +'~'=207 +'@'=208 +'.'=210 +'('=212 +')'=213 +'['=214 +']'=215 +'}'=217 +','=218 +':'=219 +';'=220 +'\''=222 +'`'=223 diff --git a/app/src/main/java/antlr/PhpParserBaseListener.java b/app/src/main/java/antlr/PhpParserBaseListener.java new file mode 100644 index 0000000..5df9056 --- /dev/null +++ b/app/src/main/java/antlr/PhpParserBaseListener.java @@ -0,0 +1,1997 @@ +package antlr; + +// Generated from PhpParser.g4 by ANTLR 4.5 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.misc.NotNull; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link PhpParserListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class PhpParserBaseListener implements PhpParserListener { + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterHtmlDocument(PhpParser.HtmlDocumentContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitHtmlDocument(PhpParser.HtmlDocumentContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInlineHtml(PhpParser.InlineHtmlContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInlineHtml(PhpParser.InlineHtmlContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterHtmlElement(PhpParser.HtmlElementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitHtmlElement(PhpParser.HtmlElementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterScriptText(PhpParser.ScriptTextContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitScriptText(PhpParser.ScriptTextContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterPhpBlock(PhpParser.PhpBlockContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitPhpBlock(PhpParser.PhpBlockContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterImportStatement(PhpParser.ImportStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitImportStatement(PhpParser.ImportStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTopStatement(PhpParser.TopStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTopStatement(PhpParser.TopStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterUseDeclaration(PhpParser.UseDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitUseDeclaration(PhpParser.UseDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterUseDeclarationContentList(PhpParser.UseDeclarationContentListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitUseDeclarationContentList(PhpParser.UseDeclarationContentListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterUseDeclarationContent(PhpParser.UseDeclarationContentContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitUseDeclarationContent(PhpParser.UseDeclarationContentContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNamespaceDeclaration(PhpParser.NamespaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNamespaceDeclaration(PhpParser.NamespaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNamespaceStatement(PhpParser.NamespaceStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNamespaceStatement(PhpParser.NamespaceStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterFunctionDeclaration(PhpParser.FunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitFunctionDeclaration(PhpParser.FunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterClassDeclaration(PhpParser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitClassDeclaration(PhpParser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterClassEntryType(PhpParser.ClassEntryTypeContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitClassEntryType(PhpParser.ClassEntryTypeContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInterfaceList(PhpParser.InterfaceListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInterfaceList(PhpParser.InterfaceListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeParameterListInBrackets(PhpParser.TypeParameterListInBracketsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeParameterListInBrackets(PhpParser.TypeParameterListInBracketsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeParameterList(PhpParser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeParameterList(PhpParser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeParameterWithDefaultsList(PhpParser.TypeParameterWithDefaultsListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeParameterWithDefaultsList(PhpParser.TypeParameterWithDefaultsListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeParameterDecl(PhpParser.TypeParameterDeclContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeParameterDecl(PhpParser.TypeParameterDeclContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeParameterWithDefaultDecl(PhpParser.TypeParameterWithDefaultDeclContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeParameterWithDefaultDecl(PhpParser.TypeParameterWithDefaultDeclContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterGenericDynamicArgs(PhpParser.GenericDynamicArgsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitGenericDynamicArgs(PhpParser.GenericDynamicArgsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAttributes(PhpParser.AttributesContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAttributes(PhpParser.AttributesContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAttributeGroup(PhpParser.AttributeGroupContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAttributeGroup(PhpParser.AttributeGroupContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAttribute(PhpParser.AttributeContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAttribute(PhpParser.AttributeContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInnerStatementList(PhpParser.InnerStatementListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInnerStatementList(PhpParser.InnerStatementListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInnerStatement(PhpParser.InnerStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInnerStatement(PhpParser.InnerStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterStatement(PhpParser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitStatement(PhpParser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterEmptyStatement_(PhpParser.EmptyStatement_Context ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitEmptyStatement_(PhpParser.EmptyStatement_Context ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterBlockStatement(PhpParser.BlockStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitBlockStatement(PhpParser.BlockStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterIfStatement(PhpParser.IfStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitIfStatement(PhpParser.IfStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterElseIfStatement(PhpParser.ElseIfStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitElseIfStatement(PhpParser.ElseIfStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterElseIfColonStatement(PhpParser.ElseIfColonStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitElseIfColonStatement(PhpParser.ElseIfColonStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterElseStatement(PhpParser.ElseStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitElseStatement(PhpParser.ElseStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterElseColonStatement(PhpParser.ElseColonStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitElseColonStatement(PhpParser.ElseColonStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterWhileStatement(PhpParser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitWhileStatement(PhpParser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterDoWhileStatement(PhpParser.DoWhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitDoWhileStatement(PhpParser.DoWhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterForStatement(PhpParser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitForStatement(PhpParser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterForInit(PhpParser.ForInitContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitForInit(PhpParser.ForInitContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterForUpdate(PhpParser.ForUpdateContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitForUpdate(PhpParser.ForUpdateContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterSwitchStatement(PhpParser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitSwitchStatement(PhpParser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterSwitchBlock(PhpParser.SwitchBlockContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitSwitchBlock(PhpParser.SwitchBlockContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterBreakStatement(PhpParser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitBreakStatement(PhpParser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterContinueStatement(PhpParser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitContinueStatement(PhpParser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterReturnStatement(PhpParser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitReturnStatement(PhpParser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterExpressionStatement(PhpParser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitExpressionStatement(PhpParser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterUnsetStatement(PhpParser.UnsetStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitUnsetStatement(PhpParser.UnsetStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterForeachStatement(PhpParser.ForeachStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitForeachStatement(PhpParser.ForeachStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTryCatchFinally(PhpParser.TryCatchFinallyContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTryCatchFinally(PhpParser.TryCatchFinallyContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterCatchClause(PhpParser.CatchClauseContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitCatchClause(PhpParser.CatchClauseContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterFinallyStatement(PhpParser.FinallyStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitFinallyStatement(PhpParser.FinallyStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterThrowStatement(PhpParser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitThrowStatement(PhpParser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterGotoStatement(PhpParser.GotoStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitGotoStatement(PhpParser.GotoStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterDeclareStatement(PhpParser.DeclareStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitDeclareStatement(PhpParser.DeclareStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInlineHtmlStatement(PhpParser.InlineHtmlStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInlineHtmlStatement(PhpParser.InlineHtmlStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterDeclareList(PhpParser.DeclareListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitDeclareList(PhpParser.DeclareListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterDirective(PhpParser.DirectiveContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitDirective(PhpParser.DirectiveContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterFormalParameterList(PhpParser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitFormalParameterList(PhpParser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterFormalParameter(PhpParser.FormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitFormalParameter(PhpParser.FormalParameterContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeHint(PhpParser.TypeHintContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeHint(PhpParser.TypeHintContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterGlobalStatement(PhpParser.GlobalStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitGlobalStatement(PhpParser.GlobalStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterGlobalVar(PhpParser.GlobalVarContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitGlobalVar(PhpParser.GlobalVarContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterEchoStatement(PhpParser.EchoStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitEchoStatement(PhpParser.EchoStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterStaticVariableStatement(PhpParser.StaticVariableStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitStaticVariableStatement(PhpParser.StaticVariableStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterClassStatement(PhpParser.ClassStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitClassStatement(PhpParser.ClassStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTraitAdaptations(PhpParser.TraitAdaptationsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTraitAdaptations(PhpParser.TraitAdaptationsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTraitAdaptationStatement(PhpParser.TraitAdaptationStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTraitAdaptationStatement(PhpParser.TraitAdaptationStatementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTraitPrecedence(PhpParser.TraitPrecedenceContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTraitPrecedence(PhpParser.TraitPrecedenceContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTraitAlias(PhpParser.TraitAliasContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTraitAlias(PhpParser.TraitAliasContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTraitMethodReference(PhpParser.TraitMethodReferenceContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTraitMethodReference(PhpParser.TraitMethodReferenceContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterBaseCtorCall(PhpParser.BaseCtorCallContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitBaseCtorCall(PhpParser.BaseCtorCallContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterReturnTypeDecl(PhpParser.ReturnTypeDeclContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitReturnTypeDecl(PhpParser.ReturnTypeDeclContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMethodBody(PhpParser.MethodBodyContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMethodBody(PhpParser.MethodBodyContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterPropertyModifiers(PhpParser.PropertyModifiersContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitPropertyModifiers(PhpParser.PropertyModifiersContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMemberModifiers(PhpParser.MemberModifiersContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMemberModifiers(PhpParser.MemberModifiersContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterVariableInitializer(PhpParser.VariableInitializerContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitVariableInitializer(PhpParser.VariableInitializerContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterIdentifierInitializer(PhpParser.IdentifierInitializerContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitIdentifierInitializer(PhpParser.IdentifierInitializerContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterGlobalConstantDeclaration(PhpParser.GlobalConstantDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitGlobalConstantDeclaration(PhpParser.GlobalConstantDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterEnumDeclaration(PhpParser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitEnumDeclaration(PhpParser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterEnumItem(PhpParser.EnumItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitEnumItem(PhpParser.EnumItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterExpressionList(PhpParser.ExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitExpressionList(PhpParser.ExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterParentheses(PhpParser.ParenthesesContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitParentheses(PhpParser.ParenthesesContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterChainExpression(PhpParser.ChainExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitChainExpression(PhpParser.ChainExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterSpecialWordExpression(PhpParser.SpecialWordExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitSpecialWordExpression(PhpParser.SpecialWordExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArrayCreationExpression(PhpParser.ArrayCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArrayCreationExpression(PhpParser.ArrayCreationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterBackQuoteStringExpression(PhpParser.BackQuoteStringExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitBackQuoteStringExpression(PhpParser.BackQuoteStringExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMatchExpression(PhpParser.MatchExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMatchExpression(PhpParser.MatchExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterLogicalExpression(PhpParser.LogicalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitLogicalExpression(PhpParser.LogicalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterPrintExpression(PhpParser.PrintExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitPrintExpression(PhpParser.PrintExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAssignmentExpression(PhpParser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAssignmentExpression(PhpParser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterPostfixIncDecExpression(PhpParser.PostfixIncDecExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitPostfixIncDecExpression(PhpParser.PostfixIncDecExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterCloneExpression(PhpParser.CloneExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitCloneExpression(PhpParser.CloneExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterUnaryOperatorExpression(PhpParser.UnaryOperatorExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitUnaryOperatorExpression(PhpParser.UnaryOperatorExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNewExpression(PhpParser.NewExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNewExpression(PhpParser.NewExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterParenthesisExpression(PhpParser.ParenthesisExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitParenthesisExpression(PhpParser.ParenthesisExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterSpaceshipExpression(PhpParser.SpaceshipExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitSpaceshipExpression(PhpParser.SpaceshipExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterConditionalExpression(PhpParser.ConditionalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitConditionalExpression(PhpParser.ConditionalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNullCoalescingExpression(PhpParser.NullCoalescingExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNullCoalescingExpression(PhpParser.NullCoalescingExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArithmeticExpression(PhpParser.ArithmeticExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArithmeticExpression(PhpParser.ArithmeticExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterIndexerExpression(PhpParser.IndexerExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitIndexerExpression(PhpParser.IndexerExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterScalarExpression(PhpParser.ScalarExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitScalarExpression(PhpParser.ScalarExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterPrefixIncDecExpression(PhpParser.PrefixIncDecExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitPrefixIncDecExpression(PhpParser.PrefixIncDecExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterComparisonExpression(PhpParser.ComparisonExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitComparisonExpression(PhpParser.ComparisonExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterCastExpression(PhpParser.CastExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitCastExpression(PhpParser.CastExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInstanceOfExpression(PhpParser.InstanceOfExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInstanceOfExpression(PhpParser.InstanceOfExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArrayDestructExpression(PhpParser.ArrayDestructExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArrayDestructExpression(PhpParser.ArrayDestructExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterLambdaFunctionExpression(PhpParser.LambdaFunctionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitLambdaFunctionExpression(PhpParser.LambdaFunctionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterBitwiseExpression(PhpParser.BitwiseExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitBitwiseExpression(PhpParser.BitwiseExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAssignable(PhpParser.AssignableContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAssignable(PhpParser.AssignableContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArrayCreation(PhpParser.ArrayCreationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArrayCreation(PhpParser.ArrayCreationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArrayDestructuring(PhpParser.ArrayDestructuringContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArrayDestructuring(PhpParser.ArrayDestructuringContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterIndexedDestructItem(PhpParser.IndexedDestructItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitIndexedDestructItem(PhpParser.IndexedDestructItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterKeyedDestructItem(PhpParser.KeyedDestructItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitKeyedDestructItem(PhpParser.KeyedDestructItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterLambdaFunctionExpr(PhpParser.LambdaFunctionExprContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitLambdaFunctionExpr(PhpParser.LambdaFunctionExprContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMatchExpr(PhpParser.MatchExprContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMatchExpr(PhpParser.MatchExprContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMatchItem(PhpParser.MatchItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMatchItem(PhpParser.MatchItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNewExpr(PhpParser.NewExprContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNewExpr(PhpParser.NewExprContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAssignmentOperator(PhpParser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAssignmentOperator(PhpParser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterYieldExpression(PhpParser.YieldExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitYieldExpression(PhpParser.YieldExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArrayItemList(PhpParser.ArrayItemListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArrayItemList(PhpParser.ArrayItemListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArrayItem(PhpParser.ArrayItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArrayItem(PhpParser.ArrayItemContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterLambdaFunctionUseVars(PhpParser.LambdaFunctionUseVarsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitLambdaFunctionUseVars(PhpParser.LambdaFunctionUseVarsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterLambdaFunctionUseVar(PhpParser.LambdaFunctionUseVarContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitLambdaFunctionUseVar(PhpParser.LambdaFunctionUseVarContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterQualifiedStaticTypeRef(PhpParser.QualifiedStaticTypeRefContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitQualifiedStaticTypeRef(PhpParser.QualifiedStaticTypeRefContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterTypeRef(PhpParser.TypeRefContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitTypeRef(PhpParser.TypeRefContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAnonymousClass(PhpParser.AnonymousClassContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAnonymousClass(PhpParser.AnonymousClassContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterIndirectTypeRef(PhpParser.IndirectTypeRefContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitIndirectTypeRef(PhpParser.IndirectTypeRefContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterQualifiedNamespaceName(PhpParser.QualifiedNamespaceNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitQualifiedNamespaceName(PhpParser.QualifiedNamespaceNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNamespaceNameList(PhpParser.NamespaceNameListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNamespaceNameList(PhpParser.NamespaceNameListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNamespaceNameTail(PhpParser.NamespaceNameTailContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNamespaceNameTail(PhpParser.NamespaceNameTailContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterQualifiedNamespaceNameList(PhpParser.QualifiedNamespaceNameListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitQualifiedNamespaceNameList(PhpParser.QualifiedNamespaceNameListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArguments(PhpParser.ArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArguments(PhpParser.ArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterActualArgument(PhpParser.ActualArgumentContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitActualArgument(PhpParser.ActualArgumentContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterArgumentName(PhpParser.ArgumentNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitArgumentName(PhpParser.ArgumentNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterConstantInitializer(PhpParser.ConstantInitializerContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitConstantInitializer(PhpParser.ConstantInitializerContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterConstant(PhpParser.ConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitConstant(PhpParser.ConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterLiteralConstant(PhpParser.LiteralConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitLiteralConstant(PhpParser.LiteralConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterNumericConstant(PhpParser.NumericConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitNumericConstant(PhpParser.NumericConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterClassConstant(PhpParser.ClassConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitClassConstant(PhpParser.ClassConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterStringConstant(PhpParser.StringConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitStringConstant(PhpParser.StringConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterString(PhpParser.StringContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitString(PhpParser.StringContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterInterpolatedStringPart(PhpParser.InterpolatedStringPartContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitInterpolatedStringPart(PhpParser.InterpolatedStringPartContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterChainList(PhpParser.ChainListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitChainList(PhpParser.ChainListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterChain(PhpParser.ChainContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitChain(PhpParser.ChainContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterChainOrigin(PhpParser.ChainOriginContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitChainOrigin(PhpParser.ChainOriginContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMemberAccess(PhpParser.MemberAccessContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMemberAccess(PhpParser.MemberAccessContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterFunctionCall(PhpParser.FunctionCallContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitFunctionCall(PhpParser.FunctionCallContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterFunctionCallName(PhpParser.FunctionCallNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitFunctionCallName(PhpParser.FunctionCallNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterActualArguments(PhpParser.ActualArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitActualArguments(PhpParser.ActualArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterChainBase(PhpParser.ChainBaseContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitChainBase(PhpParser.ChainBaseContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterKeyedFieldName(PhpParser.KeyedFieldNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitKeyedFieldName(PhpParser.KeyedFieldNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterKeyedSimpleFieldName(PhpParser.KeyedSimpleFieldNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitKeyedSimpleFieldName(PhpParser.KeyedSimpleFieldNameContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterKeyedVariable(PhpParser.KeyedVariableContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitKeyedVariable(PhpParser.KeyedVariableContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterSquareCurlyExpression(PhpParser.SquareCurlyExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitSquareCurlyExpression(PhpParser.SquareCurlyExpressionContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAssignmentList(PhpParser.AssignmentListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAssignmentList(PhpParser.AssignmentListContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterAssignmentListElement(PhpParser.AssignmentListElementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitAssignmentListElement(PhpParser.AssignmentListElementContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterModifier(PhpParser.ModifierContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitModifier(PhpParser.ModifierContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterIdentifier(PhpParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitIdentifier(PhpParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMemberModifier(PhpParser.MemberModifierContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMemberModifier(PhpParser.MemberModifierContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMagicConstant(PhpParser.MagicConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMagicConstant(PhpParser.MagicConstantContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterMagicMethod(PhpParser.MagicMethodContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitMagicMethod(PhpParser.MagicMethodContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterPrimitiveType(PhpParser.PrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitPrimitiveType(PhpParser.PrimitiveTypeContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterCastOperation(PhpParser.CastOperationContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitCastOperation(PhpParser.CastOperationContext ctx) { } + + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + * <p>The default implementation does nothing.</p> + */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/app/src/main/java/antlr/PhpParserListener.java b/app/src/main/java/antlr/PhpParserListener.java new file mode 100644 index 0000000..98ba3a0 --- /dev/null +++ b/app/src/main/java/antlr/PhpParserListener.java @@ -0,0 +1,1694 @@ +package antlr; + +// Generated from PhpParser.g4 by ANTLR 4.5 +import org.antlr.v4.runtime.misc.NotNull; +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link PhpParser}. + */ +public interface PhpParserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link PhpParser#htmlDocument}. + * @param ctx the parse tree + */ + void enterHtmlDocument(PhpParser.HtmlDocumentContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#htmlDocument}. + * @param ctx the parse tree + */ + void exitHtmlDocument(PhpParser.HtmlDocumentContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#inlineHtml}. + * @param ctx the parse tree + */ + void enterInlineHtml(PhpParser.InlineHtmlContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#inlineHtml}. + * @param ctx the parse tree + */ + void exitInlineHtml(PhpParser.InlineHtmlContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#htmlElement}. + * @param ctx the parse tree + */ + void enterHtmlElement(PhpParser.HtmlElementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#htmlElement}. + * @param ctx the parse tree + */ + void exitHtmlElement(PhpParser.HtmlElementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#scriptText}. + * @param ctx the parse tree + */ + void enterScriptText(PhpParser.ScriptTextContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#scriptText}. + * @param ctx the parse tree + */ + void exitScriptText(PhpParser.ScriptTextContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#phpBlock}. + * @param ctx the parse tree + */ + void enterPhpBlock(PhpParser.PhpBlockContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#phpBlock}. + * @param ctx the parse tree + */ + void exitPhpBlock(PhpParser.PhpBlockContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#importStatement}. + * @param ctx the parse tree + */ + void enterImportStatement(PhpParser.ImportStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#importStatement}. + * @param ctx the parse tree + */ + void exitImportStatement(PhpParser.ImportStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#topStatement}. + * @param ctx the parse tree + */ + void enterTopStatement(PhpParser.TopStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#topStatement}. + * @param ctx the parse tree + */ + void exitTopStatement(PhpParser.TopStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#useDeclaration}. + * @param ctx the parse tree + */ + void enterUseDeclaration(PhpParser.UseDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#useDeclaration}. + * @param ctx the parse tree + */ + void exitUseDeclaration(PhpParser.UseDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#useDeclarationContentList}. + * @param ctx the parse tree + */ + void enterUseDeclarationContentList(PhpParser.UseDeclarationContentListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#useDeclarationContentList}. + * @param ctx the parse tree + */ + void exitUseDeclarationContentList(PhpParser.UseDeclarationContentListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#useDeclarationContent}. + * @param ctx the parse tree + */ + void enterUseDeclarationContent(PhpParser.UseDeclarationContentContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#useDeclarationContent}. + * @param ctx the parse tree + */ + void exitUseDeclarationContent(PhpParser.UseDeclarationContentContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#namespaceDeclaration}. + * @param ctx the parse tree + */ + void enterNamespaceDeclaration(PhpParser.NamespaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#namespaceDeclaration}. + * @param ctx the parse tree + */ + void exitNamespaceDeclaration(PhpParser.NamespaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#namespaceStatement}. + * @param ctx the parse tree + */ + void enterNamespaceStatement(PhpParser.NamespaceStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#namespaceStatement}. + * @param ctx the parse tree + */ + void exitNamespaceStatement(PhpParser.NamespaceStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#functionDeclaration}. + * @param ctx the parse tree + */ + void enterFunctionDeclaration(PhpParser.FunctionDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#functionDeclaration}. + * @param ctx the parse tree + */ + void exitFunctionDeclaration(PhpParser.FunctionDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#classDeclaration}. + * @param ctx the parse tree + */ + void enterClassDeclaration(PhpParser.ClassDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#classDeclaration}. + * @param ctx the parse tree + */ + void exitClassDeclaration(PhpParser.ClassDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#classEntryType}. + * @param ctx the parse tree + */ + void enterClassEntryType(PhpParser.ClassEntryTypeContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#classEntryType}. + * @param ctx the parse tree + */ + void exitClassEntryType(PhpParser.ClassEntryTypeContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#interfaceList}. + * @param ctx the parse tree + */ + void enterInterfaceList(PhpParser.InterfaceListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#interfaceList}. + * @param ctx the parse tree + */ + void exitInterfaceList(PhpParser.InterfaceListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeParameterListInBrackets}. + * @param ctx the parse tree + */ + void enterTypeParameterListInBrackets(PhpParser.TypeParameterListInBracketsContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeParameterListInBrackets}. + * @param ctx the parse tree + */ + void exitTypeParameterListInBrackets(PhpParser.TypeParameterListInBracketsContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeParameterList}. + * @param ctx the parse tree + */ + void enterTypeParameterList(PhpParser.TypeParameterListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeParameterList}. + * @param ctx the parse tree + */ + void exitTypeParameterList(PhpParser.TypeParameterListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeParameterWithDefaultsList}. + * @param ctx the parse tree + */ + void enterTypeParameterWithDefaultsList(PhpParser.TypeParameterWithDefaultsListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeParameterWithDefaultsList}. + * @param ctx the parse tree + */ + void exitTypeParameterWithDefaultsList(PhpParser.TypeParameterWithDefaultsListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeParameterDecl}. + * @param ctx the parse tree + */ + void enterTypeParameterDecl(PhpParser.TypeParameterDeclContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeParameterDecl}. + * @param ctx the parse tree + */ + void exitTypeParameterDecl(PhpParser.TypeParameterDeclContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeParameterWithDefaultDecl}. + * @param ctx the parse tree + */ + void enterTypeParameterWithDefaultDecl(PhpParser.TypeParameterWithDefaultDeclContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeParameterWithDefaultDecl}. + * @param ctx the parse tree + */ + void exitTypeParameterWithDefaultDecl(PhpParser.TypeParameterWithDefaultDeclContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#genericDynamicArgs}. + * @param ctx the parse tree + */ + void enterGenericDynamicArgs(PhpParser.GenericDynamicArgsContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#genericDynamicArgs}. + * @param ctx the parse tree + */ + void exitGenericDynamicArgs(PhpParser.GenericDynamicArgsContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#attributes}. + * @param ctx the parse tree + */ + void enterAttributes(PhpParser.AttributesContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#attributes}. + * @param ctx the parse tree + */ + void exitAttributes(PhpParser.AttributesContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#attributeGroup}. + * @param ctx the parse tree + */ + void enterAttributeGroup(PhpParser.AttributeGroupContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#attributeGroup}. + * @param ctx the parse tree + */ + void exitAttributeGroup(PhpParser.AttributeGroupContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#attribute}. + * @param ctx the parse tree + */ + void enterAttribute(PhpParser.AttributeContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#attribute}. + * @param ctx the parse tree + */ + void exitAttribute(PhpParser.AttributeContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#innerStatementList}. + * @param ctx the parse tree + */ + void enterInnerStatementList(PhpParser.InnerStatementListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#innerStatementList}. + * @param ctx the parse tree + */ + void exitInnerStatementList(PhpParser.InnerStatementListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#innerStatement}. + * @param ctx the parse tree + */ + void enterInnerStatement(PhpParser.InnerStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#innerStatement}. + * @param ctx the parse tree + */ + void exitInnerStatement(PhpParser.InnerStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#statement}. + * @param ctx the parse tree + */ + void enterStatement(PhpParser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#statement}. + * @param ctx the parse tree + */ + void exitStatement(PhpParser.StatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#emptyStatement_}. + * @param ctx the parse tree + */ + void enterEmptyStatement_(PhpParser.EmptyStatement_Context ctx); + /** + * Exit a parse tree produced by {@link PhpParser#emptyStatement_}. + * @param ctx the parse tree + */ + void exitEmptyStatement_(PhpParser.EmptyStatement_Context ctx); + /** + * Enter a parse tree produced by {@link PhpParser#blockStatement}. + * @param ctx the parse tree + */ + void enterBlockStatement(PhpParser.BlockStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#blockStatement}. + * @param ctx the parse tree + */ + void exitBlockStatement(PhpParser.BlockStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#ifStatement}. + * @param ctx the parse tree + */ + void enterIfStatement(PhpParser.IfStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#ifStatement}. + * @param ctx the parse tree + */ + void exitIfStatement(PhpParser.IfStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#elseIfStatement}. + * @param ctx the parse tree + */ + void enterElseIfStatement(PhpParser.ElseIfStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#elseIfStatement}. + * @param ctx the parse tree + */ + void exitElseIfStatement(PhpParser.ElseIfStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#elseIfColonStatement}. + * @param ctx the parse tree + */ + void enterElseIfColonStatement(PhpParser.ElseIfColonStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#elseIfColonStatement}. + * @param ctx the parse tree + */ + void exitElseIfColonStatement(PhpParser.ElseIfColonStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#elseStatement}. + * @param ctx the parse tree + */ + void enterElseStatement(PhpParser.ElseStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#elseStatement}. + * @param ctx the parse tree + */ + void exitElseStatement(PhpParser.ElseStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#elseColonStatement}. + * @param ctx the parse tree + */ + void enterElseColonStatement(PhpParser.ElseColonStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#elseColonStatement}. + * @param ctx the parse tree + */ + void exitElseColonStatement(PhpParser.ElseColonStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#whileStatement}. + * @param ctx the parse tree + */ + void enterWhileStatement(PhpParser.WhileStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#whileStatement}. + * @param ctx the parse tree + */ + void exitWhileStatement(PhpParser.WhileStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#doWhileStatement}. + * @param ctx the parse tree + */ + void enterDoWhileStatement(PhpParser.DoWhileStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#doWhileStatement}. + * @param ctx the parse tree + */ + void exitDoWhileStatement(PhpParser.DoWhileStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#forStatement}. + * @param ctx the parse tree + */ + void enterForStatement(PhpParser.ForStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#forStatement}. + * @param ctx the parse tree + */ + void exitForStatement(PhpParser.ForStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#forInit}. + * @param ctx the parse tree + */ + void enterForInit(PhpParser.ForInitContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#forInit}. + * @param ctx the parse tree + */ + void exitForInit(PhpParser.ForInitContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#forUpdate}. + * @param ctx the parse tree + */ + void enterForUpdate(PhpParser.ForUpdateContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#forUpdate}. + * @param ctx the parse tree + */ + void exitForUpdate(PhpParser.ForUpdateContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#switchStatement}. + * @param ctx the parse tree + */ + void enterSwitchStatement(PhpParser.SwitchStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#switchStatement}. + * @param ctx the parse tree + */ + void exitSwitchStatement(PhpParser.SwitchStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#switchBlock}. + * @param ctx the parse tree + */ + void enterSwitchBlock(PhpParser.SwitchBlockContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#switchBlock}. + * @param ctx the parse tree + */ + void exitSwitchBlock(PhpParser.SwitchBlockContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#breakStatement}. + * @param ctx the parse tree + */ + void enterBreakStatement(PhpParser.BreakStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#breakStatement}. + * @param ctx the parse tree + */ + void exitBreakStatement(PhpParser.BreakStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#continueStatement}. + * @param ctx the parse tree + */ + void enterContinueStatement(PhpParser.ContinueStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#continueStatement}. + * @param ctx the parse tree + */ + void exitContinueStatement(PhpParser.ContinueStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#returnStatement}. + * @param ctx the parse tree + */ + void enterReturnStatement(PhpParser.ReturnStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#returnStatement}. + * @param ctx the parse tree + */ + void exitReturnStatement(PhpParser.ReturnStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#expressionStatement}. + * @param ctx the parse tree + */ + void enterExpressionStatement(PhpParser.ExpressionStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#expressionStatement}. + * @param ctx the parse tree + */ + void exitExpressionStatement(PhpParser.ExpressionStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#unsetStatement}. + * @param ctx the parse tree + */ + void enterUnsetStatement(PhpParser.UnsetStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#unsetStatement}. + * @param ctx the parse tree + */ + void exitUnsetStatement(PhpParser.UnsetStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#foreachStatement}. + * @param ctx the parse tree + */ + void enterForeachStatement(PhpParser.ForeachStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#foreachStatement}. + * @param ctx the parse tree + */ + void exitForeachStatement(PhpParser.ForeachStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#tryCatchFinally}. + * @param ctx the parse tree + */ + void enterTryCatchFinally(PhpParser.TryCatchFinallyContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#tryCatchFinally}. + * @param ctx the parse tree + */ + void exitTryCatchFinally(PhpParser.TryCatchFinallyContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#catchClause}. + * @param ctx the parse tree + */ + void enterCatchClause(PhpParser.CatchClauseContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#catchClause}. + * @param ctx the parse tree + */ + void exitCatchClause(PhpParser.CatchClauseContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#finallyStatement}. + * @param ctx the parse tree + */ + void enterFinallyStatement(PhpParser.FinallyStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#finallyStatement}. + * @param ctx the parse tree + */ + void exitFinallyStatement(PhpParser.FinallyStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#throwStatement}. + * @param ctx the parse tree + */ + void enterThrowStatement(PhpParser.ThrowStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#throwStatement}. + * @param ctx the parse tree + */ + void exitThrowStatement(PhpParser.ThrowStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#gotoStatement}. + * @param ctx the parse tree + */ + void enterGotoStatement(PhpParser.GotoStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#gotoStatement}. + * @param ctx the parse tree + */ + void exitGotoStatement(PhpParser.GotoStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#declareStatement}. + * @param ctx the parse tree + */ + void enterDeclareStatement(PhpParser.DeclareStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#declareStatement}. + * @param ctx the parse tree + */ + void exitDeclareStatement(PhpParser.DeclareStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#inlineHtmlStatement}. + * @param ctx the parse tree + */ + void enterInlineHtmlStatement(PhpParser.InlineHtmlStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#inlineHtmlStatement}. + * @param ctx the parse tree + */ + void exitInlineHtmlStatement(PhpParser.InlineHtmlStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#declareList}. + * @param ctx the parse tree + */ + void enterDeclareList(PhpParser.DeclareListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#declareList}. + * @param ctx the parse tree + */ + void exitDeclareList(PhpParser.DeclareListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#directive}. + * @param ctx the parse tree + */ + void enterDirective(PhpParser.DirectiveContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#directive}. + * @param ctx the parse tree + */ + void exitDirective(PhpParser.DirectiveContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#formalParameterList}. + * @param ctx the parse tree + */ + void enterFormalParameterList(PhpParser.FormalParameterListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#formalParameterList}. + * @param ctx the parse tree + */ + void exitFormalParameterList(PhpParser.FormalParameterListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#formalParameter}. + * @param ctx the parse tree + */ + void enterFormalParameter(PhpParser.FormalParameterContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#formalParameter}. + * @param ctx the parse tree + */ + void exitFormalParameter(PhpParser.FormalParameterContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeHint}. + * @param ctx the parse tree + */ + void enterTypeHint(PhpParser.TypeHintContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeHint}. + * @param ctx the parse tree + */ + void exitTypeHint(PhpParser.TypeHintContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#globalStatement}. + * @param ctx the parse tree + */ + void enterGlobalStatement(PhpParser.GlobalStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#globalStatement}. + * @param ctx the parse tree + */ + void exitGlobalStatement(PhpParser.GlobalStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#globalVar}. + * @param ctx the parse tree + */ + void enterGlobalVar(PhpParser.GlobalVarContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#globalVar}. + * @param ctx the parse tree + */ + void exitGlobalVar(PhpParser.GlobalVarContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#echoStatement}. + * @param ctx the parse tree + */ + void enterEchoStatement(PhpParser.EchoStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#echoStatement}. + * @param ctx the parse tree + */ + void exitEchoStatement(PhpParser.EchoStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#staticVariableStatement}. + * @param ctx the parse tree + */ + void enterStaticVariableStatement(PhpParser.StaticVariableStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#staticVariableStatement}. + * @param ctx the parse tree + */ + void exitStaticVariableStatement(PhpParser.StaticVariableStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#classStatement}. + * @param ctx the parse tree + */ + void enterClassStatement(PhpParser.ClassStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#classStatement}. + * @param ctx the parse tree + */ + void exitClassStatement(PhpParser.ClassStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#traitAdaptations}. + * @param ctx the parse tree + */ + void enterTraitAdaptations(PhpParser.TraitAdaptationsContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#traitAdaptations}. + * @param ctx the parse tree + */ + void exitTraitAdaptations(PhpParser.TraitAdaptationsContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#traitAdaptationStatement}. + * @param ctx the parse tree + */ + void enterTraitAdaptationStatement(PhpParser.TraitAdaptationStatementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#traitAdaptationStatement}. + * @param ctx the parse tree + */ + void exitTraitAdaptationStatement(PhpParser.TraitAdaptationStatementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#traitPrecedence}. + * @param ctx the parse tree + */ + void enterTraitPrecedence(PhpParser.TraitPrecedenceContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#traitPrecedence}. + * @param ctx the parse tree + */ + void exitTraitPrecedence(PhpParser.TraitPrecedenceContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#traitAlias}. + * @param ctx the parse tree + */ + void enterTraitAlias(PhpParser.TraitAliasContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#traitAlias}. + * @param ctx the parse tree + */ + void exitTraitAlias(PhpParser.TraitAliasContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#traitMethodReference}. + * @param ctx the parse tree + */ + void enterTraitMethodReference(PhpParser.TraitMethodReferenceContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#traitMethodReference}. + * @param ctx the parse tree + */ + void exitTraitMethodReference(PhpParser.TraitMethodReferenceContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#baseCtorCall}. + * @param ctx the parse tree + */ + void enterBaseCtorCall(PhpParser.BaseCtorCallContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#baseCtorCall}. + * @param ctx the parse tree + */ + void exitBaseCtorCall(PhpParser.BaseCtorCallContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#returnTypeDecl}. + * @param ctx the parse tree + */ + void enterReturnTypeDecl(PhpParser.ReturnTypeDeclContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#returnTypeDecl}. + * @param ctx the parse tree + */ + void exitReturnTypeDecl(PhpParser.ReturnTypeDeclContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#methodBody}. + * @param ctx the parse tree + */ + void enterMethodBody(PhpParser.MethodBodyContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#methodBody}. + * @param ctx the parse tree + */ + void exitMethodBody(PhpParser.MethodBodyContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#propertyModifiers}. + * @param ctx the parse tree + */ + void enterPropertyModifiers(PhpParser.PropertyModifiersContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#propertyModifiers}. + * @param ctx the parse tree + */ + void exitPropertyModifiers(PhpParser.PropertyModifiersContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#memberModifiers}. + * @param ctx the parse tree + */ + void enterMemberModifiers(PhpParser.MemberModifiersContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#memberModifiers}. + * @param ctx the parse tree + */ + void exitMemberModifiers(PhpParser.MemberModifiersContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#variableInitializer}. + * @param ctx the parse tree + */ + void enterVariableInitializer(PhpParser.VariableInitializerContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#variableInitializer}. + * @param ctx the parse tree + */ + void exitVariableInitializer(PhpParser.VariableInitializerContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#identifierInitializer}. + * @param ctx the parse tree + */ + void enterIdentifierInitializer(PhpParser.IdentifierInitializerContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#identifierInitializer}. + * @param ctx the parse tree + */ + void exitIdentifierInitializer(PhpParser.IdentifierInitializerContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#globalConstantDeclaration}. + * @param ctx the parse tree + */ + void enterGlobalConstantDeclaration(PhpParser.GlobalConstantDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#globalConstantDeclaration}. + * @param ctx the parse tree + */ + void exitGlobalConstantDeclaration(PhpParser.GlobalConstantDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#enumDeclaration}. + * @param ctx the parse tree + */ + void enterEnumDeclaration(PhpParser.EnumDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#enumDeclaration}. + * @param ctx the parse tree + */ + void exitEnumDeclaration(PhpParser.EnumDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#enumItem}. + * @param ctx the parse tree + */ + void enterEnumItem(PhpParser.EnumItemContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#enumItem}. + * @param ctx the parse tree + */ + void exitEnumItem(PhpParser.EnumItemContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#expressionList}. + * @param ctx the parse tree + */ + void enterExpressionList(PhpParser.ExpressionListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#expressionList}. + * @param ctx the parse tree + */ + void exitExpressionList(PhpParser.ExpressionListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#parentheses}. + * @param ctx the parse tree + */ + void enterParentheses(PhpParser.ParenthesesContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#parentheses}. + * @param ctx the parse tree + */ + void exitParentheses(PhpParser.ParenthesesContext ctx); + /** + * Enter a parse tree produced by the {@code ChainExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterChainExpression(PhpParser.ChainExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ChainExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitChainExpression(PhpParser.ChainExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code SpecialWordExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterSpecialWordExpression(PhpParser.SpecialWordExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code SpecialWordExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitSpecialWordExpression(PhpParser.SpecialWordExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ArrayCreationExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterArrayCreationExpression(PhpParser.ArrayCreationExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ArrayCreationExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitArrayCreationExpression(PhpParser.ArrayCreationExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BackQuoteStringExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterBackQuoteStringExpression(PhpParser.BackQuoteStringExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BackQuoteStringExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitBackQuoteStringExpression(PhpParser.BackQuoteStringExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code MatchExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterMatchExpression(PhpParser.MatchExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code MatchExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitMatchExpression(PhpParser.MatchExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code LogicalExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterLogicalExpression(PhpParser.LogicalExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code LogicalExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitLogicalExpression(PhpParser.LogicalExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PrintExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterPrintExpression(PhpParser.PrintExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PrintExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitPrintExpression(PhpParser.PrintExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code AssignmentExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterAssignmentExpression(PhpParser.AssignmentExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code AssignmentExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitAssignmentExpression(PhpParser.AssignmentExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PostfixIncDecExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterPostfixIncDecExpression(PhpParser.PostfixIncDecExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PostfixIncDecExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitPostfixIncDecExpression(PhpParser.PostfixIncDecExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code CloneExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterCloneExpression(PhpParser.CloneExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code CloneExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitCloneExpression(PhpParser.CloneExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code UnaryOperatorExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterUnaryOperatorExpression(PhpParser.UnaryOperatorExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code UnaryOperatorExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitUnaryOperatorExpression(PhpParser.UnaryOperatorExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code NewExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterNewExpression(PhpParser.NewExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code NewExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitNewExpression(PhpParser.NewExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ParenthesisExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterParenthesisExpression(PhpParser.ParenthesisExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ParenthesisExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitParenthesisExpression(PhpParser.ParenthesisExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code SpaceshipExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterSpaceshipExpression(PhpParser.SpaceshipExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code SpaceshipExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitSpaceshipExpression(PhpParser.SpaceshipExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ConditionalExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterConditionalExpression(PhpParser.ConditionalExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ConditionalExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitConditionalExpression(PhpParser.ConditionalExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code NullCoalescingExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterNullCoalescingExpression(PhpParser.NullCoalescingExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code NullCoalescingExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitNullCoalescingExpression(PhpParser.NullCoalescingExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ArithmeticExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterArithmeticExpression(PhpParser.ArithmeticExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ArithmeticExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitArithmeticExpression(PhpParser.ArithmeticExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code IndexerExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterIndexerExpression(PhpParser.IndexerExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code IndexerExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitIndexerExpression(PhpParser.IndexerExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ScalarExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterScalarExpression(PhpParser.ScalarExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ScalarExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitScalarExpression(PhpParser.ScalarExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PrefixIncDecExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterPrefixIncDecExpression(PhpParser.PrefixIncDecExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PrefixIncDecExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitPrefixIncDecExpression(PhpParser.PrefixIncDecExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ComparisonExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterComparisonExpression(PhpParser.ComparisonExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ComparisonExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitComparisonExpression(PhpParser.ComparisonExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code CastExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterCastExpression(PhpParser.CastExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code CastExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitCastExpression(PhpParser.CastExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code InstanceOfExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterInstanceOfExpression(PhpParser.InstanceOfExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code InstanceOfExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitInstanceOfExpression(PhpParser.InstanceOfExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ArrayDestructExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterArrayDestructExpression(PhpParser.ArrayDestructExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ArrayDestructExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitArrayDestructExpression(PhpParser.ArrayDestructExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code LambdaFunctionExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterLambdaFunctionExpression(PhpParser.LambdaFunctionExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code LambdaFunctionExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitLambdaFunctionExpression(PhpParser.LambdaFunctionExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BitwiseExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void enterBitwiseExpression(PhpParser.BitwiseExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BitwiseExpression} + * labeled alternative in {@link PhpParser#expression}. + * @param ctx the parse tree + */ + void exitBitwiseExpression(PhpParser.BitwiseExpressionContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#assignable}. + * @param ctx the parse tree + */ + void enterAssignable(PhpParser.AssignableContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#assignable}. + * @param ctx the parse tree + */ + void exitAssignable(PhpParser.AssignableContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#arrayCreation}. + * @param ctx the parse tree + */ + void enterArrayCreation(PhpParser.ArrayCreationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#arrayCreation}. + * @param ctx the parse tree + */ + void exitArrayCreation(PhpParser.ArrayCreationContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#arrayDestructuring}. + * @param ctx the parse tree + */ + void enterArrayDestructuring(PhpParser.ArrayDestructuringContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#arrayDestructuring}. + * @param ctx the parse tree + */ + void exitArrayDestructuring(PhpParser.ArrayDestructuringContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#indexedDestructItem}. + * @param ctx the parse tree + */ + void enterIndexedDestructItem(PhpParser.IndexedDestructItemContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#indexedDestructItem}. + * @param ctx the parse tree + */ + void exitIndexedDestructItem(PhpParser.IndexedDestructItemContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#keyedDestructItem}. + * @param ctx the parse tree + */ + void enterKeyedDestructItem(PhpParser.KeyedDestructItemContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#keyedDestructItem}. + * @param ctx the parse tree + */ + void exitKeyedDestructItem(PhpParser.KeyedDestructItemContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#lambdaFunctionExpr}. + * @param ctx the parse tree + */ + void enterLambdaFunctionExpr(PhpParser.LambdaFunctionExprContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#lambdaFunctionExpr}. + * @param ctx the parse tree + */ + void exitLambdaFunctionExpr(PhpParser.LambdaFunctionExprContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#matchExpr}. + * @param ctx the parse tree + */ + void enterMatchExpr(PhpParser.MatchExprContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#matchExpr}. + * @param ctx the parse tree + */ + void exitMatchExpr(PhpParser.MatchExprContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#matchItem}. + * @param ctx the parse tree + */ + void enterMatchItem(PhpParser.MatchItemContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#matchItem}. + * @param ctx the parse tree + */ + void exitMatchItem(PhpParser.MatchItemContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#newExpr}. + * @param ctx the parse tree + */ + void enterNewExpr(PhpParser.NewExprContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#newExpr}. + * @param ctx the parse tree + */ + void exitNewExpr(PhpParser.NewExprContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#assignmentOperator}. + * @param ctx the parse tree + */ + void enterAssignmentOperator(PhpParser.AssignmentOperatorContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#assignmentOperator}. + * @param ctx the parse tree + */ + void exitAssignmentOperator(PhpParser.AssignmentOperatorContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#yieldExpression}. + * @param ctx the parse tree + */ + void enterYieldExpression(PhpParser.YieldExpressionContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#yieldExpression}. + * @param ctx the parse tree + */ + void exitYieldExpression(PhpParser.YieldExpressionContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#arrayItemList}. + * @param ctx the parse tree + */ + void enterArrayItemList(PhpParser.ArrayItemListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#arrayItemList}. + * @param ctx the parse tree + */ + void exitArrayItemList(PhpParser.ArrayItemListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#arrayItem}. + * @param ctx the parse tree + */ + void enterArrayItem(PhpParser.ArrayItemContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#arrayItem}. + * @param ctx the parse tree + */ + void exitArrayItem(PhpParser.ArrayItemContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#lambdaFunctionUseVars}. + * @param ctx the parse tree + */ + void enterLambdaFunctionUseVars(PhpParser.LambdaFunctionUseVarsContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#lambdaFunctionUseVars}. + * @param ctx the parse tree + */ + void exitLambdaFunctionUseVars(PhpParser.LambdaFunctionUseVarsContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#lambdaFunctionUseVar}. + * @param ctx the parse tree + */ + void enterLambdaFunctionUseVar(PhpParser.LambdaFunctionUseVarContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#lambdaFunctionUseVar}. + * @param ctx the parse tree + */ + void exitLambdaFunctionUseVar(PhpParser.LambdaFunctionUseVarContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#qualifiedStaticTypeRef}. + * @param ctx the parse tree + */ + void enterQualifiedStaticTypeRef(PhpParser.QualifiedStaticTypeRefContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#qualifiedStaticTypeRef}. + * @param ctx the parse tree + */ + void exitQualifiedStaticTypeRef(PhpParser.QualifiedStaticTypeRefContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#typeRef}. + * @param ctx the parse tree + */ + void enterTypeRef(PhpParser.TypeRefContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#typeRef}. + * @param ctx the parse tree + */ + void exitTypeRef(PhpParser.TypeRefContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#anonymousClass}. + * @param ctx the parse tree + */ + void enterAnonymousClass(PhpParser.AnonymousClassContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#anonymousClass}. + * @param ctx the parse tree + */ + void exitAnonymousClass(PhpParser.AnonymousClassContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#indirectTypeRef}. + * @param ctx the parse tree + */ + void enterIndirectTypeRef(PhpParser.IndirectTypeRefContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#indirectTypeRef}. + * @param ctx the parse tree + */ + void exitIndirectTypeRef(PhpParser.IndirectTypeRefContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#qualifiedNamespaceName}. + * @param ctx the parse tree + */ + void enterQualifiedNamespaceName(PhpParser.QualifiedNamespaceNameContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#qualifiedNamespaceName}. + * @param ctx the parse tree + */ + void exitQualifiedNamespaceName(PhpParser.QualifiedNamespaceNameContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#namespaceNameList}. + * @param ctx the parse tree + */ + void enterNamespaceNameList(PhpParser.NamespaceNameListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#namespaceNameList}. + * @param ctx the parse tree + */ + void exitNamespaceNameList(PhpParser.NamespaceNameListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#namespaceNameTail}. + * @param ctx the parse tree + */ + void enterNamespaceNameTail(PhpParser.NamespaceNameTailContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#namespaceNameTail}. + * @param ctx the parse tree + */ + void exitNamespaceNameTail(PhpParser.NamespaceNameTailContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#qualifiedNamespaceNameList}. + * @param ctx the parse tree + */ + void enterQualifiedNamespaceNameList(PhpParser.QualifiedNamespaceNameListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#qualifiedNamespaceNameList}. + * @param ctx the parse tree + */ + void exitQualifiedNamespaceNameList(PhpParser.QualifiedNamespaceNameListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#arguments}. + * @param ctx the parse tree + */ + void enterArguments(PhpParser.ArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#arguments}. + * @param ctx the parse tree + */ + void exitArguments(PhpParser.ArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#actualArgument}. + * @param ctx the parse tree + */ + void enterActualArgument(PhpParser.ActualArgumentContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#actualArgument}. + * @param ctx the parse tree + */ + void exitActualArgument(PhpParser.ActualArgumentContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#argumentName}. + * @param ctx the parse tree + */ + void enterArgumentName(PhpParser.ArgumentNameContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#argumentName}. + * @param ctx the parse tree + */ + void exitArgumentName(PhpParser.ArgumentNameContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#constantInitializer}. + * @param ctx the parse tree + */ + void enterConstantInitializer(PhpParser.ConstantInitializerContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#constantInitializer}. + * @param ctx the parse tree + */ + void exitConstantInitializer(PhpParser.ConstantInitializerContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#constant}. + * @param ctx the parse tree + */ + void enterConstant(PhpParser.ConstantContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#constant}. + * @param ctx the parse tree + */ + void exitConstant(PhpParser.ConstantContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#literalConstant}. + * @param ctx the parse tree + */ + void enterLiteralConstant(PhpParser.LiteralConstantContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#literalConstant}. + * @param ctx the parse tree + */ + void exitLiteralConstant(PhpParser.LiteralConstantContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#numericConstant}. + * @param ctx the parse tree + */ + void enterNumericConstant(PhpParser.NumericConstantContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#numericConstant}. + * @param ctx the parse tree + */ + void exitNumericConstant(PhpParser.NumericConstantContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#classConstant}. + * @param ctx the parse tree + */ + void enterClassConstant(PhpParser.ClassConstantContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#classConstant}. + * @param ctx the parse tree + */ + void exitClassConstant(PhpParser.ClassConstantContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#stringConstant}. + * @param ctx the parse tree + */ + void enterStringConstant(PhpParser.StringConstantContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#stringConstant}. + * @param ctx the parse tree + */ + void exitStringConstant(PhpParser.StringConstantContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#string}. + * @param ctx the parse tree + */ + void enterString(PhpParser.StringContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#string}. + * @param ctx the parse tree + */ + void exitString(PhpParser.StringContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#interpolatedStringPart}. + * @param ctx the parse tree + */ + void enterInterpolatedStringPart(PhpParser.InterpolatedStringPartContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#interpolatedStringPart}. + * @param ctx the parse tree + */ + void exitInterpolatedStringPart(PhpParser.InterpolatedStringPartContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#chainList}. + * @param ctx the parse tree + */ + void enterChainList(PhpParser.ChainListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#chainList}. + * @param ctx the parse tree + */ + void exitChainList(PhpParser.ChainListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#chain}. + * @param ctx the parse tree + */ + void enterChain(PhpParser.ChainContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#chain}. + * @param ctx the parse tree + */ + void exitChain(PhpParser.ChainContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#chainOrigin}. + * @param ctx the parse tree + */ + void enterChainOrigin(PhpParser.ChainOriginContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#chainOrigin}. + * @param ctx the parse tree + */ + void exitChainOrigin(PhpParser.ChainOriginContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#memberAccess}. + * @param ctx the parse tree + */ + void enterMemberAccess(PhpParser.MemberAccessContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#memberAccess}. + * @param ctx the parse tree + */ + void exitMemberAccess(PhpParser.MemberAccessContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#functionCall}. + * @param ctx the parse tree + */ + void enterFunctionCall(PhpParser.FunctionCallContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#functionCall}. + * @param ctx the parse tree + */ + void exitFunctionCall(PhpParser.FunctionCallContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#functionCallName}. + * @param ctx the parse tree + */ + void enterFunctionCallName(PhpParser.FunctionCallNameContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#functionCallName}. + * @param ctx the parse tree + */ + void exitFunctionCallName(PhpParser.FunctionCallNameContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#actualArguments}. + * @param ctx the parse tree + */ + void enterActualArguments(PhpParser.ActualArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#actualArguments}. + * @param ctx the parse tree + */ + void exitActualArguments(PhpParser.ActualArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#chainBase}. + * @param ctx the parse tree + */ + void enterChainBase(PhpParser.ChainBaseContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#chainBase}. + * @param ctx the parse tree + */ + void exitChainBase(PhpParser.ChainBaseContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#keyedFieldName}. + * @param ctx the parse tree + */ + void enterKeyedFieldName(PhpParser.KeyedFieldNameContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#keyedFieldName}. + * @param ctx the parse tree + */ + void exitKeyedFieldName(PhpParser.KeyedFieldNameContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#keyedSimpleFieldName}. + * @param ctx the parse tree + */ + void enterKeyedSimpleFieldName(PhpParser.KeyedSimpleFieldNameContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#keyedSimpleFieldName}. + * @param ctx the parse tree + */ + void exitKeyedSimpleFieldName(PhpParser.KeyedSimpleFieldNameContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#keyedVariable}. + * @param ctx the parse tree + */ + void enterKeyedVariable(PhpParser.KeyedVariableContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#keyedVariable}. + * @param ctx the parse tree + */ + void exitKeyedVariable(PhpParser.KeyedVariableContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#squareCurlyExpression}. + * @param ctx the parse tree + */ + void enterSquareCurlyExpression(PhpParser.SquareCurlyExpressionContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#squareCurlyExpression}. + * @param ctx the parse tree + */ + void exitSquareCurlyExpression(PhpParser.SquareCurlyExpressionContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#assignmentList}. + * @param ctx the parse tree + */ + void enterAssignmentList(PhpParser.AssignmentListContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#assignmentList}. + * @param ctx the parse tree + */ + void exitAssignmentList(PhpParser.AssignmentListContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#assignmentListElement}. + * @param ctx the parse tree + */ + void enterAssignmentListElement(PhpParser.AssignmentListElementContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#assignmentListElement}. + * @param ctx the parse tree + */ + void exitAssignmentListElement(PhpParser.AssignmentListElementContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#modifier}. + * @param ctx the parse tree + */ + void enterModifier(PhpParser.ModifierContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#modifier}. + * @param ctx the parse tree + */ + void exitModifier(PhpParser.ModifierContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#identifier}. + * @param ctx the parse tree + */ + void enterIdentifier(PhpParser.IdentifierContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#identifier}. + * @param ctx the parse tree + */ + void exitIdentifier(PhpParser.IdentifierContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#memberModifier}. + * @param ctx the parse tree + */ + void enterMemberModifier(PhpParser.MemberModifierContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#memberModifier}. + * @param ctx the parse tree + */ + void exitMemberModifier(PhpParser.MemberModifierContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#magicConstant}. + * @param ctx the parse tree + */ + void enterMagicConstant(PhpParser.MagicConstantContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#magicConstant}. + * @param ctx the parse tree + */ + void exitMagicConstant(PhpParser.MagicConstantContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#magicMethod}. + * @param ctx the parse tree + */ + void enterMagicMethod(PhpParser.MagicMethodContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#magicMethod}. + * @param ctx the parse tree + */ + void exitMagicMethod(PhpParser.MagicMethodContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#primitiveType}. + * @param ctx the parse tree + */ + void enterPrimitiveType(PhpParser.PrimitiveTypeContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#primitiveType}. + * @param ctx the parse tree + */ + void exitPrimitiveType(PhpParser.PrimitiveTypeContext ctx); + /** + * Enter a parse tree produced by {@link PhpParser#castOperation}. + * @param ctx the parse tree + */ + void enterCastOperation(PhpParser.CastOperationContext ctx); + /** + * Exit a parse tree produced by {@link PhpParser#castOperation}. + * @param ctx the parse tree + */ + void exitCastOperation(PhpParser.CastOperationContext ctx); +} \ No newline at end of file diff --git a/app/src/main/java/githubsqlfinder/App.java b/app/src/main/java/githubsqlfinder/App.java index eb4d965..6203585 100644 --- a/app/src/main/java/githubsqlfinder/App.java +++ b/app/src/main/java/githubsqlfinder/App.java @@ -1,20 +1,14 @@ -/* - * This Java source file was generated by the Gradle 'init' task. - */ package githubsqlfinder; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; -import java.util.Scanner; -import java.util.UUID; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Map; +import java.util.HashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.antlr.v4.runtime.*; import org.antlr.v4.runtime.tree.*; @@ -23,48 +17,136 @@ import com.google.cloud.bigquery.FieldValueList; import com.google.cloud.bigquery.TableResult; import antlr.*; +import antlr.PhpParser.ArithmeticExpressionContext; +import antlr.PhpParser.ChainExpressionContext; +import antlr.PhpParser.StringContext; public class App { + static List<String> stringStatements = new ArrayList<>(); + static Map<String, List<String>> stringStatementsWithParts = new HashMap<>(); + static int paramIndex = 0; + static String query = ""; + static long githubTimeMs = 0; + static long antlrTimeMs = 0; + static long parsingTreeTimeMs = 0; + static int numberOfAddedQueries = 0; + static int numberOfAddedQueriesMySql = 0; + static int numberOfAddedQueriesPlSql = 0; + static int numberOfAddedQueriesPostgreSQL = 0; + static int numberOfAddedQueriesTSql = 0; + static long timeMs = 0; + public static void main(String[] args) throws Exception { - JDBC db = new JDBC(); - Scanner scanner = new Scanner(System.in); - - System.out.println("Do you want to use: "); - System.out.println("1. Example files"); - System.out.println("2. Github files"); - System.out.println("3. See database"); - System.out.println("Please enter option number: "); - - int mode = 0; - while (mode != 1 && mode != 2 && mode != 3) { - mode = scanner.nextInt(); - if (mode != 1 && mode != 2 && mode != 3) { - System.out.println("Invalid input. Please enter a valid number: "); + long sTime = System.nanoTime(); + + int numberOfGithubFilesToSearch = 100; + int batchSize = 100; + int mode = 2; + int offset = 0; + int sample = 1; + + if (args.length > 0) { + //set number of files from github that should be searched + try { + numberOfGithubFilesToSearch = Integer.parseInt(args[0]); + } catch (NumberFormatException e) { + System.err.println("The first parameter (number of files to process) was incorrect"); + return; } + + } + + if (args.length > 1) { + //set the batch size to process + try { + batchSize = Integer.parseInt(args[1]); + } catch (NumberFormatException e) { + System.err.println("The second parameter (the size of the batch) was incorrect"); + return; + } + } + + if (args.length > 2) { + //set the batch size to process + try { + mode = Integer.parseInt(args[2]); + } catch (NumberFormatException e) { + System.err.println("The third parameter (mode) was incorrect"); + return; + } + } + + if (args.length > 3) { + //set the batch size to process + try { + offset = Integer.parseInt(args[3]); + } catch (NumberFormatException e) { + System.err.println("The third parameter (offset) was incorrect"); + return; + } } + if (args.length > 4) { + //set the batch size to process + try { + sample = Integer.parseInt(args[4]); + } catch (NumberFormatException e) { + System.err.println("The fourth parameter (sample data) was incorrect"); + return; + } + } + + // + System.out.println("Number of files to process: " + numberOfGithubFilesToSearch); + System.out.println("Batch size: " + batchSize); + System.out.println("Mode (1 - Example files, 2 - Github, 3 - Clear DB): " + mode); + System.out.println("Data (1 - Sample data, 2 - Real data): " + sample); + System.out.println("offset: " + offset); + + JDBC db = new JDBC(); boolean repeatCycle = true; String input = ""; if (mode == 1) { - for (int i = 0; i < 10; i++) { - String fileName = "example" + (i + 1) + ".txt"; - Path path = Paths.get(App.class.getClassLoader().getResource(fileName).toURI()); + //example files + int maxFile = 3; + + for (int i = 0; i < maxFile; i++) { + String filePath = "example" + (i + 1) + ".txt"; + Path path = Paths.get(App.class.getClassLoader().getResource(filePath).toURI()); input = Files.readString(path); - runAntlr(input, "example", fileName); + runPhpAntlr(input, "example", filePath); + + for (String query : stringStatements) { + if (isValidQuery(query)) { + runAntlr(query.replaceAll("\\\\", ""), "example", filePath); + } + } } } else if (mode == 2) { //github + int step = 0; + int index = 0; + int originalBatchSize = batchSize; + + System.out.println("Processed files / All files"); while (repeatCycle) { GithubFinder githubFinder = new GithubFinder(); - TableResult result = githubFinder.getFilesFromGithub(); + if ((step + 1) * batchSize >= numberOfGithubFilesToSearch) { + batchSize = numberOfGithubFilesToSearch - (step * batchSize); + } + long startTime = System.nanoTime(); + TableResult result = githubFinder.getFilesFromGithub(batchSize, step, originalBatchSize, offset, sample); + long endTime = System.nanoTime(); + + githubTimeMs += (endTime - startTime) / 1_000_000; for (FieldValueList row : result.iterateAll()) { @@ -72,78 +154,187 @@ public class App { String repoName = row.get("repo_name").getStringValue(); String filePath = row.get("path").getStringValue(); - runAntlr(input, repoName, filePath); - } + runPhpAntlr(input, repoName, filePath); - System.out.println("Do you want to parse another 10 github files: "); - System.out.println("1. Yes"); - System.out.println("2. No"); - System.out.println("Please enter option number: "); - mode = 0; - while (mode != 1 && mode != 2) { - mode = scanner.nextInt(); - if (mode != 1 && mode != 2) { - System.out.println("Invalid input. Please enter a valid number: "); + for (String query : stringStatements) { + if (isValidQuery(query)) { + runAntlr(query.replaceAll("\\\\", ""), repoName, filePath); + } } + index++; + System.out.println("" + index + "/" + numberOfGithubFilesToSearch); } - if (mode == 2) { + step++; + if ((step * originalBatchSize) >= numberOfGithubFilesToSearch) { repeatCycle = false; } + } + } else if (mode == 3) { + db.deleteDb(); + } + + db.showPage(0, true); + + long eTime = System.nanoTime(); + + timeMs += (eTime - sTime) / 1_000_000; + + if (mode == 2) { + System.out.println("Github requests time in ms: " + githubTimeMs + "(" + String.format("%.2f", ((double) githubTimeMs / timeMs) * 100) + "%)"); + System.out.println("ANTLR parsing time in ms: " + antlrTimeMs + "(" + String.format("%.2f", ((double) antlrTimeMs / timeMs) * 100) + "%)"); + System.out.println("Parsing tree string finding: " + parsingTreeTimeMs + "(" + String.format("%.2f", ((double) parsingTreeTimeMs / timeMs) * 100) + "%)"); + System.out.println("Whole time: " + timeMs); + System.out.println("Number of all found queries: " + numberOfAddedQueries + "(from " + numberOfGithubFilesToSearch + " files)"); + System.out.println("Number of TSql queries: " + numberOfAddedQueriesTSql); + System.out.println("Number of Postgre SQL queries: " + numberOfAddedQueriesPostgreSQL); + System.out.println("Number of PlSql queries: " + numberOfAddedQueriesPlSql); + System.out.println("Number of MySql queries: " + numberOfAddedQueriesMySql); + System.out.println("New offset to use for query: " + (numberOfGithubFilesToSearch + offset)); + } + } + + public static void runPhpAntlr(String input, String repoName, String filePath) { + ANTLRInputStream phpInputStream = new ANTLRInputStream(input); + + PhpLexer phpLexer = new PhpLexer(phpInputStream); + CommonTokenStream phpTokens = new CommonTokenStream(phpLexer); + PhpParser phpParser = new PhpParser(phpTokens); + + phpLexer.removeErrorListeners(); + phpParser.removeErrorListeners(); - db.showPage(0); - boolean exit = false; - int index = 0; - - while (!exit) { - System.out.println("Do you want to go to (in database): "); - System.out.println("1. Next page"); - System.out.println("2. Previous page"); - System.out.println("3. Exit"); - System.out.println("Please enter option number: "); - mode = 0; - while (mode != 1 && mode != 2 && mode != 3) { - mode = scanner.nextInt(); - if (mode != 1 && mode != 2 && mode != 3) { - System.out.println("Invalid input. Please enter a valid number: "); + stringStatements = new ArrayList<>(); + phpParser.addErrorListener(new DiagnosticErrorListener()); + + long startTime = System.nanoTime(); + ParseTree phpTree = phpParser.phpBlock(); + long endTime = System.nanoTime(); + + antlrTimeMs += (endTime - startTime) / 1_000_000; + + startTime = System.nanoTime(); + parseTree(phpTree, 0); + endTime = System.nanoTime(); + parsingTreeTimeMs += (endTime - startTime) / 1_000_000; + } + + private static void parseTree(ParseTree tree, int index) { + if (tree instanceof StringContext) { + ParseTree parent = tree.getParent(); + ArithmeticExpressionContext arithmeticExpressionContext = null; + + while (parent != null && parent.getText().contains(tree.getText())) { + if (parent instanceof ArithmeticExpressionContext) { + arithmeticExpressionContext = (ArithmeticExpressionContext) parent; } + parent = parent.getParent(); } - - if (mode == 3) { - exit = true; + + if (arithmeticExpressionContext != null ) { + query = ""; + paramIndex = 0; + getParametrizedQuery(arithmeticExpressionContext); + if (!query.equals("") && !stringStatements.contains(query)) { + stringStatements.add(query); + } + arithmeticExpressionContext = null; + } else { + String text = tree.getText(); + text = text.replaceAll("\\\\", ""); + if (((text.startsWith("\'") && text.endsWith("\'")) || (text.startsWith("\"") && text.endsWith("\""))) && text.length() > 1) { + text = text.substring(1, text.length() - 1); + } + text = replacePHPVariables(text); + stringStatements.add(text); } - if (mode == 1) { + + for (int i = 0; i < tree.getChildCount(); i++) { index++; - db.showPage(10 * index); + parseTree(tree.getChild(i), index); } - if (mode == 2 && index != 0) { - index--; - db.showPage(10 * index); - } else if (index == 0 && mode == 2) { - System.out.println("You are on the first page."); + } else { + for (int i = 0; i < tree.getChildCount(); i++) { + index++; + parseTree(tree.getChild(i), index); } } + } + + public static String replacePHPVariables(String sql) { + Pattern pattern = Pattern.compile("(\\$[^\\s]+\\s)|('\\$[^']+')|(\"\\$[^\"]+\")"); + Matcher matcher = pattern.matcher(sql); + StringBuffer result = new StringBuffer(); + int paramIndex = 0; + + while (matcher.find()) { + String replacement = ":p" + paramIndex++ + " "; + matcher.appendReplacement(result, replacement); + } + matcher.appendTail(result); + + return result.toString(); + } - scanner.close(); + public static void getParametrizedQuery(ParseTree tree) { + if (tree instanceof StringContext) { + String text = tree.getText(); + text = text.replaceAll("\\\\", ""); + if (((text.startsWith("\'") && text.endsWith("\'")) || (text.startsWith("\"") && text.endsWith("\""))) && text.length() > 1) { + text = text.substring(1, text.length() - 1); + query += text; + } else { + query += text; + } + } else if (tree instanceof ChainExpressionContext) { + query += ":p" + paramIndex; + paramIndex++; + } else { + for (int i = 0; i < tree.getChildCount(); i++) { + getParametrizedQuery(tree.getChild(i)); + } + } } + public static boolean isValidQuery(String query) { + if (query == null) { + return false; + } + + String trimmedQuery = query.trim(); + + String lowerCaseQuery = trimmedQuery.toLowerCase(); + + if (lowerCaseQuery.matches("^(\"select|\'select|select).*from.*")) { + return true; + } + + if (lowerCaseQuery.matches("^(\"create table|\'create table|create table).*")) { + return true; + } + + return false; + } public static void runAntlr(String input, String repoName, String filePath) { JDBC db = new JDBC(); - boolean added = false; + input = input.toUpperCase(); List<String> plSqlStatements = new ArrayList<>(); List<String> mySqlStatements = new ArrayList<>(); List<String> tSqlStatements = new ArrayList<>(); List<String> postgreSQLStatements = new ArrayList<>(); ANTLRInputStream plSqlInputStream = new ANTLRInputStream(input); + //PLSql PlSqlLexer plSqlLexer = new PlSqlLexer(plSqlInputStream); CommonTokenStream plSqlTokens = new CommonTokenStream(plSqlLexer); PlSqlParser plSqlParser = new PlSqlParser(plSqlTokens); + plSqlLexer.removeErrorListeners(); + plSqlParser.removeErrorListeners(); ParseTree plSqlTree = plSqlParser.sql_script(); PlSqlStatementListener plSqlStatementListener = new PlSqlStatementListener(plSqlStatements::add); @@ -155,6 +346,8 @@ public class App { MySqlLexer mySqlLexer = new MySqlLexer(MySqlInputStream); CommonTokenStream mySqlTokens = new CommonTokenStream(mySqlLexer); MySqlParser mySqlParser = new MySqlParser(mySqlTokens); + mySqlLexer.removeErrorListeners(); + mySqlParser.removeErrorListeners(); ParseTree mySqlTree = mySqlParser.root(); MySqlStatementListener mySqlStatementListener = new MySqlStatementListener(mySqlStatements::add); @@ -166,6 +359,8 @@ public class App { TSqlLexer tSqlLexer = new TSqlLexer(TSqlInputStream); CommonTokenStream tSqlTokens = new CommonTokenStream(tSqlLexer); TSqlParser tSqlParser = new TSqlParser(tSqlTokens); + tSqlLexer.removeErrorListeners(); + tSqlParser.removeErrorListeners(); ParseTree tSqlTree = tSqlParser.tsql_file(); TSqlStatementListener tSqlStatementListener = new TSqlStatementListener(tSqlStatements::add); @@ -177,6 +372,8 @@ public class App { PostgreSQLLexer postgreSQLLexer = new PostgreSQLLexer(PostgreSQLInputStream); CommonTokenStream postgreSQLTokens = new CommonTokenStream(postgreSQLLexer); PostgreSQLParser postgreSQLParser = new PostgreSQLParser(postgreSQLTokens); + postgreSQLLexer.removeErrorListeners(); + postgreSQLParser.removeErrorListeners(); ParseTree postgreSQLTree = postgreSQLParser.root(); PostgreSQLStatementListener postgreSQLStatementListener = new PostgreSQLStatementListener(postgreSQLStatements::add); @@ -185,46 +382,30 @@ public class App { if (postgreSQLParser.getNumberOfSyntaxErrors() == 0) { for (int i = 0; i < postgreSQLStatements.size(); i++) { db.addSqlInfo(postgreSQLStatements.get(i), repoName, filePath, "POSTGRE SQL"); - added = true; + numberOfAddedQueries++; + numberOfAddedQueriesPostgreSQL++; } } } else { for (int i = 0; i < tSqlStatements.size(); i++) { db.addSqlInfo(tSqlStatements.get(i), repoName, filePath, "TSQL"); - added = true; + numberOfAddedQueries++; + numberOfAddedQueriesTSql++; } } } else { for (int i = 0; i < mySqlStatements.size(); i++) { db.addSqlInfo(mySqlStatements.get(i), repoName, filePath, "MYSQL"); - added = true; + numberOfAddedQueries++; + numberOfAddedQueriesMySql++; } } } else { for (int i = 0; i < plSqlStatements.size(); i++) { - db.addSqlInfo(plSqlStatements.get(i), "", "", "PROB PLSQL"); - added = true; - } - } - - if (!added) { - ArrayList<List<String>> lists = new ArrayList<>(); - lists.add(plSqlStatements); - lists.add(mySqlStatements); - lists.add(tSqlStatements); - lists.add(postgreSQLStatements); - - Collections.sort(lists, Comparator.comparingInt(List::size)); - - for (int i = 0; i < lists.get(0).size(); i++) { - db.addSqlInfo(lists.get(0).get(i), repoName, filePath, "NOT KNOWN"); - added = true; + db.addSqlInfo(plSqlStatements.get(i), repoName, filePath, "PLSQL"); + numberOfAddedQueries++; + numberOfAddedQueriesPlSql++; } } - - System.out.println(plSqlStatements.toString()); - System.out.println(mySqlStatements.toString()); - System.out.println(tSqlStatements.toString()); - System.out.println(postgreSQLStatements.toString()); } } \ No newline at end of file diff --git a/app/src/main/java/githubsqlfinder/GithubFinder.java b/app/src/main/java/githubsqlfinder/GithubFinder.java index 5026024..15f54ba 100644 --- a/app/src/main/java/githubsqlfinder/GithubFinder.java +++ b/app/src/main/java/githubsqlfinder/GithubFinder.java @@ -14,38 +14,48 @@ import java.util.UUID; public class GithubFinder { - public TableResult getFilesFromGithub() { + public TableResult getFilesFromGithub(int batchSize, int step, int originalBatchSize, int offset, int sample) { BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); + + String sqlFilesQuery = "select sample_files.id, sample_files.path, sample_contents.content, sample_files.repo_name " + + "from bigquery-public-data.github_repos.sample_files as sample_files " + + "join bigquery-public-data.github_repos.sample_contents as sample_contents on sample_files.id = sample_contents.id " + + "where sample_files.path like '%.sql' limit 10;"; + String phpFilesQuery = "select path, repo_name, content " + + "from bigquery-public-data.github_repos.files as files " + + "join bigquery-public-data.github_repos.contents as contents on files.id = contents.id " + + "where files.path like '%.php' " + + "and (contents.content like '%select%from%' or contents.content like '%create table%') order by repo_name limit " + batchSize + " offset " + (offset + (step * originalBatchSize)) +";"; + + if (sample == 1) { + phpFilesQuery = "select path, repo_name, content " + + "from bigquery-public-data.github_repos.sample_files as sample_files " + + "join bigquery-public-data.github_repos.sample_contents as sample_contents on sample_files.id = sample_contents.id " + + "where sample_files.path like '%.php' " + + "and (sample_contents.content like '%select%from%' or sample_contents.content like '%create table%') order by repo_name limit " + batchSize + " offset " + (offset + (step * originalBatchSize)) +";"; + } + + System.out.println("BigQuery: " + phpFilesQuery); + QueryJobConfiguration queryConfig = - QueryJobConfiguration.newBuilder( - "select sample_files.id, sample_files.path, sample_contents.content, sample_files.repo_name " - + "from bigquery-public-data.github_repos.sample_files as sample_files " - + "join bigquery-public-data.github_repos.sample_contents as sample_contents on sample_files.id = sample_contents.id " - + "where sample_files.path like '%.sql' limit 10;") - .build(); + QueryJobConfiguration.newBuilder(phpFilesQuery).build(); - // Create a job ID so that we can safely retry. JobId jobId = JobId.of(UUID.randomUUID().toString()); Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build()); - // Wait for the query to complete. try { queryJob = queryJob.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } - // Check for errors if (queryJob == null) { throw new RuntimeException("Job no longer exists"); } else if (queryJob.getStatus().getError() != null) { - // You can also look at queryJob.getStatus().getExecutionErrors() for all - // errors, not just the latest one. throw new RuntimeException(queryJob.getStatus().getError().toString()); } - // Get the results. TableResult result; try { result = queryJob.getQueryResults(); @@ -56,17 +66,6 @@ public class GithubFinder { e.printStackTrace(); } - // Print all pages of the results. - return null; - - /*System.out.printf("%nid, extension, content (first 50 characters) %n"); - for (FieldValueList row : result.iterateAll()) { - // String type - String id = row.get("id").getStringValue(); - String content = row.get("content").getStringValue(); - String path1 = row.get("path").getStringValue(); - System.out.printf("%s, %s, %s %n", id, path1.substring(path1.length()-4, path1.length()), content.replaceAll("\\s+", " ").substring(0, 50)); - }*/ } } diff --git a/app/src/main/java/githubsqlfinder/JDBC.java b/app/src/main/java/githubsqlfinder/JDBC.java index f07facf..0011243 100644 --- a/app/src/main/java/githubsqlfinder/JDBC.java +++ b/app/src/main/java/githubsqlfinder/JDBC.java @@ -1,6 +1,9 @@ package githubsqlfinder; import java.sql.*; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; public class JDBC { @@ -11,8 +14,7 @@ public class JDBC { { this.connection = DriverManager.getConnection("jdbc:sqlite:sample.db"); Statement statement = connection.createStatement(); - statement.setQueryTimeout(30); // set timeout to 30 sec. - //statement.executeUpdate("drop table if exists sql_info"); + statement.setQueryTimeout(30); statement.executeUpdate("create table if not exists sql_info (id integer primary key, sql string, repo_name string, file_path string, db_dialect string)"); } catch(SQLException e) @@ -21,9 +23,23 @@ public class JDBC { } } + public void deleteDb() { + if (this.connection == null) { + this.connect(); + } + try { + Statement statement = this.connection.createStatement(); + statement.executeUpdate("drop table if exists sql_info"); + statement.executeUpdate("create table if not exists sql_info (id integer primary key, sql string, repo_name string, file_path string, db_dialect string)"); + } catch (SQLException e) { + e.printStackTrace(System.err); + System.out.printf("%d ||| %s", e.getErrorCode(), e.getMessage()); + } + } + public void addSqlInfo(String sql, String repoName, String filePath, String dbDialect) { - if (sql == "<EOF>" || sql == ";") { + if (sql.equals("<EOF>") || sql.equals(";") || sql.equals("<EOF>;")) { return; } @@ -47,7 +63,7 @@ public class JDBC { } } - public void showPage(int offset) { + public void showPage(int offset, boolean all) { if (this.connection == null) { this.connect(); @@ -55,7 +71,15 @@ public class JDBC { try { Statement statement = this.connection.createStatement(); - ResultSet rs = statement.executeQuery("select * from sql_info limit 10 offset " + offset); + + String sql; + if (all) { + sql = "select * from sql_info"; + } else { + sql = "select * from sql_info limit 100 offset " + offset; + } + + ResultSet rs = statement.executeQuery(sql); System.out.println("Id | Repozitory | File | DB dialect | SQL query"); while(rs.next()) { @@ -66,4 +90,25 @@ public class JDBC { System.out.printf("%d ||| %s", e.getErrorCode(), e.getMessage()); } } + + public static void writeCsvFile(String fileName, List<String[]> data) { + try (FileWriter writer = new FileWriter(fileName)) { + for (String[] row : data) { + writeRow(writer, row); + } + System.out.println("CSV file created: " + fileName); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void writeRow(FileWriter writer, String[] row) throws IOException { + for (int i = 0; i < row.length; i++) { + writer.append(row[i]); + if (i < row.length - 1) { + writer.append(","); + } + } + writer.append("\n"); + } } \ No newline at end of file diff --git a/app/src/main/java/githubsqlfinder/notes.md b/app/src/main/java/githubsqlfinder/notes.md deleted file mode 100644 index 636e255..0000000 --- a/app/src/main/java/githubsqlfinder/notes.md +++ /dev/null @@ -1,8 +0,0 @@ -1. ANTLR -- gramatiky pre 4 najväÄÅ¡ie typy SQL databáz https://www.statista.com/statistics/809750/worldwide-popularity-ranking-database-management-systems/ (oracle (pl/sql), mysql, microsoft sql server (tsql), postgresql): skúsiÅ¥ skombinovaÅ¥, ak nie, tak skúšaÅ¥ po jednom dokým sa nenájde -- pozrieÅ¥ handlovanie chýb, ak nenájde sql query -- ako orezaÅ¥ súbor, aby sa prehľadávalo Äo najmenÅ¡ie množstvo dát (zaÄiatoÄné sql slová - nie je ich veľa) -- syntax pre rôzne jazyky - spájanie sql prÃkazov (:p1, @p1, {p1}...) -- pozretie jednotlivých slovnÃkov na https://github.com/antlr/grammars-v4/blob/master/sql/tsql/TSqlLexer.g4 - -2. Ukladanie do DB diff --git a/app/src/main/resources/example1.txt b/app/src/main/resources/example1.txt index 359213a..d390f4b 100644 --- a/app/src/main/resources/example1.txt +++ b/app/src/main/resources/example1.txt @@ -1,11 +1,52 @@ -WITH - my_av ANALYTIC VIEW AS ( - USING sales_av HIERARCHIES (time_hier) - ADD MEASURES ( - lag_sales AS (LAG(sales) OVER (HIERARCHY time_hier OFFSET 1)) - ) - ) -SELECT time_hier.member_name time, sales, lag_sales -FROM my_av HIERARCHIES (time_hier) -WHERE time_hier.level_name = 'YEAR' -ORDER BY time_hier.hier_order; \ No newline at end of file +<?php + +class DatabaseOracle { + var $mInsertId = null; + var $mLastResult = null; + var $lastResult = null; + var $cursor = 0; + var $mAffectedRows; + + var $ignore_DUP_VAL_ON_INDEX = false; + var $sequenceData = null; + + var $defaultCharset = 'AL32UTF8'; + + var $mFieldInfoCache = array(); + + protected function doQuery( $sql ) { + wfDebug( "SQL: [$sql]\n" ); + if ( !mb_check_encoding( $sql ) ) { + throw new MWException( "SQL encoding is invalid\n$sql" ); + } + + // handle some oracle specifics + // remove AS column/table/subquery namings + if( !$this->getFlag( DBO_DDLMODE ) ) { + $sql = preg_replace( '/ as /i', ' ', $sql ); + } + + // Oracle has issues with UNION clause if the statement includes LOB fields + // So we do a UNION ALL and then filter the results array with array_unique + $union_unique = ( preg_match( '/\/\* UNION_UNIQUE \*\/ /', $sql ) != 0 ); + // EXPLAIN syntax in Oracle is EXPLAIN PLAN FOR and it return nothing + // you have to select data from plan table after explain + $explain_id = date( 'dmYHis' ); + + $sql = preg_replace( '/^EXPLAIN /', 'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR', $sql, 1, $explain_count ); + + if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) { + $e = oci_error( $this->mConn ); + $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ ); + return false; + } + + if ( $explain_count > 0 ) { + return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table WHERE statement_id = \'' . $explain_id . '\'' ); + } else { + $this->mAffectedRows = oci_num_rows( $stmt ); + return true; + } + } + +} // end DatabaseOracle class \ No newline at end of file diff --git a/app/src/main/resources/example10.txt b/app/src/main/resources/example10.txt index 36c4766..2169f7a 100644 --- a/app/src/main/resources/example10.txt +++ b/app/src/main/resources/example10.txt @@ -1,12 +1,198 @@ -CREATE TABLE tpcds.customer_demographics ( - cd_demo_sk integer NOT NULL, - cd_gender character(1), - cd_marital_status character(1), - cd_education_status character varying(20), - cd_purchase_estimate integer, - cd_credit_rating character varying(10), - cd_dep_count integer, - cd_dep_employed_count integer, - cd_dep_college_count integer -) -:DISTRIBUTED_BY; \ No newline at end of file +""" +PostgreSQL users and databases +============================== + +This module provides tools for creating PostgreSQL users and databases. + +""" +from __future__ import with_statement + +import re + +from fabric.api import cd, env, hide, require, run, settings, sudo + + +def setup_postgis(): + require('hosts') + try: + install_postgres() + except: pass + + install_postgis() + configure_postgis() + +def install_postgres(): + require('hosts') + #add repository to be able to install latest version + sudo('touch /etc/apt/sources.list.d/pgdg.list') + sudo('echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" > /etc/apt/sources.list.d/pgdg.list') + sudo('wget https://www.postgresql.org/media/keys/ACCC4CF8.asc') + sudo('apt-key add ACCC4CF8.asc; aptitude update') + sudo('rm ACCC4CF8.asc') + #sudo('aptitude install -y postgresql postgresql-server-dev-9.1') + sudo('aptitude install -y postgresql postgresql-client postgresql-contrib ') + +def install_postgis(): + require('hosts') + #require('basedir') + + #VERSION = '1.5.7' + #REP = 'http://download.osgeo.org/postgis/source' + #pkg = 'postgis-%s' % VERSION + #tar = '%s.tar.gz' % pkg + + _install_postgis_deps() + + #with cd('%(basedir)s/packages' % env): + # if not exists(tar): + # _sudo('wget %s/%s' % (REP, tar)) + # if not exists(pkg): + # _sudo('tar xzf %s' % tar) + # with cd(pkg): + # sudo('ldconfig') + # _sudo('./configure && make') + # sudo('make install') + sudo('aptitude install -y postgis') + +def configure_postgis(password=None): + v = postgres_version() + if v: + #gis_v = postgis_version(v) + #contrib = '/usr/share/postgresql/%s/contrib/postgis-%s' % (v[:3], gis_v) + for cmd in ( + '''psql -c "CREATE ROLE gisgroup;"''', + '''psql -c "CREATE EXTENSION postgis;"''', + '''psql -c "CREATE EXTENSION postgis_topology;"''', + #'''createdb -E UTF8 template_postgis''', + #'''psql -d template_postgis < %s/postgis.sql''' % contrib, + #'''psql -d template_postgis < %s/spatial_ref_sys.sql''' % contrib, + #'''psql -c "ALTER TABLE geometry_columns OWNER TO gisgroup;" template_postgis''', + #'''psql -c "ALTER TABLE spatial_ref_sys OWNER TO gisgroup;" template_postgis''', + ): + try: + _run(cmd, password) + except: pass + +def create_user(name, password, groups=None, encrypted=True): + """ + Create a PostgreSQL user. + + Example:: + + # Create DB user if it does not exist + if not user_exists('dbuser'): + create_user('dbuser', password='somerandomstring') + + """ + if encrypted: + with_password = 'WITH ENCRYPTED PASSWORD' + else: + with_password = 'WITH PASSWORD' + + if groups: + groups = ' IN GROUP %s' % ', '.join(groups) + else: + groups = '' + + _run('''psql -c "CREATE USER %(name)s %(with_password)s '%(password)s'%(groups)s;"''' % locals()) + + +def create_database(name, owner, template='template_postgis', encoding='UTF8', locale='en_US.UTF-8'): + """ + Create a PostgreSQL database. + + Example:: + + # Create DB if it does not exist + if not database_exists('myapp'): + create_database('myapp', owner='dbuser') + + """ + #_run('''createdb --owner %(owner)s --template %(template)s --encoding=%(encoding)s --lc-ctype=%(locale)s --lc-collate=%(locale)s %(name)s''' % locals()) + #_run('''createdb --owner %(owner)s --encoding=%(encoding)s --lc-ctype=%(locale)s --lc-collate=%(locale)s %(name)s''' % locals()) + _run('''createdb --owner %(owner)s %(name)s''' % locals()) + _run('''psql -d %(name)s -c "CREATE EXTENSION postgis;"''' % locals()) + _run('''psql -d %(name)s -c "CREATE EXTENSION postgis_topology;"''' % locals()) + +def user_exists(name): + """ + Check if a PostgreSQL user exists. + """ + with settings(hide('running', 'stdout', 'stderr', 'warnings'), warn_only=True): + res = _run('''psql -t -A -c "SELECT COUNT(*) FROM pg_user WHERE usename = '%(name)s';"''' % locals()) + return (res == "1") + + +def change_password(name, password, encrypted=True): + if encrypted: + with_password = 'WITH ENCRYPTED PASSWORD' + else: + with_password = 'WITH PASSWORD' + cmd = '''psql -c "ALTER USER %(name)s %(with_password)s '%(password)s';"''' % locals() + _run(cmd) + + +def database_exists(name): + """ + Check if a PostgreSQL database exists. + """ + with settings(hide('running', 'stdout', 'stderr', 'warnings'), warn_only=True): + return _run('''psql -d %(name)s -c ""''' % locals()).succeeded + +def database_backup(name): + pass + +def database_restore(): + pass + +def unconfigure_postgis(password=None): + v = postgres_version() + if v: + gis_v = postgis_version(v) + contrib = '/usr/share/postgresql/%s/contrib/postgis-%s' % (v[:3], gis_v) + _run('''psql -d template_postgis < %s/uninstall_postgis.sql''' % contrib, password) + +def postgis_version(ver=None): + if not ver: + ver = postgres_version() + else: + ver = str(ver) + contrib = '/usr/share/postgresql/%s/contrib' % ver[:3] + out = qrun('find %s -iname "postgis-*"' % contrib) + return out.replace('%s/postgis-' % contrib, '') + +def postgres_version(): + require('hosts') + out = qrun('psql --version') + s = out.split('\n')[0] + m = re.match('.+(\d+)\.(\d+)\.(\d+).*', s) + if m: + #return '%s.%s.%s' % (m.group(1), m.group(2), m.group(3)) + return '%s.%s' % (m.group(1), m.group(2)) + return '' + +def warn_only(): + return settings(hide('running', 'stdout', 'stderr', 'warnings'), + warn_only=True) + +def qrun(cmd): + with warn_only(): + return run(cmd) + +def _install_postgis_deps(): + sudo('aptitude install -y libproj-dev libpq-dev') + +def _run(command, password=None): + """ + Run command as 'postgres' user + """ + with cd('/var/lib/postgresql'): + if password: + password = 'PGPASSWORD=%s; ' % password + else: + password = '' + return sudo('%ssudo -u postgres %s' % (password, command)) + +def _sudo(cmd): + require('webapp_user') + return sudo(cmd, user='%(webapp_user)s' % env) \ No newline at end of file diff --git a/app/src/main/resources/example2.txt b/app/src/main/resources/example2.txt index ba5f9af..72e0cff 100644 --- a/app/src/main/resources/example2.txt +++ b/app/src/main/resources/example2.txt @@ -1,15 +1,52 @@ -autocommit off; +<?php -create table a ( c char(1)); +class DatabaseOracle { + var $mInsertId = null; + var $mLastResult = null; + var $lastResult = null; + var $cursor = 0; + var $mAffectedRows; -insert into a values('e'); -select set{'a',c} from a; -select set{c,cast('a' as varchar)} from a; -select set{c,cast('e' as varchar)} from a; -select set{c,cast('w' as varchar)} from a; + var $ignore_DUP_VAL_ON_INDEX = false; + var $sequenceData = null; -create table b ( c varchar(1),v char(1)); -insert into b values('e','e'); -select v,c,set{v,c} from b; + var $defaultCharset = 'AL32UTF8'; -rollback; \ No newline at end of file + var $mFieldInfoCache = array(); + + protected function doQuery( $sql ) { + wfDebug( "SQL: [$sql]\n" ); + if ( !mb_check_encoding( $sql ) ) { + throw new MWException( "SQL encoding is invalid\n$sql" ); + } + + // handle some oracle specifics + // remove AS column/table/subquery namings + if( !$this->getFlag( DBO_DDLMODE ) ) { + $sql = preg_replace( '/ as /i', ' ', $sql ); + } + + // Oracle has issues with UNION clause if the statement includes LOB fields + // So we do a UNION ALL and then filter the results array with array_unique + $union_unique = ( preg_match( '/\/\* UNION_UNIQUE \*\/ /', $sql ) != 0 ); + // EXPLAIN syntax in Oracle is EXPLAIN PLAN FOR and it return nothing + // you have to select data from plan table after explain + $explain_id = date( 'dmYHis' ); + + $sql = preg_replace( '/^EXPLAIN /', 'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR', $sql, 1, $explain_count ); + + if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) { + $e = oci_error( $this->mConn ); + $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ ); + return false; + } + + if ( $explain_count > 0 ) { + return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table WHERE statement_id = \'' . $explain_id . '\' AND statement_id_2 = ' . $explain_id_2 ); + } else { + $this->mAffectedRows = oci_num_rows( $stmt ); + return true; + } + } + +} // end DatabaseOracle class \ No newline at end of file diff --git a/app/src/main/resources/example3.txt b/app/src/main/resources/example3.txt index 21b929a..36a2a35 100644 --- a/app/src/main/resources/example3.txt +++ b/app/src/main/resources/example3.txt @@ -1,4 +1,59 @@ --- trace.test --- --- execsql {SELECT 't6int', [t6int], t6int, ?1, "?1", t6int FROM t6} -SELECT 't6int', [t6int], t6int, ?1, "?1", t6int FROM t6 \ No newline at end of file +<?php include "../include/config.php"; ?> +<?php include "../include/header.php"; ?> +<?php + + if (empty($_GET['StudentID'])) + { + $result = oci_parse($con, "SELECT * FROM Students ORDER BY Name ASC"); + oci_execute($result); + while($row = oci_fetch_array($result)) + { + $StudentID .= "<option value='" . $row['STUDENTID'] . "'>" . $row['NAME'] . "</option>\n"; + } + +?> +<p>Hello Student. Please select your name from the list below:<p> +<form action="index.php" method"get"> + <table cellpadding="0" cellspacing="0"> + <tr> + <td><b>Name: </b></td> + <td><select name="StudentID"><?php echo $StudentID; ?></select></td> + </tr> + </table> + <br /> + <input type="submit" value="Continue" /> +</form> +<div class="home"> + <a href="<?php echo $RootDirectory; ?>index.php">Click here to return home</a> +</div> +<?php + + } + else + { + $result = oci_parse($con, "SELECT * FROM Students WHERE StudentID='" . $_GET['StudentID'] . "'"); + oci_execute($result); + $student = oci_fetch_array($result); + +?> +<p>Hello <?php echo $student['NAME']; ?> (Student). You can view any of the following reports:<p> +<div class="list"> + <div class="item"> + <a href="evaluations/report.php?StudentID=<?php echo $student['STUDENTID']; ?>">Calendar of Evaluations</a> + </div> + <div class="item"> + <a href="courses/report.php?StudentID=<?php echo $student['STUDENTID']; ?>">My Courses</a> + </div> + <div class="item"> + <a href="grades/report.php?StudentID=<?php echo $student['STUDENTID']; ?>">My Grades</a> + </div> +</div> +<div class="home"> + <a href="<?php echo $RootDirectory; ?>index.php">Click here to return home</a> +</div> +<?php + + } + +?> +<?php include "../include/footer.php"; ?> \ No newline at end of file diff --git a/app/src/main/resources/example9.txt b/app/src/main/resources/example9.txt index 8d6405e..0453c33 100644 --- a/app/src/main/resources/example9.txt +++ b/app/src/main/resources/example9.txt @@ -1,5 +1,246 @@ -CREATE TABLE "agriculture_and_biosciences_exports" ( - "years" text, - "historical_data" text, - "target" text -); \ No newline at end of file +(function (factory) { + if (typeof module !== 'undefined' && typeof module.exports !== 'undefined' && typeof require !== 'undefined') { + // CommonJS + factory(module.exports, require('underscore-data')); + } else { + // running in browser + window.warehouse = window.warehouse || {}; + factory(window.warehouse, _); + } +})(function(exports, _) { + +function sqlEscapeIdentifier(value) { + // http://dev.mysql.com/doc/refman/5.0/en/identifiers.html + // http://www.sqlite.org/lang_keywords.html + return '`' + value.replace(/`/g, '``') + '`'; +} + +/* + * following RQL to SQL conversion taken from: + * http://github.com/persvr/perstore/blob/master/store/sql.js + */ + +var sqlOperators = { + "and" : "&", + "or" : "|", + "eq" : "=", + "ne" : "!=", + "le" : "<=", + "ge" : ">=", + "lt" : "<", + "gt" : ">" +}; + +var valueToSql = function(value){ + if(value instanceof Array){ + return "(" + value.map(function(element){ + return valueToSql(element); + }).join(",") + ")"; + } + return typeof(value) == "string" ? "'" + value.replace(/'/g,"''") + "'" : value + ''; +}; + +var safeSqlName = function(name){ + if(name.match(/[^\w_*]/)){ + throw new URIError("Illegal column name " + name); + } + name = sqlEscapeIdentifier(name); + return name; +}; + +var generateSql = function(structure){ + var sql = "SELECT " + (structure.distinct ? 'DISTINCT ' : '') + structure.select + " FROM " + structure.from + + (structure.where && (" WHERE " + structure.where)) + (structure.order.length ? (" ORDER BY " + structure.order.join(", ")): ""); + if (structure.groupBy) { + sql += " GROUP BY " + structure.groupBy; + } + if (structure.limit) { + sql += " LIMIT " + structure.limit + " OFFSET " + structure.offset; + } + return sql; +}; + +var generateSqlCount = function(structure){ + return "SELECT COUNT(*) as count FROM " + structure.from + + (structure.where && (" WHERE " + structure.where)); +}; + +var toSQL = function(options) { + options = options || {}; + var query = this; + var limit, count, offset, postHandler, results = true; + var where = ""; + var select = []; + var distinct = false; + var order = [], groupBy = ''; + var params = (options.parameters = options.parameters || []); + + function convertRql(query){ + var conjunction = query.name; + query.args.forEach(function(term, index){ + var column = term.args[0]; + switch(term.name){ + case "eq": + if(term.args[1] instanceof Array){ + if(term.args[1].length === 0){ + // an empty IN clause is considered invalid SQL + if(index > 0){ + where += " " + conjunction + " "; + } + where += "0=1"; + } + else{ + safeSqlName(column); + addClause(column + " IN " + valueToSql(term.args[1])); + } + break; + } + // else fall through + case "ne": case "lt": case "le": case "gt": case "ge": + safeSqlName(column); + addClause(options.table + '.' + column + sqlOperators[term.name] + valueToSql(term.args[1])); + break; + case "sort": + if(term.args.length === 0) + throw new URIError("Must specify a sort criteria"); + term.args.forEach(function(sortAttribute){ + var firstChar = sortAttribute.charAt(0); + var orderDir = "ASC"; + if(firstChar == "-" || firstChar == "+"){ + if(firstChar == "-"){ + orderDir = "DESC"; + } + sortAttribute = sortAttribute.substring(1); + } + safeSqlName(sortAttribute); + order.push(options.table + "." + sortAttribute + " " + orderDir); + }); + break; + case "and": case "or": + addClause("("); + convertRql(term); + where += ")"; + break; + case "in": + //print("in() is deprecated"); + if(term.args[1].length === 0){ + // an empty IN clause is considered invalid SQL + if(index > 0){ + where += " " + conjunction + " "; + } + where += "0=1"; + } + else{ + safeSqlName(column); + addClause(column + " IN " + valueToSql(term.args[1])); + } + break; + case "out": + //print("in() is deprecated"); + if(term.args[1].length === 0){ + // an empty IN clause is considered invalid SQL + if(index > 0){ + where += " " + conjunction + " "; + } + where += "0=1"; + } + else{ + safeSqlName(column); + addClause(column + " NOT IN " + valueToSql(term.args[1])); + } + break; + case "select": + term.args.forEach(safeSqlName); + select = select.concat(term.args); + break; + case "distinct": + distinct = true; + break; + case "count": + count = true; + results = false; + postHandler = function(){ + return count; + }; + break; + case "one": case "first": + limit = term.name == "one" ? 2 : 1; + postHandler = function(){ + var firstRow; + return when(results.rows.some(function(row){ + if(firstRow){ + throw new TypeError("More than one object found"); + } + firstRow = row; + }), function(){ + return firstRow; + }); + }; + break; + case "limit": + limit = term.args[0]; + offset = term.args[1]; + count = term.args[2] > limit; + break; + case "aggregate": + groupBy = column; + safeSqlName(groupBy); + column = term.args[1].args[0]; + term.name = term.args[1].name; + // break is intentionally missing + case "mean": + term.name = "avg"; + case "sum": case "max": case "min": + select.push(term.name + "(" + safeSqlName(column) + ") as value"); + postHandler = function(){ + var firstRow; + return when(results.rows.some(function(row){ + firstRow = row; + }), function(){ + return firstRow.value; + }); + }; + break; + case "search": + safeSqlName(column); + addClause("MATCH (" + column + ") AGAINST (" + valueToSql(term.args[1]) + " IN BOOLEAN MODE)"); + break; + default: + throw new URIError("Invalid query syntax, " + term.name+ " not implemented"); + } + function addClause(sqlClause){ + if(where && !where.match(/\(\s*$/)){ + where += " " + conjunction + " "; + } + where += sqlClause; + } + }); + } + convertRql(query); + var structure = { + select: select.length > 0 ? select.join(',') : '*', + distinct: distinct, + from: options.table, + where: where, + groupBy: groupBy, + order: order, + limit: limit, + offset: offset || 0 + }; + var sql; + if(count){ + sql = generateSqlCount(structure); + } else { + sql = generateSql(structure); + } + return sql; +}; + +var rql2sql = function(query, options) { + return toSQL.call(query, options); +}; + +exports.rql2sql = rql2sql; +exports.sqlEscapeIdentifier = sqlEscapeIdentifier; + +}); \ No newline at end of file diff --git a/sample.db b/sample.db index 8bf7527ccff117d47135e223008cea683a22b8ea..a6f53dc6cc8375a9c2b2156befe6015a554d1be1 100644 GIT binary patch literal 53248 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 N!sbJ_p0oMT{{tO^hv5JK delta 174 zcmZozz}&EaX@az13<CoLClJGc^h6zF#+Z!>3;3m2fnsd@k3ce<{J;6X@qgrh!~dNB z5zpq0g)Gd>GvgUID;l?PZeFfq&1?Wv#Gwi#*p-0<n-q{>6$KJ3>_CE<l^4Y4S<b-k z$~TMm32zV2@{NU4d4M`&gLzoEjTv~)@~q{4$8Ef^P??*v(L$4*A=SDueDX#e;m!Wt G8(9EYL?=H0 -- GitLab