@@ -46,7 +46,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
46
46
%define api.pure full
47
47
%define api.value.type {zend_parser_stack_elem}
48
48
%define parse.error verbose
49
- %expect 0
49
+ %expect 1
50
50
51
51
%destructor { zend_ast_destroy ($$); } <ast>
52
52
%destructor { if ($$) zend_string_release_ex ($$, 0 ); } <str>
@@ -1214,8 +1214,16 @@ expr:
1214
1214
{ $$ = zend_ast_create(ZEND_AST_ASSIGN, $1 , $3 ); }
1215
1215
| variable ' =' ampersand variable
1216
1216
{ $$ = zend_ast_create(ZEND_AST_ASSIGN_REF, $1 , $4 ); }
1217
- | T_CLONE ' (' expr ' ,' non_empty_argument_list ' )' { $$ = zend_ast_create(ZEND_AST_CLONE, $3 , $5 ); }
1218
- | T_CLONE expr { $$ = zend_ast_create(ZEND_AST_CLONE, $2 , NULL ); }
1217
+ | T_CLONE argument_list {
1218
+ zend_ast *name = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_CLONE));
1219
+ name->attr = ZEND_NAME_FQ;
1220
+ $$ = zend_ast_create(ZEND_AST_CALL, name, $2 );
1221
+ }
1222
+ | T_CLONE expr {
1223
+ zend_ast *name = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_CLONE));
1224
+ name->attr = ZEND_NAME_FQ;
1225
+ $$ = zend_ast_create(ZEND_AST_CALL, name, zend_ast_create_list(1 , ZEND_AST_ARG_LIST, $2 ));
1226
+ }
1219
1227
| variable T_PLUS_EQUAL expr
1220
1228
{ $$ = zend_ast_create_assign_op(ZEND_ADD, $1 , $3 ); }
1221
1229
| variable T_MINUS_EQUAL expr
0 commit comments