summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-07-15 18:39:14 +0000
committerZeev Suraski <zeev@php.net>2001-07-15 18:39:14 +0000
commit73f488b323a7d48bd726a748c9e9472e823453fc (patch)
tree9a2042d94b8537a91e8c99928db14a9120f9308d
parent9bd98624510d8e6b97983cb019fcbc14ba8b5eae (diff)
downloadphp-git-73f488b323a7d48bd726a748c9e9472e823453fc.tar.gz
Allow indirect reference to method names in class::method() construct
-rw-r--r--Zend/zend_language_parser.y8
1 files changed, 7 insertions, 1 deletions
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; }