diff options
author | Márcio Almada <marcio3w@gmail.com> | 2015-04-05 08:50:35 -0300 |
---|---|---|
committer | Márcio Almada <marcio3w@gmail.com> | 2015-04-30 03:03:29 -0300 |
commit | 110759386e2f9b4d88bf68c669b6c54ad4b5c04f (patch) | |
tree | c0dc58e312c77662a5f6e10941408560a4b440ac /Zend/zend_language_parser.y | |
parent | 02a9eb4f8c736089808b51d862def0e648383e09 (diff) | |
download | php-git-110759386e2f9b4d88bf68c669b6c54ad4b5c04f.tar.gz |
ext tokenizer port + cleanup unused lexer states
we basically added a mechanism to store the token stream during parsing
and exposed the entire parser stack on the tokenizer extension through
an opt in flag: token_get_all($src, TOKEN_PARSE).
this change allows easy future language enhancements regarding context
aware parsing & scanning without further maintance on the tokenizer
extension while solves known inconsistencies "parseless" tokenizer
extension has when it handles `__halt_compiler()` presence.
Diffstat (limited to 'Zend/zend_language_parser.y')
-rw-r--r-- | Zend/zend_language_parser.y | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index cefcd0cad9..f6318ec0c0 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -35,7 +35,7 @@ #include "zend_globals.h" #include "zend_API.h" #include "zend_constants.h" -#include "zend_language_scanner_defs.h" +#include "zend_language_scanner.h" #define YYSIZE_T size_t #define yytnamerr zend_yytnamerr @@ -49,12 +49,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); #define YYFREE free #endif -#define REWIND { \ - zend_stack_push(&LANG_SCNG(state_stack), (void *) &LANG_SCNG(yy_state)); \ - LANG_SCNG(yy_state) = yycST_LOOKING_FOR_SEMI_RESERVED_NAME; \ - LANG_SCNG(yy_cursor) = (unsigned char*)LANG_SCNG(yy_text); \ - LANG_SCNG(yy_leng) = 0; } - %} %pure_parser @@ -290,7 +284,11 @@ semi_reserved: identifier: T_STRING { $$ = $1; } - | /* if */ semi_reserved { REWIND } /* and rematch as */ T_STRING { $$ = $3; } + | semi_reserved { + zval zv; + zend_lex_tstring(&zv); + $$ = zend_ast_create_zval(&zv); + } ; top_statement_list: |