diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f86b97..9b612a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,9 @@ Version 4.2.1-dev ----------------- -Nothing yet. +### Added + +* [PHP 7.4] Add support for `??=` operator through a new `AssignOp\Coalesce` node. (#575) Version 4.2.0 (2019-01-12) -------------------------- diff --git a/grammar/php5.y b/grammar/php5.y index b81df69..9f7b6cf 100644 --- a/grammar/php5.y +++ b/grammar/php5.y @@ -579,6 +579,7 @@ expr: | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; } | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; } | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; } + | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; } | variable T_INC { $$ = Expr\PostInc[$1]; } | T_INC variable { $$ = Expr\PreInc [$2]; } | variable T_DEC { $$ = Expr\PostDec[$1]; } diff --git a/grammar/php7.y b/grammar/php7.y index 45a3a03..0d927ab 100644 --- a/grammar/php7.y +++ b/grammar/php7.y @@ -660,6 +660,7 @@ expr: | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; } | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; } | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; } + | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; } | variable T_INC { $$ = Expr\PostInc[$1]; } | T_INC variable { $$ = Expr\PreInc [$2]; } | variable T_DEC { $$ = Expr\PostDec[$1]; } diff --git a/grammar/tokens.y b/grammar/tokens.y index 2b54f80..fe7beff 100644 --- a/grammar/tokens.y +++ b/grammar/tokens.y @@ -10,7 +10,7 @@ %right T_YIELD %right T_DOUBLE_ARROW %right T_YIELD_FROM -%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL +%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL %left '?' ':' %right T_COALESCE %left T_BOOLEAN_OR diff --git a/lib/PhpParser/Lexer/Emulative.php b/lib/PhpParser/Lexer/Emulative.php index b62d79c..3bae4a4 100644 --- a/lib/PhpParser/Lexer/Emulative.php +++ b/lib/PhpParser/Lexer/Emulative.php @@ -4,27 +4,54 @@ namespace PhpParser\Lexer; use PhpParser\Error; use PhpParser\ErrorHandler; +use PhpParser\Parser; class Emulative extends \PhpParser\Lexer { const PHP_7_3 = '7.3.0dev'; + const PHP_7_4 = '7.4.0dev'; + + const FLEXIBLE_DOC_STRING_REGEX = <<<'REGEX' +/<<<[ \t]*(['"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)\1\r?\n +(?:.*\r?\n)*? +(?\h*)\2(?![a-zA-Z_\x80-\xff])(?(?:;?[\r\n])?)/x +REGEX; + + const T_COALESCE_EQUAL = 1007; /** - * @var array Patches used to reverse changes introduced in the code + * @var mixed[] Patches used to reverse changes introduced in the code */ - private $patches; + private $patches = []; + + /** + * @param mixed[] $options + */ + public function __construct(array $options = []) + { + parent::__construct($options); + + // add emulated tokens here + $this->tokenMap[self::T_COALESCE_EQUAL] = Parser\Tokens::T_COALESCE_EQUAL; + } public function startLexing(string $code, ErrorHandler $errorHandler = null) { $this->patches = []; - $preparedCode = $this->prepareCode($code); - if (null === $preparedCode) { + + if ($this->isEmulationNeeded($code) === false) { // Nothing to emulate, yay parent::startLexing($code, $errorHandler); return; } $collector = new ErrorHandler\Collecting(); + + // 1. emulation of heredoc and nowdoc new syntax + $preparedCode = $this->processHeredocNowdoc($code); parent::startLexing($preparedCode, $collector); + + // 2. emulation of ??= token + $this->processCoaleseEqual($code); $this->fixupTokens(); $errors = $collector->getErrors(); @@ -36,30 +63,60 @@ class Emulative extends \PhpParser\Lexer } } - /** - * Prepares code for emulation. If nothing has to be emulated null is returned. - * - * @param string $code - * @return null|string - */ - private function prepareCode(string $code) { + private function isCoalesceEqualEmulationNeeded(string $code): bool + { + // skip version where this works without emulation + if (version_compare(\PHP_VERSION, self::PHP_7_4, '>=')) { + return false; + } + + return strpos($code, '??=') !== false; + } + + private function processCoaleseEqual(string $code) + { + if ($this->isCoalesceEqualEmulationNeeded($code) === false) { + return; + } + + // We need to manually iterate and manage a count because we'll change + // the tokens array on the way + $line = 1; + for ($i = 0, $c = count($this->tokens); $i < $c; ++$i) { + if (isset($this->tokens[$i + 1])) { + if ($this->tokens[$i][0] === T_COALESCE && $this->tokens[$i + 1] === '=') { + array_splice($this->tokens, $i, 2, [ + [self::T_COALESCE_EQUAL, '??=', $line] + ]); + $c--; + continue; + } + } + if (\is_array($this->tokens[$i])) { + $line += substr_count($this->tokens[$i][1], "\n"); + } + } + } + + private function isHeredocNowdocEmulationNeeded(string $code): bool + { + // skip version where this works without emulation if (version_compare(\PHP_VERSION, self::PHP_7_3, '>=')) { - return null; + return false; } - if (strpos($code, '<<<') === false) { - // Definitely doesn't contain heredoc/nowdoc - return null; + return strpos($code, '<<<') !== false; + } + + private function processHeredocNowdoc(string $code): string + { + if ($this->isHeredocNowdocEmulationNeeded($code) === false) { + return $code; } - $flexibleDocStringRegex = <<<'REGEX' -/<<<[ \t]*(['"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)\1\r?\n -(?:.*\r?\n)*? -(?\h*)\2(?![a-zA-Z_\x80-\xff])(?(?:;?[\r\n])?)/x -REGEX; - if (!preg_match_all($flexibleDocStringRegex, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) { + if (!preg_match_all(self::FLEXIBLE_DOC_STRING_REGEX, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) { // No heredoc/nowdoc found - return null; + return $code; } // Keep track of how much we need to adjust string offsets due to the modifications we @@ -93,19 +150,31 @@ REGEX; } } - if (empty($this->patches)) { - // We did not end up emulating anything - return null; - } - return $code; } - private function fixupTokens() { - assert(count($this->patches) > 0); + private function isEmulationNeeded(string $code): bool + { + if ($this->isHeredocNowdocEmulationNeeded($code)) { + return true; + } + + if ($this->isCoalesceEqualEmulationNeeded($code)) { + return true; + } + + return false; + } + + private function fixupTokens() + { + if (\count($this->patches) === 0) { + return; + } // Load first patch $patchIdx = 0; + list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx]; // We use a manual loop over the tokens, because we modify the array on the fly @@ -200,4 +269,4 @@ REGEX; $error->setAttributes($attrs); } } -} \ No newline at end of file +} diff --git a/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php b/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php new file mode 100644 index 0000000..c0e9b31 --- /dev/null +++ b/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php @@ -0,0 +1,12 @@ +semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 313 => function ($stackPos) { - $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 314 => function ($stackPos) { - $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 315 => function ($stackPos) { - $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 316 => function ($stackPos) { - $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 317 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 318 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 319 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 320 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 321 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 322 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 323 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 324 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 325 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 326 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 327 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 328 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 329 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 330 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 331 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 332 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 333 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 334 => function ($stackPos) { - $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 335 => function ($stackPos) { - $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 336 => function ($stackPos) { - $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 337 => function ($stackPos) { - $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 338 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 339 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 340 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 341 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 342 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 343 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 344 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 345 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 346 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 347 => function ($stackPos) { - $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 348 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 349 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 350 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 351 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, 352 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 353 => function ($stackPos) { - $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 354 => function ($stackPos) { - $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 355 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 356 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 357 => function ($stackPos) { - $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 358 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 359 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 360 => function ($stackPos) { - $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 361 => function ($stackPos) { + $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 362 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs); }, - 362 => function ($stackPos) { + 363 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 363 => function ($stackPos) { + 364 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 364 => function ($stackPos) { + 365 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 365 => function ($stackPos) { + 366 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 366 => function ($stackPos) { + 367 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 367 => function ($stackPos) { + 368 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs); }, - 368 => function ($stackPos) { - $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, 369 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 370 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2069,116 +2078,116 @@ class Php5 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 372 => function ($stackPos) { - $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 373 => function ($stackPos) { - $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 374 => function ($stackPos) { - $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 375 => function ($stackPos) { - $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 376 => function ($stackPos) { - $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-4)], 'uses' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes); + $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 377 => function ($stackPos) { - $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(11-3)], 'params' => $this->semStack[$stackPos-(11-5)], 'uses' => $this->semStack[$stackPos-(11-7)], 'returnType' => $this->semStack[$stackPos-(11-8)], 'stmts' => $this->semStack[$stackPos-(11-10)]], $this->startAttributeStack[$stackPos-(11-1)] + $this->endAttributes); + $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-4)], 'uses' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes); }, 378 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(11-3)], 'params' => $this->semStack[$stackPos-(11-5)], 'uses' => $this->semStack[$stackPos-(11-7)], 'returnType' => $this->semStack[$stackPos-(11-8)], 'stmts' => $this->semStack[$stackPos-(11-10)]], $this->startAttributeStack[$stackPos-(11-1)] + $this->endAttributes); }, 379 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 380 => function ($stackPos) { - $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 381 => function ($stackPos) { - $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 382 => function ($stackPos) { + $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 383 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs); }, - 383 => function ($stackPos) { + 384 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs); }, - 384 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, 385 => function ($stackPos) { - $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED); - $this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 386 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED); + $this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 387 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 388 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 389 => function ($stackPos) { $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]); $this->checkClass($this->semValue[0], -1); }, - 389 => function ($stackPos) { + 390 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 390 => function ($stackPos) { + 391 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 391 => function ($stackPos) { + 392 => function ($stackPos) { $this->semValue = array(); }, - 392 => function ($stackPos) { + 393 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(4-3)]; }, - 393 => function ($stackPos) { + 394 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, - 394 => function ($stackPos) { + 395 => function ($stackPos) { $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, - 395 => function ($stackPos) { + 396 => function ($stackPos) { $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 396 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, 397 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 398 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 399 => function ($stackPos) { - $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, 400 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 401 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 402 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 403 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 404 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, + 404 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, 405 => function ($stackPos) { - $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 406 => function ($stackPos) { - $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 407 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 408 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2196,243 +2205,243 @@ class Php5 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 413 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 414 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 415 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 416 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 417 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 418 => function ($stackPos) { $this->semValue = null; }, 419 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = null; }, 420 => function ($stackPos) { - $this->semValue = array(); - }, - 421 => function ($stackPos) { - $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes)); - }, - 422 => function ($stackPos) { - foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 423 => function ($stackPos) { - $this->semValue = array(); - }, - 424 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 421 => function ($stackPos) { + $this->semValue = array(); + }, + 422 => function ($stackPos) { + $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes)); + }, + 423 => function ($stackPos) { + foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 424 => function ($stackPos) { + $this->semValue = array(); + }, 425 => function ($stackPos) { - $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 426 => function ($stackPos) { - $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true); }, 427 => function ($stackPos) { + $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 428 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED); $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs); }, - 428 => function ($stackPos) { + 429 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 429 => function ($stackPos) { + 430 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 430 => function ($stackPos) { + 431 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 431 => function ($stackPos) { + 432 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 432 => function ($stackPos) { + 433 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 433 => function ($stackPos) { + 434 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 434 => function ($stackPos) { + 435 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 435 => function ($stackPos) { + 436 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 436 => function ($stackPos) { + 437 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], false); }, - 437 => function ($stackPos) { + 438 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], false); }, - 438 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, 439 => function ($stackPos) { - $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 440 => function ($stackPos) { - $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 441 => function ($stackPos) { - $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 442 => function ($stackPos) { - $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 443 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 444 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 445 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 446 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 447 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 448 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 449 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 450 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 451 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 452 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 453 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 454 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 455 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 456 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 457 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 458 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 459 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 460 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 461 => function ($stackPos) { - $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 462 => function ($stackPos) { - $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 463 => function ($stackPos) { - $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 464 => function ($stackPos) { - $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 465 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 466 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 467 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 468 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 469 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 470 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 471 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 472 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 473 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); - }, - 474 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 475 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 476 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; - }, - 477 => function ($stackPos) { - $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 478 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 479 => function ($stackPos) { + 441 => function ($stackPos) { + $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 442 => function ($stackPos) { + $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 443 => function ($stackPos) { + $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 444 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 445 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 446 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 447 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 448 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 449 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 450 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 451 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 452 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 453 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 454 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 455 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 456 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 457 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 458 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 459 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 460 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 461 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 462 => function ($stackPos) { + $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 463 => function ($stackPos) { + $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 464 => function ($stackPos) { + $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 465 => function ($stackPos) { + $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 466 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 467 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 468 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 469 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 470 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 471 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 472 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 473 => function ($stackPos) { + $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 474 => function ($stackPos) { + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + }, + 475 => function ($stackPos) { + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 476 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 477 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, + 478 => function ($stackPos) { + $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 479 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, 480 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 481 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 482 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs); }, - 482 => function ($stackPos) { + 483 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); }, - 483 => function ($stackPos) { + 484 => function ($stackPos) { $this->semValue = array(); }, - 484 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, 485 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos]; + $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 486 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; }, 487 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = $this->semStack[$stackPos]; }, 488 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, 489 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 490 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 491 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 492 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2444,61 +2453,61 @@ class Php5 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 495 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 496 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, 497 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 498 => function ($stackPos) { - $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 499 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 500 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 501 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 502 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 503 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 504 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 505 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 506 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 507 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 508 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 509 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 509 => function ($stackPos) { + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, 510 => function ($stackPos) { - $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 511 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var; }, 512 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 513 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, 514 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); @@ -2510,117 +2519,120 @@ class Php5 extends \PhpParser\ParserAbstract $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 517 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 518 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 519 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 520 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = null; }, 521 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 522 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; - }, - 523 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 523 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, 524 => function ($stackPos) { - $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 525 => function ($stackPos) { - $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; }, 526 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 527 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, 528 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 529 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 530 => function ($stackPos) { - $this->semValue = null; - }, - 531 => function ($stackPos) { - $this->semValue = array(); - }, - 532 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 533 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 534 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 535 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 536 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, + 531 => function ($stackPos) { + $this->semValue = null; + }, + 532 => function ($stackPos) { + $this->semValue = array(); + }, + 533 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 534 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 535 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 536 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, 537 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 538 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 539 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 540 => function ($stackPos) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 541 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 542 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 543 => function ($stackPos) { - $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); }, 544 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 545 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 546 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 547 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 548 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 549 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 550 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 551 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, 552 => function ($stackPos) { - $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 553 => function ($stackPos) { - $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 554 => function ($stackPos) { + $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 555 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, ]; diff --git a/lib/PhpParser/Parser/Php7.php b/lib/PhpParser/Parser/Php7.php index 4c3a6bf..fc8fa6a 100644 --- a/lib/PhpParser/Parser/Php7.php +++ b/lib/PhpParser/Parser/Php7.php @@ -17,17 +17,17 @@ use PhpParser\Node\Stmt; */ class Php7 extends \PhpParser\ParserAbstract { - protected $tokenToSymbolMapSize = 392; - protected $actionTableSize = 942; - protected $gotoTableSize = 493; + protected $tokenToSymbolMapSize = 393; + protected $actionTableSize = 951; + protected $gotoTableSize = 515; - protected $invalidSymbol = 157; + protected $invalidSymbol = 158; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; - protected $YY2TBLSTATE = 337; - protected $numNonLeafStates = 582; + protected $YY2TBLSTATE = 339; + protected $numNonLeafStates = 584; protected $symbolToName = array( "EOF", @@ -58,6 +58,7 @@ class Php7 extends \PhpParser\ParserAbstract "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", + "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", @@ -190,452 +191,457 @@ class Php7 extends \PhpParser\ParserAbstract ); protected $tokenToSymbol = array( - 0, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 53, 155, 157, 156, 52, 35, 157, - 151, 152, 50, 47, 7, 48, 49, 51, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 29, 148, - 41, 15, 43, 28, 65, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 67, 157, 154, 34, 157, 153, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 149, 33, 150, 55, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 1, 2, 3, 4, + 0, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 54, 156, 158, 157, 53, 36, 158, + 152, 153, 51, 48, 7, 49, 50, 52, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 30, 149, + 42, 15, 44, 29, 66, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 68, 158, 155, 35, 158, 154, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 150, 34, 151, 56, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 30, 31, 32, 36, 37, 38, 39, 40, 42, - 44, 45, 46, 54, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 66, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 157, 157, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 27, 28, 31, 32, 33, 37, 38, 39, 40, 41, + 43, 45, 46, 47, 55, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 158, + 158, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 157, 157, 157, 157, - 157, 157, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147 + 132, 133, 134, 135, 136, 137, 138, 158, 158, 158, + 158, 158, 158, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148 ); protected $action = array( - 587, 588, 589, 590, 591, 218, 592, 593, 594, 630, - 631, 666, 32, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113,-32766,-32766,-32766, 883, 884, - 885, 882, 881, 880, 0,-32766,-32766,-32766,-32766,-32766, - -32766, 664, 825, 117, 24,-32766, 429,-32766,-32766,-32766, - -32766,-32766, 595, 916, 918,-32766, 9,-32766,-32766,-32766, - -32766,-32766,-32766, 859, 251, 119, 596, 597, 598, 599, - 600, 601, 602,-32766,-32766, 662, 883, 884, 885, 882, - 881, 880, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 633, 634, 635, 636, 637, 625, 626, - 627, 628, 629, 614, 615, 616, 617, 618, 619, 620, - 656, 657, 658, 659, 660, 661, 621, 622, 623, 624, - 654, 645, 643, 644, 640, 641, 231, 632, 638, 639, - 646, 647, 649, 648, 650, 651, 45, 46, 406, 47, - 48, 642, 653, 652, -233, 49, 50, 243, 51,-32767, - -32767,-32767,-32767, 93, 94, 95, 96, 97,-32766,-32766, - -32766, 42, -452, 25, -294, -294, 829, 830, 98, 99, - 100, 261, 242, 266, -454, 1049, 671, 389,-32766, 1015, - 875, 52, 53, 801, 101, 1049, 278, 54, 835, 55, - 223, 224, 56, 57, 58, 59, 60, 61, 62, 63, - -453, 25, 234, 64, 358,-32766,-32766,-32766, 992, 1016, - 1017, 408, -272, 1049, -489, 251, 491, 1015,-32766,-32766, - -32766, 747, 249, -452, 251,-32766, 421,-32766,-32766,-32766, - -32766, 452, -259, 1080, 293, -454, 366, -452,-32766, 1079, - -32766,-32766,-32766, 116, -452, 1101, 292, 68, 1102, -454, - 516, 21, 268, 487, 418, 419, -454, 296, -457,-32766, - 999, -453, 268, 420, 421, 1067, 1021, 1022, 1023, 1024, - 1018, 1019, 246, 1052, -452, -453, 267, 430, 1025, 1020, - 363, 666, -453, 300, -456, 66, 1011, 258, 1029, 263, - 268, 407, -136, -136, -136, -4, 747, 390, 351, 251, - 669, 736, 802, 1092, 37, 20, 409, -136, 410, -136, - 411, -136, 412, -136, -490, 413, 229, 829, 830, 38, - 39, 359, 360, 670, 40, 414, 829, 830, 65, 374, - 44, 291, 558, 415, 416, -452, 765, 380, 1049, 417, - 354, 664, 722, 770, 361, 362, 217, 430, -91, -452, - 363, 33,-32766,-32766,-32766, 355, -452, 114, 666, -489, - 356, 28, 226, 122, 1049, 230, 407, 747, 749, 556, - -136, 992,-32766, 219,-32766,-32766, 736, -259, 233, 37, - 20, 409, 352, 410, -496, 411, -496, 412, 687, 688, - 413, 250, 232, 429, 38, 39, 359, 360, 343, 40, - 414, 829, 830, 65, 257, 295, 291, 666, 415, 416, - 25, 666, 118, 125, 417, 268, 357, 679, 770, 361, - 362, 74, 1049, -238, 25, 115, 1015, 541, 123,-32766, - -32766,-32766, 347, 836, 124, 120, 1049, 407, 280, 747, - 1015, 268, 429, 749, 556, -4, 429, 736, 666, 475, - 37, 20, 409, 746, 410, 992, 411, 121, 412, -490, - 127, 413, -218, -218, -218, 38, 39, 359, 360, 992, - 40, 414, 420, 421, 65, 132, 228, 291, 229, 415, - 416, -493, -82, 429, 569, 417, 420, 421, 722, 770, - 361, 362, 133, 542, 68, 30, 363, 134, -176, 268, - 861, 129, 225, 227, 244, 999, 530, 531, 68, 407, - 95, 96, 97, 268, 749, 556, -218, -177, 666, 736, - 666, 573, 37, 20, 409, -492, 410, 570, 411, 282, - 412, 398, 8, 413, -217, -217, -217, 38, 39, 359, - 360, 761, 40, 414, 666, 666, 65, 242, 747, 291, - 101, 415, 416, 429, 43, 429, 128, 417, 130, 318, - 722, 770, 361, 362, 687, 688, -295, -295, 538, 75, - 76, 77, 509, 510, 829, 830, 567, 667, 664, 429, - 429, 860, 579, 1049, 666, 1103, 749, 556, -217, 31, - 123, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 589, 590, 591, 592, 593, 666, 594, 595, 596, 632, + 633, 0, 32, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114,-32767,-32767,-32767,-32767, + 93, 94, 95, 96, 97,-32766,-32766,-32766, 837, 668, + 885, 886, 887, 884, 883, 882, 885, 886, 887, 884, + 883, 882, 861, 597, 919, 921,-32766, 24,-32766,-32766, + -32766,-32766,-32766,-32766,-32766,-32766, 253, 598, 599, 600, + 601, 602, 603, 604, 431, 827, 664,-32766,-32766,-32766, + 1055,-32766, 118, 605, 606, 607, 608, 609, 610, 611, + 612, 613, 614, 615, 635, 636, 637, 638, 639, 627, + 628, 629, 630, 631, 616, 617, 618, 619, 620, 621, + 622, 658, 659, 660, 661, 662, 663, 623, 624, 625, + 626, 656, 647, 645, 646, 642, 643, 220, 634, 640, + 641, 648, 649, 651, 650, 652, 653, 45, 46, 408, + 47, 48, 644, 655, 654, 9, 49, 50, 120, 51, + -32766,-32766,-32766, 233, -294, -294, 673,-32766,-32766,-32766, + -455, 263, 123, 33,-32766,-32766,-32766, 767, 831, 832, + 877,-32766, 1002,-32766,-32766,-32766,-32766,-32766,-32766, -454, + -32766,-32766,-32766, 52, 53,-32766, 543,-32766,-32766, 54, + 245, 55, 225, 226, 56, 57, 58, 59, 60, 61, + 62, 63, -272, 25, 236, 64, 360,-32766,-32766,-32766, + 668, 1019, 1020, 410, 671, 1052, -490, 1095, 493, 1018, + 1002, -455, 749, 98, 99, 100, 221, 244,-32766, 74, + -32766,-32766,-32766,-32766, -259, -455, 668, 253, 368, 101, + -454, 231, -455, 231, -458, 431, 253, 1104, 294, 268, + 1105, 1052, 544, 280, -454, 365, 420, 421, -491, 863, + 295, -454, 489, -457, -494, 422, 423, -233, 1024, 1025, + 1026, 1027, 1021, 1022, 248, 28, 228, -453, 1014, 432, + 1028, 1023, 365, 668, 995, 668, 30, 66, 298, 260, + 115, 265, 270, 409, -136, -136, -136, -4, 749, 1052, + 1052, 1070, 432, 738, 672, 365, 37, 20, 411, -136, + 412, -136, 413, -136, 414, -136, 571, 415, 431, 235, + 431, 38, 39, 361, 362, 302, 40, 416, 270, 353, + 65, 1083, 995, 293, 42, 417, 418, 1082, -453, 831, + 832, 419, 25, 354, 724, 772, 363, 364, 831, 832, + -176, 25, -453, 124, 1052, 124, 219, 1052, 1018, -453, + 838, -91, -490, 1052,-32766,-32766,-32766, 1018, 749, 409, + 751, 558, -136, 668, 477, 253, 270, 270, 666, 738, + -259, -177, 37, 20, 411,-32766, 412, 995, 413, 803, + 414, 391, 356, 415, 232, 251, 995, 38, 39, 361, + 362, 345, 40, 416, -491, 423, 65, 259, 431, 293, + -494, 417, 418, 422, 423, 357, 117, 419, -493, -453, + 681, 772, 363, 364, 748, 44, 68, 125,-32766,-32766, + -32766, 270, 1071, 230, 270, 68, 668, 269, 749, 409, + 270, 282, 131, 320, 689, 690, 751, 558, -4, 738, + 126, 116, 37, 20, 411, 227, 412, 121, 413, 376, + 414, 122, 560, 415, -218, -218, -218, 38, 39, 361, + 362, 431, 40, 416, 358, 668, 65, 831, 832, 293, + -453, 417, 418, -497, 454, -497, 252, 419, 349, 229, + 724, 772, 363, 364, -453, 359, -176, 668, 382, -238, + 297, -453, 95, 96, 97, 518, 21, 119, 804, 409, + 431, 392, 532, 533, 511, 512, 751, 558, -218, 738, + 400, 8, 37, 20, 411, 128, 412, -177, 413, 133, + 414, 668, 431, 415, -217, -217, -217, 38, 39, 361, + 362, 1032, 40, 416, 134, 749, 65, 689, 690, 293, + 135, 417, 418, -295, -295, 831, 832, 419, 862, 581, + 724, 772, 363, 364, -493, 284, 431, -82, 75, 76, + 77, 130, 246, 575, 569, 572, 763, 244, 101, 540, + 43, 129, 891, 669, 666, 668, 751, 558, -217, 31, + 1106, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 889, 242, 992, 747, 407, 669, - 456,-32766, 461, 550, 517, 522, -493, 101, 736, 523, - 371, 37, 20, 409, 533, 410, 10, 411, -80, 412, - 1068, 534, 413, -176, 378, 563, 38, 39, 359, 747, - 508, 40, 414, 771, 772, 65, 262, 12, 291, 1031, - 268, 992, -177, 1028, 294, -411, 417, 5, 763, 794, - -492, 513, 374, 348, 265, 349, 0, 564, 259, 0, - 260, 0, 0, 0, 0, 0, 0, 407, 0, 0, - 0, 0, 0, 0, 0, 749, 556, 736, 0, 804, - 37, 20, 409, 325, 410, 336, 411, 557, 412, 332, - 331, 413, 458, 872, 956, 38, 39, 359, 747, 407, - 40, 414, 727, 578, 65, 36, 35, 291, 577, 736, - 788, 865, 37, 20, 409, 417, 410, 795, 411, 868, - 412, 867, 864, 413, 783, 725, 562, 38, 39, 359, - 747, 796, 40, 414, 785, 856, 65, 855, 866, 291, - 559, 342, 341, 561, 749, 556, 277, 417, 276, 572, - 568, 566, 565, 560, 0, 793, 754, 764, 571, 756, - 690, 980, 767, 723, 1043, 1098, 1100, 682, 407, 747, - 769, 681, 691, 768, 692, 689, 787, 556, 736, 1097, - 1050, 37, 20, 409, 1099, 410, 1057, 411, 1062, 412, - 1065, 574, 413, 41, 34, 27, 38, 39, 359, 26, - 407, 40, 414, 23, -455, 65, -456, -457, 291, -479, - 736, -481, 238, 37, 20, 409, 417, 410, 346, 411, - 344, 412, 279, 241, 413, 240, 239, 222, 38, 39, - 359, 221, 135, 40, 414, 131, 126, 65, 73, 407, - 291, 72, 71, 70, 69, 749, 556, 67, 417, 736, - 959, 549, 37, 20, 409, 504, 410, 485, 411, 314, - 412, 253, 22, 413, 18, 13, -236, 38, 39, 359, - 984, 837, 40, 414, 1013, 955, 65, 749, 556, 291, - -32766,-32766,-32766, 1003, 547, 404, 397, 417, 395, 391, - 315, 19, 17, -91, 16, 15, 14, -233, -234, 0, - -32766, 972,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767, - -32767,-32767,-32767, -423, 1030, 1012, 749, 556, 1095, 1056, - 1042, 1041 + 97, 98, 99, 100, 749, 244, 409, 458, 671,-32766, + 463, 524, 552, 10, 373, -80, 738, 101, 510, 37, + 20, 411, 995, 412, 519, 413, 525, 414, 1034, 535, + 415, 773, 267, 565, 38, 39, 361, 380, 536, 40, + 416, 261, 806, 65, 262, 376, 293, 1033, 0, 234, + 749, 264, 0, 1031, 419, 874, 0, 350, 12, 0, + 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 409, 0, 0, 0, 566, + 0, 25, 296, 751, 558, 738, -412, 5, 37, 20, + 411, 0, 412, 1052, 413, 351, 414, 1018, 327, 415, + 338, 749, 334, 38, 39, 361, 333, 460, 40, 416, + 765, 559, 65, 729, 580, 293, 36, 35, 579, 790, + 867, 409, 797, 419, 870, 869, 995, 866, 785, 727, + 564, 738, 798, 749, 37, 20, 411, 787, 412, 858, + 413, 857, 414, 422, 423, 415, 868, 796, 561, 38, + 39, 361, 751, 558, 40, 416, 344, 343, 65, 563, + 279, 293, 573, 795, 278, 68, 574, 570, 568, 419, + 270, 567, 409, 562, 41, 749, 756, 766, 758, 692, + 983, 769, 738, 725, 1046, 37, 20, 411, 1101, 412, + 1103, 413, 684, 414, 771, 683, 415, 693, 789, 558, + 38, 39, 361, 770, 409, 40, 416, 694, 691, 65, + 1100, 1053, 293, 1102, 738, 1060, 1065, 37, 20, 411, + 419, 412, 1068, 413, 576, 414, 34, 27, 415, 26, + 23, -456, 38, 39, 361, -457, -458, 40, 416, -480, + -482, 65, 240, 348, 293, 346, 409, 281, 243, 751, + 558, 242, 419, 241, 224, 223, 738, 136, 132, 37, + 20, 411, 127, 412, 73, 413, 72, 414, 71, 70, + 415, 69, 67, 515, 38, 39, 361, 959, 962, 40, + 416, 751, 558, 65, 551, 1015, 293,-32766,-32766,-32766, + 506, 487, 316, 255, 419, 22, 18, 13, -236, 987, + 839, 1016, 958, 1006, 549, 406, 399, 397,-32766, 393, + -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, + -32767, 317, 19, 751, 558, 17, -91, 0, 16, 15, + 14, -233, -234, 0, 975, -424, 0, 1098, 1059, 1045, + 1044 ); protected $actionCheck = array( - 2, 3, 4, 5, 6, 13, 8, 9, 10, 11, - 12, 77, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 8, 9, 10, 112, 113, - 114, 115, 116, 117, 0, 8, 9, 10, 8, 9, - 10, 77, 1, 13, 7, 28, 112, 30, 31, 32, - 33, 34, 54, 56, 57, 28, 7, 30, 31, 32, - 33, 34, 35, 1, 28, 7, 68, 69, 70, 71, - 72, 73, 74, 8, 9, 77, 112, 113, 114, 115, - 116, 117, 84, 85, 86, 87, 88, 89, 90, 91, + 2, 3, 4, 5, 6, 78, 8, 9, 10, 11, + 12, 0, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 8, 9, 10, 1, 78, + 113, 114, 115, 116, 117, 118, 113, 114, 115, 116, + 117, 118, 1, 55, 57, 58, 29, 7, 31, 32, + 33, 34, 35, 36, 8, 9, 29, 69, 70, 71, + 72, 73, 74, 75, 113, 1, 78, 8, 9, 10, + 1, 8, 13, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 7, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 2, 3, 4, 5, - 6, 143, 144, 145, 152, 11, 12, 7, 14, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 8, 9, - 10, 67, 67, 67, 102, 103, 130, 131, 50, 51, - 52, 109, 54, 7, 67, 79, 1, 29, 28, 83, - 118, 47, 48, 29, 66, 79, 7, 53, 1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 67, 67, 68, 69, 70, 8, 9, 10, 112, 75, - 76, 77, 150, 79, 7, 28, 48, 83, 8, 9, - 10, 1, 128, 128, 28, 28, 130, 30, 31, 32, - 33, 82, 7, 1, 7, 128, 102, 142, 28, 7, - 30, 31, 32, 149, 149, 77, 112, 151, 80, 142, - 72, 73, 156, 1, 120, 121, 149, 7, 151, 8, - 1, 128, 156, 129, 130, 1, 132, 133, 134, 135, - 136, 137, 138, 1, 67, 142, 67, 143, 144, 145, - 146, 77, 149, 7, 151, 151, 1, 153, 139, 155, - 156, 71, 72, 73, 74, 0, 1, 149, 7, 28, - 79, 81, 148, 82, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 7, 95, 35, 130, 131, 99, - 100, 101, 102, 148, 104, 105, 130, 131, 108, 146, - 67, 111, 149, 113, 114, 128, 1, 128, 79, 119, - 7, 77, 122, 123, 124, 125, 94, 143, 152, 142, - 146, 13, 8, 9, 10, 7, 149, 15, 77, 152, - 7, 140, 141, 29, 79, 35, 71, 1, 148, 149, - 150, 112, 28, 13, 30, 31, 81, 152, 35, 84, - 85, 86, 123, 88, 152, 90, 154, 92, 102, 103, - 95, 128, 35, 112, 99, 100, 101, 102, 103, 104, - 105, 130, 131, 108, 109, 142, 111, 77, 113, 114, - 67, 77, 149, 149, 119, 156, 7, 122, 123, 124, - 125, 149, 79, 152, 67, 15, 83, 77, 147, 8, - 9, 10, 146, 152, 149, 15, 79, 71, 143, 1, - 83, 156, 112, 148, 149, 150, 112, 81, 77, 78, - 84, 85, 86, 29, 88, 112, 90, 15, 92, 152, - 15, 95, 96, 97, 98, 99, 100, 101, 102, 112, - 104, 105, 129, 130, 108, 15, 35, 111, 35, 113, - 114, 7, 29, 112, 149, 119, 129, 130, 122, 123, - 124, 125, 15, 143, 151, 7, 146, 15, 7, 156, - 150, 29, 35, 35, 29, 1, 72, 73, 151, 71, - 47, 48, 49, 156, 148, 149, 150, 7, 77, 81, - 77, 29, 84, 85, 86, 7, 88, 29, 90, 33, - 92, 102, 103, 95, 96, 97, 98, 99, 100, 101, - 102, 35, 104, 105, 77, 77, 108, 54, 1, 111, - 66, 113, 114, 112, 67, 112, 67, 119, 97, 98, - 122, 123, 124, 125, 102, 103, 102, 103, 74, 8, - 9, 10, 106, 107, 130, 131, 29, 77, 77, 112, - 112, 148, 149, 79, 77, 80, 148, 149, 150, 28, - 147, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 79, 54, 112, 1, 71, 79, - 82, 82, 86, 89, 87, 93, 152, 66, 81, 96, - 102, 84, 85, 86, 91, 88, 94, 90, 94, 92, - 152, 96, 95, 152, 94, 29, 99, 100, 101, 1, - 109, 104, 105, 123, 123, 108, 110, 142, 111, 139, - 156, 112, 152, 139, 142, 142, 119, 142, 147, 150, - 152, 154, 146, 146, 126, 146, -1, 29, 126, -1, - 127, -1, -1, -1, -1, -1, -1, 71, -1, -1, - -1, -1, -1, -1, -1, 148, 149, 81, -1, 148, - 84, 85, 86, 146, 88, 146, 90, 149, 92, 146, - 146, 95, 146, 148, 152, 99, 100, 101, 1, 71, - 104, 105, 148, 148, 108, 148, 148, 111, 148, 81, - 148, 148, 84, 85, 86, 119, 88, 148, 90, 148, - 92, 148, 148, 95, 148, 148, 29, 99, 100, 101, - 1, 148, 104, 105, 148, 148, 108, 148, 148, 111, - 149, 149, 149, 149, 148, 149, 149, 119, 149, 149, - 149, 149, 149, 149, -1, 150, 150, 150, 29, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 71, 1, - 150, 150, 150, 150, 150, 150, 148, 149, 81, 150, - 150, 84, 85, 86, 150, 88, 150, 90, 150, 92, - 150, 150, 95, 151, 151, 151, 99, 100, 101, 151, - 71, 104, 105, 151, 151, 108, 151, 151, 111, 151, - 81, 151, 151, 84, 85, 86, 119, 88, 151, 90, - 151, 92, 151, 151, 95, 151, 151, 151, 99, 100, - 101, 151, 151, 104, 105, 151, 151, 108, 151, 71, - 111, 151, 151, 151, 151, 148, 149, 151, 119, 81, - 152, 152, 84, 85, 86, 152, 88, 152, 90, 152, - 92, 152, 152, 95, 152, 152, 152, 99, 100, 101, - 152, 152, 104, 105, 152, 152, 108, 148, 149, 111, - 8, 9, 10, 152, 152, 152, 152, 119, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, -1, - 28, 153, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 153, 155, 154, 148, 149, 154, 154, - 154, 154 + 122, 123, 124, 125, 126, 127, 128, 13, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 2, 3, 4, + 5, 6, 144, 145, 146, 7, 11, 12, 7, 14, + 8, 9, 10, 7, 103, 104, 1, 8, 9, 10, + 68, 110, 30, 13, 8, 9, 10, 1, 131, 132, + 119, 29, 1, 31, 32, 33, 34, 35, 29, 68, + 31, 32, 33, 48, 49, 29, 78, 31, 32, 54, + 7, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 151, 68, 69, 70, 71, 8, 9, 10, + 78, 76, 77, 78, 80, 80, 7, 83, 49, 84, + 1, 129, 1, 51, 52, 53, 13, 55, 29, 150, + 31, 32, 33, 34, 7, 143, 78, 29, 103, 67, + 129, 36, 150, 36, 152, 113, 29, 78, 113, 7, + 81, 80, 144, 7, 143, 147, 121, 122, 7, 151, + 7, 150, 1, 152, 7, 130, 131, 153, 133, 134, + 135, 136, 137, 138, 139, 141, 142, 68, 1, 144, + 145, 146, 147, 78, 113, 78, 7, 152, 7, 154, + 15, 156, 157, 72, 73, 74, 75, 0, 1, 80, + 80, 1, 144, 82, 149, 147, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 150, 96, 113, 36, + 113, 100, 101, 102, 103, 7, 105, 106, 157, 7, + 109, 1, 113, 112, 68, 114, 115, 7, 129, 131, + 132, 120, 68, 124, 123, 124, 125, 126, 131, 132, + 7, 68, 143, 148, 80, 148, 95, 80, 84, 150, + 153, 153, 153, 80, 8, 9, 10, 84, 1, 72, + 149, 150, 151, 78, 79, 29, 157, 157, 78, 82, + 153, 7, 85, 86, 87, 29, 89, 113, 91, 30, + 93, 30, 7, 96, 36, 129, 113, 100, 101, 102, + 103, 104, 105, 106, 153, 131, 109, 110, 113, 112, + 153, 114, 115, 130, 131, 7, 150, 120, 7, 68, + 123, 124, 125, 126, 30, 68, 152, 150, 8, 9, + 10, 157, 153, 36, 157, 152, 78, 68, 1, 72, + 157, 144, 98, 99, 103, 104, 149, 150, 151, 82, + 150, 15, 85, 86, 87, 36, 89, 15, 91, 147, + 93, 15, 150, 96, 97, 98, 99, 100, 101, 102, + 103, 113, 105, 106, 7, 78, 109, 131, 132, 112, + 129, 114, 115, 153, 83, 155, 129, 120, 147, 36, + 123, 124, 125, 126, 143, 7, 153, 78, 129, 153, + 143, 150, 48, 49, 50, 73, 74, 150, 149, 72, + 113, 150, 73, 74, 107, 108, 149, 150, 151, 82, + 103, 104, 85, 86, 87, 15, 89, 153, 91, 15, + 93, 78, 113, 96, 97, 98, 99, 100, 101, 102, + 103, 140, 105, 106, 15, 1, 109, 103, 104, 112, + 15, 114, 115, 103, 104, 131, 132, 120, 149, 150, + 123, 124, 125, 126, 153, 34, 113, 30, 8, 9, + 10, 30, 30, 30, 30, 30, 36, 55, 67, 75, + 68, 68, 80, 78, 78, 78, 149, 150, 151, 29, + 81, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 1, 55, 72, 83, 80, 83, + 87, 94, 90, 95, 103, 95, 82, 67, 110, 85, + 86, 87, 113, 89, 88, 91, 97, 93, 140, 92, + 96, 124, 127, 30, 100, 101, 102, 95, 97, 105, + 106, 127, 149, 109, 128, 147, 112, 156, -1, 36, + 1, 111, -1, 140, 120, 149, -1, 147, 143, -1, + -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 72, -1, -1, -1, 30, + -1, 68, 143, 149, 150, 82, 143, 143, 85, 86, + 87, -1, 89, 80, 91, 147, 93, 84, 147, 96, + 147, 1, 147, 100, 101, 102, 147, 147, 105, 106, + 148, 150, 109, 149, 149, 112, 149, 149, 149, 149, + 149, 72, 149, 120, 149, 149, 113, 149, 149, 149, + 30, 82, 149, 1, 85, 86, 87, 149, 89, 149, + 91, 149, 93, 130, 131, 96, 149, 151, 150, 100, + 101, 102, 149, 150, 105, 106, 150, 150, 109, 150, + 150, 112, 30, 151, 150, 152, 150, 150, 150, 120, + 157, 150, 72, 150, 152, 1, 151, 151, 151, 151, + 151, 151, 82, 151, 151, 85, 86, 87, 151, 89, + 151, 91, 151, 93, 151, 151, 96, 151, 149, 150, + 100, 101, 102, 151, 72, 105, 106, 151, 151, 109, + 151, 151, 112, 151, 82, 151, 151, 85, 86, 87, + 120, 89, 151, 91, 151, 93, 152, 152, 96, 152, + 152, 152, 100, 101, 102, 152, 152, 105, 106, 152, + 152, 109, 152, 152, 112, 152, 72, 152, 152, 149, + 150, 152, 120, 152, 152, 152, 82, 152, 152, 85, + 86, 87, 152, 89, 152, 91, 152, 93, 152, 152, + 96, 152, 152, 155, 100, 101, 102, 153, 153, 105, + 106, 149, 150, 109, 153, 155, 112, 8, 9, 10, + 153, 153, 153, 153, 120, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 29, 153, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 153, 153, 149, 150, 153, 153, -1, 153, 153, + 153, 153, 153, -1, 154, 154, -1, 155, 155, 155, + 155 ); protected $actionBase = array( - 0, 220, 295, 366, 438, 285, 350, 610, -2, -2, - -36, -2, -2, 616, 547, 547, 749, 547, 717, 648, - 788, 788, 788, 281, 443, 467, 467, 468, 371, 467, - 468, 334, 441, 330, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, -66, -66, -66, 175, 175, 154, 252, - 338, 729, 718, 725, 732, 733, 727, 562, 360, 649, - 650, 472, 634, 656, 658, 660, 723, 517, 730, 719, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 561, 251, 30, 65, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 150, 150, - 150, 344, 210, 207, 197, 17, 95, 27, 892, 892, - 892, 892, 892, 108, 108, 108, 108, 357, 357, 343, - 62, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 259, 464, 463, 463, 271, 271, - 271, 271, 504, 196, 187, 36, 149, 520, 779, 264, - 264, 444, 107, 133, 118, 118, 118, 286, 538, 549, - 549, 549, 549, 221, 221, 549, 549, 168, 272, 232, - 95, 95, 263, 95, 95, 95, 462, 462, 462, 204, - 183, 539, 204, 565, 624, 533, 625, 545, 519, 94, - 527, 106, 528, 529, 106, 106, 106, 466, 178, 434, - 761, 175, 523, 175, 175, 175, 175, 681, 175, 175, - 175, 175, 175, 175, 148, 175, 41, 433, 154, 335, - 335, 496, 335, 493, 209, 619, 491, 488, 493, 493, - 493, 617, 613, 307, 225, -8, 612, 510, 429, 518, - 474, 507, 507, 501, 501, 535, 506, 507, 507, 507, - 507, 507, 672, 672, 501, 540, 501, 535, 662, 501, - 506, 501, 501, 507, 501, 672, 506, 58, 333, 227, - 250, 506, 348, 552, 507, 548, 548, 353, 501, 119, - 501, 37, 553, 672, 672, 553, 140, 506, 166, 580, - 575, 541, 521, 179, 475, 475, 291, 541, 506, 475, - 409, 49, 540, 276, 475, 34, 716, 713, 453, 712, - 663, 711, 689, 710, 558, 530, 531, 700, 696, 707, - 664, 668, 424, 566, 342, 410, 525, 487, 673, 528, - 526, 484, 484, 484, 487, 676, 484, 484, 484, 484, - 484, 484, 484, 484, 781, 522, 536, 420, 557, 550, - 442, 611, 524, 566, 566, 633, 780, 768, 500, 681, - 751, 705, 578, 445, 759, 695, 661, 564, 563, 694, - 758, 743, 614, 342, 742, 635, 489, 636, 566, 637, - 484, 678, 680, 787, 786, 675, 785, 764, 757, 559, - 640, 505, 784, 641, 739, 623, 622, 577, 763, 734, - 756, 642, 754, 643, 574, 537, 766, 532, 687, 691, - 621, 644, 645, 654, 632, 631, 704, 551, 762, 543, - 760, 765, 582, 589, 460, 630, 609, 477, 482, 607, - 701, 498, 494, 606, 603, 738, 629, 692, 597, 627, - 752, 544, 526, 515, 546, 542, 534, 620, 753, 492, - 596, 594, 593, 591, 626, 583, 0, 0, 0, 0, + 0, 221, 297, 367, 437, 277, 108, 607, -2, -2, + -73, -2, -2, 613, 544, 544, 742, 544, 710, 659, + 784, 784, 784, 207, 205, 419, 419, 453, 295, 419, + 453, 132, 397, 358, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, 155, 155, 359, + 261, 150, 750, 735, 748, 753, 754, 749, 734, 213, + 669, 670, 541, 643, 674, 675, 681, 747, 728, 752, + 741, 560, 560, 560, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 560, 560, 560, 560, 73, 69, 56, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 356, 356, 356, 156, 209, 149, 199, 351, 142, 27, + 889, 889, 889, 889, 889, -16, -16, -16, -16, 623, + 623, 283, 51, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 219, 450, 454, 454, + 346, 346, 346, 346, 171, 208, 37, 217, 401, 498, + 501, 300, 300, 424, 92, 111, 172, 172, 172, 341, + 534, 519, 519, 519, 519, 134, 134, 519, 519, 169, + 79, 330, 351, 351, 357, 351, 351, 351, 444, 444, + 444, 158, 312, 536, 158, 516, 633, 539, 622, 551, + 606, 266, 520, 220, 521, 558, 220, 220, 220, 407, + 432, 439, 783, 155, 553, 155, 155, 155, 155, 700, + 155, 155, 155, 155, 155, 155, 361, 155, 74, 409, + 359, 166, 166, 531, 166, 522, 369, 624, 343, 279, + 522, 522, 522, 620, 617, 251, 227, 114, 616, 374, + 417, 411, 257, 507, 507, 506, 506, 502, 540, 507, + 507, 507, 507, 507, 688, 688, 506, 538, 506, 502, + 632, 506, 540, 506, 506, 507, 506, 688, 540, 141, + 385, 253, 281, 540, 408, 524, 507, 515, 515, 467, + 506, 146, 506, 50, 526, 688, 688, 526, 183, 540, + 242, 579, 575, 518, 572, 246, 542, 542, 322, 518, + 540, 542, 488, 138, 538, 318, 542, 11, 730, 729, + 537, 727, 684, 726, 703, 724, 571, 517, 548, 713, + 712, 722, 685, 687, 394, 570, 275, 436, 554, 512, + 689, 521, 508, 511, 511, 511, 512, 694, 511, 511, + 511, 511, 511, 511, 511, 511, 740, 549, 533, 442, + 561, 552, 446, 608, 523, 570, 570, 642, 791, 790, + 505, 700, 760, 720, 578, 510, 779, 711, 683, 569, + 565, 709, 778, 759, 619, 275, 758, 647, 513, 649, + 570, 651, 511, 697, 698, 795, 794, 693, 793, 787, + 766, 563, 653, 509, 792, 654, 757, 631, 628, 577, + 786, 755, 764, 656, 763, 662, 574, 546, 789, 527, + 701, 705, 627, 666, 667, 672, 640, 639, 716, 503, + 785, 547, 782, 788, 580, 583, 514, 638, 602, 529, + 535, 600, 715, 545, 504, 598, 593, 756, 637, 706, + 590, 636, 761, 530, 508, 525, 550, 528, 532, 626, + 762, 543, 589, 588, 586, 585, 635, 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 134, 134, 134, 134, -2, -2, -2, - 0, 0, -2, 0, 0, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, -3, 561, 561, -3, 561, - 561, 561, 561, 561, 561, 118, 118, 118, 118, 204, - 204, 204, -84, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, -84, 118, 118, - 204, 204, 204, 204, 204, 204, 204, 204, 221, 221, - 221, 106, 106, 204, 0, 0, 0, 0, 0, 507, - 221, 204, 204, 204, 204, 0, 0, 204, 204, 540, - 106, 0, 0, 0, 0, 0, 0, 0, 507, 507, - 507, 0, 507, 221, 0, 335, 175, 461, 461, 461, - 461, 0, 507, 0, 540, 507, 0, 0, 0, 0, - 0, 0, 506, 0, 672, 0, 0, 0, 0, 501, - 0, 0, 0, 0, 0, 0, 0, 0, 540, 0, - 0, 0, 0, 540, 0, 484, 0, 500, 0, 0, - 484, 484, 484, 500, 500, 0, 0, 0, 500 + 0, 0, 0, 0, 0, 135, 135, 135, 135, -2, + -2, -2, 0, 0, -2, 0, 0, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 560, 560, 560, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 560, 560, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 560, 560, 560, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 560, 560, 560, 560, 560, -3, 560, + 560, -3, 560, 560, 560, 560, 560, 560, 560, 172, + 172, 172, 172, 158, 158, 158, -67, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, -67, 172, 172, 158, 158, 158, 158, 158, 158, + 158, 158, 134, 134, 134, 220, 220, 158, 0, 0, + 0, 0, 0, 507, 134, 158, 158, 158, 158, 0, + 0, 158, 158, 538, 220, 0, 0, 0, 0, 0, + 0, 0, 507, 507, 507, 0, 507, 134, 0, 166, + 155, 344, 344, 344, 344, 0, 507, 0, 538, 507, + 0, 0, 0, 0, 0, 0, 540, 0, 688, 0, + 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, + 0, 0, 538, 0, 0, 0, 0, 538, 0, 511, + 0, 505, 0, 0, 511, 511, 511, 505, 505, 0, + 0, 0, 505 ); protected $actionDefault = array( 3,32767,32767,32767,32767,32767,32767,32767,32767, 91, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767, 93, 505, 505, 495,32767, 505, - 495,32767,32767,32767, 313, 313, 313,32767, 450, 450, - 450, 450, 450, 450, 450,32767,32767,32767,32767,32767, - 392,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767, 93, 506, 506, 496,32767, 506, + 496,32767,32767,32767, 313, 313, 313,32767, 451, 451, + 451, 451, 451, 451, 451,32767,32767,32767,32767,32767, + 393,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 91, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 91,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 502,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767, 503,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 375, 376, 378, 379, 312, 451, 258, 501, 311, 129, - 269, 260, 210, 242, 309, 133, 340, 393, 342, 391, - 395, 341, 318, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 316, 317, 394, 372, 371, - 370, 338, 339, 315, 343, 345, 315, 344, 361, 362, - 359, 360, 363, 364, 365, 366, 367,32767,32767,32767, + 32767, 376, 377, 379, 380, 312, 452, 258, 502, 311, + 129, 269, 260, 210, 242, 309, 133, 341, 394, 343, + 392, 396, 342, 318, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 316, 317, 395, + 373, 372, 371, 339, 315, 340, 344, 315, 346, 345, + 362, 363, 360, 361, 364, 365, 366, 367, 368,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 93,32767,32767,32767, 292, 352, 353, 249, 249, - 249, 249,32767, 249,32767, 249,32767,32767,32767,32767, - 32767,32767, 444, 369, 347, 348, 346,32767, 422,32767, - 32767,32767,32767,32767, 424,32767, 91,32767,32767,32767, - 335, 337, 416, 504, 319, 503,32767,32767, 93,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 419, - 32767,32767, 410, 91,32767,32767, 91, 173, 229, 231, - 178,32767, 427,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 93,32767,32767,32767, 292, 353, 354, + 249, 249, 249, 249,32767, 249,32767, 249,32767,32767, + 32767,32767,32767,32767, 445, 370, 348, 349, 347,32767, + 423,32767,32767,32767,32767,32767, 425,32767, 91,32767, + 32767,32767, 336, 338, 417, 505, 319, 504,32767,32767, + 93,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767, 420,32767,32767, 411, 91,32767,32767, 91, 173, + 229, 231, 178,32767, 428,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 357, 512,32767, 452,32767, 349, 350, - 351,32767,32767, 452, 452, 452,32767, 452,32767, 452, - 452,32767,32767,32767,32767,32767, 178,32767,32767,32767, - 32767, 93, 425, 425, 91, 91, 91, 91, 420,32767, - 178,32767,32767,32767,32767,32767, 178, 90, 90, 90, - 90, 178, 90, 193,32767, 191, 191, 90,32767, 92, - 32767, 92, 195,32767, 466, 195, 90, 178, 90, 215, - 215, 401, 180, 92, 251, 251, 92, 401, 178, 251, - 90, 90,32767, 90, 251,32767,32767,32767, 84,32767, + 32767,32767,32767,32767,32767, 358, 513,32767, 453,32767, + 350, 351, 352,32767,32767, 453, 453, 453,32767, 453, + 32767, 453, 453,32767,32767,32767,32767,32767, 178,32767, + 32767,32767,32767, 93, 426, 426, 91, 91, 91, 91, + 421,32767, 178,32767,32767,32767,32767,32767, 178, 90, + 90, 90, 90, 178, 90, 193,32767, 191, 191, 90, + 32767, 92,32767, 92, 195,32767, 467, 195, 90, 178, + 90, 215, 215, 402, 180, 92, 251, 251, 92, 402, + 178, 251, 90, 90,32767, 90, 251,32767,32767,32767, + 84,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 413,32767, 433,32767, 446, + 465, 411,32767, 356, 357, 359,32767, 455, 381, 382, + 383, 384, 385, 386, 387, 389,32767, 416,32767,32767, + 86, 120, 268,32767, 511, 86, 414,32767, 511,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 86, + 86,32767,32767,32767,32767, 492,32767, 512,32767, 453, + 415,32767, 355, 429, 472,32767,32767, 454,32767,32767, + 32767, 86,32767,32767,32767,32767,32767,32767,32767,32767, + 32767, 433,32767,32767,32767,32767,32767,32767, 453,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 412,32767, 432,32767, 445, 464, 410, - 32767, 355, 356, 358,32767, 454, 380, 381, 382, 383, - 384, 385, 386, 388,32767, 415,32767,32767, 86, 120, - 268,32767, 510, 86, 413,32767, 510,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 86, 86,32767, - 32767,32767,32767, 491,32767, 511,32767, 452, 414,32767, - 354, 428, 471,32767,32767, 453,32767,32767,32767, 86, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 432, - 32767,32767,32767,32767,32767,32767, 452,32767,32767,32767, + 32767,32767,32767, 453,32767,32767, 241,32767,32767, 308, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 452,32767,32767, 241,32767,32767, 308,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 84, 60,32767, 288,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 135, 135, 3, 271, - 3, 271, 135, 135, 135, 271, 271, 135, 135, 135, - 135, 135, 135, 135, 168, 223, 226, 215, 215, 280, - 135, 135 + 32767,32767,32767, 84, 60,32767, 288,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 135, 135, + 3, 271, 3, 271, 135, 135, 135, 271, 271, 135, + 135, 135, 135, 135, 135, 135, 168, 223, 226, 215, + 215, 280, 135, 135 ); protected $goto = array( - 166, 166, 140, 140, 148, 149, 140, 148, 151, 182, - 167, 164, 164, 164, 164, 165, 165, 165, 165, 165, - 165, 165, 160, 161, 162, 163, 179, 177, 180, 431, - 432, 323, 433, 436, 437, 438, 439, 440, 441, 442, - 443, 903, 137, 141, 142, 143, 144, 145, 139, 146, - 147, 150, 176, 178, 181, 198, 201, 202, 204, 205, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 236, 237, 254, 255, 256, 328, 329, 330, 480, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 152, 197, 153, 168, 169, 170, 199, - 171, 154, 155, 156, 172, 157, 200, 138, 158, 173, - 174, 175, 159, 543, 203, 448, 552, 203, 744, 305, - 309, 460, 483, 484, 486, 264, 1089, 1089, 320, 989, - 248, 678, 322, 482, 453, 453, 453, 283, 453, 481, - 871, 555, 739, 1089, 740, 537, 869, 473, 468, 677, - 473, 453, 434, 434, 434, 286, 434, 434, 434, 434, - 434, 434, 434, 434, 434, 434, 434, 434, 434, 435, - 435, 435, 713, 435, 435, 435, 435, 435, 435, 435, - 435, 435, 435, 435, 435, 435, 1088, 1088, 665, 494, - 503, 479, 990, 493, 514, 515, 500, 502, 548, 453, - 453, 699, 786, 1088, 693, 467, 489, 453, 453, 453, - 991, 1045, 466, 978, 766, 839, 979, 576, 505, 507, - 1091, 454, 519, 536, 539, 814, 546, 554, 810, 499, - 499, 1014, 478, 1014, 1014, 1014, 1014, 1014, 1014, 1014, - 1014, 1014, 1014, 1014, 1014, 1014, 708, 696, 843, 474, - 847, 778, 317, 551, 1081, 789, 676, 497, 518, 1059, - 1060, 1069, 878, 303, 819, 680, 779, 803, 784, 784, - 782, 784, 575, 520, 446, 812, 807, 879, 886, 712, - 471, 985, 685, 950, 735, 730, 731, 745, 822, 686, - 732, 683, 733, 734, 684, 834, 738, 3, 4, 445, - 704, 345, 1058, 290, 335, 521, 339, 445, 326, 326, - 270, 271, 273, 477, 333, 274, 334, 275, 337, 506, - 340, 827, 700, 313, 780, 780, 780, 780, 284, 697, - 774, 781, 580, 704, 511, 844, 704, 817, 817, 1076, - 525, 993, 287, 288, 709, 828, 828, 828, 828, 993, - 828, 828, 828, 986, 981, 1064, 1064, 1104, 828, 848, - 888, 791, 1055, 385, 496, 399, 993, 993, 993, 993, - 1055, 0, 993, 993, 0, 0, 0, 1066, 1066, 0, - 0, 0, 450, 0, 695, 695, 752, 0, 0, 753, - 705, 705, 705, 707, 694, 0, 1051, 0, 307, 0, - 0, 0, 0, 0, 459, 0, 524, 0, 0, 469, - 0, 540, 0, 465, 0, 0, 0, 0, 0, 846, - 0, 0, 1053, 1053, 846, 392, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 450, 0, 0, 0, 447, - 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 447, 0, 463, 0, 0, 306, 0, 451, 373, 0, - 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 703, 0, 1096, 0, 0, 0, - 0, 0, 988 + 167, 167, 141, 141, 149, 150, 141, 149, 152, 183, + 168, 165, 165, 165, 165, 166, 166, 166, 166, 166, + 166, 166, 161, 162, 163, 164, 180, 178, 181, 433, + 434, 325, 435, 438, 439, 440, 441, 442, 443, 444, + 445, 905, 138, 142, 143, 144, 145, 146, 140, 147, + 148, 151, 177, 179, 182, 200, 203, 205, 206, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 238, 239, 256, 257, 258, 330, 331, 332, 482, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 153, 199, 154, 169, 170, 171, + 201, 172, 155, 156, 157, 173, 158, 202, 139, 159, + 174, 175, 176, 160, 545, 204, 450, 554, 204, 746, + 307, 311, 462, 485, 486, 488, 483, 873, 557, 680, + 992, 496, 539, 871, 484, 455, 455, 455, 288, 455, + 266, 475, 679, 701, 475, 250, 695, 322, 741, 470, + 742, 324, 455, 436, 436, 436, 285, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, + 437, 437, 437, 715, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 1091, 1091, 481, + 505, 495, 667, 993, 516, 517, 788, 1092, 1092, 841, + 455, 455, 981, 768, 1091, 982, 469, 491, 455, 455, + 455, 994, 1048, 468, 1092, 780, 319, 553, 578, 507, + 509, 1094, 456, 521, 538, 541, 816, 548, 556, 812, + 501, 501, 1017, 480, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 706, 499, 520, + 678, 502, 504, 550, 1062, 1063, 880, 3, 4, 476, + 1084, 805, 786, 786, 784, 786, 577, 682, 448, 814, + 809, 881, 1072, 305, 447, 522, 473, 953, 836, 1061, + 706, 824, 447, 706, 687, 292, 737, 732, 733, 747, + 347, 688, 734, 685, 735, 736, 686, 829, 740, 782, + 782, 782, 782, 513, 286, 776, 783, 337, 523, 341, + 702, 328, 328, 272, 273, 275, 479, 335, 276, 336, + 277, 339, 508, 342, 699, 289, 290, 315, 582, 846, + 527, 697, 697, 819, 819, 1079, 309, 707, 707, 707, + 709, 696, 461, 989, 996, 984, 850, 471, 830, 830, + 830, 830, 996, 830, 830, 830, 793, 711, 1067, 1067, + 387, 830, 890, 394, 401, 1058, 498, 0, 0, 996, + 996, 996, 996, 1058, 11, 996, 996, 0, 0, 1107, + 1069, 1069, 710, 698, 845, 0, 849, 0, 0, 754, + 0, 791, 755, 0, 0, 0, 0, 0, 0, 1054, + 821, 0, 781, 0, 452, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 888, 714, 467, 988, 0, 0, + 0, 0, 848, 0, 0, 1056, 1056, 848, 526, 0, + 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 449, 465, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 449, 0, 465, 0, 452, 308, 0, + 453, 375, 0, 377, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 705, 0, 1099, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 991 ); protected $gotoCheck = array( @@ -650,83 +656,85 @@ class Php7 extends \PhpParser\ParserAbstract 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 63, 56, 10, 8, 56, 13, 49, - 49, 49, 49, 49, 49, 134, 148, 148, 69, 92, - 134, 18, 69, 97, 10, 10, 10, 69, 10, 7, - 7, 7, 55, 148, 55, 7, 7, 85, 10, 17, - 85, 10, 135, 135, 135, 80, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 137, - 137, 137, 36, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 147, 147, 5, 15, - 73, 2, 92, 2, 73, 73, 68, 68, 68, 10, - 10, 15, 40, 147, 15, 10, 10, 10, 10, 10, - 92, 92, 39, 67, 67, 94, 67, 39, 39, 39, - 147, 10, 39, 39, 39, 39, 39, 39, 39, 86, - 86, 86, 10, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 14, 14, 14, 136, - 14, 76, 76, 76, 146, 14, 16, 46, 46, 141, - 141, 143, 111, 52, 14, 13, 14, 16, 16, 16, - 16, 16, 16, 54, 16, 16, 16, 111, 14, 14, - 53, 14, 13, 118, 13, 13, 13, 13, 88, 13, - 13, 13, 13, 13, 13, 90, 13, 37, 37, 75, - 26, 89, 139, 20, 56, 56, 56, 75, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 91, 30, 19, 75, 75, 75, 75, 11, 28, - 75, 75, 82, 26, 24, 96, 26, 85, 85, 85, - 23, 63, 80, 80, 32, 63, 63, 63, 63, 63, - 63, 63, 63, 127, 124, 8, 8, 12, 63, 99, - 114, 79, 97, 71, 72, 122, 63, 63, 63, 63, - 97, -1, 63, 63, -1, -1, -1, 97, 97, -1, - -1, -1, 12, -1, 26, 26, 63, -1, -1, 63, - 26, 26, 26, 26, 26, -1, 97, -1, 65, -1, - -1, -1, -1, -1, 65, -1, 12, -1, -1, 65, - -1, 12, -1, 8, -1, -1, -1, -1, -1, 97, - -1, -1, 97, 97, 97, 65, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, - -1, -1, -1, -1, -1, 12, -1, -1, -1, 8, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 8, -1, 8, -1, -1, 8, -1, 8, 8, -1, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, 8, -1, -1, -1, - -1, -1, 12 + 33, 33, 33, 33, 63, 56, 10, 8, 56, 13, + 49, 49, 49, 49, 49, 49, 7, 7, 7, 18, + 92, 15, 7, 7, 97, 10, 10, 10, 80, 10, + 134, 85, 17, 15, 85, 134, 15, 69, 55, 10, + 55, 69, 10, 135, 135, 135, 69, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 137, 137, 137, 36, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 147, 147, 2, + 73, 2, 5, 92, 73, 73, 40, 148, 148, 94, + 10, 10, 67, 67, 147, 67, 10, 10, 10, 10, + 10, 92, 92, 39, 148, 76, 76, 76, 39, 39, + 39, 147, 10, 39, 39, 39, 39, 39, 39, 39, + 86, 86, 86, 10, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 26, 46, 46, + 16, 68, 68, 68, 141, 141, 111, 37, 37, 136, + 146, 16, 16, 16, 16, 16, 16, 13, 16, 16, + 16, 111, 143, 52, 75, 54, 53, 118, 90, 139, + 26, 88, 75, 26, 13, 20, 13, 13, 13, 13, + 89, 13, 13, 13, 13, 13, 13, 91, 13, 75, + 75, 75, 75, 24, 11, 75, 75, 56, 56, 56, + 30, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 28, 80, 80, 19, 82, 96, + 23, 26, 26, 85, 85, 85, 65, 26, 26, 26, + 26, 26, 65, 127, 63, 124, 99, 65, 63, 63, + 63, 63, 63, 63, 63, 63, 79, 32, 8, 8, + 71, 63, 114, 65, 122, 97, 72, -1, -1, 63, + 63, 63, 63, 97, 65, 63, 63, -1, -1, 12, + 97, 97, 14, 14, 14, -1, 14, -1, -1, 63, + -1, 14, 63, -1, -1, -1, -1, -1, -1, 97, + 14, -1, 14, -1, 12, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 14, 14, 8, 14, -1, -1, + -1, -1, 97, -1, -1, 97, 97, 97, 12, -1, + -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8, 8, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 8, -1, 8, -1, 12, 8, -1, + 8, 8, -1, 8, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, 8, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 12 ); protected $gotoBase = array( - 0, 0, -367, 0, 0, 178, 0, 134, 106, 0, - -142, 48, 90, -19, -122, -192, 254, 147, 129, 33, - 46, 0, 0, -2, 57, 0, 43, 0, 36, 0, - 44, 0, -10, -23, 0, 0, 163, -283, 0, -345, - 183, 0, 0, 0, 0, 0, 222, 0, 0, 80, - 0, 0, 226, 58, 55, 127, 87, 0, 0, 0, - 0, 0, 0, 107, 0, 38, 0, -106, -43, -267, - 0, -13, -21, -371, 0, 65, -9, 0, 0, 5, - -235, 0, 14, 0, 0, 120, 12, 0, 45, 56, - 51, 70, -173, 0, 191, 0, 39, 128, 0, 4, + 0, 0, -371, 0, 0, 182, 0, 121, 107, 0, + -143, 22, 110, -19, 12, -252, 248, 140, 127, 35, + 26, 0, 0, -14, 24, 0, -12, 0, 29, 0, + 30, 0, 1, -23, 0, 0, 164, -325, 0, -346, + 177, 0, 0, 0, 0, 0, 213, 0, 0, 81, + 0, 0, 236, 52, 55, 133, 88, 0, 0, 0, + 0, 0, 0, 108, 0, -26, 0, -119, 10, -250, + 0, -18, -21, -373, 0, 38, -47, 0, 0, -2, + -254, 0, 8, 0, 0, 114, 11, 0, 36, 43, + 32, 44, -174, 0, 175, 0, 31, 129, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 3, 0, 0, 0, 41, 0, - 0, 0, -32, 0, 1, 0, 0, 7, 0, 0, - 0, 0, 0, 0, -133, -65, 223, -48, 0, 52, - 0, -35, 0, 231, 0, 0, 225, -61, -121, 0, + 0, 34, 0, 0, 3, 0, 0, 0, 33, 0, + 0, 0, -35, 0, -10, 0, 0, -5, 0, 0, + 0, 0, 0, 0, -120, -66, 233, -49, 0, 27, + 0, -42, 0, 242, 0, 0, 231, -62, -52, 0, 0 ); protected $gotoDefault = array( - -32768, 405, 583, 2, 584, 655, 663, 528, 422, 553, - 423, 449, 324, 737, 892, 757, 719, 720, 721, 310, - 350, 301, 308, 512, 501, 396, 706, 369, 698, 393, - 701, 368, 710, 136, 529, 401, 714, 1, 716, 455, - 748, 298, 724, 299, 532, 726, 462, 728, 729, 304, - 311, 312, 896, 470, 498, 741, 206, 464, 742, 297, - 743, 751, 321, 302, 379, 402, 316, 873, 488, 319, - 364, 382, 495, 490, 472, 1000, 776, 388, 377, 790, - 285, 798, 581, 806, 809, 424, 425, 386, 821, 387, - 832, 826, 1008, 381, 838, 370, 845, 1040, 372, 849, - 220, 852, 245, 526, 338, 857, 858, 6, 863, 544, - 545, 7, 235, 400, 887, 527, 367, 902, 353, 969, - 971, 457, 394, 982, 376, 535, 403, 987, 1044, 365, - 426, 383, 272, 289, 247, 427, 444, 252, 428, 384, - 1047, 1054, 327, 1070, 269, 29, 1082, 1090, 281, 476, - 492 + -32768, 407, 585, 2, 586, 657, 665, 530, 424, 555, + 425, 451, 326, 739, 894, 759, 721, 722, 723, 312, + 352, 303, 310, 514, 503, 398, 708, 371, 700, 395, + 703, 370, 712, 137, 531, 403, 716, 1, 718, 457, + 750, 300, 726, 301, 534, 728, 464, 730, 731, 306, + 313, 314, 898, 472, 500, 743, 207, 466, 744, 299, + 745, 753, 323, 304, 381, 404, 318, 875, 490, 321, + 366, 384, 497, 492, 474, 1003, 778, 390, 379, 792, + 287, 800, 583, 808, 811, 426, 427, 388, 823, 389, + 834, 828, 1011, 383, 840, 372, 847, 1043, 374, 851, + 222, 854, 247, 528, 340, 859, 860, 6, 865, 546, + 547, 7, 237, 402, 889, 529, 369, 904, 355, 972, + 974, 459, 396, 985, 378, 537, 405, 990, 1047, 367, + 428, 385, 274, 291, 249, 429, 446, 254, 430, 386, + 1050, 1057, 329, 1073, 271, 29, 1085, 1093, 283, 478, + 494 ); protected $ruleToNonTerminal = array( @@ -769,20 +777,20 @@ class Php7 extends \PhpParser\ParserAbstract 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 123, 117, - 117, 122, 122, 125, 126, 126, 127, 128, 128, 128, - 75, 75, 63, 63, 63, 118, 118, 118, 130, 130, - 119, 119, 121, 121, 121, 124, 124, 135, 135, 135, - 86, 137, 137, 137, 120, 120, 120, 120, 120, 120, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 123, + 117, 117, 122, 122, 125, 126, 126, 127, 128, 128, + 128, 75, 75, 63, 63, 63, 118, 118, 118, 130, + 130, 119, 119, 121, 121, 121, 124, 124, 135, 135, + 135, 86, 137, 137, 137, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 49, 49, 133, 133, 133, 129, 129, 129, 138, 138, - 138, 138, 138, 138, 56, 56, 56, 97, 97, 97, - 97, 141, 140, 132, 132, 132, 132, 132, 132, 131, - 131, 131, 139, 139, 139, 139, 85, 142, 142, 143, - 143, 143, 143, 143, 143, 143, 136, 145, 145, 144, - 144, 146, 146, 146, 146, 146, 134, 134, 134, 134, - 148, 149, 147, 147, 147, 147, 147, 147, 147, 150, - 150, 150, 150 + 120, 49, 49, 133, 133, 133, 129, 129, 129, 138, + 138, 138, 138, 138, 138, 56, 56, 56, 97, 97, + 97, 97, 141, 140, 132, 132, 132, 132, 132, 132, + 131, 131, 131, 139, 139, 139, 139, 85, 142, 142, + 143, 143, 143, 143, 143, 143, 143, 136, 145, 145, + 144, 144, 146, 146, 146, 146, 146, 134, 134, 134, + 134, 148, 149, 147, 147, 147, 147, 147, 147, 147, + 150, 150, 150, 150 ); protected $ruleToLength = array( @@ -819,26 +827,26 @@ class Php7 extends \PhpParser\ParserAbstract 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 3, 2, 1, 2, 4, 2, 8, 9, 7, 3, - 2, 0, 4, 2, 1, 3, 2, 2, 2, 4, - 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, - 0, 3, 0, 1, 1, 0, 1, 1, 3, 3, - 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 3, - 0, 1, 1, 3, 1, 1, 3, 1, 1, 4, - 4, 4, 1, 4, 1, 1, 3, 1, 4, 2, - 2, 1, 3, 1, 4, 4, 3, 3, 3, 1, - 3, 1, 1, 3, 1, 1, 4, 3, 1, 1, - 2, 1, 3, 4, 3, 0, 1, 1, 1, 3, - 1, 3, 1, 4, 2, 0, 2, 2, 1, 2, - 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, - 1, 2, 1 + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 3, 2, 1, 2, 4, 2, 8, 9, 7, + 3, 2, 0, 4, 2, 1, 3, 2, 2, 2, + 4, 1, 1, 1, 2, 3, 1, 1, 1, 1, + 1, 0, 3, 0, 1, 1, 0, 1, 1, 3, + 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, + 3, 0, 1, 1, 3, 1, 1, 3, 1, 1, + 4, 4, 4, 1, 4, 1, 1, 3, 1, 4, + 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, + 1, 3, 1, 1, 3, 1, 1, 4, 3, 1, + 1, 2, 1, 3, 4, 3, 0, 1, 1, 1, + 3, 1, 3, 1, 4, 2, 0, 2, 2, 1, + 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, + 1, 1, 2, 1 ); protected function initReduceCallbacks() { @@ -1867,391 +1875,391 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 334 => function ($stackPos) { - $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 335 => function ($stackPos) { - $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 336 => function ($stackPos) { - $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 337 => function ($stackPos) { - $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 338 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 339 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 340 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 341 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 342 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 343 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 344 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 345 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 346 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 347 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 348 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 349 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 350 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 351 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 352 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 353 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 354 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 355 => function ($stackPos) { - $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 356 => function ($stackPos) { - $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 357 => function ($stackPos) { - $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 358 => function ($stackPos) { - $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 359 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 360 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 361 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 362 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 363 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 364 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 365 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 366 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 367 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 368 => function ($stackPos) { - $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 369 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 370 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 371 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, 372 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 373 => function ($stackPos) { - $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 374 => function ($stackPos) { - $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 375 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 376 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 377 => function ($stackPos) { - $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 378 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 379 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 380 => function ($stackPos) { - $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 381 => function ($stackPos) { + $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 382 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs); }, - 382 => function ($stackPos) { + 383 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 383 => function ($stackPos) { + 384 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 384 => function ($stackPos) { + 385 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 385 => function ($stackPos) { + 386 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 386 => function ($stackPos) { + 387 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 387 => function ($stackPos) { + 388 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs); }, - 388 => function ($stackPos) { + 389 => function ($stackPos) { $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 389 => function ($stackPos) { + 390 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 390 => function ($stackPos) { + 391 => function ($stackPos) { $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 391 => function ($stackPos) { + 392 => function ($stackPos) { $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 392 => function ($stackPos) { + 393 => function ($stackPos) { $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 393 => function ($stackPos) { + 394 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 394 => function ($stackPos) { + 395 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, - 395 => function ($stackPos) { + 396 => function ($stackPos) { $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 396 => function ($stackPos) { + 397 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'uses' => $this->semStack[$stackPos-(8-6)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); }, - 397 => function ($stackPos) { + 398 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 398 => function ($stackPos) { + 399 => function ($stackPos) { $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]); $this->checkClass($this->semValue[0], -1); }, - 399 => function ($stackPos) { + 400 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 400 => function ($stackPos) { + 401 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 401 => function ($stackPos) { + 402 => function ($stackPos) { $this->semValue = array(); }, - 402 => function ($stackPos) { + 403 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(4-3)]; }, - 403 => function ($stackPos) { + 404 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(2-1)]; }, - 404 => function ($stackPos) { + 405 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, - 405 => function ($stackPos) { + 406 => function ($stackPos) { $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, - 406 => function ($stackPos) { - $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, 407 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 408 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 409 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 410 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 411 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 412 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, + 412 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, 413 => function ($stackPos) { - $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 414 => function ($stackPos) { - $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 415 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 416 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 417 => function ($stackPos) { - $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 418 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; }, 419 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 420 => function ($stackPos) { - $this->semValue = null; - }, - 421 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; - }, - 422 => function ($stackPos) { - $this->semValue = array(); - }, - 423 => function ($stackPos) { - $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes)); - }, - 424 => function ($stackPos) { - foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 425 => function ($stackPos) { - $this->semValue = array(); - }, - 426 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 421 => function ($stackPos) { + $this->semValue = null; + }, + 422 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, + 423 => function ($stackPos) { + $this->semValue = array(); + }, + 424 => function ($stackPos) { + $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes)); + }, + 425 => function ($stackPos) { + foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 426 => function ($stackPos) { + $this->semValue = array(); + }, 427 => function ($stackPos) { - $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 428 => function ($stackPos) { - $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 429 => function ($stackPos) { - $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 430 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2; + }, + 431 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs); }, - 431 => function ($stackPos) { + 432 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs); }, - 432 => function ($stackPos) { + 433 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 433 => function ($stackPos) { + 434 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED); $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)]), $attrs); }, - 434 => function ($stackPos) { + 435 => function ($stackPos) { $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 435 => function ($stackPos) { + 436 => function ($stackPos) { $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 436 => function ($stackPos) { + 437 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 437 => function ($stackPos) { + 438 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 438 => function ($stackPos) { + 439 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 439 => function ($stackPos) { + 440 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 440 => function ($stackPos) { + 441 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 441 => function ($stackPos) { + 442 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 442 => function ($stackPos) { + 443 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 443 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, 444 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 445 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 446 => function ($stackPos) { - $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 447 => function ($stackPos) { - $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true); + $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); }, 448 => function ($stackPos) { + $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true); + }, + 449 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs); }, - 449 => function ($stackPos) { + 450 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); }, - 450 => function ($stackPos) { - $this->semValue = null; - }, 451 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = null; }, 452 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 453 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 454 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 455 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 456 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; - }, - 457 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 457 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, 458 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 459 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 460 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); @@ -2260,186 +2268,189 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 462 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 463 => function ($stackPos) { - $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 464 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 465 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 466 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 467 => function ($stackPos) { - $this->semValue = substr($this->semStack[$stackPos-(1-1)], 1); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 468 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-3)]; + $this->semValue = substr($this->semStack[$stackPos-(1-1)], 1); }, 469 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(4-3)]; }, 470 => function ($stackPos) { - $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 471 => function ($stackPos) { - $var = $this->semStack[$stackPos-(1-1)]; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var; + $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2; }, 472 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $var = $this->semStack[$stackPos-(1-1)]; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var; }, 473 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 474 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 475 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 476 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 477 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 478 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 479 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 480 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; - }, - 481 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 482 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 483 => function ($stackPos) { + 481 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(3-2)]; }, - 484 => function ($stackPos) { + 482 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, + 483 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 484 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, 485 => function ($stackPos) { - $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 486 => function ($stackPos) { - $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; }, 487 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 488 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 489 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 490 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 491 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 492 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 493 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 494 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 495 => function ($stackPos) { - $this->semValue = null; - }, - 496 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue); - }, - 497 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos]; - }, - 498 => function ($stackPos) { - /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */ - }, - 499 => function ($stackPos) { $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, - 500 => function ($stackPos) { + 489 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, - 501 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 502 => function ($stackPos) { + 490 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 503 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 504 => function ($stackPos) { + 491 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 505 => function ($stackPos) { + 492 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 493 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 494 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 495 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 496 => function ($stackPos) { $this->semValue = null; }, + 497 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue); + }, + 498 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos]; + }, + 499 => function ($stackPos) { + /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */ + }, + 500 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 501 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 502 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 503 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 504 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 505 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, 506 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = null; }, 507 => function ($stackPos) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 508 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 509 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 510 => function ($stackPos) { - $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); }, 511 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 512 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 513 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 514 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 515 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 516 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 517 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 518 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, 519 => function ($stackPos) { - $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 520 => function ($stackPos) { - $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 521 => function ($stackPos) { - $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 522 => function ($stackPos) { + $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 523 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, ]; diff --git a/lib/PhpParser/Parser/Tokens.php b/lib/PhpParser/Parser/Tokens.php index 861663f..3fb3fb4 100644 --- a/lib/PhpParser/Parser/Tokens.php +++ b/lib/PhpParser/Parser/Tokens.php @@ -30,115 +30,116 @@ final class Tokens const T_SL_EQUAL = 278; const T_SR_EQUAL = 279; const T_POW_EQUAL = 280; - const T_COALESCE = 281; - const T_BOOLEAN_OR = 282; - const T_BOOLEAN_AND = 283; - const T_IS_EQUAL = 284; - const T_IS_NOT_EQUAL = 285; - const T_IS_IDENTICAL = 286; - const T_IS_NOT_IDENTICAL = 287; - const T_SPACESHIP = 288; - const T_IS_SMALLER_OR_EQUAL = 289; - const T_IS_GREATER_OR_EQUAL = 290; - const T_SL = 291; - const T_SR = 292; - const T_INSTANCEOF = 293; - const T_INC = 294; - const T_DEC = 295; - const T_INT_CAST = 296; - const T_DOUBLE_CAST = 297; - const T_STRING_CAST = 298; - const T_ARRAY_CAST = 299; - const T_OBJECT_CAST = 300; - const T_BOOL_CAST = 301; - const T_UNSET_CAST = 302; - const T_POW = 303; - const T_NEW = 304; - const T_CLONE = 305; - const T_EXIT = 306; - const T_IF = 307; - const T_ELSEIF = 308; - const T_ELSE = 309; - const T_ENDIF = 310; - const T_LNUMBER = 311; - const T_DNUMBER = 312; - const T_STRING = 313; - const T_STRING_VARNAME = 314; - const T_VARIABLE = 315; - const T_NUM_STRING = 316; - const T_INLINE_HTML = 317; - const T_CHARACTER = 318; - const T_BAD_CHARACTER = 319; - const T_ENCAPSED_AND_WHITESPACE = 320; - const T_CONSTANT_ENCAPSED_STRING = 321; - const T_ECHO = 322; - const T_DO = 323; - const T_WHILE = 324; - const T_ENDWHILE = 325; - const T_FOR = 326; - const T_ENDFOR = 327; - const T_FOREACH = 328; - const T_ENDFOREACH = 329; - const T_DECLARE = 330; - const T_ENDDECLARE = 331; - const T_AS = 332; - const T_SWITCH = 333; - const T_ENDSWITCH = 334; - const T_CASE = 335; - const T_DEFAULT = 336; - const T_BREAK = 337; - const T_CONTINUE = 338; - const T_GOTO = 339; - const T_FUNCTION = 340; - const T_CONST = 341; - const T_RETURN = 342; - const T_TRY = 343; - const T_CATCH = 344; - const T_FINALLY = 345; - const T_THROW = 346; - const T_USE = 347; - const T_INSTEADOF = 348; - const T_GLOBAL = 349; - const T_STATIC = 350; - const T_ABSTRACT = 351; - const T_FINAL = 352; - const T_PRIVATE = 353; - const T_PROTECTED = 354; - const T_PUBLIC = 355; - const T_VAR = 356; - const T_UNSET = 357; - const T_ISSET = 358; - const T_EMPTY = 359; - const T_HALT_COMPILER = 360; - const T_CLASS = 361; - const T_TRAIT = 362; - const T_INTERFACE = 363; - const T_EXTENDS = 364; - const T_IMPLEMENTS = 365; - const T_OBJECT_OPERATOR = 366; - const T_LIST = 367; - const T_ARRAY = 368; - const T_CALLABLE = 369; - const T_CLASS_C = 370; - const T_TRAIT_C = 371; - const T_METHOD_C = 372; - const T_FUNC_C = 373; - const T_LINE = 374; - const T_FILE = 375; - const T_COMMENT = 376; - const T_DOC_COMMENT = 377; - const T_OPEN_TAG = 378; - const T_OPEN_TAG_WITH_ECHO = 379; - const T_CLOSE_TAG = 380; - const T_WHITESPACE = 381; - const T_START_HEREDOC = 382; - const T_END_HEREDOC = 383; - const T_DOLLAR_OPEN_CURLY_BRACES = 384; - const T_CURLY_OPEN = 385; - const T_PAAMAYIM_NEKUDOTAYIM = 386; - const T_NAMESPACE = 387; - const T_NS_C = 388; - const T_DIR = 389; - const T_NS_SEPARATOR = 390; - const T_ELLIPSIS = 391; + const T_COALESCE_EQUAL = 281; + const T_COALESCE = 282; + const T_BOOLEAN_OR = 283; + const T_BOOLEAN_AND = 284; + const T_IS_EQUAL = 285; + const T_IS_NOT_EQUAL = 286; + const T_IS_IDENTICAL = 287; + const T_IS_NOT_IDENTICAL = 288; + const T_SPACESHIP = 289; + const T_IS_SMALLER_OR_EQUAL = 290; + const T_IS_GREATER_OR_EQUAL = 291; + const T_SL = 292; + const T_SR = 293; + const T_INSTANCEOF = 294; + const T_INC = 295; + const T_DEC = 296; + const T_INT_CAST = 297; + const T_DOUBLE_CAST = 298; + const T_STRING_CAST = 299; + const T_ARRAY_CAST = 300; + const T_OBJECT_CAST = 301; + const T_BOOL_CAST = 302; + const T_UNSET_CAST = 303; + const T_POW = 304; + const T_NEW = 305; + const T_CLONE = 306; + const T_EXIT = 307; + const T_IF = 308; + const T_ELSEIF = 309; + const T_ELSE = 310; + const T_ENDIF = 311; + const T_LNUMBER = 312; + const T_DNUMBER = 313; + const T_STRING = 314; + const T_STRING_VARNAME = 315; + const T_VARIABLE = 316; + const T_NUM_STRING = 317; + const T_INLINE_HTML = 318; + const T_CHARACTER = 319; + const T_BAD_CHARACTER = 320; + const T_ENCAPSED_AND_WHITESPACE = 321; + const T_CONSTANT_ENCAPSED_STRING = 322; + const T_ECHO = 323; + const T_DO = 324; + const T_WHILE = 325; + const T_ENDWHILE = 326; + const T_FOR = 327; + const T_ENDFOR = 328; + const T_FOREACH = 329; + const T_ENDFOREACH = 330; + const T_DECLARE = 331; + const T_ENDDECLARE = 332; + const T_AS = 333; + const T_SWITCH = 334; + const T_ENDSWITCH = 335; + const T_CASE = 336; + const T_DEFAULT = 337; + const T_BREAK = 338; + const T_CONTINUE = 339; + const T_GOTO = 340; + const T_FUNCTION = 341; + const T_CONST = 342; + const T_RETURN = 343; + const T_TRY = 344; + const T_CATCH = 345; + const T_FINALLY = 346; + const T_THROW = 347; + const T_USE = 348; + const T_INSTEADOF = 349; + const T_GLOBAL = 350; + const T_STATIC = 351; + const T_ABSTRACT = 352; + const T_FINAL = 353; + const T_PRIVATE = 354; + const T_PROTECTED = 355; + const T_PUBLIC = 356; + const T_VAR = 357; + const T_UNSET = 358; + const T_ISSET = 359; + const T_EMPTY = 360; + const T_HALT_COMPILER = 361; + const T_CLASS = 362; + const T_TRAIT = 363; + const T_INTERFACE = 364; + const T_EXTENDS = 365; + const T_IMPLEMENTS = 366; + const T_OBJECT_OPERATOR = 367; + const T_LIST = 368; + const T_ARRAY = 369; + const T_CALLABLE = 370; + const T_CLASS_C = 371; + const T_TRAIT_C = 372; + const T_METHOD_C = 373; + const T_FUNC_C = 374; + const T_LINE = 375; + const T_FILE = 376; + const T_COMMENT = 377; + const T_DOC_COMMENT = 378; + const T_OPEN_TAG = 379; + const T_OPEN_TAG_WITH_ECHO = 380; + const T_CLOSE_TAG = 381; + const T_WHITESPACE = 382; + const T_START_HEREDOC = 383; + const T_END_HEREDOC = 384; + const T_DOLLAR_OPEN_CURLY_BRACES = 385; + const T_CURLY_OPEN = 386; + const T_PAAMAYIM_NEKUDOTAYIM = 387; + const T_NAMESPACE = 388; + const T_NS_C = 389; + const T_DIR = 390; + const T_NS_SEPARATOR = 391; + const T_ELLIPSIS = 392; } diff --git a/lib/PhpParser/PrettyPrinter/Standard.php b/lib/PhpParser/PrettyPrinter/Standard.php index 993d5f6..8d5930b 100644 --- a/lib/PhpParser/PrettyPrinter/Standard.php +++ b/lib/PhpParser/PrettyPrinter/Standard.php @@ -260,6 +260,10 @@ class Standard extends PrettyPrinterAbstract return $this->pInfixOp(AssignOp\Pow::class, $node->var, ' **= ', $node->expr); } + protected function pExpr_AssignOp_Coalesce(AssignOp\Coalesce $node) { + return $this->pInfixOp(AssignOp\Coalesce::class, $node->var, ' ??= ', $node->expr); + } + // Binary expressions protected function pExpr_BinaryOp_Plus(BinaryOp\Plus $node) { diff --git a/lib/PhpParser/PrettyPrinterAbstract.php b/lib/PhpParser/PrettyPrinterAbstract.php index 79aaf09..f6789a1 100644 --- a/lib/PhpParser/PrettyPrinterAbstract.php +++ b/lib/PhpParser/PrettyPrinterAbstract.php @@ -82,6 +82,7 @@ abstract class PrettyPrinterAbstract AssignOp\ShiftLeft::class => [160, 1], AssignOp\ShiftRight::class => [160, 1], AssignOp\Pow::class => [160, 1], + AssignOp\Coalesce::class => [160, 1], Expr\YieldFrom::class => [165, 1], Expr\Print_::class => [168, 1], BinaryOp\LogicalAnd::class => [170, -1], @@ -1156,7 +1157,7 @@ abstract class PrettyPrinterAbstract Expr\Assign::class, Expr\AssignRef::class, AssignOp\Plus::class, AssignOp\Minus::class, AssignOp\Mul::class, AssignOp\Div::class, AssignOp\Concat::class, AssignOp\Mod::class, AssignOp\BitwiseAnd::class, AssignOp\BitwiseOr::class, AssignOp\BitwiseXor::class, - AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class, + AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class, AssignOp\Coalesce::class ]; foreach ($assignOps as $assignOp) { $this->fixupMap[$assignOp] = [ diff --git a/test/PhpParser/Lexer/EmulativeTest.php b/test/PhpParser/Lexer/EmulativeTest.php index d29b6a1..cc00caa 100644 --- a/test/PhpParser/Lexer/EmulativeTest.php +++ b/test/PhpParser/Lexer/EmulativeTest.php @@ -108,6 +108,10 @@ class EmulativeTest extends LexerTest public function provideTestLexNewFeatures() { return [ + // PHP 7.4 + ['??=', [ + [Tokens::T_COALESCE_EQUAL, '??='], + ]], ['yield from', [ [Tokens::T_YIELD_FROM, 'yield from'], ]], diff --git a/test/code/parser/expr/assign.test b/test/code/parser/expr/assign.test index 33335f8..8d2ff69 100644 --- a/test/code/parser/expr/assign.test +++ b/test/code/parser/expr/assign.test @@ -17,6 +17,7 @@ $a += $b; $a <<= $b; $a >>= $b; $a **= $b; +$a ??= $b; // chained assign $a = $b *= $c **= $d; @@ -185,6 +186,16 @@ array( ) ) 13: Stmt_Expression( + expr: Expr_AssignOp_Coalesce( + var: Expr_Variable( + name: a + ) + expr: Expr_Variable( + name: b + ) + ) + ) + 14: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: a @@ -213,7 +224,7 @@ array( 0: // chained assign ) ) - 14: Stmt_Expression( + 15: Stmt_Expression( expr: Expr_AssignRef( var: Expr_Variable( name: a @@ -232,7 +243,7 @@ array( 0: // by ref assign ) ) - 15: Stmt_Expression( + 16: Stmt_Expression( expr: Expr_Assign( var: Expr_List( items: array( @@ -259,7 +270,7 @@ array( 0: // list() assign ) ) - 16: Stmt_Expression( + 17: Stmt_Expression( expr: Expr_Assign( var: Expr_List( items: array( @@ -285,7 +296,7 @@ array( ) ) ) - 17: Stmt_Expression( + 18: Stmt_Expression( expr: Expr_Assign( var: Expr_List( items: array( @@ -326,7 +337,7 @@ array( ) ) ) - 18: Stmt_Expression( + 19: Stmt_Expression( expr: Expr_PreInc( var: Expr_Variable( name: a @@ -339,21 +350,21 @@ array( 0: // inc/dec ) ) - 19: Stmt_Expression( + 20: Stmt_Expression( expr: Expr_PostInc( var: Expr_Variable( name: a ) ) ) - 20: Stmt_Expression( + 21: Stmt_Expression( expr: Expr_PreDec( var: Expr_Variable( name: a ) ) ) - 21: Stmt_Expression( + 22: Stmt_Expression( expr: Expr_PostDec( var: Expr_Variable( name: a diff --git a/test/code/prettyPrinter/expr/operators.test b/test/code/prettyPrinter/expr/operators.test index 6981769..2b5ab01 100644 --- a/test/code/prettyPrinter/expr/operators.test +++ b/test/code/prettyPrinter/expr/operators.test @@ -56,9 +56,9 @@ $a || $b; $a ? $b : $c; $a ?: $c; $a ?? $c; - $a = $b; $a **= $b; +$a ??= $c; $a *= $b; $a /= $b; $a %= $b; @@ -131,6 +131,7 @@ $a ?: $c; $a ?? $c; $a = $b; $a **= $b; +$a ??= $c; $a *= $b; $a /= $b; $a %= $b;