summaryrefslogtreecommitdiff
path: root/Zend/zend_language_parser.y
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2014-07-26 21:53:50 +0200
committerNikita Popov <nikic@php.net>2014-07-26 21:53:50 +0200
commitdf42793cd2ceed11cb46288e0f89d4684b885a57 (patch)
treea3bdf282d37b6a70fa03f80def33840cb20d0a77 /Zend/zend_language_parser.y
parentc07907121e01ff195266de70b8421af2e6e62f26 (diff)
downloadphp-git-df42793cd2ceed11cb46288e0f89d4684b885a57.tar.gz
Create namespace_name via AST
Diffstat (limited to 'Zend/zend_language_parser.y')
-rw-r--r--Zend/zend_language_parser.y23
1 files changed, 12 insertions, 11 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index a4ab4e680c..f592b04be2 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -230,17 +230,18 @@ top_statement_list:
;
namespace_name:
- T_STRING { zval zv; ZVAL_COPY_VALUE(&zv, zend_ast_get_zval($1.u.ast)); $1.op_type = IS_CONST; ZVAL_COPY_VALUE(&$1.u.constant, &zv); $$ = $1; }
- | namespace_name T_NS_SEPARATOR T_STRING { zval zv; ZVAL_COPY_VALUE(&zv, zend_ast_get_zval($3.u.ast)); $3.op_type = IS_CONST; ZVAL_COPY_VALUE(&$3.u.constant, &zv); zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); }
+ T_STRING { $$.u.ast = $1.u.ast; }
+ | namespace_name T_NS_SEPARATOR T_STRING
+ { $$.u.ast = zend_ast_append_str($1.u.ast, $3.u.ast); }
;
name:
namespace_name
- { $$.u.ast = zend_ast_create_zval_ex(&$1.u.constant, ZEND_NAME_NOT_FQ); }
+ { $$.u.ast = $1.u.ast; $$.u.ast->attr = ZEND_NAME_NOT_FQ; }
| T_NAMESPACE T_NS_SEPARATOR namespace_name
- { $$.u.ast = zend_ast_create_zval_ex(&$3.u.constant, ZEND_NAME_RELATIVE); }
+ { $$.u.ast = $3.u.ast; $$.u.ast->attr = ZEND_NAME_RELATIVE; }
| T_NS_SEPARATOR namespace_name
- { $$.u.ast = zend_ast_create_zval_ex(&$2.u.constant, ZEND_NAME_FQ); }
+ { $$.u.ast = $2.u.ast; $$.u.ast->attr = ZEND_NAME_FQ; }
;
top_statement:
@@ -252,11 +253,11 @@ top_statement:
zend_ast_create_zval_from_long(zend_get_scanned_file_offset(TSRMLS_C)));
zend_stop_lexing(TSRMLS_C); }
| T_NAMESPACE namespace_name ';'
- { $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, AST_ZVAL(&$2), NULL);
+ { $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, $2.u.ast, NULL);
zend_discard_doc_comment(TSRMLS_C); }
| T_NAMESPACE namespace_name { zend_discard_doc_comment(TSRMLS_C); }
'{' top_statement_list '}'
- { $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, AST_ZVAL(&$2), $5.u.ast); }
+ { $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, $2.u.ast, $5.u.ast); }
| T_NAMESPACE { zend_discard_doc_comment(TSRMLS_C); }
'{' top_statement_list '}'
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, NULL, $4.u.ast); }
@@ -278,13 +279,13 @@ use_declarations:
use_declaration:
namespace_name
- { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, AST_ZVAL(&$1), NULL); }
+ { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, $1.u.ast, NULL); }
| namespace_name T_AS T_STRING
- { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, AST_ZVAL(&$1), $3.u.ast); }
+ { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, $1.u.ast, $3.u.ast); }
| T_NS_SEPARATOR namespace_name
- { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, AST_ZVAL(&$2), NULL); }
+ { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, $2.u.ast, NULL); }
| T_NS_SEPARATOR namespace_name T_AS T_STRING
- { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, AST_ZVAL(&$2), $4.u.ast); }
+ { $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_ELEM, $2.u.ast, $4.u.ast); }
;
const_list: