]> granicus.if.org Git - php/commitdiff
Integrate combined scalar as dereferencable
authorNikita Popov <nikic@php.net>
Fri, 30 May 2014 22:18:50 +0000 (00:18 +0200)
committerNikita Popov <nikic@php.net>
Fri, 30 May 2014 22:18:50 +0000 (00:18 +0200)
Zend/zend_language_parser.y

index ec8d29f1942b4d1ba4d900a3f247021263b70d2c..1b2026359c4fa567ec5bbd1a3eb420035ff6dbc5 100644 (file)
@@ -821,7 +821,6 @@ expr_without_variable:
        |       T_EXIT exit_expr        { zend_do_exit(&$$, &$2 TSRMLS_CC); }
        |       '@' { zend_do_begin_silence(&$1 TSRMLS_CC); } expr { zend_do_end_silence(&$1 TSRMLS_CC); $$ = $3; }
        |       scalar                          { $$ = $1; }
-       |       combined_scalar_offset { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); }
        |       combined_scalar { $$ = $1; }
        |       '`' backticks_expr '`' { zend_do_shell_exec(&$$, &$2 TSRMLS_CC); }
        |       T_PRINT expr  { zend_do_print(&$$, &$2 TSRMLS_CC); }
@@ -841,14 +840,10 @@ yield_expr:
        |       T_YIELD expr T_DOUBLE_ARROW variable { zend_do_yield(&$$, &$4, &$2, 1 TSRMLS_CC); }
 ;
 
-combined_scalar_offset:
-         combined_scalar '[' dim_offset ']' { zend_do_begin_variable_parse(TSRMLS_C); fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
-       | combined_scalar_offset '[' dim_offset ']' { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
-    | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' { $1.EA = 0; zend_do_begin_variable_parse(TSRMLS_C); fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
-
 combined_scalar:
-      T_ARRAY '(' array_pair_list ')' { $$ = $3; }
-    | '[' array_pair_list ']' { $$ = $2; }
+               T_ARRAY '(' array_pair_list ')' { $$ = $3; }
+       |       '[' array_pair_list ']'                 { $$ = $2; }
+;
 
 function:
        T_FUNCTION { $$.u.op.opline_num = CG(zend_lineno); }
@@ -1065,6 +1060,8 @@ variable_class_name:
 dereferencable:
                variable                { $$ = $1; }
        |       '(' expr ')'    { $$ = $2; zend_do_begin_variable_parse(TSRMLS_C); }
+       |       combined_scalar { $$ = $1; zend_do_begin_variable_parse(TSRMLS_C); }
+       |       T_CONSTANT_ENCAPSED_STRING      { $$ = $1; zend_do_begin_variable_parse(TSRMLS_C); }
 ;
 
 directly_callable_variable: