From 9c169d5a4d4f26b5ee785be66a520ac6471a1dbc Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 26 Jun 2014 14:03:31 +0200 Subject: [PATCH] Remove static_scalar_base --- Zend/zend_language_parser.y | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index bf2162b643..5142b465c9 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -980,17 +980,13 @@ static_scalar: /* compile-time evaluated scalars */ static_scalar_value { zend_do_constant_expression(&$$, $1.u.ast TSRMLS_CC); } ; -static_scalar_base: - T_CONSTANT_ENCAPSED_STRING { $$ = $1; } - | static_class_name_scalar { $$ = $1; } - | static_class_constant { $$ = $1; } - | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); } - | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); } - | T_NS_SEPARATOR namespace_name { zval tmp; ZVAL_NEW_STR(&tmp, STR_ALLOC(Z_STRLEN($2.u.constant)+1, 0)); Z_STRVAL(tmp)[0] = '\\'; memcpy(Z_STRVAL(tmp) + 1, Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); if (Z_DELREF($2.u.constant) == 0) {efree(Z_STR($2.u.constant));} Z_STR($2.u.constant) = Z_STR(tmp); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); } -; - static_scalar_value: - static_scalar_base { $$.u.ast = zend_ast_create_constant(&$1.u.constant); } + T_CONSTANT_ENCAPSED_STRING { $$.u.ast = AST_ZVAL(&$1); } + | static_class_name_scalar { $$.u.ast = AST_ZVAL(&$1); } + | static_class_constant { $$.u.ast = AST_ZVAL(&$1); } + | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); $$.u.ast = AST_ZVAL(&$$); } + | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); $$.u.ast = AST_ZVAL(&$$); } + | T_NS_SEPARATOR namespace_name { zval tmp; ZVAL_NEW_STR(&tmp, STR_ALLOC(Z_STRLEN($2.u.constant)+1, 0)); Z_STRVAL(tmp)[0] = '\\'; memcpy(Z_STRVAL(tmp) + 1, Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); if (Z_DELREF($2.u.constant) == 0) {efree(Z_STR($2.u.constant));} Z_STR($2.u.constant) = Z_STR(tmp); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); $$.u.ast = AST_ZVAL(&$$); } | common_scalar { $$.u.ast = $1.u.ast; } | T_ARRAY '(' static_array_pair_list ')' { $$.u.ast = $3.u.ast; } | '[' static_array_pair_list ']' { $$.u.ast = $2.u.ast; } -- 2.50.1