From 73f488b323a7d48bd726a748c9e9472e823453fc Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Sun, 15 Jul 2001 18:39:14 +0000 Subject: [PATCH] Allow indirect reference to method names in class::method() construct --- Zend/zend_language_parser.y | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index b1ddec2f12..2384375d9c 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -492,12 +492,18 @@ function_call: | cvar '(' { zend_do_begin_dynamic_function_call(&$1 CLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$1, &$$, &$4, 0, 1 CLS_CC); zend_do_extended_fcall_end(CLS_C);} - | T_STRING T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { zend_do_extended_fcall_begin(CLS_C); zend_do_begin_class_member_function_call(&$1, &$3 CLS_CC); } + | T_STRING T_PAAMAYIM_NEKUDOTAYIM method_name '(' { zend_do_extended_fcall_begin(CLS_C); zend_do_begin_class_member_function_call(&$1, &$3 CLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$3, &$$, &$6, 1, 1 CLS_CC); zend_do_extended_fcall_end(CLS_C);} ; +method_name: + T_STRING { $$ = $1; } + | cvar { zend_do_end_variable_parse(BP_VAR_R, 0 CLS_CC); $$ = $1; } +; + + exit_expr: /* empty */ { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; } | '(' ')' { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; } -- 2.50.1