[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