Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Split into fully_dereferencable and array_dereferencable
  • Loading branch information
nikic committed Feb 11, 2020
commit 465e6f53ed799b127927f26218a532a885732a8d
25 changes: 14 additions & 11 deletions Zend/zend_language_parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
%type <ast> new_expr anonymous_class class_name class_name_reference simple_variable
%type <ast> internal_functions_in_yacc
%type <ast> exit_expr scalar backticks_expr lexical_var function_call member_name property_name
%type <ast> variable_class_name dereferencable_scalar constant class_constant dereferencable
%type <ast> variable_class_name dereferencable_scalar constant class_constant
%type <ast> fully_dereferencable array_dereferencable
%type <ast> callable_expr callable_variable static_member new_variable
%type <ast> encaps_var encaps_var_offset isset_variables
%type <ast> top_statement_list use_declarations const_list inner_statement_list if_stmt
Expand Down Expand Up @@ -1142,15 +1143,21 @@ optional_expr:
;

variable_class_name:
dereferencable { $$ = $1; }
fully_dereferencable { $$ = $1; }
;

dereferencable:
fully_dereferencable:
variable { $$ = $1; }
| '(' expr ')' { $$ = $2; }
| dereferencable_scalar { $$ = $1; }
;

array_dereferencable:
fully_dereferencable { $$ = $1; }
| constant { $$ = $1; }
| class_constant { $$ = $1; }
;

callable_expr:
callable_variable { $$ = $1; }
| '(' expr ')' { $$ = $2; }
Expand All @@ -1160,15 +1167,11 @@ callable_expr:
callable_variable:
simple_variable
{ $$ = zend_ast_create(ZEND_AST_VAR, $1); }
| dereferencable '[' optional_expr ']'
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
| constant '[' optional_expr ']'
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
| class_constant '[' optional_expr ']'
| array_dereferencable '[' optional_expr ']'
{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
| dereferencable '{' expr '}'
| array_dereferencable '{' expr '}'
{ $$ = zend_ast_create_ex(ZEND_AST_DIM, ZEND_DIM_ALTERNATIVE_SYNTAX, $1, $3); }
| dereferencable T_OBJECT_OPERATOR property_name argument_list
| fully_dereferencable T_OBJECT_OPERATOR property_name argument_list
{ $$ = zend_ast_create(ZEND_AST_METHOD_CALL, $1, $3, $4); }
| function_call { $$ = $1; }
;
Expand All @@ -1178,7 +1181,7 @@ variable:
{ $$ = $1; }
| static_member
{ $$ = $1; }
| dereferencable T_OBJECT_OPERATOR property_name
| fully_dereferencable T_OBJECT_OPERATOR property_name
{ $$ = zend_ast_create(ZEND_AST_PROP, $1, $3); }
;

Expand Down