From 03caf4cc9946a04526b2494834aede03257dfbff Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 14 Jul 2024 21:29:58 +0200 Subject: [PATCH] [8.4] Add support for property hooks Add hooks subnode to Stmt\Property and Param, which contains an array of PropertyHook. The property hook support is considered experimental and subject to change. RFC: https://wiki.php.net/rfc/property-hooks --- grammar/php.y | 46 +- lib/PhpParser/Builder/Property.php | 42 +- lib/PhpParser/Node/Param.php | 9 +- lib/PhpParser/Node/PropertyHook.php | 78 + lib/PhpParser/Node/Stmt/Property.php | 8 +- lib/PhpParser/Parser/Php7.php | 1148 +++++------ lib/PhpParser/Parser/Php8.php | 1699 +++++++++-------- lib/PhpParser/ParserAbstract.php | 37 + lib/PhpParser/PrettyPrinter/Standard.php | 15 +- lib/PhpParser/PrettyPrinterAbstract.php | 8 + test/PhpParser/Builder/PropertyTest.php | 49 +- test/PhpParser/NodeAbstractTest.php | 12 +- .../formatPreservation/property_hooks.test | 128 ++ test/code/parser/commentAtEndOfClass.test | 2 + test/code/parser/errorHandling/recovery.test | 28 +- test/code/parser/expr/arrow_function.test | 20 + test/code/parser/expr/closure.test | 8 + test/code/parser/expr/uvs/indirectCall.test | 4 + test/code/parser/semiReserved.test | 4 + test/code/parser/stmt/attributes.test | 4 + test/code/parser/stmt/class/anonymous.test | 2 + .../parser/stmt/class/implicitPublic.test | 4 + .../parser/stmt/class/modifier_error.test | 8 + test/code/parser/stmt/class/php4Style.test | 2 + .../code/parser/stmt/class/propertyTypes.test | 8 + .../parser/stmt/class/property_hooks.test | 525 +++++ .../parser/stmt/class/property_modifiers.test | 8 + .../parser/stmt/class/property_promotion.test | 68 + test/code/parser/stmt/class/simple.test | 8 + .../function/builtinTypeDeclarations.test | 14 + test/code/parser/stmt/function/byRef.test | 4 + .../parser/stmt/function/defaultValues.test | 18 + .../function/disjointNormalFormTypes.test | 6 + .../stmt/function/intersectionTypes.test | 4 + .../parser/stmt/function/nullableTypes.test | 4 + .../function/parameters_trailing_comma.test | 8 + .../stmt/function/typeDeclarations.test | 8 + .../parser/stmt/function/typeVersions.test | 108 ++ .../code/parser/stmt/function/unionTypes.test | 4 + test/code/parser/stmt/function/variadic.test | 16 + .../stmt/function/variadicDefaultValue.test | 2 + test/code/parser/stmt/newInInitializer.test | 4 + .../prettyPrinter/stmt/property_hooks.test | 59 + 43 files changed, 2834 insertions(+), 1407 deletions(-) create mode 100644 lib/PhpParser/Node/PropertyHook.php create mode 100644 test/code/formatPreservation/property_hooks.test create mode 100644 test/code/parser/stmt/class/property_hooks.test create mode 100644 test/code/prettyPrinter/stmt/property_hooks.test diff --git a/grammar/php.y b/grammar/php.y index d7a98e207b..e55f6e03e1 100644 --- a/grammar/php.y +++ b/grammar/php.y @@ -677,12 +677,12 @@ property_modifier: parameter: optional_attributes optional_property_modifiers optional_type_without_static - optional_arg_ref optional_ellipsis plain_variable - { $$ = new Node\Param($6, null, $3, $4, $5, attributes(), $2, $1); + optional_arg_ref optional_ellipsis plain_variable optional_property_hook_list + { $$ = new Node\Param($6, null, $3, $4, $5, attributes(), $2, $1, $7); $this->checkParam($$); } | optional_attributes optional_property_modifiers optional_type_without_static - optional_arg_ref optional_ellipsis plain_variable '=' expr - { $$ = new Node\Param($6, $8, $3, $4, $5, attributes(), $2, $1); + optional_arg_ref optional_ellipsis plain_variable '=' expr optional_property_hook_list + { $$ = new Node\Param($6, $8, $3, $4, $5, attributes(), $2, $1, $9); $this->checkParam($$); } | optional_attributes optional_property_modifiers optional_type_without_static optional_arg_ref optional_ellipsis error @@ -830,6 +830,11 @@ class_statement_list: class_statement: optional_attributes variable_modifiers optional_type_without_static property_declaration_list semi { $$ = new Stmt\Property($2, $4, attributes(), $3, $1); } +#if PHP8 + | optional_attributes variable_modifiers optional_type_without_static property_declaration_list '{' property_hook_list '}' + { $$ = new Stmt\Property($2, $4, attributes(), $3, $1, $6); + $this->checkPropertyHookList($6, #5); } +#endif | optional_attributes method_modifiers T_CONST class_const_list semi { $$ = new Stmt\ClassConst($4, $2, attributes(), $1); $this->checkClassConst($$, #2); } @@ -926,6 +931,39 @@ property_declaration: | property_decl_name '=' expr { $$ = Node\PropertyItem[$1, $3]; } ; +property_hook_list: + /* empty */ { $$ = []; } + | property_hook_list property_hook { push($1, $2); } +; + +optional_property_hook_list: + /* empty */ { $$ = []; } +#if PHP8 + | '{' property_hook_list '}' { $$ = $2; $this->checkPropertyHookList($2, #1); } +#endif +; + +property_hook: + optional_attributes property_hook_modifiers optional_ref identifier_not_reserved property_hook_body + { $$ = Node\PropertyHook[$4, $5, ['flags' => $2, 'byRef' => $3, 'params' => [], 'attrGroups' => $1]]; + $this->checkPropertyHook($$, null); } + | optional_attributes property_hook_modifiers optional_ref identifier_not_reserved '(' parameter_list ')' property_hook_body + { $$ = Node\PropertyHook[$4, $8, ['flags' => $2, 'byRef' => $3, 'params' => $6, 'attrGroups' => $1]]; + $this->checkPropertyHook($$, #5); } +; + +property_hook_body: + ';' { $$ = null; } + | '{' inner_statement_list '}' { $$ = $2; } + | T_DOUBLE_ARROW expr ';' { $$ = $2; } +; + +property_hook_modifiers: + /* empty */ { $$ = 0; } + | property_hook_modifiers member_modifier + { $this->checkPropertyHookModifiers($1, $2, #2); $$ = $1 | $2; } +; + expr_list_forbid_comma: non_empty_expr_list no_comma ; diff --git a/lib/PhpParser/Builder/Property.php b/lib/PhpParser/Builder/Property.php index 3fc96d98c3..55fd8b78e1 100644 --- a/lib/PhpParser/Builder/Property.php +++ b/lib/PhpParser/Builder/Property.php @@ -23,6 +23,8 @@ class Property implements PhpParser\Builder { protected ?Node $type = null; /** @var list */ protected array $attributeGroups = []; + /** @var list */ + protected array $hooks = []; /** * Creates a property builder. @@ -88,6 +90,28 @@ public function makeReadonly() { return $this; } + /** + * Makes the property abstract. Requires at least one property hook to be specified as well. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeAbstract() { + $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::ABSTRACT); + + return $this; + } + + /** + * Makes the property final. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeFinal() { + $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL); + + return $this; + } + /** * Sets default value for the property. * @@ -142,12 +166,27 @@ public function addAttribute($attribute) { return $this; } + /** + * Adds a property hook. + * + * @return $this The builder instance (for fluid interface) + */ + public function addHook(Node\PropertyHook $hook) { + $this->hooks[] = $hook; + + return $this; + } + /** * Returns the built class node. * * @return Stmt\Property The built property node */ public function getNode(): PhpParser\Node { + if ($this->flags & Modifiers::ABSTRACT && !$this->hooks) { + throw new PhpParser\Error('Only hooked properties may be declared abstract'); + } + return new Stmt\Property( $this->flags !== 0 ? $this->flags : Modifiers::PUBLIC, [ @@ -155,7 +194,8 @@ public function getNode(): PhpParser\Node { ], $this->attributes, $this->type, - $this->attributeGroups + $this->attributeGroups, + $this->hooks ); } } diff --git a/lib/PhpParser/Node/Param.php b/lib/PhpParser/Node/Param.php index 0e9ff0e2d7..c844f6440e 100644 --- a/lib/PhpParser/Node/Param.php +++ b/lib/PhpParser/Node/Param.php @@ -21,6 +21,8 @@ class Param extends NodeAbstract { public int $flags; /** @var AttributeGroup[] PHP attribute groups */ public array $attrGroups; + /** @var PropertyHook[] Property hooks for promoted properties */ + public array $hooks; /** * Constructs a parameter node. @@ -33,13 +35,15 @@ class Param extends NodeAbstract { * @param array $attributes Additional attributes * @param int $flags Optional visibility flags * @param list $attrGroups PHP attribute groups + * @param PropertyHook[] $hooks Property hooks for promoted properties */ public function __construct( Expr $var, ?Expr $default = null, ?Node $type = null, bool $byRef = false, bool $variadic = false, array $attributes = [], int $flags = 0, - array $attrGroups = [] + array $attrGroups = [], + array $hooks = [] ) { $this->attributes = $attributes; $this->type = $type; @@ -49,10 +53,11 @@ public function __construct( $this->default = $default; $this->flags = $flags; $this->attrGroups = $attrGroups; + $this->hooks = $hooks; } public function getSubNodeNames(): array { - return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default']; + return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default', 'hooks']; } public function getType(): string { diff --git a/lib/PhpParser/Node/PropertyHook.php b/lib/PhpParser/Node/PropertyHook.php new file mode 100644 index 0000000000..a8cde850f7 --- /dev/null +++ b/lib/PhpParser/Node/PropertyHook.php @@ -0,0 +1,78 @@ + false : Whether hook returns by reference + * 'params' => array(): Parameters + * 'attrGroups' => array(): PHP attribute groups + * @param array $attributes Additional attributes + */ + public function __construct($name, $body, array $subNodes = [], array $attributes = []) { + $this->attributes = $attributes; + $this->name = \is_string($name) ? new Identifier($name) : $name; + $this->body = $body; + $this->flags = $subNodes['flags'] ?? 0; + $this->byRef = $subNodes['byRef'] ?? false; + $this->params = $subNodes['params'] ?? []; + $this->attrGroups = $subNodes['attrGroups'] ?? []; + } + + public function returnsByRef(): bool { + return $this->byRef; + } + + public function getParams(): array { + return $this->params; + } + + public function getReturnType() { + return null; + } + + public function getStmts(): ?array { + if ($this->body instanceof Expr) { + return [new Return_($this->body)]; + } + return $this->body; + } + + public function getAttrGroups(): array { + return $this->attrGroups; + } + + public function getType(): string { + return 'PropertyHook'; + } + + public function getSubNodeNames(): array { + return ['attrGroups', 'flags', 'byRef', 'name', 'params', 'body']; + } +} diff --git a/lib/PhpParser/Node/Stmt/Property.php b/lib/PhpParser/Node/Stmt/Property.php index 872ea6b738..edbd144e5d 100644 --- a/lib/PhpParser/Node/Stmt/Property.php +++ b/lib/PhpParser/Node/Stmt/Property.php @@ -18,6 +18,8 @@ class Property extends Node\Stmt { public ?Node $type; /** @var Node\AttributeGroup[] PHP attribute groups */ public array $attrGroups; + /** @var Node\PropertyHook[] Property hooks */ + public array $hooks; /** * Constructs a class property list node. @@ -27,17 +29,19 @@ class Property extends Node\Stmt { * @param array $attributes Additional attributes * @param null|Identifier|Name|ComplexType $type Type declaration * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param Node\PropertyHook[] $hooks Property hooks */ - public function __construct(int $flags, array $props, array $attributes = [], ?Node $type = null, array $attrGroups = []) { + public function __construct(int $flags, array $props, array $attributes = [], ?Node $type = null, array $attrGroups = [], array $hooks = []) { $this->attributes = $attributes; $this->flags = $flags; $this->props = $props; $this->type = $type; $this->attrGroups = $attrGroups; + $this->hooks = $hooks; } public function getSubNodeNames(): array { - return ['attrGroups', 'flags', 'type', 'props']; + return ['attrGroups', 'flags', 'type', 'props', 'hooks']; } /** diff --git a/lib/PhpParser/Parser/Php7.php b/lib/PhpParser/Parser/Php7.php index c3ce3a6ae6..5e558531ab 100644 --- a/lib/PhpParser/Parser/Php7.php +++ b/lib/PhpParser/Parser/Php7.php @@ -388,135 +388,135 @@ class Php7 extends \PhpParser\ParserAbstract ); protected array $action = array( - 133, 134, 135, 586, 136, 137, 1316, 755, 756, 757, + 133, 134, 135, 587, 136, 137, 1326, 755, 756, 757, 138, 38, 866, -367, 867, -367,-32766,-32766,-32766,-32767, -32767,-32767,-32767, 102, 103, 104, 105, 106, 1116, 1117, 1118, 1115, 1114, 1113, 1119, 749, 748,-32766, 0,-32766, -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, -32767,-32766,-32766,-32766, 1031, 758,-32766,-32766,-32766, 945, - 292, -600, 838,-32766,-32766,-32766,-32766, 1092, -600, 265, + 292, -610, 838,-32766,-32766,-32766,-32766, 1092, -610, 265, 139, 406, 762, 763, 764, 765, 994,-32766, 431,-32766, -32766,-32766,-32766,-32766,-32766, 819, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 795, 587, 796, 797, + 770, 771, 772, 773, 774, 775, 795, 588, 796, 797, 798, 799, 787, 788, 347, 348, 790, 791, 776, 777, 778, 780, 781, 782, 358, 822, 823, 824, 825, 826, - 588, 783, 784, 589, 590,-32766, 807, 805, 806, 818, - 802, 803, -328, -194, 591, 592, 801, 593, 594, 595, - 596, 839, 597, 598, 1351, 1336,-32766, 1040, 841, 804, - 599, 600, 1335, 140, 2, 133, 134, 135, 586, 136, + 589, 783, 784, 590, 591,-32766, 807, 805, 806, 818, + 802, 803, -328, -194, 592, 593, 801, 594, 595, 596, + 597, 839, 598, 599, 1361, 1346,-32766, 1040, 841, 804, + 600, 601, 1345, 140, 2, 133, 134, 135, 587, 136, 137, 1064, 755, 756, 757, 138, 38, -110, 1040, 82, 485, 291, -110, 328, -110,-32766,-32766,-32766, 830, 307, -32766,-32766, -110, -110, -110, -110, -110, -110, -110, -110, 749, 748, 291, 107, 108, 109,-32766, 275,-32766,-32766, -32766,-32766,-32766,-32766,-32766, 995, 26, 36, 249, 110, 758,-32766,-32766,-32766, 1116, 1117, 1118, 1115, 1114, 1113, - 1119, -600, 729, -600, 265, 139, 406, 762, 763, 764, + 1119, -610, 729, -610, 265, 139, 406, 762, 763, 764, 765, -342,-32766, 431,-32766,-32766,-32766,-32766, 749, 748, 819, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 795, 587, 796, 797, 798, 799, 787, 788, 347, + 775, 795, 588, 796, 797, 798, 799, 787, 788, 347, 348, 790, 791, 776, 777, 778, 780, 781, 782, 358, - 822, 823, 824, 825, 826, 588, 783, 784, 589, 590, - 610, 807, 805, 806, 818, 802, 803, -328, -194, 591, - 592, 801, 593, 594, 595, 596, 35, 597, 598, 151, - 83, 84, 85, 486, 804, 599, 600, 840, 149, 779, - 750, 751, 752, 753, 754, -597, 755, 756, 757, 792, - 793, 37, -597, 86, 87, 88, 89, 90, 91, 92, + 822, 823, 824, 825, 826, 589, 783, 784, 590, 591, + 611, 807, 805, 806, 818, 802, 803, -328, -194, 592, + 593, 801, 594, 595, 596, 597, 35, 598, 599, 151, + 83, 84, 85, 486, 804, 600, 601, 840, 149, 779, + 750, 751, 752, 753, 754, -607, 755, 756, 757, 792, + 793, 37, -607, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 1037, 275,-32766, -32766,-32766, 963, 964,-32766,-32766,-32766, 965, -193, 127, 110, 384, 383, 959, 758,-32766,-32766,-32766, 129, 1040, - -32766, 425,-32766,-32766,-32766, 1252, 238, 145, 759, 760, + -32766, 425,-32766,-32766,-32766, 1262, 238, 145, 759, 760, 761, 762, 763, 764, 765, 252,-32766, 828,-32766,-32766, - -551, 560, 311, 284, 819, 766, 767, 768, 769, 770, + -561, 561, 311, 284, 819, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 795, 817, 796, 797, 798, 799, 787, 788, 789, 816, 790, 791, 776, 777, 778, 780, 781, 782, 821, 822, 823, 824, 825, 826, 827, - 783, 784, 785, 786, -553, 807, 805, 806, 818, 802, + 783, 784, 785, 786, -563, 807, 805, 806, 818, 802, 803, -85, 239, 794, 800, 801, 808, 809, 811, 810, - 947, 812, 813, 1286, -551, -551, 839, 616, 804, 815, - 814, 50, 51, 52, 516, 53, 54, 104, 105, 106, - -551, 55, 56, 924, 57, -597, 924, -597, 461, 462, - 463, 292, -557,-32766, -551, 393, 1361, 7, 313, 1362, - 359, 382, 383, 1093, 24, 947, -549, 741, -553, -553, + 947, 812, 813, 1296, -561, -561, 839, 617, 804, 815, + 814, 50, 51, 52, 517, 53, 54, 104, 105, 106, + -561, 55, 56, 924, 57, -607, 924, -607, 461, 462, + 463, 292, -567,-32766, -561, 393, 1371, 7, 313, 1372, + 359, 382, 383, 1093, 24, 947, -559, 741, -563, -563, 835, 425, 325, 719,-32766, 1063, 720, -85, 341, 58, - 59,-32766, 152, -193, -548, 60, 1108, 61, 246, 247, - 62, 63, 64, 65, 66, 67, 68, 69, -553, 28, - 267, 70, 446, 517, 288, 364, 75, 1280, 1281, 518, - 1332, 839, 328, 1274, 300, 1278, 42, 19, 519, 866, - 520, 867, 521, 342, 522, 924, 914, 523, 524, 914, - -549, -549, 44, 45, 447, 379, 378,-32766, 46, 525, - 1027, 1026, 1025, 1028, 370, 340, -549, 836, -548, -548, - -591, 1238, -591, 527, 528, 529, 1245,-32766, -556, 1040, - -549, -272, 1037, 832, -548, 531, 532, 372, 1266, 1267, - 1268, 1269, 1271, 1263, 1264, 299, -555, 376, -548, 1040, - 48, 1270, 1265, 291, 1040, 1247, 1246, 1248, 300, 830, - 1037, 71, 1243, 391, 839, 323, 324, 328, 924, -153, - -153, -153, 926, 660, 20, 926, 714, 442, 914, 714, - 679, 680, 1040, 1039, -153, 443, -153, 444, -153, 445, + 59,-32766, 152, -193, -558, 60, 1108, 61, 246, 247, + 62, 63, 64, 65, 66, 67, 68, 69, -563, 28, + 267, 70, 446, 518, 288, 364, 75, 1290, 1291, 519, + 1342, 839, 328, 1284, 300, 1288, 42, 19, 520, 866, + 521, 867, 522, 342, 523, 924, 914, 524, 525, 914, + -559, -559, 44, 45, 447, 379, 378,-32766, 46, 526, + 1027, 1026, 1025, 1028, 370, 340, -559, 836, -558, -558, + -601, 1248, -601, 528, 529, 530, 1255,-32766, -566, 1040, + -559, -272, 1037, 832, -558, 532, 533, 372, 1276, 1277, + 1278, 1279, 1281, 1273, 1274, 299, -565, 376, -558, 1040, + 48, 1280, 1275, 291, 1040, 1257, 1256, 1258, 300, 830, + 1037, 71, 1253, 391, 839, 323, 324, 328, 924, -153, + -153, -153, 926, 661, 20, 926, 714, 442, 914, 714, + 680, 681, 1040, 1039, -153, 443, -153, 444, -153, 445, -153, 845, 288, 28, 267, -87, 431, -84, 721, -78, - 377, 941, 1247, 1246, 1248, 839, 284, 749, 748, 1278, - 834, 963, 964, 154, 301, 302, 526, 716, 329, 924, + 377, 941, 1257, 1256, 1258, 839, 284, 749, 748, 1288, + 834, 963, 964, 154, 301, 302, 527, 716, 329, 924, 155, 900, 959, -110, -110, -110, 32, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 28, 268, 694, 142, 126, 1238, 141, 328, 156, 724, - 328, 914, 839, 158, 926, 33, 1278, -73, 714, -153, - 532, -78, 1266, 1267, 1268, 1269, 1271, 1263, 1264, 1154, - 1156, -58, 1247, 1246, 1248, 1270, 1265, -550, 695, 924, - -547, 1094, 470, 471, -57, 73, 150, 409, 380, 381, - 324, 328, 1238, 385, 386, 651, 652, 749, 748, 696, - 697, 124, 914, 924, -4, 924, 531, 532, -72, 1266, - 1267, 1268, 1269, 1271, 1263, 1264, 125, 130, 1247, 1246, - 1248, 131, 1270, 1265, 284, 144, 159, 980, 160, 749, + 28, 268, 694, 142, 126, 1248, 141, 328, 156, 724, + 328, 914, 839, 158, 926, 33, 1288, -73, 714, -153, + 533, -78, 1276, 1277, 1278, 1279, 1281, 1273, 1274, 1164, + 1166, -58, 1257, 1256, 1258, 1280, 1275, -560, 695, 924, + -557, 1094, 470, 471, -57, 73, 150, 409, 380, 381, + 324, 328, 1248, 385, 386, 652, 653, 749, 748, 696, + 697, 124, 914, 924, -4, 924, 532, 533, -72, 1276, + 1277, 1278, 1279, 1281, 1273, 1274, 125, 130, 1257, 1256, + 1258, 131, 1280, 1275, 284, 144, 159, 980, 160, 749, 748, 714, 73, 731,-32766, 161, 162, 324, 328, 163, - 1245, -550, -550, -302, -547, -547, -71,-32766,-32766,-32766, - 289,-32766, -70,-32766, 290,-32766, -69, -550,-32766, -547, - -547, -68, 914,-32766,-32766,-32766,-32766, -67, -66,-32766, - -32766, -550, 1245, -65, -547,-32766, 422, -46, 926,-32766, + 1255, -560, -560, -302, -557, -557, -71,-32766,-32766,-32766, + 289,-32766, -70,-32766, 290,-32766, -69, -560,-32766, -557, + -557, -68, 914,-32766,-32766,-32766,-32766, -67, -66,-32766, + -32766, -560, 1255, -65, -557,-32766, 422, -46, 926,-32766, -32766,-32766, 714,-32766,-32766,-32766, 914,-32766, 914, -298, -32766, -18, 148, 274, 285,-32766,-32766,-32766, 730, 733, 923,-32766,-32766, 147, 275, 280, 281,-32766, 422, 286, 377, 287, 438, 28, 268, 74,-32766, 298, 334, 293, - 110, 963, 964, -547, -547, 839, 526, 294, 49, 1278, - 689, 530, 959, -110, -110, -110, 146, 830, 926, -547, - -32766, 839, 714, 682, 705, 565, 666, 1123, 667, 23, - 960, 649, 571, -547, 308, 10, 1363, -50, 305, 312, - 614, 306, 926, 1285, 926, 1238, 714, 661, 714, -4, - 707,-32766, 467, 943, -511, 1275, 496, 1211, 1287, -501, - 532, 683, 1266, 1267, 1268, 1269, 1271, 1263, 1264, 132, - 0, 8, 303, 304, 27, 1270, 1265, -585, 300, 1279, - -32766, 838, 0, 0, 0, 73, 1245, 0, 375, 0, + 110, 963, 964, -557, -557, 839, 527, 294, 49, 1288, + 690, 531, 959, -110, -110, -110, 146, 830, 926, -557, + -32766, 839, 714, 683, 705, 566, 667, 1123, 668, 23, + 960, 650, 572, -557, 308, 10, 1373, -50, 305, 312, + 615, 306, 926, 1295, 926, 1248, 714, 662, 714, -4, + 707,-32766, 467, 943, -521, 1285, 496, 1221, 1297, -511, + 533, 684, 1276, 1277, 1278, 1279, 1281, 1273, 1274, 132, + 0, 8, 303, 304, 27, 1280, 1275, -595, 300, 1289, + -32766, 838, 0, 0, 0, 73, 1255, 0, 375, 0, 324, 328, 0,-32766,-32766,-32766, 0,-32766, 0,-32766, 0,-32766, 128, 0,-32766, 0, 0, 0, 0,-32766, - -32766,-32766,-32766, 0, 374,-32766,-32766, 0, 1245, 0, + -32766,-32766,-32766, 0, 374,-32766,-32766, 0, 1255, 0, 924,-32766, 422, -275, 0,-32766,-32766,-32766, 40,-32766, -32766,-32766, 41,-32766, 738, 739,-32766, 858, 905, 924, 1004,-32766,-32766,-32766,-32766, 981, 988,-32766,-32766, 978, - 1245, 989, 903,-32766, 422, 976, 1097,-32766,-32766,-32766, + 1255, 989, 903,-32766, 422, 976, 1097,-32766,-32766,-32766, 1100,-32766,-32766,-32766, 1101,-32766, 850, 1098,-32766, 1099, - 1105, -273, 491,-32766,-32766,-32766,-32766, 1302, 1320,-32766, - -32766, 1354, 1245, 578, 654,-32766, 422, -584, -583,-32766, - -32766,-32766, -557,-32766,-32766,-32766, -556,-32766, -555, -554, - -32766, -495, 1, 914, 29,-32766,-32766,-32766, 30, 39, - 1252,-32766,-32766, 43, 47, 72, 76,-32766, 422, -250, - -250, -250, 914, 77, 78, 377,-32766, 1252, 79, 80, + 1105, -273, 491,-32766,-32766,-32766,-32766, 1312, 1330,-32766, + -32766, 1364, 1255, 579, 655,-32766, 422, -594, -593,-32766, + -32766,-32766, -567,-32766,-32766,-32766, -566,-32766, -565, -564, + -32766, -505, 1, 914, 29,-32766,-32766,-32766, 30, 39, + 1262,-32766,-32766, 43, 47, 72, 76,-32766, 422, -250, + -250, -250, 914, 77, 78, 377,-32766, 1262, 79, 80, 81, 143, 328, 153, 157, 244, 963, 964, -249, -249, - -249, 526, 330, 359, 377, 360, 900, 959, -110, -110, + -249, 527, 330, 359, 377, 360, 900, 959, -110, -110, -110, 361, 362, 363, 364, 963, 964, -16, 365, 366, - 526, 367, 368, 369, 0, 900, 959, -110, -110, -110, - 371, 439, 559, 0, -272,-32766, 12, 13, 14, 926, - 15, 1245, 34, 714, -250, 17, 408, 487,-32766,-32766, + 527, 367, 368, 369, 0, 900, 959, -110, -110, -110, + 371, 439, 560, 0, -272,-32766, 12, 13, 14, 926, + 15, 1255, 34, 714, -250, 17, 408, 487,-32766,-32766, -32766, 839,-32766, 488,-32766, 495,-32766, 498, 926,-32766, 499, 735, 714, -249,-32766,-32766,-32766, 500, 839, 501, - -32766,-32766, 505, 506, 507, 514,-32766, 422, 576, 700, - 1256, 1194, 1276, 1066, 1065,-32766, -110, -110, 1046, 1233, + -32766,-32766, 505, 506, 507, 515,-32766, 422, 577, 700, + 1266, 1204, 1286, 1066, 1065,-32766, -110, -110, 1046, 1243, 1042, -110, -277, -102, 11, 16, 21, -110, 297, 407, - 607, 611, 640, -110, -110, 706,-32766, 1198, -110, 1251, - 1195, 1333, 0, 322, -110, 373, 715, 718, 722, 723, + 608, 612, 641, -110, -110, 706,-32766, 1208, -110, 1261, + 1205, 1343, 0, 322, -110, 373, 715, 718, 722, 723, 725, 726, 727,-32766, 728, 0, 732, 717, 300, 901, - 1358, 75, 1360, 861, 0, 860, 869, 328, 953, 996, - 868, 1359, 952, 950, 951, 300, 954, 1226, 75, 934, - 944, 0, 932, 986, 328, 987, 638, 1357, 1314, 1303, - 1321, 1330 + 1368, 75, 1370, 861, 0, 860, 869, 328, 953, 996, + 868, 1369, 952, 950, 951, 300, 954, 1236, 75, 934, + 944, 0, 932, 986, 328, 987, 639, 1367, 1324, 1313, + 1331, 1340 ); protected array $actionCheck = array( @@ -703,25 +703,25 @@ class Php7 extends \PhpParser\ParserAbstract 787, 589, 788, 788, 788, 854, 855, 798, 822, 494, 480, 643, 288, 623, 822, 822, 817, 615, 798, 822, 798, 822, 778, 822, 822, 822, 798, 822, 819, 545, - 822, 770, 641, 198, 822, 38, 933, 934, 624, 941, - 927, 942, 989, 946, 947, 1072, 919, 953, 931, 948, - 990, 926, 922, 829, 745, 760, 801, 784, 917, 811, - 811, 811, 910, 914, 811, 811, 811, 811, 811, 811, - 811, 811, 745, 774, 844, 816, 963, 761, 765, 1035, - 776, 1084, 771, 961, 1037, 949, 848, 769, 1002, 969, - 1016, 1069, 970, 971, 1003, 1038, 857, 1039, 1085, 826, - 1087, 1088, 885, 976, 1073, 811, 933, 947, 626, 931, - 948, 926, 922, 802, 797, 790, 796, 785, 781, 737, - 775, 821, 1040, 906, 795, 896, 972, 916, 745, 897, - 993, 998, 1004, 1010, 1071, 835, 833, 900, 1090, 977, - 979, 980, 1074, 1041, 1075, 852, 994, 840, 1012, 839, - 1091, 1014, 1017, 1024, 1026, 1076, 1093, 1077, 905, 1078, - 858, 837, 888, 810, 1094, 285, 834, 836, 850, 988, - 498, 960, 1080, 1095, 1096, 1029, 1030, 1031, 1097, 1098, - 951, 860, 995, 809, 997, 991, 865, 866, 659, 842, - 1045, 830, 831, 777, 666, 694, 1099, 1101, 1102, 952, - 827, 813, 869, 871, 1046, 773, 1047, 1104, 699, 872, - 772, 1105, 1036, 779, 780, 705, 728, 715, 783, 838, + 822, 770, 772, 641, 198, 822, 38, 933, 934, 624, + 941, 927, 942, 989, 946, 947, 1072, 919, 953, 931, + 948, 990, 926, 922, 829, 745, 760, 801, 784, 917, + 811, 811, 811, 910, 914, 811, 811, 811, 811, 811, + 811, 811, 811, 745, 774, 844, 816, 963, 761, 765, + 1035, 776, 1084, 771, 961, 1037, 949, 848, 769, 1002, + 969, 1016, 1069, 970, 971, 1003, 1038, 857, 1039, 1085, + 826, 1087, 1088, 885, 976, 1073, 811, 933, 947, 626, + 931, 948, 926, 922, 802, 797, 790, 796, 785, 781, + 737, 775, 821, 1040, 906, 795, 896, 972, 916, 745, + 897, 993, 998, 1004, 1010, 1071, 835, 833, 900, 1090, + 977, 979, 980, 1074, 1041, 1075, 852, 994, 840, 1012, + 839, 1091, 1014, 1017, 1024, 1026, 1076, 1093, 1077, 905, + 1078, 858, 837, 888, 810, 1094, 285, 834, 836, 850, + 988, 498, 960, 1080, 1095, 1096, 1029, 1030, 1031, 1097, + 1098, 951, 860, 995, 809, 997, 991, 865, 866, 659, + 842, 1045, 830, 831, 777, 666, 694, 1099, 1101, 1102, + 952, 827, 813, 869, 871, 1046, 773, 1047, 1104, 699, + 872, 1105, 1036, 779, 780, 705, 728, 715, 783, 838, 1082, 804, 800, 812, 981, 780, 828, 875, 1107, 876, 880, 884, 1032, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -775,10 +775,10 @@ class Php7 extends \PhpParser\ParserAbstract protected array $actionDefault = array( 3,32767, 102,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 100,32767, 603, 603, - 603, 603,32767,32767, 254, 102,32767,32767, 470, 387, - 387, 387,32767,32767, 545, 545, 545, 545, 545, 545, - 32767,32767,32767,32767,32767,32767, 470,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 100,32767, 613, 613, + 613, 613,32767,32767, 254, 102,32767,32767, 480, 397, + 397, 397,32767,32767, 555, 555, 555, 555, 555, 555, + 32767,32767,32767,32767,32767,32767, 480,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, @@ -789,60 +789,60 @@ class Php7 extends \PhpParser\ParserAbstract 32767,32767,32767, 36, 7, 8, 10, 11, 49, 17, 324,32767,32767,32767,32767, 102,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 596,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 606,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 474, 453, - 454, 456, 457, 386, 546, 602, 327, 599, 385, 145, - 339, 329, 242, 330, 258, 475, 259, 476, 479, 480, - 215, 287, 382, 149, 150, 417, 471, 419, 469, 473, - 418, 392, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 390, 391, 472,32767,32767, - 450, 449, 448, 415,32767,32767,32767,32767,32767,32767, - 32767,32767, 102,32767, 416, 420, 389, 423, 421, 422, - 439, 440, 437, 438, 441,32767,32767,32767,32767, 442, - 443, 444, 445, 316,32767,32767, 366, 364, 316, 111, - 32767,32767, 430, 431,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 487, 539, 447,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 385, 484, + 463, 464, 466, 467, 396, 556, 612, 327, 609, 395, + 145, 339, 329, 242, 330, 258, 485, 259, 486, 489, + 490, 215, 382, 149, 150, 427, 481, 429, 479, 483, + 428, 402, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 400, 401, 482,32767,32767, + 460, 459, 458, 425,32767,32767,32767,32767,32767,32767, + 32767,32767, 102,32767, 426, 430, 399, 433, 431, 432, + 449, 450, 447, 448, 451,32767,32767,32767,32767, 452, + 453, 454, 455, 316,32767,32767, 366, 364, 316, 111, + 32767,32767, 440, 441,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 497, 549, 457,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 102,32767, 100, 541, 412, 414, 507, 425, 426, - 424, 393,32767, 514,32767, 102,32767, 516,32767,32767, - 32767,32767,32767,32767,32767, 540,32767, 547, 547,32767, - 500, 100, 195,32767,32767, 515,32767, 195, 195,32767, - 32767,32767,32767,32767,32767,32767,32767, 610, 500, 110, + 32767, 102,32767, 100, 551, 422, 424, 517, 435, 436, + 434, 403,32767, 524,32767, 102,32767, 526,32767,32767, + 32767,32767,32767,32767,32767, 550,32767, 557, 557,32767, + 510, 100, 195,32767,32767, 525,32767, 195, 195,32767, + 32767,32767,32767,32767,32767,32767,32767, 620, 510, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 32767, 195, 110,32767,32767,32767, 100, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 190,32767, 268, - 270, 102, 564, 195,32767, 519,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 512,32767,32767,32767, + 270, 102, 574, 195,32767, 529,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 522,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 500, 435, 138,32767, 138, 547, 427, 428, - 429, 502, 547, 547, 547, 312, 289,32767,32767,32767, - 32767, 517, 100, 100, 100, 100, 512,32767,32767,32767, - 32767, 111, 486, 99, 99, 99, 99, 99, 103, 101, + 32767,32767, 510, 445, 138,32767, 138, 557, 437, 438, + 439, 512, 557, 557, 557, 312, 289,32767,32767,32767, + 32767, 527, 100, 100, 100, 100, 522,32767,32767,32767, + 32767, 111, 496, 99, 99, 99, 99, 99, 103, 101, 32767,32767,32767,32767, 223,32767, 99,32767, 101, 101, - 32767,32767, 223, 225, 212, 101, 227,32767, 568, 569, - 223, 101, 227, 227, 227, 247, 247, 489, 318, 101, - 99, 101, 101, 197, 318, 318,32767, 101, 489, 318, - 489, 318, 199, 318, 318, 318, 489, 318,32767, 101, - 318, 214, 99, 99, 318,32767,32767,32767, 502,32767, - 32767,32767,32767,32767,32767,32767, 222,32767,32767,32767, - 32767,32767,32767,32767,32767, 534,32767, 552, 566, 433, - 434, 436, 551, 549, 458, 459, 460, 461, 462, 463, - 464, 466, 598,32767, 506,32767,32767,32767, 338,32767, - 608,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 609,32767, - 547,32767,32767,32767,32767, 432, 9, 74, 495, 42, - 43, 51, 57, 523, 524, 525, 526, 520, 521, 527, - 522,32767,32767, 529, 574,32767,32767, 548, 601,32767, - 32767,32767,32767,32767,32767, 138,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 534,32767, 136, - 32767,32767,32767,32767,32767,32767,32767,32767, 530,32767, - 32767,32767, 547,32767,32767,32767,32767, 314, 311,32767, + 32767,32767, 223, 225, 212, 101, 227,32767, 578, 579, + 223, 101, 227, 227, 227, 247, 247, 499, 318, 101, + 99, 101, 101, 197, 318, 318,32767, 101, 499, 318, + 499, 318, 199, 318, 318, 318, 499, 318,32767, 101, + 318, 214, 385, 99, 99, 318,32767,32767,32767, 512, + 32767,32767,32767,32767,32767,32767,32767, 222,32767,32767, + 32767,32767,32767,32767,32767,32767, 544,32767, 562, 576, + 443, 444, 446, 561, 559, 468, 469, 470, 471, 472, + 473, 474, 476, 608,32767, 516,32767,32767,32767, 338, + 32767, 618,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 619, + 32767, 557,32767,32767,32767,32767, 442, 9, 74, 505, + 42, 43, 51, 57, 533, 534, 535, 536, 530, 531, + 537, 532,32767,32767, 539, 584,32767,32767, 558, 611, + 32767,32767,32767,32767,32767,32767, 138,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 544,32767, + 136,32767,32767,32767,32767,32767,32767,32767,32767, 540, + 32767,32767,32767, 557,32767,32767,32767,32767, 314, 311, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 547,32767,32767,32767,32767, - 32767, 291,32767, 308,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 557,32767,32767,32767, + 32767,32767, 291,32767, 308,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 286,32767,32767, 381, 502, 294, 296, 297,32767,32767, + 32767,32767,32767, 381, 512, 294, 296, 297,32767,32767, 32767,32767, 360,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767, 152, 152, 3, 3, 341, 152, 152, 152, 341, 341, 152, 341, 341, 341, 152, 152, @@ -851,72 +851,72 @@ class Php7 extends \PhpParser\ParserAbstract ); protected array $goto = array( - 196, 196, 1038, 503, 701, 504, 1069, 433, 665, 625, - 662, 510, 710, 427, 321, 315, 316, 337, 580, 432, - 338, 434, 642, 897, 855, 897, 897, 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, 539, 540, 423, - 541, 544, 545, 546, 547, 548, 549, 550, 551, 1140, - 168, 169, 170, 195, 171, 172, 173, 166, 174, 175, + 197, 197, 1038, 1069, 701, 353, 856, 433, 666, 479, + 1332, 1333, 710, 427, 321, 315, 316, 337, 581, 432, + 338, 434, 643, 897, 855, 897, 897, 167, 167, 167, + 167, 221, 198, 194, 194, 177, 179, 216, 194, 194, + 194, 194, 194, 195, 195, 195, 195, 195, 195, 189, + 190, 191, 192, 193, 218, 216, 219, 540, 541, 423, + 542, 545, 546, 547, 548, 549, 550, 551, 552, 1150, + 168, 169, 170, 196, 171, 172, 173, 166, 174, 175, 176, 178, 215, 217, 220, 240, 243, 254, 255, 257, 258, 259, 260, 261, 262, 263, 264, 269, 270, 271, - 272, 282, 283, 318, 319, 320, 428, 429, 430, 585, + 272, 282, 283, 318, 319, 320, 428, 429, 430, 586, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 180, 237, 181, 198, 199, - 200, 241, 188, 189, 190, 191, 192, 218, 1140, 201, - 182, 183, 184, 202, 198, 185, 242, 203, 201, 165, - 204, 205, 186, 206, 207, 208, 187, 209, 210, 211, - 212, 213, 214, 859, 613, 628, 631, 632, 633, 634, - 655, 656, 657, 712, 856, 460, 279, 279, 279, 279, - 857, 627, 627, 479, 1322, 1323, 604, 1277, 1277, 1277, - 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1220, 948, 465, - 852, 1221, 1224, 949, 1225, 979, 1189, 864, 421, 913, + 232, 233, 234, 235, 236, 180, 237, 181, 199, 200, + 201, 241, 189, 190, 191, 192, 193, 218, 1150, 202, + 182, 183, 184, 203, 199, 185, 242, 204, 202, 165, + 205, 206, 186, 207, 208, 209, 187, 210, 211, 188, + 212, 213, 214, 859, 614, 629, 632, 633, 634, 635, + 656, 657, 658, 712, 469, 469, 279, 279, 279, 279, + 857, 628, 628, 469, 626, 663, 605, 1287, 1287, 1287, + 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1230, 948, 852, + 482, 1231, 1234, 949, 1235, 1111, 1112, 864, 484, 913, 908, 909, 922, 865, 910, 862, 911, 912, 863, 1041, - 1041, 916, 441, 685, 956, 353, 357, 1033, 1049, 1050, - 831, 1091, 1086, 1087, 1088, 890, 357, 357, 356, 356, - 356, 356, 603, 1104, 552, 552, 552, 552, 577, 608, - 357, 357, 713, 852, 357, 837, 1364, 351, 511, 704, - 1244, 1102, 1244, 1244, 1337, 469, 469, 558, 1038, 1038, - 1244, 357, 357, 1038, 469, 1038, 1038, 1111, 1112, 1038, + 1041, 916, 979, 686, 956, 421, 357, 1033, 1049, 1050, + 831, 1091, 1086, 1087, 1088, 465, 357, 357, 356, 356, + 356, 356, 1199, 890, 553, 553, 553, 553, 578, 609, + 357, 357, 852, 344, 357, 837, 1374, 354, 355, 917, + 1254, 918, 1254, 1254, 971, 412, 709, 559, 1038, 1038, + 1254, 357, 357, 1038, 351, 1038, 1038, 345, 344, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, - 1329, 1329, 1329, 1329, 698, 1244, 837, 833, 837, 1000, - 1244, 1244, 1244, 1244, 1044, 1043, 1244, 1244, 1244, 698, - 396, 563, 556, 698, 344, 872, 1347, 1347, 554, 1308, - 554, 554, 971, 412, 709, 930, 1047, 1048, 554, 931, - 884, 575, 946, 871, 1347, 946, 327, 310, 345, 344, - 690, 343, 556, 563, 572, 573, 346, 583, 606, 620, - 621, 1350, 1350, 458, 635, 637, 639, 25, 973, 973, - 973, 973, 664, 482, 458, 967, 974, 1296, 1296, 1137, - 558, 484, 852, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 1296, 1296, 1296, 1293, 1293, 917, 426, 918, 615, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 543, - 543, 5, 1062, 6, 440, 543, 543, 543, 543, 543, - 543, 543, 543, 543, 543, 1003, 1324, 1325, 975, 686, - 736, 581, 618, 555, 1012, 1007, 849, 557, 567, 670, - 339, 557, 877, 567, 962, 1237, 399, 464, 451, 451, - 451, 451, 874, 1319, 405, 1319, 1319, 1235, 619, 472, - 584, 473, 474, 1319, 1017, 1017, 882, 570, 1022, 1355, - 1356, 737, 641, 643, 1075, 886, 663, 740, 1079, 0, - 687, 691, 1014, 699, 708, 1010, 984, 354, 355, 1331, - 1331, 1331, 1331, 542, 542, 880, 250, 250, 1122, 542, - 0, 542, 542, 542, 542, 542, 542, 542, 542, 0, - 326, 276, 326, 326, 658, 659, 1315, 676, 677, 678, - 0, 0, 0, 248, 248, 248, 248, 245, 251, 398, - 401, 564, 605, 609, 0, 0, 1239, 0, 0, 0, - 0, 0, 451, 451, 451, 451, 451, 451, 451, 451, + 1339, 1339, 1339, 1339, 698, 1254, 837, 833, 837, 1347, + 1254, 1254, 1254, 1254, 1047, 1048, 1254, 1254, 1254, 698, + 1000, 564, 557, 698, 604, 1104, 1357, 1357, 555, 1318, + 555, 555, 1044, 1043, 713, 930, 327, 310, 555, 931, + 511, 704, 946, 1102, 1357, 946, 636, 638, 640, 460, + 512, 343, 557, 564, 573, 574, 346, 584, 607, 621, + 622, 1360, 1360, 458, 872, 582, 619, 25, 973, 973, + 973, 973, 1334, 1335, 458, 967, 974, 1306, 1306, 884, + 559, 852, 871, 1306, 1306, 1306, 1306, 1306, 1306, 1306, + 1306, 1306, 1306, 1303, 1303, 426, 441, 616, 396, 1303, + 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 544, + 544, 5, 576, 6, 665, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 1003, 1147, 1062, 975, 440, + 736, 687, 671, 556, 1012, 1007, 339, 558, 568, 849, + 877, 558, 962, 568, 405, 1247, 399, 464, 451, 451, + 451, 451, 620, 1329, 874, 1329, 1329, 1245, 1075, 472, + 585, 473, 474, 1329, 1017, 1017, 882, 571, 1022, 1365, + 1366, 737, 642, 644, 740, 886, 664, 1122, 1079, 0, + 688, 691, 1014, 699, 708, 1010, 984, 1029, 0, 1341, + 1341, 1341, 1341, 543, 543, 880, 250, 250, 0, 543, + 0, 543, 543, 543, 543, 543, 543, 543, 543, 0, + 326, 276, 326, 326, 0, 0, 1325, 435, 0, 0, + 1249, 0, 435, 248, 248, 248, 248, 245, 251, 0, + 1045, 1045, 503, 0, 504, 670, 1056, 1052, 1053, 0, + 510, 0, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 0, 0, 451, 0, 0, 1077, 0, - 410, 411, 1317, 1317, 1077, 674, 0, 675, 0, 414, - 415, 416, 0, 688, 935, 1127, 417, 0, 0, 0, - 349, 623, 1261, 0, 0, 0, 0, 1019, 0, 0, - 1240, 1241, 0, 0, 0, 876, 0, 668, 998, 847, - 0, 0, 0, 870, 885, 873, 1074, 1078, 435, 0, - 0, 0, 0, 435, 0, 1234, 982, 0, 1242, 1305, - 1306, 1045, 1045, 0, 0, 0, 669, 1056, 1052, 1053, + 410, 411, 1327, 1327, 1077, 675, 1271, 676, 0, 414, + 415, 416, 0, 689, 1250, 1251, 417, 935, 1137, 0, + 0, 349, 0, 847, 624, 885, 873, 1074, 1078, 0, + 1019, 659, 660, 0, 677, 678, 679, 982, 876, 0, + 669, 998, 1252, 1315, 1316, 0, 870, 398, 401, 565, + 606, 610, 0, 0, 0, 0, 0, 0, 1244, 0, + 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1120, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1120, 889, 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, 0, 0, @@ -927,8 +927,8 @@ class Php7 extends \PhpParser\ParserAbstract ); protected array $gotoCheck = array( - 42, 42, 73, 155, 73, 155, 127, 66, 66, 56, - 56, 155, 9, 66, 66, 66, 66, 66, 66, 66, + 42, 42, 73, 128, 73, 97, 26, 66, 66, 183, + 183, 183, 9, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 25, 25, 25, 25, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, @@ -944,55 +944,55 @@ 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, 15, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 26, 83, 23, 23, 23, 23, - 27, 108, 108, 178, 178, 178, 130, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 79, 79, 151, - 22, 79, 79, 79, 79, 49, 151, 15, 43, 15, + 81, 81, 81, 81, 154, 154, 23, 23, 23, 23, + 27, 108, 108, 154, 56, 56, 131, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 79, 79, 22, + 84, 79, 79, 79, 79, 145, 145, 15, 84, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 89, - 89, 15, 83, 89, 89, 97, 14, 89, 89, 89, - 6, 15, 15, 15, 15, 45, 14, 14, 24, 24, - 24, 24, 8, 8, 107, 107, 107, 107, 174, 107, - 14, 14, 8, 22, 14, 12, 14, 181, 8, 8, - 73, 8, 73, 73, 183, 149, 149, 14, 73, 73, - 73, 14, 14, 73, 149, 73, 73, 144, 144, 73, + 89, 15, 49, 89, 89, 43, 14, 89, 89, 89, + 6, 15, 15, 15, 15, 156, 14, 14, 24, 24, + 24, 24, 156, 45, 107, 107, 107, 107, 179, 107, + 14, 14, 22, 175, 14, 12, 14, 97, 97, 65, + 73, 65, 73, 73, 93, 93, 93, 14, 73, 73, + 73, 14, 14, 73, 186, 73, 73, 175, 175, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 9, 9, 9, 9, 7, 73, 12, 7, 12, 103, - 73, 73, 73, 73, 118, 118, 73, 73, 73, 7, - 62, 76, 76, 7, 170, 35, 184, 184, 19, 14, - 19, 19, 93, 93, 93, 73, 119, 119, 19, 73, - 35, 104, 9, 35, 184, 9, 171, 171, 170, 170, + 9, 9, 9, 9, 7, 73, 12, 7, 12, 188, + 73, 73, 73, 73, 120, 120, 73, 73, 73, 7, + 103, 76, 76, 7, 8, 8, 189, 189, 19, 14, + 19, 19, 119, 119, 8, 73, 176, 176, 19, 73, + 8, 8, 9, 8, 189, 9, 85, 85, 85, 83, 14, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 184, 184, 19, 85, 85, 85, 76, 19, 19, - 19, 19, 64, 84, 19, 19, 19, 172, 172, 150, - 14, 84, 22, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 173, 173, 65, 13, 65, 13, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 175, - 175, 46, 114, 46, 113, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 50, 180, 180, 50, 116, - 50, 2, 2, 50, 50, 50, 18, 9, 9, 120, - 29, 9, 39, 9, 92, 14, 9, 9, 23, 23, - 23, 23, 37, 130, 28, 130, 130, 162, 80, 9, - 9, 9, 9, 130, 107, 107, 9, 48, 110, 9, - 9, 48, 48, 48, 129, 41, 48, 99, 132, -1, - 48, 48, 48, 48, 48, 48, 96, 97, 97, 130, - 130, 130, 130, 158, 158, 9, 5, 5, 147, 158, - -1, 158, 158, 158, 158, 158, 158, 158, 158, -1, - 24, 24, 24, 24, 86, 86, 130, 86, 86, 86, - -1, -1, -1, 5, 5, 5, 5, 5, 5, 59, - 59, 59, 59, 59, -1, -1, 20, -1, -1, -1, - -1, -1, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, -1, -1, 23, -1, -1, 130, -1, - 82, 82, 130, 130, 130, 82, -1, 82, -1, 82, - 82, 82, -1, 82, 17, 17, 82, -1, -1, -1, - 82, 17, 20, -1, -1, -1, -1, 17, -1, -1, - 20, 20, -1, -1, -1, 17, -1, 17, 17, 20, - -1, -1, -1, 17, 16, 16, 16, 16, 117, -1, - -1, -1, -1, 117, -1, 17, 16, -1, 20, 20, - 20, 117, 117, -1, -1, -1, 117, 117, 117, 117, + 76, 189, 189, 19, 35, 2, 2, 76, 19, 19, + 19, 19, 185, 185, 19, 19, 19, 177, 177, 35, + 14, 22, 35, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 178, 178, 13, 83, 13, 62, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 180, + 180, 46, 104, 46, 64, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 50, 155, 115, 50, 113, + 50, 117, 121, 50, 50, 50, 29, 9, 9, 18, + 39, 9, 92, 9, 28, 14, 9, 9, 23, 23, + 23, 23, 80, 131, 37, 131, 131, 167, 130, 9, + 9, 9, 9, 131, 107, 107, 9, 48, 110, 9, + 9, 48, 48, 48, 99, 41, 48, 148, 133, -1, + 48, 48, 48, 48, 48, 48, 96, 114, -1, 131, + 131, 131, 131, 163, 163, 9, 5, 5, -1, 163, + -1, 163, 163, 163, 163, 163, 163, 163, 163, -1, + 24, 24, 24, 24, -1, -1, 131, 118, -1, -1, + 20, -1, 118, 5, 5, 5, 5, 5, 5, -1, + 118, 118, 160, -1, 160, 118, 118, 118, 118, -1, + 160, -1, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, -1, -1, 23, -1, -1, 131, -1, + 82, 82, 131, 131, 131, 82, 20, 82, -1, 82, + 82, 82, -1, 82, 20, 20, 82, 17, 17, -1, + -1, 82, -1, 20, 17, 16, 16, 16, 16, -1, + 17, 86, 86, -1, 86, 86, 86, 16, 17, -1, + 17, 17, 20, 20, 20, -1, 17, 59, 59, 59, + 59, 59, -1, -1, -1, -1, -1, -1, 17, -1, + -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 16, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 16, 16, -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, -1, -1, @@ -1003,47 +1003,49 @@ class Php7 extends \PhpParser\ParserAbstract ); protected array $gotoBase = array( - 0, 0, -295, 0, 0, 485, 207, 287, 234, -11, - 0, 0, -43, 47, -73, -187, 140, 96, 115, 53, - 131, 0, -79, 173, 235, 20, 170, 176, 105, 132, - 0, 0, 0, 0, 0, -58, 0, 101, 0, 107, - 0, 23, -1, 186, 0, 209, -339, 0, -258, 188, - 404, 0, 0, 0, 0, 0, -31, 0, 0, 474, - 0, 0, 268, 0, 123, 372, -231, 0, 0, 0, + 0, 0, -361, 0, 0, 485, 207, 287, 306, -11, + 0, 0, -43, 46, -73, -187, 121, 99, 118, 53, + 115, 0, -80, 173, 235, 20, 2, 176, 95, 128, + 0, 0, 0, 0, 0, -19, 0, 103, 0, 105, + 0, 23, -1, 203, 0, 217, -339, 0, -258, 205, + 404, 0, 0, 0, 0, 0, 144, 0, 0, 552, + 0, 0, 346, 0, 165, 246, -231, 0, 0, 0, 0, 0, 0, -5, 0, 0, -36, 0, 0, -213, - 102, -196, 56, -104, -109, -128, -218, 0, 0, -61, - 0, 0, 103, 16, 0, 0, 32, -261, 0, 58, - 0, 0, 0, 264, 288, 0, 0, 216, -57, 0, - 86, 0, 0, 126, 128, 0, 135, 325, 24, 40, - 138, 0, 0, 0, 0, 0, 0, 4, 0, 88, - 178, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 43, 0, 231, - 124, -69, 0, 0, 0, -495, 0, 0, 245, 0, - 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, - 15, 13, 129, 145, 219, 161, 0, 0, -119, 0, - 42, 227, 0, 233, 7, 0, 0 + 96, -196, 56, 60, -272, -146, -141, 0, 0, -61, + 0, 0, 101, -42, 0, 0, 32, -481, 0, 55, + 0, 0, 0, 275, 359, 0, 0, 216, -57, 0, + 86, 0, 0, 141, -35, 143, 0, 137, 234, 42, + 18, 131, 0, 0, 0, 0, 0, 0, 1, 0, + 72, 178, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -71, 0, 0, 22, 0, + 0, 0, 0, 0, 140, 171, -33, 0, 0, 0, + 24, 0, 0, 245, 0, 0, 0, 76, 0, 0, + 0, 0, 0, 0, 0, -46, 3, 129, 145, 219, + 161, 0, 0, -293, 0, -12, 244, 0, 268, 7, + 0, 0 ); protected array $gotoDefault = array( - -32768, 515, 744, 4, 745, 939, 820, 829, 601, 533, - 711, 350, 629, 424, 1313, 915, 1126, 582, 848, 1253, - 1227, 459, 851, 332, 734, 927, 898, 899, 402, 388, - 394, 400, 653, 630, 497, 883, 455, 875, 489, 878, - 454, 887, 164, 420, 513, 891, 3, 894, 561, 925, - 977, 389, 902, 390, 681, 904, 566, 906, 907, 397, - 403, 404, 1131, 574, 626, 919, 256, 568, 920, 387, + -32768, 516, 744, 4, 745, 939, 820, 829, 602, 534, + 711, 350, 630, 424, 1323, 915, 1136, 583, 848, 1263, + 1237, 459, 851, 332, 734, 927, 898, 899, 402, 388, + 394, 400, 654, 631, 497, 883, 455, 875, 489, 878, + 454, 887, 164, 420, 514, 891, 3, 894, 562, 925, + 977, 389, 902, 390, 682, 904, 567, 906, 907, 397, + 403, 404, 1141, 575, 627, 919, 256, 569, 920, 387, 921, 929, 392, 395, 692, 468, 508, 502, 413, 1106, - 569, 612, 650, 448, 476, 624, 636, 622, 483, 436, + 570, 613, 651, 448, 476, 625, 637, 623, 483, 436, 418, 331, 961, 969, 490, 466, 983, 352, 991, 742, - 1139, 644, 492, 999, 645, 1006, 1009, 534, 535, 481, - 1021, 273, 1024, 493, 22, 671, 1035, 1036, 672, 646, - 1058, 647, 673, 648, 1060, 475, 602, 1068, 456, 1076, - 1301, 457, 1080, 266, 1083, 278, 419, 437, 1089, 1090, - 9, 1096, 702, 703, 18, 277, 512, 1121, 693, 453, - 1138, 452, 1208, 1210, 562, 494, 1228, 480, 295, 1231, - 684, 509, 1236, 449, 1304, 450, 536, 477, 317, 537, - 1348, 309, 335, 314, 553, 296, 336, 538, 478, 1310, - 1318, 333, 31, 1338, 1349, 579, 617 + 1149, 645, 492, 999, 646, 1006, 1009, 535, 536, 481, + 1021, 273, 1024, 493, 1030, 22, 672, 1035, 1036, 673, + 647, 1058, 648, 674, 649, 1060, 475, 603, 1068, 456, + 1076, 1311, 457, 1080, 266, 1083, 278, 419, 437, 1089, + 1090, 9, 1096, 702, 703, 18, 277, 513, 1121, 693, + -32768,-32768,-32768,-32768, 453, 1148, 452, 1218, 1220, 563, + 494, 1238, 480, 295, 1241, 685, 509, 1246, 449, 1314, + 450, 537, 477, 317, 538, 1358, 309, 335, 314, 554, + 296, 336, 539, 478, 1320, 1328, 333, 31, 1348, 1359, + 580, 618 ); protected array $ruleToNonTerminal = array( @@ -1075,17 +1077,18 @@ class Php7 extends \PhpParser\ParserAbstract 98, 99, 99, 100, 101, 101, 102, 102, 103, 103, 55, 55, 51, 51, 105, 53, 53, 106, 52, 52, 54, 54, 64, 64, 64, 64, 81, 81, 109, 109, - 111, 111, 112, 112, 112, 112, 110, 110, 110, 114, - 114, 114, 114, 89, 89, 117, 117, 117, 118, 118, - 115, 115, 119, 119, 121, 121, 122, 122, 116, 123, - 123, 120, 124, 124, 124, 124, 113, 113, 82, 82, - 82, 20, 20, 20, 126, 125, 125, 127, 127, 127, - 127, 60, 128, 128, 129, 61, 131, 131, 132, 132, - 133, 133, 86, 134, 134, 134, 134, 134, 134, 134, - 139, 139, 140, 140, 141, 141, 141, 141, 141, 142, - 143, 143, 138, 138, 135, 135, 137, 137, 145, 145, - 144, 144, 144, 144, 144, 144, 144, 136, 146, 146, - 148, 147, 147, 62, 104, 149, 149, 56, 56, 42, + 111, 111, 112, 112, 112, 112, 110, 110, 110, 115, + 115, 115, 115, 89, 89, 118, 118, 118, 119, 119, + 116, 116, 120, 120, 122, 122, 123, 123, 117, 124, + 124, 121, 125, 125, 125, 125, 113, 113, 82, 82, + 82, 20, 20, 20, 127, 126, 126, 128, 128, 128, + 128, 60, 129, 129, 130, 61, 132, 132, 133, 133, + 134, 134, 86, 135, 135, 135, 135, 135, 135, 135, + 140, 140, 141, 141, 142, 142, 142, 142, 142, 143, + 144, 144, 139, 139, 136, 136, 138, 138, 146, 146, + 145, 145, 145, 145, 145, 145, 145, 137, 147, 147, + 149, 148, 148, 150, 150, 114, 151, 151, 153, 153, + 153, 152, 152, 62, 104, 154, 154, 56, 56, 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, @@ -1095,21 +1098,21 @@ 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, 42, 42, 156, 158, 158, 159, 150, 150, 155, - 155, 160, 161, 161, 162, 163, 164, 164, 164, 164, - 19, 19, 73, 73, 73, 73, 151, 151, 151, 151, - 166, 166, 152, 152, 154, 154, 154, 157, 157, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, - 173, 173, 108, 175, 175, 175, 175, 153, 153, 153, - 153, 153, 153, 153, 153, 59, 59, 169, 169, 169, - 169, 169, 176, 176, 165, 165, 165, 165, 177, 177, - 177, 177, 177, 177, 74, 74, 66, 66, 66, 66, - 130, 130, 130, 130, 180, 179, 168, 168, 168, 168, - 168, 168, 168, 167, 167, 167, 178, 178, 178, 178, - 107, 174, 182, 182, 181, 181, 183, 183, 183, 183, - 183, 183, 183, 183, 171, 171, 171, 171, 170, 185, - 184, 184, 184, 184, 184, 184, 184, 184, 186, 186, - 186, 186 + 42, 42, 42, 161, 163, 163, 164, 155, 155, 160, + 160, 165, 166, 166, 167, 168, 169, 169, 169, 169, + 19, 19, 73, 73, 73, 73, 156, 156, 156, 156, + 171, 171, 157, 157, 159, 159, 159, 162, 162, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 178, + 178, 178, 108, 180, 180, 180, 180, 158, 158, 158, + 158, 158, 158, 158, 158, 59, 59, 174, 174, 174, + 174, 174, 181, 181, 170, 170, 170, 170, 182, 182, + 182, 182, 182, 182, 74, 74, 66, 66, 66, 66, + 131, 131, 131, 131, 185, 184, 173, 173, 173, 173, + 173, 173, 173, 172, 172, 172, 183, 183, 183, 183, + 107, 179, 187, 187, 186, 186, 188, 188, 188, 188, + 188, 188, 188, 188, 176, 176, 176, 176, 175, 190, + 189, 189, 189, 189, 189, 189, 189, 189, 191, 191, + 191, 191 ); protected array $ruleToLength = array( @@ -1141,7 +1144,7 @@ class Php7 extends \PhpParser\ParserAbstract 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, + 0, 2, 1, 1, 1, 1, 7, 9, 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, @@ -1151,7 +1154,8 @@ class Php7 extends \PhpParser\ParserAbstract 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, + 1, 1, 3, 0, 2, 0, 5, 8, 1, 3, + 3, 0, 2, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 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, @@ -1836,11 +1840,11 @@ protected function initReduceCallbacks(): void { $self->semValue = Modifiers::READONLY; }, 286 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(6-6)], null, $self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-4)], $self->semStack[$stackPos-(6-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-1)]); + $self->semValue = new Node\Param($self->semStack[$stackPos-(7-6)], null, $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-4)], $self->semStack[$stackPos-(7-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-7)]); $self->checkParam($self->semValue); }, 287 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(8-6)], $self->semStack[$stackPos-(8-8)], $self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(8-2)], $self->semStack[$stackPos-(8-1)]); + $self->semValue = new Node\Param($self->semStack[$stackPos-(9-6)], $self->semStack[$stackPos-(9-8)], $self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-4)], $self->semStack[$stackPos-(9-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(9-2)], $self->semStack[$stackPos-(9-1)], $self->semStack[$stackPos-(9-9)]); $self->checkParam($self->semValue); }, 288 => static function ($self, $stackPos) { @@ -2098,654 +2102,686 @@ protected function initReduceCallbacks(): void { 382 => static function ($self, $stackPos) { $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 383 => null, - 384 => null, + 383 => static function ($self, $stackPos) { + $self->semValue = []; + }, + 384 => static function ($self, $stackPos) { + $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; + }, 385 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; + $self->semValue = []; }, 386 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); + $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-5)], ['flags' => $self->semStack[$stackPos-(5-2)], 'byRef' => $self->semStack[$stackPos-(5-3)], 'params' => [], 'attrGroups' => $self->semStack[$stackPos-(5-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); + $self->checkPropertyHook($self->semValue, null); }, 387 => static function ($self, $stackPos) { - $self->semValue = array(); + $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-8)], ['flags' => $self->semStack[$stackPos-(8-2)], 'byRef' => $self->semStack[$stackPos-(8-3)], 'params' => $self->semStack[$stackPos-(8-6)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); + $self->checkPropertyHook($self->semValue, $stackPos-(8-5)); + }, + 388 => static function ($self, $stackPos) { + $self->semValue = null; + }, + 389 => static function ($self, $stackPos) { + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 388 => null, - 389 => null, 390 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, 391 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = 0; }, 392 => static function ($self, $stackPos) { + $self->checkPropertyHookModifiers($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; + }, + 393 => null, + 394 => null, + 395 => static function ($self, $stackPos) { + $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; + }, + 396 => static function ($self, $stackPos) { + $self->semValue = array($self->semStack[$stackPos-(1-1)]); + }, + 397 => static function ($self, $stackPos) { + $self->semValue = array(); + }, + 398 => null, + 399 => null, + 400 => static function ($self, $stackPos) { + $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + }, + 401 => static function ($self, $stackPos) { + $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + }, + 402 => static function ($self, $stackPos) { $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 393 => static function ($self, $stackPos) { + 403 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 394 => static function ($self, $stackPos) { + 404 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); if (!$self->phpVersion->allowsAssignNewByReference()) { $self->emitError(new Error('Cannot assign new by reference', $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]))); } }, - 395 => null, - 396 => null, - 397 => static function ($self, $stackPos) { + 405 => null, + 406 => null, + 407 => static function ($self, $stackPos) { $self->semValue = new Expr\Clone_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 398 => static function ($self, $stackPos) { + 408 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 399 => static function ($self, $stackPos) { + 409 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 400 => static function ($self, $stackPos) { + 410 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 401 => static function ($self, $stackPos) { + 411 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 402 => static function ($self, $stackPos) { + 412 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 403 => static function ($self, $stackPos) { + 413 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 404 => static function ($self, $stackPos) { + 414 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 405 => static function ($self, $stackPos) { + 415 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 406 => static function ($self, $stackPos) { + 416 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 407 => static function ($self, $stackPos) { + 417 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 408 => static function ($self, $stackPos) { + 418 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 409 => static function ($self, $stackPos) { + 419 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 410 => static function ($self, $stackPos) { + 420 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 411 => static function ($self, $stackPos) { + 421 => static function ($self, $stackPos) { $self->semValue = new Expr\PostInc($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 412 => static function ($self, $stackPos) { + 422 => static function ($self, $stackPos) { $self->semValue = new Expr\PreInc($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 413 => static function ($self, $stackPos) { + 423 => static function ($self, $stackPos) { $self->semValue = new Expr\PostDec($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 414 => static function ($self, $stackPos) { + 424 => static function ($self, $stackPos) { $self->semValue = new Expr\PreDec($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 415 => static function ($self, $stackPos) { + 425 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BooleanOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 416 => static function ($self, $stackPos) { + 426 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BooleanAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 417 => static function ($self, $stackPos) { + 427 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\LogicalOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 418 => static function ($self, $stackPos) { + 428 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\LogicalAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 419 => static function ($self, $stackPos) { + 429 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\LogicalXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 420 => static function ($self, $stackPos) { + 430 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 421 => static function ($self, $stackPos) { + 431 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 422 => static function ($self, $stackPos) { + 432 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 423 => static function ($self, $stackPos) { + 433 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 424 => static function ($self, $stackPos) { + 434 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 425 => static function ($self, $stackPos) { + 435 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 426 => static function ($self, $stackPos) { + 436 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 427 => static function ($self, $stackPos) { + 437 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 428 => static function ($self, $stackPos) { + 438 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 429 => static function ($self, $stackPos) { + 439 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 430 => static function ($self, $stackPos) { + 440 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 431 => static function ($self, $stackPos) { + 441 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 432 => static function ($self, $stackPos) { + 442 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 433 => static function ($self, $stackPos) { + 443 => static function ($self, $stackPos) { $self->semValue = new Expr\UnaryPlus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 434 => static function ($self, $stackPos) { + 444 => static function ($self, $stackPos) { $self->semValue = new Expr\UnaryMinus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 435 => static function ($self, $stackPos) { + 445 => static function ($self, $stackPos) { $self->semValue = new Expr\BooleanNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 436 => static function ($self, $stackPos) { + 446 => static function ($self, $stackPos) { $self->semValue = new Expr\BitwiseNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 437 => static function ($self, $stackPos) { + 447 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Identical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 438 => static function ($self, $stackPos) { + 448 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\NotIdentical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 439 => static function ($self, $stackPos) { + 449 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Equal($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 440 => static function ($self, $stackPos) { + 450 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\NotEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 441 => static function ($self, $stackPos) { + 451 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Spaceship($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 442 => static function ($self, $stackPos) { + 452 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Smaller($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 443 => static function ($self, $stackPos) { + 453 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\SmallerOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 444 => static function ($self, $stackPos) { + 454 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Greater($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 445 => static function ($self, $stackPos) { + 455 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\GreaterOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 446 => static function ($self, $stackPos) { + 456 => static function ($self, $stackPos) { $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 447 => static function ($self, $stackPos) { + 457 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 448 => static function ($self, $stackPos) { + 458 => static function ($self, $stackPos) { $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, - 449 => static function ($self, $stackPos) { + 459 => static function ($self, $stackPos) { $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 450 => static function ($self, $stackPos) { + 460 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 451 => static function ($self, $stackPos) { + 461 => static function ($self, $stackPos) { $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 452 => static function ($self, $stackPos) { + 462 => static function ($self, $stackPos) { $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 453 => static function ($self, $stackPos) { + 463 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 454 => static function ($self, $stackPos) { + 464 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 455 => static function ($self, $stackPos) { + 465 => static function ($self, $stackPos) { $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 456 => static function ($self, $stackPos) { + 466 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 457 => static function ($self, $stackPos) { + 467 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 458 => static function ($self, $stackPos) { + 468 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 459 => static function ($self, $stackPos) { + 469 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = $self->getFloatCastKind($self->semStack[$stackPos-(2-1)]); $self->semValue = new Expr\Cast\Double($self->semStack[$stackPos-(2-2)], $attrs); }, - 460 => static function ($self, $stackPos) { + 470 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 461 => static function ($self, $stackPos) { + 471 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Array_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 462 => static function ($self, $stackPos) { + 472 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Object_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 463 => static function ($self, $stackPos) { + 473 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 464 => static function ($self, $stackPos) { + 474 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Unset_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 465 => static function ($self, $stackPos) { + 475 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = strtolower($self->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $self->semValue = new Expr\Exit_($self->semStack[$stackPos-(2-2)], $attrs); }, - 466 => static function ($self, $stackPos) { + 476 => static function ($self, $stackPos) { $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 467 => null, - 468 => static function ($self, $stackPos) { + 477 => null, + 478 => static function ($self, $stackPos) { $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 469 => static function ($self, $stackPos) { + 479 => static function ($self, $stackPos) { $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 470 => static function ($self, $stackPos) { + 480 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 471 => static function ($self, $stackPos) { + 481 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(2-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 472 => static function ($self, $stackPos) { + 482 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 473 => static function ($self, $stackPos) { + 483 => static function ($self, $stackPos) { $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 474 => static function ($self, $stackPos) { + 484 => static function ($self, $stackPos) { $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 475 => static function ($self, $stackPos) { + 485 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'returnType' => $self->semStack[$stackPos-(8-6)], 'expr' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); }, - 476 => static function ($self, $stackPos) { + 486 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 477 => static function ($self, $stackPos) { + 487 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'uses' => $self->semStack[$stackPos-(8-6)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); }, - 478 => static function ($self, $stackPos) { + 488 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 479 => static function ($self, $stackPos) { + 489 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 480 => static function ($self, $stackPos) { + 490 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'returnType' => $self->semStack[$stackPos-(10-8)], 'expr' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); }, - 481 => static function ($self, $stackPos) { + 491 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 482 => static function ($self, $stackPos) { + 492 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'uses' => $self->semStack[$stackPos-(10-8)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); }, - 483 => static function ($self, $stackPos) { + 493 => static function ($self, $stackPos) { $self->semValue = array(new Stmt\Class_(null, ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])), $self->semStack[$stackPos-(8-3)]); $self->checkClass($self->semValue[0], -1); }, - 484 => static function ($self, $stackPos) { + 494 => static function ($self, $stackPos) { $self->semValue = new Expr\New_($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 485 => static function ($self, $stackPos) { + 495 => static function ($self, $stackPos) { list($class, $ctorArgs) = $self->semStack[$stackPos-(2-2)]; $self->semValue = new Expr\New_($class, $ctorArgs, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 486 => static function ($self, $stackPos) { + 496 => static function ($self, $stackPos) { $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 487 => null, - 488 => null, - 489 => static function ($self, $stackPos) { + 497 => null, + 498 => null, + 499 => static function ($self, $stackPos) { $self->semValue = array(); }, - 490 => static function ($self, $stackPos) { + 500 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(4-3)]; }, - 491 => null, - 492 => static function ($self, $stackPos) { + 501 => null, + 502 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 493 => static function ($self, $stackPos) { + 503 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 494 => static function ($self, $stackPos) { + 504 => static function ($self, $stackPos) { $self->semValue = new Node\ClosureUse($self->semStack[$stackPos-(2-2)], $self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 495 => static function ($self, $stackPos) { + 505 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 496 => static function ($self, $stackPos) { + 506 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 497 => static function ($self, $stackPos) { + 507 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 498 => static function ($self, $stackPos) { + 508 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 499 => static function ($self, $stackPos) { + 509 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 500 => static function ($self, $stackPos) { + 510 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 501 => null, - 502 => static function ($self, $stackPos) { + 511 => null, + 512 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 503 => static function ($self, $stackPos) { + 513 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 504 => static function ($self, $stackPos) { + 514 => static function ($self, $stackPos) { $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 505 => static function ($self, $stackPos) { + 515 => static function ($self, $stackPos) { $self->semValue = new Name\Relative(substr($self->semStack[$stackPos-(1-1)], 10), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 506 => null, - 507 => null, - 508 => static function ($self, $stackPos) { + 516 => null, + 517 => null, + 518 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 509 => static function ($self, $stackPos) { + 519 => static function ($self, $stackPos) { $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 510 => null, - 511 => null, - 512 => static function ($self, $stackPos) { + 520 => null, + 521 => null, + 522 => static function ($self, $stackPos) { $self->semValue = null; }, - 513 => static function ($self, $stackPos) { + 523 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 514 => static function ($self, $stackPos) { + 524 => static function ($self, $stackPos) { $self->semValue = array(); }, - 515 => static function ($self, $stackPos) { + 525 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; }, - 516 => static function ($self, $stackPos) { + 526 => static function ($self, $stackPos) { foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)]; }, - 517 => static function ($self, $stackPos) { + 527 => static function ($self, $stackPos) { $self->semValue = array(); }, - 518 => null, - 519 => static function ($self, $stackPos) { + 528 => null, + 529 => static function ($self, $stackPos) { $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 520 => static function ($self, $stackPos) { + 530 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 521 => static function ($self, $stackPos) { + 531 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 522 => static function ($self, $stackPos) { + 532 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 523 => static function ($self, $stackPos) { + 533 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 524 => static function ($self, $stackPos) { + 534 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 525 => static function ($self, $stackPos) { + 535 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 526 => static function ($self, $stackPos) { + 536 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 527 => static function ($self, $stackPos) { + 537 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 528 => static function ($self, $stackPos) { + 538 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 529 => static function ($self, $stackPos) { + 539 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 530 => static function ($self, $stackPos) { + 540 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, - 531 => static function ($self, $stackPos) { + 541 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 532 => static function ($self, $stackPos) { + 542 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT; $self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs); }, - 533 => static function ($self, $stackPos) { + 543 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG; $self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs); $self->createdArrays->attach($self->semValue); }, - 534 => static function ($self, $stackPos) { + 544 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue); }, - 535 => static function ($self, $stackPos) { + 545 => static function ($self, $stackPos) { $self->semValue = Scalar\String_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->supportsUnicodeEscapes()); }, - 536 => static function ($self, $stackPos) { + 546 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($self->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = new Scalar\InterpolatedString($self->semStack[$stackPos-(3-2)], $attrs); }, - 537 => static function ($self, $stackPos) { + 547 => static function ($self, $stackPos) { $self->semValue = $self->parseLNumber($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->allowsInvalidOctals()); }, - 538 => static function ($self, $stackPos) { + 548 => static function ($self, $stackPos) { $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 539 => null, - 540 => null, - 541 => null, - 542 => static function ($self, $stackPos) { + 549 => null, + 550 => null, + 551 => null, + 552 => static function ($self, $stackPos) { $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); }, - 543 => static function ($self, $stackPos) { + 553 => static function ($self, $stackPos) { $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)], $self->tokenEndStack[$stackPos-(2-2)]), true); }, - 544 => static function ($self, $stackPos) { + 554 => static function ($self, $stackPos) { $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); }, - 545 => static function ($self, $stackPos) { + 555 => static function ($self, $stackPos) { $self->semValue = null; }, - 546 => null, - 547 => null, - 548 => static function ($self, $stackPos) { + 556 => null, + 557 => null, + 558 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 549 => null, - 550 => null, - 551 => null, - 552 => null, - 553 => null, - 554 => null, - 555 => static function ($self, $stackPos) { + 559 => null, + 560 => null, + 561 => null, + 562 => null, + 563 => null, + 564 => null, + 565 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 556 => null, - 557 => null, - 558 => null, - 559 => static function ($self, $stackPos) { + 566 => null, + 567 => null, + 568 => null, + 569 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 560 => static function ($self, $stackPos) { + 570 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 561 => null, - 562 => static function ($self, $stackPos) { + 571 => null, + 572 => static function ($self, $stackPos) { $self->semValue = new Expr\MethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 563 => static function ($self, $stackPos) { + 573 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafeMethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 564 => static function ($self, $stackPos) { + 574 => static function ($self, $stackPos) { $self->semValue = null; }, - 565 => null, - 566 => null, - 567 => null, - 568 => static function ($self, $stackPos) { + 575 => null, + 576 => null, + 577 => null, + 578 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 569 => static function ($self, $stackPos) { + 579 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 570 => null, - 571 => static function ($self, $stackPos) { + 580 => null, + 581 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 572 => static function ($self, $stackPos) { + 582 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 573 => static function ($self, $stackPos) { + 583 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])), $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 574 => static function ($self, $stackPos) { + 584 => static function ($self, $stackPos) { $var = $self->semStack[$stackPos-(1-1)]->name; $self->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])) : $var; }, - 575 => static function ($self, $stackPos) { + 585 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 576 => null, - 577 => static function ($self, $stackPos) { + 586 => null, + 587 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 578 => static function ($self, $stackPos) { + 588 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 579 => static function ($self, $stackPos) { + 589 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 580 => static function ($self, $stackPos) { + 590 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 581 => static function ($self, $stackPos) { + 591 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 582 => static function ($self, $stackPos) { + 592 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 583 => null, - 584 => static function ($self, $stackPos) { + 593 => null, + 594 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 585 => null, - 586 => null, - 587 => static function ($self, $stackPos) { + 595 => null, + 596 => null, + 597 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 588 => null, - 589 => static function ($self, $stackPos) { + 598 => null, + 599 => static function ($self, $stackPos) { $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 590 => static function ($self, $stackPos) { + 600 => static function ($self, $stackPos) { $self->semValue = new Expr\List_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); $self->semValue->setAttribute('kind', Expr\List_::KIND_LIST); $self->postprocessList($self->semValue); }, - 591 => static function ($self, $stackPos) { + 601 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(1-1)]; $end = count($self->semValue)-1; if ($self->semValue[$end]->value instanceof Expr\Error) array_pop($self->semValue); }, - 592 => null, - 593 => static function ($self, $stackPos) { + 602 => null, + 603 => static function ($self, $stackPos) { /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */ }, - 594 => static function ($self, $stackPos) { + 604 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 595 => static function ($self, $stackPos) { + 605 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 596 => static function ($self, $stackPos) { + 606 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 597 => static function ($self, $stackPos) { + 607 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 598 => static function ($self, $stackPos) { + 608 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 599 => static function ($self, $stackPos) { + 609 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 600 => static function ($self, $stackPos) { + 610 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 601 => static function ($self, $stackPos) { + 611 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 602 => static function ($self, $stackPos) { + 612 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true); }, - 603 => static function ($self, $stackPos) { + 613 => static function ($self, $stackPos) { /* Create an Error node now to remember the position. We'll later either report an error, or convert this into a null element, depending on whether this is a creation or destructuring context. */ $attrs = $self->createEmptyElemAttributes($self->tokenPos); $self->semValue = new Node\ArrayItem(new Expr\Error($attrs), null, false, $attrs); }, - 604 => static function ($self, $stackPos) { + 614 => static function ($self, $stackPos) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, - 605 => static function ($self, $stackPos) { + 615 => static function ($self, $stackPos) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, - 606 => static function ($self, $stackPos) { + 616 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 607 => static function ($self, $stackPos) { + 617 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]); }, - 608 => static function ($self, $stackPos) { + 618 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs); }, - 609 => static function ($self, $stackPos) { + 619 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 610 => null, - 611 => static function ($self, $stackPos) { + 620 => null, + 621 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 612 => static function ($self, $stackPos) { + 622 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 613 => static function ($self, $stackPos) { + 623 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 614 => static function ($self, $stackPos) { + 624 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 615 => static function ($self, $stackPos) { + 625 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 616 => static function ($self, $stackPos) { + 626 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); }, - 617 => static function ($self, $stackPos) { + 627 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 618 => static function ($self, $stackPos) { + 628 => static function ($self, $stackPos) { $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 619 => static function ($self, $stackPos) { + 629 => static function ($self, $stackPos) { $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 620 => static function ($self, $stackPos) { + 630 => static function ($self, $stackPos) { $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 621 => null, + 631 => null, ]; } } diff --git a/lib/PhpParser/Parser/Php8.php b/lib/PhpParser/Parser/Php8.php index c9c53ff306..adaec8c91c 100644 --- a/lib/PhpParser/Parser/Php8.php +++ b/lib/PhpParser/Parser/Php8.php @@ -162,15 +162,15 @@ class Php8 extends \PhpParser\ParserAbstract protected int $tokenToSymbolMapSize = 397; protected int $actionTableSize = 1278; - protected int $gotoTableSize = 631; + protected int $gotoTableSize = 660; protected int $invalidSymbol = 169; protected int $errorSymbol = 1; protected int $defaultAction = -32766; protected int $unexpectedTokenRule = 32767; - protected int $YY2TBLSTATE = 433; - protected int $numNonLeafStates = 739; + protected int $YY2TBLSTATE = 442; + protected int $numNonLeafStates = 754; protected array $symbolToName = array( "EOF", @@ -388,240 +388,240 @@ class Php8 extends \PhpParser\ParserAbstract ); protected array $action = array( - 131, 132, 133, 582, 134, 135, 1311, 751, 752, 753, - 136, 38,-32766,-32766,-32766, 941,-32766,-32766,-32766, 481, - 0, 380, 379, 826,-32767,-32767,-32767,-32767, 102, 103, - 104, 421, 235,-32766, 1089, 745, 744,-32766, 737,-32766, + 131, 132, 133, 592, 134, 135, 1338, 766, 767, 768, + 136, 38,-32766,-32766,-32766, 1005,-32766,-32766,-32766,-32766, + -32766, 389, 388, 841,-32767,-32767,-32767,-32767, 102, 103, + 104, 430, 956,-32766, 0, 760, 759,-32766, 852,-32766, -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, - -32767,-32766,-32766,-32766, 24, 754,-32766,-32766,-32766, 1112, - 1113, 1114, 1111, 1110, 1109, 1115, -328, 1088, 1027, 261, - 137, 402, 758, 759, 760, 761, 1104,-32766, 427,-32766, - -32766,-32766,-32766,-32766, 606, 815, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 791, 583, 792, 793, - 794, 795, 783, 784, 341, 342, 786, 787, 772, 773, - 774, 776, 777, 778, 354, 818, 819, 820, 821, 822, - 584, 779, 780, 585, 586, -194, 803, 801, 802, 814, - 798, 799, 2, -193, 587, 588, 797, 589, 590, 591, - 592, 26, 593, 594, 378, 379, 457, 458, 459, 800, - 595, 596, 482, 138, 421, 131, 132, 133, 582, 134, - 135, 1060, 751, 752, 753, 136, 38, -110, 835, 82, - 35, 1345, -110, 319, -110,-32766,-32766,-32766, 725, 301, - 234, -272, -110, -110, -110, -110, -110, -110, -110, -110, - 745, 744,-32766,-32766,-32766, 127,-32766, 294,-32766,-32766, + -32767,-32766,-32766,-32766, 24, 769,-32766,-32766,-32766, 1128, + 1129, 1130, 1127, 1126, 1125, 1131, -328, 1104, 843, 263, + 137, 411, 773, 774, 775, 776, 1120,-32766, 436,-32766, + -32766,-32766,-32766,-32766, 158, 830, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 806, 593, 807, 808, + 809, 810, 798, 799, 345, 346, 801, 802, 787, 788, + 789, 791, 792, 793, 360, 833, 834, 835, 836, 837, + 594, 794, 795, 595, 596, -194, 818, 816, 817, 829, + 813, 814,-32766, 1042, 597, 598, 812, 599, 600, 601, + 602, -193, 603, 604, 1006, 845, 466, 467, 468, 815, + 605, 606, 723, 138, 1051, 131, 132, 133, 592, 134, + 135, 1075, 766, 767, 768, 136, 38, -110, 850, 82, + -85, 1372, -110, 322, -110,-32766,-32766,-32766, 291, 304, + 760, 759, -110, -110, -110, -110, -110, -110, -110, -110, + 760, 759,-32766,-32766,-32766, 736,-32766, 851,-32766,-32766, -32766,-32766,-32766,-32766,-32766, 105, 106, 107, 108, 109, - 754, 271, 143,-32766,-32766,-32766,-32766,-32766,-32766, 828, - 248, -328, 831, 110, 261, 137, 402, 758, 759, 760, - 761, -342, 990, 427, 36, 245, 1036, 862,-32766, 863, - 815, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 791, 583, 792, 793, 794, 795, 783, 784, 341, - 342, 786, 787, 772, 773, 774, 776, 777, 778, 354, - 818, 819, 820, 821, 822, 584, 779, 780, 585, 586, - -194, 803, 801, 802, 814, 798, 799, 834, -193, 587, - 588, 797, 589, 590, 591, 592, 830, 593, 594, 832, - 83, 84, 85, 712, 800, 595, 596, 305, 147, 775, - 746, 747, 748, 749, 750, 556, 751, 752, 753, 788, - 789, 37, 943, 86, 87, 88, 89, 90, 91, 92, + 769, 273, 237,-32766, 2,-32766,-32766,-32766,-32766, 103, + 104, -328, 1297, 110, 263, 137, 411, 773, 774, 775, + 776, -342, 751, 436, 36, 247, -85, 877, 846, 878, + 830, 777, 778, 779, 780, 781, 782, 783, 784, 785, + 786, 806, 593, 807, 808, 809, 810, 798, 799, 345, + 346, 801, 802, 787, 788, 789, 791, 792, 793, 360, + 833, 834, 835, 836, 837, 594, 794, 795, 595, 596, + -194, 818, 816, 817, 829, 813, 814, 849, -562, 597, + 598, 812, 599, 600, 601, 602, -193, 603, 604,-32766, + 83, 84, 85, 850, 815, 605, 606, 162, 147, 790, + 761, 762, 763, 764, 765, 847, 766, 767, 768, 803, + 804, 37, 26, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109,-32766, 271,-32766, - -32766,-32766, 1112, 1113, 1114, 1111, 1110, 1109, 1115, 307, - 110, 991, 355, 1033, 754,-32766,-32766,-32766, 316, 1036, - -32766, 289,-32766,-32766,-32766, -85, 837, 1282, 755, 756, - 757, 758, 759, 760, 761, 1036,-32766, 824,-32766,-32766, - -551, 427, 1248, 288, 815, 762, 763, 764, 765, 766, - 767, 768, 769, 770, 771, 791, 813, 792, 793, 794, - 795, 783, 784, 785, 812, 786, 787, 772, 773, 774, - 776, 777, 778, 817, 818, 819, 820, 821, 822, 823, - 779, 780, 781, 782, 1033, 803, 801, 802, 814, 798, - 799, -85, 335, 790, 796, 797, 804, 805, 807, 806, - 336, 808, 809, 943, -551, -551, 1036,-32766, 800, 811, - 810, 50, 51, 52, 512, 53, 54, 1243, 1242, 1244, - -551, 55, 56, 835, 57,-32766, 1090, 920, 920, 1036, - 279, 289, -557, 959, 960, 612, 368, -367, 961, -367, - -32766,-32766,-32766, 360, 955, 126,-32766, 1330, 1326, 389, - 862, 7, 863, 288, 1329, 1059, 372, 715, 716, 387, - 58, 59, 284, 1355, 920, 60, 1356, 61, 242, 243, + 103, 104, 105, 106, 107, 108, 109, 1048, 273,-32766, + -32766,-32766, -562, -562, 616, 387, 388,-32766,-32766,-32766, + 110, -272, 126, 35, 769, 430, 974, 975, -562, 1051, + -32766, 976,-32766,-32766,-32766, 490, 127, 970, 770, 771, + 772, 773, 774, 775, 776, 139, 1105, 839, 143, 322, + 749, 436, 1275, 282, 830, 777, 778, 779, 780, 781, + 782, 783, 784, 785, 786, 806, 828, 807, 808, 809, + 810, 798, 799, 800, 827, 801, 802, 787, 788, 789, + 791, 792, 793, 832, 833, 834, 835, 836, 837, 838, + 794, 795, 796, 797, 149, 818, 816, 817, 829, 813, + 814, 566, -565, 805, 811, 812, 819, 820, 822, 821, + 236, 823, 824, 1144,-32766,-32766,-32766, 741, 815, 826, + 825, 50, 51, 52, 522, 53, 54, 1270, 1269, 1271, + -32766, 55, 56, 850, 57,-32766, 1106,-32766,-32766, 1048, + 150, 292, 1128, 1129, 1130, 1127, 1126, 1125, 1131, 250, + 974, 975, 1051, 1357, 308, 976, -563, -601, 1353, -601, + 1356, 1051, -368, 1309, -368, 1074, -565, -565, 491, 310, + 58, 59, 622, 319, 935, 60, 958, 61, 244, 245, 62, 63, 64, 65, 66, 67, 68, 69,-32766, 28, - 263, 70, 442, 513, 283, 836, 438, 1276, 1277, 514, - 439, 835, -553, 440, 717, 1274, 42, 19, 515, 920, - 516, 441, 517, 75, 518, 920, 149, 519, 520, 319, - 910, 910, 44, 45, 443, 375, 374,-32766, 46, 521, - 1023, 1022, 1021, 1024, 366, 334, 1270, 826, -589, 720, - -589, 1234, 841, 523, 524, 525, 1241, -549, -78, 1036, - 745, 744,-32766,-32766, -548, 527, 528, 910, 1262, 1263, - 1264, 1265, 1267, 1259, 1260, 293, -553, -553, 745, 744, - 150, 1266, 1261, 288, 152, 1243, 1242, 1244, 294, 153, - 1033, 71, 1239, 28, 264, 314, 315, 319, 154, -153, - -153, -153, 910, 920, 156, 835, 922, 922, 910, 1274, - 710, 710, 1036, 1035, -153, 33, -153, -87, -153, -58, - -153, -549, -549, 103, 104, 656, 20, 835, -548, -548, - 373, 140, 1243, 1242, 1244, 319, 279, -549,-32766,-32766, - -57, 959, 960, 976, -548, 1234, 522, 710, 124, -556, - -84, 896, 955, -110, -110, -110, -555, 675, 676, 527, - 528, 125, 1262, 1263, 1264, 1265, 1267, 1259, 1260, 148, - 405, 745, 744, 128, 283, 1266, 1261, -550, 922, 376, - 377, 129, 710, -547, 922, 73, 910, 49, 710, -153, - 315, 319, 32, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 381, 382,-32766, 139, - -4, 920, 142, 319, 1241, 647, 648, 157, 745, 744, - 158,-32766,-32766,-32766, 690,-32766, -78,-32766, 48,-32766, - 159, 160,-32766, 161, 920, 1150, 1152,-32766,-32766,-32766, - -73, -550, -550,-32766,-32766, 285, -547, -547, -547,-32766, - 418, 297, 298, -72, -71,-32766, 320, -550,-32766, -70, - 691, 1241, 922, -547, 727, -69, 710, 371,-32766,-32766, - -32766, -68,-32766, -67,-32766, -66,-32766, -65, -46,-32766, - -18, 692, 693, 146,-32766,-32766,-32766, 270, 280, 74, - -32766,-32766, 295, 296, 910, 726,-32766, 418, 729, 919, - 1243, 1242, 1244, 145, -302,-32766, 279, 290, -298, 277, - -547, -547, 278, 28, 263, 281, 373, 910, 434, 282, - 466, 467, 325, 292, 937, 835, -547, 959, 960, 1274, - 291, 110, 522, 144, 826, 271, 685, 526, 955, -110, - -110, -110, 835, 1119, 561, 701, 28, 264, 657, 1357, - 23, 663, 645, 956, 300, 302,-32766,-32766, 835, 299, - 1281, 10, 1274, 306, 294, 1234, 1283, 703, -511, -583, - 922, 939, 40, 678, 710, -4, -501, 662, 567, 463, - 528, 0, 1262, 1263, 1264, 1265, 1267, 1259, 1260, 492, - -50, 679, 610, 922, -582, 1266, 1261, 710, 1234, -581, - 8, 834, 1207, 319, 0, 73, 0, 0, 41, 0, - 315, 319, 0, 528, 0, 1262, 1263, 1264, 1265, 1267, - 1259, 1260, 130, 0, 0, 0, 0, 0, 1266, 1261, - 0, 0, 0,-32766, 0, 27, 0, 0, 73, 1241, - 370, 0, 0, 315, 319, -557,-32766,-32766,-32766, 734, - -32766, -275,-32766, 0,-32766, 735, 854,-32766, 901, 1000, - 977, 984,-32766,-32766,-32766,-32766, 974, 985,-32766,-32766, - 899, 1241, 972, 920,-32766, 418, 1093, 1096,-32766,-32766, - -32766, 1097,-32766,-32766,-32766, 1094,-32766, 1095, 1101,-32766, - 1271, 846, 920, 1298,-32766,-32766,-32766,-32766, 1315, 1348, - -32766,-32766, 650, 1241, -556, -555,-32766, 418, -554, -495, - -32766,-32766,-32766, 1,-32766,-32766,-32766, 29,-32766, 30, - 39,-32766, 43, 47, 72, 487,-32766,-32766,-32766,-32766, - 76, 77,-32766,-32766, 78, 1241, 574, 79,-32766, 418, - 80, 81,-32766,-32766,-32766, 141,-32766,-32766,-32766, 151, - -32766, 155, 240,-32766, 321, 355, 910, 356,-32766,-32766, - -32766, 357, 358, 1248,-32766,-32766, 359, 360, 361, 362, - -32766, 418, -250, -250, -250, 910, 363, 364, 373,-32766, - 1248, 365, 367, 435, 555, 1275, 0, -273, -272, 959, - 960, -249, -249, -249, 522, 12, 13, 373, 14, 896, - 955, -110, -110, -110, 15, 17, 404, 483, 959, 960, - -16, 484, 491, 522, 494, 495, 496, 497, 896, 955, - -110, -110, -110, 501, 502, 503, 510, 572,-32766, 696, - 1252, 1190, 922, 1272, 1241, 34, 710, -250, 1062, 1061, - 1042,-32766,-32766,-32766, 835,-32766, 1229,-32766, 1038,-32766, - -277, 922,-32766, -102, 731, 710, -249,-32766,-32766,-32766, - 11, 835, 16,-32766,-32766, 21, 310, 403, 603,-32766, - 418, 607, 636, 702, 1194, 1247, 1191, 1327,-32766, -110, - -110, 313, 369, 711, -110, 714, 718, 719, 721, 722, - -110, 723, 724, 728, 713, 0, -110, -110, 897,-32766, - 1352, -110, 1354, 857, 856, 865, 949, -110, 992, 864, - 1353, 948, 946, 947, 950, 1222,-32766, 930, 940, 0, - 928, 294, 982, 983, 75, 634, 1351, 0, 1309, 1324, - 319, 0, 0, 0, 0, 0, 0, 0, 294, 0, - 0, 75, 0, 0, 0, 0, 0, 319 + 265, 70, 451, 523, 286,-32766,-32766, 1303, 1304, 524, + 1382, 850, 48, 1383, 726, 1301, 42, 19, 525, 935, + 526, 339, 527, 75, 528, 935, 361, 529, 530, 322, + -563, -563, 44, 45, 452, 384, 383,-32766, 46, 531, + 1038, 1037, 1036, 1039, 373, 338, -563, 841, 340, 727, + 398, 1261, 7, 533, 534, 535, 1268, -561, -569, 1051, + 760, 759, 323,-32766, -560, 537, 538, 925, 1289, 1290, + 1291, 1292, 1294, 1286, 1287, 296, 298, 299, 877, 958, + 878, 1293, 1288, 291,-32766, 1270, 1269, 1271, 297, 375, + 1048, 71, 1266, 28, 266, 317, 318, 322, 381, -153, + -153, -153, 925, 935, 396, 850, 666, 20, 925, 1301, + 685, 686, 1051, 1050, -153, 447, -153, 448, -153, 366, + -153, -561, -561, 148, 414, 152, 475, 476, -560, -560, + 382, 140, 1270, 1269, 1271, 322, 282, -561, 385, 386, + 449, 974, 975, 937, -560, 1261, 532, 721, 450, -568, + 856, 911, 970, -110, -110, -110, -567, 390, 391, 537, + 538, 153, 1289, 1290, 1291, 1292, 1294, 1286, 1287, 657, + 658, 760, 759, 154, 286, 1293, 1288, 156, 937, 33, + -78, -87, 721, -559, 937, 73, 925, 49, 721, -153, + 318, 322, 32, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -58, -57,-32766, 124, + -4, 935, 292, 125, 1268, 128, 129, 142, 760, 759, + 157,-32766,-32766,-32766, 699,-32766, -84,-32766, 159,-32766, + 160, 161,-32766, -78, 935, 1177, 1179,-32766,-32766,-32766, + -73, 935, -72,-32766,-32766, 287, -559, -559, -559,-32766, + 427, 300, 301, -71, -70,-32766, -69, -68,-32766, -67, + 700, 1268, 937, -559, 728, -66, 721, 380,-32766,-32766, + -32766, 731,-32766, 935,-32766, -65,-32766, -46, -18,-32766, + 146, 701, 702, 272,-32766,-32766,-32766, 283, 737, 74, + -32766,-32766, 740, 934, 925, 145,-32766, 427,-32766, 273, + 1270, 1269, 1271, 738, -302,-32766, 282, 288, -298, 280, + -559, -559, 281, 28, 265, 284, 382, 925, 443, 285, + 1051, 328, 293, 295, 925, 850, -559, 974, 975, 1301, + 294, 695, 532, 952, 110, 841, 144, 536, 970, -110, + -110, -110, 850, 710, 291, 712, 28, 266, 571, 1135, + 673, 1384, 688, 305, 655, 970, 925, 971, 850, 577, + -32766, 10, 1301, 302, 309, 1261, 1308, 672, 667, 303, + 937, 1310,-32766, 954, 721, -4, 23, 849, 472, 501, + 538, 1298, 1289, 1290, 1291, 1292, 1294, 1286, 1287, 689, + -50, 620, -595, 991, 0, 1293, 1288, 721, 1261, 861, + 937, -523, 0, 0, 721, 73, 1325, 297, 0, 0, + 318, 322, 0, 538, 0, 1289, 1290, 1291, 1292, 1294, + 1286, 1287, 130, 0, 0, 0, 0, 0, 1293, 1288, + 0, 0, 937,-32766, 0, 0, 721, -513, 73, 1268, + 8, 27, 379, 318, 322, -594,-32766,-32766,-32766, 1342, + -32766, 0,-32766, 0,-32766, 1375, 40,-32766, 41, 746, + 747, 869,-32766,-32766,-32766,-32766, 916, 1015,-32766,-32766, + 992, 1268, 999, 935,-32766, 427, 989, 1000,-32766,-32766, + -32766, 914,-32766,-32766,-32766, 987,-32766, 1109, 1112,-32766, + 1113, 1110, 935, 1146,-32766,-32766,-32766,-32766, 1111, 1117, + -32766,-32766, 660, 1268, -593, -569,-32766, 427, -568, -567, + -32766,-32766,-32766, -566,-32766,-32766,-32766, -507,-32766, 1, + 29,-32766, 30, 39, 43, 496,-32766,-32766,-32766,-32766, + 47, 72,-32766,-32766, 76, 1268, 584, 77,-32766, 427, + 78, 79,-32766,-32766,-32766, 80,-32766,-32766,-32766, 81, + -32766, 141, 151,-32766, 155, 242, 925, 324,-32766,-32766, + -32766, 361, 362, 1275,-32766,-32766, 363, 364, 365, 366, + -32766, 427, -250, -250, -250, 925, 367, 368, 382,-32766, + 1275, 369, 370, 371, 374, 1302, 444, 565, 372, 974, + 975, -249, -249, -249, 532, -275, -273, 382, -272, 911, + 970, -110, -110, -110, 12, 13, 14, 15, 974, 975, + -16, 17, 355, 532, 413, 492, 493, 500, 911, 970, + -110, -110, -110, 503, 504, 505, 506, 510,-32766, 511, + 512, 519, 937, 582, 1268, 34, 721, -250, 705, 1279, + 1217,-32766,-32766,-32766, 850,-32766, 1299,-32766, 1077,-32766, + 1076, 937,-32766, 1057, 743, 721, -249,-32766,-32766,-32766, + 1256, 850, 1053,-32766,-32766, -277, -102, 11, 16,-32766, + 427, 21, 313, 412, 613, 617, 646, 711,-32766, -110, + -110, 1221, 1274, 1218, -110, 1354, 912, 316, 376, 722, + -110, 725, 729, 730, 732, 733, -110, -110, 734,-32766, + 735, -110, 739, 751, 724, 752, 0, -110, 1379, 1381, + 872, 871, 880, 964, 1007, 879,-32766, 1380, 963, 322, + 961, 297, 962, 965, 75, 1249, 945, 0, 955, 943, + 322, 1145, 1141, 1098, 997, 998, 644, 1378, 297, 1336, + 1351, 75, 1234, 0, 0, 0, 0, 322 ); protected array $actionCheck = array( 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, - 12, 13, 9, 10, 11, 1, 9, 10, 11, 31, - 0, 106, 107, 80, 44, 45, 46, 47, 48, 49, - 50, 116, 14, 30, 160, 37, 38, 30, 164, 32, + 12, 13, 9, 10, 11, 31, 9, 10, 11, 9, + 10, 106, 107, 80, 44, 45, 46, 47, 48, 49, + 50, 116, 1, 30, 0, 37, 38, 30, 1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 9, 10, 11, 101, 57, 9, 10, 11, 116, - 117, 118, 119, 120, 121, 122, 8, 1, 1, 71, + 117, 118, 119, 120, 121, 122, 8, 1, 80, 71, 72, 73, 74, 75, 76, 77, 123, 30, 80, 32, - 33, 34, 35, 36, 1, 87, 88, 89, 90, 91, + 33, 34, 35, 36, 16, 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, 8, 128, 129, 130, 131, - 132, 133, 8, 8, 136, 137, 138, 139, 140, 141, - 142, 8, 144, 145, 106, 107, 129, 130, 131, 151, - 152, 153, 164, 155, 116, 2, 3, 4, 5, 6, + 132, 133, 116, 1, 136, 137, 138, 139, 140, 141, + 142, 8, 144, 145, 160, 157, 129, 130, 131, 151, + 152, 153, 164, 155, 138, 2, 3, 4, 5, 6, 7, 163, 9, 10, 11, 12, 13, 101, 82, 164, - 8, 85, 106, 168, 108, 9, 10, 11, 164, 113, - 97, 163, 116, 117, 118, 119, 120, 121, 122, 123, - 37, 38, 9, 10, 11, 8, 30, 159, 32, 33, + 31, 85, 106, 168, 108, 9, 10, 11, 162, 113, + 37, 38, 116, 117, 118, 119, 120, 121, 122, 123, + 37, 38, 9, 10, 11, 164, 30, 160, 32, 33, 34, 35, 36, 37, 38, 51, 52, 53, 54, 55, - 57, 57, 8, 30, 116, 32, 33, 34, 35, 80, - 8, 163, 80, 69, 71, 72, 73, 74, 75, 76, - 77, 165, 31, 80, 148, 149, 138, 106, 9, 108, + 57, 57, 14, 30, 8, 32, 33, 34, 35, 49, + 50, 163, 1, 69, 71, 72, 73, 74, 75, 76, + 77, 165, 164, 80, 148, 149, 97, 106, 80, 108, 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, - 163, 128, 129, 130, 131, 132, 133, 156, 163, 136, - 137, 138, 139, 140, 141, 142, 157, 144, 145, 157, - 9, 10, 11, 164, 151, 152, 153, 8, 155, 2, - 3, 4, 5, 6, 7, 85, 9, 10, 11, 12, - 13, 30, 122, 32, 33, 34, 35, 36, 37, 38, + 163, 128, 129, 130, 131, 132, 133, 156, 70, 136, + 137, 138, 139, 140, 141, 142, 163, 144, 145, 9, + 9, 10, 11, 82, 151, 152, 153, 14, 155, 2, + 3, 4, 5, 6, 7, 157, 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, 9, - 10, 11, 116, 117, 118, 119, 120, 121, 122, 8, - 69, 160, 162, 116, 57, 9, 10, 11, 8, 138, - 30, 30, 32, 33, 34, 31, 1, 147, 71, 72, - 73, 74, 75, 76, 77, 138, 30, 80, 32, 33, - 70, 80, 1, 162, 87, 88, 89, 90, 91, 92, + 10, 11, 134, 135, 1, 106, 107, 9, 10, 11, + 69, 163, 14, 8, 57, 116, 117, 118, 150, 138, + 30, 122, 32, 33, 34, 31, 8, 128, 71, 72, + 73, 74, 75, 76, 77, 164, 160, 80, 8, 168, + 164, 80, 1, 162, 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, 116, 128, 129, 130, 131, 132, - 133, 97, 8, 136, 137, 138, 139, 140, 141, 142, - 8, 144, 145, 122, 134, 135, 138, 116, 151, 152, + 123, 124, 125, 126, 14, 128, 129, 130, 131, 132, + 133, 85, 70, 136, 137, 138, 139, 140, 141, 142, + 97, 144, 145, 160, 9, 10, 11, 164, 151, 152, 153, 2, 3, 4, 5, 6, 7, 156, 157, 158, - 150, 12, 13, 82, 15, 116, 165, 1, 1, 138, - 162, 30, 162, 117, 118, 52, 8, 106, 122, 108, - 9, 10, 11, 162, 128, 14, 137, 1, 1, 106, - 106, 108, 108, 162, 8, 1, 8, 31, 31, 8, - 51, 52, 37, 80, 1, 56, 83, 58, 59, 60, + 116, 12, 13, 82, 15, 30, 165, 32, 33, 116, + 14, 30, 116, 117, 118, 119, 120, 121, 122, 8, + 117, 118, 138, 1, 8, 122, 70, 161, 1, 163, + 8, 138, 106, 147, 108, 1, 134, 135, 164, 8, + 51, 52, 52, 8, 1, 56, 122, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 137, 70, - 71, 72, 73, 74, 30, 160, 8, 78, 79, 80, - 8, 82, 70, 8, 31, 86, 87, 88, 89, 1, - 91, 8, 93, 162, 95, 1, 14, 98, 99, 168, - 84, 84, 103, 104, 105, 106, 107, 116, 109, 110, - 119, 120, 121, 122, 115, 116, 1, 80, 161, 31, - 163, 122, 8, 124, 125, 126, 80, 70, 16, 138, - 37, 38, 9, 10, 70, 136, 137, 84, 139, 140, - 141, 142, 143, 144, 145, 146, 134, 135, 37, 38, - 14, 152, 153, 162, 14, 156, 157, 158, 159, 14, - 116, 162, 116, 70, 71, 166, 167, 168, 14, 75, - 76, 77, 84, 1, 14, 82, 160, 160, 84, 86, - 164, 164, 138, 137, 90, 14, 92, 31, 94, 16, - 96, 134, 135, 49, 50, 75, 76, 82, 134, 135, - 106, 164, 156, 157, 158, 168, 162, 150, 51, 52, - 16, 117, 118, 160, 150, 122, 122, 164, 16, 162, - 31, 127, 128, 129, 130, 131, 162, 75, 76, 136, - 137, 16, 139, 140, 141, 142, 143, 144, 145, 101, - 102, 37, 38, 16, 30, 152, 153, 70, 160, 106, - 107, 16, 164, 70, 160, 162, 84, 70, 164, 165, + 71, 72, 73, 74, 30, 51, 52, 78, 79, 80, + 80, 82, 70, 83, 31, 86, 87, 88, 89, 1, + 91, 8, 93, 162, 95, 1, 162, 98, 99, 168, + 134, 135, 103, 104, 105, 106, 107, 116, 109, 110, + 119, 120, 121, 122, 115, 116, 150, 80, 8, 31, + 106, 122, 108, 124, 125, 126, 80, 70, 162, 138, + 37, 38, 70, 116, 70, 136, 137, 84, 139, 140, + 141, 142, 143, 144, 145, 146, 134, 135, 106, 122, + 108, 152, 153, 162, 137, 156, 157, 158, 159, 8, + 116, 162, 116, 70, 71, 166, 167, 168, 8, 75, + 76, 77, 84, 1, 8, 82, 75, 76, 84, 86, + 75, 76, 138, 137, 90, 8, 92, 8, 94, 162, + 96, 134, 135, 101, 102, 14, 134, 135, 134, 135, + 106, 164, 156, 157, 158, 168, 162, 150, 106, 107, + 8, 117, 118, 160, 150, 122, 122, 164, 8, 162, + 8, 127, 128, 129, 130, 131, 162, 106, 107, 136, + 137, 14, 139, 140, 141, 142, 143, 144, 145, 111, + 112, 37, 38, 14, 30, 152, 153, 14, 160, 14, + 16, 31, 164, 70, 160, 162, 84, 70, 164, 165, 167, 168, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 106, 107, 74, 164, - 0, 1, 16, 168, 80, 111, 112, 16, 37, 38, - 16, 87, 88, 89, 80, 91, 31, 93, 70, 95, - 16, 16, 98, 16, 1, 59, 60, 103, 104, 105, - 31, 134, 135, 109, 110, 37, 70, 134, 135, 115, - 116, 134, 135, 31, 31, 74, 70, 150, 124, 31, + 24, 25, 26, 27, 28, 29, 16, 16, 74, 16, + 0, 1, 30, 16, 80, 16, 16, 16, 37, 38, + 16, 87, 88, 89, 80, 91, 31, 93, 16, 95, + 16, 16, 98, 31, 1, 59, 60, 103, 104, 105, + 31, 1, 31, 109, 110, 37, 70, 134, 135, 115, + 116, 134, 135, 31, 31, 74, 31, 31, 124, 31, 116, 80, 160, 150, 31, 31, 164, 150, 87, 88, - 89, 31, 91, 31, 93, 31, 95, 31, 31, 98, + 89, 31, 91, 1, 93, 31, 95, 31, 31, 98, 31, 137, 138, 31, 103, 104, 105, 31, 31, 155, - 109, 110, 134, 135, 84, 31, 115, 116, 31, 31, + 109, 110, 31, 31, 84, 31, 115, 116, 116, 57, 156, 157, 158, 31, 35, 124, 162, 37, 35, 35, 134, 135, 35, 70, 71, 35, 106, 84, 108, 35, - 134, 135, 35, 113, 38, 82, 150, 117, 118, 86, - 37, 69, 122, 70, 80, 57, 77, 127, 128, 129, - 130, 131, 82, 82, 89, 80, 70, 71, 90, 83, - 97, 100, 113, 128, 133, 114, 85, 137, 82, 132, - 147, 151, 86, 132, 159, 122, 147, 92, 150, 162, - 160, 155, 160, 94, 164, 165, 150, 96, 154, 97, - 137, -1, 139, 140, 141, 142, 143, 144, 145, 97, - 31, 100, 154, 160, 162, 152, 153, 164, 122, 162, - 150, 156, 166, 168, -1, 162, -1, -1, 160, -1, + 138, 35, 37, 113, 84, 82, 150, 117, 118, 86, + 37, 77, 122, 38, 69, 80, 70, 127, 128, 129, + 130, 131, 82, 80, 162, 92, 70, 71, 89, 82, + 100, 83, 94, 114, 113, 128, 84, 128, 82, 154, + 85, 151, 86, 132, 132, 122, 147, 96, 90, 133, + 160, 147, 137, 155, 164, 165, 97, 156, 97, 97, + 137, 161, 139, 140, 141, 142, 143, 144, 145, 100, + 31, 154, 162, 160, -1, 152, 153, 164, 122, 161, + 160, 150, -1, -1, 164, 162, 161, 159, -1, -1, 167, 168, -1, 137, -1, 139, 140, 141, 142, 143, 144, 145, 31, -1, -1, -1, -1, -1, 152, 153, - -1, -1, -1, 74, -1, 150, -1, -1, 162, 80, - 150, -1, -1, 167, 168, 162, 87, 88, 89, 160, - 91, 163, 93, -1, 95, 160, 160, 98, 160, 160, + -1, -1, 160, 74, -1, -1, 164, 150, 162, 80, + 150, 150, 150, 167, 168, 162, 87, 88, 89, 161, + 91, -1, 93, -1, 95, 161, 160, 98, 160, 160, 160, 160, 103, 104, 105, 74, 160, 160, 109, 110, 160, 80, 160, 1, 115, 116, 160, 160, 87, 88, 89, 160, 91, 124, 93, 160, 95, 160, 160, 98, - 161, 161, 1, 161, 103, 104, 105, 74, 161, 161, + 160, 160, 1, 160, 103, 104, 105, 74, 160, 160, 109, 110, 161, 80, 162, 162, 115, 116, 162, 162, 87, 88, 89, 162, 91, 124, 93, 162, 95, 162, 162, 98, 162, 162, 162, 102, 103, 104, 105, 74, @@ -630,7 +630,7 @@ class Php8 extends \PhpParser\ParserAbstract 95, 162, 162, 98, 162, 162, 84, 162, 103, 104, 105, 162, 162, 1, 109, 110, 162, 162, 162, 162, 115, 116, 100, 101, 102, 84, 162, 162, 106, 124, - 1, 162, 162, 162, 162, 167, -1, 163, 163, 117, + 1, 162, 162, 162, 162, 167, 162, 162, 162, 117, 118, 100, 101, 102, 122, 163, 163, 106, 163, 127, 128, 129, 130, 131, 163, 163, 163, 163, 117, 118, 31, 163, 163, 122, 163, 163, 163, 163, 127, 128, @@ -640,19 +640,19 @@ class Php8 extends \PhpParser\ParserAbstract 163, 160, 98, 163, 165, 164, 165, 103, 104, 105, 163, 82, 163, 109, 110, 163, 163, 163, 163, 115, 116, 163, 163, 163, 163, 163, 163, 163, 124, 117, - 118, 164, 164, 164, 122, 164, 164, 164, 164, 164, - 128, 164, 164, 164, 164, -1, 117, 118, 165, 137, - 165, 122, 165, 165, 165, 165, 165, 128, 165, 165, - 165, 165, 165, 165, 165, 165, 137, 165, 165, -1, + 118, 163, 163, 163, 122, 163, 165, 164, 164, 164, + 128, 164, 164, 164, 164, 164, 117, 118, 164, 137, + 164, 122, 164, 164, 164, 164, -1, 128, 165, 165, + 165, 165, 165, 165, 165, 165, 137, 165, 165, 168, 165, 159, 165, 165, 162, 165, 165, -1, 165, 165, - 168, -1, -1, -1, -1, -1, -1, -1, 159, -1, - -1, 162, -1, -1, -1, -1, -1, 168 + 168, 165, 165, 165, 165, 165, 165, 165, 159, 165, + 165, 162, 166, -1, -1, -1, -1, 168 ); protected array $actionBase = array( - 0, -2, 153, 554, 740, 1002, 1021, 674, 575, 311, - 139, 477, 548, 548, 763, 548, 476, 513, 857, 632, - 632, 632, 795, -57, 307, 307, 795, 307, 664, 664, + 0, -2, 153, 554, 740, 1002, 1021, 674, 221, 311, + -12, 548, 770, 770, 802, 770, 513, 763, 868, 632, + 632, 632, 793, -57, 307, 307, 793, 307, 664, 664, 664, 664, 711, 711, 953, 953, 985, 921, 889, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, @@ -666,68 +666,69 @@ class Php8 extends \PhpParser\ParserAbstract 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 375, 201, 83, 631, 1033, 1041, 1035, 1042, - 1029, 1027, 1034, 1038, 1043, 1091, 1093, 802, 1090, 1094, - 1039, 871, 1032, 1040, 291, 291, 291, 291, 291, 291, + 1084, 1084, 1084, 37, -16, 353, 1069, 695, 1039, 1048, + 1041, 1049, 1035, 1034, 1040, 1042, 1050, 1102, 1104, 794, + 1101, 1105, 1043, 871, 1038, 1044, 863, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 229, 481, 583, 42, 42, 42, 42, 42, 42, + 291, 291, 291, 290, 348, 10, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 553, 553, 3, 3, 3, 356, - 806, 773, 806, 806, 806, 806, 806, 806, 806, 806, - 340, 183, 47, 706, 166, 166, 7, 7, 7, 7, - 7, 1109, 66, 1092, 1092, -20, -20, -20, -20, 451, - 504, 391, -47, 381, 604, 341, 38, 318, 318, 247, - 247, 231, 231, 247, 247, 247, 154, 154, 98, 98, - 98, 98, 131, 230, 750, 497, 497, 497, 497, 750, - 750, 750, 750, 749, 948, 750, 750, 750, 320, 517, - 524, 617, 617, 394, 86, 86, 394, 366, 86, 5, - 433, 359, 755, -85, 417, 359, 637, 643, 643, 647, - 643, 643, 643, 775, 603, 775, 1020, 200, 801, 801, - 331, 777, 739, 858, 1060, 1044, 781, 1087, 821, 1088, - 17, 472, 688, 716, 725, 1017, 1017, 1017, 1017, 1017, - 1017, 1017, 1017, 1017, 1017, 1017, 765, 571, 1020, 142, - 765, 765, 765, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 634, 142, 580, 612, 142, 817, 571, - 375, 756, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 779, -12, 375, 201, 14, 14, -126, 67, - 14, 14, 14, 14, 375, 375, 375, 375, 603, 808, - 754, 630, 768, 125, 808, 808, 808, 344, 58, 18, - 117, 799, 803, 393, 784, 784, 791, 881, 784, 790, - 784, 791, 891, 784, 784, 881, 881, 735, 881, 187, - 528, 434, 498, 532, 881, 299, 784, 784, 784, 784, - 761, 881, 535, 784, 212, 204, 784, 784, 761, 757, - 787, 124, 751, 881, 881, 881, 761, 478, 751, 751, - 751, 819, 825, 769, 786, 360, 351, 574, 162, 816, - 786, 786, 784, 501, 769, 786, 769, 786, 746, 786, - 786, 786, 769, 786, 790, 442, 786, 731, 543, 133, - 786, 20, 892, 898, 616, 899, 888, 902, 951, 905, - 908, 1049, 877, 920, 890, 909, 952, 887, 885, 798, - 662, 675, 780, 748, 876, 792, 792, 792, 813, 872, - 792, 792, 792, 792, 792, 792, 792, 792, 662, 859, - 820, 785, 925, 687, 695, 994, 743, 1063, 766, 923, - 997, 913, 742, 726, 972, 929, 1019, 1047, 930, 934, - 973, 998, 826, 1000, 1065, 793, 1067, 1068, 860, 936, - 1051, 792, 892, 908, 649, 890, 909, 887, 885, 776, - 774, 770, 772, 764, 758, 752, 753, 782, 1005, 767, - 737, 862, 935, 873, 662, 867, 962, 1001, 974, 978, - 1048, 812, 796, 868, 1069, 937, 944, 945, 1052, 1006, - 1053, 778, 963, 818, 979, 822, 1070, 981, 982, 983, - 984, 1054, 1071, 1055, 762, 1057, 828, 788, 954, 811, - 1073, 542, 810, 814, 823, 950, 596, 922, 1058, 1074, - 1075, 990, 991, 992, 1076, 1077, 917, 829, 965, 809, - 971, 955, 830, 831, 600, 800, 1007, 804, 807, 738, - 605, 614, 1078, 1079, 1080, 919, 794, 789, 836, 837, - 1013, 475, 1015, 1082, 620, 840, 734, 1083, 996, 744, - 745, 572, 654, 633, 747, 805, 1059, 815, 771, 783, - 949, 745, 797, 842, 1085, 846, 847, 851, 993, 855, + 42, 42, 42, 42, 42, 42, 553, 553, 3, 3, + 3, 445, 806, 773, 806, 806, 806, 806, 806, 806, + 806, 806, 340, 183, 47, 706, 166, 166, 7, 7, + 7, 7, 7, 1109, 66, 1092, 1092, -20, -20, -20, + -20, 451, 504, 391, -47, 143, 396, 170, 712, 249, + 231, 231, 363, 363, 16, 16, 363, 363, 363, 154, + 154, 354, 354, 354, 354, 131, 356, 765, 497, 497, + 497, 497, 765, 765, 765, 765, 754, 948, 765, 765, + 765, 426, 517, 524, 484, 484, 502, 86, 86, 502, + 757, 86, 5, 460, 477, 759, -85, 336, 477, 956, + 218, 643, 643, 647, 643, 643, 643, 751, 562, 751, + 1033, 394, 805, 805, 487, 776, 739, 869, 1070, 1052, + 780, 1099, 819, 1100, 1071, 293, 17, 372, 472, 522, + 732, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, + 1032, 1032, 1032, 1081, 143, 1033, 158, 1097, 1098, 1081, + 1081, 1081, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 588, 158, 561, 565, 158, 816, 143, 37, + 817, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 777, 344, 37, -16, 31, 31, 226, 132, 31, + 31, 31, 68, 31, 37, 37, 37, 562, 772, 735, + 581, 767, 133, 772, 772, 772, 139, 58, 198, 117, + 799, 803, 474, 785, 785, 797, 887, 785, 790, 785, + 797, 898, 785, 785, 887, 887, 778, 887, 368, 637, + 543, 620, 639, 887, 486, 785, 785, 785, 785, 762, + 887, 662, 785, 481, 380, 785, 785, 762, 761, 786, + 206, 766, 887, 887, 887, 762, 611, 766, 766, 766, + 829, 830, 771, 782, 505, 501, 672, 355, 825, 782, + 782, 785, 626, 771, 782, 771, 782, 748, 782, 782, + 782, 771, 782, 790, 570, 782, 734, 670, 314, 782, + 785, 34, 899, 902, 680, 905, 891, 908, 954, 909, + 913, 1055, 885, 923, 892, 917, 955, 890, 888, 792, + 723, 727, 820, 781, 881, 795, 795, 795, 873, 876, + 795, 795, 795, 795, 795, 795, 795, 795, 723, 750, + 822, 789, 930, 729, 730, 1000, 749, 1051, 1106, 929, + 1006, 919, 826, 731, 978, 934, 1019, 1053, 935, 936, + 981, 1007, 831, 1013, 1073, 796, 1074, 1075, 768, 944, + 1057, 795, 899, 913, 725, 892, 917, 890, 888, 774, + 764, 756, 758, 755, 753, 741, 752, 779, 1015, 872, + 760, 775, 937, 877, 723, 818, 971, 1001, 982, 983, + 1054, 811, 798, 824, 1076, 945, 949, 950, 1058, 1017, + 1059, 828, 972, 962, 984, 812, 1077, 990, 991, 992, + 993, 1060, 1078, 1061, 813, 1064, 836, 808, 963, 801, + 1079, 420, 810, 814, 823, 952, 466, 925, 1066, 1080, + 1082, 994, 996, 997, 1083, 1085, 920, 837, 973, 788, + 974, 965, 840, 842, 641, 815, 1020, 804, 807, 800, + 677, 689, 1087, 1088, 1090, 922, 787, 784, 846, 847, + 1027, 738, 1029, 1091, 693, 851, 1093, 1005, 742, 744, + 694, 721, 720, 745, 783, 1068, 821, 769, 809, 951, + 744, 791, 855, 1094, 857, 858, 860, 998, 861, 979, + 1096, 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, 0, 0, 0, 0, 0, - 459, 459, 459, 459, 459, 459, 307, 307, 307, 307, - 459, 459, 459, 459, 459, 459, 459, 307, 459, 459, - 459, 307, 307, 0, 0, 307, 0, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, + 0, 0, 0, 0, 0, 459, 459, 459, 459, 459, + 459, 307, 307, 307, 307, 459, 459, 459, 459, 459, + 459, 459, 307, 459, 459, 459, 307, 307, 0, 0, + 307, 0, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, @@ -740,43 +741,44 @@ class Php8 extends \PhpParser\ParserAbstract 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, - 459, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 459, 459, 459, 459, 459, 459, 459, 291, 291, 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, + 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, 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, 506, 506, 291, 291, 291, 291, 506, - 506, 506, 506, 506, 506, 506, 506, 506, 506, 291, - 291, 291, 0, 291, 291, 291, 291, 291, 291, 291, - 506, 735, 506, 506, 154, 154, 154, 154, 506, 506, - 506, 236, 236, 154, 506, 366, 506, 506, 506, 506, - 506, 506, 506, 506, 506, 0, 0, 506, 506, 506, - 506, 142, 86, 506, 790, 790, 790, 790, 506, 506, - 506, 506, 86, 86, 506, 506, 506, 0, 0, 0, - 154, 154, 142, 0, 0, 142, 0, 0, 790, 790, - 506, 366, 735, 496, 506, 0, 0, 0, 0, 0, - 0, 0, 142, 790, 142, 571, 784, 86, 86, 784, - 571, 571, 14, 375, 496, 598, 598, 598, 598, 0, - 0, 0, 0, 603, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 790, 0, 735, 0, 790, - 790, 790, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 790, 0, 0, - 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 891, 0, 0, 0, 0, 0, 0, 790, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 792, 812, - 0, 812, 0, 792, 792, 792, 0, 0, 0, 0, - 800, 475 + 506, 506, 291, 291, 291, 291, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 291, 291, 291, 0, + 291, 291, 291, 291, 291, 291, 291, 506, 778, 506, + 506, 154, 154, 154, 154, 506, 506, 506, 366, 366, + 366, 154, 506, 778, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 0, 0, 506, 506, 506, 506, 158, + 86, 506, 790, 790, 790, 790, 506, 506, 506, 506, + 86, 86, 506, 506, 506, 0, 0, 0, 154, 154, + 158, 0, 0, 158, 373, 0, 790, 790, 506, 373, + 778, 492, 506, 293, 0, 0, 0, 0, 0, 0, + 0, 158, 790, 158, 143, 785, 86, 86, 785, 143, + 143, 31, 37, 492, 552, 552, 552, 552, 37, 0, + 0, 0, 0, 0, 562, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 790, 0, 778, + 0, 778, 778, 790, 790, 790, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 790, 0, 0, 887, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 898, 0, 0, 0, 0, + 0, 0, 790, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 795, 811, 0, 811, 0, 795, 795, 795, + 0, 0, 0, 0, 815, 738 ); protected array $actionDefault = array( 3,32767, 102,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 100,32767, 601, 601, - 601, 601,32767,32767, 254, 102,32767,32767, 470, 387, - 387, 387,32767,32767, 545, 545, 545, 545, 545, 545, - 32767,32767,32767,32767,32767,32767, 470,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 100,32767, 613, 613, + 613, 613,32767,32767, 254, 102,32767,32767, 482, 399, + 399, 399,32767,32767, 557, 557, 557, 557, 557, 557, + 32767,32767,32767,32767,32767,32767, 482,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, @@ -787,137 +789,141 @@ class Php8 extends \PhpParser\ParserAbstract 32767, 36, 7, 8, 10, 11, 49, 17, 324,32767, 32767,32767,32767, 102,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 594,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 386, 606,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767, 474, 453, 454, 456, 457, 386, - 546, 600, 327, 597, 385, 145, 339, 329, 242, 330, - 258, 475, 259, 476, 479, 480, 215, 287, 382, 149, - 150, 417, 471, 419, 469, 473, 418, 392, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 390, 391, 472,32767,32767, 450, 449, 448, 415, + 32767,32767,32767,32767,32767,32767,32767, 486, 465, 466, + 468, 469, 398, 558, 612, 327, 609, 397, 145, 339, + 329, 242, 330, 258, 487, 259, 488, 491, 492, 215, + 383, 149, 150, 429, 483, 431, 481, 485, 430, 404, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 402, 403, 484,32767,32767, 462, 461, + 460, 427,32767,32767,32767,32767,32767,32767,32767,32767, + 102,32767, 428, 432, 435, 401, 433, 434, 451, 452, + 449, 450, 453,32767,32767,32767,32767, 454, 455, 456, + 457, 316,32767,32767, 367, 195, 365, 436, 316, 111, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 442, + 443,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767, 102,32767, - 416, 420, 423, 389, 421, 422, 439, 440, 437, 438, - 441,32767,32767,32767,32767, 442, 443, 444, 445, 316, - 32767,32767, 366, 364, 424, 316, 111,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 430, 431,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 102,32767, 100, 487, 539, - 447, 425, 426,32767, 514,32767, 102,32767, 516,32767, - 32767,32767,32767,32767,32767,32767, 541, 412, 414, 507, - 595, 393, 598,32767, 500, 100, 195,32767,32767, 515, - 32767, 195, 195,32767,32767,32767,32767,32767,32767,32767, - 32767, 540,32767, 608, 500, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110,32767, 195, 110,32767, - 32767,32767, 100, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 190,32767, 268, 270, 102, 563, 195, - 32767, 519,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 512,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 500, 435, - 138,32767, 138, 547, 427, 428, 429, 502, 547, 547, - 547, 312, 289,32767,32767,32767,32767, 517, 100, 100, - 100, 100, 512,32767,32767,32767,32767, 111, 486, 99, - 99, 99, 99, 99, 103, 101,32767,32767,32767,32767, - 223,32767, 99,32767, 101, 101,32767,32767, 223, 225, - 212, 101, 227,32767, 567, 568, 223, 101, 227, 227, - 227, 247, 247, 489, 318, 101, 99, 101, 101, 197, - 318, 318,32767, 101, 489, 318, 489, 318, 199, 318, - 318, 318, 489, 318,32767, 101, 318, 214, 99, 99, - 318,32767,32767,32767, 502,32767,32767,32767,32767,32767, + 100, 499, 551, 459, 437, 438,32767, 526,32767, 102, + 32767, 528,32767,32767,32767,32767,32767,32767,32767,32767, + 553, 424, 426, 519, 607, 405, 610,32767, 512, 100, + 195,32767,32767, 527,32767, 195, 195,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 552,32767, 620, + 512, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110,32767, 195, 110,32767, 110, 110,32767, + 32767, 100, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 190,32767, 268, 270, 102, 575, 195,32767, + 531,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767, 524,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767, 386,32767,32767,32767,32767, 512, 447, 138, + 32767, 138, 559, 439, 440, 441, 514, 559, 559, 559, + 312, 289,32767,32767,32767,32767, 529, 100, 100, 100, + 100, 524,32767,32767,32767,32767, 111, 498, 99, 99, + 99, 99, 99, 103, 101,32767,32767,32767,32767, 223, + 32767, 99,32767, 101, 101,32767,32767, 223, 225, 212, + 101, 227,32767, 579, 580, 223, 101, 227, 227, 227, + 247, 247, 501, 318, 101, 99, 101, 101, 197, 318, + 318,32767, 101, 501, 318, 501, 318, 199, 318, 318, + 318, 501, 318,32767, 101, 318, 214, 99, 99, 318, + 32767,32767,32767,32767, 514,32767,32767,32767,32767,32767, 32767,32767, 222,32767,32767,32767,32767,32767,32767,32767, - 32767, 534,32767, 552, 565, 433, 434, 436, 551, 549, - 458, 459, 460, 461, 462, 463, 464, 466, 596,32767, - 506,32767,32767,32767, 338,32767, 606,32767,32767,32767, + 32767, 546,32767, 564, 577, 445, 446, 448, 563, 561, + 470, 471, 472, 473, 474, 475, 476, 478, 608,32767, + 518,32767,32767,32767, 338,32767, 618,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767, 607,32767, 547,32767,32767,32767, - 32767, 432, 9, 74, 495, 42, 43, 51, 57, 523, - 524, 525, 526, 520, 521, 527, 522,32767,32767, 529, - 573,32767,32767, 548, 599,32767,32767,32767,32767,32767, + 32767,32767,32767,32767, 619,32767, 559,32767,32767,32767, + 32767, 444, 9, 74, 507, 42, 43, 51, 57, 535, + 536, 537, 538, 532, 533, 539, 534,32767,32767, 541, + 585,32767,32767, 560, 611,32767,32767,32767,32767,32767, 32767, 138,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 534,32767, 136,32767,32767,32767,32767, - 32767,32767,32767,32767, 530,32767,32767,32767, 547,32767, + 32767,32767,32767, 546,32767, 136,32767,32767,32767,32767, + 32767,32767,32767,32767, 542,32767,32767,32767, 559,32767, 32767,32767,32767, 314, 311,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 547,32767,32767,32767,32767,32767, 291,32767, 308, + 32767, 559,32767,32767,32767,32767,32767, 291,32767, 308, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 286,32767,32767, 381, - 502, 294, 296, 297,32767,32767,32767,32767, 360,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 382, 514, + 294, 296, 297,32767,32767,32767,32767, 361,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 152, 152, 3, 3, 341, 152, 152, 152, 341, 341, - 152, 341, 341, 341, 152, 152, 152, 152, 152, 152, - 280, 185, 262, 265, 247, 247, 152, 352, 152 + 32767, 152, 152, 3, 3, 341, 152, 152, 152, 341, + 341, 152, 341, 341, 341, 152, 152, 152, 152, 152, + 152, 152, 280, 185, 262, 265, 247, 247, 152, 353, + 152, 384, 384, 393 ); protected array $goto = array( - 192, 192, 1034, 1065, 697, 429, 661, 893, 851, 893, - 893, 423, 331, 327, 328, 330, 576, 428, 332, 430, - 638, 654, 655, 852, 672, 673, 674, 165, 165, 165, - 165, 217, 193, 189, 189, 175, 177, 212, 189, 189, - 189, 189, 189, 190, 190, 190, 190, 190, 190, 184, - 185, 186, 187, 188, 214, 212, 215, 535, 536, 419, - 537, 540, 541, 542, 543, 544, 545, 546, 547, 1136, - 166, 167, 168, 191, 169, 170, 171, 164, 172, 173, - 174, 176, 211, 213, 216, 236, 239, 250, 251, 252, - 254, 255, 256, 257, 258, 259, 260, 265, 266, 267, - 268, 274, 286, 287, 311, 312, 424, 425, 426, 581, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 194, 195, 196, 237, - 184, 185, 186, 187, 188, 214, 1136, 197, 178, 179, - 180, 198, 194, 181, 238, 199, 197, 163, 200, 201, - 182, 202, 203, 204, 183, 205, 206, 207, 208, 209, - 210, 706, 276, 276, 276, 276, 855, 338, 853, 623, - 623, 975, 1341, 1341, 600, 1273, 1273, 1273, 1273, 1273, - 1273, 1273, 1273, 1273, 1273, 1292, 1292, 1341, 339, 338, - 417, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, - 1292, 548, 548, 548, 548, 827, 604, 1344, 1344, 559, - 552, 886, 860, 456, 909, 904, 905, 918, 861, 906, - 858, 907, 908, 859, 465, 465, 912, 478, 350, 350, - 350, 350, 913, 465, 914, 480, 1087, 1082, 1083, 1084, - 848, 337, 552, 559, 568, 569, 340, 579, 602, 616, - 617, 573, 599, 1100, 437, 1331, 1240, 25, 1240, 1240, - 347, 422, 709, 611, 1034, 1034, 1240, 345, 507, 700, - 1034, 1098, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 461, 353, 1034, 1034, 1034, 1034, 848, 1185, 1240, - 621, 658, 353, 353, 1240, 1240, 1240, 1240, 996, 833, - 1240, 1240, 1240, 353, 353, 1107, 1108, 353, 550, 1358, - 550, 550, 5, 499, 6, 500, 926, 392, 550, 571, - 927, 506, 660, 554, 1289, 1289, 1133, 353, 353, 1058, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 833, 454, 833, 967, 408, 705, 969, 969, 969, 969, - 539, 539, 454, 963, 970, 436, 539, 539, 539, 539, - 539, 539, 539, 539, 539, 539, 566, 475, 1316, 1317, - 733, 637, 639, 1040, 1039, 659, 682, 1303, 333, 683, - 687, 1010, 695, 704, 1006, 246, 246, 1037, 1037, 681, - 952, 538, 538, 1029, 1045, 1046, 666, 538, 686, 538, - 538, 538, 538, 538, 538, 538, 538, 1013, 1013, 1043, - 1044, 848, 244, 244, 244, 244, 241, 247, 318, 304, - 447, 447, 447, 447, 631, 633, 635, 1314, 554, 1314, - 1314, 1318, 1319, 1323, 1323, 1323, 1323, 1314, 406, 407, - 845, 694, 873, 670, 829, 671, 958, 410, 411, 412, - 401, 684, 577, 614, 413, 870, 694, 1018, 343, 615, - 694, 1325, 1325, 1325, 1325, 609, 624, 627, 628, 629, - 630, 651, 652, 653, 708, 942, 1216, 944, 942, 1235, - 1217, 1220, 945, 1221, 868, 1310, 317, 272, 317, 317, - 1231, 882, 980, 1233, 1071, 881, 869, 1070, 1074, 880, - 999, 1075, 867, 971, 736, 732, 1118, 978, 551, 1008, - 1003, 0, 348, 349, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 1257, 0, 447, 931, 1123, - 0, 968, 1073, 1236, 1237, 619, 1312, 1312, 1073, 0, - 0, 1015, 843, 394, 397, 560, 601, 605, 0, 872, - 0, 664, 994, 1116, 885, 0, 0, 866, 0, 0, - 0, 1238, 1300, 1301, 0, 0, 0, 0, 0, 1230, - 0, 431, 553, 563, 0, 0, 553, 431, 563, 0, - 0, 395, 460, 1041, 1041, 0, 0, 0, 0, 0, - 665, 1052, 1048, 1049, 468, 580, 469, 470, 0, 0, - 0, 878, 0, 0, 1349, 1350, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 249, 249, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 876 + 195, 195, 1049, 928, 706, 929, 1080, 438, 671, 279, + 279, 279, 279, 432, 335, 331, 332, 334, 586, 437, + 336, 439, 648, 908, 866, 908, 908, 167, 167, 167, + 167, 219, 196, 192, 192, 177, 179, 214, 192, 192, + 192, 192, 192, 193, 193, 193, 193, 193, 193, 187, + 188, 189, 190, 191, 216, 214, 217, 545, 546, 428, + 547, 550, 551, 552, 553, 554, 555, 556, 557, 1163, + 168, 169, 170, 194, 171, 172, 173, 165, 174, 175, + 176, 178, 213, 215, 218, 238, 241, 252, 253, 254, + 256, 257, 258, 259, 260, 261, 262, 267, 268, 269, + 270, 277, 289, 290, 314, 315, 433, 434, 435, 591, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 197, 198, 199, 239, + 187, 188, 189, 190, 191, 216, 1163, 200, 180, 181, + 182, 201, 197, 183, 240, 202, 200, 164, 203, 204, + 184, 205, 206, 207, 185, 208, 209, 166, 210, 211, + 212, 186, 715, 870, 610, 1014, 848, 867, 986, 1097, + 744, 342, 576, 561, 1023, 1018, 745, 647, 649, 1055, + 1054, 669, 863, 868, 359, 693, 696, 1025, 704, 713, + 1021, 720, 343, 342, 359, 359, 1052, 1052, 691, 967, + 631, 668, 1044, 1060, 1061, 359, 359, 487, 848, 359, + 848, 1385, 990, 351, 875, 489, 924, 919, 920, 933, + 876, 921, 873, 922, 923, 874, 564, 426, 927, 863, + 359, 359, 403, 406, 570, 611, 615, 520, 842, 1103, + 1099, 1100, 619, 634, 637, 638, 639, 640, 661, 662, + 663, 717, 719, 356, 356, 356, 356, 508, 1267, 509, + 1267, 1267, 1123, 1148, 1124, 515, 1049, 1049, 1267, 456, + 456, 456, 456, 1049, 901, 1049, 1049, 1049, 1049, 1049, + 1049, 1049, 1049, 1049, 465, 1330, 1049, 1049, 1049, 1049, + 664, 665, 1267, 682, 683, 684, 583, 1267, 1267, 1267, + 1267, 349, 470, 1267, 1267, 1267, 422, 569, 562, 1212, + 248, 248, 558, 558, 558, 558, 431, 614, 621, 941, + 633, 633, 5, 942, 6, 446, 1300, 1300, 1300, 1300, + 1300, 1300, 1300, 1300, 1300, 1300, 564, 246, 246, 246, + 246, 243, 249, 1358, 341, 562, 569, 578, 579, 344, + 589, 612, 626, 627, 1011, 474, 474, 1243, 959, 863, + 25, 1244, 1247, 960, 474, 1248, 401, 456, 456, 456, + 456, 456, 456, 456, 456, 456, 456, 456, 456, 1368, + 1368, 456, 581, 456, 456, 670, 560, 1160, 560, 560, + 484, 1343, 1344, 1073, 1368, 445, 560, 1319, 1319, 703, + 692, 1260, 844, 1319, 1319, 1319, 1319, 1319, 1319, 1319, + 1319, 1319, 1319, 676, 703, 1371, 1371, 860, 703, 1341, + 463, 1341, 1341, 321, 307, 984, 984, 984, 984, 1341, + 337, 463, 978, 985, 888, 1316, 1316, 1350, 1350, 1350, + 1350, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, + 1316, 973, 549, 549, 1352, 1352, 1352, 1352, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 549, 352, 353, + 982, 417, 714, 641, 643, 645, 548, 548, 1337, 410, + 957, 625, 548, 957, 548, 548, 548, 548, 548, 548, + 548, 548, 415, 416, 1262, 1058, 1059, 680, 885, 681, + 1143, 419, 420, 421, 1258, 694, 1086, 883, 423, 1033, + 946, 1150, 347, 320, 274, 320, 320, 629, 587, 624, + 1028, 1028, 748, 1030, 895, 1345, 1346, 882, 897, 1088, + 1090, 887, 1040, 674, 1009, 1339, 1339, 1088, 995, 881, + 1284, 378, 1134, 0, 0, 251, 251, 0, 1263, 1264, + 0, 1257, 609, 1116, 0, 0, 0, 858, 896, 884, + 1085, 1089, 718, 0, 0, 0, 0, 0, 516, 709, + 993, 1114, 0, 0, 0, 0, 1265, 1327, 1328, 0, + 0, 0, 563, 573, 0, 0, 563, 0, 573, 0, + 0, 404, 469, 0, 983, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 477, 590, 478, 479, 0, 0, + 0, 893, 440, 0, 1376, 1377, 1132, 900, 0, 440, + 0, 0, 0, 0, 0, 1056, 1056, 753, 753, 0, + 0, 0, 675, 1067, 1063, 1064, 0, 0, 0, 0, + 891, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 329 ); protected array $gotoCheck = array( - 42, 42, 73, 127, 73, 66, 66, 25, 25, 25, - 25, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 86, 86, 26, 86, 86, 86, 42, 42, 42, + 42, 42, 73, 65, 73, 65, 128, 66, 66, 23, + 23, 23, 23, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 25, 25, 25, 25, 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, @@ -931,98 +937,102 @@ class Php8 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, 9, 23, 23, 23, 23, 15, 170, 27, 108, - 108, 49, 184, 184, 130, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 172, 172, 184, 170, 170, - 43, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 107, 107, 107, 107, 6, 107, 184, 184, 76, - 76, 45, 15, 83, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 149, 149, 15, 84, 24, 24, - 24, 24, 65, 149, 65, 84, 15, 15, 15, 15, - 22, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 174, 8, 8, 83, 183, 73, 76, 73, 73, - 97, 13, 8, 13, 73, 73, 73, 181, 8, 8, - 73, 8, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 151, 14, 73, 73, 73, 73, 22, 151, 73, - 56, 56, 14, 14, 73, 73, 73, 73, 103, 12, - 73, 73, 73, 14, 14, 144, 144, 14, 19, 14, - 19, 19, 46, 155, 46, 155, 73, 62, 19, 104, - 73, 155, 64, 14, 173, 173, 150, 14, 14, 114, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 12, 19, 12, 93, 93, 93, 19, 19, 19, 19, - 175, 175, 19, 19, 19, 113, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 48, 178, 178, 178, - 48, 48, 48, 118, 118, 48, 116, 14, 29, 48, - 48, 48, 48, 48, 48, 5, 5, 89, 89, 89, - 89, 158, 158, 89, 89, 89, 120, 158, 14, 158, - 158, 158, 158, 158, 158, 158, 158, 107, 107, 119, - 119, 22, 5, 5, 5, 5, 5, 5, 171, 171, - 23, 23, 23, 23, 85, 85, 85, 130, 14, 130, - 130, 180, 180, 9, 9, 9, 9, 130, 82, 82, - 18, 7, 39, 82, 7, 82, 92, 82, 82, 82, - 28, 82, 2, 2, 82, 37, 7, 110, 82, 80, - 7, 130, 130, 130, 130, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 9, 79, 79, 9, 20, - 79, 79, 79, 79, 35, 130, 24, 24, 24, 24, - 162, 41, 96, 14, 129, 16, 16, 16, 16, 35, - 50, 132, 35, 50, 99, 50, 147, 16, 50, 50, - 50, -1, 97, 97, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 20, -1, 23, 17, 17, - -1, 16, 130, 20, 20, 17, 130, 130, 130, -1, - -1, 17, 20, 59, 59, 59, 59, 59, -1, 17, - -1, 17, 17, 16, 16, -1, -1, 17, -1, -1, - -1, 20, 20, 20, -1, -1, -1, -1, -1, 17, - -1, 117, 9, 9, -1, -1, 9, 117, 9, -1, - -1, 9, 9, 117, 117, -1, -1, -1, -1, -1, - 117, 117, 117, 117, 9, 9, 9, 9, -1, -1, - -1, 9, -1, -1, 9, 9, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5, 5, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 9 + 42, 42, 9, 15, 131, 50, 12, 26, 50, 15, + 50, 175, 48, 50, 50, 50, 48, 48, 48, 119, + 119, 48, 22, 27, 14, 48, 48, 48, 48, 48, + 48, 48, 175, 175, 14, 14, 89, 89, 89, 89, + 56, 56, 89, 89, 89, 14, 14, 84, 12, 14, + 12, 14, 49, 97, 15, 84, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 14, 43, 15, 22, + 14, 14, 59, 59, 59, 59, 59, 76, 6, 15, + 15, 15, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 24, 24, 24, 24, 160, 73, 160, + 73, 73, 146, 146, 146, 160, 73, 73, 73, 23, + 23, 23, 23, 73, 45, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 83, 14, 73, 73, 73, 73, + 86, 86, 73, 86, 86, 86, 179, 73, 73, 73, + 73, 186, 156, 73, 73, 73, 14, 76, 76, 156, + 5, 5, 107, 107, 107, 107, 13, 107, 13, 73, + 108, 108, 46, 73, 46, 83, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 14, 5, 5, 5, + 5, 5, 5, 188, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 103, 154, 154, 79, 79, 22, + 76, 79, 79, 79, 154, 79, 62, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 189, + 189, 23, 104, 23, 23, 64, 19, 155, 19, 19, + 183, 183, 183, 115, 189, 113, 19, 177, 177, 7, + 117, 14, 7, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 121, 7, 189, 189, 18, 7, 131, + 19, 131, 131, 176, 176, 19, 19, 19, 19, 131, + 29, 19, 19, 19, 39, 178, 178, 9, 9, 9, + 9, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 92, 180, 180, 131, 131, 131, 131, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 97, 97, + 93, 93, 93, 85, 85, 85, 163, 163, 131, 28, + 9, 80, 163, 9, 163, 163, 163, 163, 163, 163, + 163, 163, 82, 82, 20, 120, 120, 82, 37, 82, + 153, 82, 82, 82, 167, 82, 130, 35, 82, 110, + 17, 17, 82, 24, 24, 24, 24, 17, 2, 2, + 107, 107, 99, 17, 35, 185, 185, 35, 41, 131, + 133, 17, 114, 17, 17, 131, 131, 131, 96, 17, + 20, 138, 149, -1, -1, 5, 5, -1, 20, 20, + -1, 17, 8, 8, -1, -1, -1, 20, 16, 16, + 16, 16, 8, -1, -1, -1, -1, -1, 8, 8, + 16, 8, -1, -1, -1, -1, 20, 20, 20, -1, + -1, -1, 9, 9, -1, -1, 9, -1, 9, -1, + -1, 9, 9, -1, 16, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 9, 9, 9, 9, -1, -1, + -1, 9, 118, -1, 9, 9, 16, 16, -1, 118, + -1, -1, -1, -1, -1, 118, 118, 24, 24, -1, + -1, -1, 118, 118, 118, 118, -1, -1, -1, -1, + 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 9 ); protected array $gotoBase = array( - 0, 0, -260, 0, 0, 384, 182, 434, 244, 138, - 0, 0, 7, -72, -11, -178, 45, 64, 135, 47, - 88, 0, -36, 159, 225, 4, 19, 164, 117, 86, - 0, 0, 0, 0, 0, 115, 0, 120, 0, 126, - 0, 53, -1, 168, 0, 185, -424, 0, -345, 154, - 489, 0, 0, 0, 0, 0, 250, 0, 0, 498, - 0, 0, 275, 0, 87, 219, -229, 0, 0, 0, - 0, 0, 0, -5, 0, 0, -132, 0, 0, 70, - 119, 109, -52, -63, -241, -54, -697, 0, 0, 110, - 0, 0, 124, 43, 0, 0, 52, -222, 0, 99, - 0, 0, 0, 263, 276, 0, 0, 173, -65, 0, - 89, 0, 0, 80, 59, 0, 97, 302, 96, 128, - 108, 0, 0, 0, 0, 0, 0, 1, 0, 122, - 166, 0, 62, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 65, 0, 190, - 85, 17, 0, 0, 0, -181, 0, 0, 157, 0, - 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, - -126, 104, -49, 90, 222, 116, 0, 0, 71, 0, - 61, 237, 0, 224, -131, 0, 0 + 0, 0, -205, 0, 0, 309, 215, 392, 544, 139, + 0, 0, -129, -21, -112, -185, 99, 37, 109, 123, + 94, 0, -97, 6, 250, 20, 163, 179, 142, 135, + 0, 0, 0, 0, 0, 131, 0, 159, 0, 115, + 0, 81, -1, 205, 0, 248, -426, 0, -550, 195, + 154, 0, 0, 0, 0, 0, 160, 0, 0, 187, + 0, 0, 324, 0, 148, -10, -229, 0, 0, 0, + 0, 0, 0, -5, 0, 0, -38, 0, 0, -58, + 137, -120, -7, 5, -270, -14, -439, 0, 0, -84, + 0, 0, 126, 167, 0, 0, 89, -278, 0, 108, + 0, 0, 0, 319, 339, 0, 0, 284, 84, 0, + 134, 0, 0, 117, 110, 121, 0, 118, 341, -101, + 211, 122, 0, 0, 0, 0, 0, 0, 4, 0, + 125, 156, 0, 82, 0, 0, 0, 0, -211, 0, + 0, 0, 0, 0, 0, 0, -12, 0, 0, 92, + 0, 0, 0, 145, 321, 144, 36, 0, 0, 0, + -246, 0, 0, 240, 0, 0, 0, 130, 0, 0, + 0, 0, 0, 0, 0, -125, 106, 161, 199, 267, + 216, 0, 0, 91, 0, 146, 271, 0, 312, 73, + 0, 0 ); protected array $gotoDefault = array( - -32768, 511, 740, 4, 741, 935, 816, 825, 597, 529, - 707, 344, 625, 420, 1308, 911, 1122, 578, 844, 1249, - 1223, 455, 847, 323, 730, 923, 894, 895, 398, 384, - 390, 396, 649, 626, 493, 879, 451, 871, 485, 874, - 450, 883, 162, 416, 509, 887, 3, 890, 557, 921, - 973, 385, 898, 386, 677, 900, 562, 902, 903, 393, - 399, 400, 1127, 570, 622, 915, 253, 564, 916, 383, - 917, 925, 388, 391, 688, 464, 504, 498, 409, 1102, - 565, 608, 646, 444, 472, 620, 632, 618, 479, 432, - 414, 322, 957, 965, 486, 462, 979, 346, 987, 738, - 1135, 640, 488, 995, 641, 1002, 1005, 530, 531, 477, - 1017, 269, 1020, 489, 22, 667, 1031, 1032, 668, 642, - 1054, 643, 669, 644, 1056, 471, 598, 1064, 452, 1072, - 1297, 453, 1076, 262, 1079, 275, 415, 433, 1085, 1086, - 9, 1092, 698, 699, 18, 273, 508, 1117, 689, 449, - 1134, 448, 1204, 1206, 558, 490, 1224, 476, 308, 1227, - 680, 505, 1232, 445, 1299, 446, 532, 473, 329, 533, - 1342, 303, 351, 326, 549, 309, 352, 534, 474, 1305, - 1313, 324, 31, 1332, 1343, 575, 613 + -32768, 521, 755, 4, 756, 950, 831, 840, 607, 539, + 716, 348, 635, 429, 1335, 926, 1149, 588, 859, 1276, + 1250, 464, 862, 326, 742, 938, 909, 910, 407, 393, + 399, 405, 659, 636, 502, 894, 460, 886, 494, 889, + 459, 898, 163, 425, 518, 902, 3, 905, 567, 936, + 988, 394, 913, 395, 687, 915, 572, 917, 918, 402, + 408, 409, 1154, 580, 632, 930, 255, 574, 931, 392, + 932, 940, 397, 400, 697, 473, 513, 507, 418, 1118, + 575, 618, 656, 453, 481, 630, 642, 628, 488, 441, + 424, 325, 972, 980, 495, 471, 994, 350, 1002, 750, + 1162, 650, 497, 1010, 651, 1017, 1020, 540, 541, 486, + 1032, 271, 1035, 498, 1041, 22, 677, 1046, 1047, 678, + 652, 1069, 653, 679, 654, 1071, 480, 608, 1079, 461, + 1087, 1324, 462, 1091, 264, 1094, 278, 354, 377, 442, + 1101, 1102, 9, 1108, 707, 708, 18, 276, 517, 1133, + 698, 1139, 275, 1142, 458, 1161, 457, 1231, 1233, 568, + 499, 1251, 485, 311, 1254, 690, 514, 1259, 454, 1326, + 455, 542, 482, 333, 543, 1369, 306, 357, 330, 559, + 312, 358, 544, 483, 1332, 1340, 327, 31, 1359, 1370, + 585, 623 ); protected array $ruleToNonTerminal = array( @@ -1054,17 +1064,19 @@ class Php8 extends \PhpParser\ParserAbstract 98, 99, 99, 100, 101, 101, 102, 102, 103, 103, 55, 55, 51, 51, 105, 53, 53, 106, 52, 52, 54, 54, 64, 64, 64, 64, 81, 81, 109, 109, - 111, 111, 112, 112, 112, 112, 110, 110, 110, 114, - 114, 114, 114, 89, 89, 117, 117, 117, 118, 118, - 115, 115, 119, 119, 121, 121, 122, 122, 116, 123, - 123, 120, 124, 124, 124, 124, 113, 113, 82, 82, - 82, 20, 20, 20, 126, 125, 125, 127, 127, 127, - 127, 60, 128, 128, 129, 61, 131, 131, 132, 132, - 133, 133, 86, 134, 134, 134, 134, 134, 134, 134, - 139, 139, 140, 140, 141, 141, 141, 141, 141, 142, - 143, 143, 138, 138, 135, 135, 137, 137, 145, 145, - 144, 144, 144, 144, 144, 144, 144, 136, 146, 146, - 148, 147, 147, 62, 104, 149, 149, 56, 56, 42, + 111, 111, 112, 112, 112, 112, 110, 110, 110, 115, + 115, 115, 115, 89, 89, 118, 118, 118, 119, 119, + 116, 116, 120, 120, 122, 122, 123, 123, 117, 124, + 124, 121, 125, 125, 125, 125, 113, 113, 82, 82, + 82, 20, 20, 20, 127, 126, 126, 128, 128, 128, + 128, 60, 129, 129, 130, 61, 132, 132, 133, 133, + 134, 134, 86, 135, 135, 135, 135, 135, 135, 135, + 135, 141, 141, 142, 142, 143, 143, 143, 143, 143, + 144, 145, 145, 140, 140, 136, 136, 139, 139, 147, + 147, 146, 146, 146, 146, 146, 146, 146, 137, 148, + 148, 150, 149, 149, 138, 138, 114, 114, 151, 151, + 153, 153, 153, 152, 152, 62, 104, 154, 154, 56, + 56, 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, 42, 42, 42, 42, 42, 42, @@ -1073,21 +1085,21 @@ class Php8 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, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 156, 158, 158, 159, 150, 150, 155, - 155, 160, 161, 161, 162, 163, 164, 164, 164, 164, - 19, 19, 73, 73, 73, 73, 151, 151, 151, 151, - 166, 166, 152, 152, 154, 154, 154, 157, 157, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, - 173, 173, 108, 175, 175, 175, 175, 153, 153, 153, - 153, 153, 153, 153, 153, 59, 59, 169, 169, 169, - 169, 169, 176, 176, 165, 165, 165, 165, 177, 177, - 177, 177, 177, 74, 74, 66, 66, 66, 66, 130, - 130, 130, 130, 180, 179, 168, 168, 168, 168, 168, - 168, 167, 167, 167, 178, 178, 178, 178, 107, 174, - 182, 182, 181, 181, 183, 183, 183, 183, 183, 183, - 183, 183, 171, 171, 171, 171, 170, 185, 184, 184, - 184, 184, 184, 184, 184, 184, 186, 186, 186, 186 + 42, 42, 42, 42, 42, 161, 163, 163, 164, 155, + 155, 160, 160, 165, 166, 166, 167, 168, 169, 169, + 169, 169, 19, 19, 73, 73, 73, 73, 156, 156, + 156, 156, 171, 171, 157, 157, 159, 159, 159, 162, + 162, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 178, 178, 178, 108, 180, 180, 180, 180, 158, + 158, 158, 158, 158, 158, 158, 158, 59, 59, 174, + 174, 174, 174, 174, 181, 181, 170, 170, 170, 170, + 182, 182, 182, 182, 182, 74, 74, 66, 66, 66, + 66, 131, 131, 131, 131, 185, 184, 173, 173, 173, + 173, 173, 173, 172, 172, 172, 183, 183, 183, 183, + 107, 179, 187, 187, 186, 186, 188, 188, 188, 188, + 188, 188, 188, 188, 176, 176, 176, 176, 175, 190, + 189, 189, 189, 189, 189, 189, 189, 189, 191, 191, + 191, 191 ); protected array $ruleToLength = array( @@ -1119,40 +1131,42 @@ class Php8 extends \PhpParser\ParserAbstract 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, + 0, 2, 1, 1, 1, 1, 7, 9, 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, 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, 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, + 2, 0, 1, 5, 7, 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, 0, 2, 0, 3, 5, 8, + 1, 3, 3, 0, 2, 2, 2, 3, 1, 0, + 1, 1, 3, 3, 3, 4, 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, 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, 2, 1, 1, 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, 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, 1, 3, 1, 1, 1, 4, - 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, - 4, 2, 2, 1, 3, 1, 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 + 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, 2, 1, + 1, 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, + 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, 1, 3, 1, 1, + 1, 4, 1, 4, 4, 0, 1, 1, 1, 3, + 3, 1, 4, 2, 2, 1, 3, 1, 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(): void { @@ -1813,11 +1827,11 @@ protected function initReduceCallbacks(): void { $self->semValue = Modifiers::READONLY; }, 286 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(6-6)], null, $self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-4)], $self->semStack[$stackPos-(6-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-1)]); + $self->semValue = new Node\Param($self->semStack[$stackPos-(7-6)], null, $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-4)], $self->semStack[$stackPos-(7-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-7)]); $self->checkParam($self->semValue); }, 287 => static function ($self, $stackPos) { - $self->semValue = new Node\Param($self->semStack[$stackPos-(8-6)], $self->semStack[$stackPos-(8-8)], $self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(8-2)], $self->semStack[$stackPos-(8-1)]); + $self->semValue = new Node\Param($self->semStack[$stackPos-(9-6)], $self->semStack[$stackPos-(9-8)], $self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-4)], $self->semStack[$stackPos-(9-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(9-2)], $self->semStack[$stackPos-(9-1)], $self->semStack[$stackPos-(9-9)]); $self->checkParam($self->semValue); }, 288 => static function ($self, $stackPos) { @@ -1968,755 +1982,794 @@ protected function initReduceCallbacks(): void { $self->semValue = new Stmt\Property($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-1)]); }, 344 => static function ($self, $stackPos) { + $self->semValue = new Stmt\Property($self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-6)]); + $self->checkPropertyHookList($self->semStack[$stackPos-(7-6)], $stackPos-(7-5)); + }, + 345 => static function ($self, $stackPos) { $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-1)]); $self->checkClassConst($self->semValue, $stackPos-(5-2)); }, - 345 => static function ($self, $stackPos) { + 346 => static function ($self, $stackPos) { $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-1)], $self->semStack[$stackPos-(6-4)]); $self->checkClassConst($self->semValue, $stackPos-(6-2)); }, - 346 => static function ($self, $stackPos) { + 347 => static function ($self, $stackPos) { $self->semValue = new Stmt\ClassMethod($self->semStack[$stackPos-(10-5)], ['type' => $self->semStack[$stackPos-(10-2)], 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-7)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); $self->checkClassMethod($self->semValue, $stackPos-(10-2)); }, - 347 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUse($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); - }, 348 => static function ($self, $stackPos) { - $self->semValue = new Stmt\EnumCase($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Stmt\TraitUse($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, 349 => static function ($self, $stackPos) { - $self->semValue = null; /* will be skipped */ + $self->semValue = new Stmt\EnumCase($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, 350 => static function ($self, $stackPos) { - $self->semValue = array(); + $self->semValue = null; /* will be skipped */ }, 351 => static function ($self, $stackPos) { - $self->semValue = $self->semStack[$stackPos-(3-2)]; + $self->semValue = array(); }, 352 => static function ($self, $stackPos) { - $self->semValue = array(); + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, 353 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; + $self->semValue = array(); }, 354 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Precedence($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, 355 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(5-1)][0], $self->semStack[$stackPos-(5-1)][1], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Stmt\TraitUseAdaptation\Precedence($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 356 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(5-1)][0], $self->semStack[$stackPos-(5-1)][1], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, 357 => static function ($self, $stackPos) { - $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 358 => static function ($self, $stackPos) { $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, 359 => static function ($self, $stackPos) { + $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + }, + 360 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]); }, - 360 => null, - 361 => static function ($self, $stackPos) { + 361 => null, + 362 => static function ($self, $stackPos) { $self->semValue = array(null, $self->semStack[$stackPos-(1-1)]); }, - 362 => static function ($self, $stackPos) { + 363 => static function ($self, $stackPos) { $self->semValue = null; }, - 363 => null, 364 => null, - 365 => static function ($self, $stackPos) { + 365 => null, + 366 => static function ($self, $stackPos) { $self->semValue = 0; }, - 366 => static function ($self, $stackPos) { + 367 => static function ($self, $stackPos) { $self->semValue = 0; }, - 367 => null, 368 => null, - 369 => static function ($self, $stackPos) { + 369 => null, + 370 => static function ($self, $stackPos) { $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; }, - 370 => static function ($self, $stackPos) { + 371 => static function ($self, $stackPos) { $self->semValue = Modifiers::PUBLIC; }, - 371 => static function ($self, $stackPos) { + 372 => static function ($self, $stackPos) { $self->semValue = Modifiers::PROTECTED; }, - 372 => static function ($self, $stackPos) { + 373 => static function ($self, $stackPos) { $self->semValue = Modifiers::PRIVATE; }, - 373 => static function ($self, $stackPos) { + 374 => static function ($self, $stackPos) { $self->semValue = Modifiers::STATIC; }, - 374 => static function ($self, $stackPos) { + 375 => static function ($self, $stackPos) { $self->semValue = Modifiers::ABSTRACT; }, - 375 => static function ($self, $stackPos) { + 376 => static function ($self, $stackPos) { $self->semValue = Modifiers::FINAL; }, - 376 => static function ($self, $stackPos) { + 377 => static function ($self, $stackPos) { $self->semValue = Modifiers::READONLY; }, - 377 => null, - 378 => static function ($self, $stackPos) { + 378 => null, + 379 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 379 => static function ($self, $stackPos) { + 380 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 380 => static function ($self, $stackPos) { + 381 => static function ($self, $stackPos) { $self->semValue = new Node\VarLikeIdentifier(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 381 => static function ($self, $stackPos) { + 382 => static function ($self, $stackPos) { $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 382 => static function ($self, $stackPos) { + 383 => static function ($self, $stackPos) { $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 383 => null, - 384 => null, + 384 => static function ($self, $stackPos) { + $self->semValue = []; + }, 385 => static function ($self, $stackPos) { - $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; + $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, 386 => static function ($self, $stackPos) { - $self->semValue = array($self->semStack[$stackPos-(1-1)]); + $self->semValue = []; }, 387 => static function ($self, $stackPos) { - $self->semValue = array(); + $self->semValue = $self->semStack[$stackPos-(3-2)]; $self->checkPropertyHookList($self->semStack[$stackPos-(3-2)], $stackPos-(3-1)); + }, + 388 => static function ($self, $stackPos) { + $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-5)], ['flags' => $self->semStack[$stackPos-(5-2)], 'byRef' => $self->semStack[$stackPos-(5-3)], 'params' => [], 'attrGroups' => $self->semStack[$stackPos-(5-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); + $self->checkPropertyHook($self->semValue, null); + }, + 389 => static function ($self, $stackPos) { + $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-8)], ['flags' => $self->semStack[$stackPos-(8-2)], 'byRef' => $self->semStack[$stackPos-(8-3)], 'params' => $self->semStack[$stackPos-(8-6)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); + $self->checkPropertyHook($self->semValue, $stackPos-(8-5)); }, - 388 => null, - 389 => null, 390 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = null; }, 391 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, 392 => static function ($self, $stackPos) { - $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = $self->semStack[$stackPos-(3-2)]; }, 393 => static function ($self, $stackPos) { - $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + $self->semValue = 0; }, 394 => static function ($self, $stackPos) { + $self->checkPropertyHookModifiers($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)]; + }, + 395 => null, + 396 => null, + 397 => static function ($self, $stackPos) { + $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; + }, + 398 => static function ($self, $stackPos) { + $self->semValue = array($self->semStack[$stackPos-(1-1)]); + }, + 399 => static function ($self, $stackPos) { + $self->semValue = array(); + }, + 400 => null, + 401 => null, + 402 => static function ($self, $stackPos) { + $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + }, + 403 => static function ($self, $stackPos) { + $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + }, + 404 => static function ($self, $stackPos) { + $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); + }, + 405 => static function ($self, $stackPos) { + $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); + }, + 406 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); if (!$self->phpVersion->allowsAssignNewByReference()) { $self->emitError(new Error('Cannot assign new by reference', $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]))); } }, - 395 => null, - 396 => null, - 397 => static function ($self, $stackPos) { + 407 => null, + 408 => null, + 409 => static function ($self, $stackPos) { $self->semValue = new Expr\Clone_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 398 => static function ($self, $stackPos) { + 410 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 399 => static function ($self, $stackPos) { + 411 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 400 => static function ($self, $stackPos) { + 412 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 401 => static function ($self, $stackPos) { + 413 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 402 => static function ($self, $stackPos) { + 414 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 403 => static function ($self, $stackPos) { + 415 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 404 => static function ($self, $stackPos) { + 416 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 405 => static function ($self, $stackPos) { + 417 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 406 => static function ($self, $stackPos) { + 418 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 407 => static function ($self, $stackPos) { + 419 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 408 => static function ($self, $stackPos) { + 420 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 409 => static function ($self, $stackPos) { + 421 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 410 => static function ($self, $stackPos) { + 422 => static function ($self, $stackPos) { $self->semValue = new Expr\AssignOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 411 => static function ($self, $stackPos) { + 423 => static function ($self, $stackPos) { $self->semValue = new Expr\PostInc($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 412 => static function ($self, $stackPos) { + 424 => static function ($self, $stackPos) { $self->semValue = new Expr\PreInc($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 413 => static function ($self, $stackPos) { + 425 => static function ($self, $stackPos) { $self->semValue = new Expr\PostDec($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 414 => static function ($self, $stackPos) { + 426 => static function ($self, $stackPos) { $self->semValue = new Expr\PreDec($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 415 => static function ($self, $stackPos) { + 427 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BooleanOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 416 => static function ($self, $stackPos) { + 428 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BooleanAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 417 => static function ($self, $stackPos) { + 429 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\LogicalOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 418 => static function ($self, $stackPos) { + 430 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\LogicalAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 419 => static function ($self, $stackPos) { + 431 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\LogicalXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 420 => static function ($self, $stackPos) { + 432 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 421 => static function ($self, $stackPos) { + 433 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 422 => static function ($self, $stackPos) { + 434 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 423 => static function ($self, $stackPos) { + 435 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 424 => static function ($self, $stackPos) { + 436 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 425 => static function ($self, $stackPos) { + 437 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 426 => static function ($self, $stackPos) { + 438 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 427 => static function ($self, $stackPos) { + 439 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 428 => static function ($self, $stackPos) { + 440 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 429 => static function ($self, $stackPos) { + 441 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 430 => static function ($self, $stackPos) { + 442 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 431 => static function ($self, $stackPos) { + 443 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 432 => static function ($self, $stackPos) { + 444 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 433 => static function ($self, $stackPos) { + 445 => static function ($self, $stackPos) { $self->semValue = new Expr\UnaryPlus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 434 => static function ($self, $stackPos) { + 446 => static function ($self, $stackPos) { $self->semValue = new Expr\UnaryMinus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 435 => static function ($self, $stackPos) { + 447 => static function ($self, $stackPos) { $self->semValue = new Expr\BooleanNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 436 => static function ($self, $stackPos) { + 448 => static function ($self, $stackPos) { $self->semValue = new Expr\BitwiseNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 437 => static function ($self, $stackPos) { + 449 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Identical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 438 => static function ($self, $stackPos) { + 450 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\NotIdentical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 439 => static function ($self, $stackPos) { + 451 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Equal($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 440 => static function ($self, $stackPos) { + 452 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\NotEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 441 => static function ($self, $stackPos) { + 453 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Spaceship($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 442 => static function ($self, $stackPos) { + 454 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Smaller($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 443 => static function ($self, $stackPos) { + 455 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\SmallerOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 444 => static function ($self, $stackPos) { + 456 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Greater($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 445 => static function ($self, $stackPos) { + 457 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\GreaterOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 446 => static function ($self, $stackPos) { + 458 => static function ($self, $stackPos) { $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 447 => static function ($self, $stackPos) { + 459 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 448 => static function ($self, $stackPos) { + 460 => static function ($self, $stackPos) { $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, - 449 => static function ($self, $stackPos) { + 461 => static function ($self, $stackPos) { $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 450 => static function ($self, $stackPos) { + 462 => static function ($self, $stackPos) { $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 451 => static function ($self, $stackPos) { + 463 => static function ($self, $stackPos) { $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 452 => static function ($self, $stackPos) { + 464 => static function ($self, $stackPos) { $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 453 => static function ($self, $stackPos) { + 465 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 454 => static function ($self, $stackPos) { + 466 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 455 => static function ($self, $stackPos) { + 467 => static function ($self, $stackPos) { $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 456 => static function ($self, $stackPos) { + 468 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 457 => static function ($self, $stackPos) { + 469 => static function ($self, $stackPos) { $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 458 => static function ($self, $stackPos) { + 470 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 459 => static function ($self, $stackPos) { + 471 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = $self->getFloatCastKind($self->semStack[$stackPos-(2-1)]); $self->semValue = new Expr\Cast\Double($self->semStack[$stackPos-(2-2)], $attrs); }, - 460 => static function ($self, $stackPos) { + 472 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 461 => static function ($self, $stackPos) { + 473 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Array_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 462 => static function ($self, $stackPos) { + 474 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Object_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 463 => static function ($self, $stackPos) { + 475 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 464 => static function ($self, $stackPos) { + 476 => static function ($self, $stackPos) { $self->semValue = new Expr\Cast\Unset_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 465 => static function ($self, $stackPos) { + 477 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = strtolower($self->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $self->semValue = new Expr\Exit_($self->semStack[$stackPos-(2-2)], $attrs); }, - 466 => static function ($self, $stackPos) { + 478 => static function ($self, $stackPos) { $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 467 => null, - 468 => static function ($self, $stackPos) { + 479 => null, + 480 => static function ($self, $stackPos) { $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 469 => static function ($self, $stackPos) { + 481 => static function ($self, $stackPos) { $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 470 => static function ($self, $stackPos) { + 482 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 471 => static function ($self, $stackPos) { + 483 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(2-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 472 => static function ($self, $stackPos) { + 484 => static function ($self, $stackPos) { $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 473 => static function ($self, $stackPos) { + 485 => static function ($self, $stackPos) { $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 474 => static function ($self, $stackPos) { + 486 => static function ($self, $stackPos) { $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 475 => static function ($self, $stackPos) { + 487 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'returnType' => $self->semStack[$stackPos-(8-6)], 'expr' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); }, - 476 => static function ($self, $stackPos) { + 488 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 477 => static function ($self, $stackPos) { + 489 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'uses' => $self->semStack[$stackPos-(8-6)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])); }, - 478 => static function ($self, $stackPos) { + 490 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 479 => static function ($self, $stackPos) { + 491 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 480 => static function ($self, $stackPos) { + 492 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'returnType' => $self->semStack[$stackPos-(10-8)], 'expr' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); }, - 481 => static function ($self, $stackPos) { + 493 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos])); }, - 482 => static function ($self, $stackPos) { + 494 => static function ($self, $stackPos) { $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'uses' => $self->semStack[$stackPos-(10-8)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos])); }, - 483 => static function ($self, $stackPos) { + 495 => static function ($self, $stackPos) { $self->semValue = array(new Stmt\Class_(null, ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])), $self->semStack[$stackPos-(8-3)]); $self->checkClass($self->semValue[0], -1); }, - 484 => static function ($self, $stackPos) { + 496 => static function ($self, $stackPos) { $self->semValue = new Expr\New_($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 485 => static function ($self, $stackPos) { + 497 => static function ($self, $stackPos) { list($class, $ctorArgs) = $self->semStack[$stackPos-(2-2)]; $self->semValue = new Expr\New_($class, $ctorArgs, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 486 => static function ($self, $stackPos) { + 498 => static function ($self, $stackPos) { $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 487 => null, - 488 => null, - 489 => static function ($self, $stackPos) { + 499 => null, + 500 => null, + 501 => static function ($self, $stackPos) { $self->semValue = array(); }, - 490 => static function ($self, $stackPos) { + 502 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(4-3)]; }, - 491 => null, - 492 => static function ($self, $stackPos) { + 503 => null, + 504 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 493 => static function ($self, $stackPos) { + 505 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 494 => static function ($self, $stackPos) { + 506 => static function ($self, $stackPos) { $self->semValue = new Node\ClosureUse($self->semStack[$stackPos-(2-2)], $self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 495 => static function ($self, $stackPos) { + 507 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 496 => static function ($self, $stackPos) { + 508 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 497 => static function ($self, $stackPos) { + 509 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 498 => static function ($self, $stackPos) { + 510 => static function ($self, $stackPos) { $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 499 => static function ($self, $stackPos) { + 511 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 500 => static function ($self, $stackPos) { + 512 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 501 => null, - 502 => static function ($self, $stackPos) { + 513 => null, + 514 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 503 => static function ($self, $stackPos) { + 515 => static function ($self, $stackPos) { $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 504 => static function ($self, $stackPos) { + 516 => static function ($self, $stackPos) { $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 505 => static function ($self, $stackPos) { + 517 => static function ($self, $stackPos) { $self->semValue = new Name\Relative(substr($self->semStack[$stackPos-(1-1)], 10), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 506 => null, - 507 => null, - 508 => static function ($self, $stackPos) { + 518 => null, + 519 => null, + 520 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 509 => static function ($self, $stackPos) { + 521 => static function ($self, $stackPos) { $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 510 => null, - 511 => null, - 512 => static function ($self, $stackPos) { + 522 => null, + 523 => null, + 524 => static function ($self, $stackPos) { $self->semValue = null; }, - 513 => static function ($self, $stackPos) { + 525 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 514 => static function ($self, $stackPos) { + 526 => static function ($self, $stackPos) { $self->semValue = array(); }, - 515 => static function ($self, $stackPos) { + 527 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; }, - 516 => static function ($self, $stackPos) { + 528 => static function ($self, $stackPos) { foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)]; }, - 517 => static function ($self, $stackPos) { + 529 => static function ($self, $stackPos) { $self->semValue = array(); }, - 518 => null, - 519 => static function ($self, $stackPos) { + 530 => null, + 531 => static function ($self, $stackPos) { $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 520 => static function ($self, $stackPos) { + 532 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 521 => static function ($self, $stackPos) { + 533 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 522 => static function ($self, $stackPos) { + 534 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 523 => static function ($self, $stackPos) { + 535 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 524 => static function ($self, $stackPos) { + 536 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 525 => static function ($self, $stackPos) { + 537 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 526 => static function ($self, $stackPos) { + 538 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 527 => static function ($self, $stackPos) { + 539 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 528 => static function ($self, $stackPos) { + 540 => static function ($self, $stackPos) { $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 529 => static function ($self, $stackPos) { + 541 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 530 => static function ($self, $stackPos) { + 542 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos])); }, - 531 => static function ($self, $stackPos) { + 543 => static function ($self, $stackPos) { $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 532 => static function ($self, $stackPos) { + 544 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT; $self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs); }, - 533 => static function ($self, $stackPos) { + 545 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG; $self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs); $self->createdArrays->attach($self->semValue); }, - 534 => static function ($self, $stackPos) { + 546 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue); }, - 535 => static function ($self, $stackPos) { + 547 => static function ($self, $stackPos) { $self->semValue = Scalar\String_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->supportsUnicodeEscapes()); }, - 536 => static function ($self, $stackPos) { + 548 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($self->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = new Scalar\InterpolatedString($self->semStack[$stackPos-(3-2)], $attrs); }, - 537 => static function ($self, $stackPos) { + 549 => static function ($self, $stackPos) { $self->semValue = $self->parseLNumber($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->allowsInvalidOctals()); }, - 538 => static function ($self, $stackPos) { + 550 => static function ($self, $stackPos) { $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 539 => null, - 540 => null, - 541 => null, - 542 => static function ($self, $stackPos) { + 551 => null, + 552 => null, + 553 => null, + 554 => static function ($self, $stackPos) { $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); }, - 543 => static function ($self, $stackPos) { + 555 => static function ($self, $stackPos) { $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)], $self->tokenEndStack[$stackPos-(2-2)]), true); }, - 544 => static function ($self, $stackPos) { + 556 => static function ($self, $stackPos) { $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)]), true); }, - 545 => static function ($self, $stackPos) { + 557 => static function ($self, $stackPos) { $self->semValue = null; }, - 546 => null, - 547 => null, - 548 => static function ($self, $stackPos) { + 558 => null, + 559 => null, + 560 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 549 => null, - 550 => null, - 551 => null, - 552 => null, - 553 => null, - 554 => null, - 555 => static function ($self, $stackPos) { + 561 => null, + 562 => null, + 563 => null, + 564 => null, + 565 => null, + 566 => null, + 567 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 556 => null, - 557 => null, - 558 => null, - 559 => static function ($self, $stackPos) { + 568 => null, + 569 => null, + 570 => null, + 571 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 560 => null, - 561 => static function ($self, $stackPos) { + 572 => null, + 573 => static function ($self, $stackPos) { $self->semValue = new Expr\MethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 562 => static function ($self, $stackPos) { + 574 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafeMethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 563 => static function ($self, $stackPos) { + 575 => static function ($self, $stackPos) { $self->semValue = null; }, - 564 => null, - 565 => null, - 566 => null, - 567 => static function ($self, $stackPos) { + 576 => null, + 577 => null, + 578 => null, + 579 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 568 => static function ($self, $stackPos) { + 580 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 569 => null, - 570 => static function ($self, $stackPos) { + 581 => null, + 582 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 571 => static function ($self, $stackPos) { + 583 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 572 => static function ($self, $stackPos) { + 584 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])), $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 573 => static function ($self, $stackPos) { + 585 => static function ($self, $stackPos) { $var = $self->semStack[$stackPos-(1-1)]->name; $self->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])) : $var; }, - 574 => static function ($self, $stackPos) { + 586 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 575 => null, - 576 => static function ($self, $stackPos) { + 587 => null, + 588 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 577 => static function ($self, $stackPos) { + 589 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 578 => static function ($self, $stackPos) { + 590 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 579 => static function ($self, $stackPos) { + 591 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 580 => static function ($self, $stackPos) { + 592 => static function ($self, $stackPos) { $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 581 => null, - 582 => static function ($self, $stackPos) { + 593 => null, + 594 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 583 => null, - 584 => null, - 585 => static function ($self, $stackPos) { + 595 => null, + 596 => null, + 597 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 586 => null, - 587 => static function ($self, $stackPos) { + 598 => null, + 599 => static function ($self, $stackPos) { $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2; }, - 588 => static function ($self, $stackPos) { + 600 => static function ($self, $stackPos) { $self->semValue = new Expr\List_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); $self->semValue->setAttribute('kind', Expr\List_::KIND_LIST); $self->postprocessList($self->semValue); }, - 589 => static function ($self, $stackPos) { + 601 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(1-1)]; $end = count($self->semValue)-1; if ($self->semValue[$end]->value instanceof Expr\Error) array_pop($self->semValue); }, - 590 => null, - 591 => static function ($self, $stackPos) { + 602 => null, + 603 => static function ($self, $stackPos) { /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */ }, - 592 => static function ($self, $stackPos) { + 604 => static function ($self, $stackPos) { $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)]; }, - 593 => static function ($self, $stackPos) { + 605 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 594 => static function ($self, $stackPos) { + 606 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 595 => static function ($self, $stackPos) { + 607 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 596 => static function ($self, $stackPos) { + 608 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 597 => static function ($self, $stackPos) { + 609 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 598 => static function ($self, $stackPos) { + 610 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 599 => static function ($self, $stackPos) { + 611 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 600 => static function ($self, $stackPos) { + 612 => static function ($self, $stackPos) { $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true); }, - 601 => static function ($self, $stackPos) { + 613 => static function ($self, $stackPos) { /* Create an Error node now to remember the position. We'll later either report an error, or convert this into a null element, depending on whether this is a creation or destructuring context. */ $attrs = $self->createEmptyElemAttributes($self->tokenPos); $self->semValue = new Node\ArrayItem(new Expr\Error($attrs), null, false, $attrs); }, - 602 => static function ($self, $stackPos) { + 614 => static function ($self, $stackPos) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, - 603 => static function ($self, $stackPos) { + 615 => static function ($self, $stackPos) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; }, - 604 => static function ($self, $stackPos) { + 616 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(1-1)]); }, - 605 => static function ($self, $stackPos) { + 617 => static function ($self, $stackPos) { $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]); }, - 606 => static function ($self, $stackPos) { + 618 => static function ($self, $stackPos) { $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs); }, - 607 => static function ($self, $stackPos) { + 619 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 608 => null, - 609 => static function ($self, $stackPos) { + 620 => null, + 621 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); }, - 610 => static function ($self, $stackPos) { + 622 => static function ($self, $stackPos) { $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 611 => static function ($self, $stackPos) { + 623 => static function ($self, $stackPos) { $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 612 => static function ($self, $stackPos) { + 624 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 613 => static function ($self, $stackPos) { + 625 => static function ($self, $stackPos) { $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); }, - 614 => static function ($self, $stackPos) { + 626 => static function ($self, $stackPos) { $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); }, - 615 => static function ($self, $stackPos) { + 627 => static function ($self, $stackPos) { $self->semValue = $self->semStack[$stackPos-(3-2)]; }, - 616 => static function ($self, $stackPos) { + 628 => static function ($self, $stackPos) { $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 617 => static function ($self, $stackPos) { + 629 => static function ($self, $stackPos) { $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); }, - 618 => static function ($self, $stackPos) { + 630 => static function ($self, $stackPos) { $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); }, - 619 => null, + 631 => null, ]; } } diff --git a/lib/PhpParser/ParserAbstract.php b/lib/PhpParser/ParserAbstract.php index 4026384be4..68bf0e5e70 100644 --- a/lib/PhpParser/ParserAbstract.php +++ b/lib/PhpParser/ParserAbstract.php @@ -14,6 +14,7 @@ use PhpParser\Node\InterpolatedStringPart; use PhpParser\Node\Name; use PhpParser\Node\Param; +use PhpParser\Node\PropertyHook; use PhpParser\Node\Scalar\InterpolatedString; use PhpParser\Node\Scalar\Int_; use PhpParser\Node\Scalar\String_; @@ -1158,6 +1159,42 @@ protected function checkUseUse(UseItem $node, int $namePos): void { } } + /** @param PropertyHook[] $hooks */ + protected function checkPropertyHookList(array $hooks, int $hookPos): void { + if (empty($hooks)) { + $this->emitError(new Error( + 'Property hook list cannot be empty', $this->getAttributesAt($hookPos))); + } + } + + protected function checkPropertyHook(PropertyHook $hook, ?int $paramListPos): void { + $name = $hook->name->toLowerString(); + if ($name !== 'get' && $name !== 'set') { + $this->emitError(new Error( + 'Unknown hook "' . $hook->name . '", expected "get" or "set"', + $hook->name->getAttributes())); + } + if ($name === 'get' && $paramListPos !== null) { + $this->emitError(new Error( + 'get hook must not have a parameter list', $this->getAttributesAt($paramListPos))); + } + } + + protected function checkPropertyHookModifiers(int $a, int $b, int $modifierPos): void { + try { + Modifiers::verifyModifier($a, $b); + } catch (Error $error) { + $error->setAttributes($this->getAttributesAt($modifierPos)); + $this->emitError($error); + } + + if ($b != Modifiers::FINAL) { + $this->emitError(new Error( + 'Cannot use the ' . Modifiers::toString($b) . ' modifier on a property hook', + $this->getAttributesAt($modifierPos))); + } + } + /** * Creates the token map. * diff --git a/lib/PhpParser/PrettyPrinter/Standard.php b/lib/PhpParser/PrettyPrinter/Standard.php index 61dad3a913..51c54f7de6 100644 --- a/lib/PhpParser/PrettyPrinter/Standard.php +++ b/lib/PhpParser/PrettyPrinter/Standard.php @@ -23,7 +23,8 @@ protected function pParam(Node\Param $node): string { . ($node->byRef ? '&' : '') . ($node->variadic ? '...' : '') . $this->p($node->var) - . ($node->default ? ' = ' . $this->p($node->default) : ''); + . ($node->default ? ' = ' . $this->p($node->default) : '') + . ($node->hooks ? ' {' . $this->pStmts($node->hooks) . $this->nl . '}' : ''); } protected function pArg(Node\Arg $node): string { @@ -831,7 +832,8 @@ protected function pStmt_Property(Stmt\Property $node): string { return $this->pAttrGroups($node->attrGroups) . (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags)) . ($node->type ? $this->p($node->type) . ' ' : '') - . $this->pCommaSeparated($node->props) . ';'; + . $this->pCommaSeparated($node->props) + . ($node->hooks ? ' {' . $this->pStmts($node->hooks) . $this->nl . '}' : ';'); } protected function pPropertyItem(Node\PropertyItem $node): string { @@ -839,6 +841,15 @@ protected function pPropertyItem(Node\PropertyItem $node): string { . (null !== $node->default ? ' = ' . $this->p($node->default) : ''); } + protected function pPropertyHook(Node\PropertyHook $node): string { + return $this->pAttrGroups($node->attrGroups) + . $this->pModifiers($node->flags) + . ($node->byRef ? '&' : '') . $node->name + . ($node->params ? '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' : '') + . (\is_array($node->body) ? ' {' . $this->pStmts($node->body) . $this->nl . '}' + : ($node->body !== null ? ' => ' . $this->p($node->body) : '') . ';'); + } + protected function pStmt_ClassMethod(Stmt\ClassMethod $node): string { return $this->pAttrGroups($node->attrGroups) . $this->pModifiers($node->flags) diff --git a/lib/PhpParser/PrettyPrinterAbstract.php b/lib/PhpParser/PrettyPrinterAbstract.php index 17f27a15ea..1dbd21f587 100644 --- a/lib/PhpParser/PrettyPrinterAbstract.php +++ b/lib/PhpParser/PrettyPrinterAbstract.php @@ -14,6 +14,7 @@ use PhpParser\Node\IntersectionType; use PhpParser\Node\MatchArm; use PhpParser\Node\Param; +use PhpParser\Node\PropertyHook; use PhpParser\Node\Scalar; use PhpParser\Node\Stmt; use PhpParser\Node\UnionType; @@ -1517,6 +1518,7 @@ protected function initializeListInsertionMap(): void { Stmt\UseUse::class . '->uses' => ', ', MatchArm::class . '->conds' => ', ', AttributeGroup::class . '->attrs' => ', ', + PropertyHook::class . '->params' => ', ', // statement lists Expr\Closure::class . '->stmts' => "\n", @@ -1554,10 +1556,15 @@ protected function initializeListInsertionMap(): void { Expr\Closure::class . '->attrGroups' => ' ', Expr\ArrowFunction::class . '->attrGroups' => ' ', Param::class . '->attrGroups' => ' ', + PropertyHook::class . '->attrGroups' => ' ', + Stmt\Switch_::class . '->cases' => "\n", Stmt\TraitUse::class . '->adaptations' => "\n", Stmt\TryCatch::class . '->stmts' => "\n", Stmt\While_::class . '->stmts' => "\n", + PropertyHook::class . '->body' => "\n", + Stmt\Property::class . '->hooks' => "\n", + Param::class . '->hooks' => "\n", // dummy for top-level context 'File->stmts' => "\n", @@ -1641,6 +1648,7 @@ protected function initializeModifierChangeMap(): void { Stmt\Property::class . '->flags' => ['pModifiers', \T_VARIABLE], PrintableNewAnonClassNode::class . '->flags' => ['pModifiers', \T_CLASS], Param::class . '->flags' => ['pModifiers', \T_VARIABLE], + PropertyHook::class . '->flags' => ['pModifiers', \T_STRING], Expr\Closure::class . '->static' => ['pStatic', \T_FUNCTION], Expr\ArrowFunction::class . '->static' => ['pStatic', \T_FN], //Stmt\TraitUseAdaptation\Alias::class . '->newModifier' => 0, // TODO diff --git a/test/PhpParser/Builder/PropertyTest.php b/test/PhpParser/Builder/PropertyTest.php index bbaced4d65..4a37e82796 100644 --- a/test/PhpParser/Builder/PropertyTest.php +++ b/test/PhpParser/Builder/PropertyTest.php @@ -3,6 +3,7 @@ namespace PhpParser\Builder; use PhpParser\Comment; +use PhpParser\Error; use PhpParser\Modifiers; use PhpParser\Node\Arg; use PhpParser\Node\Attribute; @@ -10,6 +11,8 @@ use PhpParser\Node\Expr; use PhpParser\Node\Identifier; use PhpParser\Node\Name; +use PhpParser\Node\PropertyHook; +use PhpParser\Node\PropertyItem; use PhpParser\Node\Scalar; use PhpParser\Node\Scalar\Int_; use PhpParser\Node\Stmt; @@ -29,9 +32,7 @@ public function testModifiers(): void { $this->assertEquals( new Stmt\Property( Modifiers::PRIVATE | Modifiers::STATIC, - [ - new \PhpParser\Node\PropertyItem('test') - ] + [new PropertyItem('test')] ), $node ); @@ -44,9 +45,7 @@ public function testModifiers(): void { $this->assertEquals( new Stmt\Property( Modifiers::PROTECTED, - [ - new \PhpParser\Node\PropertyItem('test') - ] + [new PropertyItem('test')] ), $node ); @@ -59,9 +58,7 @@ public function testModifiers(): void { $this->assertEquals( new Stmt\Property( Modifiers::PUBLIC, - [ - new \PhpParser\Node\PropertyItem('test') - ] + [new PropertyItem('test')] ), $node ); @@ -74,12 +71,23 @@ public function testModifiers(): void { $this->assertEquals( new Stmt\Property( Modifiers::READONLY, - [ - new \PhpParser\Node\PropertyItem('test') - ] + [new PropertyItem('test')] ), $node ); + + $node = $this->createPropertyBuilder('test') + ->makeFinal() + ->getNode(); + $this->assertEquals( + new Stmt\Property(Modifiers::FINAL, [new PropertyItem('test')]), + $node); + } + + public function testAbstractWithoutHook() { + $this->expectException(Error::class); + $this->expectExceptionMessage('Only hooked properties may be declared abstract'); + $this->createPropertyBuilder('test')->makeAbstract()->getNode(); } public function testDocComment(): void { @@ -136,6 +144,23 @@ public function testAddAttribute(): void { ); } + public function testAddHook(): void { + $get = new PropertyHook('get', null); + $set = new PropertyHook('set', null); + $node = $this->createPropertyBuilder('test') + ->addHook($get) + ->addHook($set) + ->makeAbstract() + ->getNode(); + $this->assertEquals( + new Stmt\Property( + Modifiers::ABSTRACT, + [new PropertyItem('test')], + [], null, [], + [$get, $set]), + $node); + } + public static function provideTestDefaultValues() { return [ [ diff --git a/test/PhpParser/NodeAbstractTest.php b/test/PhpParser/NodeAbstractTest.php index dc521c79a6..5c28e5fa81 100644 --- a/test/PhpParser/NodeAbstractTest.php +++ b/test/PhpParser/NodeAbstractTest.php @@ -260,7 +260,8 @@ function functionName(&$a = 0, $b = 1.0) { } }, "flags": 0, - "attrGroups": [], + "attrGroups": [],, + "hooks": [] "attributes": { "startLine": 4, "startTokenPos": 9, @@ -301,7 +302,8 @@ function functionName(&$a = 0, $b = 1.0) { } }, "flags": 0, - "attrGroups": [], + "attrGroups": [],, + "hooks": [] "attributes": { "startLine": 4, "startTokenPos": 17, @@ -464,7 +466,8 @@ function functionName(&$a = 0, $b = 1.0) { "value": 0 }, "flags": 0, - "attrGroups": [] + "attrGroups": [], + "hooks": [] }, { "nodeType": "Param", @@ -505,7 +508,8 @@ function functionName(&$a = 0, $b = 1.0) { "value": 1 }, "flags": 0, - "attrGroups": [] + "attrGroups": [], + "hooks": [] } ], "returnType": null, diff --git a/test/code/formatPreservation/property_hooks.test b/test/code/formatPreservation/property_hooks.test new file mode 100644 index 0000000000..b6e3c6ed8c --- /dev/null +++ b/test/code/formatPreservation/property_hooks.test @@ -0,0 +1,128 @@ +Property hooks +----- + 42; + } +} +----- +$stmts[0]->stmts[0]->hooks[] = new Node\PropertyHook('set', new Scalar\Int_(123)); +----- + 42; + set => 123; + } +} +----- + 42; } + ) {} +} +----- +$stmts[0]->stmts[0]->params[0]->hooks[] = new Node\PropertyHook('set', new Scalar\Int_(123)); +----- + 42; + set => 123; } + ) {} +} +----- +stmts[0]->hooks[0]->body[] = new Stmt\Expression(new Expr\Variable('b')); +----- + 42; + } +} +----- +$stmts[0]->stmts[0]->hooks[0]->flags = Modifiers::FINAL; +----- + 42; + } +} +----- + 42; + } +} +----- +$stmts[0]->stmts[0]->hooks[0]->body = [new Stmt\Return_(new Scalar\Int_(24))]; +----- +stmts[0]->hooks[0]->body = new Scalar\Int_(24); +$stmts[0]->stmts[1]->hooks[0]->body = [new Stmt\Return_(new Scalar\Int_(24))]; +----- + 24; + } + public $prop2 { + &get { + return 24; + } + } +} diff --git a/test/code/parser/commentAtEndOfClass.test b/test/code/parser/commentAtEndOfClass.test index 8e353ad6d5..e287451dad 100644 --- a/test/code/parser/commentAtEndOfClass.test +++ b/test/code/parser/commentAtEndOfClass.test @@ -31,6 +31,8 @@ array( default: null ) ) + hooks: array( + ) ) 1: Stmt_Nop( comments: array( diff --git a/test/code/parser/errorHandling/recovery.test b/test/code/parser/errorHandling/recovery.test index f6a016eb4d..49e9b277bc 100644 --- a/test/code/parser/errorHandling/recovery.test +++ b/test/code/parser/errorHandling/recovery.test @@ -714,6 +714,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -869,6 +871,8 @@ array( default: null ) ) + hooks: array( + ) ) 1: Stmt_Property( attrGroups: array( @@ -883,6 +887,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -984,6 +990,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) returnType: null @@ -1016,6 +1024,8 @@ array( name: foo ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -1029,6 +1039,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) returnType: null @@ -1058,6 +1070,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) returnType: null @@ -1087,6 +1101,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) returnType: null @@ -1118,6 +1134,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) returnType: null @@ -1156,6 +1174,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) returnType: null @@ -1183,6 +1203,8 @@ array( var: Expr_Error( ) default: null + hooks: array( + ) ) ) uses: array( @@ -1352,7 +1374,7 @@ class B { const X = 1 } ----- -Syntax error, unexpected T_PUBLIC, expecting ';' from 6:5 to 6:10 +Syntax error, unexpected T_PUBLIC, expecting ';' or '{' from 6:5 to 6:10 Syntax error, unexpected '}', expecting ';' from 12:1 to 12:1 array( 0: Stmt_Class( @@ -1379,6 +1401,8 @@ array( default: null ) ) + hooks: array( + ) comments: array( 0: /** @var ?string */ ) @@ -1405,6 +1429,8 @@ array( name: s ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/expr/arrow_function.test b/test/code/parser/expr/arrow_function.test index 3ab9e2711b..f81dde44f4 100644 --- a/test/code/parser/expr/arrow_function.test +++ b/test/code/parser/expr/arrow_function.test @@ -32,6 +32,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) returnType: null @@ -60,6 +62,8 @@ array( default: Scalar_Int( value: 42 ) + hooks: array( + ) ) ) returnType: null @@ -86,6 +90,8 @@ array( name: x ) default: null + hooks: array( + ) ) ) returnType: null @@ -112,6 +118,8 @@ array( name: x ) default: null + hooks: array( + ) ) ) returnType: null @@ -138,6 +146,8 @@ array( name: x ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -150,6 +160,8 @@ array( name: rest ) default: null + hooks: array( + ) ) ) returnType: null @@ -192,6 +204,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -204,6 +218,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null @@ -235,6 +251,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -247,6 +265,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/expr/closure.test b/test/code/parser/expr/closure.test index 304603b38d..a4177068c1 100644 --- a/test/code/parser/expr/closure.test +++ b/test/code/parser/expr/closure.test @@ -28,6 +28,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) uses: array( @@ -60,6 +62,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) uses: array( @@ -120,6 +124,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) uses: array( @@ -162,6 +168,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) uses: array( diff --git a/test/code/parser/expr/uvs/indirectCall.test b/test/code/parser/expr/uvs/indirectCall.test index 08535cf5d9..d2cfa99aa2 100644 --- a/test/code/parser/expr/uvs/indirectCall.test +++ b/test/code/parser/expr/uvs/indirectCall.test @@ -211,6 +211,8 @@ array( name: x ) default: null + hooks: array( + ) ) ) uses: array( @@ -289,6 +291,8 @@ array( name: null ) ) + hooks: array( + ) ) ) uses: array( diff --git a/test/code/parser/semiReserved.test b/test/code/parser/semiReserved.test index 5b361cb711..e7731aedc4 100644 --- a/test/code/parser/semiReserved.test +++ b/test/code/parser/semiReserved.test @@ -133,6 +133,8 @@ array( default: null ) ) + hooks: array( + ) ) 5: Stmt_Property( attrGroups: array( @@ -147,6 +149,8 @@ array( default: null ) ) + hooks: array( + ) ) 6: Stmt_ClassConst( attrGroups: array( diff --git a/test/code/parser/stmt/attributes.test b/test/code/parser/stmt/attributes.test index 2a0d2d28db..f15057aff9 100644 --- a/test/code/parser/stmt/attributes.test +++ b/test/code/parser/stmt/attributes.test @@ -159,6 +159,8 @@ array( name: param ) default: null + hooks: array( + ) ) ) returnType: null @@ -189,6 +191,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) diff --git a/test/code/parser/stmt/class/anonymous.test b/test/code/parser/stmt/class/anonymous.test index 0af0e7695a..6ac4c8a178 100644 --- a/test/code/parser/stmt/class/anonymous.test +++ b/test/code/parser/stmt/class/anonymous.test @@ -102,6 +102,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) diff --git a/test/code/parser/stmt/class/implicitPublic.test b/test/code/parser/stmt/class/implicitPublic.test index 6a6ad1eaba..f42dc6c6e5 100644 --- a/test/code/parser/stmt/class/implicitPublic.test +++ b/test/code/parser/stmt/class/implicitPublic.test @@ -37,6 +37,8 @@ array( default: null ) ) + hooks: array( + ) ) 1: Stmt_Property( attrGroups: array( @@ -51,6 +53,8 @@ array( default: null ) ) + hooks: array( + ) ) 2: Stmt_ClassMethod( attrGroups: array( diff --git a/test/code/parser/stmt/class/modifier_error.test b/test/code/parser/stmt/class/modifier_error.test index e6b6d90bbc..4257c2f281 100644 --- a/test/code/parser/stmt/class/modifier_error.test +++ b/test/code/parser/stmt/class/modifier_error.test @@ -28,6 +28,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -61,6 +63,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -94,6 +98,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -159,6 +165,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) diff --git a/test/code/parser/stmt/class/php4Style.test b/test/code/parser/stmt/class/php4Style.test index c59f2f36b6..abf5151237 100644 --- a/test/code/parser/stmt/class/php4Style.test +++ b/test/code/parser/stmt/class/php4Style.test @@ -33,6 +33,8 @@ array( default: null ) ) + hooks: array( + ) ) 1: Stmt_ClassMethod( attrGroups: array( diff --git a/test/code/parser/stmt/class/propertyTypes.test b/test/code/parser/stmt/class/propertyTypes.test index bc301d1256..8a6f1bc753 100644 --- a/test/code/parser/stmt/class/propertyTypes.test +++ b/test/code/parser/stmt/class/propertyTypes.test @@ -36,6 +36,8 @@ array( default: null ) ) + hooks: array( + ) ) 1: Stmt_Property( attrGroups: array( @@ -52,6 +54,8 @@ array( default: null ) ) + hooks: array( + ) ) 2: Stmt_Property( attrGroups: array( @@ -70,6 +74,8 @@ array( default: null ) ) + hooks: array( + ) ) 3: Stmt_Property( attrGroups: array( @@ -88,6 +94,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) diff --git a/test/code/parser/stmt/class/property_hooks.test b/test/code/parser/stmt/class/property_hooks.test new file mode 100644 index 0000000000..f53211c6ff --- /dev/null +++ b/test/code/parser/stmt/class/property_hooks.test @@ -0,0 +1,525 @@ +Property hooks +----- + 42; + set => $value; + } + abstract $prop3 { + &get; + set; + } + public $prop4 { + final get { return 42; } + set(string $value) { } + } +} +----- +array( + 0: Stmt_Class( + attrGroups: array( + ) + flags: 0 + name: Identifier( + name: Test + ) + extends: null + implements: array( + ) + stmts: array( + 0: Stmt_Property( + attrGroups: array( + ) + flags: PUBLIC (1) + type: null + props: array( + 0: PropertyItem( + name: VarLikeIdentifier( + name: prop + ) + default: null + ) + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: get + ) + params: array( + ) + body: array( + 0: Stmt_Return( + expr: Scalar_Int( + value: 42 + ) + ) + ) + ) + 1: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: set + ) + params: array( + ) + body: array( + 0: Stmt_Echo( + exprs: array( + 0: Expr_Variable( + name: value + ) + ) + ) + ) + ) + ) + ) + 1: Stmt_Property( + attrGroups: array( + ) + flags: PRIVATE (4) + type: null + props: array( + 0: PropertyItem( + name: VarLikeIdentifier( + name: prop2 + ) + default: null + ) + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: get + ) + params: array( + ) + body: Scalar_Int( + value: 42 + ) + ) + 1: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: set + ) + params: array( + ) + body: Expr_Variable( + name: value + ) + ) + ) + ) + 2: Stmt_Property( + attrGroups: array( + ) + flags: ABSTRACT (16) + type: null + props: array( + 0: PropertyItem( + name: VarLikeIdentifier( + name: prop3 + ) + default: null + ) + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: true + name: Identifier( + name: get + ) + params: array( + ) + body: null + ) + 1: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: set + ) + params: array( + ) + body: null + ) + ) + ) + 3: Stmt_Property( + attrGroups: array( + ) + flags: PUBLIC (1) + type: null + props: array( + 0: PropertyItem( + name: VarLikeIdentifier( + name: prop4 + ) + default: null + ) + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: FINAL (32) + byRef: false + name: Identifier( + name: get + ) + params: array( + ) + body: array( + 0: Stmt_Return( + expr: Scalar_Int( + value: 42 + ) + ) + ) + ) + 1: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: set + ) + params: array( + 0: Param( + attrGroups: array( + ) + flags: 0 + type: Identifier( + name: string + ) + byRef: false + variadic: false + var: Expr_Variable( + name: value + ) + default: null + hooks: array( + ) + ) + ) + body: array( + ) + ) + ) + ) + ) + ) +) +----- + 42; + } +} +----- +get hook must not have a parameter list from 4:12 to 4:12 +array( + 0: Stmt_Class( + attrGroups: array( + ) + flags: 0 + name: Identifier( + name: Test + ) + extends: null + implements: array( + ) + stmts: array( + 0: Stmt_Property( + attrGroups: array( + ) + flags: PUBLIC (1) + type: null + props: array( + 0: PropertyItem( + name: VarLikeIdentifier( + name: prop + ) + default: null + ) + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: get + ) + params: array( + ) + body: Scalar_Int( + value: 42 + ) + ) + ) + ) + ) + ) +) +----- + bar; } +} +----- +Unknown hook "FOO", expected "get" or "set" from 3:20 to 3:22 +array( + 0: Stmt_Class( + attrGroups: array( + ) + flags: 0 + name: Identifier( + name: Test + ) + extends: null + implements: array( + ) + stmts: array( + 0: Stmt_Property( + attrGroups: array( + ) + flags: PUBLIC (1) + type: null + props: array( + 0: PropertyItem( + name: VarLikeIdentifier( + name: prop + ) + default: null + ) + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: FOO + ) + params: array( + ) + body: Expr_ConstFetch( + name: Name( + name: bar + ) + ) + ) + ) + ) + ) + ) +) +----- + $value; }, + public $g = 1 { get => 2; }, ) {} } ----- @@ -47,6 +49,8 @@ array( default: Scalar_Float( value: 0 ) + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -64,6 +68,8 @@ array( items: array( ) ) + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -80,6 +86,8 @@ array( default: Scalar_String( value: hello ) + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -96,6 +104,66 @@ array( default: Scalar_Int( value: 0 ) + hooks: array( + ) + ) + 4: Param( + attrGroups: array( + ) + flags: PUBLIC (1) + type: null + byRef: false + variadic: false + var: Expr_Variable( + name: h + ) + default: null + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: set + ) + params: array( + ) + body: Expr_Variable( + name: value + ) + ) + ) + ) + 5: Param( + attrGroups: array( + ) + flags: PUBLIC (1) + type: null + byRef: false + variadic: false + var: Expr_Variable( + name: g + ) + default: Scalar_Int( + value: 1 + ) + hooks: array( + 0: PropertyHook( + attrGroups: array( + ) + flags: 0 + byRef: false + name: Identifier( + name: get + ) + params: array( + ) + body: Scalar_Int( + value: 2 + ) + ) + ) ) ) returnType: null diff --git a/test/code/parser/stmt/class/simple.test b/test/code/parser/stmt/class/simple.test index c601f0cfd0..18e5193747 100644 --- a/test/code/parser/stmt/class/simple.test +++ b/test/code/parser/stmt/class/simple.test @@ -83,6 +83,8 @@ array( ) ) ) + hooks: array( + ) ) 2: Stmt_Property( attrGroups: array( @@ -97,6 +99,8 @@ array( default: null ) ) + hooks: array( + ) ) 3: Stmt_Property( attrGroups: array( @@ -111,6 +115,8 @@ array( default: null ) ) + hooks: array( + ) ) 4: Stmt_ClassMethod( attrGroups: array( @@ -146,6 +152,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/function/builtinTypeDeclarations.test b/test/code/parser/stmt/function/builtinTypeDeclarations.test index 64cbedcffe..4267777bca 100644 --- a/test/code/parser/stmt/function/builtinTypeDeclarations.test +++ b/test/code/parser/stmt/function/builtinTypeDeclarations.test @@ -25,6 +25,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -39,6 +41,8 @@ array( name: b ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -53,6 +57,8 @@ array( name: c ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -67,6 +73,8 @@ array( name: d ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -81,6 +89,8 @@ array( name: e ) default: null + hooks: array( + ) ) 5: Param( attrGroups: array( @@ -95,6 +105,8 @@ array( name: f ) default: null + hooks: array( + ) ) 6: Param( attrGroups: array( @@ -109,6 +121,8 @@ array( name: g ) default: null + hooks: array( + ) ) ) returnType: Identifier( diff --git a/test/code/parser/stmt/function/byRef.test b/test/code/parser/stmt/function/byRef.test index ae01214c83..98fc5fb1f9 100644 --- a/test/code/parser/stmt/function/byRef.test +++ b/test/code/parser/stmt/function/byRef.test @@ -25,6 +25,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null @@ -50,6 +52,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/function/defaultValues.test b/test/code/parser/stmt/function/defaultValues.test index 952b64c46e..9a243f70df 100644 --- a/test/code/parser/stmt/function/defaultValues.test +++ b/test/code/parser/stmt/function/defaultValues.test @@ -38,6 +38,8 @@ array( name: null ) ) + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -52,6 +54,8 @@ array( default: Scalar_String( value: foo ) + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -71,6 +75,8 @@ array( name: B ) ) + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -87,6 +93,8 @@ array( value: 1 ) ) + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -103,6 +111,8 @@ array( value: 1 ) ) + hooks: array( + ) ) 5: Param( attrGroups: array( @@ -118,6 +128,8 @@ array( items: array( ) ) + hooks: array( + ) ) 6: Param( attrGroups: array( @@ -133,6 +145,8 @@ array( items: array( ) ) + hooks: array( + ) ) 7: Param( attrGroups: array( @@ -156,6 +170,8 @@ array( ) ) ) + hooks: array( + ) ) 8: Param( attrGroups: array( @@ -189,6 +205,8 @@ array( ) ) ) + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/function/disjointNormalFormTypes.test b/test/code/parser/stmt/function/disjointNormalFormTypes.test index 3ad9503e18..f515f96875 100644 --- a/test/code/parser/stmt/function/disjointNormalFormTypes.test +++ b/test/code/parser/stmt/function/disjointNormalFormTypes.test @@ -57,6 +57,8 @@ array( default: null ) ) + hooks: array( + ) ) 1: Stmt_Property( attrGroups: array( @@ -87,6 +89,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -132,6 +136,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) returnType: UnionType( diff --git a/test/code/parser/stmt/function/intersectionTypes.test b/test/code/parser/stmt/function/intersectionTypes.test index c7a01f3bc8..b640b9f797 100644 --- a/test/code/parser/stmt/function/intersectionTypes.test +++ b/test/code/parser/stmt/function/intersectionTypes.test @@ -42,6 +42,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -73,6 +75,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) returnType: IntersectionType( diff --git a/test/code/parser/stmt/function/nullableTypes.test b/test/code/parser/stmt/function/nullableTypes.test index a2c2e9aad9..0804ae5319 100644 --- a/test/code/parser/stmt/function/nullableTypes.test +++ b/test/code/parser/stmt/function/nullableTypes.test @@ -29,6 +29,8 @@ array( name: bar ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -45,6 +47,8 @@ array( name: foo ) default: null + hooks: array( + ) ) ) returnType: NullableType( diff --git a/test/code/parser/stmt/function/parameters_trailing_comma.test b/test/code/parser/stmt/function/parameters_trailing_comma.test index f80ba1f413..d2e4bec7e9 100644 --- a/test/code/parser/stmt/function/parameters_trailing_comma.test +++ b/test/code/parser/stmt/function/parameters_trailing_comma.test @@ -25,6 +25,8 @@ array( name: bar ) default: null + hooks: array( + ) ) ) returnType: null @@ -74,6 +76,8 @@ array( name: name ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -86,6 +90,8 @@ array( name: value ) default: null + hooks: array( + ) ) ) returnType: null @@ -118,6 +124,8 @@ array( name: foo ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/function/typeDeclarations.test b/test/code/parser/stmt/function/typeDeclarations.test index 07ce52e44f..97f09171ca 100644 --- a/test/code/parser/stmt/function/typeDeclarations.test +++ b/test/code/parser/stmt/function/typeDeclarations.test @@ -24,6 +24,8 @@ array( name: b ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -38,6 +40,8 @@ array( name: c ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -52,6 +56,8 @@ array( name: d ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -66,6 +72,8 @@ array( name: f ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/function/typeVersions.test b/test/code/parser/stmt/function/typeVersions.test index 8ce360313f..4bee4e36e3 100644 --- a/test/code/parser/stmt/function/typeVersions.test +++ b/test/code/parser/stmt/function/typeVersions.test @@ -34,6 +34,8 @@ array( name: a1 ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -48,6 +50,8 @@ array( name: a2 ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -62,6 +66,8 @@ array( name: a3 ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -76,6 +82,8 @@ array( name: a4 ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -90,6 +98,8 @@ array( name: a5 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.0 ) @@ -107,6 +117,8 @@ array( name: a6 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.1 ) @@ -124,6 +136,8 @@ array( name: a7 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.2 ) @@ -141,6 +155,8 @@ array( name: a8 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -158,6 +174,8 @@ array( name: a9 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -228,6 +246,8 @@ array( name: a1 ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -242,6 +262,8 @@ array( name: a2 ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -256,6 +278,8 @@ array( name: a3 ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -270,6 +294,8 @@ array( name: a4 ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -284,6 +310,8 @@ array( name: a5 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.0 ) @@ -301,6 +329,8 @@ array( name: a6 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.1 ) @@ -318,6 +348,8 @@ array( name: a7 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.2 ) @@ -335,6 +367,8 @@ array( name: a8 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -352,6 +386,8 @@ array( name: a9 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -422,6 +458,8 @@ array( name: a1 ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -436,6 +474,8 @@ array( name: a2 ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -450,6 +490,8 @@ array( name: a3 ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -464,6 +506,8 @@ array( name: a4 ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -478,6 +522,8 @@ array( name: a5 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.0 ) @@ -495,6 +541,8 @@ array( name: a6 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.1 ) @@ -512,6 +560,8 @@ array( name: a7 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.2 ) @@ -529,6 +579,8 @@ array( name: a8 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -546,6 +598,8 @@ array( name: a9 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -616,6 +670,8 @@ array( name: a1 ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -630,6 +686,8 @@ array( name: a2 ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -644,6 +702,8 @@ array( name: a3 ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -658,6 +718,8 @@ array( name: a4 ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -672,6 +734,8 @@ array( name: a5 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.0 ) @@ -689,6 +753,8 @@ array( name: a6 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.1 ) @@ -706,6 +772,8 @@ array( name: a7 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.2 ) @@ -723,6 +791,8 @@ array( name: a8 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -740,6 +810,8 @@ array( name: a9 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -810,6 +882,8 @@ array( name: a1 ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -824,6 +898,8 @@ array( name: a2 ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -838,6 +914,8 @@ array( name: a3 ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -852,6 +930,8 @@ array( name: a4 ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -866,6 +946,8 @@ array( name: a5 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.0 ) @@ -883,6 +965,8 @@ array( name: a6 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.1 ) @@ -900,6 +984,8 @@ array( name: a7 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.2 ) @@ -917,6 +1003,8 @@ array( name: a8 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -934,6 +1022,8 @@ array( name: a9 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -1004,6 +1094,8 @@ array( name: a1 ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -1018,6 +1110,8 @@ array( name: a2 ) default: null + hooks: array( + ) ) 2: Param( attrGroups: array( @@ -1032,6 +1126,8 @@ array( name: a3 ) default: null + hooks: array( + ) ) 3: Param( attrGroups: array( @@ -1046,6 +1142,8 @@ array( name: a4 ) default: null + hooks: array( + ) ) 4: Param( attrGroups: array( @@ -1060,6 +1158,8 @@ array( name: a5 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.0 ) @@ -1077,6 +1177,8 @@ array( name: a6 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.1 ) @@ -1094,6 +1196,8 @@ array( name: a7 ) default: null + hooks: array( + ) comments: array( 0: // PHP 7.2 ) @@ -1111,6 +1215,8 @@ array( name: a8 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) @@ -1128,6 +1234,8 @@ array( name: a9 ) default: null + hooks: array( + ) comments: array( 0: // PHP 8.0 ) diff --git a/test/code/parser/stmt/function/unionTypes.test b/test/code/parser/stmt/function/unionTypes.test index 5be08e24fe..461c1f769f 100644 --- a/test/code/parser/stmt/function/unionTypes.test +++ b/test/code/parser/stmt/function/unionTypes.test @@ -45,6 +45,8 @@ array( default: null ) ) + hooks: array( + ) ) ) ) @@ -76,6 +78,8 @@ array( name: a ) default: null + hooks: array( + ) ) ) returnType: UnionType( diff --git a/test/code/parser/stmt/function/variadic.test b/test/code/parser/stmt/function/variadic.test index 76cbb862be..7120bbb915 100644 --- a/test/code/parser/stmt/function/variadic.test +++ b/test/code/parser/stmt/function/variadic.test @@ -26,6 +26,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -38,6 +40,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null @@ -63,6 +67,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -75,6 +81,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null @@ -100,6 +108,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -114,6 +124,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null @@ -139,6 +151,8 @@ array( name: a ) default: null + hooks: array( + ) ) 1: Param( attrGroups: array( @@ -153,6 +167,8 @@ array( name: b ) default: null + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/function/variadicDefaultValue.test b/test/code/parser/stmt/function/variadicDefaultValue.test index 45b7df696e..07fbc317fe 100644 --- a/test/code/parser/stmt/function/variadicDefaultValue.test +++ b/test/code/parser/stmt/function/variadicDefaultValue.test @@ -27,6 +27,8 @@ array( items: array( ) ) + hooks: array( + ) ) ) returnType: null diff --git a/test/code/parser/stmt/newInInitializer.test b/test/code/parser/stmt/newInInitializer.test index 74b43fd1c6..f8f9127307 100644 --- a/test/code/parser/stmt/newInInitializer.test +++ b/test/code/parser/stmt/newInInitializer.test @@ -56,6 +56,8 @@ array( args: array( ) ) + hooks: array( + ) ) ) returnType: null @@ -151,6 +153,8 @@ array( ) ) ) + hooks: array( + ) ) ) ) diff --git a/test/code/prettyPrinter/stmt/property_hooks.test b/test/code/prettyPrinter/stmt/property_hooks.test new file mode 100644 index 0000000000..9f39c61ff0 --- /dev/null +++ b/test/code/prettyPrinter/stmt/property_hooks.test @@ -0,0 +1,59 @@ +Property hooks +----- +prop + 1; + } + set { + $this->prop = $value - 1; + } + } + public $prop = 1 { + #[Attr] + &get => $this->prop; + final set($value) => $value - 1; + } + abstract public $prop { + get; + set; + } + + // TODO: Force multiline for hooks? + public function __construct( + public $foo { + get => 42; + set => 123; + }, + public $bar + ) {} +} +----- +class Test +{ + public int $prop { + get { + return $this->prop + 1; + } + set { + $this->prop = $value - 1; + } + } + public $prop = 1 { + #[Attr] + &get => $this->prop; + final set($value) => $value - 1; + } + abstract public $prop { + get; + set; + } + // TODO: Force multiline for hooks? + public function __construct(public $foo { + get => 42; + set => 123; + }, public $bar) + { + } +}