Skip to content

Commit 465e6f5

Browse files
committed
Split into fully_dereferencable and array_dereferencable
1 parent cf5689e commit 465e6f5

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

Zend/zend_language_parser.y

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
241241
%type <ast> new_expr anonymous_class class_name class_name_reference simple_variable
242242
%type <ast> internal_functions_in_yacc
243243
%type <ast> exit_expr scalar backticks_expr lexical_var function_call member_name property_name
244-
%type <ast> variable_class_name dereferencable_scalar constant class_constant dereferencable
244+
%type <ast> variable_class_name dereferencable_scalar constant class_constant
245+
%type <ast> fully_dereferencable array_dereferencable
245246
%type <ast> callable_expr callable_variable static_member new_variable
246247
%type <ast> encaps_var encaps_var_offset isset_variables
247248
%type <ast> top_statement_list use_declarations const_list inner_statement_list if_stmt
@@ -1142,15 +1143,21 @@ optional_expr:
11421143
;
11431144

11441145
variable_class_name:
1145-
dereferencable { $$ = $1; }
1146+
fully_dereferencable { $$ = $1; }
11461147
;
11471148

1148-
dereferencable:
1149+
fully_dereferencable:
11491150
variable { $$ = $1; }
11501151
| '(' expr ')' { $$ = $2; }
11511152
| dereferencable_scalar { $$ = $1; }
11521153
;
11531154

1155+
array_dereferencable:
1156+
fully_dereferencable { $$ = $1; }
1157+
| constant { $$ = $1; }
1158+
| class_constant { $$ = $1; }
1159+
;
1160+
11541161
callable_expr:
11551162
callable_variable { $$ = $1; }
11561163
| '(' expr ')' { $$ = $2; }
@@ -1160,15 +1167,11 @@ callable_expr:
11601167
callable_variable:
11611168
simple_variable
11621169
{ $$ = zend_ast_create(ZEND_AST_VAR, $1); }
1163-
| dereferencable '[' optional_expr ']'
1164-
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
1165-
| constant '[' optional_expr ']'
1166-
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
1167-
| class_constant '[' optional_expr ']'
1170+
| array_dereferencable '[' optional_expr ']'
11681171
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
1169-
| dereferencable '{' expr '}'
1172+
| array_dereferencable '{' expr '}'
11701173
{ $$ = zend_ast_create_ex(ZEND_AST_DIM, ZEND_DIM_ALTERNATIVE_SYNTAX, $1, $3); }
1171-
| dereferencable T_OBJECT_OPERATOR property_name argument_list
1174+
| fully_dereferencable T_OBJECT_OPERATOR property_name argument_list
11721175
{ $$ = zend_ast_create(ZEND_AST_METHOD_CALL, $1, $3, $4); }
11731176
| function_call { $$ = $1; }
11741177
;
@@ -1178,7 +1181,7 @@ variable:
11781181
{ $$ = $1; }
11791182
| static_member
11801183
{ $$ = $1; }
1181-
| dereferencable T_OBJECT_OPERATOR property_name
1184+
| fully_dereferencable T_OBJECT_OPERATOR property_name
11821185
{ $$ = zend_ast_create(ZEND_AST_PROP, $1, $3); }
11831186
;
11841187

0 commit comments

Comments
 (0)