Make use of default actions

For the default action $$ = $1, save the closure invocation.
This commit is contained in:
Nikita Popov 2023-07-09 18:50:02 +02:00
parent 748aab3365
commit b20267c5ad
5 changed files with 413 additions and 1062 deletions

View File

@ -101,9 +101,7 @@ class #(-p) extends \PhpParser\ParserAbstract
%b
},
#noact
%n => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
%n => null,
#endreduce
];
}

View File

@ -185,7 +185,7 @@ namespace_name:
;
legacy_namespace_name:
namespace_name { $$ = $1; }
namespace_name
| T_NAME_FULLY_QUALIFIED { $$ = Name[substr($1, 1)]; }
;
@ -229,13 +229,13 @@ attributes:
optional_attributes:
/* empty */ { $$ = []; }
| attributes { $$ = $1; }
| attributes
;
top_statement:
statement { $$ = $1; }
| function_declaration_statement { $$ = $1; }
| class_declaration_statement { $$ = $1; }
statement
| function_declaration_statement
| class_declaration_statement
| T_HALT_COMPILER '(' ')' ';'
{ $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
| T_NAMESPACE namespace_declaration_name semi
@ -252,7 +252,7 @@ top_statement:
$this->checkNamespace($$); }
| T_USE use_declarations semi { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
| T_USE use_type use_declarations semi { $$ = Stmt\Use_[$3, $2]; }
| group_use_declaration semi { $$ = $1; }
| group_use_declaration semi
| T_CONST constant_declaration_list semi { $$ = Stmt\Const_[$2]; }
;
@ -269,7 +269,7 @@ group_use_declaration:
;
unprefixed_use_declarations:
non_empty_unprefixed_use_declarations optional_comma { $$ = $1; }
non_empty_unprefixed_use_declarations optional_comma
;
non_empty_unprefixed_use_declarations:
@ -279,7 +279,7 @@ non_empty_unprefixed_use_declarations:
;
use_declarations:
non_empty_use_declarations no_comma { $$ = $1; }
non_empty_use_declarations no_comma
;
non_empty_use_declarations:
@ -288,7 +288,7 @@ non_empty_use_declarations:
;
inline_use_declarations:
non_empty_inline_use_declarations optional_comma { $$ = $1; }
non_empty_inline_use_declarations optional_comma
;
non_empty_inline_use_declarations:
@ -317,7 +317,7 @@ inline_use_declaration:
;
constant_declaration_list:
non_empty_constant_declaration_list no_comma { $$ = $1; }
non_empty_constant_declaration_list no_comma
;
non_empty_constant_declaration_list:
@ -331,7 +331,7 @@ constant_declaration:
;
class_const_list:
non_empty_class_const_list no_comma { $$ = $1; }
non_empty_class_const_list no_comma
;
non_empty_class_const_list:
@ -358,9 +358,9 @@ inner_statement_list:
;
inner_statement:
statement { $$ = $1; }
| function_declaration_statement { $$ = $1; }
| class_declaration_statement { $$ = $1; }
statement
| function_declaration_statement
| class_declaration_statement
| T_HALT_COMPILER
{ throw new Error('__HALT_COMPILER() can only be used from the outermost scope', attributes()); }
;
@ -417,7 +417,7 @@ non_empty_statement:
;
statement:
non_empty_statement { $$ = $1; }
non_empty_statement
| ';'
{ makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
if ($$ === null) $$ = array(); /* means: no statement */ }
@ -444,7 +444,7 @@ optional_finally:
;
variables_list:
non_empty_variables_list optional_comma { $$ = $1; }
non_empty_variables_list optional_comma
;
non_empty_variables_list:
@ -473,7 +473,7 @@ block_or_error:
;
identifier_maybe_readonly:
identifier_not_reserved { $$ = $1; }
identifier_not_reserved
| T_READONLY { $$ = Node\Identifier[$1]; }
;
@ -512,11 +512,11 @@ enum_case_expr:
class_entry_type:
T_CLASS { $$ = 0; }
| class_modifiers T_CLASS { $$ = $1; }
| class_modifiers T_CLASS
;
class_modifiers:
class_modifier { $$ = $1; }
class_modifier
| class_modifiers class_modifier { $this->checkClassModifier($1, $2, #2); $$ = $1 | $2; }
;
@ -542,7 +542,7 @@ implements_list:
;
class_name_list:
non_empty_class_name_list no_comma { $$ = $1; }
non_empty_class_name_list no_comma
;
non_empty_class_name_list:
@ -567,7 +567,7 @@ declare_statement:
;
declare_list:
non_empty_declare_list no_comma { $$ = $1; }
non_empty_declare_list no_comma
;
non_empty_declare_list:
@ -607,7 +607,7 @@ match:
match_arm_list:
/* empty */ { $$ = []; }
| non_empty_match_arm_list optional_comma { $$ = $1; }
| non_empty_match_arm_list optional_comma
;
non_empty_match_arm_list:
@ -664,7 +664,7 @@ foreach_variable:
;
parameter_list:
non_empty_parameter_list optional_comma { $$ = $1; }
non_empty_parameter_list optional_comma
| /* empty */ { $$ = array(); }
;
@ -701,14 +701,14 @@ parameter:
;
type_expr:
type { $$ = $1; }
type
| '?' type { $$ = Node\NullableType[$2]; }
| union_type { $$ = Node\UnionType[$1]; }
| intersection_type { $$ = $1; }
| intersection_type
;
type:
type_without_static { $$ = $1; }
type_without_static
| T_STATIC { $$ = Node\Name['static']; }
;
@ -719,8 +719,8 @@ type_without_static:
;
union_type_element:
type { $$ = $1; }
| '(' intersection_type ')' { $$ = $2; }
type
| '(' intersection_type ')' { $$ = $2; }
;
union_type:
@ -729,7 +729,7 @@ union_type:
;
union_type_without_static_element:
type_without_static { $$ = $1; }
type_without_static
| '(' intersection_type_without_static ')' { $$ = $2; }
;
@ -760,15 +760,15 @@ intersection_type_without_static:
;
type_expr_without_static:
type_without_static { $$ = $1; }
type_without_static
| '?' type_without_static { $$ = Node\NullableType[$2]; }
| union_type_without_static { $$ = Node\UnionType[$1]; }
| intersection_type_without_static { $$ = $1; }
| intersection_type_without_static
;
optional_type_without_static:
/* empty */ { $$ = null; }
| type_expr_without_static { $$ = $1; }
| type_expr_without_static
;
optional_return_type:
@ -801,7 +801,7 @@ argument:
;
global_var_list:
non_empty_global_var_list no_comma { $$ = $1; }
non_empty_global_var_list no_comma
;
non_empty_global_var_list:
@ -810,11 +810,11 @@ non_empty_global_var_list:
;
global_var:
simple_variable { $$ = $1; }
simple_variable
;
static_var_list:
non_empty_static_var_list no_comma { $$ = $1; }
non_empty_static_var_list no_comma
;
non_empty_static_var_list:
@ -885,27 +885,27 @@ trait_method_reference_fully_qualified:
name T_PAAMAYIM_NEKUDOTAYIM identifier_maybe_reserved { $$ = array($1, $3); }
;
trait_method_reference:
trait_method_reference_fully_qualified { $$ = $1; }
trait_method_reference_fully_qualified
| identifier_maybe_reserved { $$ = array(null, $1); }
;
method_body:
';' /* abstract method */ { $$ = null; }
| block_or_error { $$ = $1; }
| block_or_error
;
variable_modifiers:
non_empty_member_modifiers { $$ = $1; }
non_empty_member_modifiers
| T_VAR { $$ = 0; }
;
method_modifiers:
/* empty */ { $$ = 0; }
| non_empty_member_modifiers { $$ = $1; }
| non_empty_member_modifiers
;
non_empty_member_modifiers:
member_modifier { $$ = $1; }
member_modifier
| non_empty_member_modifiers member_modifier { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
;
@ -920,7 +920,7 @@ member_modifier:
;
property_declaration_list:
non_empty_property_declaration_list no_comma { $$ = $1; }
non_empty_property_declaration_list no_comma
;
non_empty_property_declaration_list:
@ -939,11 +939,11 @@ property_declaration:
;
expr_list_forbid_comma:
non_empty_expr_list no_comma { $$ = $1; }
non_empty_expr_list no_comma
;
expr_list_allow_comma:
non_empty_expr_list optional_comma { $$ = $1; }
non_empty_expr_list optional_comma
;
non_empty_expr_list:
@ -953,11 +953,11 @@ non_empty_expr_list:
for_expr:
/* empty */ { $$ = array(); }
| expr_list_forbid_comma { $$ = $1; }
| expr_list_forbid_comma
;
expr:
variable { $$ = $1; }
variable
| list_expr '=' expr { $$ = Expr\Assign[$1, $3]; }
| array_short_syntax '=' expr
{ $$ = Expr\Assign[$this->fixupArrayDestructuring($1), $3]; }
@ -969,8 +969,8 @@ expr:
$this->emitError(new Error('Cannot assign new by reference', attributes()));
}
}
| new_expr { $$ = $1; }
| match { $$ = $1; }
| new_expr
| match
| T_CLONE expr { $$ = Expr\Clone_[$2]; }
| variable T_PLUS_EQUAL expr { $$ = Expr\AssignOp\Plus [$1, $3]; }
| variable T_MINUS_EQUAL expr { $$ = Expr\AssignOp\Minus [$1, $3]; }
@ -1047,7 +1047,7 @@ expr:
$attrs['kind'] = strtolower($1) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
$$ = new Expr\Exit_($2, $attrs); }
| '@' expr { $$ = Expr\ErrorSuppress[$2]; }
| scalar { $$ = $1; }
| scalar
| '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
| T_PRINT expr { $$ = Expr\Print_[$2]; }
| T_YIELD { $$ = Expr\Yield_[null, null]; }
@ -1093,7 +1093,7 @@ lexical_vars:
;
lexical_var_list:
non_empty_lexical_var_list optional_comma { $$ = $1; }
non_empty_lexical_var_list optional_comma
;
non_empty_lexical_var_list:
@ -1119,7 +1119,7 @@ function_call:
class_name:
T_STATIC { $$ = Name[$1]; }
| name { $$ = $1; }
| name
;
name:
@ -1130,15 +1130,15 @@ name:
;
class_name_reference:
class_name { $$ = $1; }
| new_variable { $$ = $1; }
class_name
| new_variable
| '(' expr ')' { $$ = $2; }
| error { $$ = Expr\Error[]; $this->errorState = 2; }
;
class_name_or_var:
class_name { $$ = $1; }
| fully_dereferencable { $$ = $1; }
class_name
| fully_dereferencable
;
exit_expr:
@ -1155,7 +1155,7 @@ backticks_expr:
ctor_arguments:
/* empty */ { $$ = array(); }
| argument_list { $$ = $1; }
| argument_list
;
constant:
@ -1203,9 +1203,9 @@ scalar:
T_LNUMBER
{ $$ = $this->parseLNumber($1, attributes(), $this->phpVersion->allowsInvalidOctals()); }
| T_DNUMBER { $$ = Scalar\Float_::fromString($1, attributes()); }
| dereferencable_scalar { $$ = $1; }
| constant { $$ = $1; }
| class_constant { $$ = $1; }
| dereferencable_scalar
| constant
| class_constant
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
{ $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
| T_START_HEREDOC T_END_HEREDOC
@ -1216,32 +1216,32 @@ scalar:
optional_expr:
/* empty */ { $$ = null; }
| expr { $$ = $1; }
| expr
;
fully_dereferencable:
variable { $$ = $1; }
variable
| '(' expr ')' { $$ = $2; }
| dereferencable_scalar { $$ = $1; }
| class_constant { $$ = $1; }
| dereferencable_scalar
| class_constant
;
array_object_dereferencable:
fully_dereferencable { $$ = $1; }
| constant { $$ = $1; }
fully_dereferencable
| constant
;
callable_expr:
callable_variable { $$ = $1; }
callable_variable
| '(' expr ')' { $$ = $2; }
| dereferencable_scalar { $$ = $1; }
| dereferencable_scalar
;
callable_variable:
simple_variable { $$ = $1; }
simple_variable
| array_object_dereferencable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
| array_object_dereferencable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
| function_call { $$ = $1; }
| function_call
| array_object_dereferencable T_OBJECT_OPERATOR property_name argument_list
{ $$ = Expr\MethodCall[$1, $3, $4]; }
| array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name argument_list
@ -1250,12 +1250,12 @@ callable_variable:
optional_plain_variable:
/* empty */ { $$ = null; }
| plain_variable { $$ = $1; }
| plain_variable
;
variable:
callable_variable { $$ = $1; }
| static_member { $$ = $1; }
callable_variable
| static_member
| array_object_dereferencable T_OBJECT_OPERATOR property_name
{ $$ = Expr\PropertyFetch[$1, $3]; }
| array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name
@ -1263,7 +1263,7 @@ variable:
;
simple_variable:
plain_variable { $$ = $1; }
plain_variable
| '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
| '$' simple_variable { $$ = Expr\Variable[$2]; }
| '$' error { $$ = Expr\Variable[Expr\Error[]]; $this->errorState = 2; }
@ -1280,7 +1280,7 @@ static_member:
;
new_variable:
simple_variable { $$ = $1; }
simple_variable
| new_variable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
| new_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
| new_variable T_OBJECT_OPERATOR property_name { $$ = Expr\PropertyFetch[$1, $3]; }
@ -1292,15 +1292,15 @@ new_variable:
;
member_name:
identifier_maybe_reserved { $$ = $1; }
identifier_maybe_reserved
| '{' expr '}' { $$ = $2; }
| simple_variable { $$ = $1; }
| simple_variable
;
property_name:
identifier_not_reserved { $$ = $1; }
identifier_not_reserved
| '{' expr '}' { $$ = $2; }
| simple_variable { $$ = $1; }
| simple_variable
| error { $$ = Expr\Error[]; $this->errorState = 2; }
;
@ -1357,7 +1357,7 @@ encaps_str_varname:
;
encaps_var:
plain_variable { $$ = $1; }
plain_variable
| plain_variable '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
| plain_variable T_OBJECT_OPERATOR identifier_not_reserved
{ $$ = Expr\PropertyFetch[$1, $3]; }
@ -1374,7 +1374,7 @@ encaps_var_offset:
T_STRING { $$ = Scalar\String_[$1]; }
| T_NUM_STRING { $$ = $this->parseNumString($1, attributes()); }
| '-' T_NUM_STRING { $$ = $this->parseNumString('-' . $2, attributes()); }
| plain_variable { $$ = $1; }
| plain_variable
;
%%

View File

@ -1147,9 +1147,7 @@ class Php7 extends \PhpParser\ParserAbstract
protected function initReduceCallbacks(): void {
$this->reduceCallbacks = [
0 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
0 => null,
1 => function ($stackPos) {
$this->semValue = $this->handleNamespaces($this->semStack[$stackPos-(1-1)]);
},
@ -1163,246 +1161,88 @@ class Php7 extends \PhpParser\ParserAbstract
$startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
5 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
6 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
7 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
8 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
9 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
10 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
11 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
12 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
13 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
14 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
15 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
16 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
17 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
18 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
19 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
20 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
21 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
22 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
23 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
24 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
25 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
26 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
27 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
28 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
29 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
30 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
31 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
32 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
33 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
34 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
35 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
36 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
37 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
38 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
39 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
40 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
41 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
42 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
43 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
44 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
45 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
46 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
47 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
48 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
49 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
50 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
51 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
52 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
53 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
54 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
55 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
56 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
57 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
58 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
59 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
60 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
61 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
62 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
63 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
64 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
65 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
66 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
67 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
68 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
69 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
70 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
71 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
72 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
73 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
74 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
75 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
5 => null,
6 => null,
7 => null,
8 => null,
9 => null,
10 => null,
11 => null,
12 => null,
13 => null,
14 => null,
15 => null,
16 => null,
17 => null,
18 => null,
19 => null,
20 => null,
21 => null,
22 => null,
23 => null,
24 => null,
25 => null,
26 => null,
27 => null,
28 => null,
29 => null,
30 => null,
31 => null,
32 => null,
33 => null,
34 => null,
35 => null,
36 => null,
37 => null,
38 => null,
39 => null,
40 => null,
41 => null,
42 => null,
43 => null,
44 => null,
45 => null,
46 => null,
47 => null,
48 => null,
49 => null,
50 => null,
51 => null,
52 => null,
53 => null,
54 => null,
55 => null,
56 => null,
57 => null,
58 => null,
59 => null,
60 => null,
61 => null,
62 => null,
63 => null,
64 => null,
65 => null,
66 => null,
67 => null,
68 => null,
69 => null,
70 => null,
71 => null,
72 => null,
73 => null,
74 => null,
75 => null,
76 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)]; if ($this->semValue === "<?=") $this->emitError(new Error('Cannot use "<?=" as an identifier', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
},
77 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
78 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
79 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
80 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
81 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
82 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
83 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
84 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
77 => null,
78 => null,
79 => null,
80 => null,
81 => null,
82 => null,
83 => null,
84 => null,
85 => function ($stackPos) {
$this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1430,9 +1270,7 @@ class Php7 extends \PhpParser\ParserAbstract
93 => function ($stackPos) {
$this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
94 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
94 => null,
95 => function ($stackPos) {
$this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1451,12 +1289,8 @@ class Php7 extends \PhpParser\ParserAbstract
100 => function ($stackPos) {
$this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
},
101 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
102 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
101 => null,
102 => null,
103 => function ($stackPos) {
$this->semValue = new Node\Attribute($this->semStack[$stackPos-(1-1)], [], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1481,18 +1315,10 @@ class Php7 extends \PhpParser\ParserAbstract
110 => function ($stackPos) {
$this->semValue = [];
},
111 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
112 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
113 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
114 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
111 => null,
112 => null,
113 => null,
114 => null,
115 => function ($stackPos) {
$this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -1517,9 +1343,7 @@ class Php7 extends \PhpParser\ParserAbstract
120 => function ($stackPos) {
$this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
121 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
121 => null,
122 => function ($stackPos) {
$this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
@ -1535,27 +1359,21 @@ class Php7 extends \PhpParser\ParserAbstract
126 => function ($stackPos) {
$this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
},
127 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
127 => null,
128 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
129 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
130 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
130 => null,
131 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
132 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
133 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
133 => null,
134 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -1580,9 +1398,7 @@ class Php7 extends \PhpParser\ParserAbstract
141 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
},
142 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
142 => null,
143 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -1592,9 +1408,7 @@ class Php7 extends \PhpParser\ParserAbstract
145 => function ($stackPos) {
$this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
146 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
146 => null,
147 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -1617,15 +1431,9 @@ class Php7 extends \PhpParser\ParserAbstract
$startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
154 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
155 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
156 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
154 => null,
155 => null,
156 => null,
157 => function ($stackPos) {
throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1717,9 +1525,7 @@ class Php7 extends \PhpParser\ParserAbstract
181 => function ($stackPos) {
$this->semValue = array(); /* means: no statement */
},
182 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
182 => null,
183 => function ($stackPos) {
$startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
@ -1745,9 +1551,7 @@ class Php7 extends \PhpParser\ParserAbstract
190 => function ($stackPos) {
$this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
191 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
191 => null,
192 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -1778,9 +1582,7 @@ class Php7 extends \PhpParser\ParserAbstract
201 => function ($stackPos) {
$this->semValue = [];
},
202 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
202 => null,
203 => function ($stackPos) {
$this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1824,12 +1626,8 @@ class Php7 extends \PhpParser\ParserAbstract
215 => function ($stackPos) {
$this->semValue = 0;
},
216 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
217 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
216 => null,
217 => null,
218 => function ($stackPos) {
$this->checkClassModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
},
@ -1860,9 +1658,7 @@ class Php7 extends \PhpParser\ParserAbstract
227 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)];
},
228 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
228 => null,
229 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -1890,9 +1686,7 @@ class Php7 extends \PhpParser\ParserAbstract
237 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(4-2)];
},
238 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
238 => null,
239 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -1926,21 +1720,15 @@ class Php7 extends \PhpParser\ParserAbstract
249 => function ($stackPos) {
$this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
250 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
251 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
250 => null,
251 => null,
252 => function ($stackPos) {
$this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
},
253 => function ($stackPos) {
$this->semValue = [];
},
254 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
254 => null,
255 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -2001,9 +1789,7 @@ class Php7 extends \PhpParser\ParserAbstract
274 => function ($stackPos) {
$this->semValue = array($this->fixupArrayDestructuring($this->semStack[$stackPos-(1-1)]), false);
},
275 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
275 => null,
276 => function ($stackPos) {
$this->semValue = array();
},
@ -2042,21 +1828,15 @@ class Php7 extends \PhpParser\ParserAbstract
287 => function ($stackPos) {
$this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
},
288 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
288 => null,
289 => function ($stackPos) {
$this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
290 => function ($stackPos) {
$this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
291 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
292 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
291 => null,
292 => null,
293 => function ($stackPos) {
$this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -2069,9 +1849,7 @@ class Php7 extends \PhpParser\ParserAbstract
296 => function ($stackPos) {
$this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
297 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
297 => null,
298 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
@ -2081,9 +1859,7 @@ class Php7 extends \PhpParser\ParserAbstract
300 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
301 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
301 => null,
302 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
@ -2111,24 +1887,18 @@ class Php7 extends \PhpParser\ParserAbstract
310 => function ($stackPos) {
$this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
311 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
311 => null,
312 => function ($stackPos) {
$this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
313 => function ($stackPos) {
$this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
314 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
314 => null,
315 => function ($stackPos) {
$this->semValue = null;
},
316 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
316 => null,
317 => function ($stackPos) {
$this->semValue = null;
},
@ -2168,21 +1938,15 @@ class Php7 extends \PhpParser\ParserAbstract
329 => function ($stackPos) {
$this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
},
330 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
330 => null,
331 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
332 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
333 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
334 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
333 => null,
334 => null,
335 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -2260,33 +2024,23 @@ class Php7 extends \PhpParser\ParserAbstract
358 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
},
359 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
359 => null,
360 => function ($stackPos) {
$this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
},
361 => function ($stackPos) {
$this->semValue = null;
},
362 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
363 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
362 => null,
363 => null,
364 => function ($stackPos) {
$this->semValue = 0;
},
365 => function ($stackPos) {
$this->semValue = 0;
},
366 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
367 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
366 => null,
367 => null,
368 => function ($stackPos) {
$this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
},
@ -2311,9 +2065,7 @@ class Php7 extends \PhpParser\ParserAbstract
375 => function ($stackPos) {
$this->semValue = Modifiers::READONLY;
},
376 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
376 => null,
377 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -2329,12 +2081,8 @@ class Php7 extends \PhpParser\ParserAbstract
381 => function ($stackPos) {
$this->semValue = new Node\PropertyItem($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
382 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
383 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
382 => null,
383 => null,
384 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -2344,12 +2092,8 @@ class Php7 extends \PhpParser\ParserAbstract
386 => function ($stackPos) {
$this->semValue = array();
},
387 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
388 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
387 => null,
388 => null,
389 => function ($stackPos) {
$this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
@ -2369,12 +2113,8 @@ class Php7 extends \PhpParser\ParserAbstract
}
},
394 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
395 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
394 => null,
395 => null,
396 => function ($stackPos) {
$this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
@ -2589,9 +2329,7 @@ class Php7 extends \PhpParser\ParserAbstract
465 => function ($stackPos) {
$this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
466 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
466 => null,
467 => function ($stackPos) {
$this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
@ -2653,9 +2391,7 @@ class Php7 extends \PhpParser\ParserAbstract
486 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(4-3)];
},
487 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
487 => null,
488 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -2683,9 +2419,7 @@ class Php7 extends \PhpParser\ParserAbstract
496 => function ($stackPos) {
$this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
497 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
497 => null,
498 => function ($stackPos) {
$this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -2698,24 +2432,16 @@ class Php7 extends \PhpParser\ParserAbstract
501 => function ($stackPos) {
$this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
502 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
503 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
502 => null,
503 => null,
504 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
505 => function ($stackPos) {
$this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
},
506 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
507 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
506 => null,
507 => null,
508 => function ($stackPos) {
$this->semValue = null;
},
@ -2734,9 +2460,7 @@ class Php7 extends \PhpParser\ParserAbstract
513 => function ($stackPos) {
$this->semValue = array();
},
514 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
514 => null,
515 => function ($stackPos) {
$this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -2798,15 +2522,9 @@ class Php7 extends \PhpParser\ParserAbstract
533 => function ($stackPos) {
$this->semValue = Scalar\Float_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
534 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
535 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
536 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
534 => null,
535 => null,
536 => null,
537 => function ($stackPos) {
$this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
},
@ -2819,48 +2537,28 @@ class Php7 extends \PhpParser\ParserAbstract
540 => function ($stackPos) {
$this->semValue = null;
},
541 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
542 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
541 => null,
542 => null,
543 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
544 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
545 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
546 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
547 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
548 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
544 => null,
545 => null,
546 => null,
547 => null,
548 => null,
549 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
550 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
551 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
550 => null,
551 => null,
552 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
553 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
554 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
554 => null,
555 => function ($stackPos) {
$this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -2870,24 +2568,16 @@ class Php7 extends \PhpParser\ParserAbstract
557 => function ($stackPos) {
$this->semValue = null;
},
558 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
559 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
560 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
558 => null,
559 => null,
560 => null,
561 => function ($stackPos) {
$this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
562 => function ($stackPos) {
$this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
563 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
563 => null,
564 => function ($stackPos) {
$this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -2903,9 +2593,7 @@ class Php7 extends \PhpParser\ParserAbstract
568 => function ($stackPos) {
$this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
569 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
569 => null,
570 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -2924,24 +2612,16 @@ class Php7 extends \PhpParser\ParserAbstract
575 => function ($stackPos) {
$this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
576 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
576 => null,
577 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
578 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
579 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
578 => null,
579 => null,
580 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
581 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
581 => null,
582 => function ($stackPos) {
$this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
},
@ -2952,9 +2632,7 @@ class Php7 extends \PhpParser\ParserAbstract
584 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end]->value instanceof Expr\Error) array_pop($this->semValue);
},
585 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
585 => null,
586 => function ($stackPos) {
/* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
},
@ -3009,9 +2687,7 @@ class Php7 extends \PhpParser\ParserAbstract
602 => function ($stackPos) {
$this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
603 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
603 => null,
604 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -3042,9 +2718,7 @@ class Php7 extends \PhpParser\ParserAbstract
613 => function ($stackPos) {
$this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
614 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
614 => null,
];
}
}

View File

@ -1155,9 +1155,7 @@ class Php8 extends \PhpParser\ParserAbstract
protected function initReduceCallbacks(): void {
$this->reduceCallbacks = [
0 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
0 => null,
1 => function ($stackPos) {
$this->semValue = $this->handleNamespaces($this->semStack[$stackPos-(1-1)]);
},
@ -1171,246 +1169,88 @@ class Php8 extends \PhpParser\ParserAbstract
$startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
5 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
6 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
7 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
8 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
9 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
10 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
11 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
12 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
13 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
14 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
15 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
16 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
17 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
18 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
19 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
20 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
21 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
22 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
23 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
24 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
25 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
26 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
27 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
28 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
29 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
30 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
31 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
32 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
33 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
34 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
35 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
36 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
37 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
38 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
39 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
40 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
41 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
42 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
43 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
44 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
45 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
46 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
47 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
48 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
49 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
50 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
51 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
52 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
53 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
54 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
55 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
56 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
57 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
58 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
59 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
60 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
61 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
62 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
63 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
64 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
65 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
66 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
67 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
68 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
69 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
70 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
71 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
72 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
73 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
74 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
75 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
5 => null,
6 => null,
7 => null,
8 => null,
9 => null,
10 => null,
11 => null,
12 => null,
13 => null,
14 => null,
15 => null,
16 => null,
17 => null,
18 => null,
19 => null,
20 => null,
21 => null,
22 => null,
23 => null,
24 => null,
25 => null,
26 => null,
27 => null,
28 => null,
29 => null,
30 => null,
31 => null,
32 => null,
33 => null,
34 => null,
35 => null,
36 => null,
37 => null,
38 => null,
39 => null,
40 => null,
41 => null,
42 => null,
43 => null,
44 => null,
45 => null,
46 => null,
47 => null,
48 => null,
49 => null,
50 => null,
51 => null,
52 => null,
53 => null,
54 => null,
55 => null,
56 => null,
57 => null,
58 => null,
59 => null,
60 => null,
61 => null,
62 => null,
63 => null,
64 => null,
65 => null,
66 => null,
67 => null,
68 => null,
69 => null,
70 => null,
71 => null,
72 => null,
73 => null,
74 => null,
75 => null,
76 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)]; if ($this->semValue === "<?=") $this->emitError(new Error('Cannot use "<?=" as an identifier', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
},
77 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
78 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
79 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
80 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
81 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
82 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
83 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
84 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
77 => null,
78 => null,
79 => null,
80 => null,
81 => null,
82 => null,
83 => null,
84 => null,
85 => function ($stackPos) {
$this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1438,9 +1278,7 @@ class Php8 extends \PhpParser\ParserAbstract
93 => function ($stackPos) {
$this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
94 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
94 => null,
95 => function ($stackPos) {
$this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1459,12 +1297,8 @@ class Php8 extends \PhpParser\ParserAbstract
100 => function ($stackPos) {
$this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
},
101 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
102 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
101 => null,
102 => null,
103 => function ($stackPos) {
$this->semValue = new Node\Attribute($this->semStack[$stackPos-(1-1)], [], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1489,18 +1323,10 @@ class Php8 extends \PhpParser\ParserAbstract
110 => function ($stackPos) {
$this->semValue = [];
},
111 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
112 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
113 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
114 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
111 => null,
112 => null,
113 => null,
114 => null,
115 => function ($stackPos) {
$this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -1525,9 +1351,7 @@ class Php8 extends \PhpParser\ParserAbstract
120 => function ($stackPos) {
$this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
121 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
121 => null,
122 => function ($stackPos) {
$this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
@ -1543,27 +1367,21 @@ class Php8 extends \PhpParser\ParserAbstract
126 => function ($stackPos) {
$this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
},
127 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
127 => null,
128 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
129 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
130 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
130 => null,
131 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
132 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
133 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
133 => null,
134 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -1588,9 +1406,7 @@ class Php8 extends \PhpParser\ParserAbstract
141 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
},
142 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
142 => null,
143 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -1600,9 +1416,7 @@ class Php8 extends \PhpParser\ParserAbstract
145 => function ($stackPos) {
$this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
146 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
146 => null,
147 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -1625,15 +1439,9 @@ class Php8 extends \PhpParser\ParserAbstract
$startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
},
154 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
155 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
156 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
154 => null,
155 => null,
156 => null,
157 => function ($stackPos) {
throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1725,9 +1533,7 @@ class Php8 extends \PhpParser\ParserAbstract
181 => function ($stackPos) {
$this->semValue = array(); /* means: no statement */
},
182 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
182 => null,
183 => function ($stackPos) {
$startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
@ -1753,9 +1559,7 @@ class Php8 extends \PhpParser\ParserAbstract
190 => function ($stackPos) {
$this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
191 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
191 => null,
192 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -1786,9 +1590,7 @@ class Php8 extends \PhpParser\ParserAbstract
201 => function ($stackPos) {
$this->semValue = [];
},
202 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
202 => null,
203 => function ($stackPos) {
$this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -1832,12 +1634,8 @@ class Php8 extends \PhpParser\ParserAbstract
215 => function ($stackPos) {
$this->semValue = 0;
},
216 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
217 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
216 => null,
217 => null,
218 => function ($stackPos) {
$this->checkClassModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
},
@ -1868,9 +1666,7 @@ class Php8 extends \PhpParser\ParserAbstract
227 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-2)];
},
228 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
228 => null,
229 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -1898,9 +1694,7 @@ class Php8 extends \PhpParser\ParserAbstract
237 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(4-2)];
},
238 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
238 => null,
239 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -1934,21 +1728,15 @@ class Php8 extends \PhpParser\ParserAbstract
249 => function ($stackPos) {
$this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
250 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
251 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
250 => null,
251 => null,
252 => function ($stackPos) {
$this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
},
253 => function ($stackPos) {
$this->semValue = [];
},
254 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
254 => null,
255 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -2009,9 +1797,7 @@ class Php8 extends \PhpParser\ParserAbstract
274 => function ($stackPos) {
$this->semValue = array($this->fixupArrayDestructuring($this->semStack[$stackPos-(1-1)]), false);
},
275 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
275 => null,
276 => function ($stackPos) {
$this->semValue = array();
},
@ -2050,21 +1836,15 @@ class Php8 extends \PhpParser\ParserAbstract
287 => function ($stackPos) {
$this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
},
288 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
288 => null,
289 => function ($stackPos) {
$this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
290 => function ($stackPos) {
$this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
291 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
292 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
291 => null,
292 => null,
293 => function ($stackPos) {
$this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -2077,9 +1857,7 @@ class Php8 extends \PhpParser\ParserAbstract
296 => function ($stackPos) {
$this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
297 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
297 => null,
298 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
@ -2089,9 +1867,7 @@ class Php8 extends \PhpParser\ParserAbstract
300 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
301 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
301 => null,
302 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
@ -2119,24 +1895,18 @@ class Php8 extends \PhpParser\ParserAbstract
310 => function ($stackPos) {
$this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
311 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
311 => null,
312 => function ($stackPos) {
$this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
313 => function ($stackPos) {
$this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
314 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
314 => null,
315 => function ($stackPos) {
$this->semValue = null;
},
316 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
316 => null,
317 => function ($stackPos) {
$this->semValue = null;
},
@ -2176,21 +1946,15 @@ class Php8 extends \PhpParser\ParserAbstract
329 => function ($stackPos) {
$this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
},
330 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
330 => null,
331 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
332 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
333 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
334 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
333 => null,
334 => null,
335 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -2268,33 +2032,23 @@ class Php8 extends \PhpParser\ParserAbstract
358 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
},
359 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
359 => null,
360 => function ($stackPos) {
$this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
},
361 => function ($stackPos) {
$this->semValue = null;
},
362 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
363 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
362 => null,
363 => null,
364 => function ($stackPos) {
$this->semValue = 0;
},
365 => function ($stackPos) {
$this->semValue = 0;
},
366 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
367 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
366 => null,
367 => null,
368 => function ($stackPos) {
$this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
},
@ -2319,9 +2073,7 @@ class Php8 extends \PhpParser\ParserAbstract
375 => function ($stackPos) {
$this->semValue = Modifiers::READONLY;
},
376 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
376 => null,
377 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -2337,12 +2089,8 @@ class Php8 extends \PhpParser\ParserAbstract
381 => function ($stackPos) {
$this->semValue = new Node\PropertyItem($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
382 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
383 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
382 => null,
383 => null,
384 => function ($stackPos) {
$this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
},
@ -2352,12 +2100,8 @@ class Php8 extends \PhpParser\ParserAbstract
386 => function ($stackPos) {
$this->semValue = array();
},
387 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
388 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
387 => null,
388 => null,
389 => function ($stackPos) {
$this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
@ -2377,12 +2121,8 @@ class Php8 extends \PhpParser\ParserAbstract
}
},
394 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
395 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
394 => null,
395 => null,
396 => function ($stackPos) {
$this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
@ -2597,9 +2337,7 @@ class Php8 extends \PhpParser\ParserAbstract
465 => function ($stackPos) {
$this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
466 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
466 => null,
467 => function ($stackPos) {
$this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
@ -2661,9 +2399,7 @@ class Php8 extends \PhpParser\ParserAbstract
486 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(4-3)];
},
487 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(2-1)];
},
487 => null,
488 => function ($stackPos) {
$this->semValue = array($this->semStack[$stackPos-(1-1)]);
},
@ -2691,9 +2427,7 @@ class Php8 extends \PhpParser\ParserAbstract
496 => function ($stackPos) {
$this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
497 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
497 => null,
498 => function ($stackPos) {
$this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -2706,24 +2440,16 @@ class Php8 extends \PhpParser\ParserAbstract
501 => function ($stackPos) {
$this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
502 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
503 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
502 => null,
503 => null,
504 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
505 => function ($stackPos) {
$this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
},
506 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
507 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
506 => null,
507 => null,
508 => function ($stackPos) {
$this->semValue = null;
},
@ -2742,9 +2468,7 @@ class Php8 extends \PhpParser\ParserAbstract
513 => function ($stackPos) {
$this->semValue = array();
},
514 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
514 => null,
515 => function ($stackPos) {
$this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
@ -2806,15 +2530,9 @@ class Php8 extends \PhpParser\ParserAbstract
533 => function ($stackPos) {
$this->semValue = Scalar\Float_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
534 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
535 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
536 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
534 => null,
535 => null,
536 => null,
537 => function ($stackPos) {
$this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
},
@ -2827,48 +2545,28 @@ class Php8 extends \PhpParser\ParserAbstract
540 => function ($stackPos) {
$this->semValue = null;
},
541 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
542 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
541 => null,
542 => null,
543 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
544 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
545 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
546 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
547 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
548 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
544 => null,
545 => null,
546 => null,
547 => null,
548 => null,
549 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
550 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
551 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
550 => null,
551 => null,
552 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
553 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
554 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
554 => null,
555 => function ($stackPos) {
$this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -2878,24 +2576,16 @@ class Php8 extends \PhpParser\ParserAbstract
557 => function ($stackPos) {
$this->semValue = null;
},
558 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
559 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
560 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
558 => null,
559 => null,
560 => null,
561 => function ($stackPos) {
$this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
562 => function ($stackPos) {
$this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
563 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
563 => null,
564 => function ($stackPos) {
$this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -2911,9 +2601,7 @@ class Php8 extends \PhpParser\ParserAbstract
568 => function ($stackPos) {
$this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
569 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
569 => null,
570 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -2932,24 +2620,16 @@ class Php8 extends \PhpParser\ParserAbstract
575 => function ($stackPos) {
$this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
},
576 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
576 => null,
577 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
578 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
579 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
578 => null,
579 => null,
580 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(3-2)];
},
581 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
581 => null,
582 => function ($stackPos) {
$this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
},
@ -2960,9 +2640,7 @@ class Php8 extends \PhpParser\ParserAbstract
584 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end]->value instanceof Expr\Error) array_pop($this->semValue);
},
585 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos];
},
585 => null,
586 => function ($stackPos) {
/* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
},
@ -3017,9 +2695,7 @@ class Php8 extends \PhpParser\ParserAbstract
602 => function ($stackPos) {
$this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
},
603 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
603 => null,
604 => function ($stackPos) {
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
},
@ -3050,9 +2726,7 @@ class Php8 extends \PhpParser\ParserAbstract
613 => function ($stackPos) {
$this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
},
614 => function ($stackPos) {
$this->semValue = $this->semStack[$stackPos-(1-1)];
},
614 => null,
];
}
}

View File

@ -312,8 +312,14 @@ abstract class ParserAbstract implements Parser {
/* reduce */
//$this->traceReduce($rule);
$ruleLength = $this->ruleToLength[$rule];
try {
$this->reduceCallbacks[$rule]($stackPos);
$callback = $this->reduceCallbacks[$rule];
if ($callback !== null) {
$callback($stackPos);
} elseif ($ruleLength > 0) {
$this->semValue = $this->semStack[$stackPos - $ruleLength + 1];
}
} catch (Error $e) {
if (-1 === $e->getStartLine() && isset($startAttributes['startLine'])) {
$e->setStartLine($startAttributes['startLine']);
@ -326,7 +332,6 @@ abstract class ParserAbstract implements Parser {
/* Goto - shift nonterminal */
$lastEndAttributes = $this->endAttributeStack[$stackPos];
$ruleLength = $this->ruleToLength[$rule];
$stackPos -= $ruleLength;
$nonTerminal = $this->ruleToNonTerminal[$rule];
$idx = $this->gotoBase[$nonTerminal] + $stateStack[$stackPos];