diff options
Diffstat (limited to 'Zend/zend_compile.c')
| -rw-r--r-- | Zend/zend_compile.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 873b963a15..ed90929249 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1690,16 +1690,25 @@ again: ZVAL_UNDEF(&zv); start_lineno = CG(zend_lineno); retval = lex_scan(&zv); + if (EG(exception)) { + return T_ERROR; + } - if (retval >= T_WHITESPACE) { - if (EXPECTED(retval < T_OPEN_TAG_WITH_ECHO)) { + switch (retval) { + case T_COMMENT: + case T_DOC_COMMENT: + case T_OPEN_TAG: + case T_WHITESPACE: goto again; - } else if (retval == T_OPEN_TAG_WITH_ECHO) { - retval = T_ECHO; - } else if (retval == T_CLOSE_TAG) { + + case T_CLOSE_TAG: retval = ';'; /* implicit ; */ - } - } else if (Z_TYPE(zv) != IS_UNDEF) { + break; + case T_OPEN_TAG_WITH_ECHO: + retval = T_ECHO; + break; + } + if (Z_TYPE(zv) != IS_UNDEF) { elem->ast = zend_ast_create_zval_with_lineno(&zv, 0, start_lineno); } |
