@@ -180,7 +180,8 @@ statement:
180
180
| T_CONTINUE ' ;' { do_brk_cont(ZEND_CONT, NULL CLS_CC); }
181
181
| T_CONTINUE expr ' ;' { do_brk_cont(ZEND_CONT, &$2 CLS_CC); }
182
182
| T_RETURN ' ;' { do_return(NULL CLS_CC); }
183
- | T_RETURN expr ' ;' { do_return(&$2 CLS_CC); }
183
+ | T_RETURN expr_without_variable ' ;' { do_return(&$2 CLS_CC); }
184
+ | T_RETURN cvar ' ;' { do_return(&$2 CLS_CC); }
184
185
| T_GLOBAL global_var_list
185
186
| T_STATIC static_var_list
186
187
| T_ECHO echo_expr_list ' ;'
@@ -387,6 +388,7 @@ expr_without_variable:
387
388
T_LIST ' (' { do_list_init(CLS_C); } assignment_list ' )' ' =' expr { do_list_end(&$$ , &$7 CLS_CC); }
388
389
| cvar ' =' expr { do_end_variable_parse(BP_VAR_W, 0 CLS_CC); do_assign(&$$ , &$1 , &$3 CLS_CC); }
389
390
| cvar ' =' ' &' w_cvar { do_end_variable_parse(BP_VAR_W, 0 CLS_CC); do_assign_ref(&$$ , &$1 , &$4 CLS_CC); }
391
+ | cvar ' =' ' &' function_call { do_end_variable_parse(BP_VAR_W, 0 CLS_CC); do_assign_ref(&$$ , &$1 , &$4 CLS_CC); }
390
392
| T_NEW class_name { do_extended_fcall_begin(CLS_C); do_begin_new_object(&$1 , &$2 CLS_CC); } ctor_arguments { do_end_new_object(&$$ , &$2 , &$1 , &$4 CLS_CC); do_extended_fcall_end(CLS_C);}
391
393
| cvar T_PLUS_EQUAL expr { do_end_variable_parse(BP_VAR_RW, 0 CLS_CC); do_binary_assign_op(ZEND_ASSIGN_ADD, &$$ , &$1 , &$3 CLS_CC); }
392
394
| cvar T_MINUS_EQUAL expr { do_end_variable_parse(BP_VAR_RW, 0 CLS_CC); do_binary_assign_op(ZEND_ASSIGN_SUB, &$$ , &$1 , &$3 CLS_CC); }
@@ -434,15 +436,7 @@ expr_without_variable:
434
436
| expr ' ?' { do_begin_qm_op(&$1 , &$2 CLS_CC); }
435
437
expr ' :' { do_qm_true(&$4 , &$2 , &$5 CLS_CC); }
436
438
expr { do_qm_false(&$$ , &$7 , &$2 , &$5 CLS_CC); }
437
- | T_STRING ' (' { do_extended_fcall_begin(CLS_C); $2 .u.opline_num = do_begin_function_call(&$1 CLS_CC); }
438
- function_call_parameter_list
439
- ' )' { do_end_function_call(&$1 , &$$ , &$4 , 0 , $2 .u.opline_num CLS_CC); do_extended_fcall_end(CLS_C); }
440
- | r_cvar ' (' { do_extended_fcall_begin(CLS_C); do_begin_dynamic_function_call(&$1 CLS_CC); }
441
- function_call_parameter_list
442
- ' )' { do_end_function_call(&$1 , &$$ , &$4 , 0 , 1 CLS_CC); do_extended_fcall_end(CLS_C);}
443
- | T_STRING T_PAAMAYIM_NEKUDOTAYIM T_STRING ' (' { do_extended_fcall_begin(CLS_C); do_begin_class_member_function_call(&$1 , &$3 CLS_CC); }
444
- function_call_parameter_list
445
- ' )' { do_end_function_call(&$3 , &$$ , &$6 , 1 , 1 CLS_CC); do_extended_fcall_end(CLS_C);}
439
+ | function_call { $$ = $1 ; }
446
440
| internal_functions_in_yacc { $$ = $1 ; }
447
441
| T_INT_CAST expr { do_cast(&$$ , &$2 , IS_LONG CLS_CC); }
448
442
| T_DOUBLE_CAST expr { do_cast(&$$ , &$2 , IS_DOUBLE CLS_CC); }
@@ -459,6 +453,19 @@ expr_without_variable:
459
453
;
460
454
461
455
456
+ function_call :
457
+ T_STRING ' (' { do_extended_fcall_begin(CLS_C); $2 .u.opline_num = do_begin_function_call(&$1 CLS_CC); }
458
+ function_call_parameter_list
459
+ ' )' { do_end_function_call(&$1 , &$$ , &$4 , 0 , $2 .u.opline_num CLS_CC); do_extended_fcall_end(CLS_C); }
460
+ | r_cvar ' (' { do_extended_fcall_begin(CLS_C); do_begin_dynamic_function_call(&$1 CLS_CC); }
461
+ function_call_parameter_list
462
+ ' )' { do_end_function_call(&$1 , &$$ , &$4 , 0 , 1 CLS_CC); do_extended_fcall_end(CLS_C);}
463
+ | T_STRING T_PAAMAYIM_NEKUDOTAYIM T_STRING ' (' { do_extended_fcall_begin(CLS_C); do_begin_class_member_function_call(&$1 , &$3 CLS_CC); }
464
+ function_call_parameter_list
465
+ ' )' { do_end_function_call(&$3 , &$$ , &$6 , 1 , 1 CLS_CC); do_extended_fcall_end(CLS_C);}
466
+ ;
467
+
468
+
462
469
exit_expr :
463
470
/* empty */ { $$ .op_type = IS_UNUSED; }
464
471
| ' (' ' )' { $$ .op_type = IS_UNUSED; }
0 commit comments