\{[^\'"/{}]*+(?:(?:(?&string)|(?&comment)|(?&code)|/)[^\'"/{}]*+)*+})
-)';
-
-const PARAMS = '\[(?[^[\]]*+(?:\[(?¶ms)\][^[\]]*+)*+)\]';
-const ARGS = '\((?[^()]*+(?:\((?&args)\)[^()]*+)*+)\)';
-
-///////////////////////////////
-/// Preprocessing functions ///
-///////////////////////////////
-
-function preprocessGrammar($code) {
- $code = resolveNodes($code);
- $code = resolveMacros($code);
- $code = resolveStackAccess($code);
-
- return $code;
-}
-
-function resolveNodes($code) {
- return preg_replace_callback(
- '~\b(?[A-Z][a-zA-Z_\\\\]++)\s*' . PARAMS . '~',
- function($matches) {
- // recurse
- $matches['params'] = resolveNodes($matches['params']);
-
- $params = magicSplit(
- '(?:' . PARAMS . '|' . ARGS . ')(*SKIP)(*FAIL)|,',
- $matches['params']
- );
-
- $paramCode = '';
- foreach ($params as $param) {
- $paramCode .= $param . ', ';
- }
-
- return 'new ' . $matches['name'] . '(' . $paramCode . 'attributes())';
- },
- $code
- );
-}
-
-function resolveMacros($code) {
- return preg_replace_callback(
- '~\b(?)(?!array\()(?[a-z][A-Za-z]++)' . ARGS . '~',
- function($matches) {
- // recurse
- $matches['args'] = resolveMacros($matches['args']);
-
- $name = $matches['name'];
- $args = magicSplit(
- '(?:' . PARAMS . '|' . ARGS . ')(*SKIP)(*FAIL)|,',
- $matches['args']
- );
-
- if ('attributes' === $name) {
- assertArgs(0, $args, $name);
- return '$this->startAttributeStack[#1] + $this->endAttributes';
- }
-
- if ('stackAttributes' === $name) {
- assertArgs(1, $args, $name);
- return '$this->startAttributeStack[' . $args[0] . ']'
- . ' + $this->endAttributeStack[' . $args[0] . ']';
- }
-
- if ('init' === $name) {
- return '$$ = array(' . implode(', ', $args) . ')';
- }
-
- if ('push' === $name) {
- assertArgs(2, $args, $name);
-
- return $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0];
- }
-
- if ('pushNormalizing' === $name) {
- assertArgs(2, $args, $name);
-
- return 'if (is_array(' . $args[1] . ')) { $$ = array_merge(' . $args[0] . ', ' . $args[1] . '); }'
- . ' else { ' . $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0] . '; }';
- }
-
- if ('toArray' == $name) {
- assertArgs(1, $args, $name);
-
- return 'is_array(' . $args[0] . ') ? ' . $args[0] . ' : array(' . $args[0] . ')';
- }
-
- if ('parseVar' === $name) {
- assertArgs(1, $args, $name);
-
- return 'substr(' . $args[0] . ', 1)';
- }
-
- if ('parseEncapsed' === $name) {
- assertArgs(3, $args, $name);
-
- return 'foreach (' . $args[0] . ' as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) {'
- . ' $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, ' . $args[1] . ', ' . $args[2] . '); } }';
- }
-
- if ('makeNop' === $name) {
- assertArgs(3, $args, $name);
-
- return '$startAttributes = ' . $args[1] . ';'
- . ' if (isset($startAttributes[\'comments\']))'
- . ' { ' . $args[0] . ' = new Stmt\Nop($startAttributes + ' . $args[2] . '); }'
- . ' else { ' . $args[0] . ' = null; }';
- }
-
- if ('makeZeroLengthNop' == $name) {
- assertArgs(2, $args, $name);
-
- return '$startAttributes = ' . $args[1] . ';'
- . ' if (isset($startAttributes[\'comments\']))'
- . ' { ' . $args[0] . ' = new Stmt\Nop($this->createCommentNopAttributes($startAttributes[\'comments\'])); }'
- . ' else { ' . $args[0] . ' = null; }';
- }
-
- if ('prependLeadingComments' === $name) {
- assertArgs(1, $args, $name);
-
- return '$attrs = $this->startAttributeStack[#1]; $stmts = ' . $args[0] . '; '
- . 'if (!empty($attrs[\'comments\'])) {'
- . '$stmts[0]->setAttribute(\'comments\', '
- . 'array_merge($attrs[\'comments\'], $stmts[0]->getAttribute(\'comments\', []))); }';
- }
-
- return $matches[0];
- },
- $code
- );
-}
-
-function assertArgs($num, $args, $name) {
- if ($num != count($args)) {
- die('Wrong argument count for ' . $name . '().');
- }
-}
-
-function resolveStackAccess($code) {
- $code = preg_replace('/\$\d+/', '$this->semStack[$0]', $code);
- $code = preg_replace('/#(\d+)/', '$$1', $code);
- return $code;
-}
-
-function removeTrailingWhitespace($code) {
- $lines = explode("\n", $code);
- $lines = array_map('rtrim', $lines);
- return implode("\n", $lines);
-}
-
-//////////////////////////////
-/// Regex helper functions ///
-//////////////////////////////
-
-function regex($regex) {
- return '~' . LIB . '(?:' . str_replace('~', '\~', $regex) . ')~';
-}
-
-function magicSplit($regex, $string) {
- $pieces = preg_split(regex('(?:(?&string)|(?&comment)|(?&code))(*SKIP)(*FAIL)|' . $regex), $string);
-
- foreach ($pieces as &$piece) {
- $piece = trim($piece);
- }
-
- if ($pieces === ['']) {
- return [];
- }
-
- return $pieces;
-}
diff --git a/lib/nikic/php-parser/grammar/rebuildParsers.php b/lib/nikic/php-parser/grammar/rebuildParsers.php
deleted file mode 100644
index 2d0c6b14d3..0000000000
--- a/lib/nikic/php-parser/grammar/rebuildParsers.php
+++ /dev/null
@@ -1,81 +0,0 @@
- 'Php5',
- __DIR__ . '/php7.y' => 'Php7',
-];
-
-$tokensFile = __DIR__ . '/tokens.y';
-$tokensTemplate = __DIR__ . '/tokens.template';
-$skeletonFile = __DIR__ . '/parser.template';
-$tmpGrammarFile = __DIR__ . '/tmp_parser.phpy';
-$tmpResultFile = __DIR__ . '/tmp_parser.php';
-$resultDir = __DIR__ . '/../lib/PhpParser/Parser';
-$tokensResultsFile = $resultDir . '/Tokens.php';
-
-$kmyacc = getenv('KMYACC');
-if (!$kmyacc) {
- // Use phpyacc from dev dependencies by default.
- $kmyacc = __DIR__ . '/../vendor/bin/phpyacc';
-}
-
-$options = array_flip($argv);
-$optionDebug = isset($options['--debug']);
-$optionKeepTmpGrammar = isset($options['--keep-tmp-grammar']);
-
-///////////////////
-/// Main script ///
-///////////////////
-
-$tokens = file_get_contents($tokensFile);
-
-foreach ($grammarFileToName as $grammarFile => $name) {
- echo "Building temporary $name grammar file.\n";
-
- $grammarCode = file_get_contents($grammarFile);
- $grammarCode = str_replace('%tokens', $tokens, $grammarCode);
- $grammarCode = preprocessGrammar($grammarCode);
-
- file_put_contents($tmpGrammarFile, $grammarCode);
-
- $additionalArgs = $optionDebug ? '-t -v' : '';
-
- echo "Building $name parser.\n";
- $output = execCmd("$kmyacc $additionalArgs -m $skeletonFile -p $name $tmpGrammarFile");
-
- $resultCode = file_get_contents($tmpResultFile);
- $resultCode = removeTrailingWhitespace($resultCode);
-
- ensureDirExists($resultDir);
- file_put_contents("$resultDir/$name.php", $resultCode);
- unlink($tmpResultFile);
-
- echo "Building token definition.\n";
- $output = execCmd("$kmyacc -m $tokensTemplate $tmpGrammarFile");
- rename($tmpResultFile, $tokensResultsFile);
-
- if (!$optionKeepTmpGrammar) {
- unlink($tmpGrammarFile);
- }
-}
-
-////////////////////////////////
-/// Utility helper functions ///
-////////////////////////////////
-
-function ensureDirExists($dir) {
- if (!is_dir($dir)) {
- mkdir($dir, 0777, true);
- }
-}
-
-function execCmd($cmd) {
- $output = trim(shell_exec("$cmd 2>&1"));
- if ($output !== "") {
- echo "> " . $cmd . "\n";
- echo $output;
- }
- return $output;
-}
diff --git a/lib/nikic/php-parser/grammar/tokens.template b/lib/nikic/php-parser/grammar/tokens.template
deleted file mode 100644
index ba4e4901c0..0000000000
--- a/lib/nikic/php-parser/grammar/tokens.template
+++ /dev/null
@@ -1,17 +0,0 @@
-semValue
-#semval($,%t) $this->semValue
-#semval(%n) $this->stackPos-(%l-%n)
-#semval(%n,%t) $this->stackPos-(%l-%n)
-
-namespace PhpParser\Parser;
-#include;
-
-/* GENERATED file based on grammar/tokens.y */
-final class Tokens
-{
-#tokenval
- const %s = %n;
-#endtokenval
-}
diff --git a/lib/nikic/php-parser/grammar/tokens.y b/lib/nikic/php-parser/grammar/tokens.y
deleted file mode 100644
index 8f0b217254..0000000000
--- a/lib/nikic/php-parser/grammar/tokens.y
+++ /dev/null
@@ -1,115 +0,0 @@
-/* We currently rely on the token ID mapping to be the same between PHP 5 and PHP 7 - so the same lexer can be used for
- * both. This is enforced by sharing this token file. */
-
-%right T_THROW
-%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
-%left ','
-%left T_LOGICAL_OR
-%left T_LOGICAL_XOR
-%left T_LOGICAL_AND
-%right T_PRINT
-%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 T_COALESCE_EQUAL
-%left '?' ':'
-%right T_COALESCE
-%left T_BOOLEAN_OR
-%left T_BOOLEAN_AND
-%left '|'
-%left '^'
-%left T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
-%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
-%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
-%left T_SL T_SR
-%left '+' '-' '.'
-%left '*' '/' '%'
-%right '!'
-%nonassoc T_INSTANCEOF
-%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
-%right T_POW
-%right '['
-%nonassoc T_NEW T_CLONE
-%token T_EXIT
-%token T_IF
-%left T_ELSEIF
-%left T_ELSE
-%left T_ENDIF
-%token T_LNUMBER
-%token T_DNUMBER
-%token T_STRING
-%token T_STRING_VARNAME
-%token T_VARIABLE
-%token T_NUM_STRING
-%token T_INLINE_HTML
-%token T_ENCAPSED_AND_WHITESPACE
-%token T_CONSTANT_ENCAPSED_STRING
-%token T_ECHO
-%token T_DO
-%token T_WHILE
-%token T_ENDWHILE
-%token T_FOR
-%token T_ENDFOR
-%token T_FOREACH
-%token T_ENDFOREACH
-%token T_DECLARE
-%token T_ENDDECLARE
-%token T_AS
-%token T_SWITCH
-%token T_MATCH
-%token T_ENDSWITCH
-%token T_CASE
-%token T_DEFAULT
-%token T_BREAK
-%token T_CONTINUE
-%token T_GOTO
-%token T_FUNCTION
-%token T_FN
-%token T_CONST
-%token T_RETURN
-%token T_TRY
-%token T_CATCH
-%token T_FINALLY
-%token T_THROW
-%token T_USE
-%token T_INSTEADOF
-%token T_GLOBAL
-%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC T_READONLY
-%token T_VAR
-%token T_UNSET
-%token T_ISSET
-%token T_EMPTY
-%token T_HALT_COMPILER
-%token T_CLASS
-%token T_TRAIT
-%token T_INTERFACE
-%token T_ENUM
-%token T_EXTENDS
-%token T_IMPLEMENTS
-%token T_OBJECT_OPERATOR
-%token T_NULLSAFE_OBJECT_OPERATOR
-%token T_DOUBLE_ARROW
-%token T_LIST
-%token T_ARRAY
-%token T_CALLABLE
-%token T_CLASS_C
-%token T_TRAIT_C
-%token T_METHOD_C
-%token T_FUNC_C
-%token T_LINE
-%token T_FILE
-%token T_START_HEREDOC
-%token T_END_HEREDOC
-%token T_DOLLAR_OPEN_CURLY_BRACES
-%token T_CURLY_OPEN
-%token T_PAAMAYIM_NEKUDOTAYIM
-%token T_NAMESPACE
-%token T_NS_C
-%token T_DIR
-%token T_NS_SEPARATOR
-%token T_ELLIPSIS
-%token T_NAME_FULLY_QUALIFIED
-%token T_NAME_QUALIFIED
-%token T_NAME_RELATIVE
-%token T_ATTRIBUTE
-%token T_ENUM
diff --git a/lib/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php b/lib/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php
index f616c62701..a7fe129b0b 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php
@@ -19,6 +19,8 @@ class ClassConst implements PhpParser\Builder
/** @var Node\AttributeGroup[] */
protected $attributeGroups = [];
+ /** @var Identifier|Node\Name|Node\ComplexType */
+ protected $type;
/**
* Creates a class constant builder
@@ -116,6 +118,19 @@ class ClassConst implements PhpParser\Builder
return $this;
}
+ /**
+ * Sets the constant type.
+ *
+ * @param string|Node\Name|Identifier|Node\ComplexType $type
+ *
+ * @return $this
+ */
+ public function setType($type) {
+ $this->type = BuilderHelpers::normalizeType($type);
+
+ return $this;
+ }
+
/**
* Returns the built class node.
*
@@ -126,7 +141,8 @@ class ClassConst implements PhpParser\Builder
$this->constants,
$this->flags,
$this->attributes,
- $this->attributeGroups
+ $this->attributeGroups,
+ $this->type
);
}
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php b/lib/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
index 02fa83e624..accc5166b1 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
@@ -78,8 +78,8 @@ class EnumCase implements PhpParser\Builder
return new Stmt\EnumCase(
$this->name,
$this->value,
- $this->attributes,
- $this->attributeGroups
+ $this->attributeGroups,
+ $this->attributes
);
}
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/Builder/Param.php b/lib/nikic/php-parser/lib/PhpParser/Builder/Param.php
index de9aae7e5e..69f353326a 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Builder/Param.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Builder/Param.php
@@ -19,6 +19,8 @@ class Param implements PhpParser\Builder
protected $variadic = false;
+ protected $flags = 0;
+
/** @var Node\AttributeGroup[] */
protected $attributeGroups = [];
@@ -95,6 +97,50 @@ class Param implements PhpParser\Builder
return $this;
}
+ /**
+ * Makes the (promoted) parameter public.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePublic() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PUBLIC);
+
+ return $this;
+ }
+
+ /**
+ * Makes the (promoted) parameter protected.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeProtected() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PROTECTED);
+
+ return $this;
+ }
+
+ /**
+ * Makes the (promoted) parameter private.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePrivate() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PRIVATE);
+
+ return $this;
+ }
+
+ /**
+ * Makes the (promoted) parameter readonly.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeReadonly() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_READONLY);
+
+ return $this;
+ }
+
/**
* Adds an attribute group.
*
@@ -116,7 +162,7 @@ class Param implements PhpParser\Builder
public function getNode() : Node {
return new Node\Param(
new Node\Expr\Variable($this->name),
- $this->default, $this->type, $this->byRef, $this->variadic, [], 0, $this->attributeGroups
+ $this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups
);
}
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/lib/nikic/php-parser/lib/PhpParser/BuilderFactory.php
index fef2579b3e..af010e028a 100644
--- a/lib/nikic/php-parser/lib/PhpParser/BuilderFactory.php
+++ b/lib/nikic/php-parser/lib/PhpParser/BuilderFactory.php
@@ -349,15 +349,15 @@ class BuilderFactory
/**
* Creates a class constant fetch node.
*
- * @param string|Name|Expr $class Class name
- * @param string|Identifier $name Constant name
+ * @param string|Name|Expr $class Class name
+ * @param string|Identifier|Expr $name Constant name
*
* @return Expr\ClassConstFetch
*/
public function classConstFetch($class, $name): Expr\ClassConstFetch {
return new Expr\ClassConstFetch(
BuilderHelpers::normalizeNameOrExpr($class),
- BuilderHelpers::normalizeIdentifier($name)
+ BuilderHelpers::normalizeIdentifierOrExpr($name)
);
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/lib/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
index b8839db322..af6ceb9968 100644
--- a/lib/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
+++ b/lib/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
@@ -178,7 +178,20 @@ final class BuilderHelpers
}
$builtinTypes = [
- 'array', 'callable', 'string', 'int', 'float', 'bool', 'iterable', 'void', 'object', 'mixed', 'never',
+ 'array',
+ 'callable',
+ 'bool',
+ 'int',
+ 'float',
+ 'string',
+ 'iterable',
+ 'void',
+ 'object',
+ 'null',
+ 'false',
+ 'mixed',
+ 'never',
+ 'true',
];
$lowerType = strtolower($type);
diff --git a/lib/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/lib/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
index 3eeac04a41..6763227014 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
@@ -19,6 +19,8 @@ class PrintableNewAnonClassNode extends Expr
{
/** @var Node\AttributeGroup[] PHP attribute groups */
public $attrGroups;
+ /** @var int Modifiers */
+ public $flags;
/** @var Node\Arg[] Arguments */
public $args;
/** @var null|Node\Name Name of extended class */
@@ -29,11 +31,12 @@ class PrintableNewAnonClassNode extends Expr
public $stmts;
public function __construct(
- array $attrGroups, array $args, Node\Name $extends = null, array $implements,
+ array $attrGroups, int $flags, array $args, Node\Name $extends = null, array $implements,
array $stmts, array $attributes
) {
parent::__construct($attributes);
$this->attrGroups = $attrGroups;
+ $this->flags = $flags;
$this->args = $args;
$this->extends = $extends;
$this->implements = $implements;
@@ -46,7 +49,7 @@ class PrintableNewAnonClassNode extends Expr
// We don't assert that $class->name is null here, to allow consumers to assign unique names
// to anonymous classes for their own purposes. We simplify ignore the name here.
return new self(
- $class->attrGroups, $newNode->args, $class->extends, $class->implements,
+ $class->attrGroups, $class->flags, $newNode->args, $class->extends, $class->implements,
$class->stmts, $newNode->getAttributes()
);
}
@@ -56,6 +59,6 @@ class PrintableNewAnonClassNode extends Expr
}
public function getSubNodeNames() : array {
- return ['attrGroups', 'args', 'extends', 'implements', 'stmts'];
+ return ['attrGroups', 'flags', 'args', 'extends', 'implements', 'stmts'];
}
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php b/lib/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
index 84c0175ec5..7e0a5de0f1 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
@@ -206,6 +206,11 @@ class TokenStream
|| $this->haveTokenInRange($startPos, $endPos, '}');
}
+ public function haveTagInRange(int $startPos, int $endPos): bool {
+ return $this->haveTokenInRange($startPos, $endPos, \T_OPEN_TAG)
+ || $this->haveTokenInRange($startPos, $endPos, \T_CLOSE_TAG);
+ }
+
/**
* Get indentation before token position.
*
diff --git a/lib/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/lib/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
index 5c56e026bb..b0929f3ccb 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
@@ -14,6 +14,7 @@ use PhpParser\Lexer\TokenEmulator\FnTokenEmulator;
use PhpParser\Lexer\TokenEmulator\MatchTokenEmulator;
use PhpParser\Lexer\TokenEmulator\NullsafeTokenEmulator;
use PhpParser\Lexer\TokenEmulator\NumericLiteralSeparatorEmulator;
+use PhpParser\Lexer\TokenEmulator\ReadonlyFunctionTokenEmulator;
use PhpParser\Lexer\TokenEmulator\ReadonlyTokenEmulator;
use PhpParser\Lexer\TokenEmulator\ReverseEmulator;
use PhpParser\Lexer\TokenEmulator\TokenEmulator;
@@ -24,6 +25,7 @@ class Emulative extends Lexer
const PHP_7_4 = '7.4dev';
const PHP_8_0 = '8.0dev';
const PHP_8_1 = '8.1dev';
+ const PHP_8_2 = '8.2dev';
/** @var mixed[] Patches used to reverse changes introduced in the code */
private $patches = [];
@@ -41,7 +43,7 @@ class Emulative extends Lexer
*/
public function __construct(array $options = [])
{
- $this->targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_1;
+ $this->targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_2;
unset($options['phpVersion']);
parent::__construct($options);
@@ -57,6 +59,7 @@ class Emulative extends Lexer
new EnumTokenEmulator(),
new ReadonlyTokenEmulator(),
new ExplicitOctalEmulator(),
+ new ReadonlyFunctionTokenEmulator(),
];
// Collect emulators that are relevant for the PHP version we're running
diff --git a/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php b/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
index ea261cc178..f8e8362909 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
@@ -33,7 +33,7 @@ abstract class KeywordEmulator extends TokenEmulator
/**
* @param mixed[] $tokens
- * @return mixed[]|null
+ * @return array|string|null
*/
private function getPreviousNonSpaceToken(array $tokens, int $start)
{
diff --git a/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php b/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php
new file mode 100644
index 0000000000..e671458c9a
--- /dev/null
+++ b/lib/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php
@@ -0,0 +1,31 @@
+attributes = $attributes;
@@ -29,7 +29,7 @@ class ClassConstFetch extends Expr
public function getSubNodeNames() : array {
return ['class', 'name'];
}
-
+
public function getType() : string {
return 'Expr_ClassConstFetch';
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/Node/Name.php b/lib/nikic/php-parser/lib/PhpParser/Node/Name.php
index 6b1cc9f8ed..f0a564ff0b 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Node/Name.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Node/Name.php
@@ -6,7 +6,10 @@ use PhpParser\NodeAbstract;
class Name extends NodeAbstract
{
- /** @var string[] Parts of the name */
+ /**
+ * @var string[] Parts of the name
+ * @deprecated Use getParts() instead
+ */
public $parts;
private static $specialClassNames = [
@@ -30,6 +33,15 @@ class Name extends NodeAbstract
return ['parts'];
}
+ /**
+ * Get parts of name (split by the namespace separator).
+ *
+ * @return string[] Parts of name
+ */
+ public function getParts(): array {
+ return $this->parts;
+ }
+
/**
* Gets the first part of the name, i.e. everything before the first namespace separator.
*
@@ -162,7 +174,7 @@ class Name extends NodeAbstract
$realLength = $numParts - $realOffset;
} else {
$realLength = $length < 0 ? $length + $numParts - $realOffset : $length;
- if ($realLength < 0 || $realLength > $numParts) {
+ if ($realLength < 0 || $realLength > $numParts - $realOffset) {
throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length));
}
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php b/lib/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
index d4796d65bb..8a15c6f1f7 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
@@ -47,13 +47,7 @@ class DNumber extends Scalar
public static function parse(string $str) : float {
$str = str_replace('_', '', $str);
- // if string contains any of .eE just cast it to float
- if (false !== strpbrk($str, '.eE')) {
- return (float) $str;
- }
-
- // otherwise it's an integer notation that overflowed into a float
- // if it starts with 0 it's one of the special integer notations
+ // Check whether this is one of the special integer notations.
if ('0' === $str[0]) {
// hex
if ('x' === $str[1] || 'X' === $str[1]) {
@@ -65,10 +59,12 @@ class DNumber extends Scalar
return bindec($str);
}
- // oct
- // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit (8 or 9)
- // so that only the digits before that are used
- return octdec(substr($str, 0, strcspn($str, '89')));
+ // oct, but only if the string does not contain any of '.eE'.
+ if (false === strpbrk($str, '.eE')) {
+ // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit
+ // (8 or 9) so that only the digits before that are used.
+ return octdec(substr($str, 0, strcspn($str, '89')));
+ }
}
// dec
diff --git a/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
index 1fc7f3362a..8abaad6de2 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
@@ -10,31 +10,36 @@ class ClassConst extends Node\Stmt
public $flags;
/** @var Node\Const_[] Constant declarations */
public $consts;
- /** @var Node\AttributeGroup[] */
+ /** @var Node\AttributeGroup[] PHP attribute groups */
public $attrGroups;
+ /** @var Node\Identifier|Node\Name|Node\ComplexType|null Type declaration */
+ public $type;
/**
* Constructs a class const list node.
*
- * @param Node\Const_[] $consts Constant declarations
- * @param int $flags Modifiers
- * @param array $attributes Additional attributes
- * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
+ * @param Node\Const_[] $consts Constant declarations
+ * @param int $flags Modifiers
+ * @param array $attributes Additional attributes
+ * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
+ * @param null|string|Node\Identifier|Node\Name|Node\ComplexType $type Type declaration
*/
public function __construct(
array $consts,
int $flags = 0,
array $attributes = [],
- array $attrGroups = []
+ array $attrGroups = [],
+ $type = null
) {
$this->attributes = $attributes;
$this->flags = $flags;
$this->consts = $consts;
$this->attrGroups = $attrGroups;
+ $this->type = \is_string($type) ? new Node\Identifier($type) : $type;
}
public function getSubNodeNames() : array {
- return ['attrGroups', 'flags', 'consts'];
+ return ['attrGroups', 'flags', 'type', 'consts'];
}
/**
diff --git a/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php b/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
index 09b877a929..6e85161e31 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
@@ -23,21 +23,23 @@ class ClassMethod extends Node\Stmt implements FunctionLike
public $attrGroups;
private static $magicNames = [
- '__construct' => true,
- '__destruct' => true,
- '__call' => true,
- '__callstatic' => true,
- '__get' => true,
- '__set' => true,
- '__isset' => true,
- '__unset' => true,
- '__sleep' => true,
- '__wakeup' => true,
- '__tostring' => true,
- '__set_state' => true,
- '__clone' => true,
- '__invoke' => true,
- '__debuginfo' => true,
+ '__construct' => true,
+ '__destruct' => true,
+ '__call' => true,
+ '__callstatic' => true,
+ '__get' => true,
+ '__set' => true,
+ '__isset' => true,
+ '__unset' => true,
+ '__sleep' => true,
+ '__wakeup' => true,
+ '__tostring' => true,
+ '__set_state' => true,
+ '__clone' => true,
+ '__invoke' => true,
+ '__debuginfo' => true,
+ '__serialize' => true,
+ '__unserialize' => true,
];
/**
diff --git a/lib/nikic/php-parser/lib/PhpParser/Node/UnionType.php b/lib/nikic/php-parser/lib/PhpParser/Node/UnionType.php
index 61c2d81062..93cecd2382 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Node/UnionType.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Node/UnionType.php
@@ -4,13 +4,13 @@ namespace PhpParser\Node;
class UnionType extends ComplexType
{
- /** @var (Identifier|Name)[] Types */
+ /** @var (Identifier|Name|IntersectionType)[] Types */
public $types;
/**
* Constructs a union type.
*
- * @param (Identifier|Name)[] $types Types
+ * @param (Identifier|Name|IntersectionType)[] $types Types
* @param array $attributes Additional attributes
*/
public function __construct(array $types, array $attributes = []) {
diff --git a/lib/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/lib/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
index 8e259c57b6..83f3ea831c 100644
--- a/lib/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
+++ b/lib/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
@@ -118,6 +118,9 @@ class NameResolver extends NodeVisitorAbstract
$this->addNamespacedName($const);
}
} else if ($node instanceof Stmt\ClassConst) {
+ if (null !== $node->type) {
+ $node->type = $this->resolveType($node->type);
+ }
$this->resolveAttrGroups($node);
} else if ($node instanceof Stmt\EnumCase) {
$this->resolveAttrGroups($node);
@@ -161,7 +164,7 @@ class NameResolver extends NodeVisitorAbstract
return null;
}
- private function addAlias(Stmt\UseUse $use, $type, Name $prefix = null) {
+ private function addAlias(Stmt\UseUse $use, int $type, Name $prefix = null) {
// Add prefix for group uses
$name = $prefix ? Name::concat($prefix, $use->name) : $use->name;
// Type is determined either by individual element or whole use declaration
diff --git a/lib/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/lib/nikic/php-parser/lib/PhpParser/Parser/Php5.php
index d9c8fe0494..59bd1e8cf5 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Parser/Php5.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Parser/Php5.php
@@ -18,8 +18,8 @@ use PhpParser\Node\Stmt;
class Php5 extends \PhpParser\ParserAbstract
{
protected $tokenToSymbolMapSize = 396;
- protected $actionTableSize = 1093;
- protected $gotoTableSize = 643;
+ protected $actionTableSize = 1099;
+ protected $gotoTableSize = 640;
protected $invalidSymbol = 168;
protected $errorSymbol = 1;
@@ -27,7 +27,7 @@ class Php5 extends \PhpParser\ParserAbstract
protected $unexpectedTokenRule = 32767;
protected $YY2TBLSTATE = 415;
- protected $numNonLeafStates = 662;
+ protected $numNonLeafStates = 663;
protected $symbolToName = array(
"EOF",
@@ -152,6 +152,7 @@ class Php5 extends \PhpParser\ParserAbstract
"T_PRIVATE",
"T_PROTECTED",
"T_PUBLIC",
+ "T_READONLY",
"T_VAR",
"T_UNSET",
"T_ISSET",
@@ -194,7 +195,6 @@ class Php5 extends \PhpParser\ParserAbstract
"'`'",
"']'",
"'\"'",
- "T_READONLY",
"T_ENUM",
"T_NULLSAFE_OBJECT_OPERATOR",
"T_ATTRIBUTE"
@@ -204,16 +204,16 @@ class Php5 extends \PhpParser\ParserAbstract
0, 168, 168, 168, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 56, 163, 168, 160, 55, 168, 168,
- 158, 159, 53, 50, 8, 51, 52, 54, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 31, 155,
+ 168, 168, 168, 56, 164, 168, 161, 55, 168, 168,
+ 159, 160, 53, 50, 8, 51, 52, 54, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 31, 156,
44, 16, 46, 30, 68, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 70, 168, 162, 36, 168, 161, 168, 168, 168,
+ 168, 70, 168, 163, 36, 168, 162, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 156, 35, 157, 58, 168, 168, 168,
+ 168, 168, 168, 157, 35, 158, 58, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
@@ -236,124 +236,124 @@ class Php5 extends \PhpParser\ParserAbstract
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, 164,
- 122, 123, 124, 125, 126, 127, 128, 129, 165, 130,
- 131, 132, 166, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 167
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 165, 131,
+ 132, 133, 166, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 167
);
protected $action = array(
- 699, 669, 670, 671, 672, 673, 286, 674, 675, 676,
- 712, 713, 223, 224, 225, 226, 227, 228, 229, 230,
+ 700, 670, 671, 672, 673, 674, 286, 675, 676, 677,
+ 713, 714, 223, 224, 225, 226, 227, 228, 229, 230,
231, 232, 0, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244,-32766,-32766,-32766,-32766,-32766,
-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, 245, 246,
- 242, 243, 244,-32766,-32766, 677,-32766, 750,-32766,-32766,
- -32766,-32766,-32766,-32766,-32766, 1224, 245, 246, 1225, 678,
- 679, 680, 681, 682, 683, 684,-32766, 48, 746,-32766,
- -32766,-32766,-32766,-32766,-32766, 685, 686, 687, 688, 689,
- 690, 691, 692, 693, 694, 695, 715, 738, 716, 717,
- 718, 719, 707, 708, 709, 737, 710, 711, 696, 697,
- 698, 700, 701, 702, 740, 741, 742, 743, 744, 745,
- 703, 704, 705, 706, 736, 727, 725, 726, 722, 723,
- 751, 714, 720, 721, 728, 729, 731, 730, 732, 733,
- 55, 56, 425, 57, 58, 724, 735, 734, 1073, 59,
- 60, -224, 61,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
- -32766,-32766,-32766, 121,-32767,-32767,-32767,-32767, 29, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 1043, 766, 1071, 767, 580, 62, 63,-32766,
- -32766,-32766,-32766, 64, 516, 65, 294, 295, 66, 67,
- 68, 69, 70, 71, 72, 73, 822, 25, 302, 74,
- 418, 981, 983, 1043, 1181, 1095, 1096, 1073, 748, 754,
- 1075, 1074, 1076, 469,-32766,-32766,-32766, 337, 823, 54,
- -32767,-32767,-32767,-32767, 98, 99, 100, 101, 102, 220,
- 221, 222, 78, 361, 1107,-32766, 341,-32766,-32766,-32766,
- -32766,-32766, 1107, 492, 949, 950, 951, 948, 947, 946,
- 207, 477, 478, 949, 950, 951, 948, 947, 946, 1043,
- 479, 480, 52, 1101, 1102, 1103, 1104, 1098, 1099, 319,
- 872, 668, 667, 27, -511, 1105, 1100,-32766, 130, 1075,
- 1074, 1076, 345, 668, 667, 41, 126, 341, 334, 369,
- 336, 426, -128, -128, -128, 896, 897, 468, 220, 221,
- 222, 811, 1195, 619, 40, 21, 427, -128, 470, -128,
- 471, -128, 472, -128, 802, 428, -4, 823, 54, 207,
- 33, 34, 429, 360, 317, 28, 35, 473,-32766,-32766,
- -32766, 211, 356, 357, 474, 475,-32766,-32766,-32766, 754,
- 476, 49, 313, 794, 843, 430, 431, 289, 125,-32766,
- 813,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
- -32767,-32767,-32767,-32766,-32766,-32766, 769, 103, 104, 105,
- 327, 307, 825, 633, -128, 1075, 1074, 1076, 221, 222,
- 927, 748, 1146, 106,-32766, 129,-32766,-32766,-32766,-32766,
- 426, 823, 54, 902, 873, 302, 468, 75, 207, 359,
- 811, 668, 667, 40, 21, 427, 754, 470, 754, 471,
- 423, 472, 1043, 127, 428, 435, 1043, 341, 1043, 33,
- 34, 429, 360, 1181, 415, 35, 473, 122, 10, 315,
- 128, 356, 357, 474, 475,-32766,-32766,-32766, 768, 476,
- 668, 667, 758, 843, 430, 431, 754, 1043, 1147,-32766,
- -32766,-32766, 754, 419, 342, 1215,-32766, 131,-32766,-32766,
- -32766, 341, 363, 346, 426, 823, 54, 100, 101, 102,
- 468, 825, 633, -4, 811, 442, 903, 40, 21, 427,
- 754, 470, 435, 471, 341, 472, 341, 766, 428, 767,
- -209, -209, -209, 33, 34, 429, 360, 479, 1196, 35,
- 473, 345,-32766,-32766,-32766, 356, 357, 474, 475, 220,
- 221, 222, 421, 476, 32, 297, 794, 843, 430, 431,
- 754, 754, 435,-32766, 341,-32766,-32766, 9, 300, 51,
- 207, 249, 324, 753, 120, 220, 221, 222, 426, 30,
- 247, 941, 422, 424, 468, 825, 633, -209, 811, 1043,
- 1061, 40, 21, 427, 129, 470, 207, 471, 341, 472,
- 804, 20, 428, 124, -208, -208, -208, 33, 34, 429,
- 360, 479, 212, 35, 473, 923, -259, 823, 54, 356,
- 357, 474, 475,-32766,-32766,-32766, 1043, 476, 213, 806,
- 794, 843, 430, 431,-32766,-32766, 435, 435, 341, 341,
- 443, 79, 80, 81,-32766, 668, 667, 636, 344, 808,
- 668, 667, 239, 240, 241, 123, 214, 538, 250, 825,
- 633, -208, 36, 251, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 252, 307,
- 426, 220, 221, 222, 823, 54, 468,-32766, 222, 765,
- 811, 106, 134, 40, 21, 427, 571, 470, 207, 471,
- 445, 472, 207,-32766, 428, 896, 897, 207, 307, 33,
- 34, 429, 245, 246, 637, 35, 473, 452, 22, 809,
- 922, 356, 357, 457, 588, 135, 374, 595, 596, 476,
- -228, 759, 639, 938, 653, 926, 661, -86, 823, 54,
- 314, 644, 647, 821, 133, 836, 43, 106, 603, 44,
- 45, 46, 47, 748, 50, 53, 132, 426, 302,-32766,
- 520, 825, 633, 468, -84, 607, 577, 811, 641, 362,
- 40, 21, 427, -278, 470, 754, 471, 954, 472, 441,
- 627, 428, 823, 54, 574, 844, 33, 34, 429, 11,
- 615, 845, 35, 473, 444, 461, 285, -511, 356, 357,
- 592, -419, 593, 1106, 1153, -410, 476, 368, 838, 38,
- 658, 426, 645, 795, 1052, 0, 325, 468, 0,-32766,
- 0, 811, 0, 0, 40, 21, 427, 0, 470, 0,
- 471, 0, 472, 0, 322, 428, 823, 54, 825, 633,
- 33, 34, 429, 0, 326, 0, 35, 473, 323, 0,
- 316, 318, 356, 357, -512, 426, 0, 753, 531, 0,
- 476, 468, 6, 0, 0, 811, 650, 7, 40, 21,
- 427, 12, 470, 14, 471, 373, 472, -420, 562, 428,
- 823, 54, 78, -225, 33, 34, 429, 39, 656, 657,
- 35, 473, 859, 633, 764, 812, 356, 357, 820, 799,
- 814, 875, 866, 867, 476, 797, 860, 857, 855, 426,
- 933, 934, 931, 819, 803, 468, 805, 807, 810, 811,
- 930, 762, 40, 21, 427, 763, 470, 932, 471, 335,
- 472, 358, 634, 428, 638, 640, 825, 633, 33, 34,
- 429, 642, 643, 646, 35, 473, 648, 649, 651, 652,
- 356, 357, 635, 426, 1221, 1223, 761, 842, 476, 468,
- 248, 760, 841, 811, 1222, 840, 40, 21, 427, 1057,
- 470, 830, 471, 1045, 472, 839, 1046, 428, 828, 215,
- 216, 939, 33, 34, 429, 217, 864, 218, 35, 473,
- 825, 633, 24, 865, 356, 357, 456, 1220, 1189, 209,
- 1187, 1172, 476, 1185, 215, 216, 1086, 1095, 1096, 914,
- 217, 1193, 218, 1183, -224, 1097, 26, 31, 37, 42,
- 76, 77, 210, 288, 209, 292, 293, 308, 309, 310,
- 311, 339, 1095, 1096, 825, 633, 355, 291, 416, 1152,
- 1097, 16, 17, 18, 393, 453, 460, 462, 466, 552,
- 624, 1048, 1051, 904, 1111, 1047, 1023, 563, 1022, 1088,
- 0, 0, -429, 558, 1041, 1101, 1102, 1103, 1104, 1098,
- 1099, 398, 1054, 1053, 1056, 1055, 1070, 1105, 1100, 1186,
- 1171, 1167, 1184, 1085, 1218, 1112, 1166, 219, 558, 599,
- 1101, 1102, 1103, 1104, 1098, 1099, 398, 0, 0, 0,
- 0, 0, 1105, 1100, 0, 0, 0, 0, 0, 0,
- 0, 0, 219
+ 242, 243, 244,-32766,-32766, 678,-32766,-32766,-32766,-32766,
+ -32766,-32766,-32766,-32766,-32766, 1229, 245, 246, 1230, 679,
+ 680, 681, 682, 683, 684, 685, 899, 900, 747,-32766,
+ -32766,-32766,-32766,-32766,-32766, 686, 687, 688, 689, 690,
+ 691, 692, 693, 694, 695, 696, 716, 739, 717, 718,
+ 719, 720, 708, 709, 710, 738, 711, 712, 697, 698,
+ 699, 701, 702, 703, 741, 742, 743, 744, 745, 746,
+ 875, 704, 705, 706, 707, 737, 728, 726, 727, 723,
+ 724, 1046, 715, 721, 722, 729, 730, 732, 731, 733,
+ 734, 55, 56, 425, 57, 58, 725, 736, 735, 755,
+ 59, 60, -226, 61,-32766,-32766,-32766,-32766,-32766,-32766,
+ -32766,-32766,-32766,-32766, 337,-32767,-32767,-32767,-32767, 29,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 620,-32766,-32766,-32766,-32766, 62, 63,
+ 1046,-32766,-32766,-32766, 64, 419, 65, 294, 295, 66,
+ 67, 68, 69, 70, 71, 72, 73, 823, 25, 302,
+ 74, 418, 984, 986, 669, 668, 1100, 1101, 1078, 755,
+ 755, 767, 1220, 768, 470,-32766,-32766,-32766, 341, 749,
+ 824, 54,-32767,-32767,-32767,-32767, 98, 99, 100, 101,
+ 102, 220, 221, 222, 362, 876,-32766, 27,-32766,-32766,
+ -32766,-32766,-32766, 1046, 493, 126, 1080, 1079, 1081, 370,
+ 1068, 930, 207, 478, 479, 952, 953, 954, 951, 950,
+ 949, 128, 480, 481, 803, 1106, 1107, 1108, 1109, 1103,
+ 1104, 319, 32, 297, 10, 211, -515, 1110, 1105, 669,
+ 668, 1080, 1079, 1081, 220, 221, 222, 41, 364, 341,
+ 334, 421, 336, 426, -128, -128, -128, 313, 1046, 469,
+ -4, 824, 54, 812, 770, 207, 40, 21, 427, -128,
+ 471, -128, 472, -128, 473, -128, 1046, 428, 220, 221,
+ 222,-32766, 33, 34, 429, 361, 327, 52, 35, 474,
+ -32766,-32766,-32766, 342, 357, 358, 475, 476, 48, 207,
+ 249, 669, 668, 477, 443, 300, 795, 846, 430, 431,
+ 28,-32766, 814,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+ -32767,-32767,-32767,-32767,-32767, 952, 953, 954, 951, 950,
+ 949, 422, 755, 424, 426, 826, 634, -128,-32766,-32766,
+ 469, 824, 54, 288, 812, 1151, 755, 40, 21, 427,
+ 317, 471, 345, 472, 129, 473, 9, 1186, 428, 769,
+ 360, 324, 905, 33, 34, 429, 361, 1046, 415, 35,
+ 474, 944, 1068, 315, 125, 357, 358, 475, 476,-32766,
+ -32766,-32766, 926, 302, 477, 121, 1068, 759, 846, 430,
+ 431, 669, 668, 423, 755, 1152, 809, 1046, 480, 766,
+ -32766, 805,-32766,-32766,-32766,-32766, -261, 127, 347, 436,
+ 841, 341, 1078, 1200, 426, 446, 826, 634, -4, 807,
+ 469, 824, 54, 436, 812, 341, 755, 40, 21, 427,
+ 444, 471, 130, 472, 1068, 473, 346, 767, 428, 768,
+ -211, -211, -211, 33, 34, 429, 361, 308, 1076, 35,
+ 474,-32766,-32766,-32766, 1046, 357, 358, 475, 476,-32766,
+ -32766,-32766, 906, 120, 477, 539, 1068, 795, 846, 430,
+ 431, 436,-32766, 341,-32766,-32766,-32766, 1046, 480, 810,
+ -32766, 925,-32766,-32766, 754, 1080, 1079, 1081, 49,-32766,
+ -32766,-32766, 749, 751, 426, 1201, 826, 634, -211, 30,
+ 469, 669, 668, 436, 812, 341, 75, 40, 21, 427,
+ -32766, 471, 1064, 472, 124, 473, 669, 668, 428, 212,
+ -210, -210, -210, 33, 34, 429, 361, 51, 1186, 35,
+ 474, 755,-32766,-32766,-32766, 357, 358, 475, 476, 213,
+ 824, 54, 221, 222, 477, 20, 581, 795, 846, 430,
+ 431, 220, 221, 222, 755, 222, 247, 78, 79, 80,
+ 81, 341, 207, 517, 103, 104, 105, 752, 307, 131,
+ 637, 1068, 207, 341, 207, 122, 826, 634, -210, 36,
+ 106, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 1112, 307, 346, 436, 214,
+ 341, 824, 54, 426, 123, 250, 129, 134, 106, 469,
+ -32766, 572, 1112, 812, 245, 246, 40, 21, 427, 251,
+ 471, 252, 472, 341, 473, 453, 22, 428, 207, 899,
+ 900, 638, 33, 34, 429, 824, 54, -86, 35, 474,
+ 220, 221, 222, 314, 357, 358, 100, 101, 102, 239,
+ 240, 241, 645, 477, -230, 458, 589, 135, 374, 596,
+ 597, 207, 760, 640, 648, 642, 941, 654, 929, 662,
+ 822, 133, 307, 837, 426,-32766, 106, 749, 43, 44,
+ 469, 45, 442, 46, 812, 826, 634, 40, 21, 427,
+ 47, 471, 50, 472, 53, 473, 132, 608, 428, 302,
+ 604, -280,-32766, 33, 34, 429, 824, 54, 426, 35,
+ 474, 755, 957, -84, 469, 357, 358, 521, 812, 628,
+ 363, 40, 21, 427, 477, 471, 575, 472, -515, 473,
+ 847, 616, 428, -423,-32766, 11, 646, 33, 34, 429,
+ 824, 54, 445, 35, 474, 462, 285, 578, 1111, 357,
+ 358, 593, 369, 848, 594, 290, 826, 634, 477, 0,
+ 0, 532, 0, 0, 325, 0, 0, 0, 0, 0,
+ 651, 0, 0, 0, 322, 326, 0, 0, 0, 426,
+ 0, 0, 0, 0, 323, 469, 316, 318, -516, 812,
+ 862, 634, 40, 21, 427, 0, 471, 0, 472, 0,
+ 473, 1158, 0, 428, 0, -414, 6, 7, 33, 34,
+ 429, 824, 54, 426, 35, 474, 12, 14, 373, 469,
+ 357, 358, -424, 812, 563, 754, 40, 21, 427, 477,
+ 471, 248, 472, 839, 473, 38, 39, 428, 657, 658,
+ 765, 813, 33, 34, 429, 821, 800, 815, 35, 474,
+ 215, 216, 878, 869, 357, 358, 217, 870, 218, 798,
+ 863, 826, 634, 477, 860, 858, 936, 937, 934, 820,
+ 209, 804, 806, 808, 811, 933, 763, 764, 1100, 1101,
+ 935, 659, 78, 335, 426, 359, 1102, 635, 639, 641,
+ 469, 643, 644, 647, 812, 826, 634, 40, 21, 427,
+ 649, 471, 650, 472, 652, 473, 653, 636, 428, 796,
+ 1226, 1228, 762, 33, 34, 429, 215, 216, 845, 35,
+ 474, 761, 217, 844, 218, 357, 358, 1227, 843, 1060,
+ 831, 1048, 842, 1049, 477, 559, 209, 1106, 1107, 1108,
+ 1109, 1103, 1104, 398, 1100, 1101, 829, 942, 867, 1110,
+ 1105, 868, 1102, 457, 1225, 1194, 1192, 1177, 1157, 219,
+ 1190, 1091, 917, 1198, 1188, 0, 826, 634, 24, -433,
+ 26, 31, 37, 42, 76, 77, 210, 287, 292, 293,
+ 308, 309, 310, 311, 339, 356, 416, 0, -227, -226,
+ 16, 17, 18, 393, 454, 461, 463, 467, 553, 625,
+ 1051, 559, 1054, 1106, 1107, 1108, 1109, 1103, 1104, 398,
+ 907, 1116, 1050, 1026, 564, 1110, 1105, 1025, 1093, 1055,
+ 0, 1044, 0, 1057, 1056, 219, 1059, 1058, 1075, 0,
+ 1191, 1176, 1172, 1189, 1090, 1223, 1117, 1171, 600
);
protected $actionCheck = array(
@@ -362,360 +362,359 @@ class Php5 extends \PhpParser\ParserAbstract
41, 42, 0, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 9, 10, 11, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 69, 70,
- 53, 54, 55, 9, 10, 57, 30, 80, 32, 33,
+ 53, 54, 55, 9, 10, 57, 30, 116, 32, 33,
34, 35, 36, 37, 38, 80, 69, 70, 83, 71,
- 72, 73, 74, 75, 76, 77, 9, 70, 80, 33,
+ 72, 73, 74, 75, 76, 77, 135, 136, 80, 33,
34, 35, 36, 37, 38, 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,
- 153, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 3, 4, 5, 6, 7, 147, 148, 149, 80, 12,
- 13, 159, 15, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 156, 44, 45, 46, 47, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 13, 106, 116, 108, 85, 50, 51, 33,
- 34, 35, 36, 56, 85, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 1, 70, 71, 72,
- 73, 59, 60, 13, 82, 78, 79, 80, 80, 82,
- 152, 153, 154, 86, 9, 10, 11, 8, 1, 2,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 9,
- 10, 11, 156, 106, 143, 30, 160, 32, 33, 34,
- 35, 36, 143, 116, 116, 117, 118, 119, 120, 121,
- 30, 124, 125, 116, 117, 118, 119, 120, 121, 13,
- 133, 134, 70, 136, 137, 138, 139, 140, 141, 142,
- 31, 37, 38, 8, 132, 148, 149, 116, 156, 152,
- 153, 154, 160, 37, 38, 158, 8, 160, 161, 8,
- 163, 74, 75, 76, 77, 134, 135, 80, 9, 10,
- 11, 84, 1, 80, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 155, 98, 0, 1, 2, 30,
- 103, 104, 105, 106, 132, 8, 109, 110, 9, 10,
- 11, 8, 115, 116, 117, 118, 9, 10, 11, 82,
- 123, 70, 8, 126, 127, 128, 129, 8, 156, 30,
- 155, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 9, 10, 11, 157, 53, 54, 55,
- 8, 57, 155, 156, 157, 152, 153, 154, 10, 11,
- 157, 80, 162, 69, 30, 151, 32, 33, 34, 35,
- 74, 1, 2, 159, 155, 71, 80, 151, 30, 8,
- 84, 37, 38, 87, 88, 89, 82, 91, 82, 93,
- 8, 95, 13, 156, 98, 158, 13, 160, 13, 103,
- 104, 105, 106, 82, 108, 109, 110, 156, 8, 113,
- 31, 115, 116, 117, 118, 9, 10, 11, 157, 123,
- 37, 38, 126, 127, 128, 129, 82, 13, 159, 33,
- 34, 35, 82, 127, 8, 85, 30, 156, 32, 33,
- 34, 160, 8, 147, 74, 1, 2, 50, 51, 52,
- 80, 155, 156, 157, 84, 31, 159, 87, 88, 89,
- 82, 91, 158, 93, 160, 95, 160, 106, 98, 108,
- 100, 101, 102, 103, 104, 105, 106, 133, 159, 109,
- 110, 160, 9, 10, 11, 115, 116, 117, 118, 9,
- 10, 11, 8, 123, 144, 145, 126, 127, 128, 129,
- 82, 82, 158, 30, 160, 32, 33, 108, 8, 70,
- 30, 31, 113, 152, 16, 9, 10, 11, 74, 14,
- 14, 122, 8, 8, 80, 155, 156, 157, 84, 13,
- 159, 87, 88, 89, 151, 91, 30, 93, 160, 95,
- 155, 159, 98, 14, 100, 101, 102, 103, 104, 105,
- 106, 133, 16, 109, 110, 155, 157, 1, 2, 115,
- 116, 117, 118, 9, 10, 11, 13, 123, 16, 155,
- 126, 127, 128, 129, 33, 34, 158, 158, 160, 160,
- 156, 9, 10, 11, 30, 37, 38, 31, 70, 155,
- 37, 38, 50, 51, 52, 156, 16, 81, 16, 155,
- 156, 157, 30, 16, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 16, 57,
- 74, 9, 10, 11, 1, 2, 80, 116, 11, 155,
- 84, 69, 156, 87, 88, 89, 160, 91, 30, 93,
- 132, 95, 30, 33, 98, 134, 135, 30, 57, 103,
- 104, 105, 69, 70, 31, 109, 110, 75, 76, 155,
- 155, 115, 116, 75, 76, 101, 102, 111, 112, 123,
- 159, 155, 156, 155, 156, 155, 156, 31, 1, 2,
- 31, 31, 31, 31, 31, 38, 70, 69, 77, 70,
- 70, 70, 70, 80, 70, 70, 70, 74, 71, 85,
- 85, 155, 156, 80, 97, 96, 100, 84, 31, 106,
- 87, 88, 89, 82, 91, 82, 93, 82, 95, 89,
- 92, 98, 1, 2, 90, 127, 103, 104, 105, 97,
- 94, 127, 109, 110, 97, 97, 97, 132, 115, 116,
- 100, 146, 113, 143, 143, 146, 123, 106, 151, 155,
- 157, 74, 31, 157, 162, -1, 114, 80, -1, 116,
- -1, 84, -1, -1, 87, 88, 89, -1, 91, -1,
- 93, -1, 95, -1, 130, 98, 1, 2, 155, 156,
- 103, 104, 105, -1, 130, -1, 109, 110, 131, -1,
- 132, 132, 115, 116, 132, 74, -1, 152, 150, -1,
- 123, 80, 146, -1, -1, 84, 31, 146, 87, 88,
- 89, 146, 91, 146, 93, 146, 95, 146, 150, 98,
- 1, 2, 156, 159, 103, 104, 105, 155, 155, 155,
- 109, 110, 155, 156, 155, 155, 115, 116, 155, 155,
- 155, 155, 155, 155, 123, 155, 155, 155, 155, 74,
- 155, 155, 155, 155, 155, 80, 155, 155, 155, 84,
- 155, 155, 87, 88, 89, 155, 91, 155, 93, 156,
- 95, 156, 156, 98, 156, 156, 155, 156, 103, 104,
- 105, 156, 156, 156, 109, 110, 156, 156, 156, 156,
- 115, 116, 156, 74, 157, 157, 157, 157, 123, 80,
- 31, 157, 157, 84, 157, 157, 87, 88, 89, 157,
- 91, 157, 93, 157, 95, 157, 157, 98, 157, 50,
- 51, 157, 103, 104, 105, 56, 157, 58, 109, 110,
- 155, 156, 158, 157, 115, 116, 157, 157, 157, 70,
- 157, 157, 123, 157, 50, 51, 157, 78, 79, 157,
- 56, 157, 58, 157, 159, 86, 158, 158, 158, 158,
- 158, 158, 158, 158, 70, 158, 158, 158, 158, 158,
- 158, 158, 78, 79, 155, 156, 158, 160, 158, 163,
- 86, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+ 31, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 13, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 3, 4, 5, 6, 7, 148, 149, 150, 82,
+ 12, 13, 160, 15, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 8, 44, 45, 46, 47, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 80, 33, 34, 35, 36, 50, 51,
+ 13, 9, 10, 11, 56, 128, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 1, 70, 71,
+ 72, 73, 59, 60, 37, 38, 78, 79, 80, 82,
+ 82, 106, 85, 108, 86, 9, 10, 11, 161, 80,
+ 1, 2, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 9, 10, 11, 106, 156, 30, 8, 32, 33,
+ 34, 35, 36, 13, 116, 8, 153, 154, 155, 8,
+ 122, 158, 30, 125, 126, 116, 117, 118, 119, 120,
+ 121, 31, 134, 135, 156, 137, 138, 139, 140, 141,
+ 142, 143, 145, 146, 8, 8, 133, 149, 150, 37,
+ 38, 153, 154, 155, 9, 10, 11, 159, 8, 161,
+ 162, 8, 164, 74, 75, 76, 77, 8, 13, 80,
+ 0, 1, 2, 84, 158, 30, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 13, 98, 9, 10,
+ 11, 9, 103, 104, 105, 106, 8, 70, 109, 110,
+ 9, 10, 11, 8, 115, 116, 117, 118, 70, 30,
+ 31, 37, 38, 124, 31, 8, 127, 128, 129, 130,
+ 8, 30, 156, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 116, 117, 118, 119, 120,
+ 121, 8, 82, 8, 74, 156, 157, 158, 33, 34,
+ 80, 1, 2, 8, 84, 163, 82, 87, 88, 89,
+ 133, 91, 70, 93, 152, 95, 108, 82, 98, 158,
+ 8, 113, 160, 103, 104, 105, 106, 13, 108, 109,
+ 110, 123, 122, 113, 157, 115, 116, 117, 118, 9,
+ 10, 11, 156, 71, 124, 157, 122, 127, 128, 129,
+ 130, 37, 38, 8, 82, 160, 156, 13, 134, 156,
+ 30, 156, 32, 33, 34, 35, 158, 157, 148, 159,
+ 122, 161, 80, 1, 74, 133, 156, 157, 158, 156,
+ 80, 1, 2, 159, 84, 161, 82, 87, 88, 89,
+ 157, 91, 157, 93, 122, 95, 161, 106, 98, 108,
+ 100, 101, 102, 103, 104, 105, 106, 159, 116, 109,
+ 110, 9, 10, 11, 13, 115, 116, 117, 118, 9,
+ 10, 11, 160, 16, 124, 81, 122, 127, 128, 129,
+ 130, 159, 30, 161, 32, 33, 34, 13, 134, 156,
+ 30, 156, 32, 33, 153, 153, 154, 155, 70, 9,
+ 10, 11, 80, 80, 74, 160, 156, 157, 158, 14,
+ 80, 37, 38, 159, 84, 161, 152, 87, 88, 89,
+ 30, 91, 160, 93, 14, 95, 37, 38, 98, 16,
+ 100, 101, 102, 103, 104, 105, 106, 70, 82, 109,
+ 110, 82, 33, 34, 35, 115, 116, 117, 118, 16,
+ 1, 2, 10, 11, 124, 160, 85, 127, 128, 129,
+ 130, 9, 10, 11, 82, 11, 14, 157, 9, 10,
+ 11, 161, 30, 85, 53, 54, 55, 154, 57, 157,
+ 31, 122, 30, 161, 30, 157, 156, 157, 158, 30,
+ 69, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 144, 57, 161, 159, 16,
+ 161, 1, 2, 74, 157, 16, 152, 157, 69, 80,
+ 116, 161, 144, 84, 69, 70, 87, 88, 89, 16,
+ 91, 16, 93, 161, 95, 75, 76, 98, 30, 135,
+ 136, 31, 103, 104, 105, 1, 2, 31, 109, 110,
+ 9, 10, 11, 31, 115, 116, 50, 51, 52, 50,
+ 51, 52, 31, 124, 160, 75, 76, 101, 102, 111,
+ 112, 30, 156, 157, 31, 31, 156, 157, 156, 157,
+ 31, 31, 57, 38, 74, 33, 69, 80, 70, 70,
+ 80, 70, 89, 70, 84, 156, 157, 87, 88, 89,
+ 70, 91, 70, 93, 70, 95, 70, 96, 98, 71,
+ 77, 82, 85, 103, 104, 105, 1, 2, 74, 109,
+ 110, 82, 82, 97, 80, 115, 116, 85, 84, 92,
+ 106, 87, 88, 89, 124, 91, 90, 93, 133, 95,
+ 128, 94, 98, 147, 116, 97, 31, 103, 104, 105,
+ 1, 2, 97, 109, 110, 97, 97, 100, 144, 115,
+ 116, 100, 106, 128, 113, 161, 156, 157, 124, -1,
+ -1, 151, -1, -1, 114, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, 131, 131, -1, -1, -1, 74,
+ -1, -1, -1, -1, 132, 80, 133, 133, 133, 84,
+ 156, 157, 87, 88, 89, -1, 91, -1, 93, -1,
+ 95, 144, -1, 98, -1, 147, 147, 147, 103, 104,
+ 105, 1, 2, 74, 109, 110, 147, 147, 147, 80,
+ 115, 116, 147, 84, 151, 153, 87, 88, 89, 124,
+ 91, 31, 93, 152, 95, 156, 156, 98, 156, 156,
+ 156, 156, 103, 104, 105, 156, 156, 156, 109, 110,
+ 50, 51, 156, 156, 115, 116, 56, 156, 58, 156,
+ 156, 156, 157, 124, 156, 156, 156, 156, 156, 156,
+ 70, 156, 156, 156, 156, 156, 156, 156, 78, 79,
+ 156, 158, 157, 157, 74, 157, 86, 157, 157, 157,
+ 80, 157, 157, 157, 84, 156, 157, 87, 88, 89,
+ 157, 91, 157, 93, 157, 95, 157, 157, 98, 158,
+ 158, 158, 158, 103, 104, 105, 50, 51, 158, 109,
+ 110, 158, 56, 158, 58, 115, 116, 158, 158, 158,
+ 158, 158, 158, 158, 124, 135, 70, 137, 138, 139,
+ 140, 141, 142, 143, 78, 79, 158, 158, 158, 149,
+ 150, 158, 86, 158, 158, 158, 158, 158, 164, 159,
+ 158, 158, 158, 158, 158, -1, 156, 157, 159, 162,
159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
- -1, -1, 161, 134, 161, 136, 137, 138, 139, 140,
- 141, 142, 162, 162, 162, 162, 162, 148, 149, 162,
- 162, 162, 162, 162, 162, 162, 162, 158, 134, 162,
- 136, 137, 138, 139, 140, 141, 142, -1, -1, -1,
- -1, -1, 148, 149, -1, -1, -1, -1, -1, -1,
- -1, -1, 158
+ 159, 159, 159, 159, 159, 159, 159, -1, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 135, 160, 137, 138, 139, 140, 141, 142, 143,
+ 160, 160, 160, 160, 160, 149, 150, 160, 160, 163,
+ -1, 162, -1, 163, 163, 159, 163, 163, 163, -1,
+ 163, 163, 163, 163, 163, 163, 163, 163, 163
);
protected $actionBase = array(
- 0, 227, 326, 400, 474, 233, 132, 132, 752, -2,
- -2, 138, -2, -2, -2, 663, 761, 815, 761, 586,
- 717, 859, 859, 859, 244, 256, 256, 256, 413, 583,
- 583, 880, 546, 169, 415, 444, 409, 200, 200, 200,
- 200, 137, 137, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 249, 205, 738, 559,
- 535, 739, 741, 742, 876, 679, 877, 820, 821, 693,
- 823, 824, 826, 829, 832, 819, 834, 907, 836, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 67, 536, 299, 510, 230, 44, 652, 652, 652,
- 652, 652, 652, 652, 337, 337, 337, 337, 337, 337,
- 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
- 337, 337, 378, 584, 584, 584, 657, 909, 648, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
- 934, 934, 934, 503, -21, -21, 436, 650, 364, 571,
- 215, 426, 156, 26, 26, 329, 329, 329, 329, 329,
- 46, 46, 5, 5, 5, 5, 152, 186, 186, 186,
- 186, 120, 120, 120, 120, 374, 374, 429, 448, 448,
- 334, 267, 449, 449, 449, 449, 449, 449, 449, 449,
- 449, 449, 336, 427, 427, 572, 572, 408, 551, 551,
- 551, 551, 671, 171, 171, 391, 311, 311, 311, 109,
- 641, 856, 68, 68, 68, 68, 68, 68, 324, 324,
- 324, -3, -3, -3, 655, 77, 380, 77, 380, 683,
- 685, 86, 685, 654, -15, 516, 776, 281, 646, 809,
- 680, 816, 560, 711, 202, 578, 857, 643, -23, 578,
- 578, 578, 578, 857, 622, 628, 596, -23, 578, -23,
- 639, 454, 849, 351, 249, 558, 469, 631, 743, 514,
- 688, 746, 464, 544, 548, 556, 7, 412, 708, 750,
- 878, 879, 349, 702, 631, 631, 631, 327, 101, 7,
- -8, 623, 623, 623, 623, 219, 623, 623, 623, 623,
- 291, 430, 545, 401, 745, 653, 653, 675, 839, 814,
- 814, 653, 673, 653, 675, 841, 841, 841, 841, 653,
- 653, 653, 653, 814, 814, 667, 814, 275, 684, 694,
- 694, 841, 713, 714, 653, 653, 697, 814, 814, 814,
- 697, 687, 841, 669, 637, 333, 814, 841, 689, 673,
- 689, 653, 669, 689, 673, 673, 689, 22, 686, 656,
- 840, 842, 860, 756, 638, 644, 847, 848, 843, 845,
- 838, 692, 719, 720, 528, 659, 660, 661, 662, 696,
- 664, 698, 643, 658, 658, 658, 645, 701, 645, 658,
- 658, 658, 658, 658, 658, 658, 658, 632, 635, 709,
- 699, 670, 723, 566, 582, 758, 640, 636, 872, 865,
- 881, 883, 849, 870, 645, 890, 634, 288, 610, 850,
- 633, 753, 645, 851, 645, 759, 645, 873, 777, 666,
- 778, 779, 658, 874, 891, 892, 893, 894, 897, 898,
- 899, 900, 665, 901, 724, 674, 866, 344, 844, 639,
- 705, 677, 755, 725, 780, 372, 902, 784, 645, 645,
- 765, 706, 645, 766, 726, 712, 862, 727, 867, 903,
- 640, 678, 868, 645, 681, 785, 904, 372, 690, 651,
- 704, 649, 728, 858, 875, 853, 767, 612, 617, 787,
- 788, 792, 691, 730, 863, 864, 835, 731, 770, 642,
- 771, 676, 794, 772, 852, 732, 796, 798, 871, 647,
- 707, 682, 672, 668, 773, 799, 869, 733, 735, 736,
- 801, 737, 804, 0, 0, 0, 0, 0, 0, 0,
+ 0, 229, 310, 390, 470, 103, 325, 325, 784, -2,
+ -2, 149, -2, -2, -2, 660, 765, 799, 765, 589,
+ 694, 870, 870, 870, 252, 404, 404, 404, 514, 177,
+ 177, 918, 434, 118, 295, 313, 240, 491, 491, 491,
+ 491, 138, 138, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 89, 206, 773, 550,
+ 535, 775, 776, 777, 912, 709, 913, 856, 857, 700,
+ 858, 859, 862, 863, 864, 855, 865, 935, 866, 599,
+ 599, 599, 599, 599, 599, 599, 599, 599, 599, 599,
+ 599, 322, 592, 285, 319, 232, 44, 691, 691, 691,
+ 691, 691, 691, 691, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 582, 530, 530, 530, 594, 860, 658, 926,
+ 926, 926, 926, 926, 926, 926, 926, 926, 926, 926,
+ 926, 926, 926, 926, 926, 926, 926, 926, 926, 926,
+ 926, 926, 926, 926, 926, 926, 926, 926, 926, 926,
+ 926, 926, 926, 926, 926, 926, 926, 926, 926, 926,
+ 926, 926, 926, 500, -21, -21, 492, 702, 420, 355,
+ 216, 549, 151, 26, 26, 331, 331, 331, 331, 331,
+ 46, 46, 5, 5, 5, 5, 153, 188, 188, 188,
+ 188, 121, 121, 121, 121, 314, 314, 394, 394, 362,
+ 300, 298, 499, 499, 499, 499, 499, 499, 499, 499,
+ 499, 499, 67, 656, 656, 659, 659, 522, 554, 554,
+ 554, 554, 679, -59, -59, 381, 462, 462, 462, 528,
+ 717, 854, 382, 382, 382, 382, 382, 382, 561, 561,
+ 561, -3, -3, -3, 692, 115, 137, 115, 137, 678,
+ 732, 450, 732, 338, 677, -15, 510, 810, 468, 707,
+ 850, 711, 853, 572, 735, 267, 529, 654, 674, 463,
+ 529, 529, 529, 529, 654, 610, 640, 608, 463, 529,
+ 463, 718, 323, 496, 89, 570, 507, 675, 778, 293,
+ 670, 780, 290, 373, 332, 566, 278, 435, 733, 781,
+ 914, 917, 385, 715, 675, 675, 675, 352, 511, 278,
+ -8, 605, 605, 605, 605, 156, 605, 605, 605, 605,
+ 251, 276, 375, 402, 779, 657, 657, 690, 872, 869,
+ 869, 657, 689, 657, 690, 874, 874, 874, 874, 657,
+ 657, 657, 657, 869, 869, 869, 688, 869, 239, 703,
+ 704, 704, 874, 742, 743, 657, 657, 712, 869, 869,
+ 869, 712, 695, 874, 701, 741, 277, 869, 874, 672,
+ 689, 672, 657, 701, 672, 689, 689, 672, 22, 666,
+ 668, 873, 875, 887, 790, 662, 685, 879, 880, 876,
+ 878, 871, 699, 744, 745, 497, 669, 671, 673, 680,
+ 719, 682, 713, 674, 667, 667, 667, 655, 720, 655,
+ 667, 667, 667, 667, 667, 667, 667, 667, 916, 646,
+ 731, 714, 653, 749, 553, 573, 791, 664, 811, 900,
+ 893, 867, 919, 881, 898, 655, 920, 739, 247, 643,
+ 882, 783, 786, 655, 883, 655, 792, 655, 902, 812,
+ 686, 813, 814, 667, 910, 921, 923, 924, 925, 927,
+ 928, 929, 930, 684, 931, 750, 696, 894, 299, 877,
+ 718, 729, 705, 788, 751, 820, 328, 932, 823, 655,
+ 655, 794, 785, 655, 795, 756, 740, 890, 757, 895,
+ 933, 664, 708, 896, 655, 706, 825, 934, 328, 681,
+ 683, 888, 661, 761, 886, 911, 885, 796, 649, 663,
+ 829, 830, 831, 693, 763, 891, 892, 889, 764, 803,
+ 665, 805, 697, 832, 807, 884, 768, 833, 834, 899,
+ 676, 730, 710, 698, 687, 809, 835, 897, 769, 770,
+ 771, 848, 772, 849, 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, 0,
- 0, 0, 0, 137, 137, 137, 137, -2, -2, -2,
- -2, 0, 0, -2, 0, 0, 0, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 0, 0, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 602, -21, -21, -21, -21, 602, -21,
- -21, -21, -21, -21, -21, -21, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, -21, 602, 602, 602, -21, 68,
- -21, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 602, 0, 0, 602, -21,
- 602, -21, 602, -21, -21, 602, 602, 602, 602, 602,
- 602, 602, -21, -21, -21, -21, -21, -21, 0, 324,
- 324, 324, 324, -21, -21, -21, -21, 68, 68, 147,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 324, 324, -3, -3, 68,
- 68, 68, 68, 68, 147, 68, 68, -23, 673, 673,
- 673, 380, 380, 380, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 380, -23, 0, -23,
- 0, 68, -23, 673, -23, 380, 673, 673, -23, 814,
- 604, 604, 604, 604, 372, 7, 0, 0, 673, 673,
- 0, 0, 0, 0, 0, 673, 0, 0, 0, 0,
- 0, 0, 814, 0, 653, 0, 0, 0, 0, 658,
- 288, 0, 677, 456, 0, 0, 0, 0, 0, 0,
- 677, 456, 530, 530, 0, 665, 658, 658, 658, 0,
+ 0, 0, 0, 0, 138, 138, 138, 138, -2, -2,
+ -2, -2, 0, 0, -2, 0, 0, 0, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 0, 0, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 599,
+ 599, 599, 599, 599, 599, 599, 599, 599, 599, 599,
+ 599, 599, 599, 599, 599, 599, 599, 599, 599, 599,
+ 599, 599, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 599, -21, -21, -21, -21, 599,
+ -21, -21, -21, -21, -21, -21, -21, 599, 599, 599,
+ 599, 599, 599, 599, 599, 599, 599, 599, 599, 599,
+ 599, 599, 599, 599, 599, -21, 599, 599, 599, -21,
+ 382, -21, 382, 382, 382, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 599, 0, 0, 599,
+ -21, 599, -21, 599, -21, -21, 599, 599, 599, 599,
+ 599, 599, 599, -21, -21, -21, -21, -21, -21, 0,
+ 561, 561, 561, 561, -21, -21, -21, -21, 382, 382,
+ 382, 382, 382, 382, 259, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 561, 561, -3, -3,
+ 382, 382, 382, 382, 382, 259, 382, 382, 463, 689,
+ 689, 689, 137, 137, 137, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 137, 463, 0,
+ 463, 0, 382, 463, 689, 463, 657, 137, 689, 689,
+ 463, 869, 616, 616, 616, 616, 328, 278, 0, 0,
+ 689, 689, 0, 0, 0, 0, 0, 689, 0, 0,
+ 0, 0, 0, 0, 869, 0, 0, 0, 0, 0,
+ 667, 247, 0, 705, 335, 0, 0, 0, 0, 0,
+ 0, 705, 335, 347, 347, 0, 684, 667, 667, 667,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 372
+ 0, 0, 0, 0, 0, 0, 0, 328
);
protected $actionDefault = array(
3,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767, 540, 540, 495,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 297, 297, 297,
- 32767,32767,32767, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528,32767,32767,32767,32767,32767,32767,
- 381,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767, 544, 544, 499,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 299, 299, 299,
+ 32767,32767,32767, 532, 532, 532, 532, 532, 532, 532,
+ 532, 532, 532, 532,32767,32767,32767,32767,32767,32767,
+ 383,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,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 387,
- 545,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 362,
- 363, 365, 366, 296, 548, 529, 245, 388, 544, 295,
- 247, 325, 499,32767,32767,32767, 327, 122, 256, 201,
- 498, 125, 294, 232, 380, 382, 326, 301, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 300, 454, 359, 358, 357, 456,32767, 455, 492,
- 492, 495,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 389,
+ 549,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 364,
+ 365, 367, 368, 298, 552, 533, 247, 390, 548, 297,
+ 249, 327, 503,32767,32767,32767, 329, 122, 258, 203,
+ 502, 125, 296, 234, 382, 384, 328, 303, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 302, 458, 361, 360, 359, 460,32767, 459, 496,
+ 496, 499,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, 323, 483, 482, 324, 452, 328, 453,
- 331, 457, 460, 329, 330, 347, 348, 345, 346, 349,
- 458, 459, 476, 477, 474, 475, 299, 350, 351, 352,
- 353, 478, 479, 480, 481,32767,32767, 280, 539, 539,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 338, 339, 467, 468,32767, 236, 236,
- 236, 236, 281, 236,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767, 333, 334,
- 332, 462, 463, 461, 428,32767,32767,32767, 430,32767,
- 32767,32767,32767,32767,32767,32767,32767, 500,32767,32767,
- 32767,32767,32767, 513, 417, 171,32767, 409,32767, 171,
- 171, 171, 171,32767, 220, 222, 167,32767, 171,32767,
- 486,32767,32767,32767,32767,32767, 518, 343,32767,32767,
- 116,32767,32767,32767, 555,32767, 513,32767, 116,32767,
- 32767,32767,32767, 356, 335, 336, 337,32767,32767, 517,
- 511, 470, 471, 472, 473,32767, 464, 465, 466, 469,
- 32767,32767,32767,32767,32767,32767,32767,32767, 425, 431,
- 431,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 516, 515,32767, 410, 494, 186, 184,
- 184,32767, 206, 206,32767,32767, 188, 487, 506,32767,
- 188, 173,32767, 398, 175, 494,32767,32767, 238,32767,
- 238,32767, 398, 238,32767,32767, 238,32767, 411, 435,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767, 377, 378, 489, 502,32767,
- 503,32767, 409, 341, 342, 344, 320,32767, 322, 367,
- 368, 369, 370, 371, 372, 373, 375,32767, 415,32767,
- 418,32767,32767,32767, 255,32767, 553,32767,32767, 304,
- 553,32767,32767,32767, 547,32767,32767, 298,32767,32767,
- 32767,32767, 251,32767, 169,32767, 537,32767, 554,32767,
- 511,32767, 340,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 512,32767,32767,32767,32767, 227,32767, 448,
- 32767, 116,32767,32767,32767, 187,32767,32767, 302, 246,
- 32767,32767, 546,32767,32767,32767,32767,32767,32767,32767,
- 32767, 114,32767, 170,32767,32767,32767, 189,32767,32767,
- 511,32767,32767,32767,32767,32767,32767,32767, 293,32767,
- 32767,32767,32767,32767,32767,32767, 511,32767,32767, 231,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 411,
- 32767, 274,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767, 127, 127, 3, 127, 127, 258, 3,
- 258, 127, 258, 258, 127, 127, 127, 127, 127, 127,
- 127, 127, 127, 127, 214, 217, 206, 206, 164, 127,
- 127, 266
+ 32767,32767,32767, 325, 487, 486, 326, 456, 330, 457,
+ 333, 461, 464, 331, 332, 349, 350, 347, 348, 351,
+ 462, 463, 480, 481, 478, 479, 301, 352, 353, 354,
+ 355, 482, 483, 484, 485,32767,32767, 543, 543,32767,
+ 32767, 282,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 340, 341, 471, 472,32767, 238, 238,
+ 238, 238, 283, 238,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 335, 336,
+ 334, 466, 467, 465, 432,32767,32767,32767, 434,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 504,32767,
+ 32767,32767,32767,32767, 517, 421, 171,32767, 413,32767,
+ 171, 171, 171, 171,32767, 222, 224, 167,32767, 171,
+ 32767, 490,32767,32767,32767,32767, 522, 345,32767,32767,
+ 116,32767,32767,32767, 559,32767, 517,32767, 116,32767,
+ 32767,32767,32767, 358, 337, 338, 339,32767,32767, 521,
+ 515, 474, 475, 476, 477,32767, 468, 469, 470, 473,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 429, 435,
+ 435,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767, 520, 519,32767, 414, 498, 188,
+ 186, 186,32767, 208, 208,32767,32767, 190, 491, 510,
+ 32767, 190, 173,32767, 400, 175, 498,32767,32767, 240,
+ 32767, 240,32767, 400, 240,32767,32767, 240,32767, 415,
+ 439,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767, 379, 380, 493, 506,
+ 32767, 507,32767, 413, 343, 344, 346, 322,32767, 324,
+ 369, 370, 371, 372, 373, 374, 375, 377,32767, 419,
+ 32767, 422,32767,32767,32767, 257,32767, 557,32767,32767,
+ 306, 557,32767,32767,32767, 551,32767,32767, 300,32767,
+ 32767,32767,32767, 253,32767, 169,32767, 541,32767, 558,
+ 32767, 515,32767, 342,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 516,32767,32767,32767,32767, 229,32767,
+ 452,32767, 116,32767,32767,32767, 189,32767,32767, 304,
+ 248,32767,32767, 550,32767,32767,32767,32767,32767,32767,
+ 32767,32767, 114,32767, 170,32767,32767,32767, 191,32767,
+ 32767, 515,32767,32767,32767,32767,32767,32767,32767, 295,
+ 32767,32767,32767,32767,32767,32767,32767, 515,32767,32767,
+ 233,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 415,32767, 276,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767, 127, 127, 3, 127, 127, 260,
+ 3, 260, 127, 260, 260, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 216, 219, 208, 208, 164,
+ 127, 127, 268
);
protected $goto = array(
166, 140, 140, 140, 166, 187, 168, 144, 147, 141,
142, 143, 149, 163, 163, 163, 163, 144, 144, 165,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
- 138, 159, 160, 161, 162, 184, 139, 185, 493, 494,
- 377, 495, 499, 500, 501, 502, 503, 504, 505, 506,
- 967, 164, 145, 146, 148, 171, 176, 186, 203, 253,
+ 138, 159, 160, 161, 162, 184, 139, 185, 494, 495,
+ 377, 496, 500, 501, 502, 503, 504, 505, 506, 507,
+ 970, 164, 145, 146, 148, 171, 176, 186, 203, 253,
256, 258, 260, 263, 264, 265, 266, 267, 268, 269,
277, 278, 279, 280, 303, 304, 328, 329, 330, 394,
- 395, 396, 542, 188, 189, 190, 191, 192, 193, 194,
+ 395, 396, 543, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201, 150, 151, 152,
167, 153, 169, 154, 204, 170, 155, 156, 157, 205,
- 158, 136, 620, 560, 756, 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, 560, 560, 560, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 1108,
- 628, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1108, 757, 888, 888, 508, 1200,
- 1200, 400, 606, 508, 536, 536, 568, 532, 534, 534,
- 496, 498, 524, 540, 569, 572, 583, 590, 852, 852,
- 852, 852, 847, 853, 174, 585, 519, 600, 601, 177,
+ 158, 136, 621, 561, 757, 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, 561, 561, 561, 561, 561, 561, 561, 561,
+ 561, 561, 561, 561, 561, 561, 561, 561, 561, 1113,
+ 629, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 758, 520, 531, 509, 656,
+ 556, 1183, 750, 509, 592, 786, 1183, 888, 612, 613,
+ 884, 617, 618, 624, 626, 631, 633, 817, 855, 855,
+ 855, 855, 850, 856, 174, 891, 891, 1205, 1205, 177,
178, 179, 401, 402, 403, 404, 173, 202, 206, 208,
257, 259, 261, 262, 270, 271, 272, 273, 274, 275,
281, 282, 283, 284, 305, 306, 331, 332, 333, 406,
407, 408, 409, 175, 180, 254, 255, 181, 182, 183,
- 497, 497, 785, 497, 497, 497, 497, 497, 497, 497,
- 497, 497, 497, 497, 497, 497, 497, 509, 578, 582,
- 626, 749, 509, 544, 545, 546, 547, 548, 549, 550,
- 551, 553, 586, 338, 559, 321, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 530, 349, 655, 555, 587, 352, 414, 591, 575, 604,
- 885, 611, 612, 881, 616, 617, 623, 625, 630, 632,
- 298, 296, 296, 296, 298, 290, 299, 944, 610, 816,
- 1170, 613, 436, 436, 375, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436, 436, 1072,
- 1084, 1083, 945, 1065, 1072, 895, 895, 895, 895, 1178,
- 895, 895, 1212, 1212, 1178, 388, 858, 561, 755, 1072,
- 1072, 1072, 1072, 1072, 1072, 3, 4, 384, 384, 384,
- 1212, 874, 856, 854, 856, 654, 465, 511, 883, 878,
- 1089, 541, 384, 537, 384, 567, 384, 1026, 19, 15,
- 371, 384, 1226, 510, 1204, 1192, 1192, 1192, 510, 906,
- 372, 522, 533, 554, 912, 514, 1068, 1069, 13, 1065,
- 378, 912, 1158, 594, 23, 965, 386, 386, 386, 602,
- 1066, 1169, 1066, 937, 447, 449, 631, 752, 1177, 1067,
- 1109, 614, 935, 1177, 605, 1197, 391, 1211, 1211, 543,
- 892, 386, 1194, 1194, 1194, 399, 518, 1016, 901, 389,
- 771, 529, 752, 340, 752, 1211, 518, 518, 385, 781,
- 1214, 770, 772, 1063, 910, 774, 1058, 1176, 659, 953,
- 514, 782, 862, 915, 450, 573, 1155, 0, 463, 0,
+ 498, 498, 498, 498, 498, 498, 861, 498, 498, 498,
+ 498, 498, 498, 498, 498, 498, 498, 510, 586, 538,
+ 601, 602, 510, 545, 546, 547, 548, 549, 550, 551,
+ 552, 554, 587, 1209, 560, 350, 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, 560, 560, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
+ 400, 607, 537, 537, 569, 533, 909, 535, 535, 497,
+ 499, 525, 541, 570, 573, 584, 591, 298, 296, 296,
+ 296, 298, 289, 299, 611, 378, 511, 614, 595, 947,
+ 375, 511, 437, 437, 437, 437, 437, 437, 1163, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437, 437, 1077,
+ 948, 338, 1175, 321, 1077, 898, 898, 898, 898, 606,
+ 898, 898, 1217, 1217, 1202, 753, 576, 605, 756, 1077,
+ 1077, 1077, 1077, 1077, 1077, 1069, 384, 384, 384, 391,
+ 1217, 877, 859, 857, 859, 655, 466, 512, 886, 881,
+ 753, 384, 753, 384, 968, 384, 895, 385, 588, 353,
+ 414, 384, 1231, 1019, 542, 1197, 1197, 1197, 568, 1094,
+ 386, 386, 386, 904, 915, 515, 1029, 19, 15, 372,
+ 389, 915, 940, 448, 450, 632, 340, 1216, 1216, 1114,
+ 615, 938, 840, 555, 775, 386, 913, 1070, 1073, 1074,
+ 399, 1069, 1182, 660, 23, 1216, 773, 1182, 544, 603,
+ 1066, 1219, 1071, 1174, 1071, 519, 1199, 1199, 1199, 1089,
+ 1088, 1072, 343, 523, 534, 519, 519, 772, 351, 352,
+ 13, 579, 583, 627, 1061, 388, 782, 562, 771, 515,
+ 783, 1181, 3, 4, 918, 956, 865, 451, 574, 1160,
+ 464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 514, 529, 0, 0, 0, 0,
+ 514, 0, 529, 0, 0, 0, 0, 610, 513, 516,
+ 439, 440, 1067, 619, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 780, 1224, 0, 0, 0, 0,
+ 0, 524, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 778, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 513, 528, 0, 0, 0, 0,
- 513, 0, 528, 0, 350, 351, 0, 609, 512, 515,
- 438, 439, 1064, 618, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 779, 1219, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 777, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 523, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 301, 301
+ 0, 0, 0, 0, 0, 0, 0, 0, 301, 301
);
protected $gotoCheck = array(
@@ -730,96 +729,95 @@ class Php5 extends \PhpParser\ParserAbstract
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 57, 68, 15, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 126,
- 9, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 16, 76, 76, 68, 76,
- 76, 51, 51, 68, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 68, 68,
- 68, 68, 68, 68, 27, 66, 101, 66, 66, 27,
+ 43, 43, 57, 69, 15, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 128,
+ 9, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 16, 102, 32, 69, 32,
+ 32, 120, 6, 69, 32, 29, 120, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 50, 69, 69,
+ 69, 69, 69, 69, 27, 77, 77, 77, 77, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
- 117, 117, 29, 117, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 61, 61,
- 61, 6, 117, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 125, 57, 125, 57, 57, 57, 57,
+ 119, 119, 119, 119, 119, 119, 33, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 67, 110,
+ 67, 67, 119, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 142, 57, 72, 57, 57, 57, 57,
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 32, 71, 32, 32, 69, 69, 69, 32, 40, 40,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 5, 5, 5, 5, 5, 5, 5, 97, 62, 50,
- 81, 62, 57, 57, 62, 57, 57, 57, 57, 57,
+ 51, 51, 51, 51, 51, 51, 84, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 5, 5, 5,
+ 5, 5, 5, 5, 63, 46, 124, 63, 129, 98,
+ 63, 124, 57, 57, 57, 57, 57, 57, 133, 57,
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 124, 124, 97, 81, 57, 57, 57, 57, 57, 118,
- 57, 57, 142, 142, 118, 12, 33, 12, 14, 57,
- 57, 57, 57, 57, 57, 30, 30, 13, 13, 13,
- 142, 14, 14, 14, 14, 14, 57, 14, 14, 14,
- 34, 2, 13, 109, 13, 2, 13, 34, 34, 34,
- 34, 13, 13, 122, 140, 9, 9, 9, 122, 83,
- 58, 58, 58, 34, 13, 13, 81, 81, 58, 81,
- 46, 13, 131, 127, 34, 101, 123, 123, 123, 34,
- 81, 81, 81, 8, 8, 8, 8, 11, 119, 81,
- 8, 8, 8, 119, 49, 138, 48, 141, 141, 47,
- 78, 123, 119, 119, 119, 123, 47, 102, 80, 17,
- 23, 9, 11, 18, 11, 141, 47, 47, 11, 23,
- 141, 23, 24, 115, 84, 25, 113, 119, 73, 99,
- 13, 26, 70, 85, 64, 65, 130, -1, 108, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 98, 127, 82, 127, 57, 57, 57, 57, 57, 49,
+ 57, 57, 144, 144, 140, 11, 40, 40, 14, 57,
+ 57, 57, 57, 57, 57, 82, 13, 13, 13, 48,
+ 144, 14, 14, 14, 14, 14, 57, 14, 14, 14,
+ 11, 13, 11, 13, 102, 13, 79, 11, 70, 70,
+ 70, 13, 13, 103, 2, 9, 9, 9, 2, 34,
+ 125, 125, 125, 81, 13, 13, 34, 34, 34, 34,
+ 17, 13, 8, 8, 8, 8, 18, 143, 143, 8,
+ 8, 8, 9, 34, 25, 125, 85, 82, 82, 82,
+ 125, 82, 121, 74, 34, 143, 24, 121, 47, 34,
+ 116, 143, 82, 82, 82, 47, 121, 121, 121, 126,
+ 126, 82, 58, 58, 58, 47, 47, 23, 72, 72,
+ 58, 62, 62, 62, 114, 12, 23, 12, 23, 13,
+ 26, 121, 30, 30, 86, 100, 71, 65, 66, 132,
+ 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 9, 9, -1, -1, -1, -1,
- 9, -1, 9, -1, 71, 71, -1, 13, 9, 9,
+ 9, -1, 9, -1, -1, -1, -1, 13, 9, 9,
9, 9, 13, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 9, 9, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 9, 9, -1, -1, -1, -1,
+ -1, 102, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 9, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 5, 5
+ -1, -1, -1, -1, -1, -1, -1, -1, 5, 5
);
protected $gotoBase = array(
- 0, 0, -184, 0, 0, 356, 290, 0, 488, 149,
- 0, 182, 85, 118, 426, 112, 203, 179, 208, 0,
- 0, 0, 0, 162, 190, 198, 120, 27, 0, 272,
- -224, 0, -274, 406, 32, 0, 0, 0, 0, 0,
- 330, 0, 0, -24, 0, 0, 440, 485, 213, 218,
- 371, -74, 0, 0, 0, 0, 0, 107, 110, 0,
- 0, -11, -72, 0, 104, 95, -405, 0, -94, 41,
- 119, -82, 0, 164, 0, 0, -79, 0, 197, 0,
- 204, 43, 0, 441, 171, 121, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 100, 0, 115,
- 0, 195, 210, 0, 0, 0, 0, 0, 86, 427,
- 259, 0, 0, 116, 0, 174, 0, -5, 117, 196,
- 0, 0, 161, 170, 93, -21, -48, 273, 0, 0,
- 91, 271, 0, 0, 0, 0, 0, 0, 216, 0,
- 437, 187, 102, 0, 0
+ 0, 0, -172, 0, 0, 353, 201, 0, 477, 149,
+ 0, 110, 195, 117, 426, 112, 203, 140, 171, 0,
+ 0, 0, 0, 168, 164, 157, 119, 27, 0, 205,
+ -118, 0, -428, 266, 51, 0, 0, 0, 0, 0,
+ 388, 0, 0, -24, 0, 0, 345, 484, 146, 133,
+ 209, 75, 0, 0, 0, 0, 0, 107, 161, 0,
+ 0, 0, 222, -77, 0, 106, 97, -343, 0, -94,
+ 135, 123, -129, 0, 129, 0, 0, -50, 0, 143,
+ 0, 159, 64, 0, 338, 132, 122, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 0,
+ 121, 0, 165, 156, 0, 0, 0, 0, 0, 87,
+ 273, 259, 0, 0, 114, 0, 150, 0, 0, -5,
+ -91, 200, 0, 0, 84, 154, 202, 77, -48, 178,
+ 0, 0, 93, 187, 0, 0, 0, 0, 0, 0,
+ 136, 0, 286, 167, 102, 0, 0
);
protected $gotoDefault = array(
- -32768, 467, 663, 2, 664, 834, 739, 747, 597, 481,
- 629, 581, 380, 1188, 791, 792, 793, 381, 367, 482,
- 379, 410, 405, 780, 773, 775, 783, 172, 411, 786,
- 1, 788, 517, 824, 1017, 364, 796, 365, 589, 798,
- 526, 800, 801, 137, 382, 383, 527, 483, 390, 576,
- 815, 276, 387, 817, 366, 818, 827, 370, 464, 454,
- 459, 556, 608, 432, 446, 570, 564, 535, 1081, 565,
- 861, 348, 869, 660, 877, 880, 484, 557, 891, 451,
- 899, 1094, 397, 905, 911, 916, 287, 919, 417, 412,
- 584, 924, 925, 5, 929, 621, 622, 8, 312, 952,
- 598, 966, 420, 1036, 1038, 485, 486, 521, 458, 507,
- 525, 487, 1059, 440, 413, 1062, 488, 489, 433, 434,
- 1078, 354, 1163, 353, 448, 320, 1150, 579, 1113, 455,
- 1203, 1159, 347, 490, 491, 376, 1182, 392, 1198, 437,
- 1205, 1213, 343, 539, 566
+ -32768, 468, 664, 2, 665, 835, 740, 748, 598, 482,
+ 630, 582, 380, 1193, 792, 793, 794, 381, 368, 483,
+ 379, 410, 405, 781, 774, 776, 784, 172, 411, 787,
+ 1, 789, 518, 825, 1020, 365, 797, 366, 590, 799,
+ 527, 801, 802, 137, 382, 383, 528, 484, 390, 577,
+ 816, 276, 387, 818, 367, 819, 828, 371, 465, 455,
+ 460, 530, 557, 609, 432, 447, 571, 565, 536, 1086,
+ 566, 864, 349, 872, 661, 880, 883, 485, 558, 894,
+ 452, 902, 1099, 397, 908, 914, 919, 291, 922, 417,
+ 412, 585, 927, 928, 5, 932, 622, 623, 8, 312,
+ 955, 599, 969, 420, 1039, 1041, 486, 487, 522, 459,
+ 508, 526, 488, 1062, 441, 413, 1065, 433, 489, 490,
+ 434, 435, 1083, 355, 1168, 354, 449, 320, 1155, 580,
+ 1118, 456, 1208, 1164, 348, 491, 492, 376, 1187, 392,
+ 1203, 438, 1210, 1218, 344, 540, 567
);
protected $ruleToNonTerminal = array(
@@ -840,19 +838,20 @@ class Php5 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, 14, 14, 54, 54, 56, 55, 55, 48,
- 48, 58, 58, 59, 59, 60, 60, 15, 16, 16,
- 16, 63, 63, 63, 64, 64, 67, 67, 65, 65,
- 69, 69, 41, 41, 50, 50, 53, 53, 53, 52,
- 52, 70, 42, 42, 42, 42, 71, 71, 72, 72,
- 73, 73, 39, 39, 35, 35, 74, 37, 37, 75,
- 36, 36, 38, 38, 49, 49, 49, 61, 61, 77,
- 77, 78, 78, 80, 80, 80, 79, 79, 62, 62,
- 81, 81, 81, 82, 82, 83, 83, 83, 44, 44,
- 84, 84, 84, 45, 45, 85, 85, 86, 86, 66,
- 87, 87, 87, 87, 92, 92, 93, 93, 94, 94,
- 94, 94, 94, 95, 96, 96, 91, 91, 88, 88,
- 90, 90, 98, 98, 97, 97, 97, 97, 97, 97,
- 89, 89, 100, 99, 99, 46, 46, 40, 40, 43,
+ 48, 58, 58, 59, 59, 60, 60, 61, 61, 15,
+ 16, 16, 16, 64, 64, 64, 65, 65, 68, 68,
+ 66, 66, 70, 70, 41, 41, 50, 50, 53, 53,
+ 53, 52, 52, 71, 42, 42, 42, 42, 72, 72,
+ 73, 73, 74, 74, 39, 39, 35, 35, 75, 37,
+ 37, 76, 36, 36, 38, 38, 49, 49, 49, 62,
+ 62, 78, 78, 79, 79, 81, 81, 81, 80, 80,
+ 63, 63, 82, 82, 82, 83, 83, 84, 84, 84,
+ 44, 44, 85, 85, 85, 45, 45, 86, 86, 87,
+ 87, 67, 88, 88, 88, 88, 93, 93, 94, 94,
+ 95, 95, 95, 95, 95, 96, 97, 97, 92, 92,
+ 89, 89, 91, 91, 99, 99, 98, 98, 98, 98,
+ 98, 98, 90, 90, 101, 100, 100, 46, 46, 40,
+ 40, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
@@ -860,26 +859,25 @@ class Php5 extends \PhpParser\ParserAbstract
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 34, 34, 47, 47, 105,
- 105, 106, 106, 106, 106, 112, 101, 101, 108, 108,
- 114, 114, 115, 116, 116, 116, 116, 116, 116, 68,
- 68, 57, 57, 57, 57, 102, 102, 120, 120, 117,
- 117, 121, 121, 121, 121, 103, 103, 103, 107, 107,
- 107, 113, 113, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 27, 27, 27, 27,
- 27, 27, 128, 128, 128, 128, 128, 128, 128, 128,
+ 43, 43, 43, 43, 43, 43, 43, 34, 34, 47,
+ 47, 106, 106, 107, 107, 107, 107, 113, 102, 102,
+ 109, 109, 115, 115, 116, 117, 118, 118, 118, 118,
+ 118, 118, 118, 69, 69, 57, 57, 57, 57, 103,
+ 103, 122, 122, 119, 119, 123, 123, 123, 123, 104,
+ 104, 104, 108, 108, 108, 114, 114, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 111, 111, 104, 104,
- 104, 104, 127, 127, 130, 130, 129, 129, 131, 131,
- 51, 51, 51, 51, 133, 133, 132, 132, 132, 132,
- 132, 134, 134, 119, 119, 122, 122, 118, 118, 136,
- 135, 135, 135, 135, 123, 123, 123, 123, 110, 110,
- 124, 124, 124, 124, 76, 137, 137, 138, 138, 138,
- 109, 109, 139, 139, 140, 140, 140, 140, 140, 125,
- 125, 125, 125, 142, 143, 141, 141, 141, 141, 141,
- 141, 141, 144, 144, 144
+ 27, 27, 27, 27, 27, 27, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 112, 112, 105, 105, 105, 105, 129, 129, 132, 132,
+ 131, 131, 133, 133, 51, 51, 51, 51, 135, 135,
+ 134, 134, 134, 134, 134, 136, 136, 121, 121, 124,
+ 124, 120, 120, 138, 137, 137, 137, 137, 125, 125,
+ 125, 125, 111, 111, 126, 126, 126, 126, 77, 139,
+ 139, 140, 140, 140, 110, 110, 141, 141, 142, 142,
+ 142, 142, 142, 127, 127, 127, 127, 144, 145, 143,
+ 143, 143, 143, 143, 143, 143, 146, 146, 146
);
protected $ruleToLength = array(
@@ -900,46 +898,46 @@ class Php5 extends \PhpParser\ParserAbstract
2, 3, 2, 3, 2, 3, 3, 3, 3, 1,
2, 2, 5, 7, 9, 5, 6, 3, 3, 2,
2, 1, 1, 1, 0, 2, 8, 0, 4, 1,
- 3, 0, 1, 0, 1, 0, 1, 10, 7, 6,
- 5, 1, 2, 2, 0, 2, 0, 2, 0, 2,
- 1, 3, 1, 4, 1, 4, 1, 1, 4, 1,
- 3, 3, 3, 4, 4, 5, 0, 2, 4, 3,
- 1, 1, 1, 4, 0, 2, 3, 0, 2, 4,
- 0, 2, 0, 3, 1, 2, 1, 1, 0, 1,
- 3, 4, 6, 1, 1, 1, 0, 1, 0, 2,
- 2, 3, 3, 1, 3, 1, 2, 2, 3, 1,
- 1, 2, 4, 3, 1, 1, 3, 2, 0, 1,
- 3, 3, 9, 3, 1, 3, 0, 2, 4, 5,
- 4, 4, 4, 3, 1, 1, 1, 3, 1, 1,
- 0, 1, 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 3, 3, 1, 0, 1, 1,
- 3, 3, 4, 4, 1, 2, 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, 0, 1, 0, 1, 0, 1, 1, 1, 10,
+ 7, 6, 5, 1, 2, 2, 0, 2, 0, 2,
+ 0, 2, 1, 3, 1, 4, 1, 4, 1, 1,
+ 4, 1, 3, 3, 3, 4, 4, 5, 0, 2,
+ 4, 3, 1, 1, 1, 4, 0, 2, 3, 0,
+ 2, 4, 0, 2, 0, 3, 1, 2, 1, 1,
+ 0, 1, 3, 4, 6, 1, 1, 1, 0, 1,
+ 0, 2, 2, 3, 3, 1, 3, 1, 2, 2,
+ 3, 1, 1, 2, 4, 3, 1, 1, 3, 2,
+ 0, 1, 3, 3, 9, 3, 1, 3, 0, 2,
+ 4, 5, 4, 4, 4, 3, 1, 1, 1, 3,
+ 1, 1, 0, 1, 1, 2, 1, 1, 1, 1,
+ 1, 1, 1, 3, 1, 1, 3, 3, 1, 0,
+ 1, 1, 3, 3, 4, 4, 1, 2, 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, 1, 3, 5, 4, 3,
- 4, 4, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 3,
- 2, 1, 2, 10, 11, 3, 3, 2, 4, 4,
- 3, 4, 4, 4, 4, 7, 3, 2, 0, 4,
- 1, 3, 2, 2, 4, 6, 2, 2, 4, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 3, 4, 4, 0, 2, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 2, 1, 3, 1, 4,
- 3, 1, 3, 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, 5, 4, 4, 3, 1, 3, 1, 1,
- 3, 3, 0, 2, 0, 1, 3, 1, 3, 1,
- 1, 1, 1, 1, 6, 4, 3, 4, 2, 4,
- 4, 1, 3, 1, 2, 1, 1, 4, 1, 1,
- 3, 6, 4, 4, 4, 4, 1, 4, 0, 1,
- 1, 3, 1, 1, 4, 3, 1, 1, 1, 0,
- 0, 2, 3, 1, 3, 1, 4, 2, 2, 2,
- 2, 1, 2, 1, 1, 1, 4, 3, 3, 3,
- 6, 3, 1, 1, 1
+ 3, 3, 3, 2, 2, 2, 2, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 1, 3, 5,
+ 4, 3, 4, 4, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 3, 2, 1, 2, 10, 11, 3, 3, 2,
+ 4, 4, 3, 4, 4, 4, 4, 7, 3, 2,
+ 0, 4, 1, 3, 2, 1, 2, 2, 4, 6,
+ 2, 2, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 3, 4, 4, 0,
+ 2, 1, 0, 1, 1, 0, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 2,
+ 1, 3, 1, 4, 3, 1, 3, 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, 5, 4, 4, 3,
+ 1, 3, 1, 1, 3, 3, 0, 2, 0, 1,
+ 3, 1, 3, 1, 1, 1, 1, 1, 6, 4,
+ 3, 4, 2, 4, 4, 1, 3, 1, 2, 1,
+ 1, 4, 1, 1, 3, 6, 4, 4, 4, 4,
+ 1, 4, 0, 1, 1, 3, 1, 1, 4, 3,
+ 1, 1, 1, 0, 0, 2, 3, 1, 3, 1,
+ 4, 2, 2, 2, 2, 1, 2, 1, 1, 1,
+ 4, 3, 3, 3, 6, 3, 1, 1, 1
);
protected function initReduceCallbacks() {
@@ -1492,36 +1490,36 @@ class Php5 extends \PhpParser\ParserAbstract
$this->semValue = true;
},
177 => function ($stackPos) {
- $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(10-3)], ['byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-5)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
178 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 179 => function ($stackPos) {
+ $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(10-3)], ['byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-5)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ },
+ 180 => function ($stackPos) {
$this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], '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->checkClass($this->semValue, $stackPos-(7-2));
},
- 179 => function ($stackPos) {
+ 181 => function ($stackPos) {
$this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(6-2)], ['extends' => $this->semStack[$stackPos-(6-3)], 'stmts' => $this->semStack[$stackPos-(6-5)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
$this->checkInterface($this->semValue, $stackPos-(6-2));
},
- 180 => function ($stackPos) {
+ 182 => function ($stackPos) {
$this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(5-2)], ['stmts' => $this->semStack[$stackPos-(5-4)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
- 181 => function ($stackPos) {
+ 183 => function ($stackPos) {
$this->semValue = 0;
},
- 182 => function ($stackPos) {
+ 184 => function ($stackPos) {
$this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
},
- 183 => function ($stackPos) {
+ 185 => function ($stackPos) {
$this->semValue = Stmt\Class_::MODIFIER_FINAL;
},
- 184 => function ($stackPos) {
- $this->semValue = null;
- },
- 185 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
186 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = null;
},
187 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)];
@@ -1533,16 +1531,16 @@ class Php5 extends \PhpParser\ParserAbstract
$this->semValue = $this->semStack[$stackPos-(2-2)];
},
190 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = array();
},
191 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
},
192 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
193 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
194 => function ($stackPos) {
$this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
@@ -1554,679 +1552,679 @@ class Php5 extends \PhpParser\ParserAbstract
$this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
},
197 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
},
198 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 199 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 200 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 201 => function ($stackPos) {
- $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 202 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 203 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
- },
- 204 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 205 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(5-3)];
- },
- 206 => function ($stackPos) {
- $this->semValue = array();
- },
- 207 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 208 => function ($stackPos) {
- $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 209 => function ($stackPos) {
- $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 210 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 211 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 212 => function ($stackPos) {
$this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
},
- 213 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 214 => function ($stackPos) {
- $this->semValue = array();
- },
- 215 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 216 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(3-2)], is_array($this->semStack[$stackPos-(3-3)]) ? $this->semStack[$stackPos-(3-3)] : array($this->semStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 217 => function ($stackPos) {
- $this->semValue = array();
- },
- 218 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 219 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 220 => function ($stackPos) {
+ 199 => function ($stackPos) {
$this->semValue = null;
},
+ 200 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 201 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 202 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 203 => function ($stackPos) {
+ $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 204 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 205 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
+ },
+ 206 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 207 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(5-3)];
+ },
+ 208 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 209 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 210 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 211 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 212 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 213 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 214 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 215 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 216 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 217 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 218 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(3-2)], is_array($this->semStack[$stackPos-(3-3)]) ? $this->semStack[$stackPos-(3-3)] : array($this->semStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 219 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 220 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
221 => function ($stackPos) {
- $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
222 => function ($stackPos) {
$this->semValue = null;
},
223 => function ($stackPos) {
- $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
224 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ $this->semValue = null;
},
225 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+ $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
226 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)], false);
},
227 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
},
228 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
},
229 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
230 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = array();
},
231 => function ($stackPos) {
- $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
232 => function ($stackPos) {
- $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
233 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
},
234 => function ($stackPos) {
- $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
},
235 => function ($stackPos) {
- $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
236 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
237 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
238 => function ($stackPos) {
$this->semValue = null;
},
239 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 240 => function ($stackPos) {
- $this->semValue = array();
- },
- 241 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 242 => function ($stackPos) {
- $this->semValue = array(new Node\Arg($this->semStack[$stackPos-(3-2)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes));
- },
- 243 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 244 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 245 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 246 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 247 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 248 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 249 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 250 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 251 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ 240 => function ($stackPos) {
+ $this->semValue = null;
},
- 252 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ 241 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
},
- 253 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 254 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 255 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 256 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 257 => function ($stackPos) {
- if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
- },
- 258 => function ($stackPos) {
+ 242 => function ($stackPos) {
$this->semValue = array();
},
+ 243 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 244 => function ($stackPos) {
+ $this->semValue = array(new Node\Arg($this->semStack[$stackPos-(3-2)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes));
+ },
+ 245 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 246 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 247 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 248 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 249 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 250 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 251 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 252 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 253 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 254 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 255 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 256 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 257 => function ($stackPos) {
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 258 => function ($stackPos) {
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
259 => function ($stackPos) {
+ if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; } else { $this->semValue = $this->semStack[$stackPos-(2-1)]; }
+ },
+ 260 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 261 => function ($stackPos) {
$startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 260 => function ($stackPos) {
+ 262 => function ($stackPos) {
$this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
},
- 261 => function ($stackPos) {
+ 263 => function ($stackPos) {
$this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(3-2)], 0, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 262 => function ($stackPos) {
+ 264 => function ($stackPos) {
$this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
$this->checkClassMethod($this->semValue, $stackPos-(9-1));
},
- 263 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 264 => function ($stackPos) {
- $this->semValue = array();
- },
265 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
266 => function ($stackPos) {
$this->semValue = array();
},
267 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
268 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 269 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 270 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 271 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 272 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 273 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
- },
- 274 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 275 => function ($stackPos) {
- $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
- },
- 276 => function ($stackPos) {
- $this->semValue = null;
- },
- 277 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 278 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 279 => function ($stackPos) {
- $this->semValue = 0;
- },
- 280 => function ($stackPos) {
- $this->semValue = 0;
- },
- 281 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 282 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 283 => function ($stackPos) {
- $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
- },
- 284 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
- },
- 285 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
- },
- 286 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
- },
- 287 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_STATIC;
- },
- 288 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 289 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 290 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 291 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 292 => function ($stackPos) {
- $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 293 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 294 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 295 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 296 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 297 => function ($stackPos) {
$this->semValue = array();
},
- 298 => function ($stackPos) {
+ 269 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 270 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 271 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 272 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 273 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 274 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 275 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 276 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 299 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ 277 => function ($stackPos) {
+ $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
},
- 300 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ 278 => function ($stackPos) {
+ $this->semValue = null;
},
- 301 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 302 => function ($stackPos) {
- $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 303 => function ($stackPos) {
- $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 304 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 305 => function ($stackPos) {
- $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 306 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 307 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 308 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 309 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 310 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 311 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 312 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 313 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 314 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 315 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 316 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 317 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 318 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 319 => function ($stackPos) {
- $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 320 => function ($stackPos) {
- $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 321 => function ($stackPos) {
- $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 322 => function ($stackPos) {
- $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 323 => 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);
- },
- 324 => 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);
- },
- 325 => 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);
- },
- 326 => 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);
- },
- 327 => 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);
- },
- 328 => 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);
- },
- 329 => 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);
- },
- 330 => 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);
- },
- 331 => 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);
- },
- 332 => 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);
- },
- 333 => 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);
- },
- 334 => 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);
- },
- 335 => 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);
- },
- 336 => 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);
- },
- 337 => 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);
- },
- 338 => 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);
- },
- 339 => 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);
- },
- 340 => 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);
- },
- 341 => function ($stackPos) {
- $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 342 => function ($stackPos) {
- $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 343 => function ($stackPos) {
- $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 344 => function ($stackPos) {
- $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 345 => 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);
- },
- 346 => 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);
- },
- 347 => 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);
- },
- 348 => 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);
- },
- 349 => 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);
- },
- 350 => 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);
- },
- 351 => 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);
- },
- 352 => 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);
- },
- 353 => 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);
- },
- 354 => function ($stackPos) {
- $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 355 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 356 => function ($stackPos) {
+ 279 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
+ 280 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 281 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 282 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 283 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 284 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 285 => function ($stackPos) {
+ $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ },
+ 286 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ },
+ 287 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ },
+ 288 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ },
+ 289 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+ },
+ 290 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
+ 291 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+ },
+ 292 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 293 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 294 => function ($stackPos) {
+ $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 295 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 296 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 297 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 298 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 299 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 300 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 301 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 302 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 303 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 304 => function ($stackPos) {
+ $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 305 => function ($stackPos) {
+ $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 306 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 307 => function ($stackPos) {
+ $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 308 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 309 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 310 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 311 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 312 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 313 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 314 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 315 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 316 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 317 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 318 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 319 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 320 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 321 => function ($stackPos) {
+ $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 322 => function ($stackPos) {
+ $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 323 => function ($stackPos) {
+ $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 324 => function ($stackPos) {
+ $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 325 => 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);
+ },
+ 326 => 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);
+ },
+ 327 => 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);
+ },
+ 328 => 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);
+ },
+ 329 => 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);
+ },
+ 330 => 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);
+ },
+ 331 => 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);
+ },
+ 332 => 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);
+ },
+ 333 => 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);
+ },
+ 334 => 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);
+ },
+ 335 => 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);
+ },
+ 336 => 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);
+ },
+ 337 => 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);
+ },
+ 338 => 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);
+ },
+ 339 => 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);
+ },
+ 340 => 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);
+ },
+ 341 => 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);
+ },
+ 342 => 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);
+ },
+ 343 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 344 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 345 => function ($stackPos) {
+ $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 346 => function ($stackPos) {
+ $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 347 => 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);
+ },
+ 348 => 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);
+ },
+ 349 => 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);
+ },
+ 350 => 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);
+ },
+ 351 => 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);
+ },
+ 352 => 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);
+ },
+ 353 => 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);
+ },
+ 354 => 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);
+ },
+ 355 => 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);
+ },
+ 356 => function ($stackPos) {
+ $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
357 => 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-(1-1)];
},
358 => 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 = $this->semStack[$stackPos-(3-2)];
},
359 => 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-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
360 => function ($stackPos) {
- $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-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);
},
361 => function ($stackPos) {
- $this->semValue = new Expr\Empty_($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);
},
362 => 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\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
363 => 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\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
364 => 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, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
365 => 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\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
366 => 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\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
367 => 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, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
368 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 369 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 370 => 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);
},
- 369 => function ($stackPos) {
+ 371 => function ($stackPos) {
$this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 370 => function ($stackPos) {
+ 372 => function ($stackPos) {
$this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 371 => function ($stackPos) {
+ 373 => function ($stackPos) {
$this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 372 => function ($stackPos) {
+ 374 => function ($stackPos) {
$this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 373 => function ($stackPos) {
+ 375 => function ($stackPos) {
$this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 374 => function ($stackPos) {
+ 376 => 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);
},
- 375 => function ($stackPos) {
- $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 376 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
377 => 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);
},
378 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
379 => 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)];
},
380 => function ($stackPos) {
- $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
381 => function ($stackPos) {
- $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
382 => function ($stackPos) {
- $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
383 => 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\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
384 => 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\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
385 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $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);
},
386 => 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);
},
387 => 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)];
},
388 => 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 = $this->semStack[$stackPos-(3-2)];
},
389 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 390 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 391 => 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);
},
- 390 => function ($stackPos) {
+ 392 => 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);
},
- 391 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 392 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos-(4-1)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
393 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
394 => 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(Scalar\String_::fromString($this->semStack[$stackPos-(4-1)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
395 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 396 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 397 => 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);
},
- 396 => function ($stackPos) {
+ 398 => function ($stackPos) {
$this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 397 => function ($stackPos) {
+ 399 => function ($stackPos) {
list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 398 => function ($stackPos) {
+ 400 => function ($stackPos) {
$this->semValue = array();
},
- 399 => function ($stackPos) {
+ 401 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(4-3)];
},
- 400 => function ($stackPos) {
+ 402 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
- 401 => function ($stackPos) {
+ 403 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
- 402 => function ($stackPos) {
+ 404 => function ($stackPos) {
$this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 403 => function ($stackPos) {
- $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 404 => 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);
- },
405 => 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 Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
406 => 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\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $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);
},
408 => 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\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
409 => 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-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
},
410 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
411 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-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);
},
412 => 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);
},
413 => function ($stackPos) {
- $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-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(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
415 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
416 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
417 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
418 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
419 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -2235,436 +2233,448 @@ class Php5 extends \PhpParser\ParserAbstract
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
421 => 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)];
},
422 => 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)];
},
423 => 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)];
},
424 => 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)];
},
425 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
426 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
427 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 428 => function ($stackPos) {
- $this->semValue = array();
- },
- 429 => function ($stackPos) {
- $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
- },
- 430 => 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)];
- },
- 431 => function ($stackPos) {
- $this->semValue = array();
- },
- 432 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 433 => function ($stackPos) {
- $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
- },
- 434 => function ($stackPos) {
- $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 435 => function ($stackPos) {
- $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, false);
- },
- 436 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 437 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 438 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 439 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 440 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 441 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 442 => 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->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);
- },
- 445 => 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);
- },
- 446 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 447 => function ($stackPos) {
- $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 448 => function ($stackPos) {
- $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 449 => function ($stackPos) {
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 450 => function ($stackPos) {
- $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 451 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 452 => 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);
- },
- 453 => 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);
- },
- 454 => 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);
- },
- 455 => 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);
- },
- 456 => 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);
- },
- 457 => 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);
- },
- 458 => 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);
- },
- 459 => 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);
- },
- 460 => 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);
- },
- 461 => 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);
- },
- 462 => 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);
- },
- 463 => 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);
- },
- 464 => 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);
- },
- 465 => 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);
- },
- 466 => 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);
- },
- 467 => 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);
- },
- 468 => 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);
- },
- 469 => 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);
- },
- 470 => function ($stackPos) {
- $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 471 => function ($stackPos) {
- $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 472 => function ($stackPos) {
- $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 473 => function ($stackPos) {
- $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 474 => 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);
- },
- 475 => 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);
- },
- 476 => 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);
- },
- 477 => 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);
- },
- 478 => 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);
- },
- 479 => 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);
- },
- 480 => 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);
- },
- 481 => 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);
- },
- 482 => 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);
- },
- 483 => 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);
- },
- 484 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
- 485 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ 428 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
- 486 => function ($stackPos) {
- $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ 429 => function ($stackPos) {
+ $this->semValue = null;
},
- 487 => function ($stackPos) {
+ 430 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 431 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 432 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 433 => function ($stackPos) {
+ $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+ },
+ 434 => 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)];
+ },
+ 435 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 436 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 437 => function ($stackPos) {
+ $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
+ },
+ 438 => function ($stackPos) {
+ $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 439 => function ($stackPos) {
+ $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, false);
+ },
+ 440 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 441 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 442 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 443 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 444 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 445 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 446 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 447 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 448 => 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);
+ },
+ 449 => 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);
+ },
+ 450 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 451 => function ($stackPos) {
$this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 488 => function ($stackPos) {
+ 452 => function ($stackPos) {
+ $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 453 => function ($stackPos) {
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 454 => function ($stackPos) {
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 455 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
+ 456 => 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);
+ },
+ 457 => 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);
+ },
+ 458 => 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);
+ },
+ 459 => 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);
+ },
+ 460 => 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);
+ },
+ 461 => 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);
+ },
+ 462 => 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);
+ },
+ 463 => 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);
+ },
+ 464 => 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);
+ },
+ 465 => 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);
+ },
+ 466 => 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);
+ },
+ 467 => 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);
+ },
+ 468 => 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);
+ },
+ 469 => 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);
+ },
+ 470 => 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);
+ },
+ 471 => 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);
+ },
+ 472 => 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);
+ },
+ 473 => 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);
+ },
+ 474 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 475 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 476 => function ($stackPos) {
+ $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 477 => function ($stackPos) {
+ $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 478 => 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);
+ },
+ 479 => 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);
+ },
+ 480 => 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);
+ },
+ 481 => 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);
+ },
+ 482 => 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);
+ },
+ 483 => 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);
+ },
+ 484 => 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);
+ },
+ 485 => 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);
+ },
+ 486 => 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);
+ },
+ 487 => 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);
+ },
+ 488 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
489 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
490 => function ($stackPos) {
+ $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 491 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 492 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 493 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 494 => 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);
},
- 491 => function ($stackPos) {
+ 495 => 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);
},
- 492 => function ($stackPos) {
+ 496 => function ($stackPos) {
$this->semValue = array();
},
- 493 => function ($stackPos) {
+ 497 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
- 494 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 495 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 496 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 497 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
498 => 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 = $this->semStack[$stackPos];
},
499 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos];
},
500 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
501 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
502 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $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 = $this->semStack[$stackPos-(1-1)];
+ $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\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)];
},
505 => 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)];
},
506 => 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)];
},
507 => 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)];
},
508 => 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\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
},
509 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
510 => 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);
},
511 => 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);
},
512 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
513 => 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);
},
514 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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 = $this->semStack[$stackPos-(1-1)];
},
516 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
517 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
518 => 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);
},
519 => 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)];
},
520 => 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 = $this->semStack[$stackPos-(1-1)];
},
521 => 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-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
522 => 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)];
},
523 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-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;
},
524 => 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-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
525 => 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);
},
526 => 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);
},
527 => function ($stackPos) {
- $this->semValue = new Expr\Variable($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);
},
528 => 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);
},
529 => 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);
},
530 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
531 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
532 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 533 => function ($stackPos) {
- $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 534 => function ($stackPos) {
- $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 535 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 536 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 537 => function ($stackPos) {
- $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-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 539 => function ($stackPos) {
$this->semValue = null;
},
- 540 => function ($stackPos) {
- $this->semValue = array();
- },
- 541 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 542 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 543 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 544 => 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);
- },
- 545 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 546 => 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);
- },
- 547 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 548 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 549 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 550 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 551 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 552 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
- },
- 553 => function ($stackPos) {
- $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 554 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 555 => function ($stackPos) {
+ 533 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 556 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ 534 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 557 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 558 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 559 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 560 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 561 => function ($stackPos) {
+ 535 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
+ 536 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 537 => function ($stackPos) {
+ $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 538 => function ($stackPos) {
+ $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 539 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 540 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 541 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 542 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 543 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 544 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 545 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 546 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 547 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 548 => 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);
+ },
+ 549 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 550 => 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);
+ },
+ 551 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 552 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true);
+ },
+ 553 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 554 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 555 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 556 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+ },
+ 557 => function ($stackPos) {
+ $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 558 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 559 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 560 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 561 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
562 => function ($stackPos) {
- $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
563 => function ($stackPos) {
- $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
564 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 565 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 566 => function ($stackPos) {
+ $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 567 => function ($stackPos) {
+ $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 568 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
];
diff --git a/lib/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/lib/nikic/php-parser/lib/PhpParser/Parser/Php7.php
index 71ba0187ee..6d2b4b0f9c 100644
--- a/lib/nikic/php-parser/lib/PhpParser/Parser/Php7.php
+++ b/lib/nikic/php-parser/lib/PhpParser/Parser/Php7.php
@@ -18,16 +18,16 @@ use PhpParser\Node\Stmt;
class Php7 extends \PhpParser\ParserAbstract
{
protected $tokenToSymbolMapSize = 396;
- protected $actionTableSize = 1189;
- protected $gotoTableSize = 611;
+ protected $actionTableSize = 1241;
+ protected $gotoTableSize = 629;
protected $invalidSymbol = 168;
protected $errorSymbol = 1;
protected $defaultAction = -32766;
protected $unexpectedTokenRule = 32767;
- protected $YY2TBLSTATE = 421;
- protected $numNonLeafStates = 709;
+ protected $YY2TBLSTATE = 434;
+ protected $numNonLeafStates = 736;
protected $symbolToName = array(
"EOF",
@@ -244,323 +244,338 @@ class Php7 extends \PhpParser\ParserAbstract
);
protected $action = array(
- 132, 133, 134, 568, 135, 136, 0, 721, 722, 723,
- 137, 37, 921, 448, 449, 450,-32766,-32766,-32766,-32767,
- -32767,-32767,-32767, 101, 102, 103, 104, 105, 1071, 1072,
- 1073, 1070, 1069, 1068, 1074, 715, 714,-32766,-32766,-32766,
+ 133, 134, 135, 579, 136, 137, 0, 748, 749, 750,
+ 138, 38, 327,-32766,-32766,-32766,-32766,-32766,-32766,-32767,
+ -32767,-32767,-32767, 102, 103, 104, 105, 106, 1109, 1110,
+ 1111, 1108, 1107, 1106, 1112, 742, 741,-32766, 1232,-32766,
-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,
- -32767, 371, 372, 240, 2, 724,-32766,-32766,-32766, 1001,
- 1002, 415, 956,-32766,-32766,-32766, 373, 372, 12, 267,
- 138, 397, 728, 729, 730, 731, 415,-32766, 421,-32766,
- -32766,-32766,-32766,-32766,-32766, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 762, 569, 763, 764,
- 765, 766, 754, 755, 337, 338, 757, 758, 743, 744,
- 745, 747, 748, 749, 347, 789, 790, 791, 792, 793,
- 794, 750, 751, 570, 571, 783, 774, 772, 773, 786,
- 769, 770, 284, 421, 572, 573, 768, 574, 575, 576,
- 577, 578, 579, 597, -579,-32766,-32766, 797, 771, 580,
- 581, -579, 139,-32766,-32766,-32766, 132, 133, 134, 568,
- 135, 136, 1020, 721, 722, 723, 137, 37,-32766,-32766,
- -32766, 542, 1306, 126,-32766, 1307,-32766,-32766,-32766,-32766,
- -32766,-32766,-32766, 1071, 1072, 1073, 1070, 1069, 1068, 1074,
- 957, 715, 714, -318, 993, 1261,-32766,-32766,-32766, -576,
- 106, 107, 108, -268, 270, 890, -576, 910, 1196, 1195,
- 1197, 724,-32766,-32766,-32766, 1049, 109,-32766,-32766,-32766,
- -32766, 989, 988, 987, 990, 267, 138, 397, 728, 729,
- 730, 731, 1233,-32766, 421,-32766,-32766,-32766,-32766, 1001,
- 1002, 732, 733, 734, 735, 736, 737, 738, 739, 740,
- 741, 742, 762, 569, 763, 764, 765, 766, 754, 755,
- 337, 338, 757, 758, 743, 744, 745, 747, 748, 749,
- 347, 789, 790, 791, 792, 793, 794, 750, 751, 570,
- 571, 783, 774, 772, 773, 786, 769, 770, 880, 321,
- 572, 573, 768, 574, 575, 576, 577, 578, 579,-32766,
- 82, 83, 84, -579, 771, 580, 581, -579, 148, 746,
- 716, 717, 718, 719, 720, 1281, 721, 722, 723, 759,
- 760, 36, 1280, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 999, 270, -318,
- -32766,-32766,-32766, 456, 457, 81, -193, 808, -576, 1019,
- 109, 320, -576, 892, 724, 681, 802, 695, 1001, 1002,
- 591,-32766, 1047,-32766,-32766,-32766, 715, 714, 725, 726,
- 727, 728, 729, 730, 731, -192, -86, 795, 279, -530,
- 284,-32766,-32766,-32766, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 762, 785, 763, 764, 765,
- 766, 754, 755, 756, 784, 757, 758, 743, 744, 745,
- 747, 748, 749, 788, 789, 790, 791, 792, 793, 794,
- 750, 751, 752, 753, 783, 774, 772, 773, 786, 769,
- 770, 470, 803, 761, 767, 768, 775, 776, 778, 777,
- 779, 780, -86, -530, -530, 637, 25, 771, 782, 781,
- 49, 50, 51, 501, 52, 53, 239, 34, -530, 890,
- 54, 55, -111, 56, 999, 128,-32766, -111, 1201, -111,
- -530, -570, -536, 890, 300, -570, 144, -111, -111, -111,
- -111, -111, -111, -111, -111, 1001, 1002, 1001, 1002, 686,
- 1201, 925, 926, 1194, 806, 890, 927, 1296, 57, 58,
- 799, 253, -193, 687, 59, 807, 60, 246, 247, 61,
- 62, 63, 64, 65, 66, 67, 68, 304, 27, 268,
- 69, 437, 502, -332, 306, 688, 1227, 1228, 503, 1192,
- 806, -192, 318, 890, 1225, 41, 24, 504, 334, 505,
- 14, 506, 880, 507, 653, 654, 508, 509, 280, 806,
- 281, 43, 44, 438, 368, 367, 880, 45, 510, 35,
- 249, 471, 1063, 359, 333, 103, 104, 105, 1196, 1195,
- 1197, 806, 511, 512, 513, 335, 801, 1221, 880, 361,
- 285, 683, 286, 365, 514, 515, 380, 1215, 1216, 1217,
- 1218, 1212, 1213, 292, 433, -111, 715, 714, 434, 1219,
- 1214, 149, 400, 1196, 1195, 1197, 293, -153, -153, -153,
- -356, 70, -356, 316, 317, 320, 880, 892, -531, 681,
- 435, 1048, -153, 707, -153, 293, -153, 1277, -153, 27,
- 74, 892, 436, 681, 320, 369, 370, 833, 366, 834,
- -529, 806, 382, 812, 11, 1225, 833, 150, 834, -111,
- -111, 151, 74, 942, -111, 681, 320, 153, 806, 866,
- -111, -111, -111, -111, 31, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 715, 714,
- 374, 375, -531, -531, 890, 154, 805, 155, -4, 890,
- 157, 892, -88, 681, -153, 514, 515, -531, 1215, 1216,
- 1217, 1218, 1212, 1213, -529, -529, 797, 1108, 1110, -531,
- 1219, 1214, 715, 714, 690,-32766, 629, 630, -528, -529,
- 32, 1194, 72, 123, 124, 317, 320, 129,-32766,-32766,
- -32766, -529,-32766, -535,-32766, 130,-32766, 140, 143,-32766,
- 158, 159, 160, 320,-32766,-32766,-32766, 161, -528,-32766,
- -32766,-32766, -79, 282, -75, 1194,-32766, 412, -73, 27,
- -72, -71,-32766,-32766,-32766,-32766,-32766, 880,-32766, 287,
- -32766, 806, 880,-32766, -70, 1225, -69, -68,-32766,-32766,
- -32766, -67, -528, -528,-32766,-32766, -66, 141, -47, -18,
- -32766, 412, 147, 320, 366, 73, 428, -528, 271,-32766,
- 278, 291, -51, 696, 699, -111, -111, 1201, -533, -528,
- -111, 889, -528, -528, 48, 825, -111, -111, -111, -111,
- 146, 327, 283, 270, 288, 109, 515, -528, 1215, 1216,
- 1217, 1218, 1212, 1213, 131, 906, 661, -16, 9, -528,
- 1219, 1214, 892, 797, 681,-32766, 145, 892, 1308, 681,
- -4, 1194, 72,-32766, 638, 317, 320, 806,-32766,-32766,
- -32766, 1078,-32766, 544,-32766, 627,-32766, 13, 656,-32766,
- 548, 298, -533, -533,-32766,-32766,-32766,-32766, 296, 297,
- -32766,-32766, 674, 1194, 643, 890,-32766, 412, 806, 453,
- -32766,-32766,-32766, 364,-32766,-32766,-32766, 481,-32766, -533,
- -32766,-32766, 47, -494, 890, 127,-32766,-32766,-32766,-32766,
- 644, 657,-32766,-32766, 305, 1194, 890, 805,-32766, 412,
- 1222, 301,-32766,-32766,-32766, 0,-32766,-32766,-32766, 432,
- -32766, 299, 922,-32766, -111, 293, 554, 476,-32766,-32766,
- -32766,-32766, 1232, -484,-32766,-32766, 697, 1194, 560, 908,
- -32766, 412, 595, 817,-32766,-32766,-32766, 7,-32766,-32766,
- -32766, 1234,-32766, 16, 293,-32766, 294, 295, 880, 74,
- -32766,-32766,-32766, 320, 363, 39,-32766,-32766, 40, 704,
- 705, 871,-32766, 412, -246, -246, -246, 880, 966, 943,
- 366,-32766, 950, 125, 1247, 940, 951, 869, 938, 880,
- 1052, -111, -111, -245, -245, -245, -111, 1055, 1056, 366,
- 1053, 866, -111, -111, -111, -111, 1054, 1060, 701, 1265,
- -111, -111, 1299, 632, -564, -111, 33, 315, -271, 362,
- 866, -111, -111, -111, -111, 682, 685, 689, 691, 692,
- 693, 694,-32766, 892, 698, 681, -246, 684, 1194, 867,
- 1303, 1305, 828, 827, 836,-32766,-32766,-32766, 915,-32766,
- 958,-32766, 892,-32766, 681, -245,-32766, 835, 1304, 914,
- 916,-32766,-32766,-32766, 892, 913, 681,-32766,-32766, 1180,
- 899, 909, 897,-32766, 412, 948, 949, 1302, 1259, 1248,
- 1266, 1272,-32766, 1275, -269, -562, -536, -535, -534, 1,
- 28, 29, 38, 42, 46, 71, 75, 76, 77, 78,
- 79, 80, 142, 152, 156, 245, 322, 348, 349, 350,
- 351, 352, 353, 354, 355, 356, 357, 358, 360, 429,
- 0, -268, 0, 18, 19, 20, 21, 23, 399, 472,
- 473, 480, 483, 484, 485, 486, 490, 491, 492, 499,
- 668, 1205, 1148, 1223, 1022, 1021, 1184, -273, -103, 17,
- 22, 26, 290, 398, 588, 592, 619, 673, 1152, 1200,
- 1149, 1278, 0, -498, 1165, 0, 1226, 0, 320
+ -32767, 2, 107, 108, 109, 751, 274, 381, 380,-32766,
+ -32766,-32766,-32766, 104, 105, 106, 1024, 422, 110, 265,
+ 139, 403, 755, 756, 757, 758, 466, 467, 428, 938,
+ 291,-32766, 287,-32766,-32766, 759, 760, 761, 762, 763,
+ 764, 765, 766, 767, 768, 769, 789, 580, 790, 791,
+ 792, 793, 781, 782, 344, 345, 784, 785, 770, 771,
+ 772, 774, 775, 776, 355, 816, 817, 818, 819, 820,
+ 581, 777, 778, 582, 583, 810, 801, 799, 800, 813,
+ 796, 797, 687, -545, 584, 585, 795, 586, 587, 588,
+ 589, 590, 591, -328, -593, -367, 1234, -367, 798, 592,
+ 593, -593, 140,-32766,-32766,-32766, 133, 134, 135, 579,
+ 136, 137, 1057, 748, 749, 750, 138, 38, 688, 1020,
+ 1019, 1018, 1021, 390,-32766, 7,-32766,-32766,-32766,-32766,
+ -32766,-32766,-32766,-32766,-32766,-32766, 379, 380, 1033, 689,
+ 690, 742, 741,-32766,-32766,-32766, 422, -545, -545, -590,
+ -32766,-32766,-32766, 1032,-32766, 127, -590, 1236, 1235, 1237,
+ 1318, 751, -545, 290,-32766, 283,-32766,-32766,-32766,-32766,
+ -32766, 1236, 1235, 1237, -545, 265, 139, 403, 755, 756,
+ 757, 758, 16, 481, 428, 458, 459, 460, 298, 722,
+ 35, 759, 760, 761, 762, 763, 764, 765, 766, 767,
+ 768, 769, 789, 580, 790, 791, 792, 793, 781, 782,
+ 344, 345, 784, 785, 770, 771, 772, 774, 775, 776,
+ 355, 816, 817, 818, 819, 820, 581, 777, 778, 582,
+ 583, 810, 801, 799, 800, 813, 796, 797, 129, 824,
+ 584, 585, 795, 586, 587, 588, 589, 590, 591, -328,
+ 83, 84, 85, -593, 798, 592, 593, -593, 149, 773,
+ 743, 744, 745, 746, 747, 824, 748, 749, 750, 786,
+ 787, 37, 145, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 291, 274, 835,
+ 254, 1109, 1110, 1111, 1108, 1107, 1106, 1112, -590, 860,
+ 110, 861, -590, 482, 751,-32766,-32766,-32766,-32766,-32766,
+ 142, 603, 1085, 742, 741, 1262, 326, 987, 752, 753,
+ 754, 755, 756, 757, 758, 309,-32766, 822,-32766,-32766,
+ -32766,-32766, 242, 553, 759, 760, 761, 762, 763, 764,
+ 765, 766, 767, 768, 769, 789, 812, 790, 791, 792,
+ 793, 781, 782, 783, 811, 784, 785, 770, 771, 772,
+ 774, 775, 776, 815, 816, 817, 818, 819, 820, 821,
+ 777, 778, 779, 780, 810, 801, 799, 800, 813, 796,
+ 797, 311, 940, 788, 794, 795, 802, 803, 805, 804,
+ 806, 807, 323, 609, 1274, 1033, 833, 798, 809, 808,
+ 50, 51, 52, 512, 53, 54, 860, 241, 861, 918,
+ 55, 56, -111, 57,-32766,-32766,-32766, -111, 826, -111,
+ 290, 1302, 1347, 356, 305, 1348, 339, -111, -111, -111,
+ -111, -111, -111, -111, -111,-32766, -194,-32766,-32766,-32766,
+ -193, 956, 957, 829, -86, 988, 958, 834, 58, 59,
+ 340, 428, 952, -544, 60, 832, 61, 247, 248, 62,
+ 63, 64, 65, 66, 67, 68, 69, 1241, 28, 267,
+ 70, 444, 513, -342,-32766, 141, 1268, 1269, 514, 918,
+ 833, 326, -272, 918, 1266, 42, 25, 515, 940, 516,
+ 14, 517, 908, 518, 828, 369, 519, 520, 373, 709,
+ 1033, 44, 45, 445, 376, 375, 388, 46, 521, 712,
+ -86, 440, 1101, 367, 338, -543, 441, -544, -544, 830,
+ 1227, 442, 523, 524, 525, 290, 1236, 1235, 1237, 361,
+ 1030, 443, -544, 1087, 526, 527, 839, 1255, 1256, 1257,
+ 1258, 1252, 1253, 297, -544, 151, -550, -584, 833, 1259,
+ 1254, -584, 1033, 1236, 1235, 1237, 298, -154, -154, -154,
+ 152, 71, 908, 321, 322, 326, 908, 920, 1030, 707,
+ 833, 154, -154, 1337, -154, 155, -154, 283, -154, -543,
+ -543, 82, 1232, 1086, 1322, 734, 156, 326, 374, 158,
+ 1033, 1321, -194, -79, -543, -88, -193, 742, 741, 956,
+ 957, 653, 26,-32766, 522, -51, -543, 33, -549, 894,
+ 952, -111, -111, -111, 32, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, -59, 75,
+ 28, 672, 673, 326, -58, 36, 250, 920, 124, 707,
+ 125, 920, 833, 707, -154, 130, 1266, 131,-32766, -547,
+ 144, -542, 150, 406, 1234, 377, 378, 1146, 1148, 382,
+ 383,-32766,-32766,-32766, -85,-32766, 1056,-32766, -542,-32766,
+ 644, 645,-32766, 159, 160, 161, 1232,-32766,-32766,-32766,
+ 162, -79, 1227,-32766,-32766, 742, 741, 163, -302,-32766,
+ 419, -75, -4, 918, -73, 287, 526, 527,-32766, 1255,
+ 1256, 1257, 1258, 1252, 1253, -72, -71, -70, -69, -68,
+ -67, 1259, 1254, -547, -547, -542, -542, 742, 741, -66,
+ -47, -18,-32766, 73, 148, 918, 322, 326, 1234, 273,
+ -542, 284, -542, -542, 723,-32766,-32766,-32766, 726,-32766,
+ -547,-32766, -542,-32766, 917, 147,-32766, -542, 288, 289,
+ -298,-32766,-32766,-32766,-32766, 713, 279,-32766,-32766, -542,
+ 1234, 280, 285,-32766, 419, 48, 286,-32766,-32766,-32766,
+ 332,-32766,-32766,-32766, 292,-32766, 908, 293,-32766, 934,
+ 274, 1030, 918,-32766,-32766,-32766, 110, 682, 132,-32766,
+ -32766, 833, 146,-32766, 559,-32766, 419, 659, 374, 824,
+ 435, 1349, 74, 1033,-32766, 296, 654, 1116, 908, 956,
+ 957, 306, 714, 698, 522, 555, 303, 13, 310, 852,
+ 952, -111, -111, -111, 700, 463, 492, 953, 283, 299,
+ 300,-32766, 49, 675, 918, 304, 660, 1234, 676, 936,
+ 1273,-32766, 10, 1263,-32766,-32766,-32766, 642,-32766, 918,
+ -32766, 920,-32766, 707, -4,-32766, 126, 34, 918, 565,
+ -32766,-32766,-32766,-32766, 0, 908,-32766,-32766, 0, 1234,
+ 918, 0,-32766, 419, 0, 0,-32766,-32766,-32766, 717,
+ -32766,-32766,-32766, 920,-32766, 707, 1033,-32766, 724, 1275,
+ 0, 487,-32766,-32766,-32766,-32766, 301, 302,-32766,-32766,
+ -507, 1234, 571, -497,-32766, 419, 607, 8,-32766,-32766,
+ -32766, 372,-32766,-32766,-32766, 17,-32766, 908, 371,-32766,
+ 832, 298, 320, 128,-32766,-32766,-32766, 40, 370, 41,
+ -32766,-32766, 908, -250, -250, -250,-32766, 419, 731, 374,
+ 973, 908, 707, 732, 899,-32766, 997, 974, 728, 981,
+ 956, 957, 971, 908, 982, 522, 897, 969, 1090, 1093,
+ 894, 952, -111, -111, -111, 28, 1094, 1091, 1092, -249,
+ -249, -249, 1241, 1098, 708, 374, 844, 833, 1288, 1306,
+ 1340, 1266, 647, 1267, 711, 715, 956, 957, 716, 1241,
+ 718, 522, 920, 719, 707, -250, 894, 952, -111, -111,
+ -111, 720, -16, 721, 725, 710, -511, 920, 895, 707,
+ -578, 1232, 1344, 1346, 855, 854, 920, 1227, 707, -577,
+ 863, 946, 989, 862, 1345, 945, 943, 944, 920, 947,
+ 707, -249, 527, 1218, 1255, 1256, 1257, 1258, 1252, 1253,
+ 927, 937, 925, 979, 980, 631, 1259, 1254, 1343, 1300,
+ -32766, 1289, 1307, 833, 1316, -275, 1234, -576, 73, -550,
+ -549, 322, 326,-32766,-32766,-32766, -548,-32766, -491,-32766,
+ 833,-32766, 1, 29,-32766, 30, 39, 43, 47,-32766,
+ -32766,-32766, 72, 76, 77,-32766,-32766, 1232, -111, -111,
+ 78,-32766, 419, -111, 79, 80, 81, 143, 153, -111,
+ -32766, 157, 246, 328, 1232, -111, -111, 356,-32766, 357,
+ -111, 358, 359, 360, 361, 362, -111, 363, 364, 365,
+ 366, 368, 436, 0, -273,-32766, -272, 19, 20, 298,
+ 21, 22, 24, 405, 75, 1203, 483, 484, 326, 491,
+ 0, 494, 495, 496, 497, 501, 298, 502, 503, 510,
+ 693, 75, 0, 1245, 1186, 326, 1264, 1059, 1058, 1039,
+ 1222, 1035, -277, -103, 18, 23, 27, 295, 404, 600,
+ 604, 633, 699, 1190, 1240, 1187, 1319, 0, 0, 0,
+ 326
);
protected $actionCheck = array(
2, 3, 4, 5, 6, 7, 0, 9, 10, 11,
- 12, 13, 128, 129, 130, 131, 9, 10, 11, 44,
+ 12, 13, 70, 9, 10, 11, 9, 10, 11, 44,
45, 46, 47, 48, 49, 50, 51, 52, 116, 117,
118, 119, 120, 121, 122, 37, 38, 30, 116, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 106, 107, 14, 8, 57, 9, 10, 11, 137,
- 138, 116, 31, 9, 10, 11, 106, 107, 8, 71,
- 72, 73, 74, 75, 76, 77, 116, 30, 80, 32,
- 33, 34, 35, 36, 30, 87, 88, 89, 90, 91,
+ 43, 8, 53, 54, 55, 57, 57, 106, 107, 137,
+ 9, 10, 11, 50, 51, 52, 1, 116, 69, 71,
+ 72, 73, 74, 75, 76, 77, 134, 135, 80, 1,
+ 30, 30, 30, 32, 33, 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, 30, 80, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 51, 1, 9, 10, 80, 150, 151,
+ 132, 133, 80, 70, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 8, 1, 106, 80, 108, 150, 151,
152, 8, 154, 9, 10, 11, 2, 3, 4, 5,
- 6, 7, 164, 9, 10, 11, 12, 13, 9, 10,
- 11, 85, 80, 14, 30, 83, 32, 33, 34, 35,
- 36, 37, 38, 116, 117, 118, 119, 120, 121, 122,
- 159, 37, 38, 8, 1, 1, 9, 10, 11, 1,
- 53, 54, 55, 164, 57, 1, 8, 1, 155, 156,
- 157, 57, 9, 10, 11, 162, 69, 30, 116, 32,
- 33, 119, 120, 121, 122, 71, 72, 73, 74, 75,
- 76, 77, 146, 30, 80, 32, 33, 34, 35, 137,
- 138, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 6, 7, 164, 9, 10, 11, 12, 13, 116, 119,
+ 120, 121, 122, 106, 30, 108, 32, 33, 34, 35,
+ 36, 37, 38, 9, 10, 11, 106, 107, 138, 137,
+ 138, 37, 38, 9, 10, 11, 116, 134, 135, 1,
+ 9, 10, 11, 137, 30, 14, 8, 155, 156, 157,
+ 1, 57, 149, 163, 30, 163, 32, 33, 34, 35,
+ 36, 155, 156, 157, 161, 71, 72, 73, 74, 75,
+ 76, 77, 8, 31, 80, 129, 130, 131, 158, 161,
+ 8, 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, 84, 70,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 9,
+ 126, 127, 128, 129, 130, 131, 132, 133, 8, 80,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 164,
9, 10, 11, 160, 150, 151, 152, 164, 154, 2,
- 3, 4, 5, 6, 7, 1, 9, 10, 11, 12,
+ 3, 4, 5, 6, 7, 80, 9, 10, 11, 12,
13, 30, 8, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 116, 57, 164,
- 9, 10, 11, 134, 135, 161, 8, 1, 160, 1,
- 69, 167, 164, 159, 57, 161, 80, 161, 137, 138,
- 1, 30, 1, 32, 33, 34, 37, 38, 71, 72,
- 73, 74, 75, 76, 77, 8, 31, 80, 30, 70,
- 30, 9, 10, 11, 87, 88, 89, 90, 91, 92,
+ 49, 50, 51, 52, 53, 54, 55, 30, 57, 1,
+ 8, 116, 117, 118, 119, 120, 121, 122, 160, 106,
+ 69, 108, 164, 161, 57, 9, 10, 11, 9, 10,
+ 161, 1, 1, 37, 38, 1, 167, 31, 71, 72,
+ 73, 74, 75, 76, 77, 8, 30, 80, 32, 33,
+ 34, 35, 14, 85, 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, 31, 156, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 97, 134, 135, 75, 76, 150, 151, 152,
- 2, 3, 4, 5, 6, 7, 97, 8, 149, 1,
- 12, 13, 101, 15, 116, 8, 116, 106, 1, 108,
- 161, 160, 163, 1, 113, 164, 8, 116, 117, 118,
- 119, 120, 121, 122, 123, 137, 138, 137, 138, 31,
- 1, 117, 118, 80, 82, 1, 122, 85, 50, 51,
- 80, 8, 164, 31, 56, 159, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 8, 70, 71,
- 72, 73, 74, 162, 8, 31, 78, 79, 80, 116,
- 82, 164, 8, 1, 86, 87, 88, 89, 8, 91,
- 101, 93, 84, 95, 75, 76, 98, 99, 35, 82,
- 37, 103, 104, 105, 106, 107, 84, 109, 110, 147,
- 148, 161, 123, 115, 116, 50, 51, 52, 155, 156,
- 157, 82, 124, 125, 126, 8, 156, 1, 84, 8,
- 35, 161, 37, 8, 136, 137, 8, 139, 140, 141,
- 142, 143, 144, 145, 8, 128, 37, 38, 8, 151,
- 152, 101, 102, 155, 156, 157, 158, 75, 76, 77,
- 106, 163, 108, 165, 166, 167, 84, 159, 70, 161,
- 8, 159, 90, 161, 92, 158, 94, 1, 96, 70,
- 163, 159, 8, 161, 167, 106, 107, 106, 106, 108,
- 70, 82, 106, 8, 108, 86, 106, 14, 108, 117,
- 118, 14, 163, 159, 122, 161, 167, 14, 82, 127,
+ 133, 8, 122, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 8, 51, 146, 138, 82, 150, 151, 152,
+ 2, 3, 4, 5, 6, 7, 106, 97, 108, 1,
+ 12, 13, 101, 15, 9, 10, 11, 106, 80, 108,
+ 163, 1, 80, 163, 113, 83, 8, 116, 117, 118,
+ 119, 120, 121, 122, 123, 30, 8, 32, 33, 34,
+ 8, 117, 118, 80, 31, 159, 122, 159, 50, 51,
+ 8, 80, 128, 70, 56, 155, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 1, 70, 71,
+ 72, 73, 74, 162, 9, 161, 78, 79, 80, 1,
+ 82, 167, 164, 1, 86, 87, 88, 89, 122, 91,
+ 101, 93, 84, 95, 156, 8, 98, 99, 8, 161,
+ 138, 103, 104, 105, 106, 107, 8, 109, 110, 31,
+ 97, 8, 123, 115, 116, 70, 8, 134, 135, 156,
+ 122, 8, 124, 125, 126, 163, 155, 156, 157, 163,
+ 116, 8, 149, 162, 136, 137, 8, 139, 140, 141,
+ 142, 143, 144, 145, 161, 14, 163, 160, 82, 151,
+ 152, 164, 138, 155, 156, 157, 158, 75, 76, 77,
+ 14, 163, 84, 165, 166, 167, 84, 159, 116, 161,
+ 82, 14, 90, 85, 92, 14, 94, 163, 96, 134,
+ 135, 161, 116, 159, 1, 161, 14, 167, 106, 14,
+ 138, 8, 164, 16, 149, 31, 164, 37, 38, 117,
+ 118, 75, 76, 137, 122, 31, 161, 14, 163, 127,
128, 129, 130, 131, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 37, 38,
- 106, 107, 134, 135, 1, 14, 155, 14, 0, 1,
- 14, 159, 31, 161, 162, 136, 137, 149, 139, 140,
- 141, 142, 143, 144, 134, 135, 80, 59, 60, 161,
- 151, 152, 37, 38, 31, 74, 111, 112, 70, 149,
- 14, 80, 163, 16, 16, 166, 167, 16, 87, 88,
- 89, 161, 91, 163, 93, 16, 95, 161, 16, 98,
- 16, 16, 16, 167, 103, 104, 105, 16, 70, 74,
- 109, 110, 31, 35, 31, 80, 115, 116, 31, 70,
- 31, 31, 87, 88, 89, 124, 91, 84, 93, 35,
- 95, 82, 84, 98, 31, 86, 31, 31, 103, 104,
- 105, 31, 134, 135, 109, 110, 31, 161, 31, 31,
- 115, 116, 31, 167, 106, 154, 108, 149, 31, 124,
- 31, 113, 31, 31, 31, 117, 118, 1, 70, 161,
- 122, 31, 134, 135, 70, 127, 128, 129, 130, 131,
- 31, 35, 37, 57, 37, 69, 137, 149, 139, 140,
- 141, 142, 143, 144, 31, 38, 77, 31, 150, 161,
- 151, 152, 159, 80, 161, 74, 70, 159, 83, 161,
- 162, 80, 163, 85, 90, 166, 167, 82, 87, 88,
- 89, 82, 91, 85, 93, 113, 95, 97, 94, 98,
- 89, 132, 134, 135, 103, 104, 105, 74, 134, 135,
- 109, 110, 92, 80, 96, 1, 115, 116, 82, 97,
- 87, 88, 89, 149, 91, 124, 93, 97, 95, 161,
- 116, 98, 70, 149, 1, 161, 103, 104, 105, 74,
- 100, 100, 109, 110, 132, 80, 1, 155, 115, 116,
- 160, 114, 87, 88, 89, -1, 91, 124, 93, 128,
- 95, 133, 128, 98, 128, 158, 153, 102, 103, 104,
- 105, 74, 146, 149, 109, 110, 31, 80, 81, 154,
- 115, 116, 153, 160, 87, 88, 89, 149, 91, 124,
- 93, 146, 95, 149, 158, 98, 134, 135, 84, 163,
- 103, 104, 105, 167, 149, 159, 109, 110, 159, 159,
- 159, 159, 115, 116, 100, 101, 102, 84, 159, 159,
- 106, 124, 159, 161, 160, 159, 159, 159, 159, 84,
- 159, 117, 118, 100, 101, 102, 122, 159, 159, 106,
- 159, 127, 128, 129, 130, 131, 159, 159, 162, 160,
- 117, 118, 160, 160, 163, 122, 161, 161, 164, 161,
- 127, 128, 129, 130, 131, 161, 161, 161, 161, 161,
- 161, 161, 74, 159, 161, 161, 162, 161, 80, 162,
- 162, 162, 162, 162, 162, 87, 88, 89, 162, 91,
- 162, 93, 159, 95, 161, 162, 98, 162, 162, 162,
- 162, 103, 104, 105, 159, 162, 161, 109, 110, 162,
- 162, 162, 162, 115, 116, 162, 162, 162, 162, 162,
- 162, 162, 124, 162, 164, 163, 163, 163, 163, 163,
- 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
- 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
- 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
- -1, 164, -1, 164, 164, 164, 164, 164, 164, 164,
+ 22, 23, 24, 25, 26, 27, 28, 29, 16, 163,
+ 70, 75, 76, 167, 16, 147, 148, 159, 16, 161,
+ 16, 159, 82, 161, 162, 16, 86, 16, 74, 70,
+ 16, 70, 101, 102, 80, 106, 107, 59, 60, 106,
+ 107, 87, 88, 89, 31, 91, 1, 93, 70, 95,
+ 111, 112, 98, 16, 16, 16, 116, 103, 104, 105,
+ 16, 31, 122, 109, 110, 37, 38, 16, 35, 115,
+ 116, 31, 0, 1, 31, 30, 136, 137, 124, 139,
+ 140, 141, 142, 143, 144, 31, 31, 31, 31, 31,
+ 31, 151, 152, 134, 135, 134, 135, 37, 38, 31,
+ 31, 31, 74, 163, 31, 1, 166, 167, 80, 31,
+ 149, 31, 134, 135, 31, 87, 88, 89, 31, 91,
+ 161, 93, 161, 95, 31, 31, 98, 149, 37, 37,
+ 35, 103, 104, 105, 74, 31, 35, 109, 110, 161,
+ 80, 35, 35, 115, 116, 70, 35, 87, 88, 89,
+ 35, 91, 124, 93, 37, 95, 84, 37, 98, 38,
+ 57, 116, 1, 103, 104, 105, 69, 77, 31, 109,
+ 110, 82, 70, 85, 89, 115, 116, 96, 106, 80,
+ 108, 83, 154, 138, 124, 113, 90, 82, 84, 117,
+ 118, 114, 31, 80, 122, 85, 132, 97, 132, 127,
+ 128, 129, 130, 131, 92, 97, 97, 128, 163, 134,
+ 135, 74, 70, 94, 1, 133, 100, 80, 100, 154,
+ 146, 137, 150, 160, 87, 88, 89, 113, 91, 1,
+ 93, 159, 95, 161, 162, 98, 161, 161, 1, 153,
+ 103, 104, 105, 74, -1, 84, 109, 110, -1, 80,
+ 1, -1, 115, 116, -1, -1, 87, 88, 89, 31,
+ 91, 124, 93, 159, 95, 161, 138, 98, 31, 146,
+ -1, 102, 103, 104, 105, 74, 134, 135, 109, 110,
+ 149, 80, 81, 149, 115, 116, 153, 149, 87, 88,
+ 89, 149, 91, 124, 93, 149, 95, 84, 149, 98,
+ 155, 158, 161, 161, 103, 104, 105, 159, 161, 159,
+ 109, 110, 84, 100, 101, 102, 115, 116, 159, 106,
+ 159, 84, 161, 159, 159, 124, 159, 159, 162, 159,
+ 117, 118, 159, 84, 159, 122, 159, 159, 159, 159,
+ 127, 128, 129, 130, 131, 70, 159, 159, 159, 100,
+ 101, 102, 1, 159, 161, 106, 160, 82, 160, 160,
+ 160, 86, 160, 166, 161, 161, 117, 118, 161, 1,
+ 161, 122, 159, 161, 161, 162, 127, 128, 129, 130,
+ 131, 161, 31, 161, 161, 161, 165, 159, 162, 161,
+ 163, 116, 162, 162, 162, 162, 159, 122, 161, 163,
+ 162, 162, 162, 162, 162, 162, 162, 162, 159, 162,
+ 161, 162, 137, 162, 139, 140, 141, 142, 143, 144,
+ 162, 162, 162, 162, 162, 162, 151, 152, 162, 162,
+ 74, 162, 162, 82, 162, 164, 80, 163, 163, 163,
+ 163, 166, 167, 87, 88, 89, 163, 91, 163, 93,
+ 82, 95, 163, 163, 98, 163, 163, 163, 163, 103,
+ 104, 105, 163, 163, 163, 109, 110, 116, 117, 118,
+ 163, 115, 116, 122, 163, 163, 163, 163, 163, 128,
+ 124, 163, 163, 163, 116, 117, 118, 163, 137, 163,
+ 122, 163, 163, 163, 163, 163, 128, 163, 163, 163,
+ 163, 163, 163, -1, 164, 137, 164, 164, 164, 158,
+ 164, 164, 164, 164, 163, 165, 164, 164, 167, 164,
+ -1, 164, 164, 164, 164, 164, 158, 164, 164, 164,
+ 164, 163, -1, 164, 164, 167, 164, 164, 164, 164,
164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 164, -1, 165, 165, -1, 166, -1, 167
+ 164, 164, 164, 164, 164, 164, 164, -1, -1, -1,
+ 167
);
protected $actionBase = array(
- 0, -2, 154, 542, 698, 894, 913, 586, 53, 430,
- 867, 307, 307, 67, 307, 307, 307, 482, 693, 693,
- 925, 693, 468, 504, 204, 204, 204, 651, 651, 651,
- 651, 685, 685, 845, 845, 877, 813, 781, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
- 978, 978, 356, 31, 369, 716, 1008, 1014, 1010, 1015,
- 1006, 1005, 1009, 1011, 1016, 935, 936, 799, 937, 938,
- 939, 941, 1012, 873, 1007, 1013, 291, 291, 291, 291,
+ 0, -2, 154, 542, 752, 893, 929, 52, 374, 431,
+ 398, 869, 793, 235, 307, 307, 793, 307, 784, 908,
+ 908, 917, 908, 538, 841, 468, 468, 468, 708, 708,
+ 708, 708, 740, 740, 849, 849, 881, 817, 634, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 348, 346, 370, 653, 1063, 1069,
+ 1065, 1070, 1061, 1060, 1064, 1066, 1071, 946, 947, 774,
+ 949, 950, 943, 952, 1067, 882, 1062, 1068, 291, 291,
291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 290, 159, 136, 382, 382, 382, 382, 382,
- 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
- 382, 382, 382, 382, 382, 54, 54, 54, 187, 569,
- 569, 341, 203, 658, 47, 699, 699, 699, 699, 699,
- 699, 699, 699, 699, 699, 144, 144, 7, 7, 7,
- 7, 7, 371, -25, -25, -25, -25, 816, 477, 102,
- 499, 358, 449, 514, 525, 525, 360, -116, 231, 231,
- 231, 231, 231, 231, -78, -78, -78, -78, -78, 319,
- 580, 541, 86, 423, 636, 636, 636, 636, 423, 423,
- 423, 423, 825, 1020, 423, 423, 423, 558, 688, 688,
- 754, 147, 147, 147, 688, 550, 788, 422, 550, 422,
- 194, 92, 794, -55, -40, 321, 814, 794, 748, 842,
- 198, 143, 772, 539, 772, 1004, 778, 767, 733, 868,
- 896, 1017, 820, 933, 821, 934, 219, 731, 1003, 1003,
- 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1021,
- 339, 1004, 286, 1021, 1021, 1021, 339, 339, 339, 339,
- 339, 339, 339, 339, 339, 339, 615, 286, 380, 479,
- 286, 796, 339, 356, 804, 356, 356, 356, 356, 964,
- 356, 356, 356, 356, 356, 356, 969, 768, 410, 356,
- 31, 206, 206, 472, 193, 206, 206, 206, 206, 356,
- 356, 356, 539, 776, 793, 584, 809, 377, 776, 776,
- 776, 355, 185, 39, 348, 555, 523, 546, 773, 773,
- 789, 946, 946, 773, 785, 773, 789, 951, 773, 946,
- 787, 467, 596, 540, 585, 600, 946, 519, 773, 773,
- 773, 773, 622, 773, 503, 478, 773, 773, 749, 779,
- 792, 46, 946, 946, 946, 792, 581, 808, 808, 808,
- 830, 831, 762, 777, 534, 526, 645, 459, 807, 777,
- 777, 773, 588, 762, 777, 762, 777, 805, 777, 777,
- 777, 762, 777, 785, 577, 777, 734, 634, 60, 777,
- 6, 952, 953, 671, 954, 949, 955, 976, 956, 957,
- 884, 962, 950, 958, 948, 947, 790, 717, 718, 818,
- 764, 945, 766, 766, 766, 943, 766, 766, 766, 766,
- 766, 766, 766, 766, 717, 770, 835, 811, 791, 965,
- 721, 729, 806, 897, 1018, 1019, 964, 997, 959, 826,
- 732, 983, 966, 866, 876, 967, 968, 984, 998, 999,
- 898, 786, 899, 900, 803, 970, 885, 766, 952, 957,
- 950, 958, 948, 947, 765, 760, 755, 756, 753, 740,
- 737, 739, 771, 1000, 942, 871, 844, 969, 944, 717,
- 869, 979, 875, 985, 986, 878, 802, 775, 872, 901,
- 971, 972, 973, 886, 1001, 829, 980, 874, 987, 810,
- 902, 988, 989, 990, 991, 906, 887, 888, 889, 832,
- 774, 940, 798, 908, 643, 744, 797, 975, 647, 963,
- 890, 915, 916, 992, 993, 994, 917, 960, 839, 981,
- 784, 982, 977, 840, 843, 653, 728, 795, 681, 683,
- 918, 923, 927, 961, 782, 769, 846, 847, 1002, 928,
- 686, 848, 735, 929, 996, 736, 741, 800, 893, 824,
- 817, 780, 974, 783, 849, 930, 851, 858, 859, 995,
- 861, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 291, 291, 291, 291, 291, 525, 191, 359, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 174, 174,
+ 174, 620, 620, 51, 465, 356, 955, 955, 955, 955,
+ 955, 955, 955, 955, 955, 955, 658, 184, 144, 144,
+ 7, 7, 7, 7, 7, 1031, 371, 1048, -25, -25,
+ -25, -25, 50, 725, 526, 449, 39, 317, 80, 474,
+ 474, 13, 13, 512, 512, 422, 422, 512, 512, 512,
+ 808, 808, 808, 808, 443, 505, 360, 308, -78, 209,
+ 209, 209, 209, -78, -78, -78, -78, 803, 877, -78,
+ -78, -78, 63, 641, 641, 822, -1, -1, -1, 641,
+ 253, 790, 548, 253, 384, 548, 480, 402, 764, 759,
+ -49, 447, 764, 639, 755, 198, 143, 825, 609, 825,
+ 1059, 320, 768, 426, 749, 720, 874, 904, 1072, 796,
+ 941, 798, 942, 106, -58, 710, 1058, 1058, 1058, 1058,
+ 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1073, 336, 1059,
+ 423, 1073, 1073, 1073, 336, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 619, 423, 586, 616, 423, 795,
+ 336, 348, 814, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 750, 202, 348, 346, 78, 78, 484,
+ 65, 78, 78, 78, 78, 348, 348, 348, 348, 609,
+ 783, 766, 613, 813, 492, 783, 783, 783, 473, 135,
+ 378, 488, 713, 775, 67, 779, 779, 785, 969, 969,
+ 779, 769, 779, 785, 975, 779, 779, 969, 969, 823,
+ 280, 563, 478, 550, 568, 969, 377, 779, 779, 779,
+ 779, 746, 573, 779, 342, 314, 779, 779, 746, 744,
+ 760, 43, 762, 969, 969, 969, 746, 547, 762, 762,
+ 762, 839, 844, 794, 758, 444, 433, 588, 232, 801,
+ 758, 758, 779, 558, 794, 758, 794, 758, 745, 758,
+ 758, 758, 794, 758, 769, 502, 758, 717, 583, 224,
+ 758, 6, 979, 980, 624, 981, 973, 987, 1019, 991,
+ 992, 873, 965, 999, 974, 993, 972, 970, 773, 682,
+ 684, 818, 811, 963, 777, 777, 777, 956, 777, 777,
+ 777, 777, 777, 777, 777, 777, 682, 743, 829, 765,
+ 1006, 689, 691, 754, 906, 901, 1030, 1004, 1049, 994,
+ 828, 694, 1028, 1008, 846, 821, 1009, 1010, 1029, 1050,
+ 1052, 910, 782, 911, 912, 876, 1012, 883, 777, 979,
+ 992, 693, 974, 993, 972, 970, 748, 739, 737, 738,
+ 736, 735, 723, 734, 753, 1053, 954, 907, 878, 1011,
+ 957, 682, 879, 1023, 756, 1032, 1033, 827, 788, 778,
+ 880, 913, 1014, 1015, 1016, 884, 1054, 887, 830, 1024,
+ 951, 1035, 789, 918, 1037, 1038, 1039, 1040, 889, 919,
+ 892, 916, 900, 845, 776, 1020, 761, 920, 591, 787,
+ 791, 800, 1018, 606, 1000, 902, 921, 922, 1041, 1043,
+ 1044, 923, 924, 995, 847, 1026, 799, 1027, 1022, 848,
+ 850, 617, 797, 1055, 781, 786, 772, 621, 632, 925,
+ 927, 931, 998, 763, 770, 853, 855, 1056, 771, 1057,
+ 938, 635, 857, 718, 939, 1046, 719, 724, 637, 678,
+ 672, 731, 792, 903, 826, 757, 780, 1017, 724, 767,
+ 858, 940, 859, 860, 867, 1045, 868, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 458, 458, 458, 458, 458, 458, 307, 307, 307, 307,
- 0, 0, 307, 0, 0, 0, 458, 458, 458, 458,
+ 0, 0, 0, 0, 0, 0, 0, 458, 458, 458,
+ 458, 458, 458, 307, 307, 307, 307, 307, 307, 307,
+ 0, 0, 307, 0, 458, 458, 458, 458, 458, 458,
458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
@@ -575,177 +590,182 @@ class Php7 extends \PhpParser\ParserAbstract
458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
- 458, 291, 291, 291, 291, 291, 291, 291, 291, 291,
291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 0, 0, 0, 0, 0,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 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, 0,
0, 291, 291, 291, 291, 291, 291, 291, 291, 291,
291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, 291, 291, 291, 291, 291, 423, 423,
- 291, 291, 0, 291, 423, 423, 423, 423, 423, 423,
- 423, 423, 423, 423, 291, 291, 291, 291, 291, 291,
- 291, 787, 147, 147, 147, 147, 423, 423, 423, 423,
- 423, -88, -88, 147, 147, 423, 384, 423, 423, 423,
- 423, 423, 423, 423, 423, 423, 423, 423, 0, 0,
- 286, 422, 0, 785, 785, 785, 785, 0, 0, 0,
- 0, 422, 422, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 286, 422, 0, 286, 0, 785,
- 785, 423, 787, 787, 314, 384, 423, 0, 0, 0,
- 0, 286, 785, 286, 339, 422, 339, 339, 206, 356,
- 314, 510, 510, 510, 510, 0, 539, 787, 787, 787,
- 787, 787, 787, 787, 787, 787, 787, 787, 785, 0,
- 787, 0, 785, 785, 785, 0, 0, 0, 0, 0,
+ 291, 291, 291, 291, 291, 291, 291, 66, 66, 291,
+ 291, 291, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 0, 291, 291, 291, 291, 291, 291, 291,
+ 291, 66, 823, 66, -1, -1, -1, -1, 66, 66,
+ 66, -88, -88, 66, 384, 66, 66, -1, -1, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 0, 0, 423, 548, 66, 769, 769, 769, 769, 66,
+ 66, 66, 66, 548, 548, 66, 66, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 423, 548, 0, 423,
+ 0, 0, 769, 769, 66, 384, 823, 643, 66, 0,
+ 0, 0, 0, 423, 769, 423, 336, 779, 548, 779,
+ 336, 336, 78, 348, 643, 611, 611, 611, 611, 0,
+ 0, 609, 823, 823, 823, 823, 823, 823, 823, 823,
+ 823, 823, 823, 769, 0, 823, 0, 769, 769, 769,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 785, 0, 0, 946, 0, 0, 0, 0, 773, 0,
- 0, 0, 0, 0, 0, 773, 951, 0, 0, 0,
- 0, 0, 0, 785, 0, 0, 0, 0, 0, 0,
- 0, 0, 766, 802, 0, 802, 0, 766, 766, 766
+ 0, 0, 0, 0, 0, 769, 0, 0, 969, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 975,
+ 0, 0, 0, 0, 0, 0, 769, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 777, 788, 0, 788,
+ 0, 777, 777, 777, 0, 0, 0, 0, 797, 771
);
protected $actionDefault = array(
3,32767, 103,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 101,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 582, 582, 582,
- 582,32767,32767, 250, 103,32767,32767, 458, 376, 376,
- 376,32767,32767, 526, 526, 526, 526, 526, 526,32767,
- 32767,32767,32767,32767,32767, 458,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767, 101,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 596, 596,
+ 596, 596,32767,32767, 254, 103,32767,32767, 469, 387,
+ 387, 387,32767,32767, 540, 540, 540, 540, 540, 540,
+ 32767,32767,32767,32767,32767,32767, 469,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,32767,32767,32767, 101,32767,
- 32767,32767, 37, 7, 8, 10, 11, 50, 17, 314,
- 32767,32767,32767,32767, 103,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 101,
+ 32767,32767,32767, 37, 7, 8, 10, 11, 50, 17,
+ 324,32767,32767,32767,32767, 103,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767, 575,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 589,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767, 462, 441, 442, 444,
- 445, 375, 527, 581, 317, 578, 374, 146, 329, 319,
- 238, 320, 254, 463, 255, 464, 467, 468, 211, 283,
- 371, 150, 405, 459, 407, 457, 461, 406, 381, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 379, 380, 460, 438, 437, 436, 403,32767,
- 32767, 404, 408, 378, 411,32767,32767,32767,32767,32767,
- 32767,32767,32767, 103,32767, 409, 410, 427, 428, 425,
- 426, 429,32767, 430, 431, 432, 433,32767,32767, 306,
- 32767,32767, 355, 353, 418, 419, 306,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767, 520,
- 435,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767, 103,32767, 101, 522, 400, 402,
- 490, 413, 414, 412, 382,32767, 497,32767, 103, 499,
- 32767,32767,32767, 112,32767,32767,32767,32767, 521,32767,
- 528, 528,32767, 483, 101, 194,32767, 194, 194,32767,
- 32767,32767,32767,32767,32767,32767, 589, 483, 111, 111,
- 111, 111, 111, 111, 111, 111, 111, 111, 111,32767,
- 194, 111,32767,32767,32767, 101, 194, 194, 194, 194,
- 194, 194, 194, 194, 194, 194, 189,32767, 264, 266,
- 103, 543, 194,32767, 502,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 495,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 473, 452,
+ 453, 455, 456, 386, 541, 595, 327, 592, 385, 146,
+ 339, 329, 242, 330, 258, 474, 259, 475, 478, 479,
+ 215, 287, 382, 150, 151, 416, 470, 418, 468, 472,
+ 417, 392, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 390, 391, 471, 449, 448,
+ 447,32767,32767, 414, 415, 419,32767,32767,32767,32767,
+ 32767,32767,32767,32767, 103,32767, 389, 422, 420, 421,
+ 438, 439, 436, 437, 440,32767,32767,32767, 441, 442,
+ 443, 444, 316,32767,32767, 366, 364, 316, 112,32767,
+ 32767, 429, 430,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767, 534, 446,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 103,
+ 32767, 101, 536, 411, 413, 503, 424, 425, 423, 393,
+ 32767, 510,32767, 103,32767, 512,32767,32767,32767,32767,
+ 32767,32767,32767, 535,32767, 542, 542,32767, 496, 101,
+ 195,32767,32767,32767, 195, 195,32767,32767,32767,32767,
+ 32767,32767,32767,32767, 603, 496, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111,32767, 195, 111,
+ 32767,32767,32767, 101, 195, 195, 195, 195, 195, 195,
+ 195, 195, 195, 195, 190,32767, 268, 270, 103, 557,
+ 195,32767, 515,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 508,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 496,
+ 434, 139,32767, 139, 542, 426, 427, 428, 498, 542,
+ 542, 542, 312, 289,32767,32767,32767,32767, 513, 513,
+ 101, 101, 101, 101, 508,32767,32767,32767,32767, 112,
+ 100, 100, 100, 100, 100, 104, 102,32767,32767,32767,
+ 32767, 223, 100,32767, 102, 102,32767,32767, 223, 225,
+ 212, 102, 227,32767, 561, 562, 223, 102, 227, 227,
+ 227, 247, 247, 485, 318, 102, 100, 102, 102, 197,
+ 318, 318,32767, 102, 485, 318, 485, 318, 199, 318,
+ 318, 318, 485, 318,32767, 102, 318, 214, 100, 100,
+ 318,32767,32767,32767, 498,32767,32767,32767,32767,32767,
+ 32767,32767, 222,32767,32767,32767,32767,32767,32767,32767,
+ 529,32767, 546, 559, 432, 433, 435, 544, 457, 458,
+ 459, 460, 461, 462, 463, 465, 591,32767, 502,32767,
+ 32767,32767, 338, 601,32767, 601,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 483, 423, 139,32767, 139, 528, 415, 416,
- 417, 485, 528, 528, 528, 302, 285,32767,32767,32767,
- 32767, 500, 500, 101, 101, 101, 101, 495,32767,32767,
- 112, 100, 100, 100, 100, 100, 104, 102,32767,32767,
- 32767,32767, 100,32767, 102, 102,32767,32767, 221, 208,
- 219, 102,32767, 547, 548, 219, 102, 223, 223, 223,
- 243, 243, 474, 308, 102, 100, 102, 102, 196, 308,
- 308,32767, 102, 474, 308, 474, 308, 198, 308, 308,
- 308, 474, 308,32767, 102, 308, 210, 100, 100, 308,
- 32767,32767,32767, 485,32767,32767,32767,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767, 515,32767,
- 532, 545, 421, 422, 424, 530, 446, 447, 448, 449,
- 450, 451, 452, 454, 577,32767, 489,32767,32767,32767,
- 32767, 328, 587,32767, 587,32767,32767,32767,32767,32767,
+ 32767, 602,32767, 542,32767,32767,32767,32767, 431, 9,
+ 76, 491, 43, 44, 52, 58, 519, 520, 521, 522,
+ 516, 517, 523, 518,32767,32767, 524, 567,32767,32767,
+ 543, 594,32767,32767,32767,32767,32767,32767, 139,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 588,32767, 528,32767,32767,32767,32767, 420, 9, 76,
- 43, 44, 52, 58, 506, 507, 508, 509, 503, 504,
- 510, 505,32767,32767, 511, 553,32767,32767, 529, 580,
- 32767,32767,32767,32767,32767,32767, 139,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767, 515,32767, 137,
+ 529,32767, 137,32767,32767,32767,32767,32767,32767,32767,
+ 32767, 525,32767,32767,32767, 542,32767,32767,32767,32767,
+ 314, 311,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 542,32767,
+ 32767,32767,32767,32767, 291,32767, 308,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767, 528,32767,32767,32767, 304, 305,32767,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 528,32767,32767,32767, 287, 288,32767,32767,
- 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767,32767, 282,32767,32767, 370,32767,32767,32767,32767,
- 349,32767,32767,32767,32767,32767,32767,32767,32767,32767,
- 32767, 152, 152, 3, 3, 331, 152, 152, 152, 331,
- 152, 331, 331, 331, 152, 152, 152, 152, 152, 152,
- 276, 184, 258, 261, 243, 243, 152, 341, 152
+ 32767,32767,32767, 286,32767,32767, 381, 498, 294, 296,
+ 297,32767,32767,32767,32767, 360,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 153, 153, 3,
+ 3, 341, 153, 153, 153, 341, 341, 153, 341, 341,
+ 341, 153, 153, 153, 153, 153, 153, 280, 185, 262,
+ 265, 247, 247, 153, 352, 153
);
protected $goto = array(
- 194, 194, 669, 423, 642, 883, 839, 884, 1025, 417,
- 308, 309, 330, 562, 314, 422, 331, 424, 621, 823,
- 677, 851, 824, 585, 838, 857, 165, 165, 165, 165,
- 218, 195, 191, 191, 175, 177, 213, 191, 191, 191,
- 191, 191, 192, 192, 192, 192, 192, 192, 186, 187,
- 188, 189, 190, 215, 213, 216, 522, 523, 413, 524,
- 526, 527, 528, 529, 530, 531, 532, 533, 1094, 166,
- 167, 168, 193, 169, 170, 171, 164, 172, 173, 174,
- 176, 212, 214, 217, 235, 238, 241, 242, 244, 255,
- 256, 257, 258, 259, 260, 261, 263, 264, 265, 266,
- 274, 275, 311, 312, 313, 418, 419, 420, 567, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 178, 234, 179, 196, 197, 198,
- 236, 186, 187, 188, 189, 190, 215, 1094, 199, 180,
- 181, 182, 200, 196, 183, 237, 201, 199, 163, 202,
- 203, 184, 204, 205, 206, 185, 207, 208, 209, 210,
- 211, 323, 323, 323, 323, 826, 607, 607, 800, 546,
- 539, 1189, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
- 1224, 1224, 1242, 1242, 343, 464, 1267, 1268, 1242, 1242,
- 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 389, 539,
- 546, 555, 556, 396, 565, 587, 601, 602, 831, 798,
- 879, 874, 875, 888, 15, 832, 876, 829, 877, 878,
- 830, 455, 455, 941, 882, 804, 1190, 251, 251, 559,
- 455, 1240, 1240, 814, 1046, 1042, 1043, 1240, 1240, 1240,
- 1240, 1240, 1240, 1240, 1240, 1240, 1240, 605, 639, 1191,
- 1250, 1251, 341, 248, 248, 248, 248, 250, 252, 819,
- 819, 1193, 1193, 1000, 1193, 1000, 804, 416, 804, 596,
- 1000, 1282, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
- 1000, 1000, 1000, 1264, 1264, 962, 1264, 1193, 488, 5,
- 489, 6, 1193, 1193, 1193, 1193, 495, 385, 1193, 1193,
- 1193, 1274, 1274, 1274, 1274, 277, 277, 277, 277, 558,
- 1276, 1276, 1276, 1276, 1066, 1067, 895, 346, 553, 319,
- 303, 896, 703, 620, 622, 641, 640, 346, 346, 1143,
- 659, 663, 976, 667, 675, 972, 1260, 430, 1292, 1292,
- 332, 346, 346, 816, 346, 636, 1309, 650, 651, 652,
- 844, 536, 536, 924, 536, 1292, 525, 525, 541, 1269,
- 1270, 346, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 1295, 617, 618, 1033, 819, 446, 395, 1262,
- 1262, 1033, 935, 935, 935, 935, 563, 599, 446, 929,
- 936, 933, 403, 676, 822, 1186, 552, 534, 534, 534,
- 534, 841, 589, 600, 984, 1031, 1253, 965, 939, 939,
- 937, 939, 702, 465, 538, 974, 969, 344, 345, 706,
- 440, 900, 1082, 853, 946, 440, 440, 1035, 604, 662,
- 469, 1293, 1293, 981, 1077, 540, 550, 0, 0, 0,
- 540, 843, 550, 645, 960, 388, 1174, 911, 1293, 837,
- 1175, 1178, 912, 1179, 0, 566, 458, 459, 460, 541,
- 849, 1185, 0, 1300, 1301, 254, 254, 401, 402, 0,
- 0, 0, 648, 0, 649, 0, 405, 406, 407, 0,
- 660, 0, 0, 408, 0, 0, 0, 339, 847, 594,
- 608, 611, 612, 613, 614, 633, 634, 635, 679, 918,
- 995, 1003, 1007, 1004, 1008, 0, 440, 440, 440, 440,
- 440, 440, 440, 440, 440, 440, 440, 0, 1188, 440,
- 852, 840, 1030, 1034, 584, 1059, 0, 680, 666, 666,
- 944, 496, 672, 1057, 387, 391, 547, 586, 590, 425,
- 0, 0, 0, 0, 0, 0, 425, 0, 0, 0,
- 0, 0, 0, 934, 1012, 1005, 1009, 1006, 1010, 0,
- 0, 0, 0, 0, 272, 0, 0, 0, 0, 537,
- 537, 0, 0, 0, 0, 1075, 856, 0, 0, 0,
+ 196, 196, 1031, 703, 694, 430, 658, 1062, 1334, 1334,
+ 424, 313, 314, 335, 573, 319, 429, 336, 431, 635,
+ 651, 652, 850, 669, 670, 671, 1334, 167, 167, 167,
+ 167, 221, 197, 193, 193, 177, 179, 216, 193, 193,
+ 193, 193, 193, 194, 194, 194, 194, 194, 194, 188,
+ 189, 190, 191, 192, 218, 216, 219, 534, 535, 420,
+ 536, 538, 539, 540, 541, 542, 543, 544, 545, 1132,
+ 168, 169, 170, 195, 171, 172, 173, 166, 174, 175,
+ 176, 178, 215, 217, 220, 238, 243, 244, 245, 257,
+ 258, 259, 260, 261, 262, 263, 264, 268, 269, 270,
+ 271, 281, 282, 316, 317, 318, 425, 426, 427, 578,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 180, 237, 181, 198, 199,
+ 200, 239, 188, 189, 190, 191, 192, 218, 1132, 201,
+ 182, 183, 184, 202, 198, 185, 240, 203, 201, 165,
+ 204, 205, 186, 206, 207, 208, 187, 209, 210, 211,
+ 212, 213, 214, 853, 851, 278, 278, 278, 278, 418,
+ 620, 620, 350, 570, 597, 1265, 1265, 1265, 1265, 1265,
+ 1265, 1265, 1265, 1265, 1265, 1283, 1283, 831, 618, 655,
+ 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283,
+ 353, 353, 353, 353, 866, 557, 550, 858, 825, 907,
+ 902, 903, 916, 859, 904, 856, 905, 906, 857, 878,
+ 457, 910, 865, 884, 546, 546, 546, 546, 831, 601,
+ 831, 1084, 1079, 1080, 1081, 341, 550, 557, 566, 567,
+ 343, 576, 599, 613, 614, 407, 408, 972, 465, 465,
+ 667, 15, 668, 1323, 411, 412, 413, 465, 681, 348,
+ 1233, 414, 1233, 478, 569, 346, 439, 1031, 1031, 1233,
+ 993, 480, 1031, 393, 1031, 1031, 1104, 1105, 1031, 1031,
+ 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1315,
+ 1315, 1315, 1315, 1233, 657, 1333, 1333, 1055, 1233, 1233,
+ 1233, 1233, 1037, 1036, 1233, 1233, 1233, 1034, 1034, 1181,
+ 354, 678, 949, 1333, 437, 1026, 1042, 1043, 337, 691,
+ 354, 354, 827, 923, 691, 1040, 1041, 924, 691, 663,
+ 1336, 939, 871, 939, 354, 354, 1281, 1281, 354, 679,
+ 1350, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
+ 1281, 552, 537, 537, 911, 354, 912, 537, 537, 537,
+ 537, 537, 537, 537, 537, 537, 537, 548, 564, 548,
+ 574, 611, 730, 634, 636, 849, 548, 656, 475, 1308,
+ 1309, 680, 684, 1007, 692, 701, 1003, 252, 252, 996,
+ 970, 970, 968, 970, 729, 843, 549, 1005, 1000, 423,
+ 455, 608, 1294, 846, 955, 966, 966, 966, 966, 325,
+ 308, 455, 960, 967, 249, 249, 249, 249, 251, 253,
+ 402, 351, 352, 683, 868, 551, 561, 449, 449, 449,
+ 551, 1305, 561, 1305, 612, 396, 461, 1010, 1010, 1224,
+ 1305, 395, 398, 558, 598, 602, 1015, 468, 577, 469,
+ 470, 1310, 1311, 876, 552, 846, 1341, 1342, 964, 409,
+ 702, 733, 324, 275, 324, 1317, 1317, 1317, 1317, 606,
+ 621, 624, 625, 626, 627, 648, 649, 650, 705, 1068,
+ 596, 1097, 874, 706, 476, 1228, 507, 697, 880, 1095,
+ 1115, 432, 1301, 628, 630, 632, 432, 879, 867, 1067,
+ 1071, 5, 1072, 6, 1038, 1038, 977, 0, 975, 662,
+ 1049, 1045, 1046, 0, 0, 0, 0, 1226, 449, 449,
+ 449, 449, 449, 449, 449, 449, 449, 449, 449, 928,
+ 1120, 449, 965, 1070, 0, 0, 616, 1303, 1303, 1070,
+ 1229, 1230, 1012, 499, 0, 500, 0, 0, 841, 0,
+ 870, 506, 661, 991, 1113, 883, 1212, 941, 864, 0,
+ 1213, 1216, 942, 1217, 0, 0, 1231, 1291, 1292, 0,
+ 1223, 0, 0, 0, 846, 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 979,
- 979
+ 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, 0, 0, 255, 255
);
protected $gotoCheck = array(
- 42, 42, 72, 65, 65, 64, 35, 64, 121, 65,
- 65, 65, 65, 65, 65, 65, 65, 65, 65, 26,
- 9, 35, 27, 124, 35, 45, 42, 42, 42, 42,
+ 42, 42, 72, 9, 72, 65, 65, 126, 181, 181,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 85, 85, 26, 85, 85, 85, 181, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
@@ -759,94 +779,97 @@ class Php7 extends \PhpParser\ParserAbstract
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 23, 23, 23, 23, 15, 106, 106, 7, 75,
- 75, 20, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 106, 162, 162, 95, 168, 168, 168, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75, 15, 6,
- 15, 15, 15, 15, 75, 15, 15, 15, 15, 15,
- 15, 143, 143, 49, 15, 12, 20, 5, 5, 164,
- 143, 163, 163, 20, 15, 15, 15, 163, 163, 163,
- 163, 163, 163, 163, 163, 163, 163, 55, 55, 20,
- 20, 20, 171, 5, 5, 5, 5, 5, 5, 22,
- 22, 72, 72, 72, 72, 72, 12, 13, 12, 13,
- 72, 173, 72, 72, 72, 72, 72, 72, 72, 72,
- 72, 72, 72, 124, 124, 101, 124, 72, 149, 46,
- 149, 46, 72, 72, 72, 72, 149, 61, 72, 72,
- 72, 9, 9, 9, 9, 24, 24, 24, 24, 102,
- 124, 124, 124, 124, 138, 138, 72, 14, 48, 161,
- 161, 72, 48, 48, 48, 63, 48, 14, 14, 145,
- 48, 48, 48, 48, 48, 48, 124, 111, 174, 174,
- 29, 14, 14, 18, 14, 84, 14, 84, 84, 84,
- 39, 19, 19, 90, 19, 174, 165, 165, 14, 170,
- 170, 14, 165, 165, 165, 165, 165, 165, 165, 165,
- 165, 165, 174, 83, 83, 124, 22, 19, 28, 124,
- 124, 124, 19, 19, 19, 19, 2, 2, 19, 19,
- 19, 91, 91, 91, 25, 154, 9, 105, 105, 105,
- 105, 37, 105, 9, 108, 123, 14, 25, 25, 25,
- 25, 25, 25, 151, 25, 25, 25, 95, 95, 97,
- 23, 17, 17, 41, 94, 23, 23, 126, 17, 14,
- 82, 175, 175, 17, 141, 9, 9, -1, -1, -1,
- 9, 17, 9, 17, 17, 9, 78, 78, 175, 17,
- 78, 78, 78, 78, -1, 9, 9, 9, 9, 14,
- 9, 17, -1, 9, 9, 5, 5, 80, 80, -1,
- -1, -1, 80, -1, 80, -1, 80, 80, 80, -1,
- 80, -1, -1, 80, -1, -1, -1, 80, 9, 79,
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 87,
- 87, 87, 87, 87, 87, -1, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, -1, 14, 23,
- 16, 16, 16, 16, 8, 8, -1, 8, 8, 8,
- 16, 8, 8, 8, 58, 58, 58, 58, 58, 115,
- -1, -1, -1, -1, -1, -1, 115, -1, -1, -1,
- -1, -1, -1, 16, 115, 115, 115, 115, 115, -1,
- -1, -1, -1, -1, 24, -1, -1, -1, -1, 24,
- 24, -1, -1, -1, -1, 16, 16, -1, -1, -1,
+ 42, 42, 42, 15, 27, 23, 23, 23, 23, 43,
+ 107, 107, 96, 170, 129, 107, 107, 107, 107, 107,
+ 107, 107, 107, 107, 107, 168, 168, 12, 55, 55,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 24, 24, 24, 24, 35, 75, 75, 15, 6, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 35,
+ 82, 15, 35, 45, 106, 106, 106, 106, 12, 106,
+ 12, 15, 15, 15, 15, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 81, 81, 49, 148, 148,
+ 81, 75, 81, 179, 81, 81, 81, 148, 81, 177,
+ 72, 81, 72, 83, 103, 81, 82, 72, 72, 72,
+ 102, 83, 72, 61, 72, 72, 143, 143, 72, 72,
+ 72, 72, 72, 72, 72, 72, 72, 72, 72, 9,
+ 9, 9, 9, 72, 63, 180, 180, 113, 72, 72,
+ 72, 72, 117, 117, 72, 72, 72, 88, 88, 150,
+ 14, 88, 88, 180, 112, 88, 88, 88, 29, 7,
+ 14, 14, 7, 72, 7, 118, 118, 72, 7, 119,
+ 180, 9, 39, 9, 14, 14, 169, 169, 14, 115,
+ 14, 169, 169, 169, 169, 169, 169, 169, 169, 169,
+ 169, 14, 171, 171, 64, 14, 64, 171, 171, 171,
+ 171, 171, 171, 171, 171, 171, 171, 19, 48, 19,
+ 2, 2, 48, 48, 48, 25, 19, 48, 174, 174,
+ 174, 48, 48, 48, 48, 48, 48, 5, 5, 25,
+ 25, 25, 25, 25, 25, 18, 25, 25, 25, 13,
+ 19, 13, 14, 22, 91, 19, 19, 19, 19, 167,
+ 167, 19, 19, 19, 5, 5, 5, 5, 5, 5,
+ 28, 96, 96, 14, 37, 9, 9, 23, 23, 23,
+ 9, 129, 9, 129, 79, 9, 9, 106, 106, 159,
+ 129, 58, 58, 58, 58, 58, 109, 9, 9, 9,
+ 9, 176, 176, 9, 14, 22, 9, 9, 92, 92,
+ 92, 98, 24, 24, 24, 129, 129, 129, 129, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 128,
+ 8, 8, 9, 8, 156, 20, 8, 8, 41, 8,
+ 146, 116, 129, 84, 84, 84, 116, 16, 16, 16,
+ 16, 46, 131, 46, 116, 116, 95, -1, 16, 116,
+ 116, 116, 116, -1, -1, -1, -1, 14, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 17,
+ 17, 23, 16, 129, -1, -1, 17, 129, 129, 129,
+ 20, 20, 17, 154, -1, 154, -1, -1, 20, -1,
+ 17, 154, 17, 17, 16, 16, 78, 78, 17, -1,
+ 78, 78, 78, 78, -1, -1, 20, 20, 20, -1,
+ 17, -1, -1, -1, 22, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 105,
- 105
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5, 5
);
protected $gotoBase = array(
- 0, 0, -297, 0, 0, 226, 196, 159, 517, 7,
- 0, 0, -66, -65, 25, -175, 78, -33, 39, 84,
- -213, 0, -64, 158, 302, 390, 15, 18, 46, 49,
- 0, 0, 0, 0, 0, -356, 0, 67, 0, 32,
- 0, -10, -1, 0, 0, 13, -417, 0, -364, 200,
- 0, 0, 0, 0, 0, 208, 0, 0, 490, 0,
- 0, 256, 0, 85, -14, -236, 0, 0, 0, 0,
- 0, 0, -6, 0, 0, -168, 0, 0, 45, 140,
- -12, 0, -35, -95, -344, 0, 0, 221, 0, 0,
- 27, 92, 0, 0, -11, -287, 0, 19, 0, 0,
- 0, 251, 267, 0, 0, 370, -73, 0, 43, 0,
- 0, 61, 0, 0, 0, 270, 0, 0, 0, 0,
- 0, 6, 0, 40, 16, 0, -7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 42, 0,
- 0, -2, 0, 188, 0, 59, 0, 0, 0, -195,
- 0, -19, 0, 0, 35, 0, 0, 0, 0, 0,
- 0, 3, -57, -8, 201, 117, 0, 0, -110, 0,
- -4, 223, 0, 241, 36, 129, 0, 0
+ 0, 0, -339, 0, 0, 386, 195, 312, 472, -10,
+ 0, 0, -109, 62, 13, -184, 46, 65, 86, 102,
+ 93, 0, 125, 162, 197, 371, 18, 160, 83, 22,
+ 0, 0, 0, 0, 0, -166, 0, 85, 0, 9,
+ 0, 48, -1, 157, 0, 207, -232, 0, -340, 223,
+ 0, 0, 0, 0, 0, 148, 0, 0, 396, 0,
+ 0, 231, 0, 52, 334, -236, 0, 0, 0, 0,
+ 0, 0, -5, 0, 0, -139, 0, 0, 149, 91,
+ 112, -245, -58, -205, 15, -695, 0, 0, 28, 0,
+ 0, 75, 154, 0, 0, 64, -310, 0, 55, 0,
+ 0, 0, 235, 221, 0, 0, 196, -71, 0, 77,
+ 0, 0, 37, 24, 0, 56, 219, 23, 40, 39,
+ 0, 0, 0, 0, 0, 0, 5, 0, 106, 166,
+ 0, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 47, 0, 214, 0,
+ 35, 0, 0, 0, 49, 0, 45, 0, 0, 71,
+ 0, 0, 0, 0, 0, 0, 0, 88, -56, 95,
+ 144, 111, 0, 0, 78, 0, 80, 229, 0, 222,
+ -12, -299, 0, 0
);
protected $gotoDefault = array(
- -32768, 500, 710, 4, 711, 904, 787, 796, 582, 516,
- 678, 340, 609, 414, 1258, 881, 1081, 564, 815, 1202,
- 1210, 447, 818, 324, 700, 863, 864, 865, 392, 377,
- 383, 390, 631, 610, 482, 850, 443, 842, 474, 845,
- 442, 854, 162, 411, 498, 858, 3, 860, 543, 891,
- 378, 868, 379, 655, 870, 549, 872, 873, 386, 393,
- 394, 1086, 557, 606, 885, 243, 551, 886, 376, 887,
- 894, 381, 384, 664, 454, 493, 487, 404, 1061, 593,
- 628, 451, 468, 616, 615, 603, 467, 426, 409, 326,
- 923, 931, 475, 452, 945, 342, 953, 708, 1093, 623,
- 477, 961, 624, 968, 971, 517, 518, 466, 983, 269,
- 986, 478, 1018, 646, 647, 998, 625, 626, 1016, 461,
- 583, 1024, 444, 1032, 1246, 445, 1036, 262, 1039, 276,
- 410, 427, 1044, 1045, 8, 1051, 670, 671, 10, 273,
- 497, 1076, 665, 441, 1092, 431, 1162, 1164, 545, 479,
- 1182, 1181, 658, 494, 1187, 1249, 439, 519, 462, 310,
- 520, 302, 328, 307, 535, 289, 329, 521, 463, 1255,
- 1263, 325, 30, 1283, 1294, 336, 561, 598
+ -32768, 511, 737, 4, 738, 932, 814, 823, 594, 528,
+ 704, 347, 622, 421, 1299, 909, 1119, 575, 842, 1242,
+ 1250, 456, 845, 330, 727, 891, 892, 893, 399, 385,
+ 391, 397, 646, 623, 493, 877, 452, 869, 485, 872,
+ 451, 881, 164, 417, 509, 885, 3, 888, 554, 919,
+ 386, 896, 387, 674, 898, 560, 900, 901, 394, 400,
+ 401, 1124, 568, 619, 913, 256, 562, 914, 384, 915,
+ 922, 389, 392, 685, 464, 504, 498, 410, 1099, 563,
+ 605, 643, 446, 472, 617, 629, 615, 479, 433, 415,
+ 329, 954, 962, 486, 462, 976, 349, 984, 735, 1131,
+ 637, 488, 992, 638, 999, 1002, 529, 530, 477, 1014,
+ 272, 1017, 489, 12, 664, 1028, 1029, 665, 639, 1051,
+ 640, 666, 641, 1053, 471, 595, 1061, 453, 1069, 1287,
+ 454, 1073, 266, 1076, 277, 416, 434, 1082, 1083, 9,
+ 1089, 695, 696, 11, 276, 508, 1114, 686, 450, 1130,
+ 438, 1200, 1202, 556, 490, 1220, 1219, 677, 505, 1225,
+ 447, 1290, 448, 531, 473, 315, 532, 307, 333, 312,
+ 547, 294, 334, 533, 474, 1296, 1304, 331, 31, 1324,
+ 1335, 342, 572, 610
);
protected $ruleToNonTerminal = array(
@@ -865,29 +888,30 @@ class Php7 extends \PhpParser\ParserAbstract
4, 4, 4, 4, 29, 29, 30, 30, 32, 34,
34, 28, 36, 36, 33, 38, 38, 35, 35, 37,
37, 39, 39, 31, 40, 40, 41, 43, 44, 44,
- 45, 46, 46, 48, 47, 47, 47, 47, 49, 49,
+ 45, 45, 46, 46, 48, 47, 47, 47, 47, 49,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 25, 25, 68, 68, 71, 71, 70, 69,
- 69, 62, 74, 74, 75, 75, 76, 76, 77, 77,
- 78, 78, 26, 26, 27, 27, 27, 27, 86, 86,
- 88, 88, 81, 81, 89, 89, 90, 90, 90, 82,
- 82, 85, 85, 83, 83, 91, 92, 92, 56, 56,
- 64, 64, 67, 67, 67, 66, 93, 93, 94, 57,
- 57, 57, 57, 95, 95, 96, 96, 97, 97, 98,
- 99, 99, 100, 100, 101, 101, 54, 54, 50, 50,
- 103, 52, 52, 104, 51, 51, 53, 53, 63, 63,
- 63, 63, 79, 79, 107, 107, 109, 109, 110, 110,
- 110, 110, 108, 108, 108, 112, 112, 112, 112, 87,
- 87, 115, 115, 115, 113, 113, 116, 116, 114, 114,
- 117, 117, 118, 118, 118, 118, 111, 111, 80, 80,
- 80, 20, 20, 20, 120, 119, 119, 121, 121, 121,
- 121, 59, 122, 122, 123, 60, 125, 125, 126, 126,
- 127, 127, 84, 128, 128, 128, 128, 128, 128, 133,
- 133, 134, 134, 135, 135, 135, 135, 135, 136, 137,
- 137, 132, 132, 129, 129, 131, 131, 139, 139, 138,
- 138, 138, 138, 138, 138, 138, 130, 140, 140, 142,
- 141, 141, 61, 102, 143, 143, 55, 55, 42, 42,
+ 49, 49, 49, 25, 25, 68, 68, 71, 71, 70,
+ 69, 69, 62, 74, 74, 75, 75, 76, 76, 77,
+ 77, 78, 78, 79, 79, 26, 26, 27, 27, 27,
+ 27, 27, 87, 87, 89, 89, 82, 82, 90, 90,
+ 91, 91, 91, 83, 83, 86, 86, 84, 84, 92,
+ 93, 93, 56, 56, 64, 64, 67, 67, 67, 66,
+ 94, 94, 95, 57, 57, 57, 57, 96, 96, 97,
+ 97, 98, 98, 99, 100, 100, 101, 101, 102, 102,
+ 54, 54, 50, 50, 104, 52, 52, 105, 51, 51,
+ 53, 53, 63, 63, 63, 63, 80, 80, 108, 108,
+ 110, 110, 111, 111, 111, 111, 109, 109, 109, 113,
+ 113, 113, 113, 88, 88, 116, 116, 116, 117, 117,
+ 114, 114, 118, 118, 120, 120, 121, 121, 115, 122,
+ 122, 119, 123, 123, 123, 123, 112, 112, 81, 81,
+ 81, 20, 20, 20, 125, 124, 124, 126, 126, 126,
+ 126, 59, 127, 127, 128, 60, 130, 130, 131, 131,
+ 132, 132, 85, 133, 133, 133, 133, 133, 133, 133,
+ 138, 138, 139, 139, 140, 140, 140, 140, 140, 141,
+ 142, 142, 137, 137, 134, 134, 136, 136, 144, 144,
+ 143, 143, 143, 143, 143, 143, 143, 135, 145, 145,
+ 147, 146, 146, 61, 103, 148, 148, 55, 55, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
@@ -897,20 +921,20 @@ class Php7 extends \PhpParser\ParserAbstract
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 150, 144, 144, 149, 149, 152, 153, 153, 154,
- 155, 155, 155, 19, 19, 72, 72, 72, 72, 145,
- 145, 145, 145, 157, 157, 146, 146, 148, 148, 148,
- 151, 151, 162, 162, 162, 162, 162, 162, 162, 162,
- 162, 163, 163, 106, 165, 165, 165, 165, 147, 147,
- 147, 147, 147, 147, 147, 147, 58, 58, 160, 160,
- 160, 160, 166, 166, 156, 156, 156, 167, 167, 167,
- 167, 167, 167, 73, 73, 65, 65, 65, 65, 124,
- 124, 124, 124, 170, 169, 159, 159, 159, 159, 159,
- 159, 159, 158, 158, 158, 168, 168, 168, 168, 105,
- 164, 172, 172, 171, 171, 173, 173, 173, 173, 173,
- 173, 173, 173, 161, 161, 161, 161, 175, 176, 174,
- 174, 174, 174, 174, 174, 174, 174, 177, 177, 177,
- 177
+ 42, 42, 155, 149, 149, 154, 154, 157, 158, 158,
+ 159, 160, 161, 161, 161, 161, 19, 19, 72, 72,
+ 72, 72, 150, 150, 150, 150, 163, 163, 151, 151,
+ 153, 153, 153, 156, 156, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 169, 169, 169, 107, 171, 171,
+ 171, 171, 152, 152, 152, 152, 152, 152, 152, 152,
+ 58, 58, 166, 166, 166, 166, 172, 172, 162, 162,
+ 162, 173, 173, 173, 173, 173, 173, 73, 73, 65,
+ 65, 65, 65, 129, 129, 129, 129, 176, 175, 165,
+ 165, 165, 165, 165, 165, 165, 164, 164, 164, 174,
+ 174, 174, 174, 106, 170, 178, 178, 177, 177, 179,
+ 179, 179, 179, 179, 179, 179, 179, 167, 167, 167,
+ 167, 181, 182, 180, 180, 180, 180, 180, 180, 180,
+ 180, 183, 183, 183, 183
);
protected $ruleToLength = array(
@@ -929,52 +953,53 @@ class Php7 extends \PhpParser\ParserAbstract
3, 4, 2, 3, 1, 1, 7, 6, 2, 3,
1, 2, 3, 1, 2, 3, 1, 1, 3, 1,
3, 1, 2, 2, 3, 1, 3, 2, 3, 1,
- 3, 2, 0, 1, 1, 1, 1, 1, 3, 7,
- 10, 5, 7, 9, 5, 3, 3, 3, 3, 3,
- 3, 1, 2, 5, 7, 9, 6, 5, 6, 3,
- 2, 1, 1, 1, 0, 2, 1, 3, 8, 0,
- 4, 2, 1, 3, 0, 1, 0, 1, 0, 1,
- 3, 1, 8, 9, 8, 7, 6, 8, 0, 2,
- 0, 2, 1, 2, 1, 2, 1, 1, 1, 0,
- 2, 0, 2, 0, 2, 2, 1, 3, 1, 4,
- 1, 4, 1, 1, 4, 2, 1, 3, 3, 3,
- 4, 4, 5, 0, 2, 4, 3, 1, 1, 7,
- 0, 2, 1, 3, 3, 4, 1, 4, 0, 2,
- 5, 0, 2, 6, 0, 2, 0, 3, 1, 2,
- 1, 1, 2, 0, 1, 3, 0, 2, 1, 1,
- 1, 1, 6, 8, 6, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
- 3, 3, 1, 2, 1, 1, 0, 1, 0, 2,
+ 3, 3, 2, 0, 1, 1, 1, 1, 1, 3,
+ 7, 10, 5, 7, 9, 5, 3, 3, 3, 3,
+ 3, 3, 1, 2, 5, 7, 9, 6, 5, 6,
+ 3, 2, 1, 1, 1, 0, 2, 1, 3, 8,
+ 0, 4, 2, 1, 3, 0, 1, 0, 1, 0,
+ 1, 3, 1, 1, 1, 8, 9, 7, 8, 7,
+ 6, 8, 0, 2, 0, 2, 1, 2, 1, 2,
+ 1, 1, 1, 0, 2, 0, 2, 0, 2, 2,
+ 1, 3, 1, 4, 1, 4, 1, 1, 4, 2,
+ 1, 3, 3, 3, 4, 4, 5, 0, 2, 4,
+ 3, 1, 1, 7, 0, 2, 1, 3, 3, 4,
+ 1, 4, 0, 2, 5, 0, 2, 6, 0, 2,
+ 0, 3, 1, 2, 1, 1, 2, 0, 1, 3,
+ 0, 2, 1, 1, 1, 1, 6, 8, 6, 1,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 3, 3, 1, 3, 3, 3, 3, 3, 1, 3,
+ 3, 1, 1, 2, 1, 1, 0, 1, 0, 2,
2, 2, 4, 3, 1, 1, 3, 1, 2, 2,
3, 2, 3, 1, 1, 2, 3, 1, 1, 3,
- 2, 0, 1, 5, 5, 10, 3, 5, 1, 1,
- 3, 0, 2, 4, 5, 4, 4, 4, 3, 1,
- 1, 1, 1, 1, 1, 0, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 3, 1,
- 1, 3, 2, 2, 3, 1, 0, 1, 1, 3,
- 3, 3, 4, 1, 1, 2, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
- 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
+ 2, 0, 1, 5, 5, 6, 10, 3, 5, 1,
+ 1, 3, 0, 2, 4, 5, 4, 4, 4, 3,
+ 1, 1, 1, 1, 1, 1, 0, 1, 1, 2,
+ 1, 1, 1, 1, 1, 1, 1, 2, 1, 3,
+ 1, 1, 3, 2, 2, 3, 1, 0, 1, 1,
+ 3, 3, 3, 4, 1, 1, 2, 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, 2, 8, 9, 8, 9, 9, 10, 9,
- 10, 8, 3, 2, 0, 4, 2, 1, 3, 2,
- 2, 2, 4, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 0, 3, 0, 1, 1,
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 3, 3, 4, 1, 1, 3, 1, 1,
- 1, 1, 1, 3, 2, 3, 0, 1, 1, 3,
- 1, 1, 1, 1, 1, 3, 1, 1, 4, 4,
- 1, 4, 4, 0, 1, 1, 1, 3, 3, 1,
- 4, 2, 2, 1, 3, 1, 4, 4, 3, 3,
- 3, 3, 1, 3, 1, 1, 3, 1, 1, 4,
- 1, 1, 1, 3, 1, 1, 2, 1, 3, 4,
- 3, 2, 0, 2, 2, 1, 2, 1, 1, 1,
- 4, 3, 3, 3, 3, 6, 3, 1, 1, 2,
- 1
+ 2, 2, 2, 2, 3, 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, 2, 8, 9, 8, 9, 9, 10,
+ 9, 10, 8, 3, 2, 0, 4, 2, 1, 3,
+ 2, 1, 2, 2, 2, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 1, 1, 1, 0, 3,
+ 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 5, 3, 3, 4, 1,
+ 1, 3, 1, 1, 1, 1, 1, 3, 2, 3,
+ 0, 1, 1, 3, 1, 1, 1, 1, 1, 3,
+ 1, 1, 4, 4, 1, 4, 4, 0, 1, 1,
+ 1, 3, 3, 1, 4, 2, 2, 1, 3, 1,
+ 4, 4, 3, 3, 3, 3, 1, 3, 1, 1,
+ 3, 1, 1, 4, 1, 1, 1, 3, 1, 1,
+ 2, 1, 3, 4, 3, 2, 0, 2, 2, 1,
+ 2, 1, 1, 1, 4, 3, 3, 3, 3, 6,
+ 3, 1, 1, 2, 1
);
protected function initReduceCallbacks() {
@@ -1437,20 +1462,20 @@ class Php7 extends \PhpParser\ParserAbstract
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
150 => function ($stackPos) {
- $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos-(3-1)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributeStack[$stackPos-(3-1)]), $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
151 => function ($stackPos) {
- if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+ $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos-(3-1)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributeStack[$stackPos-(3-1)]), $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
152 => function ($stackPos) {
- $this->semValue = array();
+ if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
},
153 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = array();
},
154 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
155 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -1459,9 +1484,12 @@ class Php7 extends \PhpParser\ParserAbstract
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
157 => function ($stackPos) {
- throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
158 => function ($stackPos) {
+ throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 159 => function ($stackPos) {
if ($this->semStack[$stackPos-(3-2)]) {
$this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
@@ -1471,46 +1499,46 @@ class Php7 extends \PhpParser\ParserAbstract
}
},
- 159 => function ($stackPos) {
+ 160 => function ($stackPos) {
$this->semValue = new Stmt\If_($this->semStack[$stackPos-(7-3)], ['stmts' => is_array($this->semStack[$stackPos-(7-5)]) ? $this->semStack[$stackPos-(7-5)] : array($this->semStack[$stackPos-(7-5)]), 'elseifs' => $this->semStack[$stackPos-(7-6)], 'else' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
},
- 160 => function ($stackPos) {
+ 161 => function ($stackPos) {
$this->semValue = new Stmt\If_($this->semStack[$stackPos-(10-3)], ['stmts' => $this->semStack[$stackPos-(10-6)], 'elseifs' => $this->semStack[$stackPos-(10-7)], 'else' => $this->semStack[$stackPos-(10-8)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
},
- 161 => function ($stackPos) {
+ 162 => function ($stackPos) {
$this->semValue = new Stmt\While_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
- 162 => function ($stackPos) {
+ 163 => function ($stackPos) {
$this->semValue = new Stmt\Do_($this->semStack[$stackPos-(7-5)], is_array($this->semStack[$stackPos-(7-2)]) ? $this->semStack[$stackPos-(7-2)] : array($this->semStack[$stackPos-(7-2)]), $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
},
- 163 => function ($stackPos) {
+ 164 => function ($stackPos) {
$this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
},
- 164 => function ($stackPos) {
+ 165 => function ($stackPos) {
$this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
- 165 => function ($stackPos) {
+ 166 => function ($stackPos) {
$this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 166 => function ($stackPos) {
+ 167 => function ($stackPos) {
$this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 167 => function ($stackPos) {
+ 168 => function ($stackPos) {
$this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 168 => function ($stackPos) {
+ 169 => function ($stackPos) {
$this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 169 => function ($stackPos) {
+ 170 => function ($stackPos) {
$this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 170 => function ($stackPos) {
+ 171 => function ($stackPos) {
$this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 171 => function ($stackPos) {
+ 172 => function ($stackPos) {
$this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
- 172 => function ($stackPos) {
+ 173 => function ($stackPos) {
$e = $this->semStack[$stackPos-(2-1)];
if ($e instanceof Expr\Throw_) {
@@ -1522,392 +1550,390 @@ class Php7 extends \PhpParser\ParserAbstract
}
},
- 173 => function ($stackPos) {
+ 174 => function ($stackPos) {
$this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
- 174 => function ($stackPos) {
+ 175 => function ($stackPos) {
$this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
},
- 175 => function ($stackPos) {
+ 176 => function ($stackPos) {
$this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
},
- 176 => function ($stackPos) {
+ 177 => function ($stackPos) {
$this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(6-3)], new Expr\Error($this->startAttributeStack[$stackPos-(6-4)] + $this->endAttributeStack[$stackPos-(6-4)]), ['stmts' => $this->semStack[$stackPos-(6-6)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
},
- 177 => function ($stackPos) {
+ 178 => function ($stackPos) {
$this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
- 178 => function ($stackPos) {
+ 179 => function ($stackPos) {
$this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
},
- 179 => function ($stackPos) {
+ 180 => function ($stackPos) {
$this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 180 => function ($stackPos) {
+ 181 => function ($stackPos) {
$this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 181 => function ($stackPos) {
+ 182 => function ($stackPos) {
$this->semValue = array(); /* means: no statement */
},
- 182 => function ($stackPos) {
+ 183 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 183 => function ($stackPos) {
+ 184 => function ($stackPos) {
$startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
},
- 184 => function ($stackPos) {
+ 185 => function ($stackPos) {
$this->semValue = array();
},
- 185 => function ($stackPos) {
+ 186 => function ($stackPos) {
$this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
},
- 186 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
187 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
188 => function ($stackPos) {
- $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 189 => function ($stackPos) {
- $this->semValue = null;
- },
- 190 => function ($stackPos) {
- $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 191 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 192 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 193 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
+ 189 => function ($stackPos) {
+ $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 190 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 191 => function ($stackPos) {
+ $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 192 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 193 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
194 => function ($stackPos) {
- $this->semValue = false;
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
195 => function ($stackPos) {
- $this->semValue = true;
+ $this->semValue = false;
},
196 => function ($stackPos) {
- $this->semValue = false;
+ $this->semValue = true;
},
197 => function ($stackPos) {
- $this->semValue = true;
- },
- 198 => function ($stackPos) {
$this->semValue = false;
},
- 199 => function ($stackPos) {
+ 198 => function ($stackPos) {
$this->semValue = true;
},
+ 199 => function ($stackPos) {
+ $this->semValue = false;
+ },
200 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = true;
},
201 => function ($stackPos) {
- $this->semValue = [];
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
202 => function ($stackPos) {
- $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ $this->semValue = [];
},
203 => function ($stackPos) {
- $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
204 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 205 => function ($stackPos) {
+ $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 206 => function ($stackPos) {
+ $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 207 => function ($stackPos) {
+ $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ $this->checkClass($this->semValue, $stackPos-(7-2));
+ },
+ 208 => function ($stackPos) {
$this->semValue = new Stmt\Class_($this->semStack[$stackPos-(8-3)], ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
$this->checkClass($this->semValue, $stackPos-(8-3));
},
- 205 => function ($stackPos) {
+ 209 => function ($stackPos) {
$this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(7-3)], ['extends' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => $this->semStack[$stackPos-(7-1)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
$this->checkInterface($this->semValue, $stackPos-(7-3));
},
- 206 => function ($stackPos) {
+ 210 => function ($stackPos) {
$this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(6-3)], ['stmts' => $this->semStack[$stackPos-(6-5)], 'attrGroups' => $this->semStack[$stackPos-(6-1)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
},
- 207 => function ($stackPos) {
+ 211 => function ($stackPos) {
$this->semValue = new Stmt\Enum_($this->semStack[$stackPos-(8-3)], ['scalarType' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
$this->checkEnum($this->semValue, $stackPos-(8-3));
},
- 208 => function ($stackPos) {
- $this->semValue = null;
- },
- 209 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
- 210 => function ($stackPos) {
- $this->semValue = null;
- },
- 211 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
- },
212 => function ($stackPos) {
- $this->semValue = 0;
+ $this->semValue = null;
},
213 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
},
214 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 215 => function ($stackPos) {
- $this->checkClassModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
- },
- 216 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 217 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 218 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_READONLY;
- },
- 219 => function ($stackPos) {
$this->semValue = null;
},
- 220 => function ($stackPos) {
+ 215 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)];
},
+ 216 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 217 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 218 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 219 => function ($stackPos) {
+ $this->checkClassModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ },
+ 220 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
221 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
},
222 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
+ $this->semValue = Stmt\Class_::MODIFIER_READONLY;
},
223 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = null;
},
224 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)];
},
225 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
+ $this->semValue = array();
},
226 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
},
227 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = array();
},
228 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
},
229 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
},
230 => function ($stackPos) {
- $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
231 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
232 => function ($stackPos) {
$this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
},
233 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
},
234 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 235 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 236 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 237 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 238 => function ($stackPos) {
- $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 239 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 240 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
- },
- 241 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 242 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(5-3)];
- },
- 243 => function ($stackPos) {
- $this->semValue = array();
- },
- 244 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 245 => function ($stackPos) {
- $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 246 => function ($stackPos) {
- $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 247 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 248 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 249 => function ($stackPos) {
- $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
- },
- 250 => function ($stackPos) {
- $this->semValue = [];
- },
- 251 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 252 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 253 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 254 => function ($stackPos) {
- $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 255 => function ($stackPos) {
- $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 256 => function ($stackPos) {
$this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
},
- 257 => function ($stackPos) {
+ 235 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(4-2)];
},
- 258 => function ($stackPos) {
- $this->semValue = array();
+ 236 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
},
- 259 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 260 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
- },
- 261 => function ($stackPos) {
- $this->semValue = array();
- },
- 262 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 263 => function ($stackPos) {
- $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
- },
- 264 => function ($stackPos) {
+ 237 => function ($stackPos) {
$this->semValue = null;
},
- 265 => function ($stackPos) {
- $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ 238 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
},
- 266 => function ($stackPos) {
- $this->semValue = null;
- },
- 267 => function ($stackPos) {
- $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 268 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 269 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
- },
- 270 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 271 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
- },
- 272 => function ($stackPos) {
+ 239 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
- 273 => function ($stackPos) {
- $this->semValue = array();
- },
- 274 => function ($stackPos) {
+ 240 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
- 275 => function ($stackPos) {
+ 241 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
+ 242 => function ($stackPos) {
+ $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 243 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 244 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
+ },
+ 245 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 246 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(5-3)];
+ },
+ 247 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 248 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 249 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 250 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 251 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 252 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 253 => function ($stackPos) {
+ $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 254 => function ($stackPos) {
+ $this->semValue = [];
+ },
+ 255 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 256 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 257 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 258 => function ($stackPos) {
+ $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 259 => function ($stackPos) {
+ $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 260 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 261 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 262 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 263 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 264 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 265 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 266 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 267 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->fixupAlternativeElse($this->semValue);
+ },
+ 268 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 269 => function ($stackPos) {
+ $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 270 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 271 => function ($stackPos) {
+ $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->fixupAlternativeElse($this->semValue);
+ },
+ 272 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 273 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+ },
+ 274 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 275 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
276 => function ($stackPos) {
- $this->semValue = 0;
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
},
277 => function ($stackPos) {
- $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ $this->semValue = array();
},
278 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
279 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
280 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ $this->semValue = 0;
},
281 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_READONLY;
+ $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
},
282 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ },
+ 283 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ },
+ 284 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ },
+ 285 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_READONLY;
+ },
+ 286 => function ($stackPos) {
$this->semValue = new Node\Param($this->semStack[$stackPos-(6-6)], null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
$this->checkParam($this->semValue);
},
- 283 => function ($stackPos) {
+ 287 => function ($stackPos) {
$this->semValue = new Node\Param($this->semStack[$stackPos-(8-6)], $this->semStack[$stackPos-(8-8)], $this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-5)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes, $this->semStack[$stackPos-(8-2)], $this->semStack[$stackPos-(8-1)]);
$this->checkParam($this->semValue);
},
- 284 => function ($stackPos) {
- $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
- },
- 285 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 286 => function ($stackPos) {
- $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 287 => function ($stackPos) {
- $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
288 => function ($stackPos) {
- $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
},
289 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
290 => function ($stackPos) {
- $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
291 => function ($stackPos) {
- $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
292 => function ($stackPos) {
- $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
293 => function ($stackPos) {
- $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
294 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
295 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
},
296 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
297 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
298 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
299 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
300 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
@@ -1919,739 +1945,740 @@ class Php7 extends \PhpParser\ParserAbstract
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
303 => function ($stackPos) {
- $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
304 => function ($stackPos) {
- $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
},
305 => function ($stackPos) {
- $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
306 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
},
307 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
308 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
309 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-2)];
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
},
310 => function ($stackPos) {
- $this->semValue = null;
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
311 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
312 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-2)];
- },
- 313 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-2)]);
- },
- 314 => function ($stackPos) {
- $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 315 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 316 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 317 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 318 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 319 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 320 => function ($stackPos) {
- $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
- },
- 321 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 322 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 323 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 324 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
+ 313 => function ($stackPos) {
+ $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 314 => function ($stackPos) {
+ $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 315 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 316 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 317 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 318 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 319 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 320 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 321 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 322 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 323 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-2)]);
+ },
+ 324 => function ($stackPos) {
+ $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
325 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
326 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
327 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
328 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
329 => function ($stackPos) {
- $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
330 => function ($stackPos) {
- if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
},
331 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
},
332 => function ($stackPos) {
- $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
- if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
333 => function ($stackPos) {
- $this->semValue = new Stmt\Property($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-1)]);
- $this->checkProperty($this->semValue, $stackPos-(5-2));
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
334 => function ($stackPos) {
- $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-2)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-1)]);
- $this->checkClassConst($this->semValue, $stackPos-(5-2));
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
335 => function ($stackPos) {
- $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(10-5)], ['type' => $this->semStack[$stackPos-(10-2)], 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-7)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
- $this->checkClassMethod($this->semValue, $stackPos-(10-2));
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
},
336 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
337 => function ($stackPos) {
- $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-1)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
338 => function ($stackPos) {
- $this->semValue = null; /* will be skipped */
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
339 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
340 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; } else { $this->semValue = $this->semStack[$stackPos-(2-1)]; }
},
341 => function ($stackPos) {
$this->semValue = array();
},
342 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
343 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\Property($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-1)]);
+ $this->checkProperty($this->semValue, $stackPos-(5-2));
},
344 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-2)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-1)]);
+ $this->checkClassConst($this->semValue, $stackPos-(5-2));
},
345 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-2)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)]);
+ $this->checkClassConst($this->semValue, $stackPos-(6-2));
},
346 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(10-5)], ['type' => $this->semStack[$stackPos-(10-2)], 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-7)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ $this->checkClassMethod($this->semValue, $stackPos-(10-2));
},
347 => function ($stackPos) {
- $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
348 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-1)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
},
349 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = null; /* will be skipped */
},
350 => function ($stackPos) {
- $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
- },
- 351 => function ($stackPos) {
- $this->semValue = null;
- },
- 352 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 353 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 354 => function ($stackPos) {
- $this->semValue = 0;
- },
- 355 => function ($stackPos) {
- $this->semValue = 0;
- },
- 356 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 357 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 358 => function ($stackPos) {
- $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
- },
- 359 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
- },
- 360 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
- },
- 361 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
- },
- 362 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_STATIC;
- },
- 363 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
- },
- 364 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_FINAL;
- },
- 365 => function ($stackPos) {
- $this->semValue = Stmt\Class_::MODIFIER_READONLY;
- },
- 366 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 367 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 368 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 369 => function ($stackPos) {
- $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 370 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 371 => function ($stackPos) {
- $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 372 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 373 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 374 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 375 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 376 => function ($stackPos) {
$this->semValue = array();
},
- 377 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 378 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 379 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 380 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 381 => function ($stackPos) {
- $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 382 => function ($stackPos) {
- $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 383 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 384 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 385 => function ($stackPos) {
- $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 386 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 387 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 388 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 389 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 390 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 391 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 392 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 393 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 394 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 395 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 396 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 397 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 398 => function ($stackPos) {
- $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 399 => function ($stackPos) {
- $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 400 => function ($stackPos) {
- $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 401 => function ($stackPos) {
- $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 402 => function ($stackPos) {
- $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 403 => 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);
- },
- 404 => 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);
- },
- 405 => 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);
- },
- 406 => 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);
- },
- 407 => 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);
- },
- 408 => 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);
- },
- 409 => 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);
- },
- 410 => 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);
- },
- 411 => 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);
- },
- 412 => 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);
- },
- 413 => 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);
- },
- 414 => 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);
- },
- 415 => 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);
- },
- 416 => 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);
- },
- 417 => 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);
- },
- 418 => 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);
- },
- 419 => 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);
- },
- 420 => 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);
- },
- 421 => function ($stackPos) {
- $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 422 => function ($stackPos) {
- $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 423 => function ($stackPos) {
- $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 424 => function ($stackPos) {
- $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 425 => 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);
- },
- 426 => 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);
- },
- 427 => 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);
- },
- 428 => 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);
- },
- 429 => 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);
- },
- 430 => 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);
- },
- 431 => 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);
- },
- 432 => 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);
- },
- 433 => 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);
- },
- 434 => function ($stackPos) {
- $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 435 => function ($stackPos) {
+ 351 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
+ 352 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 353 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 354 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 355 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 356 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 357 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 358 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 359 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 360 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 361 => function ($stackPos) {
+ $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
+ },
+ 362 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 363 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 364 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 365 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 366 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 367 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 368 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 369 => function ($stackPos) {
+ $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ },
+ 370 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ },
+ 371 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ },
+ 372 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ },
+ 373 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+ },
+ 374 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
+ 375 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+ },
+ 376 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_READONLY;
+ },
+ 377 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 378 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 379 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 380 => function ($stackPos) {
+ $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 381 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 382 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 383 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 384 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 385 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 386 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 387 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 388 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 389 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 390 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 391 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 392 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 393 => function ($stackPos) {
+ $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 394 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 395 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 396 => function ($stackPos) {
+ $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 397 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 398 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 399 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 400 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 401 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 402 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 403 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 404 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 405 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 406 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 407 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 408 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 409 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 410 => function ($stackPos) {
+ $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 411 => function ($stackPos) {
+ $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 412 => function ($stackPos) {
+ $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 413 => function ($stackPos) {
+ $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 414 => 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);
+ },
+ 415 => 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);
+ },
+ 416 => 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);
+ },
+ 417 => 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);
+ },
+ 418 => 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);
+ },
+ 419 => 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);
+ },
+ 420 => 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);
+ },
+ 421 => 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);
+ },
+ 422 => 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);
+ },
+ 423 => 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);
+ },
+ 424 => 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);
+ },
+ 425 => 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);
+ },
+ 426 => 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);
+ },
+ 427 => 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);
+ },
+ 428 => 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);
+ },
+ 429 => 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);
+ },
+ 430 => 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);
+ },
+ 431 => 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);
+ },
+ 432 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 433 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 434 => function ($stackPos) {
+ $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 435 => function ($stackPos) {
+ $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
436 => 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 = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
437 => 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\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
438 => 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\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
439 => function ($stackPos) {
- $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-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);
},
440 => function ($stackPos) {
- $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-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);
},
441 => 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\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
442 => 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\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
443 => function ($stackPos) {
- $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-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);
},
444 => 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\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
445 => 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\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
446 => function ($stackPos) {
- $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
447 => 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);
+ },
+ 448 => 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);
+ },
+ 449 => 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);
+ },
+ 450 => function ($stackPos) {
+ $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 451 => function ($stackPos) {
+ $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 452 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 453 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 454 => function ($stackPos) {
+ $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 455 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 456 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 457 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 458 => 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);
},
- 448 => function ($stackPos) {
+ 459 => function ($stackPos) {
$this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 449 => function ($stackPos) {
+ 460 => function ($stackPos) {
$this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 450 => function ($stackPos) {
+ 461 => function ($stackPos) {
$this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 451 => function ($stackPos) {
+ 462 => function ($stackPos) {
$this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 452 => function ($stackPos) {
+ 463 => function ($stackPos) {
$this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 453 => function ($stackPos) {
+ 464 => 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);
},
- 454 => function ($stackPos) {
+ 465 => function ($stackPos) {
$this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 455 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 456 => function ($stackPos) {
- $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 457 => function ($stackPos) {
- $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 458 => function ($stackPos) {
- $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 459 => function ($stackPos) {
- $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 460 => function ($stackPos) {
- $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 461 => function ($stackPos) {
- $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 462 => function ($stackPos) {
- $this->semValue = new Expr\Throw_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 463 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'returnType' => $this->semStack[$stackPos-(8-6)], 'expr' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
- 464 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
- },
- 465 => 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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
- },
466 => 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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
467 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
468 => function ($stackPos) {
- $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-8)], 'expr' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
469 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => false, '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)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
470 => function ($stackPos) {
- $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'uses' => $this->semStack[$stackPos-(10-8)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
471 => function ($stackPos) {
- $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]);
- $this->checkClass($this->semValue[0], -1);
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
472 => function ($stackPos) {
- $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
473 => function ($stackPos) {
- list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Throw_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
474 => function ($stackPos) {
- $this->semValue = array();
+ $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'returnType' => $this->semStack[$stackPos-(8-6)], 'expr' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
},
475 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(4-3)];
+ $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
},
476 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(2-1)];
+ $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
},
477 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
},
478 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
},
479 => function ($stackPos) {
- $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-8)], 'expr' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
},
480 => 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\Closure(['static' => false, '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)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
},
481 => 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\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'uses' => $this->semStack[$stackPos-(10-8)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
},
482 => 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 = array(new Stmt\Class_(null, ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]);
+ $this->checkClass($this->semValue[0], -1);
},
483 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
484 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
485 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = array();
},
486 => function ($stackPos) {
- $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
},
487 => function ($stackPos) {
- $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
},
488 => function ($stackPos) {
- $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
489 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
490 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
491 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
492 => function ($stackPos) {
- $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
493 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
494 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
495 => function ($stackPos) {
- $this->semValue = null;
+ $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);
},
496 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
497 => function ($stackPos) {
- $this->semValue = array();
- },
- 498 => function ($stackPos) {
- $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
- },
- 499 => 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)];
- },
- 500 => function ($stackPos) {
- $this->semValue = array();
- },
- 501 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
+ 498 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 499 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 500 => function ($stackPos) {
+ $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 501 => function ($stackPos) {
+ $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
502 => 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)];
},
503 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
504 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
505 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
},
506 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
507 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
508 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = null;
},
509 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
510 => function ($stackPos) {
- $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semValue = array();
},
511 => 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 = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
},
512 => 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;
+ 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)];
},
513 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 514 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 515 => function ($stackPos) {
+ $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 516 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 517 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 518 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 519 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 520 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 521 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 522 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 523 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 524 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 525 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 526 => 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;
+ },
+ 527 => 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);
},
- 514 => function ($stackPos) {
+ 528 => 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);
},
- 515 => function ($stackPos) {
+ 529 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 516 => function ($stackPos) {
+ 530 => function ($stackPos) {
$this->semValue = Scalar\String_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
- 517 => function ($stackPos) {
+ 531 => 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);
},
- 518 => function ($stackPos) {
+ 532 => function ($stackPos) {
$this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
- 519 => function ($stackPos) {
- $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 520 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 521 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 522 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 523 => 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);
- },
- 524 => 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);
- },
- 525 => 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);
- },
- 526 => function ($stackPos) {
- $this->semValue = null;
- },
- 527 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 528 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 529 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 530 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 531 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 532 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
533 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
534 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
535 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
536 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
537 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $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);
},
538 => 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->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);
},
539 => 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->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);
},
540 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = null;
},
541 => 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)];
},
542 => function ($stackPos) {
- $this->semValue = new Expr\NullsafeMethodCall($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)];
},
543 => function ($stackPos) {
- $this->semValue = null;
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
544 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -2663,165 +2690,207 @@ class Php7 extends \PhpParser\ParserAbstract
$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 = $this->semStack[$stackPos-(1-1)];
},
548 => function ($stackPos) {
- $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
549 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
},
550 => 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)];
},
551 => 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)];
},
552 => function ($stackPos) {
- $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
553 => function ($stackPos) {
- $var = $this->semStack[$stackPos-(1-1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
554 => 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 = $this->semStack[$stackPos-(1-1)];
},
555 => 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);
},
556 => 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\NullsafeMethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
557 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 558 => function ($stackPos) {
- $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 559 => function ($stackPos) {
- $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 560 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 561 => function ($stackPos) {
- $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
- },
- 562 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 563 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 564 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 565 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 566 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(3-2)];
- },
- 567 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)];
- },
- 568 => function ($stackPos) {
- $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
- },
- 569 => function ($stackPos) {
- $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
- },
- 570 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
- },
- 571 => function ($stackPos) {
- $this->semValue = $this->semStack[$stackPos];
- },
- 572 => function ($stackPos) {
- /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
- },
- 573 => function ($stackPos) {
- $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
- },
- 574 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 575 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 576 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 577 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 578 => 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);
- },
- 579 => 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);
- },
- 580 => 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);
- },
- 581 => function ($stackPos) {
- $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
- },
- 582 => function ($stackPos) {
$this->semValue = null;
},
- 583 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 584 => function ($stackPos) {
- $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
- },
- 585 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(1-1)]);
- },
- 586 => function ($stackPos) {
- $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
- },
- 587 => function ($stackPos) {
- $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 588 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
- },
- 589 => function ($stackPos) {
+ 558 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 590 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ 559 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 591 => function ($stackPos) {
+ 560 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 561 => function ($stackPos) {
$this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 592 => function ($stackPos) {
+ 562 => function ($stackPos) {
$this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
- 593 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ 563 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
},
- 594 => function ($stackPos) {
- $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ 564 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
- 595 => function ($stackPos) {
- $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ 565 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
- 596 => function ($stackPos) {
+ 566 => function ($stackPos) {
+ $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 567 => function ($stackPos) {
+ $var = $this->semStack[$stackPos-(1-1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
+ },
+ 568 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 569 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 570 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 571 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 572 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 573 => function ($stackPos) {
+ $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 574 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 575 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 576 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 577 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
+ 578 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 579 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 580 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 581 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 582 => function ($stackPos) {
+ $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 583 => function ($stackPos) {
+ $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 584 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
+ },
+ 585 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 586 => function ($stackPos) {
+ /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
+ },
+ 587 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 588 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 589 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 590 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 591 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 592 => 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);
+ },
+ 593 => 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);
+ },
+ 594 => 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);
+ },
+ 595 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true);
+ },
+ 596 => function ($stackPos) {
+ $this->semValue = null;
+ },
597 => function ($stackPos) {
- $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
},
598 => function ($stackPos) {
- $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
},
599 => function ($stackPos) {
- $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
600 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+ },
+ 601 => function ($stackPos) {
+ $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 602 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 603 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 604 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 605 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 606 => function ($stackPos) {
+ $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 607 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 608 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 609 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 610 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 611 => function ($stackPos) {
+ $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 612 => function ($stackPos) {
+ $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 613 => function ($stackPos) {
+ $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 614 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
];
diff --git a/lib/nikic/php-parser/lib/PhpParser/ParserAbstract.php b/lib/nikic/php-parser/lib/PhpParser/ParserAbstract.php
index d485d78de4..9f9d00c763 100644
--- a/lib/nikic/php-parser/lib/PhpParser/ParserAbstract.php
+++ b/lib/nikic/php-parser/lib/PhpParser/ParserAbstract.php
@@ -16,9 +16,12 @@ use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassConst;
use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Else_;
+use PhpParser\Node\Stmt\ElseIf_;
use PhpParser\Node\Stmt\Enum_;
use PhpParser\Node\Stmt\Interface_;
use PhpParser\Node\Stmt\Namespace_;
+use PhpParser\Node\Stmt\Nop;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\TryCatch;
use PhpParser\Node\Stmt\UseUse;
@@ -664,6 +667,7 @@ abstract class ParserAbstract implements Parser
'false' => true,
'mixed' => true,
'never' => true,
+ 'true' => true,
];
if (!$name->isUnqualified()) {
@@ -875,6 +879,24 @@ abstract class ParserAbstract implements Parser
return $attributes;
}
+ /** @param ElseIf_|Else_ $node */
+ protected function fixupAlternativeElse($node) {
+ // Make sure a trailing nop statement carrying comments is part of the node.
+ $numStmts = \count($node->stmts);
+ if ($numStmts !== 0 && $node->stmts[$numStmts - 1] instanceof Nop) {
+ $nopAttrs = $node->stmts[$numStmts - 1]->getAttributes();
+ if (isset($nopAttrs['endLine'])) {
+ $node->setAttribute('endLine', $nopAttrs['endLine']);
+ }
+ if (isset($nopAttrs['endFilePos'])) {
+ $node->setAttribute('endFilePos', $nopAttrs['endFilePos']);
+ }
+ if (isset($nopAttrs['endTokenPos'])) {
+ $node->setAttribute('endTokenPos', $nopAttrs['endTokenPos']);
+ }
+ }
+ }
+
protected function checkClassModifier($a, $b, $modifierPos) {
try {
Class_::verifyClassModifier($a, $b);
diff --git a/lib/nikic/php-parser/lib/PhpParser/ParserFactory.php b/lib/nikic/php-parser/lib/PhpParser/ParserFactory.php
index f041e7ffe3..baba23bdb4 100644
--- a/lib/nikic/php-parser/lib/PhpParser/ParserFactory.php
+++ b/lib/nikic/php-parser/lib/PhpParser/ParserFactory.php
@@ -2,6 +2,9 @@
namespace PhpParser;
+use PhpParser\Lexer\Emulative;
+use PhpParser\Parser\Php7;
+
class ParserFactory
{
const PREFER_PHP7 = 1;
@@ -41,4 +44,33 @@ class ParserFactory
);
}
}
+
+ /**
+ * Create a parser targeting the newest version supported by this library. Code for older
+ * versions will be accepted if there have been no relevant backwards-compatibility breaks in
+ * PHP.
+ *
+ * All supported lexer attributes (comments, startLine, endLine, startTokenPos, endTokenPos,
+ * startFilePos, endFilePos) will be enabled.
+ */
+ public function createForNewestSupportedVersion(): Parser {
+ return new Php7(new Emulative($this->getLexerOptions()));
+ }
+
+ /**
+ * Create a parser targeting the host PHP version, that is the PHP version we're currently
+ * running on. This parser will not use any token emulation.
+ *
+ * All supported lexer attributes (comments, startLine, endLine, startTokenPos, endTokenPos,
+ * startFilePos, endFilePos) will be enabled.
+ */
+ public function createForHostVersion(): Parser {
+ return new Php7(new Lexer($this->getLexerOptions()));
+ }
+
+ private function getLexerOptions(): array {
+ return ['usedAttributes' => [
+ 'comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos', 'startFilePos', 'endFilePos',
+ ]];
+ }
}
diff --git a/lib/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/lib/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
index bb70de6595..7c32e5a3c5 100644
--- a/lib/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
+++ b/lib/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
@@ -46,7 +46,15 @@ class Standard extends PrettyPrinterAbstract
}
protected function pUnionType(Node\UnionType $node) {
- return $this->pImplode($node->types, '|');
+ $types = [];
+ foreach ($node->types as $typeNode) {
+ if ($typeNode instanceof Node\IntersectionType) {
+ $types[] = '('. $this->p($typeNode) . ')';
+ continue;
+ }
+ $types[] = $this->p($typeNode);
+ }
+ return implode('|', $types);
}
protected function pIntersectionType(Node\IntersectionType $node) {
@@ -521,7 +529,7 @@ class Standard extends PrettyPrinterAbstract
}
protected function pExpr_StaticCall(Expr\StaticCall $node) {
- return $this->pDereferenceLhs($node->class) . '::'
+ return $this->pStaticDereferenceLhs($node->class) . '::'
. ($node->name instanceof Expr
? ($node->name instanceof Expr\Variable
? $this->p($node->name)
@@ -598,7 +606,7 @@ class Standard extends PrettyPrinterAbstract
}
protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) {
- return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name);
+ return $this->pStaticDereferenceLhs($node->class) . '::' . $this->pObjectProperty($node->name);
}
protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) {
@@ -610,7 +618,7 @@ class Standard extends PrettyPrinterAbstract
}
protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) {
- return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name);
+ return $this->pStaticDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name);
}
protected function pExpr_ShellExec(Expr\ShellExec $node) {
@@ -806,7 +814,9 @@ class Standard extends PrettyPrinterAbstract
protected function pStmt_ClassConst(Stmt\ClassConst $node) {
return $this->pAttrGroups($node->attrGroups)
. $this->pModifiers($node->flags)
- . 'const ' . $this->pCommaSeparated($node->consts) . ';';
+ . 'const '
+ . (null !== $node->type ? $this->p($node->type) . ' ' : '')
+ . $this->pCommaSeparated($node->consts) . ';';
}
protected function pStmt_Function(Stmt\Function_ $node) {
@@ -1059,6 +1069,14 @@ class Standard extends PrettyPrinterAbstract
}
}
+ protected function pStaticDereferenceLhs(Node $node) {
+ if (!$this->staticDereferenceLhsRequiresParens($node)) {
+ return $this->p($node);
+ } else {
+ return '(' . $this->p($node) . ')';
+ }
+ }
+
protected function pCallLhs(Node $node) {
if (!$this->callLhsRequiresParens($node)) {
return $this->p($node);
@@ -1067,9 +1085,12 @@ class Standard extends PrettyPrinterAbstract
}
}
- protected function pNewVariable(Node $node) {
- // TODO: This is not fully accurate.
- return $this->pDereferenceLhs($node);
+ protected function pNewVariable(Node $node): string {
+ if (!$this->newOperandRequiresParens($node)) {
+ return $this->p($node);
+ } else {
+ return '(' . $this->p($node) . ')';
+ }
}
/**
diff --git a/lib/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/lib/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
index 2c7fc3070c..770d500928 100644
--- a/lib/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
+++ b/lib/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
@@ -21,6 +21,8 @@ abstract class PrettyPrinterAbstract
const FIXUP_BRACED_NAME = 4; // Name operand that may require bracing
const FIXUP_VAR_BRACED_NAME = 5; // Name operand that may require ${} bracing
const FIXUP_ENCAPSED = 6; // Encapsed string part
+ const FIXUP_NEW = 7; // New/instanceof operand
+ const FIXUP_STATIC_DEREF_LHS = 8; // LHS of static dereferencing operation
protected $precedenceMap = [
// [precedence, associativity]
@@ -774,7 +776,8 @@ abstract class PrettyPrinterAbstract
}
if ($skipRemovedNode) {
- if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
+ if ($isStmtList && ($this->origTokens->haveBracesInRange($pos, $itemStartPos) ||
+ $this->origTokens->haveTagInRange($pos, $itemStartPos))) {
// We'd remove the brace of a code block.
// TODO: Preserve formatting.
$this->setIndentLevel($origIndentLevel);
@@ -877,7 +880,8 @@ abstract class PrettyPrinterAbstract
$pos, $itemStartPos, $indentAdjustment);
$skipRemovedNode = true;
} else {
- if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
+ if ($isStmtList && ($this->origTokens->haveBracesInRange($pos, $itemStartPos) ||
+ $this->origTokens->haveTagInRange($pos, $itemStartPos))) {
// We'd remove the brace of a code block.
// TODO: Preserve formatting.
return null;
@@ -923,11 +927,14 @@ abstract class PrettyPrinterAbstract
foreach ($delayedAdd as $delayedAddNode) {
if (!$first) {
$result .= $insertStr;
+ if ($insertNewline) {
+ $result .= $this->nl;
+ }
}
$result .= $this->p($delayedAddNode, true);
$first = false;
}
- $result .= $extraRight;
+ $result .= $extraRight === "\n" ? $this->nl : $extraRight;
}
return $result;
@@ -972,6 +979,19 @@ abstract class PrettyPrinterAbstract
return '(' . $this->p($subNode) . ')';
}
break;
+ case self::FIXUP_STATIC_DEREF_LHS:
+ if ($this->staticDereferenceLhsRequiresParens($subNode)
+ && !$this->origTokens->haveParens($subStartPos, $subEndPos)
+ ) {
+ return '(' . $this->p($subNode) . ')';
+ }
+ break;
+ case self::FIXUP_NEW:
+ if ($this->newOperandRequiresParens($subNode)
+ && !$this->origTokens->haveParens($subStartPos, $subEndPos)) {
+ return '(' . $this->p($subNode) . ')';
+ }
+ break;
case self::FIXUP_BRACED_NAME:
case self::FIXUP_VAR_BRACED_NAME:
if ($subNode instanceof Expr
@@ -1042,13 +1062,26 @@ abstract class PrettyPrinterAbstract
}
/**
- * Determines whether the LHS of a dereferencing operation must be wrapped in parenthesis.
+ * Determines whether the LHS of an array/object operation must be wrapped in parentheses.
*
* @param Node $node LHS of dereferencing operation
*
* @return bool Whether parentheses are required
*/
protected function dereferenceLhsRequiresParens(Node $node) : bool {
+ // A constant can occur on the LHS of an array/object deref, but not a static deref.
+ return $this->staticDereferenceLhsRequiresParens($node)
+ && !$node instanceof Expr\ConstFetch;
+ }
+
+ /**
+ * Determines whether the LHS of a static operation must be wrapped in parentheses.
+ *
+ * @param Node $node LHS of dereferencing operation
+ *
+ * @return bool Whether parentheses are required
+ */
+ protected function staticDereferenceLhsRequiresParens(Node $node): bool {
return !($node instanceof Expr\Variable
|| $node instanceof Node\Name
|| $node instanceof Expr\ArrayDimFetch
@@ -1061,10 +1094,31 @@ abstract class PrettyPrinterAbstract
|| $node instanceof Expr\StaticCall
|| $node instanceof Expr\Array_
|| $node instanceof Scalar\String_
- || $node instanceof Expr\ConstFetch
|| $node instanceof Expr\ClassConstFetch);
}
+ /**
+ * Determines whether an expression used in "new" or "instanceof" requires parentheses.
+ *
+ * @param Node $node New or instanceof operand
+ *
+ * @return bool Whether parentheses are required
+ */
+ protected function newOperandRequiresParens(Node $node): bool {
+ if ($node instanceof Node\Name || $node instanceof Expr\Variable) {
+ return false;
+ }
+ if ($node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch ||
+ $node instanceof Expr\NullsafePropertyFetch
+ ) {
+ return $this->newOperandRequiresParens($node->var);
+ }
+ if ($node instanceof Expr\StaticPropertyFetch) {
+ return $this->newOperandRequiresParens($node->class);
+ }
+ return true;
+ }
+
/**
* Print modifiers, including trailing whitespace.
*
@@ -1166,7 +1220,7 @@ abstract class PrettyPrinterAbstract
Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT],
Expr\Instanceof_::class => [
'expr' => self::FIXUP_PREC_LEFT,
- 'class' => self::FIXUP_PREC_RIGHT, // TODO: FIXUP_NEW_VARIABLE
+ 'class' => self::FIXUP_NEW,
],
Expr\Ternary::class => [
'cond' => self::FIXUP_PREC_LEFT,
@@ -1174,10 +1228,13 @@ abstract class PrettyPrinterAbstract
],
Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS],
- Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS],
+ Expr\StaticCall::class => ['class' => self::FIXUP_STATIC_DEREF_LHS],
Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS],
- Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS],
- Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], // TODO: FIXUP_NEW_VARIABLE
+ Expr\ClassConstFetch::class => [
+ 'class' => self::FIXUP_STATIC_DEREF_LHS,
+ 'name' => self::FIXUP_BRACED_NAME,
+ ],
+ Expr\New_::class => ['class' => self::FIXUP_NEW],
Expr\MethodCall::class => [
'var' => self::FIXUP_DEREF_LHS,
'name' => self::FIXUP_BRACED_NAME,
@@ -1187,7 +1244,7 @@ abstract class PrettyPrinterAbstract
'name' => self::FIXUP_BRACED_NAME,
],
Expr\StaticPropertyFetch::class => [
- 'class' => self::FIXUP_DEREF_LHS,
+ 'class' => self::FIXUP_STATIC_DEREF_LHS,
'name' => self::FIXUP_VAR_BRACED_NAME,
],
Expr\PropertyFetch::class => [
@@ -1273,6 +1330,7 @@ abstract class PrettyPrinterAbstract
'Param->default' => $stripEquals,
'Stmt_Break->num' => $stripBoth,
'Stmt_Catch->var' => $stripLeft,
+ 'Stmt_ClassConst->type' => $stripRight,
'Stmt_ClassMethod->returnType' => $stripColon,
'Stmt_Class->extends' => ['left' => \T_EXTENDS],
'Stmt_Enum->scalarType' => $stripColon,
@@ -1314,6 +1372,7 @@ abstract class PrettyPrinterAbstract
'Stmt_Break->num' => [\T_BREAK, false, ' ', null],
'Stmt_Catch->var' => [null, false, ' ', null],
'Stmt_ClassMethod->returnType' => [')', false, ' : ', null],
+ 'Stmt_ClassConst->type' => [\T_CONST, false, ' ', null],
'Stmt_Class->extends' => [null, false, ' extends ', null],
'Stmt_Enum->scalarType' => [null, false, ' : ', null],
'Stmt_EnumCase->expr' => [null, false, ' = ', null],
@@ -1454,6 +1513,16 @@ abstract class PrettyPrinterAbstract
'Stmt_ClassMethod->params' => ['(', '', ''],
'Stmt_Interface->extends' => [null, ' extends ', ''],
'Stmt_Function->params' => ['(', '', ''],
+ 'Stmt_Interface->attrGroups' => [null, '', "\n"],
+ 'Stmt_Class->attrGroups' => [null, '', "\n"],
+ 'Stmt_ClassConst->attrGroups' => [null, '', "\n"],
+ 'Stmt_ClassMethod->attrGroups' => [null, '', "\n"],
+ 'Stmt_Function->attrGroups' => [null, '', "\n"],
+ 'Stmt_Property->attrGroups' => [null, '', "\n"],
+ 'Stmt_Trait->attrGroups' => [null, '', "\n"],
+ 'Expr_ArrowFunction->attrGroups' => [null, '', ' '],
+ 'Expr_Closure->attrGroups' => [null, '', ' '],
+ 'Expr_PrintableNewAnonClass->attrGroups' => [\T_NEW, ' ', ''],
/* These cannot be empty to start with:
* Expr_Isset->vars
@@ -1493,6 +1562,7 @@ abstract class PrettyPrinterAbstract
'Stmt_ClassMethod->flags' => \T_FUNCTION,
'Stmt_Class->flags' => \T_CLASS,
'Stmt_Property->flags' => \T_VARIABLE,
+ 'Expr_PrintableNewAnonClass->flags' => \T_CLASS,
'Param->flags' => \T_VARIABLE,
//'Stmt_TraitUseAdaptation_Alias->newModifier' => 0, // TODO
];
diff --git a/lib/psr/http-client/CHANGELOG.md b/lib/psr/http-client/CHANGELOG.md
index e2dc25f519..babba7c7b2 100644
--- a/lib/psr/http-client/CHANGELOG.md
+++ b/lib/psr/http-client/CHANGELOG.md
@@ -2,6 +2,14 @@
All notable changes to this project will be documented in this file, in reverse chronological order by release.
+## 1.0.3
+
+Add `source` link in composer.json. No code changes.
+
+## 1.0.2
+
+Allow PSR-7 (psr/http-message) 2.0. No code changes.
+
## 1.0.1
Allow installation with PHP 8. No code changes.
diff --git a/lib/psr/http-client/composer.json b/lib/psr/http-client/composer.json
index e4cab2f3ea..6fed350beb 100644
--- a/lib/psr/http-client/composer.json
+++ b/lib/psr/http-client/composer.json
@@ -10,6 +10,9 @@
"homepage": "https://www.php-fig.org/"
}
],
+ "support": {
+ "source": "https://github.com/php-fig/http-client"
+ },
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0 || ^2.0"
diff --git a/lib/psr/log/Psr/Log/AbstractLogger.php b/lib/psr/log/Psr/Log/AbstractLogger.php
deleted file mode 100644
index e02f9daf3d..0000000000
--- a/lib/psr/log/Psr/Log/AbstractLogger.php
+++ /dev/null
@@ -1,128 +0,0 @@
-log(LogLevel::EMERGENCY, $message, $context);
- }
-
- /**
- * Action must be taken immediately.
- *
- * Example: Entire website down, database unavailable, etc. This should
- * trigger the SMS alerts and wake you up.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function alert($message, array $context = array())
- {
- $this->log(LogLevel::ALERT, $message, $context);
- }
-
- /**
- * Critical conditions.
- *
- * Example: Application component unavailable, unexpected exception.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function critical($message, array $context = array())
- {
- $this->log(LogLevel::CRITICAL, $message, $context);
- }
-
- /**
- * Runtime errors that do not require immediate action but should typically
- * be logged and monitored.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function error($message, array $context = array())
- {
- $this->log(LogLevel::ERROR, $message, $context);
- }
-
- /**
- * Exceptional occurrences that are not errors.
- *
- * Example: Use of deprecated APIs, poor use of an API, undesirable things
- * that are not necessarily wrong.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function warning($message, array $context = array())
- {
- $this->log(LogLevel::WARNING, $message, $context);
- }
-
- /**
- * Normal but significant events.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function notice($message, array $context = array())
- {
- $this->log(LogLevel::NOTICE, $message, $context);
- }
-
- /**
- * Interesting events.
- *
- * Example: User logs in, SQL logs.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function info($message, array $context = array())
- {
- $this->log(LogLevel::INFO, $message, $context);
- }
-
- /**
- * Detailed debug information.
- *
- * @param string $message
- * @param mixed[] $context
- *
- * @return void
- */
- public function debug($message, array $context = array())
- {
- $this->log(LogLevel::DEBUG, $message, $context);
- }
-}
diff --git a/lib/psr/log/composer.json b/lib/psr/log/composer.json
index ca05695377..879fc6f53b 100644
--- a/lib/psr/log/composer.json
+++ b/lib/psr/log/composer.json
@@ -11,16 +11,16 @@
}
],
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "3.x-dev"
}
}
}
diff --git a/lib/psr/log/src/AbstractLogger.php b/lib/psr/log/src/AbstractLogger.php
new file mode 100644
index 0000000000..d60a091aff
--- /dev/null
+++ b/lib/psr/log/src/AbstractLogger.php
@@ -0,0 +1,15 @@
+logger = $logger;
}
diff --git a/lib/psr/log/Psr/Log/LoggerInterface.php b/lib/psr/log/src/LoggerInterface.php
similarity index 66%
rename from lib/psr/log/Psr/Log/LoggerInterface.php
rename to lib/psr/log/src/LoggerInterface.php
index 2206cfde41..b3a24b5f7e 100644
--- a/lib/psr/log/Psr/Log/LoggerInterface.php
+++ b/lib/psr/log/src/LoggerInterface.php
@@ -22,12 +22,12 @@ interface LoggerInterface
/**
* System is unusable.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function emergency($message, array $context = array());
+ public function emergency(string|\Stringable $message, array $context = []): void;
/**
* Action must be taken immediately.
@@ -35,35 +35,35 @@ interface LoggerInterface
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function alert($message, array $context = array());
+ public function alert(string|\Stringable $message, array $context = []): void;
/**
* Critical conditions.
*
* Example: Application component unavailable, unexpected exception.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function critical($message, array $context = array());
+ public function critical(string|\Stringable $message, array $context = []): void;
/**
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function error($message, array $context = array());
+ public function error(string|\Stringable $message, array $context = []): void;
/**
* Exceptional occurrences that are not errors.
@@ -71,55 +71,55 @@ interface LoggerInterface
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function warning($message, array $context = array());
+ public function warning(string|\Stringable $message, array $context = []): void;
/**
* Normal but significant events.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function notice($message, array $context = array());
+ public function notice(string|\Stringable $message, array $context = []): void;
/**
* Interesting events.
*
* Example: User logs in, SQL logs.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function info($message, array $context = array());
+ public function info(string|\Stringable $message, array $context = []): void;
/**
* Detailed debug information.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*/
- public function debug($message, array $context = array());
+ public function debug(string|\Stringable $message, array $context = []): void;
/**
* Logs with an arbitrary level.
*
* @param mixed $level
- * @param string $message
+ * @param string|\Stringable $message
* @param mixed[] $context
*
* @return void
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, $message, array $context = array());
+ public function log($level, string|\Stringable $message, array $context = []): void;
}
diff --git a/lib/psr/log/Psr/Log/LoggerTrait.php b/lib/psr/log/src/LoggerTrait.php
similarity index 69%
rename from lib/psr/log/Psr/Log/LoggerTrait.php
rename to lib/psr/log/src/LoggerTrait.php
index e392fef0a0..9c8733f957 100644
--- a/lib/psr/log/Psr/Log/LoggerTrait.php
+++ b/lib/psr/log/src/LoggerTrait.php
@@ -15,12 +15,12 @@ trait LoggerTrait
/**
* System is unusable.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function emergency($message, array $context = array())
+ public function emergency(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::EMERGENCY, $message, $context);
}
@@ -31,12 +31,12 @@ trait LoggerTrait
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function alert($message, array $context = array())
+ public function alert(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::ALERT, $message, $context);
}
@@ -46,12 +46,12 @@ trait LoggerTrait
*
* Example: Application component unavailable, unexpected exception.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function critical($message, array $context = array())
+ public function critical(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::CRITICAL, $message, $context);
}
@@ -60,12 +60,12 @@ trait LoggerTrait
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function error($message, array $context = array())
+ public function error(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::ERROR, $message, $context);
}
@@ -76,12 +76,12 @@ trait LoggerTrait
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function warning($message, array $context = array())
+ public function warning(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::WARNING, $message, $context);
}
@@ -89,12 +89,12 @@ trait LoggerTrait
/**
* Normal but significant events.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function notice($message, array $context = array())
+ public function notice(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::NOTICE, $message, $context);
}
@@ -104,12 +104,12 @@ trait LoggerTrait
*
* Example: User logs in, SQL logs.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function info($message, array $context = array())
+ public function info(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::INFO, $message, $context);
}
@@ -117,12 +117,12 @@ trait LoggerTrait
/**
* Detailed debug information.
*
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*/
- public function debug($message, array $context = array())
+ public function debug(string|\Stringable $message, array $context = []): void
{
$this->log(LogLevel::DEBUG, $message, $context);
}
@@ -131,12 +131,12 @@ trait LoggerTrait
* Logs with an arbitrary level.
*
* @param mixed $level
- * @param string $message
+ * @param string|\Stringable $message
* @param array $context
*
* @return void
*
* @throws \Psr\Log\InvalidArgumentException
*/
- abstract public function log($level, $message, array $context = array());
+ abstract public function log($level, string|\Stringable $message, array $context = []): void;
}
diff --git a/lib/psr/log/Psr/Log/NullLogger.php b/lib/psr/log/src/NullLogger.php
similarity index 78%
rename from lib/psr/log/Psr/Log/NullLogger.php
rename to lib/psr/log/src/NullLogger.php
index c8f7293b1c..c1cc3c0692 100644
--- a/lib/psr/log/Psr/Log/NullLogger.php
+++ b/lib/psr/log/src/NullLogger.php
@@ -16,14 +16,14 @@ class NullLogger extends AbstractLogger
* Logs with an arbitrary level.
*
* @param mixed $level
- * @param string $message
- * @param array $context
+ * @param string|\Stringable $message
+ * @param array $context
*
* @return void
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, $message, array $context = array())
+ public function log($level, string|\Stringable $message, array $context = []): void
{
// noop
}
diff --git a/lib/symfony/cache/Adapter/CouchbaseCollectionAdapter.php b/lib/symfony/cache/Adapter/CouchbaseCollectionAdapter.php
index aaa8bbdaef..b5bb603e3e 100644
--- a/lib/symfony/cache/Adapter/CouchbaseCollectionAdapter.php
+++ b/lib/symfony/cache/Adapter/CouchbaseCollectionAdapter.php
@@ -35,7 +35,7 @@ class CouchbaseCollectionAdapter extends AbstractAdapter
public function __construct(Collection $connection, string $namespace = '', int $defaultLifetime = 0, MarshallerInterface $marshaller = null)
{
if (!static::isSupported()) {
- throw new CacheException('Couchbase >= 3.0.0 < 4.0.0 is required.');
+ throw new CacheException('Couchbase >= 3.0.5 < 4.0.0 is required.');
}
$this->maxIdLength = static::MAX_KEY_LENGTH;
@@ -54,7 +54,7 @@ class CouchbaseCollectionAdapter extends AbstractAdapter
}
if (!static::isSupported()) {
- throw new CacheException('Couchbase >= 3.0.0 < 4.0.0 is required.');
+ throw new CacheException('Couchbase >= 3.0.5 < 4.0.0 is required.');
}
set_error_handler(static fn ($type, $msg, $file, $line) => throw new \ErrorException($msg, 0, $type, $file, $line));
@@ -183,7 +183,7 @@ class CouchbaseCollectionAdapter extends AbstractAdapter
}
$upsertOptions = new UpsertOptions();
- $upsertOptions->expiry($lifetime);
+ $upsertOptions->expiry(\DateTimeImmutable::createFromFormat('U', time() + $lifetime));
$ko = [];
foreach ($values as $key => $value) {
diff --git a/lib/symfony/console/Output/StreamOutput.php b/lib/symfony/console/Output/StreamOutput.php
index da5eefb6ff..08005c292a 100644
--- a/lib/symfony/console/Output/StreamOutput.php
+++ b/lib/symfony/console/Output/StreamOutput.php
@@ -97,18 +97,17 @@ class StreamOutput extends Output
return false;
}
- if ('Hyper' === getenv('TERM_PROGRAM')) {
+ if (\DIRECTORY_SEPARATOR === '\\'
+ && \function_exists('sapi_windows_vt100_support')
+ && @sapi_windows_vt100_support($this->stream)
+ ) {
return true;
}
- if (\DIRECTORY_SEPARATOR === '\\') {
- return (\function_exists('sapi_windows_vt100_support')
- && @sapi_windows_vt100_support($this->stream))
- || false !== getenv('ANSICON')
- || 'ON' === getenv('ConEmuANSI')
- || 'xterm' === getenv('TERM');
- }
-
- return stream_isatty($this->stream);
+ return 'Hyper' === getenv('TERM_PROGRAM')
+ || false !== getenv('ANSICON')
+ || 'ON' === getenv('ConEmuANSI')
+ || str_starts_with((string) getenv('TERM'), 'xterm')
+ || stream_isatty($this->stream);
}
}
diff --git a/lib/symfony/console/README.md b/lib/symfony/console/README.md
index 92f70e714c..e9013182a3 100644
--- a/lib/symfony/console/README.md
+++ b/lib/symfony/console/README.md
@@ -7,7 +7,14 @@ interfaces.
Sponsor
-------
-Help Symfony by [sponsoring][1] its development!
+The Console component for Symfony 6.4 is [backed][1] by [Les-Tilleuls.coop][2].
+
+Les-Tilleuls.coop is a team of 70+ Symfony experts who can help you design, develop and
+fix your projects. They provide a wide range of professional services including development,
+consulting, coaching, training and audits. They also are highly skilled in JS, Go and DevOps.
+They are a worker cooperative!
+
+Help Symfony by [sponsoring][3] its development!
Resources
---------
@@ -24,4 +31,6 @@ Credits
`Resources/bin/hiddeninput.exe` is a third party binary provided within this
component. Find sources and license at https://github.com/Seldaek/hidden-input.
-[1]: https://symfony.com/sponsor
+[1]: https://symfony.com/backers
+[2]: https://les-tilleuls.coop
+[3]: https://symfony.com/sponsor
diff --git a/lib/symfony/dependency-injection/Attribute/Target.php b/lib/symfony/dependency-injection/Attribute/Target.php
index c3f22127bc..6fbb3ad42b 100644
--- a/lib/symfony/dependency-injection/Attribute/Target.php
+++ b/lib/symfony/dependency-injection/Attribute/Target.php
@@ -36,10 +36,12 @@ final class Target
return lcfirst(str_replace(' ', '', ucwords(preg_replace('/[^a-zA-Z0-9\x7f-\xff]++/', ' ', $this->name))));
}
- public static function parseName(\ReflectionParameter $parameter, self &$attribute = null): string
+ public static function parseName(\ReflectionParameter $parameter, self &$attribute = null, string &$parsedName = null): string
{
$attribute = null;
if (!$target = $parameter->getAttributes(self::class)[0] ?? null) {
+ $parsedName = (new self($parameter->name))->getParsedName();
+
return $parameter->name;
}
@@ -57,6 +59,6 @@ final class Target
throw new InvalidArgumentException(sprintf('Invalid #[Target] name "%s" on parameter "$%s" of "%s()": the first character must be a letter.', $name, $parameter->name, $function));
}
- return $parsedName;
+ return preg_match('/^[a-zA-Z0-9_\x7f-\xff]++$/', $name) ? $name : $parsedName;
}
}
diff --git a/lib/symfony/dependency-injection/Compiler/AutowirePass.php b/lib/symfony/dependency-injection/Compiler/AutowirePass.php
index ee3ba948b5..9786ec4de2 100644
--- a/lib/symfony/dependency-injection/Compiler/AutowirePass.php
+++ b/lib/symfony/dependency-injection/Compiler/AutowirePass.php
@@ -454,20 +454,30 @@ class AutowirePass extends AbstractRecursivePass
$name = $target = (array_filter($reference->getAttributes(), static fn ($a) => $a instanceof Target)[0] ?? null)?->name;
if (null !== $name ??= $reference->getName()) {
+ if ($this->container->has($alias = $type.' $'.$name) && !$this->container->findDefinition($alias)->isAbstract()) {
+ return new TypedReference($alias, $type, $reference->getInvalidBehavior());
+ }
+
+ if (null !== ($alias = $this->getCombinedAlias($type, $name)) && !$this->container->findDefinition($alias)->isAbstract()) {
+ return new TypedReference($alias, $type, $reference->getInvalidBehavior());
+ }
+
$parsedName = (new Target($name))->getParsedName();
if ($this->container->has($alias = $type.' $'.$parsedName) && !$this->container->findDefinition($alias)->isAbstract()) {
return new TypedReference($alias, $type, $reference->getInvalidBehavior());
}
- if (null !== ($alias = $this->getCombinedAlias($type, $parsedName) ?? null) && !$this->container->findDefinition($alias)->isAbstract()) {
+ if (null !== ($alias = $this->getCombinedAlias($type, $parsedName)) && !$this->container->findDefinition($alias)->isAbstract()) {
return new TypedReference($alias, $type, $reference->getInvalidBehavior());
}
- if ($this->container->has($name) && !$this->container->findDefinition($name)->isAbstract()) {
+ if (($this->container->has($n = $name) && !$this->container->findDefinition($n)->isAbstract())
+ || ($this->container->has($n = $parsedName) && !$this->container->findDefinition($n)->isAbstract())
+ ) {
foreach ($this->container->getAliases() as $id => $alias) {
- if ($name === (string) $alias && str_starts_with($id, $type.' $')) {
- return new TypedReference($name, $type, $reference->getInvalidBehavior());
+ if ($n === (string) $alias && str_starts_with($id, $type.' $')) {
+ return new TypedReference($n, $type, $reference->getInvalidBehavior());
}
}
}
@@ -481,7 +491,7 @@ class AutowirePass extends AbstractRecursivePass
return new TypedReference($type, $type, $reference->getInvalidBehavior());
}
- if (null !== ($alias = $this->getCombinedAlias($type) ?? null) && !$this->container->findDefinition($alias)->isAbstract()) {
+ if (null !== ($alias = $this->getCombinedAlias($type)) && !$this->container->findDefinition($alias)->isAbstract()) {
return new TypedReference($alias, $type, $reference->getInvalidBehavior());
}
diff --git a/lib/symfony/dependency-injection/Compiler/ResolveBindingsPass.php b/lib/symfony/dependency-injection/Compiler/ResolveBindingsPass.php
index 68835d52aa..2fa7db848c 100644
--- a/lib/symfony/dependency-injection/Compiler/ResolveBindingsPass.php
+++ b/lib/symfony/dependency-injection/Compiler/ResolveBindingsPass.php
@@ -190,16 +190,19 @@ class ResolveBindingsPass extends AbstractRecursivePass
$typeHint = ltrim(ProxyHelper::exportType($parameter) ?? '', '?');
- $name = Target::parseName($parameter);
+ $name = Target::parseName($parameter, parsedName: $parsedName);
- if ($typeHint && \array_key_exists($k = preg_replace('/(^|[(|&])\\\\/', '\1', $typeHint).' $'.$name, $bindings)) {
+ if ($typeHint && (
+ \array_key_exists($k = preg_replace('/(^|[(|&])\\\\/', '\1', $typeHint).' $'.$name, $bindings)
+ || \array_key_exists($k = preg_replace('/(^|[(|&])\\\\/', '\1', $typeHint).' $'.$parsedName, $bindings)
+ )) {
$arguments[$key] = $this->getBindingValue($bindings[$k]);
continue;
}
- if (\array_key_exists('$'.$name, $bindings)) {
- $arguments[$key] = $this->getBindingValue($bindings['$'.$name]);
+ if (\array_key_exists($k = '$'.$name, $bindings) || \array_key_exists($k = '$'.$parsedName, $bindings)) {
+ $arguments[$key] = $this->getBindingValue($bindings[$k]);
continue;
}
@@ -210,7 +213,7 @@ class ResolveBindingsPass extends AbstractRecursivePass
continue;
}
- if (isset($bindingNames[$name]) || isset($bindingNames[$parameter->name])) {
+ if (isset($bindingNames[$name]) || isset($bindingNames[$parsedName]) || isset($bindingNames[$parameter->name])) {
$bindingKey = array_search($binding, $bindings, true);
$argumentType = substr($bindingKey, 0, strpos($bindingKey, ' '));
$this->errorMessages[] = sprintf('Did you forget to add the type "%s" to argument "$%s" of method "%s::%s()"?', $argumentType, $parameter->name, $reflectionMethod->class, $reflectionMethod->name);
diff --git a/lib/symfony/dependency-injection/Dumper/PhpDumper.php b/lib/symfony/dependency-injection/Dumper/PhpDumper.php
index ff11062b99..65985fd9c4 100644
--- a/lib/symfony/dependency-injection/Dumper/PhpDumper.php
+++ b/lib/symfony/dependency-injection/Dumper/PhpDumper.php
@@ -258,6 +258,7 @@ class PhpDumper extends Dumper
docStar}
diff --git a/lib/symfony/dependency-injection/EnvVarProcessorInterface.php b/lib/symfony/dependency-injection/EnvVarProcessorInterface.php
index fecd474076..3cda63934b 100644
--- a/lib/symfony/dependency-injection/EnvVarProcessorInterface.php
+++ b/lib/symfony/dependency-injection/EnvVarProcessorInterface.php
@@ -23,7 +23,6 @@ interface EnvVarProcessorInterface
/**
* Returns the value of the given variable as managed by the current instance.
*
- * @param string $prefix The namespace of the variable
* @param string $prefix The namespace of the variable; when the empty string is passed, null values should be kept as is
* @param string $name The name of the variable within the namespace
* @param \Closure(string): mixed $getEnv A closure that allows fetching more env vars
diff --git a/lib/symfony/dotenv/Command/DebugCommand.php b/lib/symfony/dotenv/Command/DebugCommand.php
index e60c83fae7..0da80245e9 100644
--- a/lib/symfony/dotenv/Command/DebugCommand.php
+++ b/lib/symfony/dotenv/Command/DebugCommand.php
@@ -151,7 +151,13 @@ EOT
private function getAvailableVars(): array
{
- $vars = explode(',', $_SERVER['SYMFONY_DOTENV_VARS'] ?? '');
+ $dotenvVars = $_SERVER['SYMFONY_DOTENV_VARS'] ?? '';
+
+ if ('' === $dotenvVars) {
+ return [];
+ }
+
+ $vars = explode(',', $dotenvVars);
sort($vars);
return $vars;
diff --git a/lib/symfony/dotenv/Dotenv.php b/lib/symfony/dotenv/Dotenv.php
index 6e693ac28b..9b905f31c2 100644
--- a/lib/symfony/dotenv/Dotenv.php
+++ b/lib/symfony/dotenv/Dotenv.php
@@ -25,7 +25,7 @@ use Symfony\Component\Process\Process;
*/
final class Dotenv
{
- public const VARNAME_REGEX = '(?i:[A-Z][A-Z0-9_]*+)';
+ public const VARNAME_REGEX = '(?i:_?[A-Z][A-Z0-9_]*+)';
public const STATE_VARNAME = 0;
public const STATE_VALUE = 1;
@@ -341,8 +341,8 @@ final class Dotenv
++$this->cursor;
$value = str_replace(['\\"', '\r', '\n'], ['"', "\r", "\n"], $value);
$resolvedValue = $value;
- $resolvedValue = $this->resolveVariables($resolvedValue, $loadedVars);
$resolvedValue = $this->resolveCommands($resolvedValue, $loadedVars);
+ $resolvedValue = $this->resolveVariables($resolvedValue, $loadedVars);
$resolvedValue = str_replace('\\\\', '\\', $resolvedValue);
$v .= $resolvedValue;
} else {
@@ -364,8 +364,8 @@ final class Dotenv
}
$value = rtrim($value);
$resolvedValue = $value;
- $resolvedValue = $this->resolveVariables($resolvedValue, $loadedVars);
$resolvedValue = $this->resolveCommands($resolvedValue, $loadedVars);
+ $resolvedValue = $this->resolveVariables($resolvedValue, $loadedVars);
$resolvedValue = str_replace('\\\\', '\\', $resolvedValue);
if ($resolvedValue === $value && preg_match('/\s+/', $value)) {
diff --git a/lib/symfony/event-dispatcher/GenericEvent.php b/lib/symfony/event-dispatcher/GenericEvent.php
index 68a2030633..0ccbbd8104 100644
--- a/lib/symfony/event-dispatcher/GenericEvent.php
+++ b/lib/symfony/event-dispatcher/GenericEvent.php
@@ -29,7 +29,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate
protected $arguments;
/**
- * Encapsulate an event with $subject and $args.
+ * Encapsulate an event with $subject and $arguments.
*
* @param mixed $subject The subject of the event, usually an object or a callable
* @param array $arguments Arguments to store in the event
diff --git a/lib/symfony/framework-bundle/Console/Application.php b/lib/symfony/framework-bundle/Console/Application.php
index b8bae8fc22..38dd8405ad 100644
--- a/lib/symfony/framework-bundle/Console/Application.php
+++ b/lib/symfony/framework-bundle/Console/Application.php
@@ -166,7 +166,7 @@ class Application extends BaseApplication
public function getLongVersion(): string
{
- return parent::getLongVersion().sprintf(' (env: %s>, debug: %s>) #StandWith>Ukraine> https://sf.to/ukraine>', $this->kernel->getEnvironment(), $this->kernel->isDebug() ? 'true' : 'false');
+ return parent::getLongVersion().sprintf(' (env: %s>, debug: %s>)', $this->kernel->getEnvironment(), $this->kernel->isDebug() ? 'true' : 'false');
}
public function add(Command $command): ?Command
diff --git a/lib/symfony/framework-bundle/Controller/AbstractController.php b/lib/symfony/framework-bundle/Controller/AbstractController.php
index 9bcc346061..4ede883f7e 100644
--- a/lib/symfony/framework-bundle/Controller/AbstractController.php
+++ b/lib/symfony/framework-bundle/Controller/AbstractController.php
@@ -111,7 +111,7 @@ abstract class AbstractController implements ServiceSubscriberInterface
/**
* Forwards the request to another controller.
*
- * @param string $controller The controller name (a string like Bundle\BlogBundle\Controller\PostController::indexAction)
+ * @param string $controller The controller name (a string like "App\Controller\PostController::index" or "App\Controller\PostController" if it is invokable)
*/
protected function forward(string $controller, array $path = [], array $query = []): Response
{
diff --git a/lib/symfony/framework-bundle/DependencyInjection/FrameworkExtension.php b/lib/symfony/framework-bundle/DependencyInjection/FrameworkExtension.php
index 8a42bfb29e..32026a84df 100644
--- a/lib/symfony/framework-bundle/DependencyInjection/FrameworkExtension.php
+++ b/lib/symfony/framework-bundle/DependencyInjection/FrameworkExtension.php
@@ -1938,7 +1938,7 @@ class FrameworkExtension extends Extension
$container->removeDefinition('serializer.mapping.cache_class_metadata_factory');
}
- if (!class_exists(Translator::class)) {
+ if (!$this->readConfigEnabled('translator', $container, $config)) {
$container->removeDefinition('serializer.normalizer.translatable');
}
@@ -1990,21 +1990,23 @@ class FrameworkExtension extends Extension
$container->getDefinition('serializer.name_converter.metadata_aware')->setArgument(1, new Reference($config['name_converter']));
}
+ $defaultContext = $config['default_context'] ?? [];
+
+ if ($defaultContext) {
+ $container->setParameter('serializer.default_context', $defaultContext);
+ }
+
if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
$arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
- $context = ($arguments[6] ?? []) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
+ $context = ($arguments[6] ?? $defaultContext) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
$container->getDefinition('serializer.normalizer.object')->setArgument(5, null);
$container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
}
if ($config['max_depth_handler'] ?? false) {
- $defaultContext = $container->getDefinition('serializer.normalizer.object')->getArgument(6);
- $defaultContext += ['max_depth_handler' => new Reference($config['max_depth_handler'])];
- $container->getDefinition('serializer.normalizer.object')->replaceArgument(6, $defaultContext);
- }
-
- if (isset($config['default_context']) && $config['default_context']) {
- $container->setParameter('serializer.default_context', $config['default_context']);
+ $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
+ $context = ($arguments[6] ?? $defaultContext) + ['max_depth_handler' => new Reference($config['max_depth_handler'])];
+ $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
}
}
@@ -2678,13 +2680,15 @@ class FrameworkExtension extends Extension
if ($webhookEnabled) {
$webhookRequestParsers = [
+ MailerBridge\Brevo\Webhook\BrevoRequestParser::class => 'mailer.webhook.request_parser.brevo',
MailerBridge\Mailgun\Webhook\MailgunRequestParser::class => 'mailer.webhook.request_parser.mailgun',
+ MailerBridge\Mailjet\Webhook\MailjetRequestParser::class => 'mailer.webhook.request_parser.mailjet',
MailerBridge\Postmark\Webhook\PostmarkRequestParser::class => 'mailer.webhook.request_parser.postmark',
MailerBridge\Sendgrid\Webhook\SendgridRequestParser::class => 'mailer.webhook.request_parser.sendgrid',
];
foreach ($webhookRequestParsers as $class => $service) {
- $package = substr($service, \strlen('mailer.transport_factory.'));
+ $package = substr($service, \strlen('mailer.webhook.request_parser.'));
if (!ContainerBuilder::willBeAvailable(sprintf('symfony/%s-mailer', 'gmail' === $package ? 'google' : $package), $class, ['symfony/framework-bundle', 'symfony/mailer'])) {
$container->removeDefinition($service);
@@ -2868,7 +2872,9 @@ class FrameworkExtension extends Extension
if (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', NotifierBridge\Mercure\MercureTransportFactory::class, $parentPackages) && ContainerBuilder::willBeAvailable('symfony/mercure-bundle', MercureBundle::class, $parentPackages) && \in_array(MercureBundle::class, $container->getParameter('kernel.bundles'), true)) {
$container->getDefinition($classToServices[NotifierBridge\Mercure\MercureTransportFactory::class])
- ->replaceArgument('$registry', new Reference(HubRegistry::class));
+ ->replaceArgument('$registry', new Reference(HubRegistry::class))
+ ->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
+ ->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
} elseif (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', NotifierBridge\Mercure\MercureTransportFactory::class, $parentPackages)) {
$container->removeDefinition($classToServices[NotifierBridge\Mercure\MercureTransportFactory::class]);
}
@@ -2876,13 +2882,17 @@ class FrameworkExtension extends Extension
if (ContainerBuilder::willBeAvailable('symfony/fake-chat-notifier', NotifierBridge\FakeChat\FakeChatTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'])) {
$container->getDefinition($classToServices[NotifierBridge\FakeChat\FakeChatTransportFactory::class])
->replaceArgument('$mailer', new Reference('mailer'))
- ->replaceArgument('$logger', new Reference('logger'));
+ ->replaceArgument('$logger', new Reference('logger'))
+ ->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
+ ->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
}
if (ContainerBuilder::willBeAvailable('symfony/fake-sms-notifier', NotifierBridge\FakeSms\FakeSmsTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'])) {
$container->getDefinition($classToServices[NotifierBridge\FakeSms\FakeSmsTransportFactory::class])
->replaceArgument('$mailer', new Reference('mailer'))
- ->replaceArgument('$logger', new Reference('logger'));
+ ->replaceArgument('$logger', new Reference('logger'))
+ ->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
+ ->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
}
if (isset($config['admin_recipients'])) {
@@ -2896,6 +2906,19 @@ class FrameworkExtension extends Extension
if ($webhookEnabled) {
$loader->load('notifier_webhook.php');
+
+ $webhookRequestParsers = [
+ NotifierBridge\Twilio\Webhook\TwilioRequestParser::class => 'notifier.webhook.request_parser.twilio',
+ NotifierBridge\Vonage\Webhook\VonageRequestParser::class => 'notifier.webhook.request_parser.vonage',
+ ];
+
+ foreach ($webhookRequestParsers as $class => $service) {
+ $package = substr($service, \strlen('notifier.webhook.request_parser.'));
+
+ if (!ContainerBuilder::willBeAvailable(sprintf('symfony/%s-notifier', $package), $class, ['symfony/framework-bundle', 'symfony/notifier'])) {
+ $container->removeDefinition($service);
+ }
+ }
}
}
diff --git a/lib/symfony/framework-bundle/EventListener/ConsoleProfilerListener.php b/lib/symfony/framework-bundle/EventListener/ConsoleProfilerListener.php
index d3fc381063..c2a71d0a7c 100644
--- a/lib/symfony/framework-bundle/EventListener/ConsoleProfilerListener.php
+++ b/lib/symfony/framework-bundle/EventListener/ConsoleProfilerListener.php
@@ -42,7 +42,8 @@ final class ConsoleProfilerListener implements EventSubscriberInterface
private readonly Profiler $profiler,
private readonly RequestStack $requestStack,
private readonly Stopwatch $stopwatch,
- private readonly UrlGeneratorInterface $urlGenerator,
+ private readonly bool $cliMode,
+ private readonly ?UrlGeneratorInterface $urlGenerator = null,
) {
$this->profiles = new \SplObjectStorage();
$this->parents = new \SplObjectStorage();
@@ -59,6 +60,10 @@ final class ConsoleProfilerListener implements EventSubscriberInterface
public function initialize(ConsoleCommandEvent $event): void
{
+ if (!$this->cliMode) {
+ return;
+ }
+
$input = $event->getInput();
if (!$input->hasOption('profile') || !$input->getOption('profile')) {
$this->profiler->disable();
@@ -78,12 +83,16 @@ final class ConsoleProfilerListener implements EventSubscriberInterface
public function catch(ConsoleErrorEvent $event): void
{
+ if (!$this->cliMode) {
+ return;
+ }
+
$this->error = $event->getError();
}
public function profile(ConsoleTerminateEvent $event): void
{
- if (!$this->profiler->isEnabled()) {
+ if (!$this->cliMode || !$this->profiler->isEnabled()) {
return;
}
@@ -131,12 +140,14 @@ final class ConsoleProfilerListener implements EventSubscriberInterface
$p = $this->profiles[$r];
$this->profiler->saveProfile($p);
- $token = $p->getToken();
- $output?->writeln(sprintf(
- 'See profile %s>',
- $this->urlGenerator->generate('_profiler', ['token' => $token], UrlGeneratorInterface::ABSOLUTE_URL),
- $token
- ));
+ if ($this->urlGenerator && $output) {
+ $token = $p->getToken();
+ $output->writeln(sprintf(
+ 'See profile %s>',
+ $this->urlGenerator->generate('_profiler', ['token' => $token], UrlGeneratorInterface::ABSOLUTE_URL),
+ $token
+ ));
+ }
}
$this->profiles = new \SplObjectStorage();
diff --git a/lib/symfony/framework-bundle/Resources/config/mailer_webhook.php b/lib/symfony/framework-bundle/Resources/config/mailer_webhook.php
index 30ea50dade..bb487b36c0 100644
--- a/lib/symfony/framework-bundle/Resources/config/mailer_webhook.php
+++ b/lib/symfony/framework-bundle/Resources/config/mailer_webhook.php
@@ -11,8 +11,12 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+use Symfony\Component\Mailer\Bridge\Brevo\RemoteEvent\BrevoPayloadConverter;
+use Symfony\Component\Mailer\Bridge\Brevo\Webhook\BrevoRequestParser;
use Symfony\Component\Mailer\Bridge\Mailgun\RemoteEvent\MailgunPayloadConverter;
use Symfony\Component\Mailer\Bridge\Mailgun\Webhook\MailgunRequestParser;
+use Symfony\Component\Mailer\Bridge\Mailjet\RemoteEvent\MailjetPayloadConverter;
+use Symfony\Component\Mailer\Bridge\Mailjet\Webhook\MailjetRequestParser;
use Symfony\Component\Mailer\Bridge\Postmark\RemoteEvent\PostmarkPayloadConverter;
use Symfony\Component\Mailer\Bridge\Postmark\Webhook\PostmarkRequestParser;
use Symfony\Component\Mailer\Bridge\Sendgrid\RemoteEvent\SendgridPayloadConverter;
@@ -20,11 +24,21 @@ use Symfony\Component\Mailer\Bridge\Sendgrid\Webhook\SendgridRequestParser;
return static function (ContainerConfigurator $container) {
$container->services()
+ ->set('mailer.payload_converter.brevo', BrevoPayloadConverter::class)
+ ->set('mailer.webhook.request_parser.brevo', BrevoRequestParser::class)
+ ->args([service('mailer.payload_converter.brevo')])
+ ->alias(BrevoRequestParser::class, 'mailer.webhook.request_parser.brevo')
+
->set('mailer.payload_converter.mailgun', MailgunPayloadConverter::class)
->set('mailer.webhook.request_parser.mailgun', MailgunRequestParser::class)
->args([service('mailer.payload_converter.mailgun')])
->alias(MailgunRequestParser::class, 'mailer.webhook.request_parser.mailgun')
+ ->set('mailer.payload_converter.mailjet', MailjetPayloadConverter::class)
+ ->set('mailer.webhook.request_parser.mailjet', MailjetRequestParser::class)
+ ->args([service('mailer.payload_converter.mailjet')])
+ ->alias(MailjetRequestParser::class, 'mailer.webhook.request_parser.mailjet')
+
->set('mailer.payload_converter.postmark', PostmarkPayloadConverter::class)
->set('mailer.webhook.request_parser.postmark', PostmarkRequestParser::class)
->args([service('mailer.payload_converter.postmark')])
diff --git a/lib/symfony/framework-bundle/Resources/config/notifier_webhook.php b/lib/symfony/framework-bundle/Resources/config/notifier_webhook.php
index 87dfc6c6a0..fc541fd999 100644
--- a/lib/symfony/framework-bundle/Resources/config/notifier_webhook.php
+++ b/lib/symfony/framework-bundle/Resources/config/notifier_webhook.php
@@ -12,10 +12,14 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Notifier\Bridge\Twilio\Webhook\TwilioRequestParser;
+use Symfony\Component\Notifier\Bridge\Vonage\Webhook\VonageRequestParser;
return static function (ContainerConfigurator $container) {
$container->services()
->set('notifier.webhook.request_parser.twilio', TwilioRequestParser::class)
->alias(TwilioRequestParser::class, 'notifier.webhook.request_parser.twilio')
+
+ ->set('notifier.webhook.request_parser.vonage', VonageRequestParser::class)
+ ->alias(VonageRequestParser::class, 'notifier.webhook.request_parser.vonage')
;
};
diff --git a/lib/symfony/framework-bundle/Resources/config/profiling.php b/lib/symfony/framework-bundle/Resources/config/profiling.php
index ec764d8375..eaef795977 100644
--- a/lib/symfony/framework-bundle/Resources/config/profiling.php
+++ b/lib/symfony/framework-bundle/Resources/config/profiling.php
@@ -43,7 +43,8 @@ return static function (ContainerConfigurator $container) {
service('profiler'),
service('.virtual_request_stack'),
service('debug.stopwatch'),
- service('router'),
+ param('kernel.runtime_mode.cli'),
+ service('router')->nullOnInvalid(),
])
->tag('kernel.event_subscriber')
diff --git a/lib/symfony/framework-bundle/Resources/config/schema/symfony-1.0.xsd b/lib/symfony/framework-bundle/Resources/config/schema/symfony-1.0.xsd
index 6483732ef7..ffa47c3845 100644
--- a/lib/symfony/framework-bundle/Resources/config/schema/symfony-1.0.xsd
+++ b/lib/symfony/framework-bundle/Resources/config/schema/symfony-1.0.xsd
@@ -979,6 +979,7 @@
+
diff --git a/lib/symfony/framework-bundle/Routing/AnnotatedRouteControllerLoader.php b/lib/symfony/framework-bundle/Routing/AnnotatedRouteControllerLoader.php
index 9fb17d8d72..e9cf9b95c8 100644
--- a/lib/symfony/framework-bundle/Routing/AnnotatedRouteControllerLoader.php
+++ b/lib/symfony/framework-bundle/Routing/AnnotatedRouteControllerLoader.php
@@ -19,7 +19,7 @@ if (false) {
/**
* @deprecated since Symfony 6.4, to be removed in 7.0, use {@link AttributeRouteControllerLoader} instead
*/
- class AnnotatedRouteControllerLoader
+ class AnnotatedRouteControllerLoader extends AttributeRouteControllerLoader
{
}
}
diff --git a/lib/symfony/framework-bundle/composer.json b/lib/symfony/framework-bundle/composer.json
index e63a672e8c..3aedebd742 100644
--- a/lib/symfony/framework-bundle/composer.json
+++ b/lib/symfony/framework-bundle/composer.json
@@ -82,7 +82,7 @@
"symfony/asset": "<5.4",
"symfony/asset-mapper": "<6.4",
"symfony/clock": "<6.3",
- "symfony/console": "<5.4",
+ "symfony/console": "<5.4|>=7.0",
"symfony/dotenv": "<5.4",
"symfony/dom-crawler": "<6.4",
"symfony/http-client": "<6.3",
diff --git a/lib/symfony/http-foundation/RequestMatcher.php b/lib/symfony/http-foundation/RequestMatcher.php
index 8c5f1d8134..ac155fa30c 100644
--- a/lib/symfony/http-foundation/RequestMatcher.php
+++ b/lib/symfony/http-foundation/RequestMatcher.php
@@ -88,7 +88,7 @@ class RequestMatcher implements RequestMatcherInterface
}
/**
- * Adds a check for the the URL port.
+ * Adds a check for the URL port.
*
* @param int|null $port The port number to connect to
*
diff --git a/lib/symfony/http-kernel/Controller/ArgumentResolver.php b/lib/symfony/http-kernel/Controller/ArgumentResolver.php
index 3b0f89509f..6643cc58ee 100644
--- a/lib/symfony/http-kernel/Controller/ArgumentResolver.php
+++ b/lib/symfony/http-kernel/Controller/ArgumentResolver.php
@@ -73,6 +73,7 @@ final class ArgumentResolver implements ArgumentResolverInterface
$argumentValueResolvers = [
$this->namedResolvers->get($resolverName),
+ new RequestAttributeValueResolver(),
new DefaultValueResolver(),
];
}
diff --git a/lib/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php b/lib/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php
index 4f0ca76d30..620e2de080 100644
--- a/lib/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php
+++ b/lib/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php
@@ -86,7 +86,7 @@ class BackedEnumValueResolver implements ArgumentValueResolverInterface, ValueRe
try {
return [$enumType::from($value)];
- } catch (\ValueError $e) {
+ } catch (\ValueError|\TypeError $e) {
throw new NotFoundHttpException(sprintf('Could not resolve the "%s $%s" controller argument: ', $argument->getType(), $argument->getName()).$e->getMessage(), $e);
}
}
diff --git a/lib/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php b/lib/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php
index f7f6030769..444be1b3fe 100644
--- a/lib/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php
+++ b/lib/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php
@@ -119,7 +119,7 @@ class RequestPayloadValueResolver implements ValueResolverInterface, EventSubscr
$payload = $e->getData();
}
- if (null !== $payload) {
+ if (null !== $payload && !\count($violations)) {
$violations->addAll($this->validator->validate($payload, null, $argument->validationGroups ?? null));
}
diff --git a/lib/symfony/http-kernel/Debug/FileLinkFormatter.php b/lib/symfony/http-kernel/Debug/FileLinkFormatter.php
index 23ced22fc9..600a460fb6 100644
--- a/lib/symfony/http-kernel/Debug/FileLinkFormatter.php
+++ b/lib/symfony/http-kernel/Debug/FileLinkFormatter.php
@@ -25,7 +25,7 @@ if (false) {
/**
* @deprecated since Symfony 6.4, use FileLinkFormatter from the ErrorHandler component instead
*/
- class FileLinkFormatter
+ class FileLinkFormatter extends ErrorHandlerFileLinkFormatter
{
}
}
diff --git a/lib/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/lib/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
index d43c6a3aef..f2cf2422b0 100644
--- a/lib/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
+++ b/lib/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
@@ -128,6 +128,8 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
$type = preg_replace('/(^|[(|&])\\\\/', '\1', $target = ltrim(ProxyHelper::exportType($p) ?? '', '?'));
$invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
$autowireAttributes = $autowire ? $emptyAutowireAttributes : [];
+ $parsedName = $p->name;
+ $k = null;
if (isset($arguments[$r->name][$p->name])) {
$target = $arguments[$r->name][$p->name];
@@ -138,7 +140,11 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
} elseif ($p->allowsNull() && !$p->isOptional()) {
$invalidBehavior = ContainerInterface::NULL_ON_INVALID_REFERENCE;
}
- } elseif (isset($bindings[$bindingName = $type.' $'.$name = Target::parseName($p)]) || isset($bindings[$bindingName = '$'.$name]) || isset($bindings[$bindingName = $type])) {
+ } elseif (isset($bindings[$bindingName = $type.' $'.$name = Target::parseName($p, $k, $parsedName)])
+ || isset($bindings[$bindingName = $type.' $'.$parsedName])
+ || isset($bindings[$bindingName = '$'.$name])
+ || isset($bindings[$bindingName = $type])
+ ) {
$binding = $bindings[$bindingName];
[$bindingValue, $bindingId, , $bindingType, $bindingFile] = $binding->getValues();
diff --git a/lib/symfony/http-kernel/EventListener/AbstractSessionListener.php b/lib/symfony/http-kernel/EventListener/AbstractSessionListener.php
index 2eb7c473ff..2f012ab522 100644
--- a/lib/symfony/http-kernel/EventListener/AbstractSessionListener.php
+++ b/lib/symfony/http-kernel/EventListener/AbstractSessionListener.php
@@ -35,14 +35,16 @@ use Symfony\Contracts\Service\ResetInterface;
*
* @author Johannes M. Schmitt
* @author Tobias Schultze
- *
- * @internal
*/
abstract class AbstractSessionListener implements EventSubscriberInterface, ResetInterface
{
public const NO_AUTO_CACHE_CONTROL_HEADER = 'Symfony-Session-NoAutoCacheControl';
+ /**
+ * @internal
+ */
protected ?ContainerInterface $container;
+
private bool $debug;
/**
@@ -50,6 +52,9 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
*/
private array $sessionOptions;
+ /**
+ * @internal
+ */
public function __construct(ContainerInterface $container = null, bool $debug = false, array $sessionOptions = [])
{
$this->container = $container;
@@ -57,6 +62,9 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
$this->sessionOptions = $sessionOptions;
}
+ /**
+ * @internal
+ */
public function onKernelRequest(RequestEvent $event): void
{
if (!$event->isMainRequest()) {
@@ -90,6 +98,9 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
}
}
+ /**
+ * @internal
+ */
public function onKernelResponse(ResponseEvent $event): void
{
if (!$event->isMainRequest() || (!$this->container->has('initialized_session') && !$event->getRequest()->hasSession())) {
@@ -218,6 +229,9 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
}
}
+ /**
+ * @internal
+ */
public function onSessionUsage(): void
{
if (!$this->debug) {
@@ -253,6 +267,9 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
throw new UnexpectedSessionUsageException('Session was used while the request was declared stateless.');
}
+ /**
+ * @internal
+ */
public static function getSubscribedEvents(): array
{
return [
@@ -262,6 +279,9 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
];
}
+ /**
+ * @internal
+ */
public function reset(): void
{
if (\PHP_SESSION_ACTIVE === session_status()) {
@@ -278,6 +298,8 @@ abstract class AbstractSessionListener implements EventSubscriberInterface, Rese
/**
* Gets the session object.
+ *
+ * @internal
*/
abstract protected function getSession(): ?SessionInterface;
diff --git a/lib/symfony/http-kernel/EventListener/LocaleListener.php b/lib/symfony/http-kernel/EventListener/LocaleListener.php
index 4516048be7..65a3bfde46 100644
--- a/lib/symfony/http-kernel/EventListener/LocaleListener.php
+++ b/lib/symfony/http-kernel/EventListener/LocaleListener.php
@@ -69,7 +69,7 @@ class LocaleListener implements EventSubscriberInterface
if ($locale = $request->attributes->get('_locale')) {
$request->setLocale($locale);
} elseif ($this->useAcceptLanguageHeader) {
- if ($preferredLanguage = $request->getPreferredLanguage($this->enabledLocales)) {
+ if ($request->getLanguages() && $preferredLanguage = $request->getPreferredLanguage($this->enabledLocales)) {
$request->setLocale($preferredLanguage);
}
$request->attributes->set('_vary_by_language', true);
diff --git a/lib/symfony/http-kernel/Kernel.php b/lib/symfony/http-kernel/Kernel.php
index 39170e8333..6247db9016 100644
--- a/lib/symfony/http-kernel/Kernel.php
+++ b/lib/symfony/http-kernel/Kernel.php
@@ -76,11 +76,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
*/
private static array $freshCache = [];
- public const VERSION = '6.4.0';
- public const VERSION_ID = 60400;
+ public const VERSION = '6.4.2';
+ public const VERSION_ID = 60402;
public const MAJOR_VERSION = 6;
public const MINOR_VERSION = 4;
- public const RELEASE_VERSION = 0;
+ public const RELEASE_VERSION = 2;
public const EXTRA_VERSION = '';
public const END_OF_MAINTENANCE = '11/2026';
diff --git a/lib/symfony/http-kernel/UriSigner.php b/lib/symfony/http-kernel/UriSigner.php
index 877d832e9d..fb5383cdec 100644
--- a/lib/symfony/http-kernel/UriSigner.php
+++ b/lib/symfony/http-kernel/UriSigner.php
@@ -21,7 +21,7 @@ if (false) {
/**
* @deprecated since Symfony 6.4, to be removed in 7.0, use {@link HttpFoundationUriSigner} instead
*/
- class UriSigner
+ class UriSigner extends HttpFoundationUriSigner
{
}
}
diff --git a/lib/symfony/routing/Loader/AnnotationClassLoader.php b/lib/symfony/routing/Loader/AnnotationClassLoader.php
index fa04a0ca4b..b2c52ce9e0 100644
--- a/lib/symfony/routing/Loader/AnnotationClassLoader.php
+++ b/lib/symfony/routing/Loader/AnnotationClassLoader.php
@@ -19,7 +19,7 @@ if (false) {
/**
* @deprecated since Symfony 6.4, to be removed in 7.0, use {@link AttributeClassLoader} instead
*/
- class AnnotationClassLoader
+ abstract class AnnotationClassLoader extends AttributeClassLoader
{
}
}
diff --git a/lib/symfony/routing/Loader/AnnotationDirectoryLoader.php b/lib/symfony/routing/Loader/AnnotationDirectoryLoader.php
index 80cec1f5dd..169b1e60ac 100644
--- a/lib/symfony/routing/Loader/AnnotationDirectoryLoader.php
+++ b/lib/symfony/routing/Loader/AnnotationDirectoryLoader.php
@@ -19,7 +19,7 @@ if (false) {
/**
* @deprecated since Symfony 6.4, to be removed in 7.0, use {@link AttributeDirectoryLoader} instead
*/
- class AnnotationDirectoryLoader
+ class AnnotationDirectoryLoader extends AttributeDirectoryLoader
{
}
}
diff --git a/lib/symfony/routing/Loader/AnnotationFileLoader.php b/lib/symfony/routing/Loader/AnnotationFileLoader.php
index 296f312d68..60487bb278 100644
--- a/lib/symfony/routing/Loader/AnnotationFileLoader.php
+++ b/lib/symfony/routing/Loader/AnnotationFileLoader.php
@@ -19,7 +19,7 @@ if (false) {
/**
* @deprecated since Symfony 6.4, to be removed in 7.0, use {@link AttributeFileLoader} instead
*/
- class AnnotationFileLoader
+ class AnnotationFileLoader extends AttributeFileLoader
{
}
}
diff --git a/lib/symfony/routing/Loader/AttributeClassLoader.php b/lib/symfony/routing/Loader/AttributeClassLoader.php
index cd12b87155..679b0c8455 100644
--- a/lib/symfony/routing/Loader/AttributeClassLoader.php
+++ b/lib/symfony/routing/Loader/AttributeClassLoader.php
@@ -144,7 +144,9 @@ abstract class AttributeClassLoader implements LoaderInterface
if (1 === $collection->count() - \count($routeNamesBefore)) {
$newRouteName = current(array_diff(array_keys($collection->all()), $routeNamesBefore));
- $collection->addAlias(sprintf('%s::%s', $class->name, $method->name), $newRouteName);
+ if ($newRouteName !== $aliasName = sprintf('%s::%s', $class->name, $method->name)) {
+ $collection->addAlias($aliasName, $newRouteName);
+ }
}
}
if (0 === $collection->count() && $class->hasMethod('__invoke')) {
@@ -155,8 +157,14 @@ abstract class AttributeClassLoader implements LoaderInterface
}
}
if ($fqcnAlias && 1 === $collection->count()) {
- $collection->addAlias($class->name, $invokeRouteName = key($collection->all()));
- $collection->addAlias(sprintf('%s::__invoke', $class->name), $invokeRouteName);
+ $invokeRouteName = key($collection->all());
+ if ($invokeRouteName !== $class->name) {
+ $collection->addAlias($class->name, $invokeRouteName);
+ }
+
+ if ($invokeRouteName !== $aliasName = sprintf('%s::__invoke', $class->name)) {
+ $collection->addAlias($aliasName, $invokeRouteName);
+ }
}
if ($this->hasDeprecatedAnnotations) {
diff --git a/lib/symfony/routing/RouteCollection.php b/lib/symfony/routing/RouteCollection.php
index 0175e3abfe..0a04387ce3 100644
--- a/lib/symfony/routing/RouteCollection.php
+++ b/lib/symfony/routing/RouteCollection.php
@@ -147,9 +147,24 @@ class RouteCollection implements \IteratorAggregate, \Countable
*/
public function remove(string|array $name)
{
+ $routes = [];
foreach ((array) $name as $n) {
+ if (isset($this->routes[$n])) {
+ $routes[] = $n;
+ }
+
unset($this->routes[$n], $this->priorities[$n], $this->aliases[$n]);
}
+
+ if (!$routes) {
+ return;
+ }
+
+ foreach ($this->aliases as $k => $alias) {
+ if (\in_array($alias->getId(), $routes, true)) {
+ unset($this->aliases[$k]);
+ }
+ }
}
/**
diff --git a/lib/symfony/service-contracts/.gitignore b/lib/symfony/service-contracts/.gitignore
deleted file mode 100644
index c49a5d8df5..0000000000
--- a/lib/symfony/service-contracts/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/lib/symfony/service-contracts/Attribute/SubscribedService.php b/lib/symfony/service-contracts/Attribute/SubscribedService.php
index 10d1bc38e8..d98e1dfdbb 100644
--- a/lib/symfony/service-contracts/Attribute/SubscribedService.php
+++ b/lib/symfony/service-contracts/Attribute/SubscribedService.php
@@ -11,9 +11,14 @@
namespace Symfony\Contracts\Service\Attribute;
+use Symfony\Contracts\Service\ServiceSubscriberInterface;
use Symfony\Contracts\Service\ServiceSubscriberTrait;
/**
+ * For use as the return value for {@see ServiceSubscriberInterface}.
+ *
+ * @example new SubscribedService('http_client', HttpClientInterface::class, false, new Target('githubApi'))
+ *
* Use with {@see ServiceSubscriberTrait} to mark a method's return type
* as a subscribed service.
*
@@ -22,12 +27,21 @@ use Symfony\Contracts\Service\ServiceSubscriberTrait;
#[\Attribute(\Attribute::TARGET_METHOD)]
final class SubscribedService
{
+ /** @var object[] */
+ public array $attributes;
+
/**
- * @param string|null $key The key to use for the service
- * If null, use "ClassName::methodName"
+ * @param string|null $key The key to use for the service
+ * @param class-string|null $type The service class
+ * @param bool $nullable Whether the service is optional
+ * @param object|object[] $attributes One or more dependency injection attributes to use
*/
public function __construct(
- public ?string $key = null
+ public ?string $key = null,
+ public ?string $type = null,
+ public bool $nullable = false,
+ array|object $attributes = [],
) {
+ $this->attributes = \is_array($attributes) ? $attributes : [$attributes];
}
}
diff --git a/lib/symfony/service-contracts/LICENSE b/lib/symfony/service-contracts/LICENSE
index 74cdc2dbf6..7536caeae8 100644
--- a/lib/symfony/service-contracts/LICENSE
+++ b/lib/symfony/service-contracts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2022 Fabien Potencier
+Copyright (c) 2018-present Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/lib/symfony/service-contracts/README.md b/lib/symfony/service-contracts/README.md
index 41e054a101..42841a57d0 100644
--- a/lib/symfony/service-contracts/README.md
+++ b/lib/symfony/service-contracts/README.md
@@ -3,7 +3,7 @@ Symfony Service Contracts
A set of abstractions extracted out of the Symfony components.
-Can be used to build on semantics that the Symfony components proved useful - and
+Can be used to build on semantics that the Symfony components proved useful and
that already have battle tested implementations.
See https://github.com/symfony/contracts/blob/main/README.md for more information.
diff --git a/lib/symfony/service-contracts/ResetInterface.php b/lib/symfony/service-contracts/ResetInterface.php
index 1af1075eee..a4f389b01f 100644
--- a/lib/symfony/service-contracts/ResetInterface.php
+++ b/lib/symfony/service-contracts/ResetInterface.php
@@ -26,5 +26,8 @@ namespace Symfony\Contracts\Service;
*/
interface ResetInterface
{
+ /**
+ * @return void
+ */
public function reset();
}
diff --git a/lib/symfony/service-contracts/ServiceLocatorTrait.php b/lib/symfony/service-contracts/ServiceLocatorTrait.php
index 74dfa4362e..b62ec3e531 100644
--- a/lib/symfony/service-contracts/ServiceLocatorTrait.php
+++ b/lib/symfony/service-contracts/ServiceLocatorTrait.php
@@ -26,34 +26,24 @@ class_exists(NotFoundExceptionInterface::class);
*/
trait ServiceLocatorTrait
{
- private $factories;
- private $loading = [];
- private $providedTypes;
+ private array $factories;
+ private array $loading = [];
+ private array $providedTypes;
/**
- * @param callable[] $factories
+ * @param array $factories
*/
public function __construct(array $factories)
{
$this->factories = $factories;
}
- /**
- * {@inheritdoc}
- *
- * @return bool
- */
- public function has(string $id)
+ public function has(string $id): bool
{
return isset($this->factories[$id]);
}
- /**
- * {@inheritdoc}
- *
- * @return mixed
- */
- public function get(string $id)
+ public function get(string $id): mixed
{
if (!isset($this->factories[$id])) {
throw $this->createNotFoundException($id);
@@ -75,12 +65,9 @@ trait ServiceLocatorTrait
}
}
- /**
- * {@inheritdoc}
- */
public function getProvidedServices(): array
{
- if (null === $this->providedTypes) {
+ if (!isset($this->providedTypes)) {
$this->providedTypes = [];
foreach ($this->factories as $name => $factory) {
diff --git a/lib/symfony/service-contracts/ServiceProviderInterface.php b/lib/symfony/service-contracts/ServiceProviderInterface.php
index c60ad0bd4b..2e71f00c67 100644
--- a/lib/symfony/service-contracts/ServiceProviderInterface.php
+++ b/lib/symfony/service-contracts/ServiceProviderInterface.php
@@ -18,9 +18,18 @@ use Psr\Container\ContainerInterface;
*
* @author Nicolas Grekas
* @author Mateusz Sip
+ *
+ * @template-covariant T of mixed
*/
interface ServiceProviderInterface extends ContainerInterface
{
+ /**
+ * @return T
+ */
+ public function get(string $id): mixed;
+
+ public function has(string $id): bool;
+
/**
* Returns an associative array of service types keyed by the identifiers provided by the current container.
*
@@ -30,7 +39,7 @@ interface ServiceProviderInterface extends ContainerInterface
* * ['foo' => '?'] means the container provides service name "foo" of unspecified type
* * ['bar' => '?Bar\Baz'] means the container provides a service "bar" of type Bar\Baz|null
*
- * @return string[] The provided service types, keyed by service names
+ * @return array The provided service types, keyed by service names
*/
public function getProvidedServices(): array;
}
diff --git a/lib/symfony/service-contracts/ServiceSubscriberInterface.php b/lib/symfony/service-contracts/ServiceSubscriberInterface.php
index 098ab908cd..3da19169b0 100644
--- a/lib/symfony/service-contracts/ServiceSubscriberInterface.php
+++ b/lib/symfony/service-contracts/ServiceSubscriberInterface.php
@@ -11,6 +11,8 @@
namespace Symfony\Contracts\Service;
+use Symfony\Contracts\Service\Attribute\SubscribedService;
+
/**
* A ServiceSubscriber exposes its dependencies via the static {@link getSubscribedServices} method.
*
@@ -29,7 +31,8 @@ namespace Symfony\Contracts\Service;
interface ServiceSubscriberInterface
{
/**
- * Returns an array of service types required by such instances, optionally keyed by the service names used internally.
+ * Returns an array of service types (or {@see SubscribedService} objects) required
+ * by such instances, optionally keyed by the service names used internally.
*
* For mandatory dependencies:
*
@@ -47,7 +50,13 @@ interface ServiceSubscriberInterface
* * ['?Psr\Log\LoggerInterface'] is a shortcut for
* * ['Psr\Log\LoggerInterface' => '?Psr\Log\LoggerInterface']
*
- * @return string[] The required service types, optionally keyed by service names
+ * additionally, an array of {@see SubscribedService}'s can be returned:
+ *
+ * * [new SubscribedService('logger', Psr\Log\LoggerInterface::class)]
+ * * [new SubscribedService(type: Psr\Log\LoggerInterface::class, nullable: true)]
+ * * [new SubscribedService('http_client', HttpClientInterface::class, attributes: new Target('githubApi'))]
+ *
+ * @return string[]|SubscribedService[] The required service types, optionally keyed by service names
*/
- public static function getSubscribedServices();
+ public static function getSubscribedServices(): array;
}
diff --git a/lib/symfony/service-contracts/ServiceSubscriberTrait.php b/lib/symfony/service-contracts/ServiceSubscriberTrait.php
index 16e3eb2c19..f3b450cd6c 100644
--- a/lib/symfony/service-contracts/ServiceSubscriberTrait.php
+++ b/lib/symfony/service-contracts/ServiceSubscriberTrait.php
@@ -12,6 +12,7 @@
namespace Symfony\Contracts\Service;
use Psr\Container\ContainerInterface;
+use Symfony\Contracts\Service\Attribute\Required;
use Symfony\Contracts\Service\Attribute\SubscribedService;
/**
@@ -25,85 +26,53 @@ trait ServiceSubscriberTrait
/** @var ContainerInterface */
protected $container;
- /**
- * {@inheritdoc}
- */
public static function getSubscribedServices(): array
{
$services = method_exists(get_parent_class(self::class) ?: '', __FUNCTION__) ? parent::getSubscribedServices() : [];
- $attributeOptIn = false;
- if (\PHP_VERSION_ID >= 80000) {
- foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
- if (self::class !== $method->getDeclaringClass()->name) {
- continue;
- }
-
- if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) {
- continue;
- }
-
- if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
- throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name));
- }
-
- if (!$returnType = $method->getReturnType()) {
- throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class));
- }
-
- $serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType;
-
- if ($returnType->allowsNull()) {
- $serviceId = '?'.$serviceId;
- }
-
- $services[$attribute->newInstance()->key ?? self::class.'::'.$method->name] = $serviceId;
- $attributeOptIn = true;
+ foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
+ if (self::class !== $method->getDeclaringClass()->name) {
+ continue;
}
- }
- if (!$attributeOptIn) {
- foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
- if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
- continue;
- }
+ if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) {
+ continue;
+ }
- if (self::class !== $method->getDeclaringClass()->name) {
- continue;
- }
+ if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
+ throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name));
+ }
- if (!($returnType = $method->getReturnType()) instanceof \ReflectionNamedType) {
- continue;
- }
+ if (!$returnType = $method->getReturnType()) {
+ throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class));
+ }
- if ($returnType->isBuiltin()) {
- continue;
- }
+ /* @var SubscribedService $attribute */
+ $attribute = $attribute->newInstance();
+ $attribute->key ??= self::class.'::'.$method->name;
+ $attribute->type ??= $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType;
+ $attribute->nullable = $returnType->allowsNull();
- if (\PHP_VERSION_ID >= 80000) {
- trigger_deprecation('symfony/service-contracts', '2.5', 'Using "%s" in "%s" without using the "%s" attribute on any method is deprecated.', ServiceSubscriberTrait::class, self::class, SubscribedService::class);
- }
-
- $services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType);
+ if ($attribute->attributes) {
+ $services[] = $attribute;
+ } else {
+ $services[$attribute->key] = ($attribute->nullable ? '?' : '').$attribute->type;
}
}
return $services;
}
- /**
- * @required
- *
- * @return ContainerInterface|null
- */
- public function setContainer(ContainerInterface $container)
+ #[Required]
+ public function setContainer(ContainerInterface $container): ?ContainerInterface
{
- $this->container = $container;
-
+ $ret = null;
if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) {
- return parent::setContainer($container);
+ $ret = parent::setContainer($container);
}
- return null;
+ $this->container = $container;
+
+ return $ret;
}
}
diff --git a/lib/symfony/service-contracts/composer.json b/lib/symfony/service-contracts/composer.json
index f058637010..32bb8a316b 100644
--- a/lib/symfony/service-contracts/composer.json
+++ b/lib/symfony/service-contracts/composer.json
@@ -16,23 +16,22 @@
}
],
"require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1",
- "symfony/deprecation-contracts": "^2.1|^3"
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0"
},
"conflict": {
"ext-psr": "<1.1|>=2"
},
- "suggest": {
- "symfony/service-implementation": ""
- },
"autoload": {
- "psr-4": { "Symfony\\Contracts\\Service\\": "" }
+ "psr-4": { "Symfony\\Contracts\\Service\\": "" },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
},
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
diff --git a/lib/symfony/var-dumper/Dumper/HtmlDumper.php b/lib/symfony/var-dumper/Dumper/HtmlDumper.php
index f93b220eff..f276bfdd28 100644
--- a/lib/symfony/var-dumper/Dumper/HtmlDumper.php
+++ b/lib/symfony/var-dumper/Dumper/HtmlDumper.php
@@ -664,7 +664,7 @@ pre.sf-dump:after {
clear: both;
}
pre.sf-dump span {
- display: inline;
+ display: inline-flex;
}
pre.sf-dump a {
text-decoration: none;
diff --git a/lib/symfony/var-exporter/LazyGhostTrait.php b/lib/symfony/var-exporter/LazyGhostTrait.php
index a25fc21a85..26f7bc2cd4 100644
--- a/lib/symfony/var-exporter/LazyGhostTrait.php
+++ b/lib/symfony/var-exporter/LazyGhostTrait.php
@@ -166,8 +166,9 @@ trait LazyGhostTrait
if ($state && (null === $scope || isset($propertyScopes["\0$scope\0$name"]))) {
if (LazyObjectState::STATUS_INITIALIZED_FULL === $state->status) {
// Work around php/php-src#12695
- $property = $propertyScopes[null === $scope ? $name : "\0$scope\0$name"][3]
- ?? (Hydrator::$propertyScopes[$this::class] = Hydrator::getPropertyScopes($this::class))[3];
+ $property = null === $scope ? $name : "\0$scope\0$name";
+ $property = $propertyScopes[$property][3]
+ ?? Hydrator::$propertyScopes[$this::class][$property][3] = new \ReflectionProperty($scope ?? $class, $name);
} else {
$property = null;
}
diff --git a/lib/symfony/var-exporter/README.md b/lib/symfony/var-exporter/README.md
index 9f6e2550bf..719527052e 100644
--- a/lib/symfony/var-exporter/README.md
+++ b/lib/symfony/var-exporter/README.md
@@ -7,10 +7,10 @@ of objects:
- `VarExporter::export()` allows exporting any serializable PHP data structure to
plain PHP code. While doing so, it preserves all the semantics associated with
the serialization mechanism of PHP (`__wakeup`, `__sleep`, `Serializable`,
- `__serialize`, `__unserialize`.)
+ `__serialize`, `__unserialize`);
- `Instantiator::instantiate()` creates an object and sets its properties without
- calling its constructor nor any other methods.
-- `Hydrator::hydrate()` can set the properties of an existing object.
+ calling its constructor nor any other methods;
+- `Hydrator::hydrate()` can set the properties of an existing object;
- `Lazy*Trait` can make a class behave as a lazy-loading ghost or virtual proxy.
VarExporter::export()
@@ -26,7 +26,7 @@ Unlike `var_export()`, this works on any serializable PHP value.
It also provides a few improvements over `var_export()`/`serialize()`:
* the output is PSR-2 compatible;
- * the output can be re-indented without messing up with `\r` or `\n` in the data
+ * the output can be re-indented without messing up with `\r` or `\n` in the data;
* missing classes throw a `ClassNotFoundException` instead of being unserialized
to `PHP_Incomplete_Class` objects;
* references involving `SplObjectStorage`, `ArrayObject` or `ArrayIterator`
@@ -61,7 +61,7 @@ Hydrator::hydrate($object, [], [
------------
The component provides two lazy-loading patterns: ghost objects and virtual
-proxies (see https://martinfowler.com/eaaCatalog/lazyLoad.html for reference.)
+proxies (see https://martinfowler.com/eaaCatalog/lazyLoad.html for reference).
Ghost objects work only with concrete and non-internal classes. In the generic
case, they are not compatible with using factories in their initializer.
diff --git a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/base_js.html.twig b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/base_js.html.twig
index e501ebe58b..8a669a5c6c 100644
--- a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/base_js.html.twig
+++ b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/base_js.html.twig
@@ -13,6 +13,7 @@
constructor() {
this.#createTabs();
this.#createToggles();
+ this.#createCopyToClipboard();
this.#convertDateTimesToUserTimezone();
}
@@ -161,18 +162,39 @@
});
});
- /* Prevents from disallowing clicks on "copy to clipboard" elements inside toggles */
- const copyToClipboardElements = toggle.querySelectorAll('span[data-clipboard-text]');
- copyToClipboardElements.forEach((copyToClipboardElement) => {
- copyToClipboardElement.addEventListener('click', (e) => {
- e.stopPropagation();
- });
- });
-
toggle.setAttribute('data-processed', 'true');
});
}
+ #createCopyToClipboard() {
+ if (!navigator.clipboard) {
+ return;
+ }
+
+ const copyToClipboardElements = document.querySelectorAll('[data-clipboard-text]');
+
+ copyToClipboardElements.forEach((copyToClipboardElement) => {
+ copyToClipboardElement.classList.remove('hidden');
+
+ copyToClipboardElement.addEventListener('click', (e) => {
+ /* Prevents from disallowing clicks on "copy to clipboard" elements inside toggles */
+ e.stopPropagation();
+
+ navigator.clipboard.writeText(copyToClipboardElement.getAttribute('data-clipboard-text'));
+
+ let oldContent = copyToClipboardElement.textContent;
+
+ copyToClipboardElement.textContent = `✅ Copied!`;
+ copyToClipboardElement.disabled = true;
+
+ setTimeout(() => {
+ copyToClipboardElement.textContent = oldContent;
+ copyToClipboardElement.disabled = false;
+ }, 7000);
+ });
+ });
+ }
+
#convertDateTimesToUserTimezone() {
const userTimezoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;
diff --git a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar.css.twig b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar.css.twig
index 4bb9cb8d1e..b61fa5e9f1 100644
--- a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar.css.twig
+++ b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar.css.twig
@@ -47,6 +47,8 @@
}
.sf-minitoolbar {
+ --sf-toolbar-gray-800: #262626;
+
background-color: var(--sf-toolbar-gray-800);
border-top-left-radius: 4px;
bottom: 0;
@@ -66,6 +68,8 @@
}
.sf-minitoolbar svg,
.sf-minitoolbar img {
+ --sf-toolbar-gray-200: #e5e5e5;
+
color: var(--sf-toolbar-gray-200);
max-height: 24px;
max-width: 24px;
diff --git a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_js.html.twig b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_js.html.twig
index 9d06ed835a..47d004295f 100644
--- a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_js.html.twig
+++ b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_js.html.twig
@@ -50,33 +50,6 @@
};
}
- if (navigator.clipboard) {
- document.addEventListener('readystatechange', () => {
- if (document.readyState !== 'complete') {
- return;
- }
-
- document.querySelectorAll('[data-clipboard-text]').forEach(function (element) {
- removeClass(element, 'hidden');
- element.addEventListener('click', function () {
- navigator.clipboard.writeText(element.getAttribute('data-clipboard-text'));
-
- if (element.classList.contains("label")) {
- let oldContent = element.textContent;
-
- element.textContent = "✅ Copied!";
- element.classList.add("status-success");
-
- setTimeout(() => {
- element.textContent = oldContent;
- element.classList.remove("status-success");
- }, 7000);
- }
- });
- });
- });
- }
-
var request = function(url, onSuccess, onError, payload, options, tries) {
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
options = options || {};
@@ -577,7 +550,9 @@
/* Evaluate in global scope scripts embedded inside the toolbar */
var i, scripts = [].slice.call(el.querySelectorAll('script'));
for (i = 0; i < scripts.length; ++i) {
- eval.call({}, scripts[i].firstChild.nodeValue);
+ if (scripts[i].firstChild) {
+ eval.call({}, scripts[i].firstChild.nodeValue);
+ }
}
el.style.display = -1 !== xhr.responseText.indexOf('sf-toolbarreset') ? 'block' : 'none';
@@ -648,7 +623,7 @@
sfwdt.innerHTML = '\
\
';
sfwdt.setAttribute('class', 'sf-toolbar sf-error-toolbar');
diff --git a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_redirect.html.twig b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_redirect.html.twig
index 7963815a6f..f294942267 100644
--- a/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_redirect.html.twig
+++ b/lib/symfony/web-profiler-bundle/Resources/views/Profiler/toolbar_redirect.html.twig
@@ -39,10 +39,10 @@
Redirection Intercepted
- {% set absolute_url = host in location ? location : host ~ location %}
+ {% set absolute_url = absolute_url(location) %}
This request redirects to {{ absolute_url }}
-
+
The redirect was intercepted by the Symfony Web Debug toolbar to help debugging.
diff --git a/lib/symfony/web-profiler-bundle/Twig/WebProfilerExtension.php b/lib/symfony/web-profiler-bundle/Twig/WebProfilerExtension.php
index 60470b080a..6df2a24727 100644
--- a/lib/symfony/web-profiler-bundle/Twig/WebProfilerExtension.php
+++ b/lib/symfony/web-profiler-bundle/Twig/WebProfilerExtension.php
@@ -14,6 +14,7 @@ namespace Symfony\Bundle\WebProfilerBundle\Twig;
use Symfony\Component\VarDumper\Cloner\Data;
use Symfony\Component\VarDumper\Dumper\HtmlDumper;
use Twig\Environment;
+use Twig\Extension\EscaperExtension;
use Twig\Extension\ProfilerExtension;
use Twig\Profiler\Profile;
use Twig\TwigFunction;
@@ -78,12 +79,12 @@ class WebProfilerExtension extends ProfilerExtension
public function dumpLog(Environment $env, string $message, Data $context = null): string
{
- $message = twig_escape_filter($env, $message);
+ $message = self::escape($env, $message);
$message = preg_replace('/"(.*?)"/', '"$1"', $message);
$replacements = [];
foreach ($context ?? [] as $k => $v) {
- $k = '{'.twig_escape_filter($env, $k).'}';
+ $k = '{'.self::escape($env, $k).'}';
if (str_contains($message, $k)) {
$replacements[$k] = $v;
}
@@ -104,4 +105,14 @@ class WebProfilerExtension extends ProfilerExtension
{
return 'profiler';
}
+
+ private static function escape(Environment $env, string $s): string
+ {
+ if (method_exists(EscaperExtension::class, 'escape')) {
+ return EscaperExtension::escape($env, $s);
+ }
+
+ // to be removed when support for Twig 3 is dropped
+ return twig_escape_filter($env, $s);
+ }
}
diff --git a/lib/thenetworg/oauth2-azure/.devcontainer/Dockerfile b/lib/thenetworg/oauth2-azure/.devcontainer/Dockerfile
deleted file mode 100644
index 35ab8f9c43..0000000000
--- a/lib/thenetworg/oauth2-azure/.devcontainer/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.134.0/containers/php/.devcontainer/base.Dockerfile
-ARG VARIANT="7"
-FROM mcr.microsoft.com/vscode/devcontainers/php:0-${VARIANT}
-
-# [Optional] Install a version of Node.js using nvm for front end dev
-ARG INSTALL_NODE="true"
-ARG NODE_VERSION="lts/*"
-RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
-
-# [Optional] Uncomment this section to install additional OS packages.
-# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
-# && apt-get -y install --no-install-recommends
-
-# [Optional] Uncomment this line to install global node packages.
-# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1
\ No newline at end of file
diff --git a/lib/thenetworg/oauth2-azure/.devcontainer/devcontainer.json b/lib/thenetworg/oauth2-azure/.devcontainer/devcontainer.json
deleted file mode 100644
index 676de3dcb8..0000000000
--- a/lib/thenetworg/oauth2-azure/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
-// https://github.com/microsoft/vscode-dev-containers/tree/v0.134.0/containers/php
-{
- "name": "PHP",
- "build": {
- "dockerfile": "Dockerfile",
- "args": {
- // Update VARIANT to pick a PHP version: 7, 7.4, 7.3
- "VARIANT": "7",
- "INSTALL_NODE": "false",
- "NODE_VERSION": "lts/*"
- }
- },
- // Set *default* container specific settings.json values on container create.
- "settings": {
- "terminal.integrated.shell.linux": "/bin/bash"
- },
- // Add the IDs of extensions you want installed when the container is created.
- "extensions": [
- "felixfbecker.php-debug",
- "felixfbecker.php-intellisense"
- ],
- // Use 'forwardPorts' to make a list of ports inside the container available locally.
- // "forwardPorts": [],
- // Use 'postCreateCommand' to run commands after the container is created.
- // "postCreateCommand": "php -v",
- // Comment out to connect as root instead.
- "remoteUser": "vscode"
-}
\ No newline at end of file
diff --git a/lib/thenetworg/oauth2-azure/.gitignore b/lib/thenetworg/oauth2-azure/.gitignore
deleted file mode 100644
index 57a23bd064..0000000000
--- a/lib/thenetworg/oauth2-azure/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/build
-/vendor
-composer.phar
-composer.lock
-.DS_Store
-
-# IDE
-/.idea
-/.vscode
diff --git a/lib/thenetworg/oauth2-azure/.php_cs b/lib/thenetworg/oauth2-azure/.php_cs
deleted file mode 100644
index 47be3dfc00..0000000000
--- a/lib/thenetworg/oauth2-azure/.php_cs
+++ /dev/null
@@ -1,70 +0,0 @@
-in(__DIR__ . '/src');
-
-return PhpCsFixer\Config::create()
- ->setRiskyAllowed(true)
- ->setUsingCache(false)
- ->setRules([
- '@PSR2' => true,
- 'align_multiline_comment' => true,
- 'array_indentation' => true,
- 'array_syntax' => ['syntax' => 'short'],
- 'binary_operator_spaces' => ['default' => 'align_single_space_minimal'],
- 'blank_line_after_opening_tag' => true,
- 'class_attributes_separation' => true,
- 'combine_consecutive_issets' => true,
- 'general_phpdoc_annotation_remove' => ['annotations' => ['author', 'package', 'subpackage']],
- 'declare_equal_normalize' => ['space' => 'single'],
- 'dir_constant' => true,
- 'fully_qualified_strict_types' => true,
- 'function_typehint_space' => true,
- 'heredoc_to_nowdoc' => true,
- 'include' => true,
- 'is_null' => ['use_yoda_style' => true],
- 'linebreak_after_opening_tag' => true,
- 'lowercase_cast' => true,
- 'modernize_types_casting' => true,
- 'new_with_braces' => true,
- 'no_alias_functions' => true,
- 'no_alternative_syntax' => true,
- 'no_blank_lines_after_phpdoc' => true,
- 'no_empty_comment' => true,
- 'no_empty_phpdoc' => true,
- 'no_empty_statement' => true,
- 'no_leading_import_slash' => true,
- 'no_leading_namespace_whitespace' => true,
- 'no_mixed_echo_print' => ['use' => 'echo'],
- 'no_multiline_whitespace_before_semicolons' => true,
- 'no_null_property_initialization' => true,
- 'no_php4_constructor' => true,
- 'no_short_echo_tag' => false,
- 'no_unreachable_default_argument_value' => true,
- 'no_useless_else' => true,
- 'no_useless_return' => true,
- 'ordered_class_elements' => true,
- 'ordered_imports' => true,
- 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false],
- 'phpdoc_order' => true,
- 'phpdoc_return_self_reference' => true,
- 'phpdoc_scalar' => true,
- 'phpdoc_single_line_var_spacing' => true,
- 'phpdoc_to_comment' => true,
- 'phpdoc_trim' => true,
- 'phpdoc_types' => true,
- 'phpdoc_types_order' => ['null_adjustment' => 'always_last'],
- 'phpdoc_var_without_name' => true,
- 'short_scalar_cast' => true,
- 'simplified_null_return' => true,
- 'single_blank_line_before_namespace' => true,
- 'single_line_comment_style' => true,
- 'single_quote' => ['strings_containing_single_quote_chars' => true],
- 'standardize_increment' => true,
- 'standardize_not_equals' => true,
- 'trailing_comma_in_multiline_array' => true,
- 'trim_array_spaces' => true,
- 'whitespace_after_comma_in_array' => true,
- 'yoda_style' => true,
- ])
- ->setFinder($finder);
diff --git a/lib/thenetworg/oauth2-azure/.vscode/launch.json b/lib/thenetworg/oauth2-azure/.vscode/launch.json
deleted file mode 100644
index c69965a9e8..0000000000
--- a/lib/thenetworg/oauth2-azure/.vscode/launch.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Launch application",
- "type": "php",
- "request": "launch",
- "program": "${workspaceFolder}/index.php",
- "cwd": "${workspaceFolder}",
- "port": 9000
- },
- {
- "name": "Listen for XDebug",
- "type": "php",
- "request": "launch",
- "port": 9000
- },
- {
- "name": "Launch currently open script",
- "type": "php",
- "request": "launch",
- "program": "${file}",
- "cwd": "${fileDirname}",
- "port": 9000
- }
- ]
-}
\ No newline at end of file
diff --git a/lib/thenetworg/oauth2-azure/CHANGELOG.md b/lib/thenetworg/oauth2-azure/CHANGELOG.md
index 689c666852..ac3e4283f0 100644
--- a/lib/thenetworg/oauth2-azure/CHANGELOG.md
+++ b/lib/thenetworg/oauth2-azure/CHANGELOG.md
@@ -1,5 +1,5 @@
# Changelog
-All Notable changes to `oauth2-azure` will be documented in this file
+This file is not actively maintained. All Notable changes to `oauth2-azure` are documented at https://github.com/TheNetworg/oauth2-azure/releases
## v1.0.0 - 16NOV2015
-- Initial release
\ No newline at end of file
+- Initial release
diff --git a/lib/thenetworg/oauth2-azure/README.md b/lib/thenetworg/oauth2-azure/README.md
index ee6f06d3fa..ef1546ac23 100644
--- a/lib/thenetworg/oauth2-azure/README.md
+++ b/lib/thenetworg/oauth2-azure/README.md
@@ -45,6 +45,10 @@ $provider = new TheNetworg\OAuth2\Client\Provider\Azure([
'clientId' => '{azure-client-id}',
'clientSecret' => '{azure-client-secret}',
'redirectUri' => 'https://example.com/callback-url',
+ //Optional using key pair instead of secret
+ 'clientCertificatePrivateKey' => '{azure-client-certificate-private-key}',
+ //Optional using key pair instead of secret
+ 'clientCertificateThumbprint' => '{azure-client-certificate-thumbprint}',
//Optional
'scopes' => ['openid'],
//Optional
@@ -128,6 +132,19 @@ $authUrl = $provider->getAuthorizationUrl([
```
You can find additional parameters [here](https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx).
+#### Using a certificate key pair instead of the shared secret
+
+- Generate a key pair, e.g. with:
+```bash
+openssl genrsa -out private.key 2048
+openssl req -new -x509 -key private.key -out publickey.cer -days 365
+```
+- Upload the `publickey.cer` to your app in the Azure portal
+- Note the displayed thumbprint for the certificate (it looks like `B4A94A83092455AC4D3AC827F02B61646EAAC43D`)
+- Put that thumbprint into the `clientCertificateThumbprint` constructor option
+- Put the contents of `private.key` into the `clientCertificatePrivateKey` constructor option
+- You can omit the `clientSecret` constructor option
+
### Logging out
If you need to quickly generate a logout URL for the user, you can do following:
```php
diff --git a/lib/thenetworg/oauth2-azure/composer.json b/lib/thenetworg/oauth2-azure/composer.json
index 4fb3484639..51cdafb5cd 100644
--- a/lib/thenetworg/oauth2-azure/composer.json
+++ b/lib/thenetworg/oauth2-azure/composer.json
@@ -32,5 +32,13 @@
"psr-4": {
"TheNetworg\\OAuth2\\Client\\": "src/"
}
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "TheNetworg\\OAuth2\\Client\\Tests\\": "tests/"
+ }
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.6"
}
}
diff --git a/lib/thenetworg/oauth2-azure/src/Provider/Azure.php b/lib/thenetworg/oauth2-azure/src/Provider/Azure.php
index 50aec8235a..bf9c7539db 100644
--- a/lib/thenetworg/oauth2-azure/src/Provider/Azure.php
+++ b/lib/thenetworg/oauth2-azure/src/Provider/Azure.php
@@ -11,6 +11,7 @@ use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
use League\OAuth2\Client\Provider\ResourceOwnerInterface;
use League\OAuth2\Client\Token\AccessTokenInterface;
use League\OAuth2\Client\Tool\BearerAuthorizationTrait;
+use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use TheNetworg\OAuth2\Client\Grant\JwtBearer;
use TheNetworg\OAuth2\Client\Token\AccessToken;
@@ -44,6 +45,20 @@ class Azure extends AbstractProvider
public $authWithResource = true;
+ public $defaultAlgorithm = null;
+
+ /**
+ * The contents of the private key used for app authentication
+ * @var string
+ */
+ protected $clientCertificatePrivateKey = '';
+
+ /**
+ * The hexadecimal certificate thumbprint as displayed in the azure portal
+ * @var string
+ */
+ protected $clientCertificateThumbprint = '';
+
public function __construct(array $options = [], array $collaborators = [])
{
parent::__construct($options, $collaborators);
@@ -54,6 +69,9 @@ class Azure extends AbstractProvider
in_array($options['defaultEndPointVersion'], self::ENDPOINT_VERSIONS, true)) {
$this->defaultEndPointVersion = $options['defaultEndPointVersion'];
}
+ if (isset($options['defaultAlgorithm'])) {
+ $this->defaultAlgorithm = $options['defaultAlgorithm'];
+ }
$this->grantFactory->setGrant('jwt_bearer', new JwtBearer());
}
@@ -103,6 +121,32 @@ class Azure extends AbstractProvider
return $openIdConfiguration['token_endpoint'];
}
+ protected function getAccessTokenRequest(array $params): RequestInterface
+ {
+ if ($this->clientCertificatePrivateKey && $this->clientCertificateThumbprint) {
+ $header = [
+ 'x5t' => base64_encode(hex2bin($this->clientCertificateThumbprint)),
+ ];
+ $now = time();
+ $payload = [
+ 'aud' => "https://login.microsoftonline.com/{$this->tenant}/oauth2/v2.0/token",
+ 'exp' => $now + 360,
+ 'iat' => $now,
+ 'iss' => $this->clientId,
+ 'jti' => bin2hex(random_bytes(20)),
+ 'nbf' => $now,
+ 'sub' => $this->clientId,
+ ];
+ $jwt = JWT::encode($payload, str_replace('\n', "\n", $this->clientCertificatePrivateKey), 'RS256', null, $header);
+
+ unset($params['client_secret']);
+ $params['client_assertion_type'] = 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer';
+ $params['client_assertion'] = $jwt;
+ }
+
+ return parent::getAccessTokenRequest($params);
+ }
+
/**
* @inheritdoc
*/
@@ -134,7 +178,8 @@ class Azure extends AbstractProvider
*/
public function getResourceOwnerDetailsUrl(\League\OAuth2\Client\Token\AccessToken $token): string
{
- return ''; // shouldn't that return such a URL?
+ $openIdConfiguration = $this->getOpenIdConfiguration($this->tenant, $this->defaultEndPointVersion);
+ return $openIdConfiguration['userinfo_endpoint'];
}
public function getObjects($tenant, $ref, &$accessToken, $headers = [])
@@ -178,8 +223,8 @@ class Azure extends AbstractProvider
$version = $this->defaultEndPointVersion;
} else {
$idTokenClaims = $accessToken->getIdTokenClaims();
- $tenant = array_key_exists('tid', $idTokenClaims) ? $idTokenClaims['tid'] : $this->tenant;
- $version = array_key_exists('ver', $idTokenClaims) ? $idTokenClaims['ver'] : $this->defaultEndPointVersion;
+ $tenant = is_array($idTokenClaims) && array_key_exists('tid', $idTokenClaims) ? $idTokenClaims['tid'] : $this->tenant;
+ $version = is_array($idTokenClaims) && array_key_exists('ver', $idTokenClaims) ? $idTokenClaims['ver'] : $this->defaultEndPointVersion;
}
$openIdConfiguration = $this->getOpenIdConfiguration($tenant, $version);
return 'https://' . $openIdConfiguration['msgraph_host'];
@@ -295,7 +340,7 @@ class Azure extends AbstractProvider
public function validateAccessToken($accessToken)
{
$keys = $this->getJwtVerificationKeys();
- $tokenClaims = (array)JWT::decode($accessToken, $keys, ['RS256']);
+ $tokenClaims = (array)JWT::decode($accessToken, $keys);
$this->validateTokenClaims($tokenClaims);
@@ -376,13 +421,18 @@ class Azure extends AbstractProvider
$keys[$keyinfo['kid']] = new Key($publicKey, 'RS256');
}
} else if (isset($keyinfo['n']) && isset($keyinfo['e'])) {
- $pkey_object = JWK::parseKey($keyinfo);
+ $alg = $this->defaultAlgorithm;
+ if (is_null($alg) && isset($keyinfo['kty'])) {
+ $alg = $keyinfo['kty'];
+ }
+
+ $pkey_object = JWK::parseKey($keyinfo, $alg);
if ($pkey_object === false) {
throw new \RuntimeException('An attempt to read a public key from a ' . $keyinfo['n'] . ' certificate failed.');
}
- $pkey_array = openssl_pkey_get_details($pkey_object);
+ $pkey_array = openssl_pkey_get_details($pkey_object->getKeyMaterial());
if ($pkey_array === false) {
throw new \RuntimeException('An attempt to get a public key as an array from a ' . $keyinfo['n'] . ' certificate failed.');
diff --git a/lib/thenetworg/oauth2-azure/src/Token/AccessToken.php b/lib/thenetworg/oauth2-azure/src/Token/AccessToken.php
index 7de80f9e52..a268c20380 100644
--- a/lib/thenetworg/oauth2-azure/src/Token/AccessToken.php
+++ b/lib/thenetworg/oauth2-azure/src/Token/AccessToken.php
@@ -3,9 +3,8 @@
namespace TheNetworg\OAuth2\Client\Token;
use Firebase\JWT\JWT;
-use InvalidArgumentException;
-use League\OAuth2\Client\Tool\RequestFactory;
use RuntimeException;
+use TheNetworg\OAuth2\Client\Provider\Azure;
class AccessToken extends \League\OAuth2\Client\Token\AccessToken
{
@@ -13,6 +12,9 @@ class AccessToken extends \League\OAuth2\Client\Token\AccessToken
protected $idTokenClaims;
+ /**
+ * @param Azure $provider
+ */
public function __construct(array $options, $provider)
{
parent::__construct($options);
@@ -27,7 +29,7 @@ class AccessToken extends \League\OAuth2\Client\Token\AccessToken
$tks = explode('.', $this->idToken);
// Check if the id_token contains signature
if (3 == count($tks) && !empty($tks[2])) {
- $idTokenClaims = (array)JWT::decode($this->idToken, $keys, ['RS256']);
+ $idTokenClaims = (array)JWT::decode($this->idToken, $keys);
} else {
// The id_token is unsigned (coming from v1.0 endpoint) - https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx
diff --git a/lib/twig/twig/.editorconfig b/lib/twig/twig/.editorconfig
deleted file mode 100644
index 270f1d1b77..0000000000
--- a/lib/twig/twig/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-; top-most EditorConfig file
-root = true
-
-; Unix-style newlines
-[*]
-end_of_line = LF
-
-[*.php]
-indent_style = space
-indent_size = 4
-
-[*.test]
-indent_style = space
-indent_size = 4
-
-[*.rst]
-indent_style = space
-indent_size = 4
diff --git a/lib/twig/twig/.gitattributes b/lib/twig/twig/.gitattributes
deleted file mode 100644
index 06bc367134..0000000000
--- a/lib/twig/twig/.gitattributes
+++ /dev/null
@@ -1,4 +0,0 @@
-/doc/ export-ignore
-/extra/ export-ignore
-/tests/ export-ignore
-/phpunit.xml.dist export-ignore
diff --git a/lib/twig/twig/.github/workflows/ci.yml b/lib/twig/twig/.github/workflows/ci.yml
deleted file mode 100644
index 50f23f9a47..0000000000
--- a/lib/twig/twig/.github/workflows/ci.yml
+++ /dev/null
@@ -1,149 +0,0 @@
-name: "CI"
-
-on:
- pull_request:
- push:
- branches:
- - '3.x'
-
-env:
- SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE: 1
-
-permissions:
- contents: read
-
-jobs:
- tests:
- name: "PHP ${{ matrix.php-version }}"
-
- runs-on: 'ubuntu-latest'
-
- continue-on-error: ${{ matrix.experimental }}
-
- strategy:
- matrix:
- php-version:
- - '7.2.5'
- - '7.3'
- - '7.4'
- - '8.0'
- - '8.1'
- experimental: [false]
-
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v2
-
- - name: "Install PHP with extensions"
- uses: shivammathur/setup-php@v2
- with:
- coverage: "none"
- php-version: ${{ matrix.php-version }}
- ini-values: memory_limit=-1
-
- - name: "Add PHPUnit matcher"
- run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
-
- - run: composer install
-
- - name: "Install PHPUnit"
- run: vendor/bin/simple-phpunit install
-
- - name: "PHPUnit version"
- run: vendor/bin/simple-phpunit --version
-
- - name: "Run tests"
- run: vendor/bin/simple-phpunit
-
- extension-tests:
- needs:
- - 'tests'
-
- name: "${{ matrix.extension }} with PHP ${{ matrix.php-version }}"
-
- runs-on: 'ubuntu-latest'
-
- continue-on-error: true
-
- strategy:
- matrix:
- php-version:
- - '7.2.5'
- - '7.3'
- - '7.4'
- - '8.0'
- - '8.1'
- extension:
- - 'extra/cache-extra'
- - 'extra/cssinliner-extra'
- - 'extra/html-extra'
- - 'extra/inky-extra'
- - 'extra/intl-extra'
- - 'extra/markdown-extra'
- - 'extra/string-extra'
- - 'extra/twig-extra-bundle'
- experimental: [false]
-
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v2
-
- - name: "Install PHP with extensions"
- uses: shivammathur/setup-php@v2
- with:
- coverage: "none"
- php-version: ${{ matrix.php-version }}
- ini-values: memory_limit=-1
-
- - name: "Add PHPUnit matcher"
- run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
-
- - run: composer install
-
- - name: "Install PHPUnit"
- run: vendor/bin/simple-phpunit install
-
- - name: "PHPUnit version"
- run: vendor/bin/simple-phpunit --version
-
- - name: "Composer install"
- working-directory: ${{ matrix.extension}}
- run: composer install
-
- - name: "Run tests"
- working-directory: ${{ matrix.extension}}
- run: ../../vendor/bin/simple-phpunit
-
-#
-# Drupal does not support Twig 3 now!
-#
-# integration-tests:
-# needs:
-# - 'tests'
-#
-# name: "Integration tests with PHP ${{ matrix.php-version }}"
-#
-# runs-on: 'ubuntu-20.04'
-#
-# continue-on-error: true
-#
-# strategy:
-# matrix:
-# php-version:
-# - '7.3'
-#
-# steps:
-# - name: "Checkout code"
-# uses: actions/checkout@v2
-#
-# - name: "Install PHP with extensions"
-# uses: shivammathur/setup-php@2
-# with:
-# coverage: "none"
-# extensions: "gd, pdo_sqlite"
-# php-version: ${{ matrix.php-version }}
-# ini-values: memory_limit=-1
-# tools: composer:v2
-#
-# - run: bash ./tests/drupal_test.sh
-# shell: "bash"
diff --git a/lib/twig/twig/.github/workflows/documentation.yml b/lib/twig/twig/.github/workflows/documentation.yml
deleted file mode 100644
index ee83b58874..0000000000
--- a/lib/twig/twig/.github/workflows/documentation.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-name: "Documentation"
-
-on:
- pull_request:
- push:
- branches:
- - '2.x'
- - '3.x'
-
-permissions:
- contents: read
-
-jobs:
- build:
- name: "Build"
-
- runs-on: ubuntu-latest
-
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v2
-
- - name: "Set-up PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: 8.1
- coverage: none
- tools: "composer:v2"
-
- - name: Get composer cache directory
- id: composercache
- working-directory: doc/_build
- run: echo "::set-output name=dir::$(composer config cache-files-dir)"
-
- - name: Cache dependencies
- uses: actions/cache@v2
- with:
- path: ${{ steps.composercache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
-
- - name: "Install dependencies"
- working-directory: doc/_build
- run: composer install --prefer-dist --no-progress
-
- - name: "Build the docs"
- working-directory: doc/_build
- run: php build.php --disable-cache
-
- doctor-rst:
- name: "DOCtor-RST"
-
- runs-on: ubuntu-latest
-
- steps:
- - name: "Checkout code"
- uses: actions/checkout@v2
-
- - name: "Run DOCtor-RST"
- uses: docker://oskarstark/doctor-rst
- with:
- args: --short
- env:
- DOCS_DIR: 'doc/'
diff --git a/lib/twig/twig/.gitignore b/lib/twig/twig/.gitignore
deleted file mode 100644
index b197246ba8..0000000000
--- a/lib/twig/twig/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/doc/_build/vendor
-/doc/_build/output
-/composer.lock
-/phpunit.xml
-/vendor
-.phpunit.result.cache
diff --git a/lib/twig/twig/.php-cs-fixer.dist.php b/lib/twig/twig/.php-cs-fixer.dist.php
deleted file mode 100644
index b07ac7fcab..0000000000
--- a/lib/twig/twig/.php-cs-fixer.dist.php
+++ /dev/null
@@ -1,20 +0,0 @@
-setRules([
- '@Symfony' => true,
- '@Symfony:risky' => true,
- '@PHPUnit75Migration:risky' => true,
- 'php_unit_dedicate_assert' => ['target' => '5.6'],
- 'array_syntax' => ['syntax' => 'short'],
- 'php_unit_fqcn_annotation' => true,
- 'no_unreachable_default_argument_value' => false,
- 'braces' => ['allow_single_line_closure' => true],
- 'heredoc_to_nowdoc' => false,
- 'ordered_imports' => true,
- 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
- 'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'all'],
- ])
- ->setRiskyAllowed(true)
- ->setFinder((new PhpCsFixer\Finder())->in(__DIR__))
-;
diff --git a/lib/twig/twig/CHANGELOG b/lib/twig/twig/CHANGELOG
index 3793876446..2b8341fd84 100644
--- a/lib/twig/twig/CHANGELOG
+++ b/lib/twig/twig/CHANGELOG
@@ -1,3 +1,48 @@
+# 3.8.0 (2023-11-21)
+
+ * Catch errors thrown during template rendering
+ * Fix IntlExtension::formatDateTime use of date formatter prototype
+ * Fix premature loop exit in Security Policy lookup of allowed methods/properties
+ * Remove NumberFormatter::TYPE_CURRENCY (deprecated in PHP 8.3)
+ * Restore return type annotations
+ * Allow Symfony 7 packages to be installed
+ * Deprecate `twig_test_iterable` function. Use the native `is_iterable` instead.
+
+# 3.7.1 (2023-08-28)
+
+ * Fix some phpdocs
+
+# 3.7.0 (2023-07-26)
+
+ * Add support for the ...spread operator on arrays and hashes
+
+# 3.6.1 (2023-06-08)
+
+ * Suppress some native return type deprecation messages
+
+# 3.6.0 (2023-05-03)
+
+ * Allow psr/container 2.0
+ * Add the new PHP 8.0 IntlDateFormatter::RELATIVE_* constants for date formatting
+ * Make the Lexer initialize itself lazily
+
+# 3.5.1 (2023-02-08)
+
+ * Arrow functions passed to the "reduce" filter now accept the current key as a third argument
+ * Restores the leniency of the matches twig comparison
+ * Fix error messages in sandboxed mode for "has some" and "has every"
+
+# 3.5.0 (2022-12-27)
+
+ * Make Twig\ExpressionParser non-internal
+ * Add "has some" and "has every" operators
+ * Add Compile::reset()
+ * Throw a better runtime error when the "matches" regexp is not valid
+ * Add "twig *_names" intl functions
+ * Fix optimizing closures callbacks
+ * Add a better exception when getting an undefined constant via `constant`
+ * Fix `if` nodes when outside of a block and with an empty body
+
# 3.4.3 (2022-09-28)
* Fix a security issue on filesystem loader (possibility to load a template outside a configured directory)
diff --git a/lib/twig/twig/LICENSE b/lib/twig/twig/LICENSE
index 8711927f6d..fd8234e511 100644
--- a/lib/twig/twig/LICENSE
+++ b/lib/twig/twig/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2022 by the Twig Team.
+Copyright (c) 2009-present by the Twig Team.
All rights reserved.
diff --git a/lib/twig/twig/composer.json b/lib/twig/twig/composer.json
index 33e46405c9..1b1726fe88 100644
--- a/lib/twig/twig/composer.json
+++ b/lib/twig/twig/composer.json
@@ -25,12 +25,13 @@
],
"require": {
"php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.22",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0",
- "psr/container": "^1.0"
+ "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0",
+ "psr/container": "^1.0|^2.0"
},
"autoload": {
"psr-4" : {
@@ -41,10 +42,5 @@
"psr-4" : {
"Twig\\Tests\\" : "tests/"
}
- },
- "extra": {
- "branch-alias": {
- "dev-master": "3.4-dev"
- }
}
}
diff --git a/lib/twig/twig/src/Cache/FilesystemCache.php b/lib/twig/twig/src/Cache/FilesystemCache.php
index e075563aef..4024adbd70 100644
--- a/lib/twig/twig/src/Cache/FilesystemCache.php
+++ b/lib/twig/twig/src/Cache/FilesystemCache.php
@@ -63,7 +63,7 @@ class FilesystemCache implements CacheInterface
if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) {
// Compile cached file into bytecode cache
- if (\function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN)) {
+ if (\function_exists('opcache_invalidate') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN)) {
@opcache_invalidate($key, true);
} elseif (\function_exists('apc_compile_file')) {
apc_compile_file($key);
diff --git a/lib/twig/twig/src/Compiler.php b/lib/twig/twig/src/Compiler.php
index 95e1f183b2..eb652c61a4 100644
--- a/lib/twig/twig/src/Compiler.php
+++ b/lib/twig/twig/src/Compiler.php
@@ -46,7 +46,7 @@ class Compiler
/**
* @return $this
*/
- public function compile(Node $node, int $indentation = 0)
+ public function reset(int $indentation = 0)
{
$this->lastLine = null;
$this->source = '';
@@ -57,6 +57,15 @@ class Compiler
$this->indentation = $indentation;
$this->varNameSalt = 0;
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function compile(Node $node, int $indentation = 0)
+ {
+ $this->reset($indentation);
$node->compile($this);
return $this;
diff --git a/lib/twig/twig/src/Environment.php b/lib/twig/twig/src/Environment.php
index 85aaab916c..d7d51cdb1c 100644
--- a/lib/twig/twig/src/Environment.php
+++ b/lib/twig/twig/src/Environment.php
@@ -25,6 +25,8 @@ use Twig\Extension\OptimizerExtension;
use Twig\Loader\ArrayLoader;
use Twig\Loader\ChainLoader;
use Twig\Loader\LoaderInterface;
+use Twig\Node\Expression\Binary\AbstractBinary;
+use Twig\Node\Expression\Unary\AbstractUnary;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
use Twig\NodeVisitor\NodeVisitorInterface;
@@ -38,11 +40,11 @@ use Twig\TokenParser\TokenParserInterface;
*/
class Environment
{
- public const VERSION = '3.4.3';
- public const VERSION_ID = 30403;
+ public const VERSION = '3.8.0';
+ public const VERSION_ID = 30800;
public const MAJOR_VERSION = 3;
- public const MINOR_VERSION = 4;
- public const RELEASE_VERSION = 3;
+ public const MINOR_VERSION = 8;
+ public const RELEASE_VERSION = 0;
public const EXTRA_VERSION = '';
private $charset;
@@ -53,6 +55,7 @@ class Environment
private $lexer;
private $parser;
private $compiler;
+ /** @var array */
private $globals = [];
private $resolvedGlobals;
private $loadedTemplates;
@@ -342,7 +345,6 @@ class Environment
$this->cache->load($key);
}
- $source = null;
if (!class_exists($cls, false)) {
$source = $this->getLoader()->getSourceContext($name);
$content = $this->compileSource($source);
@@ -775,6 +777,8 @@ class Environment
/**
* @internal
+ *
+ * @return array
*/
public function getGlobals(): array
{
@@ -804,6 +808,8 @@ class Environment
/**
* @internal
+ *
+ * @return array}>
*/
public function getUnaryOperators(): array
{
@@ -812,6 +818,8 @@ class Environment
/**
* @internal
+ *
+ * @return array, associativity: ExpressionParser::OPERATOR_*}>
*/
public function getBinaryOperators(): array
{
diff --git a/lib/twig/twig/src/Error/Error.php b/lib/twig/twig/src/Error/Error.php
index a68be65f20..bca1fa64c5 100644
--- a/lib/twig/twig/src/Error/Error.php
+++ b/lib/twig/twig/src/Error/Error.php
@@ -53,7 +53,7 @@ class Error extends \Exception
* @param int $lineno The template line where the error occurred
* @param Source|null $source The source context where the error occurred
*/
- public function __construct(string $message, int $lineno = -1, Source $source = null, \Exception $previous = null)
+ public function __construct(string $message, int $lineno = -1, Source $source = null, \Throwable $previous = null)
{
parent::__construct('', 0, $previous);
@@ -130,13 +130,13 @@ class Error extends \Exception
}
$dot = false;
- if ('.' === substr($this->message, -1)) {
+ if (str_ends_with($this->message, '.')) {
$this->message = substr($this->message, 0, -1);
$dot = true;
}
$questionMark = false;
- if ('?' === substr($this->message, -1)) {
+ if (str_ends_with($this->message, '?')) {
$this->message = substr($this->message, 0, -1);
$questionMark = true;
}
@@ -172,7 +172,7 @@ class Error extends \Exception
foreach ($backtrace as $trace) {
if (isset($trace['object']) && $trace['object'] instanceof Template) {
$currentClass = \get_class($trace['object']);
- $isEmbedContainer = null === $templateClass ? false : 0 === strpos($templateClass, $currentClass);
+ $isEmbedContainer = null === $templateClass ? false : str_starts_with($templateClass, $currentClass);
if (null === $this->name || ($this->name == $trace['object']->getTemplateName() && !$isEmbedContainer)) {
$template = $trace['object'];
$templateClass = \get_class($trace['object']);
diff --git a/lib/twig/twig/src/Error/SyntaxError.php b/lib/twig/twig/src/Error/SyntaxError.php
index 726b3309e5..77c437c688 100644
--- a/lib/twig/twig/src/Error/SyntaxError.php
+++ b/lib/twig/twig/src/Error/SyntaxError.php
@@ -30,7 +30,7 @@ class SyntaxError extends Error
$alternatives = [];
foreach ($items as $item) {
$lev = levenshtein($name, $item);
- if ($lev <= \strlen($name) / 3 || false !== strpos($item, $name)) {
+ if ($lev <= \strlen($name) / 3 || str_contains($item, $name)) {
$alternatives[$item] = $lev;
}
}
diff --git a/lib/twig/twig/src/ExpressionParser.php b/lib/twig/twig/src/ExpressionParser.php
index 70b6eb05cb..13e0f0876e 100644
--- a/lib/twig/twig/src/ExpressionParser.php
+++ b/lib/twig/twig/src/ExpressionParser.php
@@ -17,6 +17,7 @@ use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\ArrowFunctionExpression;
use Twig\Node\Expression\AssignNameExpression;
+use Twig\Node\Expression\Binary\AbstractBinary;
use Twig\Node\Expression\Binary\ConcatBinary;
use Twig\Node\Expression\BlockReferenceExpression;
use Twig\Node\Expression\ConditionalExpression;
@@ -26,6 +27,7 @@ use Twig\Node\Expression\MethodCallExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Expression\ParentExpression;
use Twig\Node\Expression\TestExpression;
+use Twig\Node\Expression\Unary\AbstractUnary;
use Twig\Node\Expression\Unary\NegUnary;
use Twig\Node\Expression\Unary\NotUnary;
use Twig\Node\Expression\Unary\PosUnary;
@@ -40,8 +42,6 @@ use Twig\Node\Node;
* @see https://en.wikipedia.org/wiki/Operator-precedence_parser
*
* @author Fabien Potencier
- *
- * @internal
*/
class ExpressionParser
{
@@ -50,7 +50,9 @@ class ExpressionParser
private $parser;
private $env;
+ /** @var array}> */
private $unaryOperators;
+ /** @var array, associativity: self::OPERATOR_*}> */
private $binaryOperators;
public function __construct(Parser $parser, Environment $env)
@@ -80,7 +82,7 @@ class ExpressionParser
} elseif (isset($op['callable'])) {
$expr = $op['callable']($this->parser, $expr);
} else {
- $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']);
+ $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence'], true);
$class = $op['class'];
$expr = new $class($expr, $expr1, $token->getLine());
}
@@ -181,11 +183,14 @@ class ExpressionParser
if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) {
$expr2 = $this->parseExpression();
if ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) {
+ // Ternary operator (expr ? expr2 : expr3)
$expr3 = $this->parseExpression();
} else {
+ // Ternary without else (expr ? expr2)
$expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine());
}
} else {
+ // Ternary without then (expr ?: expr3)
$expr2 = $expr;
$expr3 = $this->parseExpression();
}
@@ -332,7 +337,14 @@ class ExpressionParser
}
$first = false;
- $node->addElement($this->parseExpression());
+ if ($stream->test(/* Token::SPREAD_TYPE */ 13)) {
+ $stream->next();
+ $expr = $this->parseExpression();
+ $expr->setAttribute('spread', true);
+ $node->addElement($expr);
+ } else {
+ $node->addElement($this->parseExpression());
+ }
}
$stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']', 'An opened array is not properly closed');
@@ -357,6 +369,14 @@ class ExpressionParser
}
$first = false;
+ if ($stream->test(/* Token::SPREAD_TYPE */ 13)) {
+ $stream->next();
+ $value = $this->parseExpression();
+ $value->setAttribute('spread', true);
+ $node->addElement($value);
+ continue;
+ }
+
// a hash key can be:
//
// * a number -- 12
@@ -489,10 +509,6 @@ class ExpressionParser
}
if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) {
- if (!$arg instanceof ConstantExpression) {
- throw new SyntaxError(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $stream->getSourceContext());
- }
-
$name = $arg->getAttribute('value');
$node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno);
diff --git a/lib/twig/twig/src/Extension/CoreExtension.php b/lib/twig/twig/src/Extension/CoreExtension.php
index b779858598..36aa8f10a7 100644
--- a/lib/twig/twig/src/Extension/CoreExtension.php
+++ b/lib/twig/twig/src/Extension/CoreExtension.php
@@ -23,6 +23,8 @@ use Twig\Node\Expression\Binary\EqualBinary;
use Twig\Node\Expression\Binary\FloorDivBinary;
use Twig\Node\Expression\Binary\GreaterBinary;
use Twig\Node\Expression\Binary\GreaterEqualBinary;
+use Twig\Node\Expression\Binary\HasEveryBinary;
+use Twig\Node\Expression\Binary\HasSomeBinary;
use Twig\Node\Expression\Binary\InBinary;
use Twig\Node\Expression\Binary\LessBinary;
use Twig\Node\Expression\Binary\LessEqualBinary;
@@ -249,7 +251,7 @@ final class CoreExtension extends AbstractExtension
new TwigTest('divisible by', null, ['node_class' => DivisiblebyTest::class, 'one_mandatory_argument' => true]),
new TwigTest('constant', null, ['node_class' => ConstantTest::class]),
new TwigTest('empty', 'twig_test_empty'),
- new TwigTest('iterable', 'twig_test_iterable'),
+ new TwigTest('iterable', 'is_iterable'),
];
}
@@ -284,6 +286,8 @@ final class CoreExtension extends AbstractExtension
'matches' => ['precedence' => 20, 'class' => MatchesBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'starts with' => ['precedence' => 20, 'class' => StartsWithBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'ends with' => ['precedence' => 20, 'class' => EndsWithBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
+ 'has some' => ['precedence' => 20, 'class' => HasSomeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
+ 'has every' => ['precedence' => 20, 'class' => HasEveryBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
@@ -339,9 +343,9 @@ function twig_cycle($values, $position)
* @param \Traversable|array|int|float|string $values The values to pick a random item from
* @param int|null $max Maximum value used when $values is an int
*
- * @throws RuntimeError when $values is an empty array (does not apply to an empty string which is returned as is)
- *
* @return mixed A random value from the given sequence
+ *
+ * @throws RuntimeError when $values is an empty array (does not apply to an empty string which is returned as is)
*/
function twig_random(Environment $env, $values = null, $max = null)
{
@@ -360,7 +364,6 @@ function twig_random(Environment $env, $values = null, $max = null)
}
} else {
$min = $values;
- $max = $max;
}
return mt_rand((int) $min, (int) $max);
@@ -388,7 +391,7 @@ function twig_random(Environment $env, $values = null, $max = null)
}
}
- if (!twig_test_iterable($values)) {
+ if (!is_iterable($values)) {
return $values;
}
@@ -525,7 +528,7 @@ function twig_date_converter(Environment $env, $date = null, $timezone = null)
*/
function twig_replace_filter($str, $from)
{
- if (!twig_test_iterable($from)) {
+ if (!is_iterable($from)) {
throw new RuntimeError(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from)));
}
@@ -605,32 +608,34 @@ function twig_urlencode_filter($url)
}
/**
- * Merges an array with another one.
+ * Merges any number of arrays or Traversable objects.
*
* {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
*
- * {% set items = items|merge({ 'peugeot': 'car' }) %}
+ * {% set items = items|merge({ 'peugeot': 'car' }, { 'banana': 'fruit' }) %}
*
- * {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #}
+ * {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car', 'banana': 'fruit' } #}
*
- * @param array|\Traversable $arr1 An array
- * @param array|\Traversable $arr2 An array
+ * @param array|\Traversable ...$arrays Any number of arrays or Traversable objects to merge
*
* @return array The merged array
*/
-function twig_array_merge($arr1, $arr2)
+function twig_array_merge(...$arrays)
{
- if (!twig_test_iterable($arr1)) {
- throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($arr1)));
+ $result = [];
+
+ foreach ($arrays as $argNumber => $array) {
+ if (!is_iterable($array)) {
+ throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" for argument %d.', \gettype($array), $argNumber + 1));
+ }
+
+ $result = array_merge($result, twig_to_array($array));
}
- if (!twig_test_iterable($arr2)) {
- throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', \gettype($arr2)));
- }
-
- return array_merge(twig_to_array($arr1), twig_to_array($arr2));
+ return $result;
}
+
/**
* Slices a variable.
*
@@ -650,7 +655,7 @@ function twig_slice(Environment $env, $item, $start, $length = null, $preserveKe
if ($start >= 0 && $length >= 0 && $item instanceof \Iterator) {
try {
- return iterator_to_array(new \LimitIterator($item, $start, null === $length ? -1 : $length), $preserveKeys);
+ return iterator_to_array(new \LimitIterator($item, $start, $length ?? -1), $preserveKeys);
} catch (\OutOfBoundsException $e) {
return [];
}
@@ -663,7 +668,7 @@ function twig_slice(Environment $env, $item, $start, $length = null, $preserveKe
return \array_slice($item, $start, $length, $preserveKeys);
}
- return (string) mb_substr((string) $item, $start, $length, $env->getCharset());
+ return mb_substr((string) $item, $start, $length, $env->getCharset());
}
/**
@@ -716,7 +721,7 @@ function twig_last(Environment $env, $item)
*/
function twig_join_filter($value, $glue = '', $and = null)
{
- if (!twig_test_iterable($value)) {
+ if (!is_iterable($value)) {
$value = (array) $value;
}
@@ -762,7 +767,7 @@ function twig_split_filter(Environment $env, $value, $delimiter, $limit = null)
{
$value = $value ?? '';
- if (\strlen($delimiter) > 0) {
+ if ('' !== $delimiter) {
return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit);
}
@@ -920,7 +925,7 @@ function twig_in_filter($value, $compare)
if (\is_string($compare)) {
if (\is_string($value) || \is_int($value) || \is_float($value)) {
- return '' === $value || false !== strpos($compare, (string) $value);
+ return '' === $value || str_contains($compare, (string) $value);
}
return false;
@@ -1015,6 +1020,23 @@ function twig_compare($a, $b)
return $a <=> $b;
}
+/**
+ * @return int
+ *
+ * @throws RuntimeError When an invalid pattern is used
+ */
+function twig_matches(string $regexp, ?string $str)
+{
+ set_error_handler(function ($t, $m) use ($regexp) {
+ throw new RuntimeError(sprintf('Regexp "%s" passed to "matches" is not valid', $regexp).substr($m, 12));
+ });
+ try {
+ return preg_match($regexp, $str ?? '');
+ } finally {
+ restore_error_handler();
+ }
+}
+
/**
* Returns a trimmed string.
*
@@ -1097,7 +1119,7 @@ function twig_length_filter(Environment $env, $thing)
return 0;
}
- if (is_scalar($thing)) {
+ if (\is_scalar($thing)) {
return mb_strlen($thing, $env->getCharset());
}
@@ -1207,7 +1229,7 @@ function twig_call_macro(Template $template, string $method, array $args, int $l
*/
function twig_ensure_traversable($seq)
{
- if ($seq instanceof \Traversable || \is_array($seq)) {
+ if (is_iterable($seq)) {
return $seq;
}
@@ -1270,21 +1292,23 @@ function twig_test_empty($value)
* @param mixed $value A variable
*
* @return bool true if the value is traversable
+ *
+ * @deprecated since Twig 3.8, to be removed in 4.0 (use the native "is_iterable" function instead)
*/
function twig_test_iterable($value)
{
- return $value instanceof \Traversable || \is_array($value);
+ return is_iterable($value);
}
/**
* Renders a template.
*
- * @param array $context
- * @param string|array $template The template to render or an array of templates to try consecutively
- * @param array $variables The variables to pass to the template
- * @param bool $withContext
- * @param bool $ignoreMissing Whether to ignore missing templates or not
- * @param bool $sandboxed Whether to sandbox the template or not
+ * @param array $context
+ * @param string|array|TemplateWrapper $template The template to render or an array of templates to try consecutively
+ * @param array $variables The variables to pass to the template
+ * @param bool $withContext
+ * @param bool $ignoreMissing Whether to ignore missing templates or not
+ * @param bool $sandboxed Whether to sandbox the template or not
*
* @return string The rendered template
*/
@@ -1366,6 +1390,10 @@ function twig_constant($constant, $object = null)
$constant = \get_class($object).'::'.$constant;
}
+ if (!\defined($constant)) {
+ throw new RuntimeError(sprintf('Constant "%s" is undefined.', $constant));
+ }
+
return \constant($constant);
}
@@ -1401,7 +1429,7 @@ function twig_constant_is_defined($constant, $object = null)
*/
function twig_array_batch($items, $size, $fill = null, $preserveKeys = true)
{
- if (!twig_test_iterable($items)) {
+ if (!is_iterable($items)) {
throw new RuntimeError(sprintf('The "batch" filter expects an array or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items)));
}
@@ -1543,13 +1571,13 @@ function twig_get_attribute(Environment $env, Source $source, $object, $item, ar
$classCache[$method] = $method;
$classCache[$lcName = $lcMethods[$i]] = $method;
- if ('g' === $lcName[0] && 0 === strpos($lcName, 'get')) {
+ if ('g' === $lcName[0] && str_starts_with($lcName, 'get')) {
$name = substr($method, 3);
$lcName = substr($lcName, 3);
- } elseif ('i' === $lcName[0] && 0 === strpos($lcName, 'is')) {
+ } elseif ('i' === $lcName[0] && str_starts_with($lcName, 'is')) {
$name = substr($method, 2);
$lcName = substr($lcName, 2);
- } elseif ('h' === $lcName[0] && 0 === strpos($lcName, 'has')) {
+ } elseif ('h' === $lcName[0] && str_starts_with($lcName, 'has')) {
$name = substr($method, 3);
$lcName = substr($lcName, 3);
if (\in_array('is'.$lcName, $lcMethods)) {
@@ -1645,7 +1673,7 @@ function twig_array_column($array, $name, $index = null): array
function twig_array_filter(Environment $env, $array, $arrow)
{
- if (!twig_test_iterable($array)) {
+ if (!is_iterable($array)) {
throw new RuntimeError(sprintf('The "filter" filter expects an array or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array)));
}
@@ -1675,15 +1703,42 @@ function twig_array_reduce(Environment $env, $array, $arrow, $initial = null)
{
twig_check_arrow_in_sandbox($env, $arrow, 'reduce', 'filter');
- if (!\is_array($array)) {
- if (!$array instanceof \Traversable) {
- throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array)));
- }
-
- $array = iterator_to_array($array);
+ if (!\is_array($array) && !$array instanceof \Traversable) {
+ throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array)));
}
- return array_reduce($array, $arrow, $initial);
+ $accumulator = $initial;
+ foreach ($array as $key => $value) {
+ $accumulator = $arrow($accumulator, $value, $key);
+ }
+
+ return $accumulator;
+}
+
+function twig_array_some(Environment $env, $array, $arrow)
+{
+ twig_check_arrow_in_sandbox($env, $arrow, 'has some', 'operator');
+
+ foreach ($array as $k => $v) {
+ if ($arrow($v, $k)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function twig_array_every(Environment $env, $array, $arrow)
+{
+ twig_check_arrow_in_sandbox($env, $arrow, 'has every', 'operator');
+
+ foreach ($array as $k => $v) {
+ if (!$arrow($v, $k)) {
+ return false;
+ }
+ }
+
+ return true;
}
function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type)
diff --git a/lib/twig/twig/src/Extension/DebugExtension.php b/lib/twig/twig/src/Extension/DebugExtension.php
index bfb23d7bd4..c0f10d5a30 100644
--- a/lib/twig/twig/src/Extension/DebugExtension.php
+++ b/lib/twig/twig/src/Extension/DebugExtension.php
@@ -19,10 +19,10 @@ final class DebugExtension extends AbstractExtension
// dump is safe if var_dump is overridden by xdebug
$isDumpOutputHtmlSafe = \extension_loaded('xdebug')
// false means that it was not set (and the default is on) or it explicitly enabled
- && (false === ini_get('xdebug.overload_var_dump') || ini_get('xdebug.overload_var_dump'))
+ && (false === \ini_get('xdebug.overload_var_dump') || \ini_get('xdebug.overload_var_dump'))
// false means that it was not set (and the default is on) or it explicitly enabled
// xdebug.overload_var_dump produces HTML only when html_errors is also enabled
- && (false === ini_get('html_errors') || ini_get('html_errors'))
+ && (false === \ini_get('html_errors') || \ini_get('html_errors'))
|| 'cli' === \PHP_SAPI
;
diff --git a/lib/twig/twig/src/Extension/EscaperExtension.php b/lib/twig/twig/src/Extension/EscaperExtension.php
index 9d2251dc6e..ef8879dbdc 100644
--- a/lib/twig/twig/src/Extension/EscaperExtension.php
+++ b/lib/twig/twig/src/Extension/EscaperExtension.php
@@ -341,7 +341,7 @@ function twig_escape_filter(Environment $env, $string, $strategy = 'html', $char
* The following replaces characters undefined in HTML with the
* hex entity for the Unicode replacement character.
*/
- if (($ord <= 0x1f && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($ord >= 0x7f && $ord <= 0x9f)) {
+ if (($ord <= 0x1F && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($ord >= 0x7F && $ord <= 0x9F)) {
return '�';
}
@@ -388,7 +388,7 @@ function twig_escape_filter(Environment $env, $string, $strategy = 'html', $char
default:
$escapers = $env->getExtension(EscaperExtension::class)->getEscapers();
- if (array_key_exists($strategy, $escapers)) {
+ if (\array_key_exists($strategy, $escapers)) {
return $escapers[$strategy]($env, $string, $charset);
}
diff --git a/lib/twig/twig/src/Extension/ExtensionInterface.php b/lib/twig/twig/src/Extension/ExtensionInterface.php
index 75fa237e1d..ab9c2c37c1 100644
--- a/lib/twig/twig/src/Extension/ExtensionInterface.php
+++ b/lib/twig/twig/src/Extension/ExtensionInterface.php
@@ -11,6 +11,9 @@
namespace Twig\Extension;
+use Twig\ExpressionParser;
+use Twig\Node\Expression\Binary\AbstractBinary;
+use Twig\Node\Expression\Unary\AbstractUnary;
use Twig\NodeVisitor\NodeVisitorInterface;
use Twig\TokenParser\TokenParserInterface;
use Twig\TwigFilter;
@@ -63,6 +66,11 @@ interface ExtensionInterface
* Returns a list of operators to add to the existing list.
*
* @return array First array of unary operators, second array of binary operators
+ *
+ * @psalm-return array{
+ * array}>,
+ * array, associativity: ExpressionParser::OPERATOR_*}>
+ * }
*/
public function getOperators();
}
diff --git a/lib/twig/twig/src/Extension/GlobalsInterface.php b/lib/twig/twig/src/Extension/GlobalsInterface.php
index ec0c68292a..6f1dfe8a73 100644
--- a/lib/twig/twig/src/Extension/GlobalsInterface.php
+++ b/lib/twig/twig/src/Extension/GlobalsInterface.php
@@ -21,5 +21,8 @@ namespace Twig\Extension;
*/
interface GlobalsInterface
{
+ /**
+ * @return array
+ */
public function getGlobals(): array;
}
diff --git a/lib/twig/twig/src/ExtensionSet.php b/lib/twig/twig/src/ExtensionSet.php
index 36e5bbc59d..d32200ceb5 100644
--- a/lib/twig/twig/src/ExtensionSet.php
+++ b/lib/twig/twig/src/ExtensionSet.php
@@ -15,6 +15,8 @@ use Twig\Error\RuntimeError;
use Twig\Extension\ExtensionInterface;
use Twig\Extension\GlobalsInterface;
use Twig\Extension\StagingExtension;
+use Twig\Node\Expression\Binary\AbstractBinary;
+use Twig\Node\Expression\Unary\AbstractUnary;
use Twig\NodeVisitor\NodeVisitorInterface;
use Twig\TokenParser\TokenParserInterface;
@@ -31,11 +33,17 @@ final class ExtensionSet
private $staging;
private $parsers;
private $visitors;
+ /** @var array */
private $filters;
+ /** @var array */
private $tests;
+ /** @var array */
private $functions;
+ /** @var array}> */
private $unaryOperators;
+ /** @var array, associativity: ExpressionParser::OPERATOR_*}> */
private $binaryOperators;
+ /** @var array */
private $globals;
private $functionCallbacks = [];
private $filterCallbacks = [];
@@ -305,6 +313,9 @@ final class ExtensionSet
$this->parserCallbacks[] = $callable;
}
+ /**
+ * @return array
+ */
public function getGlobals(): array
{
if (null !== $this->globals) {
@@ -379,6 +390,9 @@ final class ExtensionSet
return null;
}
+ /**
+ * @return array}>
+ */
public function getUnaryOperators(): array
{
if (!$this->initialized) {
@@ -388,6 +402,9 @@ final class ExtensionSet
return $this->unaryOperators;
}
+ /**
+ * @return array, associativity: ExpressionParser::OPERATOR_*}>
+ */
public function getBinaryOperators(): array
{
if (!$this->initialized) {
diff --git a/lib/twig/twig/src/FileExtensionEscapingStrategy.php b/lib/twig/twig/src/FileExtensionEscapingStrategy.php
index 65198bbb64..812071bf97 100644
--- a/lib/twig/twig/src/FileExtensionEscapingStrategy.php
+++ b/lib/twig/twig/src/FileExtensionEscapingStrategy.php
@@ -37,7 +37,7 @@ class FileExtensionEscapingStrategy
return 'html'; // return html for directories
}
- if ('.twig' === substr($name, -5)) {
+ if (str_ends_with($name, '.twig')) {
$name = substr($name, 0, -5);
}
diff --git a/lib/twig/twig/src/Lexer.php b/lib/twig/twig/src/Lexer.php
index 9ff028c87d..b23080f58e 100644
--- a/lib/twig/twig/src/Lexer.php
+++ b/lib/twig/twig/src/Lexer.php
@@ -19,6 +19,8 @@ use Twig\Error\SyntaxError;
*/
class Lexer
{
+ private $isInitialized = false;
+
private $tokens;
private $code;
private $cursor;
@@ -61,6 +63,15 @@ class Lexer
'whitespace_line_chars' => ' \t\0\x0B',
'interpolation' => ['#{', '}'],
], $options);
+ }
+
+ private function initialize()
+ {
+ if ($this->isInitialized) {
+ return;
+ }
+
+ $this->isInitialized = true;
// when PHP 7.3 is the min version, we will be able to remove the '#' part in preg_quote as it's part of the default
$this->regexes = [
@@ -153,6 +164,8 @@ class Lexer
public function tokenize(Source $source): TokenStream
{
+ $this->initialize();
+
$this->source = $source;
$this->code = str_replace(["\r\n", "\r"], "\n", $source->getCode());
$this->cursor = 0;
@@ -302,8 +315,13 @@ class Lexer
}
}
+ // spread operator
+ if ('.' === $this->code[$this->cursor] && ($this->cursor + 2 < $this->end) && '.' === $this->code[$this->cursor + 1] && '.' === $this->code[$this->cursor + 2]) {
+ $this->pushToken(Token::SPREAD_TYPE, '...');
+ $this->moveCursor('...');
+ }
// arrow function
- if ('=' === $this->code[$this->cursor] && '>' === $this->code[$this->cursor + 1]) {
+ elseif ('=' === $this->code[$this->cursor] && '>' === $this->code[$this->cursor + 1]) {
$this->pushToken(Token::ARROW_TYPE, '=>');
$this->moveCursor('=>');
}
@@ -327,13 +345,13 @@ class Lexer
$this->moveCursor($match[0]);
}
// punctuation
- elseif (false !== strpos(self::PUNCTUATION, $this->code[$this->cursor])) {
+ elseif (str_contains(self::PUNCTUATION, $this->code[$this->cursor])) {
// opening bracket
- if (false !== strpos('([{', $this->code[$this->cursor])) {
+ if (str_contains('([{', $this->code[$this->cursor])) {
$this->brackets[] = [$this->code[$this->cursor], $this->lineno];
}
// closing bracket
- elseif (false !== strpos(')]}', $this->code[$this->cursor])) {
+ elseif (str_contains(')]}', $this->code[$this->cursor])) {
if (empty($this->brackets)) {
throw new SyntaxError(sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source);
}
@@ -404,7 +422,7 @@ class Lexer
$this->pushToken(/* Token::INTERPOLATION_START_TYPE */ 10);
$this->moveCursor($match[0]);
$this->pushState(self::STATE_INTERPOLATION);
- } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && \strlen($match[0]) > 0) {
+ } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && '' !== $match[0]) {
$this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes($match[0]));
$this->moveCursor($match[0]);
} elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) {
diff --git a/lib/twig/twig/src/Loader/FilesystemLoader.php b/lib/twig/twig/src/Loader/FilesystemLoader.php
index 62267a11c8..1073a406a0 100644
--- a/lib/twig/twig/src/Loader/FilesystemLoader.php
+++ b/lib/twig/twig/src/Loader/FilesystemLoader.php
@@ -36,7 +36,7 @@ class FilesystemLoader implements LoaderInterface
*/
public function __construct($paths = [], string $rootPath = null)
{
- $this->rootPath = (null === $rootPath ? getcwd() : $rootPath).\DIRECTORY_SEPARATOR;
+ $this->rootPath = ($rootPath ?? getcwd()).\DIRECTORY_SEPARATOR;
if (null !== $rootPath && false !== ($realPath = realpath($rootPath))) {
$this->rootPath = $realPath.\DIRECTORY_SEPARATOR;
}
@@ -250,7 +250,7 @@ class FilesystemLoader implements LoaderInterface
private function validateName(string $name): void
{
- if (false !== strpos($name, "\0")) {
+ if (str_contains($name, "\0")) {
throw new LoaderError('A template name cannot contain NUL bytes.');
}
diff --git a/lib/twig/twig/src/Node/Expression/ArrayExpression.php b/lib/twig/twig/src/Node/Expression/ArrayExpression.php
index 0e25fe46ad..4442838023 100644
--- a/lib/twig/twig/src/Node/Expression/ArrayExpression.php
+++ b/lib/twig/twig/src/Node/Expression/ArrayExpression.php
@@ -66,20 +66,70 @@ class ArrayExpression extends AbstractExpression
public function compile(Compiler $compiler): void
{
+ $keyValuePairs = $this->getKeyValuePairs();
+ $needsArrayMergeSpread = \PHP_VERSION_ID < 80100 && $this->hasSpreadItem($keyValuePairs);
+
+ if ($needsArrayMergeSpread) {
+ $compiler->raw('twig_array_merge(');
+ }
$compiler->raw('[');
$first = true;
- foreach ($this->getKeyValuePairs() as $pair) {
+ $reopenAfterMergeSpread = false;
+ $nextIndex = 0;
+ foreach ($keyValuePairs as $pair) {
+ if ($reopenAfterMergeSpread) {
+ $compiler->raw(', [');
+ $reopenAfterMergeSpread = false;
+ }
+
+ if ($needsArrayMergeSpread && $pair['value']->hasAttribute('spread')) {
+ $compiler->raw('], ')->subcompile($pair['value']);
+ $first = true;
+ $reopenAfterMergeSpread = true;
+ continue;
+ }
if (!$first) {
$compiler->raw(', ');
}
$first = false;
- $compiler
- ->subcompile($pair['key'])
- ->raw(' => ')
- ->subcompile($pair['value'])
- ;
+ if ($pair['value']->hasAttribute('spread') && !$needsArrayMergeSpread) {
+ $compiler->raw('...')->subcompile($pair['value']);
+ ++$nextIndex;
+ } else {
+ $key = $pair['key'] instanceof ConstantExpression ? $pair['key']->getAttribute('value') : null;
+
+ if ($nextIndex !== $key) {
+ if (\is_int($key)) {
+ $nextIndex = $key + 1;
+ }
+ $compiler
+ ->subcompile($pair['key'])
+ ->raw(' => ')
+ ;
+ } else {
+ ++$nextIndex;
+ }
+
+ $compiler->subcompile($pair['value']);
+ }
}
- $compiler->raw(']');
+ if (!$reopenAfterMergeSpread) {
+ $compiler->raw(']');
+ }
+ if ($needsArrayMergeSpread) {
+ $compiler->raw(')');
+ }
+ }
+
+ private function hasSpreadItem(array $pairs): bool
+ {
+ foreach ($pairs as $pair) {
+ if ($pair['value']->hasAttribute('spread')) {
+ return true;
+ }
+ }
+
+ return false;
}
}
diff --git a/lib/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php b/lib/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php
index c3516b853f..73fa20b1f6 100644
--- a/lib/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php
+++ b/lib/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php
@@ -24,7 +24,7 @@ class EndsWithBinary extends AbstractBinary
->subcompile($this->getNode('left'))
->raw(sprintf(') && is_string($%s = ', $right))
->subcompile($this->getNode('right'))
- ->raw(sprintf(') && (\'\' === $%2$s || $%2$s === substr($%1$s, -strlen($%2$s))))', $left, $right))
+ ->raw(sprintf(') && str_ends_with($%1$s, $%2$s))', $left, $right))
;
}
diff --git a/lib/twig/twig/src/Node/Expression/Binary/HasEveryBinary.php b/lib/twig/twig/src/Node/Expression/Binary/HasEveryBinary.php
new file mode 100644
index 0000000000..adfabd44c7
--- /dev/null
+++ b/lib/twig/twig/src/Node/Expression/Binary/HasEveryBinary.php
@@ -0,0 +1,33 @@
+raw('twig_array_every($this->env, ')
+ ->subcompile($this->getNode('left'))
+ ->raw(', ')
+ ->subcompile($this->getNode('right'))
+ ->raw(')')
+ ;
+ }
+
+ public function operator(Compiler $compiler): Compiler
+ {
+ return $compiler->raw('');
+ }
+}
diff --git a/lib/twig/twig/src/Node/Expression/Binary/HasSomeBinary.php b/lib/twig/twig/src/Node/Expression/Binary/HasSomeBinary.php
new file mode 100644
index 0000000000..270da36927
--- /dev/null
+++ b/lib/twig/twig/src/Node/Expression/Binary/HasSomeBinary.php
@@ -0,0 +1,33 @@
+raw('twig_array_some($this->env, ')
+ ->subcompile($this->getNode('left'))
+ ->raw(', ')
+ ->subcompile($this->getNode('right'))
+ ->raw(')')
+ ;
+ }
+
+ public function operator(Compiler $compiler): Compiler
+ {
+ return $compiler->raw('');
+ }
+}
diff --git a/lib/twig/twig/src/Node/Expression/Binary/MatchesBinary.php b/lib/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
index bc97292cda..a8bce6f4e7 100644
--- a/lib/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
+++ b/lib/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
@@ -18,7 +18,7 @@ class MatchesBinary extends AbstractBinary
public function compile(Compiler $compiler): void
{
$compiler
- ->raw('preg_match(')
+ ->raw('twig_matches(')
->subcompile($this->getNode('right'))
->raw(', ')
->subcompile($this->getNode('left'))
diff --git a/lib/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php b/lib/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php
index d0df1c4b63..22eff92a79 100644
--- a/lib/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php
+++ b/lib/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php
@@ -24,7 +24,7 @@ class StartsWithBinary extends AbstractBinary
->subcompile($this->getNode('left'))
->raw(sprintf(') && is_string($%s = ', $right))
->subcompile($this->getNode('right'))
- ->raw(sprintf(') && (\'\' === $%2$s || 0 === strpos($%1$s, $%2$s)))', $left, $right))
+ ->raw(sprintf(') && str_starts_with($%1$s, $%2$s))', $left, $right))
;
}
diff --git a/lib/twig/twig/src/Node/Expression/CallExpression.php b/lib/twig/twig/src/Node/Expression/CallExpression.php
index 28881066bc..3a2d7a4fca 100644
--- a/lib/twig/twig/src/Node/Expression/CallExpression.php
+++ b/lib/twig/twig/src/Node/Expression/CallExpression.php
@@ -24,7 +24,7 @@ abstract class CallExpression extends AbstractExpression
{
$callable = $this->getAttribute('callable');
- if (\is_string($callable) && false === strpos($callable, '::')) {
+ if (\is_string($callable) && !str_contains($callable, '::')) {
$compiler->raw($callable);
} else {
[$r, $callable] = $this->reflectCallable($callable);
@@ -297,14 +297,16 @@ abstract class CallExpression extends AbstractExpression
}
$r = new \ReflectionFunction($closure);
- if (false !== strpos($r->name, '{closure}')) {
+ if (str_contains($r->name, '{closure}')) {
return $this->reflector = [$r, $callable, 'Closure'];
}
if ($object = $r->getClosureThis()) {
$callable = [$object, $r->name];
- $callableName = (\function_exists('get_debug_type') ? get_debug_type($object) : \get_class($object)).'::'.$r->name;
- } elseif ($class = $r->getClosureScopeClass()) {
+ $callableName = get_debug_type($object).'::'.$r->name;
+ } elseif (\PHP_VERSION_ID >= 80111 && $class = $r->getClosureCalledClass()) {
+ $callableName = $class->name.'::'.$r->name;
+ } elseif (\PHP_VERSION_ID < 80111 && $class = $r->getClosureScopeClass()) {
$callableName = (\is_array($callable) ? $callable[0] : $class->name).'::'.$r->name;
} else {
$callable = $callableName = $r->name;
diff --git a/lib/twig/twig/src/Node/Expression/ConditionalExpression.php b/lib/twig/twig/src/Node/Expression/ConditionalExpression.php
index 2c7bd0a276..d7db993579 100644
--- a/lib/twig/twig/src/Node/Expression/ConditionalExpression.php
+++ b/lib/twig/twig/src/Node/Expression/ConditionalExpression.php
@@ -23,14 +23,23 @@ class ConditionalExpression extends AbstractExpression
public function compile(Compiler $compiler): void
{
- $compiler
- ->raw('((')
- ->subcompile($this->getNode('expr1'))
- ->raw(') ? (')
- ->subcompile($this->getNode('expr2'))
- ->raw(') : (')
- ->subcompile($this->getNode('expr3'))
- ->raw('))')
- ;
+ // Ternary with no then uses Elvis operator
+ if ($this->getNode('expr1') === $this->getNode('expr2')) {
+ $compiler
+ ->raw('((')
+ ->subcompile($this->getNode('expr1'))
+ ->raw(') ?: (')
+ ->subcompile($this->getNode('expr3'))
+ ->raw('))');
+ } else {
+ $compiler
+ ->raw('((')
+ ->subcompile($this->getNode('expr1'))
+ ->raw(') ? (')
+ ->subcompile($this->getNode('expr2'))
+ ->raw(') : (')
+ ->subcompile($this->getNode('expr3'))
+ ->raw('))');
+ }
}
}
diff --git a/lib/twig/twig/src/Node/IfNode.php b/lib/twig/twig/src/Node/IfNode.php
index 5fa20082a7..569ab7950e 100644
--- a/lib/twig/twig/src/Node/IfNode.php
+++ b/lib/twig/twig/src/Node/IfNode.php
@@ -50,8 +50,11 @@ class IfNode extends Node
->subcompile($this->getNode('tests')->getNode($i))
->raw(") {\n")
->indent()
- ->subcompile($this->getNode('tests')->getNode($i + 1))
;
+ // The node might not exists if the content is empty
+ if ($this->getNode('tests')->hasNode($i + 1)) {
+ $compiler->subcompile($this->getNode('tests')->getNode($i + 1));
+ }
}
if ($this->hasNode('else')) {
diff --git a/lib/twig/twig/src/Node/ModuleNode.php b/lib/twig/twig/src/Node/ModuleNode.php
index e972b6ba58..9b485eeaf0 100644
--- a/lib/twig/twig/src/Node/ModuleNode.php
+++ b/lib/twig/twig/src/Node/ModuleNode.php
@@ -355,6 +355,9 @@ final class ModuleNode extends Node
protected function compileGetTemplateName(Compiler $compiler)
{
$compiler
+ ->write("/**\n")
+ ->write(" * @codeCoverageIgnore\n")
+ ->write(" */\n")
->write("public function getTemplateName()\n", "{\n")
->indent()
->write('return ')
@@ -409,6 +412,9 @@ final class ModuleNode extends Node
}
$compiler
+ ->write("/**\n")
+ ->write(" * @codeCoverageIgnore\n")
+ ->write(" */\n")
->write("public function isTraitable()\n", "{\n")
->indent()
->write(sprintf("return %s;\n", $traitable ? 'true' : 'false'))
@@ -420,6 +426,9 @@ final class ModuleNode extends Node
protected function compileDebugInfo(Compiler $compiler)
{
$compiler
+ ->write("/**\n")
+ ->write(" * @codeCoverageIgnore\n")
+ ->write(" */\n")
->write("public function getDebugInfo()\n", "{\n")
->indent()
->write(sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true))))
diff --git a/lib/twig/twig/src/Node/Node.php b/lib/twig/twig/src/Node/Node.php
index c0558b9afd..30659ae0fd 100644
--- a/lib/twig/twig/src/Node/Node.php
+++ b/lib/twig/twig/src/Node/Node.php
@@ -27,7 +27,6 @@ class Node implements \Countable, \IteratorAggregate
protected $lineno;
protected $tag;
- private $name;
private $sourceContext;
/**
diff --git a/lib/twig/twig/src/Node/WithNode.php b/lib/twig/twig/src/Node/WithNode.php
index 56a334496e..2ac9123d0d 100644
--- a/lib/twig/twig/src/Node/WithNode.php
+++ b/lib/twig/twig/src/Node/WithNode.php
@@ -45,7 +45,7 @@ class WithNode extends Node
->write(sprintf('$%s = ', $varsName))
->subcompile($node)
->raw(";\n")
- ->write(sprintf("if (!twig_test_iterable(\$%s)) {\n", $varsName))
+ ->write(sprintf("if (!is_iterable(\$%s)) {\n", $varsName))
->indent()
->write("throw new RuntimeError('Variables passed to the \"with\" tag must be a hash.', ")
->repr($node->getTemplateLine())
diff --git a/lib/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php b/lib/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
index fe56ea3074..c390d7cc71 100644
--- a/lib/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
+++ b/lib/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
@@ -57,7 +57,7 @@ final class EscaperNodeVisitor implements NodeVisitorInterface
} elseif ($node instanceof AutoEscapeNode) {
$this->statusStack[] = $node->getAttribute('value');
} elseif ($node instanceof BlockNode) {
- $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env);
+ $this->statusStack[] = $this->blocks[$node->getAttribute('name')] ?? $this->needEscaping();
} elseif ($node instanceof ImportNode) {
$this->safeVars[] = $node->getNode('var')->getAttribute('name');
}
@@ -73,7 +73,7 @@ final class EscaperNodeVisitor implements NodeVisitorInterface
$this->blocks = [];
} elseif ($node instanceof FilterExpression) {
return $this->preEscapeFilterNode($node, $env);
- } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping($env)) {
+ } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping()) {
$expression = $node->getNode('expr');
if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) {
return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine());
@@ -85,7 +85,7 @@ final class EscaperNodeVisitor implements NodeVisitorInterface
if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) {
array_pop($this->statusStack);
} elseif ($node instanceof BlockReferenceNode) {
- $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env);
+ $this->blocks[$node->getAttribute('name')] = $this->needEscaping();
}
return $node;
@@ -183,13 +183,13 @@ final class EscaperNodeVisitor implements NodeVisitorInterface
return \in_array($type, $safe) || \in_array('all', $safe);
}
- private function needEscaping(Environment $env)
+ private function needEscaping()
{
if (\count($this->statusStack)) {
return $this->statusStack[\count($this->statusStack) - 1];
}
- return $this->defaultStrategy ? $this->defaultStrategy : false;
+ return $this->defaultStrategy ?: false;
}
private function getEscaperFilter(string $type, Node $node): FilterExpression
diff --git a/lib/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php b/lib/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php
index af477e6535..d6a7781ba2 100644
--- a/lib/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php
+++ b/lib/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php
@@ -50,10 +50,10 @@ final class MacroAutoImportNodeVisitor implements NodeVisitorInterface
}
} elseif ($this->inAModule) {
if (
- $node instanceof GetAttrExpression &&
- $node->getNode('node') instanceof NameExpression &&
- '_self' === $node->getNode('node')->getAttribute('name') &&
- $node->getNode('attribute') instanceof ConstantExpression
+ $node instanceof GetAttrExpression
+ && $node->getNode('node') instanceof NameExpression
+ && '_self' === $node->getNode('node')->getAttribute('name')
+ && $node->getNode('attribute') instanceof ConstantExpression
) {
$this->hasMacroCalls = true;
diff --git a/lib/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php b/lib/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php
index 7ac75e41ad..6b39f00947 100644
--- a/lib/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php
+++ b/lib/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php
@@ -63,7 +63,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
public function enterNode(Node $node, Environment $env): Node
{
if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
- $this->enterOptimizeFor($node, $env);
+ $this->enterOptimizeFor($node);
}
return $node;
@@ -72,14 +72,14 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
public function leaveNode(Node $node, Environment $env): ?Node
{
if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
- $this->leaveOptimizeFor($node, $env);
+ $this->leaveOptimizeFor($node);
}
if (self::OPTIMIZE_RAW_FILTER === (self::OPTIMIZE_RAW_FILTER & $this->optimizers)) {
- $node = $this->optimizeRawFilter($node, $env);
+ $node = $this->optimizeRawFilter($node);
}
- $node = $this->optimizePrintNode($node, $env);
+ $node = $this->optimizePrintNode($node);
return $node;
}
@@ -91,7 +91,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
*
* * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()"
*/
- private function optimizePrintNode(Node $node, Environment $env): Node
+ private function optimizePrintNode(Node $node): Node
{
if (!$node instanceof PrintNode) {
return $node;
@@ -99,8 +99,8 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
$exprNode = $node->getNode('expr');
if (
- $exprNode instanceof BlockReferenceExpression ||
- $exprNode instanceof ParentExpression
+ $exprNode instanceof BlockReferenceExpression
+ || $exprNode instanceof ParentExpression
) {
$exprNode->setAttribute('output', true);
@@ -113,7 +113,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
/**
* Removes "raw" filters.
*/
- private function optimizeRawFilter(Node $node, Environment $env): Node
+ private function optimizeRawFilter(Node $node): Node
{
if ($node instanceof FilterExpression && 'raw' == $node->getNode('filter')->getAttribute('value')) {
return $node->getNode('node');
@@ -125,7 +125,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
/**
* Optimizes "for" tag by removing the "loop" variable creation whenever possible.
*/
- private function enterOptimizeFor(Node $node, Environment $env): void
+ private function enterOptimizeFor(Node $node): void
{
if ($node instanceof ForNode) {
// disable the loop variable by default
@@ -166,7 +166,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
&& 'include' === $node->getAttribute('name')
&& (!$node->getNode('arguments')->hasNode('with_context')
|| false !== $node->getNode('arguments')->getNode('with_context')->getAttribute('value')
- )
+ )
) {
$this->addLoopToAll();
}
@@ -175,12 +175,12 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
elseif ($node instanceof GetAttrExpression
&& (!$node->getNode('attribute') instanceof ConstantExpression
|| 'parent' === $node->getNode('attribute')->getAttribute('value')
- )
+ )
&& (true === $this->loops[0]->getAttribute('with_loop')
- || ($node->getNode('node') instanceof NameExpression
- && 'loop' === $node->getNode('node')->getAttribute('name')
- )
- )
+ || ($node->getNode('node') instanceof NameExpression
+ && 'loop' === $node->getNode('node')->getAttribute('name')
+ )
+ )
) {
$this->addLoopToAll();
}
@@ -189,7 +189,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface
/**
* Optimizes "for" tag by removing the "loop" variable creation whenever possible.
*/
- private function leaveOptimizeFor(Node $node, Environment $env): void
+ private function leaveOptimizeFor(Node $node): void
{
if ($node instanceof ForNode) {
array_shift($this->loops);
diff --git a/lib/twig/twig/src/Parser.php b/lib/twig/twig/src/Parser.php
index 4428208fed..4016a5f39a 100644
--- a/lib/twig/twig/src/Parser.php
+++ b/lib/twig/twig/src/Parser.php
@@ -303,10 +303,9 @@ class Parser
// check that the body does not contain non-empty output nodes
if (
($node instanceof TextNode && !ctype_space($node->getAttribute('data')))
- ||
- (!$node instanceof TextNode && !$node instanceof BlockReferenceNode && $node instanceof NodeOutputInterface)
+ || (!$node instanceof TextNode && !$node instanceof BlockReferenceNode && $node instanceof NodeOutputInterface)
) {
- if (false !== strpos((string) $node, \chr(0xEF).\chr(0xBB).\chr(0xBF))) {
+ if (str_contains((string) $node, \chr(0xEF).\chr(0xBB).\chr(0xBF))) {
$t = substr($node->getAttribute('data'), 3);
if ('' === $t || ctype_space($t)) {
// bypass empty nodes starting with a BOM
diff --git a/lib/twig/twig/src/Profiler/Dumper/HtmlDumper.php b/lib/twig/twig/src/Profiler/Dumper/HtmlDumper.php
index 1f2433b4d3..3c0daf1c8d 100644
--- a/lib/twig/twig/src/Profiler/Dumper/HtmlDumper.php
+++ b/lib/twig/twig/src/Profiler/Dumper/HtmlDumper.php
@@ -37,7 +37,7 @@ final class HtmlDumper extends BaseDumper
protected function formatNonTemplate(Profile $profile, $prefix): string
{
- return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName());
+ return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), self::$colors[$profile->getType()] ?? 'auto', $profile->getName());
}
protected function formatTime(Profile $profile, $percent): string
diff --git a/lib/twig/twig/src/Profiler/Profile.php b/lib/twig/twig/src/Profiler/Profile.php
index 252ca9b0cf..7979a23c67 100644
--- a/lib/twig/twig/src/Profiler/Profile.php
+++ b/lib/twig/twig/src/Profiler/Profile.php
@@ -32,7 +32,7 @@ final class Profile implements \IteratorAggregate, \Serializable
{
$this->template = $template;
$this->type = $type;
- $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name;
+ $this->name = str_starts_with($name, '__internal_') ? 'INTERNAL' : $name;
$this->enter();
}
diff --git a/lib/twig/twig/src/Sandbox/SecurityPolicy.php b/lib/twig/twig/src/Sandbox/SecurityPolicy.php
index 2fc0d01318..a725aa4f10 100644
--- a/lib/twig/twig/src/Sandbox/SecurityPolicy.php
+++ b/lib/twig/twig/src/Sandbox/SecurityPolicy.php
@@ -94,9 +94,8 @@ final class SecurityPolicy implements SecurityPolicyInterface
$allowed = false;
$method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
foreach ($this->allowedMethods as $class => $methods) {
- if ($obj instanceof $class) {
- $allowed = \in_array($method, $methods);
-
+ if ($obj instanceof $class && \in_array($method, $methods)) {
+ $allowed = true;
break;
}
}
@@ -111,9 +110,8 @@ final class SecurityPolicy implements SecurityPolicyInterface
{
$allowed = false;
foreach ($this->allowedProperties as $class => $properties) {
- if ($obj instanceof $class) {
- $allowed = \in_array($property, \is_array($properties) ? $properties : [$properties]);
-
+ if ($obj instanceof $class && \in_array($property, \is_array($properties) ? $properties : [$properties])) {
+ $allowed = true;
break;
}
}
diff --git a/lib/twig/twig/src/Template.php b/lib/twig/twig/src/Template.php
index e04bd04a63..ffbaae1ea1 100644
--- a/lib/twig/twig/src/Template.php
+++ b/lib/twig/twig/src/Template.php
@@ -181,7 +181,7 @@ abstract class Template
}
throw $e;
- } catch (\Exception $e) {
+ } catch (\Throwable $e) {
$e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
$e->guess();
@@ -404,7 +404,7 @@ abstract class Template
}
throw $e;
- } catch (\Exception $e) {
+ } catch (\Throwable $e) {
$e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
$e->guess();
diff --git a/lib/twig/twig/src/TemplateWrapper.php b/lib/twig/twig/src/TemplateWrapper.php
index c9c6b07c66..1ecd82251f 100644
--- a/lib/twig/twig/src/TemplateWrapper.php
+++ b/lib/twig/twig/src/TemplateWrapper.php
@@ -35,9 +35,7 @@ final class TemplateWrapper
public function render(array $context = []): string
{
- // using func_get_args() allows to not expose the blocks argument
- // as it should only be used by internal code
- return $this->template->render($context, \func_get_args()[1] ?? []);
+ return $this->template->render($context);
}
public function display(array $context = [])
diff --git a/lib/twig/twig/src/Token.php b/lib/twig/twig/src/Token.php
index 53a6cafc35..59279b8fe7 100644
--- a/lib/twig/twig/src/Token.php
+++ b/lib/twig/twig/src/Token.php
@@ -35,6 +35,7 @@ final class Token
public const INTERPOLATION_START_TYPE = 10;
public const INTERPOLATION_END_TYPE = 11;
public const ARROW_TYPE = 12;
+ public const SPREAD_TYPE = 13;
public function __construct(int $type, $value, int $lineno)
{
@@ -67,9 +68,9 @@ final class Token
}
return ($this->type === $type) && (
- null === $values ||
- (\is_array($values) && \in_array($this->value, $values)) ||
- $this->value == $values
+ null === $values
+ || (\is_array($values) && \in_array($this->value, $values))
+ || $this->value == $values
);
}
@@ -133,6 +134,9 @@ final class Token
case self::ARROW_TYPE:
$name = 'ARROW_TYPE';
break;
+ case self::SPREAD_TYPE:
+ $name = 'SPREAD_TYPE';
+ break;
default:
throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type));
}
@@ -171,6 +175,8 @@ final class Token
return 'end of string interpolation';
case self::ARROW_TYPE:
return 'arrow function';
+ case self::SPREAD_TYPE:
+ return 'spread operator';
default:
throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type));
}
diff --git a/lib/twig/twig/src/TokenParser/FromTokenParser.php b/lib/twig/twig/src/TokenParser/FromTokenParser.php
index 35098c267b..31b6cde414 100644
--- a/lib/twig/twig/src/TokenParser/FromTokenParser.php
+++ b/lib/twig/twig/src/TokenParser/FromTokenParser.php
@@ -32,7 +32,7 @@ final class FromTokenParser extends AbstractTokenParser
$stream->expect(/* Token::NAME_TYPE */ 5, 'import');
$targets = [];
- do {
+ while (true) {
$name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue();
$alias = $name;
@@ -45,7 +45,7 @@ final class FromTokenParser extends AbstractTokenParser
if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) {
break;
}
- } while (true);
+ }
$stream->expect(/* Token::BLOCK_END_TYPE */ 3);
diff --git a/lib/twig/twig/src/TokenParser/UseTokenParser.php b/lib/twig/twig/src/TokenParser/UseTokenParser.php
index d0a2de41a2..3cdbb98ad0 100644
--- a/lib/twig/twig/src/TokenParser/UseTokenParser.php
+++ b/lib/twig/twig/src/TokenParser/UseTokenParser.php
@@ -43,7 +43,7 @@ final class UseTokenParser extends AbstractTokenParser
$targets = [];
if ($stream->nextIf('with')) {
- do {
+ while (true) {
$name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue();
$alias = $name;
@@ -56,7 +56,7 @@ final class UseTokenParser extends AbstractTokenParser
if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) {
break;
}
- } while (true);
+ }
}
$stream->expect(/* Token::BLOCK_END_TYPE */ 3);
diff --git a/lib/twig/twig/src/TwigFilter.php b/lib/twig/twig/src/TwigFilter.php
index 94e5f9b012..8993026c8c 100644
--- a/lib/twig/twig/src/TwigFilter.php
+++ b/lib/twig/twig/src/TwigFilter.php
@@ -29,7 +29,7 @@ final class TwigFilter
private $arguments = [];
/**
- * @param callable|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation.
+ * @param callable|array{class-string, string}|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation.
*/
public function __construct(string $name, $callable = null, array $options = [])
{
@@ -57,7 +57,7 @@ final class TwigFilter
/**
* Returns the callable to execute for this filter.
*
- * @return callable|null
+ * @return callable|array{class-string, string}|null
*/
public function getCallable()
{
diff --git a/lib/twig/twig/src/TwigFunction.php b/lib/twig/twig/src/TwigFunction.php
index 494d45b08c..d910d1fd53 100644
--- a/lib/twig/twig/src/TwigFunction.php
+++ b/lib/twig/twig/src/TwigFunction.php
@@ -29,7 +29,7 @@ final class TwigFunction
private $arguments = [];
/**
- * @param callable|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation.
+ * @param callable|array{class-string, string}|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation.
*/
public function __construct(string $name, $callable = null, array $options = [])
{
@@ -55,7 +55,7 @@ final class TwigFunction
/**
* Returns the callable to execute for this function.
*
- * @return callable|null
+ * @return callable|array{class-string, string}|null
*/
public function getCallable()
{
diff --git a/lib/twig/twig/src/TwigTest.php b/lib/twig/twig/src/TwigTest.php
index 4c18632f55..3769ec162b 100644
--- a/lib/twig/twig/src/TwigTest.php
+++ b/lib/twig/twig/src/TwigTest.php
@@ -28,7 +28,7 @@ final class TwigTest
private $arguments = [];
/**
- * @param callable|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation.
+ * @param callable|array{class-string, string}|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation.
*/
public function __construct(string $name, $callable = null, array $options = [])
{
@@ -51,7 +51,7 @@ final class TwigTest
/**
* Returns the callable to execute for this test.
*
- * @return callable|null
+ * @return callable|array{class-string, string}|null
*/
public function getCallable()
{