]> granicus.if.org Git - php/commitdiff
Allow indirect reference to method names in class::method() construct
authorZeev Suraski <zeev@php.net>
Sun, 15 Jul 2001 18:39:14 +0000 (18:39 +0000)
committerZeev Suraski <zeev@php.net>
Sun, 15 Jul 2001 18:39:14 +0000 (18:39 +0000)
Zend/zend_language_parser.y

index b1ddec2f127ed00d1097acf1cd779832e76fd0e9..2384375d9cc76e3e7f2439c30245084b8f0e1549 100644 (file)
@@ -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; }