From 9bca44df220878fb8659ecb5914b4885e34c8209 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 24 May 2007 08:56:35 +0000 Subject: [PATCH] Impoved error reporting on parser errors (Matt, Dmitry) --- Zend/zend_language_scanner.l | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 351d3b137f..cc7eb42d44 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1648,14 +1648,17 @@ HEREDOC_CHARS ("{"*([^$\n\r\\{]|("\\"[^\n\r]))|{HEREDOC_LITERAL_DOLLAR}|({ return ']'; } -{TOKENS}|[{}] { +{TOKENS}|[{}"`] { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -[ \n\r\t'"`\\#] { +[ \n\r\t\\'#] { + /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); yy_pop_state(TSRMLS_C); + ZVAL_EMPTY_STRING(zendlval); /* Empty since it won't be used */ + return T_ENCAPSED_AND_WHITESPACE; } {LABEL} { @@ -1935,8 +1938,8 @@ HEREDOC_CHARS ("{"*([^$\n\r\\{]|("\\"[^\n\r]))|{HEREDOC_LITERAL_DOLLAR}|({ zend_scan_escape_string(zendlval, yytext, len, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } else { - /* Go back to end of label, so there's something to match again in case - * there's a variable at the beginning of the next line */ + /* Go back to end of label, so the next match works correctly in case of + * a variable or another label at the beginning of the next line */ yyless(yyleng - 1); yymore(); } -- 2.50.1