summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c23
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);
}