|
|
|
@ -865,13 +865,16 @@ yield_expr: |
|
|
|
; |
|
|
|
|
|
|
|
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 '[' 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); } |
|
|
|
| general_constant '[' dim_offset ']' { 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); } |
|
|
|
@ -1038,20 +1041,22 @@ static_operation: |
|
|
|
| '(' static_scalar_value ')' { $$ = $2; } |
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
|
scalar: |
|
|
|
T_STRING_VARNAME { $$ = $1; } |
|
|
|
| class_name_scalar { $$ = $1; } |
|
|
|
| class_constant { $$ = $1; } |
|
|
|
general_constant: |
|
|
|
class_constant { $$ = $1; } |
|
|
|
| namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); } |
|
|
|
| T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 0 TSRMLS_CC); } |
|
|
|
| T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); } |
|
|
|
| common_scalar { $$ = $1; } |
|
|
|
| '"' encaps_list '"' { $$ = $2; } |
|
|
|
| T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; } |
|
|
|
| T_CLASS_C { if (Z_TYPE($1.u.constant) == IS_CONSTANT) {zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC);} else {$$ = $1;} } |
|
|
|
; |
|
|
|
|
|
|
|
scalar: |
|
|
|
T_STRING_VARNAME { $$ = $1; } |
|
|
|
| general_constant { $$ = $1; } |
|
|
|
| class_name_scalar { $$ = $1; } |
|
|
|
| common_scalar { $$ = $1; } |
|
|
|
| '"' encaps_list '"' { $$ = $2; } |
|
|
|
| T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; } |
|
|
|
| T_CLASS_C { if (Z_TYPE($1.u.constant) == IS_CONSTANT) {zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC);} else {$$ = $1;} } |
|
|
|
; |
|
|
|
|
|
|
|
static_array_pair_list: |
|
|
|
/* empty */ { $$.op_type = IS_CONST; INIT_PZVAL(&$$.u.constant); array_init(&$$.u.constant); $$.u.ast = zend_ast_create_constant(&$$.u.constant); } |
|
|
|
|