[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-cvs
Subject:    [PHP-CVS] com php-src: Reintroduce new expression dereferencing: =?UTF-8?Q?Zend/zend=5Flanguage=5Fpa
From:       Nikita Popov <nikic () php ! net>
Date:       2014-05-30 21:44:30
Message-ID: php-mail-5f52cdde232512d2b12a2bcf4916d668167642820 () git ! php ! net
[Download RAW message or body]

Commit:    295d07e373486cd2fdb45d62710abaca1189ba9c
Author:    Nikita Popov <nikic@php.net>         Fri, 30 May 2014 23:44:30 +0200
Parents:   067fca0e89cbb9feb2ac21464f36a6d6cc16eddf
Branches:  master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=295d07e373486cd2fdb45d62710abaca1189ba9c


Log:
Reintroduce new expression dereferencing

Changed paths:
  M  Zend/zend_language_parser.y


Diff:
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 9758983..a9293e6 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -1105,12 +1105,6 @@ variable_without_objects:
 		variable { $$ = $1; }
 ;
 
-static_member:
-		class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { \
                zend_do_fetch_static_member(&$$, &$1, &$3 TSRMLS_CC); }
-	|	variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { \
                zend_do_fetch_static_member(&$$, &$1, &$3 TSRMLS_CC); }
-
-;
-
 variable_class_name:
 		variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$=$1;; }
 ;
@@ -1121,16 +1115,21 @@ array_function_dereference:
 		'[' dim_offset ']' { fetch_array_dim(&$$, &$1, &$4 TSRMLS_CC); }
 ;
 
+dereferencable:
+		variable			{ $$ = $1; }
+	|	'(' new_expr ')'	{ $$ = $2; zend_do_begin_variable_parse(TSRMLS_C); }
+;
+
 directly_callable_variable:
-		variable '[' dim_offset ']'
+		dereferencable '[' dim_offset ']'
 			{ fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); $$.EA = ZEND_PARSED_VARIABLE; }
-	|	variable '{' expr '}'
+	|	dereferencable '{' expr '}'
 			{ fetch_string_offset(&$$, &$1, &$3 TSRMLS_CC); $$.EA = ZEND_PARSED_VARIABLE; }
 	|	simple_variable
 			{ zend_do_begin_variable_parse(TSRMLS_C);
 			  fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC);
 			  $$.EA = ZEND_PARSED_VARIABLE; }
-	|	variable T_OBJECT_OPERATOR object_member
+	|	dereferencable T_OBJECT_OPERATOR object_member
 			{ zend_do_fetch_property(&$$, &$1, &$3 TSRMLS_CC);
 			  zend_do_begin_method_call(&$$ TSRMLS_CC); }
 		function_call_parameter_list
@@ -1145,7 +1144,7 @@ directly_callable_variable:
 variable:
 		directly_callable_variable { $$ = $1; }
 	|	static_member { $$ = $1; $$.EA = ZEND_PARSED_STATIC_MEMBER; }
-	|	variable T_OBJECT_OPERATOR object_member
+	|	dereferencable T_OBJECT_OPERATOR object_member
 			{ zend_do_fetch_property(&$$, &$1, &$3 TSRMLS_CC); $$.EA = ZEND_PARSED_MEMBER; }
 ;
 
@@ -1155,6 +1154,13 @@ simple_variable:
 	|	'$' simple_variable	{ zend_do_indirect_reference(&$$, &$2 TSRMLS_CC); }
 ;
 
+static_member:
+		class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { \
zend_do_fetch_static_member(&$$, &$1, &$3 TSRMLS_CC); } +	|	variable_class_name \
T_PAAMAYIM_NEKUDOTAYIM simple_variable { zend_do_fetch_static_member(&$$, &$1, &$3 \
TSRMLS_CC); } +
+;
+
+
 dim_offset:
 		/* empty */		{ $$.op_type = IS_UNUSED; }
 	|	expr			{ $$ = $1; }


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic