diff options
author | Nikita Popov <nikic@php.net> | 2014-07-28 18:18:47 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2014-07-28 18:18:47 +0200 |
commit | cf7f0c412d8b4702e844ce47027c34112cbde266 (patch) | |
tree | 54c2cca1978a279ce8490d8a7c10217ddc6174af /Zend | |
parent | 39d480e471177eec57927f833b53dcf4dbad8173 (diff) | |
download | php-git-cf7f0c412d8b4702e844ce47027c34112cbde266.tar.gz |
zend_ast_create determined child count automatically
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_ast.c | 39 | ||||
-rw-r--r-- | Zend/zend_ast.h | 12 | ||||
-rw-r--r-- | Zend/zend_compile.c | 18 | ||||
-rw-r--r-- | Zend/zend_language_parser.y | 275 |
4 files changed, 168 insertions, 176 deletions
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 355f627e30..fbdc35068a 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -33,6 +33,14 @@ static inline void *zend_ast_realloc(void *old, size_t old_size, size_t new_size return new; } +size_t zend_ast_size(zend_uint children) { + return sizeof(zend_ast) + sizeof(zend_ast *) * (children - 1); +} + +size_t zend_ast_list_size(zend_uint children) { + return sizeof(zend_ast_list) + sizeof(zend_ast *) * (children - 1); +} + ZEND_API zend_ast *zend_ast_create_znode(znode *node) { TSRMLS_FETCH(); zend_ast_znode *ast = zend_ast_alloc(sizeof(zend_ast_znode) TSRMLS_CC); @@ -75,14 +83,10 @@ ZEND_API zend_ast *zend_ast_create_decl( return (zend_ast *) ast; } -static zend_ast *zend_ast_create_from_va_list( - zend_uint children, zend_ast_kind kind, zend_ast_attr attr, va_list va -) { +static zend_ast *zend_ast_create_from_va_list(zend_ast_kind kind, zend_ast_attr attr, va_list va) { TSRMLS_FETCH(); - zend_uint i; - zend_ast *ast; - - ast = zend_ast_alloc(sizeof(zend_ast) + (children - 1) * sizeof(zend_ast *) TSRMLS_CC); + zend_uint i, children = kind >> ZEND_AST_NUM_CHILDREN_SHIFT; + zend_ast *ast = zend_ast_alloc(zend_ast_size(children) TSRMLS_CC); ast->kind = kind; ast->attr = attr; ast->lineno = UINT_MAX; @@ -104,36 +108,28 @@ static zend_ast *zend_ast_create_from_va_list( return ast; } -ZEND_API zend_ast *zend_ast_create_ex( - zend_uint children, zend_ast_kind kind, zend_ast_attr attr, ... -) { +ZEND_API zend_ast *zend_ast_create_ex(zend_ast_kind kind, zend_ast_attr attr, ...) { va_list va; zend_ast *ast; va_start(va, attr); - ast = zend_ast_create_from_va_list(children, kind, attr, va); + ast = zend_ast_create_from_va_list(kind, attr, va); va_end(va); return ast; } -ZEND_API zend_ast *zend_ast_create( - zend_uint children, zend_ast_kind kind, ... -) { +ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...) { va_list va; zend_ast *ast; va_start(va, kind); - ast = zend_ast_create_from_va_list(children, kind, 0, va); + ast = zend_ast_create_from_va_list(kind, 0, va); va_end(va); return ast; } -size_t zend_ast_list_size(zend_uint children) { - return sizeof(zend_ast_list) + sizeof(zend_ast *) * (children - 1); -} - ZEND_API zend_ast_list *zend_ast_create_list(zend_uint init_children, zend_ast_kind kind, ...) { TSRMLS_FETCH(); zend_ast_list *list = zend_ast_alloc(zend_ast_list_size(4) TSRMLS_CC); @@ -339,8 +335,7 @@ ZEND_API zend_ast *zend_ast_copy(zend_ast *ast) return (zend_ast *) new; } else if (zend_ast_is_list(ast)) { zend_ast_list *list = zend_ast_get_list(ast); - zend_ast_list *new = emalloc(sizeof(zend_ast_list) - + sizeof(zend_ast *) * (list->children - 1)); + zend_ast_list *new = emalloc(zend_ast_list_size(list->children)); zend_uint i; new->kind = list->kind; new->attr = list->attr; @@ -351,7 +346,7 @@ ZEND_API zend_ast *zend_ast_copy(zend_ast *ast) return (zend_ast *) new; } else { zend_uint i, children = zend_ast_get_num_children(ast); - zend_ast *new = emalloc(sizeof(zend_ast) + sizeof(zend_ast *) * (children - 1)); + zend_ast *new = emalloc(zend_ast_size(children)); new->kind = ast->kind; new->attr = ast->attr; for (i = 0; i < children; i++) { diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h index df293db405..c8cac17cef 100644 --- a/Zend/zend_ast.h +++ b/Zend/zend_ast.h @@ -187,10 +187,8 @@ typedef struct _zend_ast_decl { ZEND_API zend_ast *zend_ast_create_zval_ex(zval *zv, zend_ast_attr attr); -ZEND_API zend_ast *zend_ast_create_ex( - zend_uint children, zend_ast_kind kind, zend_ast_attr attr, ...); -ZEND_API zend_ast *zend_ast_create( - zend_uint children, zend_ast_kind kind, ...); +ZEND_API zend_ast *zend_ast_create_ex(zend_ast_kind kind, zend_ast_attr attr, ...); +ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...); ZEND_API zend_ast *zend_ast_create_decl( zend_ast_kind kind, zend_uint flags, zend_uint start_lineno, zend_string *doc_comment, @@ -253,13 +251,13 @@ static inline zend_ast *zend_ast_create_zval_from_long(long lval) { } static inline zend_ast *zend_ast_create_binary_op(zend_uint opcode, zend_ast *op0, zend_ast *op1) { - return zend_ast_create_ex(2, ZEND_AST_BINARY_OP, opcode, op0, op1); + return zend_ast_create_ex(ZEND_AST_BINARY_OP, opcode, op0, op1); } static inline zend_ast *zend_ast_create_assign_op(zend_uint opcode, zend_ast *op0, zend_ast *op1) { - return zend_ast_create_ex(2, ZEND_AST_ASSIGN_OP, opcode, op0, op1); + return zend_ast_create_ex(ZEND_AST_ASSIGN_OP, opcode, op0, op1); } static inline zend_ast *zend_ast_create_cast(zend_uint type, zend_ast *op0) { - return zend_ast_create_ex(1, ZEND_AST_CAST, type, op0); + return zend_ast_create_ex(ZEND_AST_CAST, type, op0); } #endif diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 2623e3ec30..562c076356 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4483,12 +4483,12 @@ static void zend_compile_static_var_common( opline->extended_value = ZEND_FETCH_STATIC; if (by_ref) { - zend_ast *fetch_ast = zend_ast_create(1, ZEND_AST_VAR, var_ast); + zend_ast *fetch_ast = zend_ast_create(ZEND_AST_VAR, var_ast); zend_compile_assign_ref_common(NULL, fetch_ast, &result TSRMLS_CC); } else { - zend_ast *fetch_ast = zend_ast_create(1, ZEND_AST_VAR, var_ast); + zend_ast *fetch_ast = zend_ast_create(ZEND_AST_VAR, var_ast); zend_ast *znode_ast = zend_ast_create_znode(&result); - zend_ast *assign_ast = zend_ast_create(2, ZEND_AST_ASSIGN, fetch_ast, znode_ast); + zend_ast *assign_ast = zend_ast_create(ZEND_AST_ASSIGN, fetch_ast, znode_ast); znode dummy_node; zend_compile_expr(&dummy_node, assign_ast TSRMLS_CC); zend_do_free(&dummy_node TSRMLS_CC); @@ -4838,14 +4838,14 @@ void zend_compile_foreach(zend_ast *ast TSRMLS_DC) { zend_compile_assign_ref_common(NULL, value_ast, &value_node TSRMLS_CC); } else { zend_ast *znode_ast = zend_ast_create_znode(&value_node); - zend_ast *assign_ast = zend_ast_create(2, ZEND_AST_ASSIGN, value_ast, znode_ast); + zend_ast *assign_ast = zend_ast_create(ZEND_AST_ASSIGN, value_ast, znode_ast); zend_compile_expr(&dummy_node, assign_ast TSRMLS_CC); zend_do_free(&dummy_node TSRMLS_CC); } if (key_ast) { zend_ast *znode_ast = zend_ast_create_znode(&key_node); - zend_ast *assign_ast = zend_ast_create(2, ZEND_AST_ASSIGN, key_ast, znode_ast); + zend_ast *assign_ast = zend_ast_create(ZEND_AST_ASSIGN, key_ast, znode_ast); zend_compile_expr(&dummy_node, assign_ast TSRMLS_CC); zend_do_free(&dummy_node TSRMLS_CC); } @@ -6671,7 +6671,7 @@ void zend_compile_isset_or_empty(znode *result, zend_ast *ast TSRMLS_DC) { if (!zend_is_variable(var_ast) || zend_is_call(var_ast)) { if (ast->kind == ZEND_AST_EMPTY) { /* empty(expr) can be transformed to !expr */ - zend_ast *not_ast = zend_ast_create_ex(1, ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, var_ast); + zend_ast *not_ast = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, var_ast); zend_compile_expr(result, not_ast TSRMLS_CC); return; } else { @@ -6736,7 +6736,7 @@ void zend_compile_shell_exec(znode *result, zend_ast *ast TSRMLS_DC) { ZVAL_STRING(&fn_name, "shell_exec"); name_ast = zend_ast_create_zval(&fn_name); args_ast = (zend_ast *) zend_ast_create_list(1, ZEND_AST_ARG_LIST, expr_ast); - call_ast = zend_ast_create(2, ZEND_AST_CALL, name_ast, args_ast); + call_ast = zend_ast_create(ZEND_AST_CALL, name_ast, args_ast); zend_compile_expr(result, call_ast TSRMLS_CC); @@ -6888,7 +6888,7 @@ void zend_compile_resolve_class_name(znode *result, zend_ast *ast TSRMLS_DC) { ZVAL_STRING(&class_str_zv, "class"); class_str_ast = zend_ast_create_zval(&class_str_zv); - class_const_ast = zend_ast_create(2, + class_const_ast = zend_ast_create( ZEND_AST_CLASS_CONST, name_ast, class_str_ast); zend_compile_expr(result, class_const_ast TSRMLS_CC); @@ -7025,7 +7025,7 @@ void zend_compile_magic_const(znode *result, zend_ast *ast TSRMLS_DC) { { zval const_zv; ZVAL_STRING(&const_zv, "__CLASS__"); - zend_ast *const_ast = zend_ast_create(1, ZEND_AST_CONST, + zend_ast *const_ast = zend_ast_create(ZEND_AST_CONST, zend_ast_create_zval(&const_zv)); zend_compile_const(result, const_ast TSRMLS_CC); zval_ptr_dtor(&const_zv); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 1cdff6b985..20c2e19c44 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -250,18 +250,18 @@ top_statement: | function_declaration_statement { $$.ast = $1.ast; } | class_declaration_statement { $$.ast = $1.ast; } | T_HALT_COMPILER '(' ')' ';' - { $$.ast = zend_ast_create(1, ZEND_AST_HALT_COMPILER, + { $$.ast = zend_ast_create(ZEND_AST_HALT_COMPILER, zend_ast_create_zval_from_long(zend_get_scanned_file_offset(TSRMLS_C))); zend_stop_lexing(TSRMLS_C); } | T_NAMESPACE namespace_name ';' - { $$.ast = zend_ast_create(2, ZEND_AST_NAMESPACE, $2.ast, NULL); + { $$.ast = zend_ast_create(ZEND_AST_NAMESPACE, $2.ast, NULL); RESET_DOC_COMMENT(); } | T_NAMESPACE namespace_name { RESET_DOC_COMMENT(); } '{' top_statement_list '}' - { $$.ast = zend_ast_create(2, ZEND_AST_NAMESPACE, $2.ast, $5.ast); } + { $$.ast = zend_ast_create(ZEND_AST_NAMESPACE, $2.ast, $5.ast); } | T_NAMESPACE { RESET_DOC_COMMENT(); } '{' top_statement_list '}' - { $$.ast = zend_ast_create(2, ZEND_AST_NAMESPACE, NULL, $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_NAMESPACE, NULL, $4.ast); } | T_USE use_declarations ';' { $$.ast = $2.ast; $$.ast->attr = T_CLASS; } | T_USE T_FUNCTION use_declarations ';' @@ -280,13 +280,13 @@ use_declarations: use_declaration: namespace_name - { $$.ast = zend_ast_create(2, ZEND_AST_USE_ELEM, $1.ast, NULL); } + { $$.ast = zend_ast_create(ZEND_AST_USE_ELEM, $1.ast, NULL); } | namespace_name T_AS T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_USE_ELEM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_USE_ELEM, $1.ast, $3.ast); } | T_NS_SEPARATOR namespace_name - { $$.ast = zend_ast_create(2, ZEND_AST_USE_ELEM, $2.ast, NULL); } + { $$.ast = zend_ast_create(ZEND_AST_USE_ELEM, $2.ast, NULL); } | T_NS_SEPARATOR namespace_name T_AS T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_USE_ELEM, $2.ast, $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_USE_ELEM, $2.ast, $4.ast); } ; const_list: @@ -313,7 +313,7 @@ inner_statement: statement: unticked_statement { $$.ast = $1.ast; } - | T_STRING ':' { $$.ast = zend_ast_create(1, ZEND_AST_LABEL, $1.ast); } + | T_STRING ':' { $$.ast = zend_ast_create(ZEND_AST_LABEL, $1.ast); } ; unticked_statement: @@ -321,41 +321,41 @@ unticked_statement: | if_stmt { $$.ast = $1.ast; } | alt_if_stmt { $$.ast = $1.ast; } | T_WHILE parenthesis_expr while_statement - { $$.ast = zend_ast_create(2, ZEND_AST_WHILE, $2.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_WHILE, $2.ast, $3.ast); } | T_DO statement T_WHILE parenthesis_expr ';' - { $$.ast = zend_ast_create(2, ZEND_AST_DO_WHILE, $2.ast, $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DO_WHILE, $2.ast, $4.ast); } | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement - { $$.ast = zend_ast_create(4, ZEND_AST_FOR, $3.ast, $5.ast, $7.ast, $9.ast); } + { $$.ast = zend_ast_create(ZEND_AST_FOR, $3.ast, $5.ast, $7.ast, $9.ast); } | T_SWITCH parenthesis_expr switch_case_list - { $$.ast = zend_ast_create(2, ZEND_AST_SWITCH, $2.ast, $3.ast); } - | T_BREAK ';' { $$.ast = zend_ast_create(1, ZEND_AST_BREAK, NULL); } - | T_BREAK expr ';' { $$.ast = zend_ast_create(1, ZEND_AST_BREAK, $2.ast); } - | T_CONTINUE ';' { $$.ast = zend_ast_create(1, ZEND_AST_CONTINUE, NULL); } - | T_CONTINUE expr ';' { $$.ast = zend_ast_create(1, ZEND_AST_CONTINUE, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_SWITCH, $2.ast, $3.ast); } + | T_BREAK ';' { $$.ast = zend_ast_create(ZEND_AST_BREAK, NULL); } + | T_BREAK expr ';' { $$.ast = zend_ast_create(ZEND_AST_BREAK, $2.ast); } + | T_CONTINUE ';' { $$.ast = zend_ast_create(ZEND_AST_CONTINUE, NULL); } + | T_CONTINUE expr ';' { $$.ast = zend_ast_create(ZEND_AST_CONTINUE, $2.ast); } | T_RETURN ';' - { $$.ast = zend_ast_create(1, ZEND_AST_RETURN, NULL); } + { $$.ast = zend_ast_create(ZEND_AST_RETURN, NULL); } | T_RETURN expr ';' - { $$.ast = zend_ast_create(1, ZEND_AST_RETURN, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_RETURN, $2.ast); } | T_GLOBAL global_var_list ';' { $$.ast = $2.ast; } | T_STATIC static_var_list ';' { $$.ast = $2.ast; } | T_ECHO echo_expr_list ';' { $$.ast = $2.ast; } - | T_INLINE_HTML { $$.ast = zend_ast_create(1, ZEND_AST_ECHO, $1.ast); } + | T_INLINE_HTML { $$.ast = zend_ast_create(ZEND_AST_ECHO, $1.ast); } | expr ';' { $$.ast = $1.ast; } | T_UNSET '(' unset_variables ')' ';' { $$.ast = $3.ast; } | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement - { $$.ast = zend_ast_create(4, ZEND_AST_FOREACH, + { $$.ast = zend_ast_create(ZEND_AST_FOREACH, $3.ast, $5.ast, NULL, $7.ast); } | T_FOREACH '(' expr T_AS foreach_variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement - { $$.ast = zend_ast_create(4, ZEND_AST_FOREACH, + { $$.ast = zend_ast_create(ZEND_AST_FOREACH, $3.ast, $7.ast, $5.ast, $9.ast); } | T_DECLARE '(' const_list ')' declare_statement - { $$.ast = zend_ast_create(2, ZEND_AST_DECLARE, $3.ast, $5.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DECLARE, $3.ast, $5.ast); } | ';' /* empty statement */ { $$.ast = NULL; } | T_TRY '{' inner_statement_list '}' catch_list finally_statement - { $$.ast = zend_ast_create(3, ZEND_AST_TRY, $3.ast, $5.ast, $6.ast); } - | T_THROW expr ';' { $$.ast = zend_ast_create(1, ZEND_AST_THROW, $2.ast); } - | T_GOTO T_STRING ';' { $$.ast = zend_ast_create(1, ZEND_AST_GOTO, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_TRY, $3.ast, $5.ast, $6.ast); } + | T_THROW expr ';' { $$.ast = zend_ast_create(ZEND_AST_THROW, $2.ast); } + | T_GOTO T_STRING ';' { $$.ast = zend_ast_create(ZEND_AST_GOTO, $2.ast); } ; catch_list: @@ -363,7 +363,7 @@ catch_list: { $$.list = zend_ast_create_list(0, ZEND_AST_CATCH_LIST); } | catch_list T_CATCH '(' name T_VARIABLE ')' '{' inner_statement_list '}' { $$.list = zend_ast_list_add($1.list, - zend_ast_create(3, ZEND_AST_CATCH, $4.ast, $5.ast, $8.ast)); } + zend_ast_create(ZEND_AST_CATCH, $4.ast, $5.ast, $8.ast)); } ; finally_statement: @@ -377,7 +377,7 @@ unset_variables: ; unset_variable: - variable { $$.ast = zend_ast_create(1, ZEND_AST_UNSET, $1.ast); } + variable { $$.ast = zend_ast_create(ZEND_AST_UNSET, $1.ast); } ; function_declaration_statement: @@ -439,7 +439,7 @@ implements_list: foreach_variable: variable { $$.ast = $1.ast; } - | '&' variable { $$.ast = zend_ast_create(1, ZEND_AST_REF, $2.ast); } + | '&' variable { $$.ast = zend_ast_create(ZEND_AST_REF, $2.ast); } | T_LIST '(' assignment_list ')' { $$.ast = $3.ast; } ; @@ -471,10 +471,10 @@ case_list: /* empty */ { $$.list = zend_ast_create_list(0, ZEND_AST_SWITCH_LIST); } | case_list T_CASE expr case_separator inner_statement_list { $$.list = zend_ast_list_add($1.list, - zend_ast_create(2, ZEND_AST_SWITCH_CASE, $3.ast, $5.ast)); } + zend_ast_create(ZEND_AST_SWITCH_CASE, $3.ast, $5.ast)); } | case_list T_DEFAULT case_separator inner_statement_list { $$.list = zend_ast_list_add($1.list, - zend_ast_create(2, ZEND_AST_SWITCH_CASE, NULL, $4.ast)); } + zend_ast_create(ZEND_AST_SWITCH_CASE, NULL, $4.ast)); } ; case_separator: @@ -492,33 +492,33 @@ while_statement: if_stmt_without_else: T_IF parenthesis_expr statement { $$.list = zend_ast_create_list(1, ZEND_AST_IF, - zend_ast_create(2, ZEND_AST_IF_ELEM, $2.ast, $3.ast)); } + zend_ast_create(ZEND_AST_IF_ELEM, $2.ast, $3.ast)); } | if_stmt_without_else T_ELSEIF parenthesis_expr statement { $$.list = zend_ast_list_add($1.list, - zend_ast_create(2, ZEND_AST_IF_ELEM, $3.ast, $4.ast)); } + zend_ast_create(ZEND_AST_IF_ELEM, $3.ast, $4.ast)); } ; if_stmt: if_stmt_without_else { $$.ast = $1.ast; } | if_stmt_without_else T_ELSE statement { $$.list = zend_ast_list_add($1.list, - zend_ast_create(2, ZEND_AST_IF_ELEM, NULL, $3.ast)); } + zend_ast_create(ZEND_AST_IF_ELEM, NULL, $3.ast)); } ; alt_if_stmt_without_else: T_IF parenthesis_expr ':' inner_statement_list { $$.list = zend_ast_create_list(1, ZEND_AST_IF, - zend_ast_create(2, ZEND_AST_IF_ELEM, $2.ast, $4.ast)); } + zend_ast_create(ZEND_AST_IF_ELEM, $2.ast, $4.ast)); } | alt_if_stmt_without_else T_ELSEIF parenthesis_expr ':' inner_statement_list { $$.list = zend_ast_list_add($1.list, - zend_ast_create(2, ZEND_AST_IF_ELEM, $3.ast, $5.ast)); } + zend_ast_create(ZEND_AST_IF_ELEM, $3.ast, $5.ast)); } ; alt_if_stmt: alt_if_stmt_without_else T_ENDIF ';' { $$.ast = $1.ast; } | alt_if_stmt_without_else T_ELSE ':' inner_statement_list T_ENDIF ';' { $$.list = zend_ast_list_add($1.list, - zend_ast_create(2, ZEND_AST_IF_ELEM, NULL, $4.ast)); } + zend_ast_create(ZEND_AST_IF_ELEM, NULL, $4.ast)); } ; parameter_list: @@ -536,18 +536,18 @@ non_empty_parameter_list: parameter: optional_type is_reference is_variadic T_VARIABLE - { $$.ast = zend_ast_create_ex(3, ZEND_AST_PARAM, $2.num | $3.num, + { $$.ast = zend_ast_create_ex(ZEND_AST_PARAM, $2.num | $3.num, $1.ast, $4.ast, NULL); } | optional_type is_reference is_variadic T_VARIABLE '=' expr - { $$.ast = zend_ast_create_ex(3, ZEND_AST_PARAM, $2.num | $3.num, + { $$.ast = zend_ast_create_ex(ZEND_AST_PARAM, $2.num | $3.num, $1.ast, $4.ast, $6.ast); } ; optional_type: /* empty */ { $$.ast = NULL; } - | T_ARRAY { $$.ast = zend_ast_create_ex(0, ZEND_AST_TYPE, IS_ARRAY); } - | T_CALLABLE { $$.ast = zend_ast_create_ex(0, ZEND_AST_TYPE, IS_CALLABLE); } + | T_ARRAY { $$.ast = zend_ast_create_ex(ZEND_AST_TYPE, IS_ARRAY); } + | T_CALLABLE { $$.ast = zend_ast_create_ex(ZEND_AST_TYPE, IS_CALLABLE); } | name { $$.ast = $1.ast; } ; @@ -567,7 +567,7 @@ argument: expr_without_variable { $$.ast = $1.ast; } | variable { $$.ast = $1.ast; } /*| '&' variable { ZEND_ASSERT(0); } */ - | T_ELLIPSIS expr { $$.ast = zend_ast_create(1, ZEND_AST_UNPACK, $2.ast); } + | T_ELLIPSIS expr { $$.ast = zend_ast_create(ZEND_AST_UNPACK, $2.ast); } ; global_var_list: @@ -577,8 +577,8 @@ global_var_list: global_var: simple_variable - { $$.ast = zend_ast_create(1, ZEND_AST_GLOBAL, - zend_ast_create(1, ZEND_AST_VAR, $1.ast)); } + { $$.ast = zend_ast_create(ZEND_AST_GLOBAL, + zend_ast_create(ZEND_AST_VAR, $1.ast)); } ; @@ -589,9 +589,9 @@ static_var_list: static_var: T_VARIABLE - { $$.ast = zend_ast_create(2, ZEND_AST_STATIC, $1.ast, NULL); } + { $$.ast = zend_ast_create(ZEND_AST_STATIC, $1.ast, NULL); } | T_VARIABLE '=' expr - { $$.ast = zend_ast_create(2, ZEND_AST_STATIC, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_STATIC, $1.ast, $3.ast); } ; @@ -609,7 +609,7 @@ class_statement: | T_CONST class_const_list ';' { $$.ast = $2.ast; RESET_DOC_COMMENT(); } | T_USE name_list trait_adaptations - { $$.ast = zend_ast_create(2, ZEND_AST_USE_TRAIT, $2.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_USE_TRAIT, $2.ast, $3.ast); } | method_modifiers function returns_ref T_STRING '(' parameter_list ')' { $$.str = CG(doc_comment); CG(doc_comment) = NULL; } method_body @@ -642,27 +642,27 @@ trait_adaptation: trait_precedence: absolute_trait_method_reference T_INSTEADOF name_list - { $$.ast = zend_ast_create(2, ZEND_AST_TRAIT_PRECEDENCE, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_TRAIT_PRECEDENCE, $1.ast, $3.ast); } ; trait_alias: trait_method_reference T_AS trait_modifiers T_STRING - { $$.ast = zend_ast_create_ex(2, ZEND_AST_TRAIT_ALIAS, + { $$.ast = zend_ast_create_ex(ZEND_AST_TRAIT_ALIAS, $3.num, $1.ast, $4.ast); } | trait_method_reference T_AS member_modifier - { $$.ast = zend_ast_create_ex(2, ZEND_AST_TRAIT_ALIAS, + { $$.ast = zend_ast_create_ex(ZEND_AST_TRAIT_ALIAS, $3.num, $1.ast, NULL); } ; trait_method_reference: T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_METHOD_REFERENCE, NULL, $1.ast); } + { $$.ast = zend_ast_create(ZEND_AST_METHOD_REFERENCE, NULL, $1.ast); } | absolute_trait_method_reference { $$.ast = $1.ast; } ; absolute_trait_method_reference: name T_PAAMAYIM_NEKUDOTAYIM T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_METHOD_REFERENCE, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_METHOD_REFERENCE, $1.ast, $3.ast); } ; trait_modifiers: @@ -707,9 +707,9 @@ property_list: ; property: - T_VARIABLE { $$.ast = zend_ast_create(2, ZEND_AST_PROP_ELEM, $1.ast, NULL); } + T_VARIABLE { $$.ast = zend_ast_create(ZEND_AST_PROP_ELEM, $1.ast, NULL); } | T_VARIABLE '=' expr - { $$.ast = zend_ast_create(2, ZEND_AST_PROP_ELEM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_PROP_ELEM, $1.ast, $3.ast); } ; class_const_list: @@ -720,7 +720,7 @@ class_const_list: const_decl: T_STRING '=' expr - { $$.ast = zend_ast_create(2, ZEND_AST_CONST_ELEM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CONST_ELEM, $1.ast, $3.ast); } ; echo_expr_list: @@ -728,7 +728,7 @@ echo_expr_list: | echo_expr { $$.list = zend_ast_create_list(1, ZEND_AST_STMT_LIST, $1.ast); } ; echo_expr: - expr { $$.ast = zend_ast_create(1, ZEND_AST_ECHO, $1.ast); } + expr { $$.ast = zend_ast_create(ZEND_AST_ECHO, $1.ast); } ; for_expr: @@ -743,21 +743,21 @@ non_empty_for_expr: new_expr: T_NEW class_name_reference ctor_arguments - { $$.ast = zend_ast_create(2, ZEND_AST_NEW, $2.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_NEW, $2.ast, $3.ast); } ; expr_without_variable: T_LIST '(' assignment_list ')' '=' expr - { $$.ast = zend_ast_create(2, ZEND_AST_ASSIGN, $3.ast, $6.ast); } + { $$.ast = zend_ast_create(ZEND_AST_ASSIGN, $3.ast, $6.ast); } | variable '=' expr - { $$.ast = zend_ast_create(2, ZEND_AST_ASSIGN, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_ASSIGN, $1.ast, $3.ast); } | variable '=' '&' variable - { $$.ast = zend_ast_create(2, ZEND_AST_ASSIGN_REF, $1.ast, $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_ASSIGN_REF, $1.ast, $4.ast); } | variable '=' '&' T_NEW class_name_reference ctor_arguments { zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated"); - $$.ast = zend_ast_create(2, ZEND_AST_ASSIGN_REF, $1.ast, - zend_ast_create(2, ZEND_AST_NEW, $5.ast, $6.ast)); } - | T_CLONE expr { $$.ast = zend_ast_create(1, ZEND_AST_CLONE, $2.ast); } + $$.ast = zend_ast_create(ZEND_AST_ASSIGN_REF, $1.ast, + zend_ast_create(ZEND_AST_NEW, $5.ast, $6.ast)); } + | T_CLONE expr { $$.ast = zend_ast_create(ZEND_AST_CLONE, $2.ast); } | variable T_PLUS_EQUAL expr { $$.ast = zend_ast_create_assign_op(ZEND_ASSIGN_ADD, $1.ast, $3.ast); } | variable T_MINUS_EQUAL expr @@ -782,18 +782,18 @@ expr_without_variable: { $$.ast = zend_ast_create_assign_op(ZEND_ASSIGN_SL, $1.ast, $3.ast); } | variable T_SR_EQUAL expr { $$.ast = zend_ast_create_assign_op(ZEND_ASSIGN_SR, $1.ast, $3.ast); } - | variable T_INC { $$.ast = zend_ast_create(1, ZEND_AST_POST_INC, $1.ast); } - | T_INC variable { $$.ast = zend_ast_create(1, ZEND_AST_PRE_INC, $2.ast); } - | variable T_DEC { $$.ast = zend_ast_create(1, ZEND_AST_POST_DEC, $1.ast); } - | T_DEC variable { $$.ast = zend_ast_create(1, ZEND_AST_PRE_DEC, $2.ast); } + | variable T_INC { $$.ast = zend_ast_create(ZEND_AST_POST_INC, $1.ast); } + | T_INC variable { $$.ast = zend_ast_create(ZEND_AST_PRE_INC, $2.ast); } + | variable T_DEC { $$.ast = zend_ast_create(ZEND_AST_POST_DEC, $1.ast); } + | T_DEC variable { $$.ast = zend_ast_create(ZEND_AST_PRE_DEC, $2.ast); } | expr T_BOOLEAN_OR expr - { $$.ast = zend_ast_create(2, ZEND_AST_OR, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_OR, $1.ast, $3.ast); } | expr T_BOOLEAN_AND expr - { $$.ast = zend_ast_create(2, ZEND_AST_AND, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_AND, $1.ast, $3.ast); } | expr T_LOGICAL_OR expr - { $$.ast = zend_ast_create(2, ZEND_AST_OR, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_OR, $1.ast, $3.ast); } | expr T_LOGICAL_AND expr - { $$.ast = zend_ast_create(2, ZEND_AST_AND, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_AND, $1.ast, $3.ast); } | expr T_LOGICAL_XOR expr { $$.ast = zend_ast_create_binary_op(ZEND_BOOL_XOR, $1.ast, $3.ast); } | expr '|' expr { $$.ast = zend_ast_create_binary_op(ZEND_BW_OR, $1.ast, $3.ast); } @@ -808,10 +808,10 @@ expr_without_variable: | expr '%' expr { $$.ast = zend_ast_create_binary_op(ZEND_MOD, $1.ast, $3.ast); } | expr T_SL expr { $$.ast = zend_ast_create_binary_op(ZEND_SL, $1.ast, $3.ast); } | expr T_SR expr { $$.ast = zend_ast_create_binary_op(ZEND_SR, $1.ast, $3.ast); } - | '+' expr %prec T_INC { $$.ast = zend_ast_create(1, ZEND_AST_UNARY_PLUS, $2.ast); } - | '-' expr %prec T_INC { $$.ast = zend_ast_create(1, ZEND_AST_UNARY_MINUS, $2.ast); } - | '!' expr { $$.ast = zend_ast_create_ex(1, ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, $2.ast); } - | '~' expr { $$.ast = zend_ast_create_ex(1, ZEND_AST_UNARY_OP, ZEND_BW_NOT, $2.ast); } + | '+' expr %prec T_INC { $$.ast = zend_ast_create(ZEND_AST_UNARY_PLUS, $2.ast); } + | '-' expr %prec T_INC { $$.ast = zend_ast_create(ZEND_AST_UNARY_MINUS, $2.ast); } + | '!' expr { $$.ast = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, $2.ast); } + | '~' expr { $$.ast = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BW_NOT, $2.ast); } | expr T_IS_IDENTICAL expr { $$.ast = zend_ast_create_binary_op(ZEND_IS_IDENTICAL, $1.ast, $3.ast); } | expr T_IS_NOT_IDENTICAL expr @@ -825,18 +825,17 @@ expr_without_variable: | expr T_IS_SMALLER_OR_EQUAL expr { $$.ast = zend_ast_create_binary_op(ZEND_IS_SMALLER_OR_EQUAL, $1.ast, $3.ast); } | expr '>' expr - { $$.ast = zend_ast_create(2, ZEND_AST_GREATER, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_GREATER, $1.ast, $3.ast); } | expr T_IS_GREATER_OR_EQUAL expr - { $$.ast = zend_ast_create(2, ZEND_AST_GREATER_EQUAL, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_GREATER_EQUAL, $1.ast, $3.ast); } | expr T_INSTANCEOF class_name_reference - { $$.ast = zend_ast_create(2, ZEND_AST_INSTANCEOF, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_INSTANCEOF, $1.ast, $3.ast); } | parenthesis_expr { $$.ast = $1.ast; } | new_expr { $$.ast = $1.ast; } | expr '?' expr ':' expr - { $$.ast = zend_ast_create(3, - ZEND_AST_CONDITIONAL, $1.ast, $3.ast, $5.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CONDITIONAL, $1.ast, $3.ast, $5.ast); } | expr '?' ':' expr - { $$.ast = zend_ast_create(3, ZEND_AST_CONDITIONAL, $1.ast, NULL, $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CONDITIONAL, $1.ast, NULL, $4.ast); } | internal_functions_in_yacc { $$.ast = $1.ast; } | T_INT_CAST expr { $$.ast = zend_ast_create_cast(IS_LONG, $2.ast); } @@ -852,15 +851,15 @@ expr_without_variable: { $$.ast = zend_ast_create_cast(_IS_BOOL, $2.ast); } | T_UNSET_CAST expr { $$.ast = zend_ast_create_cast(IS_NULL, $2.ast); } - | T_EXIT exit_expr { $$.ast = zend_ast_create(1, ZEND_AST_EXIT, $2.ast); } - | '@' expr { $$.ast = zend_ast_create(1, ZEND_AST_SILENCE, $2.ast); } + | T_EXIT exit_expr { $$.ast = zend_ast_create(ZEND_AST_EXIT, $2.ast); } + | '@' expr { $$.ast = zend_ast_create(ZEND_AST_SILENCE, $2.ast); } | scalar { $$.ast = $1.ast; } - | '`' backticks_expr '`' { $$.ast = zend_ast_create(1, ZEND_AST_SHELL_EXEC, $2.ast); } - | T_PRINT expr { $$.ast = zend_ast_create(1, ZEND_AST_PRINT, $2.ast); } - | T_YIELD { $$.ast = zend_ast_create(2, ZEND_AST_YIELD, NULL, NULL); } - | T_YIELD expr { $$.ast = zend_ast_create(2, ZEND_AST_YIELD, $2.ast, NULL); } + | '`' backticks_expr '`' { $$.ast = zend_ast_create(ZEND_AST_SHELL_EXEC, $2.ast); } + | T_PRINT expr { $$.ast = zend_ast_create(ZEND_AST_PRINT, $2.ast); } + | T_YIELD { $$.ast = zend_ast_create(ZEND_AST_YIELD, NULL, NULL); } + | T_YIELD expr { $$.ast = zend_ast_create(ZEND_AST_YIELD, $2.ast, NULL); } | T_YIELD expr T_DOUBLE_ARROW expr - { $$.ast = zend_ast_create(2, ZEND_AST_YIELD, $4.ast, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_YIELD, $4.ast, $2.ast); } | function returns_ref '(' parameter_list ')' lexical_vars { $$.str = CG(doc_comment); CG(doc_comment) = NULL; } '{' inner_statement_list '}' @@ -901,15 +900,15 @@ lexical_var: function_call: name argument_list - { $$.ast = zend_ast_create(2, ZEND_AST_CALL, $1.ast, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CALL, $1.ast, $2.ast); } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list - { $$.ast = zend_ast_create(3, ZEND_AST_STATIC_CALL, + { $$.ast = zend_ast_create(ZEND_AST_STATIC_CALL, $1.ast, $3.ast, $4.ast); } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list - { $$.ast = zend_ast_create(3, ZEND_AST_STATIC_CALL, + { $$.ast = zend_ast_create(ZEND_AST_STATIC_CALL, $1.ast, $3.ast, $4.ast); } | callable_expr argument_list - { $$.ast = zend_ast_create(2, ZEND_AST_CALL, $1.ast, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CALL, $1.ast, $2.ast); } ; class_name: @@ -956,11 +955,11 @@ scalar: | T_LINE { $$.ast = $1.ast; } | T_FILE { $$.ast = $1.ast; } | T_DIR { $$.ast = $1.ast; } - | T_TRAIT_C { $$.ast = zend_ast_create_ex(0, ZEND_AST_MAGIC_CONST, T_TRAIT_C); } - | T_METHOD_C { $$.ast = zend_ast_create_ex(0, ZEND_AST_MAGIC_CONST, T_METHOD_C); } - | T_FUNC_C { $$.ast = zend_ast_create_ex(0, ZEND_AST_MAGIC_CONST, T_FUNC_C); } - | T_NS_C { $$.ast = zend_ast_create_ex(0, ZEND_AST_MAGIC_CONST, T_NS_C); } - | T_CLASS_C { $$.ast = zend_ast_create_ex(0, ZEND_AST_MAGIC_CONST, T_CLASS_C); } + | T_TRAIT_C { $$.ast = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_TRAIT_C); } + | T_METHOD_C { $$.ast = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_METHOD_C); } + | T_FUNC_C { $$.ast = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_FUNC_C); } + | T_NS_C { $$.ast = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_NS_C); } + | T_CLASS_C { $$.ast = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_CLASS_C); } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$.ast = $2.ast; } | T_START_HEREDOC T_END_HEREDOC { $$.ast = zend_ast_create_zval_from_str(STR_EMPTY_ALLOC()); } @@ -969,7 +968,7 @@ scalar: | dereferencable_scalar { $$.ast = $1.ast; } | class_name_scalar { $$.ast = $1.ast; } | class_constant { $$.ast = $1.ast; } - | name { $$.ast = zend_ast_create(1, ZEND_AST_CONST, $1.ast); } + | name { $$.ast = zend_ast_create(ZEND_AST_CONST, $1.ast); } ; @@ -1005,13 +1004,13 @@ callable_expr: callable_variable: simple_variable - { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $1.ast); } + { $$.ast = zend_ast_create(ZEND_AST_VAR, $1.ast); } | dereferencable '[' dim_offset ']' - { $$.ast = zend_ast_create(2, ZEND_AST_DIM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DIM, $1.ast, $3.ast); } | dereferencable '{' expr '}' - { $$.ast = zend_ast_create(2, ZEND_AST_DIM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DIM, $1.ast, $3.ast); } | dereferencable T_OBJECT_OPERATOR member_name argument_list - { $$.ast = zend_ast_create(3, ZEND_AST_METHOD_CALL, $1.ast, $3.ast, $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_METHOD_CALL, $1.ast, $3.ast, $4.ast); } | function_call { $$.ast = $1.ast; } ; @@ -1021,7 +1020,7 @@ variable: | static_member { $$.ast = $1.ast; } | dereferencable T_OBJECT_OPERATOR member_name - { $$.ast = zend_ast_create(2, ZEND_AST_PROP, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_PROP, $1.ast, $3.ast); } ; simple_variable: @@ -1030,29 +1029,29 @@ simple_variable: | '$' '{' expr '}' { $$.ast = $3.ast; } | '$' simple_variable - { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_VAR, $2.ast); } ; static_member: class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable - { $$.ast = zend_ast_create(2, ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable - { $$.ast = zend_ast_create(2, ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } ; new_variable: simple_variable - { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $1.ast); } + { $$.ast = zend_ast_create(ZEND_AST_VAR, $1.ast); } | new_variable '[' dim_offset ']' - { $$.ast = zend_ast_create(2, ZEND_AST_DIM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DIM, $1.ast, $3.ast); } | new_variable '{' expr '}' - { $$.ast = zend_ast_create(2, ZEND_AST_DIM, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DIM, $1.ast, $3.ast); } | new_variable T_OBJECT_OPERATOR member_name - { $$.ast = zend_ast_create(2, ZEND_AST_PROP, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_PROP, $1.ast, $3.ast); } | class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable - { $$.ast = zend_ast_create(2, ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } | new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable - { $$.ast = zend_ast_create(2, ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_STATIC_PROP, $1.ast, $3.ast); } ; dim_offset: @@ -1063,7 +1062,7 @@ dim_offset: member_name: T_STRING { $$.ast = $1.ast; } | '{' expr '}' { $$.ast = $2.ast; } - | simple_variable { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $1.ast); } + | simple_variable { $$.ast = zend_ast_create(ZEND_AST_VAR, $1.ast); } ; assignment_list: @@ -1094,12 +1093,12 @@ non_empty_array_pair_list: array_pair: expr T_DOUBLE_ARROW expr - { $$.ast = zend_ast_create(2, ZEND_AST_ARRAY_ELEM, $3.ast, $1.ast); } - | expr { $$.ast = zend_ast_create(2, ZEND_AST_ARRAY_ELEM, $1.ast, NULL); } + { $$.ast = zend_ast_create(ZEND_AST_ARRAY_ELEM, $3.ast, $1.ast); } + | expr { $$.ast = zend_ast_create(ZEND_AST_ARRAY_ELEM, $1.ast, NULL); } | expr T_DOUBLE_ARROW '&' variable - { $$.ast = zend_ast_create_ex(2, ZEND_AST_ARRAY_ELEM, 1, $4.ast, $1.ast); } + { $$.ast = zend_ast_create_ex(ZEND_AST_ARRAY_ELEM, 1, $4.ast, $1.ast); } | '&' variable - { $$.ast = zend_ast_create_ex(2, ZEND_AST_ARRAY_ELEM, 1, $2.ast, NULL); } + { $$.ast = zend_ast_create_ex(ZEND_AST_ARRAY_ELEM, 1, $2.ast, NULL); } ; encaps_list: @@ -1115,65 +1114,65 @@ encaps_list: encaps_var: T_VARIABLE - { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $1.ast); } + { $$.ast = zend_ast_create(ZEND_AST_VAR, $1.ast); } | T_VARIABLE '[' encaps_var_offset ']' - { $$.ast = zend_ast_create(2, ZEND_AST_DIM, - zend_ast_create(1, ZEND_AST_VAR, $1.ast), $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DIM, + zend_ast_create(ZEND_AST_VAR, $1.ast), $3.ast); } | T_VARIABLE T_OBJECT_OPERATOR T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_PROP, - zend_ast_create(1, ZEND_AST_VAR, $1.ast), $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_PROP, + zend_ast_create(ZEND_AST_VAR, $1.ast), $3.ast); } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' - { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_VAR, $2.ast); } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' - { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $2.ast); } + { $$.ast = zend_ast_create(ZEND_AST_VAR, $2.ast); } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' - { $$.ast = zend_ast_create(2, ZEND_AST_DIM, - zend_ast_create(1, ZEND_AST_VAR, $2.ast), $4.ast); } + { $$.ast = zend_ast_create(ZEND_AST_DIM, + zend_ast_create(ZEND_AST_VAR, $2.ast), $4.ast); } | T_CURLY_OPEN variable '}' { $$.ast = $2.ast; } ; encaps_var_offset: T_STRING { $$.ast = $1.ast; } | T_NUM_STRING { $$.ast = $1.ast; } - | T_VARIABLE { $$.ast = zend_ast_create(1, ZEND_AST_VAR, $1.ast); } + | T_VARIABLE { $$.ast = zend_ast_create(ZEND_AST_VAR, $1.ast); } ; internal_functions_in_yacc: T_ISSET '(' isset_variables ')' { $$.ast = $3.ast; } - | T_EMPTY '(' expr ')' { $$.ast = zend_ast_create(1, ZEND_AST_EMPTY, $3.ast); } + | T_EMPTY '(' expr ')' { $$.ast = zend_ast_create(ZEND_AST_EMPTY, $3.ast); } | T_INCLUDE expr - { $$.ast = zend_ast_create_ex(1, ZEND_AST_INCLUDE_OR_EVAL, ZEND_INCLUDE, $2.ast); } + { $$.ast = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_INCLUDE, $2.ast); } | T_INCLUDE_ONCE expr - { $$.ast = zend_ast_create_ex(1, ZEND_AST_INCLUDE_OR_EVAL, ZEND_INCLUDE_ONCE, $2.ast); } + { $$.ast = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_INCLUDE_ONCE, $2.ast); } | T_EVAL '(' expr ')' - { $$.ast = zend_ast_create_ex(1, ZEND_AST_INCLUDE_OR_EVAL, ZEND_EVAL, $3.ast); } + { $$.ast = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_EVAL, $3.ast); } | T_REQUIRE expr - { $$.ast = zend_ast_create_ex(1, ZEND_AST_INCLUDE_OR_EVAL, ZEND_REQUIRE, $2.ast); } + { $$.ast = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_REQUIRE, $2.ast); } | T_REQUIRE_ONCE expr - { $$.ast = zend_ast_create_ex(1, ZEND_AST_INCLUDE_OR_EVAL, ZEND_REQUIRE_ONCE, $2.ast); } + { $$.ast = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_REQUIRE_ONCE, $2.ast); } ; isset_variables: isset_variable { $$.ast = $1.ast; } | isset_variables ',' isset_variable - { $$.ast = zend_ast_create(2, ZEND_AST_AND, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_AND, $1.ast, $3.ast); } ; isset_variable: - expr { $$.ast = zend_ast_create(1, ZEND_AST_ISSET, $1.ast); } + expr { $$.ast = zend_ast_create(ZEND_AST_ISSET, $1.ast); } ; class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_CLASS_CONST, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CLASS_CONST, $1.ast, $3.ast); } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING - { $$.ast = zend_ast_create(2, ZEND_AST_CLASS_CONST, $1.ast, $3.ast); } + { $$.ast = zend_ast_create(ZEND_AST_CLASS_CONST, $1.ast, $3.ast); } ; class_name_scalar: class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS - { $$.ast = zend_ast_create(1, ZEND_AST_RESOLVE_CLASS_NAME, $1.ast); } + { $$.ast = zend_ast_create(ZEND_AST_RESOLVE_CLASS_NAME, $1.ast); } ; %% |