diff options
author | Nikita Popov <nikic@php.net> | 2014-07-27 12:37:28 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2014-07-27 12:37:28 +0200 |
commit | a74515e2406ce2d9ca85593d38d0abab4a00c038 (patch) | |
tree | 1a516b9908ee94404f8e40668c7fe4463a260a7a /Zend/zend_language_parser.y | |
parent | 0b86b1c8e518e844c29b2d584c39b457126af60e (diff) | |
download | php-git-a74515e2406ce2d9ca85593d38d0abab4a00c038.tar.gz |
Separate class type and start lineno
Diffstat (limited to 'Zend/zend_language_parser.y')
-rw-r--r-- | Zend/zend_language_parser.y | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index a2a17cf813..884b18c7b7 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -400,30 +400,29 @@ is_variadic: ; class_declaration_statement: - class_entry_type T_STRING extends_from implements_list + class_type + { $$.EA = CG(zend_lineno); } + T_STRING extends_from implements_list { $$.u.op.ptr = CG(doc_comment); CG(doc_comment) = NULL; } '{' class_statement_list '}' - { $$.u.ast = zend_ast_create_decl(ZEND_AST_CLASS, $1.EA, $1.u.op.opline_num, - CG(zend_lineno), LANG_SCNG(yy_text), $5.u.op.ptr, - zend_ast_get_str($2.u.ast), $3.u.ast, $4.u.ast, $7.u.ast); } - | interface_entry T_STRING interface_extends_list + { $$.u.ast = zend_ast_create_decl(ZEND_AST_CLASS, $1.EA, $2.EA, + CG(zend_lineno), LANG_SCNG(yy_text), $6.u.op.ptr, + zend_ast_get_str($3.u.ast), $4.u.ast, $5.u.ast, $8.u.ast); } + | T_INTERFACE + { $$.EA = CG(zend_lineno); } + T_STRING interface_extends_list { $$.u.op.ptr = CG(doc_comment); CG(doc_comment) = NULL; } '{' class_statement_list '}' - { $$.u.ast = zend_ast_create_decl(ZEND_AST_CLASS, $1.EA, $1.u.op.opline_num, - CG(zend_lineno), LANG_SCNG(yy_text), $4.u.op.ptr, - zend_ast_get_str($2.u.ast), NULL, $3.u.ast, $6.u.ast); } -; - - -class_entry_type: - T_CLASS { $$.u.op.opline_num = CG(zend_lineno); $$.EA = 0; } - | T_ABSTRACT T_CLASS { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; } - | T_TRAIT { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_TRAIT; } - | T_FINAL T_CLASS { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_FINAL_CLASS; } + { $$.u.ast = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_INTERFACE, $2.EA, + CG(zend_lineno), LANG_SCNG(yy_text), $5.u.op.ptr, + zend_ast_get_str($3.u.ast), NULL, $4.u.ast, $7.u.ast); } ; -interface_entry: - T_INTERFACE { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_INTERFACE; } +class_type: + T_CLASS { $$.EA = 0; } + | T_ABSTRACT T_CLASS { $$.EA = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; } + | T_FINAL T_CLASS { $$.EA = ZEND_ACC_FINAL_CLASS; } + | T_TRAIT { $$.EA = ZEND_ACC_TRAIT; } ; extends_from: |