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