]> granicus.if.org Git - php/commitdiff
- Improved parse error messages
authorFelipe Pena <felipe@php.net>
Thu, 23 Jun 2011 23:00:53 +0000 (23:00 +0000)
committerFelipe Pena <felipe@php.net>
Thu, 23 Jun 2011 23:00:53 +0000 (23:00 +0000)
NEWS
Zend/tests/bug48693.phpt
Zend/tests/function_arguments_001.phpt
Zend/zend_globals.h
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h
main/main.c

diff --git a/NEWS b/NEWS
index 49e029237b225241ae02aa5ed70ea33670f9c160..17e06ed4eebeadfa8672d173b0d0311a1c868cbf 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -91,6 +91,7 @@ PHP                                                                        NEWS
   . Changed $GLOBALS into a JIT autoglobal, so it's initialized only if used.
     (this may affect opcode caches!)
   . Improved performance of @ (silence) operator.
+  . Improved parse error messages. (Felipe)
   . Simplified string offset reading. $str[1][0] is now a legal construct.
   . Added caches to eliminate repeatable run-time bindings of functions,
     classes, constants, methods and properties.
index e5743460290fb439b22ad1f8117888fd41f2c1bc..7eabe00542e0c8859252ae64cde3f7a6fedf942a 100644 (file)
@@ -20,7 +20,7 @@ var_dump(
 --EXPECTF--
 Parse error: syntax error, unexpected '}' in %s(%d) : runtime-created function on line 1
 
-Parse error: syntax error, unexpected $end in %s(%d) : runtime-created function on line 1
+Parse error: syntax error, unexpected end of file in %s(%d) : runtime-created function on line 1
 bool(false)
 int(2)
 bool(false)
index bf0cd4a206d2882ef86ace27f01569ff03dd7491..747bd25766003c06605dd75c030e34cf20271032 100644 (file)
@@ -5,5 +5,5 @@ Argument parsing error #001
 function foo($arg1 string) {}
 ?>
 --EXPECTF--
-Parse error: syntax error, unexpected T_STRING, expecting ')' in %sfunction_arguments_001.php on line %d
+Parse error: syntax error, unexpected 'string' (T_STRING), expecting ')' in %sfunction_arguments_001.php on line %d
 
index b88fe83604e88067b8d843fe6ad38a674ef3c783..7a89a0e960ef37c3b8030a4ac5b7a9f88b0d7f7b 100644 (file)
@@ -101,6 +101,7 @@ struct _zend_compiler_globals {
 
        HashTable *auto_globals;
 
+       zend_bool parse_error;
        zend_bool in_compilation;
        zend_bool short_tags;
        zend_bool asp_tags;
index e3d079c5519404a0032eca14bf7838bc157d08fb..e6f49a1595f91bc49066abf219ac64c603776181 100644 (file)
@@ -35,6 +35,9 @@
 #include "zend_API.h"
 #include "zend_constants.h"
 
+#define YYSIZE_T size_t
+#define yytnamerr zend_yytnamerr
+static YYSIZE_T zend_yytnamerr(char*, const char*);
 
 #define YYERROR_VERBOSE
 #define YYSTYPE znode
 %pure_parser
 %expect 2
 
+%token END 0 "end of file"
 %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
+%token T_INCLUDE      "include (T_INCLUDE)"
+%token T_INCLUDE_ONCE "include_once (T_INCLUDE_ONCE)"
+%token T_EVAL         "eval (T_EVAL)"
+%token T_REQUIRE      "require (T_REQUIRE)"
+%token T_REQUIRE_ONCE "require_once (T_REQUIRE_ONCE)"
 %left ','
 %left T_LOGICAL_OR
+%token T_LOGICAL_OR   "or (T_LOGICAL_OR)"
 %left T_LOGICAL_XOR
+%token T_LOGICAL_XOR  "xor (T_LOGICAL_XOR)"
 %left T_LOGICAL_AND
+%token T_LOGICAL_AND  "and (T_LOGICAL_AND)"
 %right T_PRINT
+%token T_PRINT        "print (T_PRINT)"
 %left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL
+%token T_PLUS_EQUAL   "+= (T_PLUS_EQUAL)"
+%token T_MINUS_EQUAL  "-= (T_MINUS_EQUAL)"
+%token T_MUL_EQUAL    "*= (T_MUL_EQUAL)"
+%token T_DIV_EQUAL    "/= (T_DIV_EQUAL)"
+%token T_CONCAT_EQUAL ".= (T_CONCAT_EQUAL)"
+%token T_MOD_EQUAL    "%= (T_MOD_EQUAL)"
+%token T_AND_EQUAL    "&= (T_AND_EQUAL)"
+%token T_OR_EQUAL     "|= (T_OR_EQUAL)"
+%token T_XOR_EQUAL    "^= (T_XOR_EQUAL)"
+%token T_SL_EQUAL     "<<= (T_SL_EQUAL)"
+%token T_SR_EQUAL     ">>= (T_SR_EQUAL)"
 %left '?' ':'
 %left T_BOOLEAN_OR
-%left T_BOOLEAN_AND
+%token T_BOOLEAN_OR   "|| (T_BOOLEAN_OR)"
+%left T_BOOLEAN_AND 
+%token T_BOOLEAN_AND  "&& (T_BOOLEAN_AND)"
 %left '|'
 %left '^'
 %left '&'
 %nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL
+%token T_IS_EQUAL     "== (T_IS_EQUAL)"
+%token T_IS_NOT_EQUAL "!= (T_IS_NOT_EQUAL)"
+%token T_IS_IDENTICAL "=== (T_IS_IDENTICAL)"
+%token T_IS_NOT_IDENTICAL "!== (T_IS_NOT_IDENTICAL)"
 %nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
+%token T_IS_SMALLER_OR_EQUAL "<= (T_IS_SMALLER_OR_EQUAL)"
+%token T_IS_GREATER_OR_EQUAL ">= (T_IS_GREATER_OR_EQUAL)"
 %left T_SL T_SR
+%token T_SL "<< (T_SL)"
+%token T_SR ">> (T_SR)"
 %left '+' '-' '.'
 %left '*' '/' '%'
 %right '!'
 %nonassoc T_INSTANCEOF
+%token T_INSTANCEOF  "instanceof (T_INSTANCEOF)"
 %right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
+%token T_INC "++ (T_INC)"
+%token T_DEC "-- (T_DEC)"
+%token T_INT_CAST    "(int) (T_INT_CAST)"
+%token T_SCALAR_CAST "(scalar) (T_SCALAR_CAST)"
+%token T_DOUBLE_CAST "(double) (T_DOUBLE_CAST)"
+%token T_STRING_CAST "(string) (T_STRING_CAST)"
+%token T_ARRAY_CAST  "(array) (T_ARRAY_CAST)"
+%token T_OBJECT_CAST "(object) (T_OBJECT_CAST)"
+%token T_BOOL_CAST   "(bool) (T_BOOL_CAST)"
+%token T_UNSET_CAST  "(unset) (T_UNSET_CAST)"
 %right '['
 %nonassoc T_NEW T_CLONE
-%token T_EXIT
-%token T_IF
+%token T_NEW       "new (T_NEW)"
+%token T_CLONE     "clone (T_CLONE)"
+%token T_EXIT      "exit (T_EXIT)"
+%token T_IF        "if (T_IF)"
 %left T_ELSEIF
-%left T_ELSE
-%left T_ENDIF
-%token T_LNUMBER
-%token T_DNUMBER
-%token T_STRING
-%token T_STRING_VARNAME
-%token T_VARIABLE
-%token T_NUM_STRING
+%token T_ELSEIF    "elseif (T_ELSEIF)"
+%left T_ELSE 
+%token T_ELSE      "else (T_ELSE)"
+%left T_ENDIF 
+%token T_ENDIF     "endif (T_ENDIF)"
+%token T_LNUMBER   "integer number (T_LNUMBER)"
+%token T_DNUMBER   "floating-point number (T_DNUMBER)"
+%token T_STRING    "identifier (T_STRING)"
+%token T_STRING_VARNAME "variable name (T_STRING_VARNAME)"
+%token T_VARIABLE  "variable (T_VARIABLE)"
+%token T_NUM_STRING "number (T_NUM_STRING)"
 %token T_INLINE_HTML
 %token T_CHARACTER
 %token T_BAD_CHARACTER
-%token T_ENCAPSED_AND_WHITESPACE
-%token T_CONSTANT_ENCAPSED_STRING
-%token T_ECHO
-%token T_DO
-%token T_WHILE
-%token T_ENDWHILE
-%token T_FOR
-%token T_ENDFOR
-%token T_FOREACH
-%token T_ENDFOREACH
-%token T_DECLARE
-%token T_ENDDECLARE
-%token T_AS
-%token T_SWITCH
-%token T_ENDSWITCH
-%token T_CASE
-%token T_DEFAULT
-%token T_BREAK
-%token T_CONTINUE
-%token T_GOTO
-%token T_FUNCTION
-%token T_CONST
-%token T_RETURN
-%token T_TRY
-%token T_CATCH
-%token T_THROW
-%token T_USE
-%token T_INSTEADOF
-%token T_GLOBAL
+%token T_ENCAPSED_AND_WHITESPACE  "quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)"
+%token T_CONSTANT_ENCAPSED_STRING "quoted-string (T_CONSTANT_ENCAPSED_STRING)"
+%token T_ECHO       "echo (T_ECHO)"
+%token T_DO         "do (T_DO)"
+%token T_WHILE      "while (T_WHILE)"
+%token T_ENDWHILE   "endwhile (T_ENDWHILE)"
+%token T_FOR        "for (T_FOR)"
+%token T_ENDFOR     "endfor (T_ENDFOR)"
+%token T_FOREACH    "foreach (T_FOREACH)"
+%token T_ENDFOREACH "endforeach (T_ENDFOREACH)"
+%token T_DECLARE    "declare (T_DECLARE)"
+%token T_ENDDECLARE "enddeclare (T_ENDDECLARE)"
+%token T_AS         "as (T_AS)"
+%token T_SWITCH     "switch (T_SWITCH)"
+%token T_ENDSWITCH  "endswitch (T_ENDSWITCH)"
+%token T_CASE       "case (T_CASE)"
+%token T_DEFAULT    "default (T_DEFAULT)"
+%token T_BREAK      "break (T_BREAK)"
+%token T_CONTINUE   "continue (T_CONTINUE)"
+%token T_GOTO       "goto (T_GOTO)"
+%token T_FUNCTION   "function (T_FUNCTION)"
+%token T_CONST      "const (T_CONST)"
+%token T_RETURN     "return (T_RETURN)"
+%token T_TRY        "try (T_TRY)"
+%token T_CATCH      "catch (T_CATCH)"
+%token T_THROW      "throw (T_THROW)"
+%token T_USE        "use (T_USE)"
+%token T_INSTEADOF  "insteadof (T_INSTEADOF)"
+%token T_GLOBAL     "global (T_GLOBAL)"
 %right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
-%token T_VAR
-%token T_UNSET
-%token T_ISSET
-%token T_EMPTY
-%token T_HALT_COMPILER
-%token T_CLASS
-%token T_TRAIT
-%token T_INTERFACE
-%token T_EXTENDS
-%token T_IMPLEMENTS
-%token T_OBJECT_OPERATOR
-%token T_DOUBLE_ARROW
-%token T_LIST
-%token T_ARRAY
-%token T_CLASS_C
-%token T_METHOD_C
-%token T_FUNC_C
-%token T_LINE
-%token T_FILE
-%token T_COMMENT
-%token T_DOC_COMMENT
-%token T_OPEN_TAG
-%token T_OPEN_TAG_WITH_ECHO
-%token T_CLOSE_TAG
-%token T_WHITESPACE
-%token T_START_HEREDOC
-%token T_END_HEREDOC
-%token T_DOLLAR_OPEN_CURLY_BRACES
-%token T_CURLY_OPEN
-%token T_PAAMAYIM_NEKUDOTAYIM
-%token T_NAMESPACE
-%token T_NS_C
-%token T_DIR
-%token T_NS_SEPARATOR
+%token T_STATIC     "static (T_STATIC)"
+%token T_ABSTRACT   "abstract (T_ABSTRACT)"
+%token T_FINAL      "final (T_FINAL)"
+%token T_PRIVATE    "private (T_PRIVATE)"
+%token T_PROTECTED  "protected (T_PROTECTED)"
+%token T_PUBLIC     "public (T_PUBLIC)"
+%token T_VAR        "var (T_VAR)"
+%token T_UNSET      "unset (T_UNSET)"
+%token T_ISSET      "isset (T_ISSET)"
+%token T_EMPTY      "empty (T_EMPTY)"
+%token T_HALT_COMPILER "__halt_compiler (T_HALT_COMPILER)"
+%token T_CLASS      "class (T_CLASS)"
+%token T_TRAIT      "trait (T_TRAIT)"
+%token T_INTERFACE  "interface (T_INTERFACE)"
+%token T_EXTENDS    "extends (T_EXTENDS)"
+%token T_IMPLEMENTS "implements (T_IMPLEMENTS)"
+%token T_OBJECT_OPERATOR "-> (T_OBJECT_OPERATOR)"
+%token T_DOUBLE_ARROW    "=> (T_DOUBLE_ARROW)"
+%token T_LIST            "list (T_LIST)"
+%token T_ARRAY           "array (T_ARRAY)"
+%token T_CLASS_C         "__CLASS__ (T_CLASS_C)"
+%token T_METHOD_C        "__METHOD__ (T_METHOD_C)"
+%token T_FUNC_C          "__FUNCTION__ (T_FUNC_C)"
+%token T_LINE            "__LINE__ (T_LINE)"
+%token T_FILE            "__FILE__ (T_FILE)"
+%token T_COMMENT         "comment (T_COMMENT)"
+%token T_DOC_COMMENT     "doc comment (T_DOC_COMMENT)"
+%token T_OPEN_TAG        "open tag (T_OPEN_TAG)"
+%token T_OPEN_TAG_WITH_ECHO "open tag with echo (T_OPEN_TAG_WITH_ECHO)"
+%token T_CLOSE_TAG       "close tag (T_CLOSE_TAG)"
+%token T_WHITESPACE      "whitespace (T_WHITESPACE)"
+%token T_START_HEREDOC   "heredoc start (T_START_HEREDOC)"
+%token T_END_HEREDOC     "heredoc end (T_END_HEREDOC)"
+%token T_DOLLAR_OPEN_CURLY_BRACES "${ (T_DOLLAR_OPEN_CURLY_BRACES)"
+%token T_CURLY_OPEN      "{$ (T_CURLY_OPEN)"
+%token T_PAAMAYIM_NEKUDOTAYIM ":: (T_PAAMAYIM_NEKUDOTAYIM)"
+%token T_NAMESPACE       "namespace (T_NAMESPACE)"
+%token T_NS_C            "__NAMESPACE__ (T_NS_C)"
+%token T_DIR             "__DIR__ (T_DIR)"
+%token T_NS_SEPARATOR    "\\ (T_NS_SEPARATOR)"
 
 %% /* Rules */
 
@@ -1079,6 +1135,70 @@ class_constant:
 
 %%
 
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T zend_yytnamerr(char *yyres, const char *yystr)
+{
+       if (!yyres) {
+               return yystrlen(yystr);
+       }
+       {
+               TSRMLS_FETCH();
+               if (CG(parse_error) == 0) {
+                       char buffer[120], *end, *str, *tok1 = NULL, *tok2 = NULL;
+                       unsigned int len = 0, toklen = 0, yystr_len;
+                       
+                       CG(parse_error) = 1;
+
+                       if (LANG_SCNG(yy_text)[0] == 0 &&
+                               LANG_SCNG(yy_leng) == 1 &&
+                               memcmp(yystr, ZEND_STRL("\"end of file\"")) == 0) {
+                               return yystpcpy(yyres, "end of file") - yyres;
+                       }
+                       
+                       str = LANG_SCNG(yy_text);
+                       end = memchr(str, '\n', LANG_SCNG(yy_leng));
+                       yystr_len = yystrlen(yystr);
+                       
+                       if ((tok1 = memchr(yystr, '(', yystr_len)) != NULL
+                               && (tok2 = zend_memrchr(yystr, ')', yystr_len)) != NULL) {
+                               toklen = (tok2 - tok1) + 1;
+                       } else {
+                               tok1 = tok2 = NULL;
+                               toklen = 0;
+                       }
+                       
+                       if (end == NULL) {
+                               len = LANG_SCNG(yy_leng) > 30 ? 30 : LANG_SCNG(yy_leng);
+                       } else {
+                               len = (end - str) > 30 ? 30 : (end - str);
+                       }
+                       if (toklen) {
+                               snprintf(buffer, sizeof(buffer), "'%.*s' %.*s", len, str, toklen, tok1);
+                       } else {
+                               snprintf(buffer, sizeof(buffer), "'%.*s'", len, str);
+                       }
+                       return yystpcpy(yyres, buffer) - yyres;
+               }               
+       }       
+       if (*yystr == '"') {
+               YYSIZE_T yyn = 0;
+               const char *yyp = yystr;
+
+               for (; *++yyp != '"'; ++yyn) {
+                       yyres[yyn] = *yyp;
+               }
+               yyres[yyn] = '\0';
+               return yyn;
+       }
+       return yystpcpy(yyres, yystr) - yyres;
+}
+
 /*
  * Local variables:
  * tab-width: 4
index 8de4c438da8b78d2680fccd1df5a238551ae3648..9b7ddd3c10b956186a7daefa2d3e6fb936e0b869 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Jun  2 17:34:19 2011 */
+/* Generated by re2c 0.13.5 on Thu Jun 23 19:47:38 2011 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -176,6 +176,7 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
 
 void startup_scanner(TSRMLS_D)
 {
+       CG(parse_error) = 0;
        CG(heredoc) = NULL;
        CG(heredoc_len) = 0;
        CG(doc_comment) = NULL;
@@ -189,6 +190,7 @@ void shutdown_scanner(TSRMLS_D)
                efree(CG(heredoc));
                CG(heredoc_len)=0;
        }
+       CG(parse_error) = 0;
        zend_stack_destroy(&SCNG(state_stack));
        RESET_DOC_COMMENT();
 }
@@ -982,7 +984,7 @@ restart:
 yymore_restart:
 
 
-#line 986 "Zend/zend_language_scanner.c"
+#line 988 "Zend/zend_language_scanner.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1081,7 +1083,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1710 "Zend/zend_language_scanner.l"
+#line 1712 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1141,7 +1143,7 @@ inline_html:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_INLINE_HTML;
 }
-#line 1145 "Zend/zend_language_scanner.c"
+#line 1147 "Zend/zend_language_scanner.c"
 yy4:
                YYDEBUG(4, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1159,7 +1161,7 @@ yy5:
 yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1698 "Zend/zend_language_scanner.l"
+#line 1700 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1171,14 +1173,14 @@ yy6:
                goto inline_char_handler;
        }
 }
-#line 1175 "Zend/zend_language_scanner.c"
+#line 1177 "Zend/zend_language_scanner.c"
 yy7:
                YYDEBUG(7, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1675 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1190,7 +1192,7 @@ yy7:
                goto inline_char_handler;
        }
 }
-#line 1194 "Zend/zend_language_scanner.c"
+#line 1196 "Zend/zend_language_scanner.c"
 yy9:
                YYDEBUG(9, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1376,7 +1378,7 @@ yy35:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1635 "Zend/zend_language_scanner.l"
+#line 1637 "Zend/zend_language_scanner.l"
                {
        YYCTYPE *bracket = zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
 
@@ -1393,7 +1395,7 @@ yy35:
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG;
 }
-#line 1397 "Zend/zend_language_scanner.c"
+#line 1399 "Zend/zend_language_scanner.c"
 yy39:
                YYDEBUG(39, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1420,7 +1422,7 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1653 "Zend/zend_language_scanner.l"
+#line 1655 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1432,13 +1434,13 @@ yy43:
                goto inline_char_handler;
        }
 }
-#line 1436 "Zend/zend_language_scanner.c"
+#line 1438 "Zend/zend_language_scanner.c"
 yy45:
                YYDEBUG(45, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1666 "Zend/zend_language_scanner.l"
+#line 1668 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -1446,7 +1448,7 @@ yy45:
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG_WITH_ECHO;
 }
-#line 1450 "Zend/zend_language_scanner.c"
+#line 1452 "Zend/zend_language_scanner.c"
 yy47:
                YYDEBUG(47, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1473,7 +1475,7 @@ yy50:
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1688 "Zend/zend_language_scanner.l"
+#line 1690 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -1482,7 +1484,7 @@ yy51:
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG;
 }
-#line 1486 "Zend/zend_language_scanner.c"
+#line 1488 "Zend/zend_language_scanner.c"
 yy52:
                YYDEBUG(52, *YYCURSOR);
                ++YYCURSOR;
@@ -1553,7 +1555,7 @@ yyc_ST_BACKQUOTE:
 yy56:
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2161 "Zend/zend_language_scanner.l"
+#line 2163 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1594,7 +1596,7 @@ yy56:
        zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1598 "Zend/zend_language_scanner.c"
+#line 1600 "Zend/zend_language_scanner.c"
 yy57:
                YYDEBUG(57, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1605,12 +1607,12 @@ yy58:
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2105 "Zend/zend_language_scanner.l"
+#line 2107 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
 }
-#line 1614 "Zend/zend_language_scanner.c"
+#line 1616 "Zend/zend_language_scanner.c"
 yy60:
                YYDEBUG(60, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1620,14 +1622,14 @@ yy61:
                ++YYCURSOR;
                YYDEBUG(62, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2092 "Zend/zend_language_scanner.l"
+#line 2094 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1631 "Zend/zend_language_scanner.c"
+#line 1633 "Zend/zend_language_scanner.c"
 yy63:
                YYDEBUG(63, *YYCURSOR);
                yyaccept = 0;
@@ -1643,24 +1645,24 @@ yy63:
 yy65:
                YYDEBUG(65, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1794 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 1653 "Zend/zend_language_scanner.c"
+#line 1655 "Zend/zend_language_scanner.c"
 yy66:
                YYDEBUG(66, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1428 "Zend/zend_language_scanner.l"
+#line 1430 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1664 "Zend/zend_language_scanner.c"
+#line 1666 "Zend/zend_language_scanner.c"
 yy68:
                YYDEBUG(68, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1674,7 +1676,7 @@ yy70:
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1784 "Zend/zend_language_scanner.l"
+#line 1786 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1682,7 +1684,7 @@ yy70:
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 1686 "Zend/zend_language_scanner.c"
+#line 1688 "Zend/zend_language_scanner.c"
 yy72:
                YYDEBUG(72, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1700,7 +1702,7 @@ yy73:
                ++YYCURSOR;
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1774 "Zend/zend_language_scanner.l"
+#line 1776 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1708,7 +1710,7 @@ yy73:
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 1712 "Zend/zend_language_scanner.c"
+#line 1714 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
@@ -1776,7 +1778,7 @@ yy77:
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2111 "Zend/zend_language_scanner.l"
+#line 2113 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1825,7 +1827,7 @@ double_quotes_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1829 "Zend/zend_language_scanner.c"
+#line 1831 "Zend/zend_language_scanner.c"
 yy79:
                YYDEBUG(79, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1836,12 +1838,12 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2100 "Zend/zend_language_scanner.l"
+#line 2102 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
 }
-#line 1845 "Zend/zend_language_scanner.c"
+#line 1847 "Zend/zend_language_scanner.c"
 yy82:
                YYDEBUG(82, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1851,14 +1853,14 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2092 "Zend/zend_language_scanner.l"
+#line 2094 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1862 "Zend/zend_language_scanner.c"
+#line 1864 "Zend/zend_language_scanner.c"
 yy85:
                YYDEBUG(85, *YYCURSOR);
                yyaccept = 0;
@@ -1874,24 +1876,24 @@ yy85:
 yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1794 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 1884 "Zend/zend_language_scanner.c"
+#line 1886 "Zend/zend_language_scanner.c"
 yy88:
                YYDEBUG(88, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(89, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1428 "Zend/zend_language_scanner.l"
+#line 1430 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1895 "Zend/zend_language_scanner.c"
+#line 1897 "Zend/zend_language_scanner.c"
 yy90:
                YYDEBUG(90, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1905,7 +1907,7 @@ yy92:
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1784 "Zend/zend_language_scanner.l"
+#line 1786 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1913,7 +1915,7 @@ yy92:
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 1917 "Zend/zend_language_scanner.c"
+#line 1919 "Zend/zend_language_scanner.c"
 yy94:
                YYDEBUG(94, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1931,7 +1933,7 @@ yy95:
                ++YYCURSOR;
                YYDEBUG(96, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1774 "Zend/zend_language_scanner.l"
+#line 1776 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1939,7 +1941,7 @@ yy95:
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 1943 "Zend/zend_language_scanner.c"
+#line 1945 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_END_HEREDOC:
@@ -1950,7 +1952,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(100, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2079 "Zend/zend_language_scanner.l"
+#line 2081 "Zend/zend_language_scanner.l"
        {
        YYCURSOR += CG(heredoc_len) - 1;
        yyleng = CG(heredoc_len);
@@ -1962,7 +1964,7 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        return T_END_HEREDOC;
 }
-#line 1966 "Zend/zend_language_scanner.c"
+#line 1968 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
@@ -2024,7 +2026,7 @@ yy103:
 yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2203 "Zend/zend_language_scanner.l"
+#line 2205 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -2095,7 +2097,7 @@ heredoc_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 2099 "Zend/zend_language_scanner.c"
+#line 2101 "Zend/zend_language_scanner.c"
 yy105:
                YYDEBUG(105, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2110,14 +2112,14 @@ yy107:
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2092 "Zend/zend_language_scanner.l"
+#line 2094 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 2121 "Zend/zend_language_scanner.c"
+#line 2123 "Zend/zend_language_scanner.c"
 yy109:
                YYDEBUG(109, *YYCURSOR);
                yyaccept = 0;
@@ -2133,24 +2135,24 @@ yy109:
 yy111:
                YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1794 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 2143 "Zend/zend_language_scanner.c"
+#line 2145 "Zend/zend_language_scanner.c"
 yy112:
                YYDEBUG(112, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(113, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1428 "Zend/zend_language_scanner.l"
+#line 1430 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 2154 "Zend/zend_language_scanner.c"
+#line 2156 "Zend/zend_language_scanner.c"
 yy114:
                YYDEBUG(114, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2164,7 +2166,7 @@ yy116:
                ++YYCURSOR;
                YYDEBUG(117, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1784 "Zend/zend_language_scanner.l"
+#line 1786 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -2172,7 +2174,7 @@ yy116:
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 2176 "Zend/zend_language_scanner.c"
+#line 2178 "Zend/zend_language_scanner.c"
 yy118:
                YYDEBUG(118, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2190,7 +2192,7 @@ yy119:
                ++YYCURSOR;
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1774 "Zend/zend_language_scanner.l"
+#line 1776 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -2198,7 +2200,7 @@ yy119:
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 2202 "Zend/zend_language_scanner.c"
+#line 2204 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
@@ -2379,13 +2381,13 @@ yy123:
 yy124:
                YYDEBUG(124, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1815 "Zend/zend_language_scanner.l"
+#line 1817 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 2389 "Zend/zend_language_scanner.c"
+#line 2391 "Zend/zend_language_scanner.c"
 yy125:
                YYDEBUG(125, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2611,11 +2613,11 @@ yy137:
 yy138:
                YYDEBUG(138, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1417 "Zend/zend_language_scanner.l"
+#line 1419 "Zend/zend_language_scanner.l"
                {
        return yytext[0];
 }
-#line 2619 "Zend/zend_language_scanner.c"
+#line 2621 "Zend/zend_language_scanner.c"
 yy139:
                YYDEBUG(139, *YYCURSOR);
                ++YYCURSOR;
@@ -2624,7 +2626,7 @@ yy139:
 yy140:
                YYDEBUG(140, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1152 "Zend/zend_language_scanner.l"
+#line 1154 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -2632,7 +2634,7 @@ yy140:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 2636 "Zend/zend_language_scanner.c"
+#line 2638 "Zend/zend_language_scanner.c"
 yy141:
                YYDEBUG(141, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2643,11 +2645,11 @@ yy142:
                ++YYCURSOR;
                YYDEBUG(143, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1181 "Zend/zend_language_scanner.l"
+#line 1183 "Zend/zend_language_scanner.l"
                {
        return T_NS_SEPARATOR;
 }
-#line 2651 "Zend/zend_language_scanner.c"
+#line 2653 "Zend/zend_language_scanner.c"
 yy144:
                YYDEBUG(144, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2875,18 +2877,18 @@ yy167:
                ++YYCURSOR;
                YYDEBUG(168, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1422 "Zend/zend_language_scanner.l"
+#line 1424 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return '{';
 }
-#line 2884 "Zend/zend_language_scanner.c"
+#line 2886 "Zend/zend_language_scanner.c"
 yy169:
                YYDEBUG(169, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(170, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1434 "Zend/zend_language_scanner.l"
+#line 1436 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -2894,7 +2896,7 @@ yy169:
        }
        return '}';
 }
-#line 2898 "Zend/zend_language_scanner.c"
+#line 2900 "Zend/zend_language_scanner.c"
 yy171:
                YYDEBUG(171, *YYCURSOR);
                yyaccept = 2;
@@ -2917,7 +2919,7 @@ yy171:
 yy172:
                YYDEBUG(172, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1460 "Zend/zend_language_scanner.l"
+#line 1462 "Zend/zend_language_scanner.l"
                {
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
                zendlval->value.lval = strtol(yytext, NULL, 0);
@@ -2938,7 +2940,7 @@ yy172:
        zendlval->type = IS_LONG;
        return T_LNUMBER;
 }
-#line 2942 "Zend/zend_language_scanner.c"
+#line 2944 "Zend/zend_language_scanner.c"
 yy173:
                YYDEBUG(173, *YYCURSOR);
                yyaccept = 2;
@@ -2966,7 +2968,7 @@ yy175:
 yy176:
                YYDEBUG(176, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1822 "Zend/zend_language_scanner.l"
+#line 1824 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -3000,14 +3002,14 @@ yy176:
 
        return T_COMMENT;
 }
-#line 3004 "Zend/zend_language_scanner.c"
+#line 3006 "Zend/zend_language_scanner.c"
 yy177:
                YYDEBUG(177, *YYCURSOR);
                ++YYCURSOR;
 yy178:
                YYDEBUG(178, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1913 "Zend/zend_language_scanner.l"
+#line 1915 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -3075,14 +3077,14 @@ yy178:
        }
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 3079 "Zend/zend_language_scanner.c"
+#line 3081 "Zend/zend_language_scanner.c"
 yy179:
                YYDEBUG(179, *YYCURSOR);
                ++YYCURSOR;
 yy180:
                YYDEBUG(180, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1982 "Zend/zend_language_scanner.l"
+#line 1984 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -3123,24 +3125,24 @@ yy180:
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
 }
-#line 3127 "Zend/zend_language_scanner.c"
+#line 3129 "Zend/zend_language_scanner.c"
 yy181:
                YYDEBUG(181, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(182, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2073 "Zend/zend_language_scanner.l"
+#line 2075 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
 }
-#line 3138 "Zend/zend_language_scanner.c"
+#line 3140 "Zend/zend_language_scanner.c"
 yy183:
                YYDEBUG(183, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2331 "Zend/zend_language_scanner.l"
+#line 2333 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -3149,7 +3151,7 @@ yy183:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 3153 "Zend/zend_language_scanner.c"
+#line 3155 "Zend/zend_language_scanner.c"
 yy185:
                YYDEBUG(185, *YYCURSOR);
                ++YYCURSOR;
@@ -3176,13 +3178,13 @@ yy187:
 yy189:
                YYDEBUG(189, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1521 "Zend/zend_language_scanner.l"
+#line 1523 "Zend/zend_language_scanner.l"
                {
        zendlval->value.dval = zend_strtod(yytext, NULL);
        zendlval->type = IS_DOUBLE;
        return T_DNUMBER;
 }
-#line 3186 "Zend/zend_language_scanner.c"
+#line 3188 "Zend/zend_language_scanner.c"
 yy190:
                YYDEBUG(190, *YYCURSOR);
                yyaccept = 2;
@@ -3267,7 +3269,7 @@ yy198:
                }
                YYDEBUG(200, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1481 "Zend/zend_language_scanner.l"
+#line 1483 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -3288,7 +3290,7 @@ yy198:
                return T_DNUMBER;
        }
 }
-#line 3292 "Zend/zend_language_scanner.c"
+#line 3294 "Zend/zend_language_scanner.c"
 yy201:
                YYDEBUG(201, *YYCURSOR);
                ++YYCURSOR;
@@ -3297,7 +3299,7 @@ yy201:
 yy202:
                YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1890 "Zend/zend_language_scanner.l"
+#line 1892 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -3305,7 +3307,7 @@ yy202:
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 3309 "Zend/zend_language_scanner.c"
+#line 3311 "Zend/zend_language_scanner.c"
 yy203:
                YYDEBUG(203, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3339,13 +3341,13 @@ yy205:
 yy207:
                YYDEBUG(207, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1794 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 3349 "Zend/zend_language_scanner.c"
+#line 3351 "Zend/zend_language_scanner.c"
 yy208:
                YYDEBUG(208, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3359,11 +3361,11 @@ yy209:
                }
                YYDEBUG(210, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1405 "Zend/zend_language_scanner.l"
+#line 1407 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_XOR;
 }
-#line 3367 "Zend/zend_language_scanner.c"
+#line 3369 "Zend/zend_language_scanner.c"
 yy211:
                YYDEBUG(211, *YYCURSOR);
                ++YYCURSOR;
@@ -3372,61 +3374,61 @@ yy211:
                }
                YYDEBUG(212, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1397 "Zend/zend_language_scanner.l"
+#line 1399 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_OR;
 }
-#line 3380 "Zend/zend_language_scanner.c"
+#line 3382 "Zend/zend_language_scanner.c"
 yy213:
                YYDEBUG(213, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(214, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1385 "Zend/zend_language_scanner.l"
+#line 1387 "Zend/zend_language_scanner.l"
                {
        return T_XOR_EQUAL;
 }
-#line 3390 "Zend/zend_language_scanner.c"
+#line 3392 "Zend/zend_language_scanner.c"
 yy215:
                YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(216, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1389 "Zend/zend_language_scanner.l"
+#line 1391 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_OR;
 }
-#line 3400 "Zend/zend_language_scanner.c"
+#line 3402 "Zend/zend_language_scanner.c"
 yy217:
                YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(218, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1381 "Zend/zend_language_scanner.l"
+#line 1383 "Zend/zend_language_scanner.l"
                {
        return T_OR_EQUAL;
 }
-#line 3410 "Zend/zend_language_scanner.c"
+#line 3412 "Zend/zend_language_scanner.c"
 yy219:
                YYDEBUG(219, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(220, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1393 "Zend/zend_language_scanner.l"
+#line 1395 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_AND;
 }
-#line 3420 "Zend/zend_language_scanner.c"
+#line 3422 "Zend/zend_language_scanner.c"
 yy221:
                YYDEBUG(221, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(222, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1377 "Zend/zend_language_scanner.l"
+#line 1379 "Zend/zend_language_scanner.l"
                {
        return T_AND_EQUAL;
 }
-#line 3430 "Zend/zend_language_scanner.c"
+#line 3432 "Zend/zend_language_scanner.c"
 yy223:
                YYDEBUG(223, *YYCURSOR);
                ++YYCURSOR;
@@ -3435,7 +3437,7 @@ yy223:
 yy224:
                YYDEBUG(224, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1899 "Zend/zend_language_scanner.l"
+#line 1901 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -3448,17 +3450,17 @@ yy224:
                return yytext[0];
        }
 }
-#line 3452 "Zend/zend_language_scanner.c"
+#line 3454 "Zend/zend_language_scanner.c"
 yy225:
                YYDEBUG(225, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(226, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1365 "Zend/zend_language_scanner.l"
+#line 1367 "Zend/zend_language_scanner.l"
                {
        return T_MOD_EQUAL;
 }
-#line 3462 "Zend/zend_language_scanner.c"
+#line 3464 "Zend/zend_language_scanner.c"
 yy227:
                YYDEBUG(227, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3489,11 +3491,11 @@ yy231:
                ++YYCURSOR;
                YYDEBUG(232, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1361 "Zend/zend_language_scanner.l"
+#line 1363 "Zend/zend_language_scanner.l"
                {
        return T_CONCAT_EQUAL;
 }
-#line 3497 "Zend/zend_language_scanner.c"
+#line 3499 "Zend/zend_language_scanner.c"
 yy233:
                YYDEBUG(233, *YYCURSOR);
                yyaccept = 4;
@@ -3502,7 +3504,7 @@ yy233:
 yy234:
                YYDEBUG(234, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1856 "Zend/zend_language_scanner.l"
+#line 1858 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3536,7 +3538,7 @@ yy234:
 
        return T_COMMENT;
 }
-#line 3540 "Zend/zend_language_scanner.c"
+#line 3542 "Zend/zend_language_scanner.c"
 yy235:
                YYDEBUG(235, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3546,11 +3548,11 @@ yy236:
                ++YYCURSOR;
                YYDEBUG(237, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1357 "Zend/zend_language_scanner.l"
+#line 1359 "Zend/zend_language_scanner.l"
                {
        return T_DIV_EQUAL;
 }
-#line 3554 "Zend/zend_language_scanner.c"
+#line 3556 "Zend/zend_language_scanner.c"
 yy238:
                YYDEBUG(238, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3573,42 +3575,42 @@ yy241:
                ++YYCURSOR;
                YYDEBUG(242, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1353 "Zend/zend_language_scanner.l"
+#line 1355 "Zend/zend_language_scanner.l"
                {
        return T_MUL_EQUAL;
 }
-#line 3581 "Zend/zend_language_scanner.c"
+#line 3583 "Zend/zend_language_scanner.c"
 yy243:
                YYDEBUG(243, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy247;
                YYDEBUG(244, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1413 "Zend/zend_language_scanner.l"
+#line 1415 "Zend/zend_language_scanner.l"
                {
        return T_SR;
 }
-#line 3592 "Zend/zend_language_scanner.c"
+#line 3594 "Zend/zend_language_scanner.c"
 yy245:
                YYDEBUG(245, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(246, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1341 "Zend/zend_language_scanner.l"
+#line 1343 "Zend/zend_language_scanner.l"
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3602 "Zend/zend_language_scanner.c"
+#line 3604 "Zend/zend_language_scanner.c"
 yy247:
                YYDEBUG(247, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(248, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1373 "Zend/zend_language_scanner.l"
+#line 1375 "Zend/zend_language_scanner.l"
                {
        return T_SR_EQUAL;
 }
-#line 3612 "Zend/zend_language_scanner.c"
+#line 3614 "Zend/zend_language_scanner.c"
 yy249:
                YYDEBUG(249, *YYCURSOR);
                yyaccept = 5;
@@ -3619,11 +3621,11 @@ yy249:
 yy250:
                YYDEBUG(250, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1409 "Zend/zend_language_scanner.l"
+#line 1411 "Zend/zend_language_scanner.l"
                {
        return T_SL;
 }
-#line 3627 "Zend/zend_language_scanner.c"
+#line 3629 "Zend/zend_language_scanner.c"
 yy251:
                YYDEBUG(251, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3635,22 +3637,22 @@ yy252:
                ++YYCURSOR;
                YYDEBUG(253, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1337 "Zend/zend_language_scanner.l"
+#line 1339 "Zend/zend_language_scanner.l"
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3643 "Zend/zend_language_scanner.c"
+#line 3645 "Zend/zend_language_scanner.c"
 yy254:
                YYDEBUG(254, *YYCURSOR);
                ++YYCURSOR;
 yy255:
                YYDEBUG(255, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1333 "Zend/zend_language_scanner.l"
+#line 1335 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3654 "Zend/zend_language_scanner.c"
+#line 3656 "Zend/zend_language_scanner.c"
 yy256:
                YYDEBUG(256, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3701,11 +3703,11 @@ yy263:
                ++YYCURSOR;
                YYDEBUG(264, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1369 "Zend/zend_language_scanner.l"
+#line 1371 "Zend/zend_language_scanner.l"
                {
        return T_SL_EQUAL;
 }
-#line 3709 "Zend/zend_language_scanner.c"
+#line 3711 "Zend/zend_language_scanner.c"
 yy265:
                YYDEBUG(265, *YYCURSOR);
                ++YYCURSOR;
@@ -3810,7 +3812,7 @@ yy274:
 yy275:
                YYDEBUG(275, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2024 "Zend/zend_language_scanner.l"
+#line 2026 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3858,7 +3860,7 @@ yy275:
 
        return T_START_HEREDOC;
 }
-#line 3862 "Zend/zend_language_scanner.c"
+#line 3864 "Zend/zend_language_scanner.c"
 yy276:
                YYDEBUG(276, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3898,31 +3900,31 @@ yy279:
                ++YYCURSOR;
                YYDEBUG(281, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1325 "Zend/zend_language_scanner.l"
+#line 1327 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3906 "Zend/zend_language_scanner.c"
+#line 3908 "Zend/zend_language_scanner.c"
 yy282:
                YYDEBUG(282, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(283, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1345 "Zend/zend_language_scanner.l"
+#line 1347 "Zend/zend_language_scanner.l"
                {
        return T_PLUS_EQUAL;
 }
-#line 3916 "Zend/zend_language_scanner.c"
+#line 3918 "Zend/zend_language_scanner.c"
 yy284:
                YYDEBUG(284, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(285, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1313 "Zend/zend_language_scanner.l"
+#line 1315 "Zend/zend_language_scanner.l"
                {
        return T_INC;
 }
-#line 3926 "Zend/zend_language_scanner.c"
+#line 3928 "Zend/zend_language_scanner.c"
 yy286:
                YYDEBUG(286, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3941,42 +3943,42 @@ yy288:
                }
                YYDEBUG(289, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1305 "Zend/zend_language_scanner.l"
+#line 1307 "Zend/zend_language_scanner.l"
                {
        return T_LIST;
 }
-#line 3949 "Zend/zend_language_scanner.c"
+#line 3951 "Zend/zend_language_scanner.c"
 yy290:
                YYDEBUG(290, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy294;
                YYDEBUG(291, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1329 "Zend/zend_language_scanner.l"
+#line 1331 "Zend/zend_language_scanner.l"
                {
        return T_IS_EQUAL;
 }
-#line 3960 "Zend/zend_language_scanner.c"
+#line 3962 "Zend/zend_language_scanner.c"
 yy292:
                YYDEBUG(292, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(293, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1301 "Zend/zend_language_scanner.l"
+#line 1303 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_ARROW;
 }
-#line 3970 "Zend/zend_language_scanner.c"
+#line 3972 "Zend/zend_language_scanner.c"
 yy294:
                YYDEBUG(294, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(295, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1321 "Zend/zend_language_scanner.l"
+#line 1323 "Zend/zend_language_scanner.l"
                {
        return T_IS_IDENTICAL;
 }
-#line 3980 "Zend/zend_language_scanner.c"
+#line 3982 "Zend/zend_language_scanner.c"
 yy296:
                YYDEBUG(296, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4098,7 +4100,7 @@ yy311:
                }
                YYDEBUG(314, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1625 "Zend/zend_language_scanner.l"
+#line 1627 "Zend/zend_language_scanner.l"
                {
        if (CG(current_namespace)) {
                *zendlval = *CG(current_namespace);
@@ -4108,7 +4110,7 @@ yy311:
        }
        return T_NS_C;
 }
-#line 4112 "Zend/zend_language_scanner.c"
+#line 4114 "Zend/zend_language_scanner.c"
 yy315:
                YYDEBUG(315, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4128,7 +4130,7 @@ yy316:
                }
                YYDEBUG(319, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1598 "Zend/zend_language_scanner.l"
+#line 1600 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
        const size_t filename_len = strlen(filename);
@@ -4155,7 +4157,7 @@ yy316:
        zendlval->type = IS_STRING;
        return T_DIR;
 }
-#line 4159 "Zend/zend_language_scanner.c"
+#line 4161 "Zend/zend_language_scanner.c"
 yy320:
                YYDEBUG(320, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4180,13 +4182,13 @@ yy322:
                }
                YYDEBUG(325, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1580 "Zend/zend_language_scanner.l"
+#line 1582 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;
        return T_LINE;
 }
-#line 4190 "Zend/zend_language_scanner.c"
+#line 4192 "Zend/zend_language_scanner.c"
 yy326:
                YYDEBUG(326, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4221,7 +4223,7 @@ yy330:
                }
                YYDEBUG(333, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1559 "Zend/zend_language_scanner.l"
+#line 1561 "Zend/zend_language_scanner.l"
                {
        char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
        char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
@@ -4242,7 +4244,7 @@ yy330:
        zendlval->type = IS_STRING;
        return T_METHOD_C;
 }
-#line 4246 "Zend/zend_language_scanner.c"
+#line 4248 "Zend/zend_language_scanner.c"
 yy334:
                YYDEBUG(334, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4293,7 +4295,7 @@ yy341:
                }
                YYDEBUG(344, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1543 "Zend/zend_language_scanner.l"
+#line 1545 "Zend/zend_language_scanner.l"
                {
        char *func_name = NULL;
 
@@ -4309,7 +4311,7 @@ yy341:
        zendlval->type = IS_STRING;
        return T_FUNC_C;
 }
-#line 4313 "Zend/zend_language_scanner.c"
+#line 4315 "Zend/zend_language_scanner.c"
 yy345:
                YYDEBUG(345, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4329,7 +4331,7 @@ yy346:
                }
                YYDEBUG(349, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1586 "Zend/zend_language_scanner.l"
+#line 1588 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
 
@@ -4341,7 +4343,7 @@ yy346:
        zendlval->type = IS_STRING;
        return T_FILE;
 }
-#line 4345 "Zend/zend_language_scanner.c"
+#line 4347 "Zend/zend_language_scanner.c"
 yy350:
                YYDEBUG(350, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4371,7 +4373,7 @@ yy353:
                }
                YYDEBUG(356, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1527 "Zend/zend_language_scanner.l"
+#line 1529 "Zend/zend_language_scanner.l"
                {
        char *class_name = NULL;
 
@@ -4387,7 +4389,7 @@ yy353:
        zendlval->type = IS_STRING;
        return T_CLASS_C;
 }
-#line 4391 "Zend/zend_language_scanner.c"
+#line 4393 "Zend/zend_language_scanner.c"
 yy357:
                YYDEBUG(357, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4449,11 +4451,11 @@ yy368:
                }
                YYDEBUG(369, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1269 "Zend/zend_language_scanner.l"
+#line 1271 "Zend/zend_language_scanner.l"
                {
        return T_HALT_COMPILER;
 }
-#line 4457 "Zend/zend_language_scanner.c"
+#line 4459 "Zend/zend_language_scanner.c"
 yy370:
                YYDEBUG(370, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4473,11 +4475,11 @@ yy372:
                }
                YYDEBUG(373, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1249 "Zend/zend_language_scanner.l"
+#line 1251 "Zend/zend_language_scanner.l"
                {
        return T_USE;
 }
-#line 4481 "Zend/zend_language_scanner.c"
+#line 4483 "Zend/zend_language_scanner.c"
 yy374:
                YYDEBUG(374, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4496,11 +4498,11 @@ yy376:
                }
                YYDEBUG(377, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1297 "Zend/zend_language_scanner.l"
+#line 1299 "Zend/zend_language_scanner.l"
                {
        return T_UNSET;
 }
-#line 4504 "Zend/zend_language_scanner.c"
+#line 4506 "Zend/zend_language_scanner.c"
 yy378:
                YYDEBUG(378, *YYCURSOR);
                ++YYCURSOR;
@@ -4672,11 +4674,11 @@ yy393:
                ++YYCURSOR;
                YYDEBUG(395, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1197 "Zend/zend_language_scanner.l"
+#line 1199 "Zend/zend_language_scanner.l"
                {
        return T_INT_CAST;
 }
-#line 4680 "Zend/zend_language_scanner.c"
+#line 4682 "Zend/zend_language_scanner.c"
 yy396:
                YYDEBUG(396, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4720,11 +4722,11 @@ yy401:
                ++YYCURSOR;
                YYDEBUG(404, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1201 "Zend/zend_language_scanner.l"
+#line 1203 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_CAST;
 }
-#line 4728 "Zend/zend_language_scanner.c"
+#line 4730 "Zend/zend_language_scanner.c"
 yy405:
                YYDEBUG(405, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4794,11 +4796,11 @@ yy415:
                ++YYCURSOR;
                YYDEBUG(418, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1205 "Zend/zend_language_scanner.l"
+#line 1207 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
 }
-#line 4802 "Zend/zend_language_scanner.c"
+#line 4804 "Zend/zend_language_scanner.c"
 yy419:
                YYDEBUG(419, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4831,11 +4833,11 @@ yy422:
                ++YYCURSOR;
                YYDEBUG(425, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1209 "Zend/zend_language_scanner.l"
+#line 1211 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY_CAST;
 }
-#line 4839 "Zend/zend_language_scanner.c"
+#line 4841 "Zend/zend_language_scanner.c"
 yy426:
                YYDEBUG(426, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4873,11 +4875,11 @@ yy430:
                ++YYCURSOR;
                YYDEBUG(433, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1213 "Zend/zend_language_scanner.l"
+#line 1215 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_CAST;
 }
-#line 4881 "Zend/zend_language_scanner.c"
+#line 4883 "Zend/zend_language_scanner.c"
 yy434:
                YYDEBUG(434, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4918,11 +4920,11 @@ yy439:
                ++YYCURSOR;
                YYDEBUG(441, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1217 "Zend/zend_language_scanner.l"
+#line 1219 "Zend/zend_language_scanner.l"
                {
        return T_BOOL_CAST;
 }
-#line 4926 "Zend/zend_language_scanner.c"
+#line 4928 "Zend/zend_language_scanner.c"
 yy442:
                YYDEBUG(442, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4982,11 +4984,11 @@ yy450:
                ++YYCURSOR;
                YYDEBUG(453, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1221 "Zend/zend_language_scanner.l"
+#line 1223 "Zend/zend_language_scanner.l"
                {
        return T_UNSET_CAST;
 }
-#line 4990 "Zend/zend_language_scanner.c"
+#line 4992 "Zend/zend_language_scanner.c"
 yy454:
                YYDEBUG(454, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5000,11 +5002,11 @@ yy455:
                }
                YYDEBUG(456, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1193 "Zend/zend_language_scanner.l"
+#line 1195 "Zend/zend_language_scanner.l"
                {
        return T_VAR;
 }
-#line 5008 "Zend/zend_language_scanner.c"
+#line 5010 "Zend/zend_language_scanner.c"
 yy457:
                YYDEBUG(457, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5024,11 +5026,11 @@ yy459:
                }
                YYDEBUG(460, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1185 "Zend/zend_language_scanner.l"
+#line 1187 "Zend/zend_language_scanner.l"
                {
        return T_NEW;
 }
-#line 5032 "Zend/zend_language_scanner.c"
+#line 5034 "Zend/zend_language_scanner.c"
 yy461:
                YYDEBUG(461, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5067,21 +5069,21 @@ yy467:
                }
                YYDEBUG(468, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1245 "Zend/zend_language_scanner.l"
+#line 1247 "Zend/zend_language_scanner.l"
                {
        return T_NAMESPACE;
 }
-#line 5075 "Zend/zend_language_scanner.c"
+#line 5077 "Zend/zend_language_scanner.c"
 yy469:
                YYDEBUG(469, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(470, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1177 "Zend/zend_language_scanner.l"
+#line 1179 "Zend/zend_language_scanner.l"
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 5085 "Zend/zend_language_scanner.c"
+#line 5087 "Zend/zend_language_scanner.c"
 yy471:
                YYDEBUG(471, *YYCURSOR);
                ++YYCURSOR;
@@ -5103,32 +5105,32 @@ yy473:
                ++YYCURSOR;
                YYDEBUG(474, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1349 "Zend/zend_language_scanner.l"
+#line 1351 "Zend/zend_language_scanner.l"
                {
        return T_MINUS_EQUAL;
 }
-#line 5111 "Zend/zend_language_scanner.c"
+#line 5113 "Zend/zend_language_scanner.c"
 yy475:
                YYDEBUG(475, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(476, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1317 "Zend/zend_language_scanner.l"
+#line 1319 "Zend/zend_language_scanner.l"
                {
        return T_DEC;
 }
-#line 5121 "Zend/zend_language_scanner.c"
+#line 5123 "Zend/zend_language_scanner.c"
 yy477:
                YYDEBUG(477, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(478, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1147 "Zend/zend_language_scanner.l"
+#line 1149 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 5132 "Zend/zend_language_scanner.c"
+#line 5134 "Zend/zend_language_scanner.c"
 yy479:
                YYDEBUG(479, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5173,11 +5175,11 @@ yy484:
                }
                YYDEBUG(485, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1293 "Zend/zend_language_scanner.l"
+#line 1295 "Zend/zend_language_scanner.l"
                {
        return T_PUBLIC;
 }
-#line 5181 "Zend/zend_language_scanner.c"
+#line 5183 "Zend/zend_language_scanner.c"
 yy486:
                YYDEBUG(486, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5232,11 +5234,11 @@ yy493:
                }
                YYDEBUG(494, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1289 "Zend/zend_language_scanner.l"
+#line 1291 "Zend/zend_language_scanner.l"
                {
        return T_PROTECTED;
 }
-#line 5240 "Zend/zend_language_scanner.c"
+#line 5242 "Zend/zend_language_scanner.c"
 yy495:
                YYDEBUG(495, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5266,11 +5268,11 @@ yy499:
                }
                YYDEBUG(500, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1285 "Zend/zend_language_scanner.l"
+#line 1287 "Zend/zend_language_scanner.l"
                {
        return T_PRIVATE;
 }
-#line 5274 "Zend/zend_language_scanner.c"
+#line 5276 "Zend/zend_language_scanner.c"
 yy501:
                YYDEBUG(501, *YYCURSOR);
                ++YYCURSOR;
@@ -5279,11 +5281,11 @@ yy501:
                }
                YYDEBUG(502, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1123 "Zend/zend_language_scanner.l"
+#line 1125 "Zend/zend_language_scanner.l"
                {
        return T_PRINT;
 }
-#line 5287 "Zend/zend_language_scanner.c"
+#line 5289 "Zend/zend_language_scanner.c"
 yy503:
                YYDEBUG(503, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5308,11 +5310,11 @@ yy506:
                }
                YYDEBUG(507, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1115 "Zend/zend_language_scanner.l"
+#line 1117 "Zend/zend_language_scanner.l"
                {
        return T_GOTO;
 }
-#line 5316 "Zend/zend_language_scanner.c"
+#line 5318 "Zend/zend_language_scanner.c"
 yy508:
                YYDEBUG(508, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5336,11 +5338,11 @@ yy511:
                }
                YYDEBUG(512, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1257 "Zend/zend_language_scanner.l"
+#line 1259 "Zend/zend_language_scanner.l"
                {
        return T_GLOBAL;
 }
-#line 5344 "Zend/zend_language_scanner.c"
+#line 5346 "Zend/zend_language_scanner.c"
 yy513:
                YYDEBUG(513, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5377,11 +5379,11 @@ yy519:
                }
                YYDEBUG(520, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1107 "Zend/zend_language_scanner.l"
+#line 1109 "Zend/zend_language_scanner.l"
                {
        return T_BREAK;
 }
-#line 5385 "Zend/zend_language_scanner.c"
+#line 5387 "Zend/zend_language_scanner.c"
 yy521:
                YYDEBUG(521, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5421,11 +5423,11 @@ yy527:
                }
                YYDEBUG(528, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1091 "Zend/zend_language_scanner.l"
+#line 1093 "Zend/zend_language_scanner.l"
                {
        return T_SWITCH;
 }
-#line 5429 "Zend/zend_language_scanner.c"
+#line 5431 "Zend/zend_language_scanner.c"
 yy529:
                YYDEBUG(529, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5449,11 +5451,11 @@ yy532:
                }
                YYDEBUG(533, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1273 "Zend/zend_language_scanner.l"
+#line 1275 "Zend/zend_language_scanner.l"
                {
        return T_STATIC;
 }
-#line 5457 "Zend/zend_language_scanner.c"
+#line 5459 "Zend/zend_language_scanner.c"
 yy534:
                YYDEBUG(534, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5480,11 +5482,11 @@ yy537:
                }
                YYDEBUG(538, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1087 "Zend/zend_language_scanner.l"
+#line 1089 "Zend/zend_language_scanner.l"
                {
        return T_AS;
 }
-#line 5488 "Zend/zend_language_scanner.c"
+#line 5490 "Zend/zend_language_scanner.c"
 yy539:
                YYDEBUG(539, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5503,11 +5505,11 @@ yy541:
                }
                YYDEBUG(542, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1309 "Zend/zend_language_scanner.l"
+#line 1311 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY;
 }
-#line 5511 "Zend/zend_language_scanner.c"
+#line 5513 "Zend/zend_language_scanner.c"
 yy543:
                YYDEBUG(543, *YYCURSOR);
                ++YYCURSOR;
@@ -5516,11 +5518,11 @@ yy543:
                }
                YYDEBUG(544, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1401 "Zend/zend_language_scanner.l"
+#line 1403 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_AND;
 }
-#line 5524 "Zend/zend_language_scanner.c"
+#line 5526 "Zend/zend_language_scanner.c"
 yy545:
                YYDEBUG(545, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5554,11 +5556,11 @@ yy550:
                }
                YYDEBUG(551, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1277 "Zend/zend_language_scanner.l"
+#line 1279 "Zend/zend_language_scanner.l"
                {
        return T_ABSTRACT;
 }
-#line 5562 "Zend/zend_language_scanner.c"
+#line 5564 "Zend/zend_language_scanner.c"
 yy552:
                YYDEBUG(552, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5582,11 +5584,11 @@ yy555:
                }
                YYDEBUG(556, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1047 "Zend/zend_language_scanner.l"
+#line 1049 "Zend/zend_language_scanner.l"
                {
        return T_WHILE;
 }
-#line 5590 "Zend/zend_language_scanner.c"
+#line 5592 "Zend/zend_language_scanner.c"
 yy557:
                YYDEBUG(557, *YYCURSOR);
                ++YYCURSOR;
@@ -5595,11 +5597,11 @@ yy557:
                }
                YYDEBUG(558, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1031 "Zend/zend_language_scanner.l"
+#line 1033 "Zend/zend_language_scanner.l"
                {
        return T_IF;
 }
-#line 5603 "Zend/zend_language_scanner.c"
+#line 5605 "Zend/zend_language_scanner.c"
 yy559:
                YYDEBUG(559, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5651,11 +5653,11 @@ yy564:
                }
                YYDEBUG(565, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1261 "Zend/zend_language_scanner.l"
+#line 1263 "Zend/zend_language_scanner.l"
                {
        return T_ISSET;
 }
-#line 5659 "Zend/zend_language_scanner.c"
+#line 5661 "Zend/zend_language_scanner.c"
 yy566:
                YYDEBUG(566, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5709,11 +5711,11 @@ yy572:
 yy573:
                YYDEBUG(573, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1229 "Zend/zend_language_scanner.l"
+#line 1231 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE;
 }
-#line 5717 "Zend/zend_language_scanner.c"
+#line 5719 "Zend/zend_language_scanner.c"
 yy574:
                YYDEBUG(574, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5742,11 +5744,11 @@ yy578:
                }
                YYDEBUG(579, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1233 "Zend/zend_language_scanner.l"
+#line 1235 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE_ONCE;
 }
-#line 5750 "Zend/zend_language_scanner.c"
+#line 5752 "Zend/zend_language_scanner.c"
 yy580:
                YYDEBUG(580, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5780,11 +5782,11 @@ yy585:
                }
                YYDEBUG(586, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1131 "Zend/zend_language_scanner.l"
+#line 1133 "Zend/zend_language_scanner.l"
                {
        return T_INTERFACE;
 }
-#line 5788 "Zend/zend_language_scanner.c"
+#line 5790 "Zend/zend_language_scanner.c"
 yy587:
                YYDEBUG(587, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5834,11 +5836,11 @@ yy593:
                }
                YYDEBUG(594, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1253 "Zend/zend_language_scanner.l"
+#line 1255 "Zend/zend_language_scanner.l"
                {
         return T_INSTEADOF;
 }
-#line 5842 "Zend/zend_language_scanner.c"
+#line 5844 "Zend/zend_language_scanner.c"
 yy595:
                YYDEBUG(595, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5867,11 +5869,11 @@ yy599:
                }
                YYDEBUG(600, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1083 "Zend/zend_language_scanner.l"
+#line 1085 "Zend/zend_language_scanner.l"
                {
        return T_INSTANCEOF;
 }
-#line 5875 "Zend/zend_language_scanner.c"
+#line 5877 "Zend/zend_language_scanner.c"
 yy601:
                YYDEBUG(601, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5915,11 +5917,11 @@ yy608:
                }
                YYDEBUG(609, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1143 "Zend/zend_language_scanner.l"
+#line 1145 "Zend/zend_language_scanner.l"
                {
        return T_IMPLEMENTS;
 }
-#line 5923 "Zend/zend_language_scanner.c"
+#line 5925 "Zend/zend_language_scanner.c"
 yy610:
                YYDEBUG(610, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5947,11 +5949,11 @@ yy611:
                }
                YYDEBUG(613, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1019 "Zend/zend_language_scanner.l"
+#line 1021 "Zend/zend_language_scanner.l"
                {
        return T_TRY;
 }
-#line 5955 "Zend/zend_language_scanner.c"
+#line 5957 "Zend/zend_language_scanner.c"
 yy614:
                YYDEBUG(614, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5970,11 +5972,11 @@ yy616:
                }
                YYDEBUG(617, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1135 "Zend/zend_language_scanner.l"
+#line 1137 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT;
 }
-#line 5978 "Zend/zend_language_scanner.c"
+#line 5980 "Zend/zend_language_scanner.c"
 yy618:
                YYDEBUG(618, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5993,11 +5995,11 @@ yy620:
                }
                YYDEBUG(621, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1027 "Zend/zend_language_scanner.l"
+#line 1029 "Zend/zend_language_scanner.l"
                {
        return T_THROW;
 }
-#line 6001 "Zend/zend_language_scanner.c"
+#line 6003 "Zend/zend_language_scanner.c"
 yy622:
                YYDEBUG(622, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6058,11 +6060,11 @@ yy628:
 yy629:
                YYDEBUG(629, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1237 "Zend/zend_language_scanner.l"
+#line 1239 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE;
 }
-#line 6066 "Zend/zend_language_scanner.c"
+#line 6068 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6091,11 +6093,11 @@ yy634:
                }
                YYDEBUG(635, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1241 "Zend/zend_language_scanner.l"
+#line 1243 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE_ONCE;
 }
-#line 6099 "Zend/zend_language_scanner.c"
+#line 6101 "Zend/zend_language_scanner.c"
 yy636:
                YYDEBUG(636, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6114,11 +6116,11 @@ yy638:
                }
                YYDEBUG(639, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1015 "Zend/zend_language_scanner.l"
+#line 1017 "Zend/zend_language_scanner.l"
                {
        return T_RETURN;
 }
-#line 6122 "Zend/zend_language_scanner.c"
+#line 6124 "Zend/zend_language_scanner.c"
 yy640:
                YYDEBUG(640, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6199,11 +6201,11 @@ yy649:
                }
                YYDEBUG(650, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1111 "Zend/zend_language_scanner.l"
+#line 1113 "Zend/zend_language_scanner.l"
                {
        return T_CONTINUE;
 }
-#line 6207 "Zend/zend_language_scanner.c"
+#line 6209 "Zend/zend_language_scanner.c"
 yy651:
                YYDEBUG(651, *YYCURSOR);
                ++YYCURSOR;
@@ -6212,11 +6214,11 @@ yy651:
                }
                YYDEBUG(652, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1011 "Zend/zend_language_scanner.l"
+#line 1013 "Zend/zend_language_scanner.l"
                {
        return T_CONST;
 }
-#line 6220 "Zend/zend_language_scanner.c"
+#line 6222 "Zend/zend_language_scanner.c"
 yy653:
                YYDEBUG(653, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6241,11 +6243,11 @@ yy656:
                }
                YYDEBUG(657, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1189 "Zend/zend_language_scanner.l"
+#line 1191 "Zend/zend_language_scanner.l"
                {
        return T_CLONE;
 }
-#line 6249 "Zend/zend_language_scanner.c"
+#line 6251 "Zend/zend_language_scanner.c"
 yy658:
                YYDEBUG(658, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6259,11 +6261,11 @@ yy659:
                }
                YYDEBUG(660, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1127 "Zend/zend_language_scanner.l"
+#line 1129 "Zend/zend_language_scanner.l"
                {
        return T_CLASS;
 }
-#line 6267 "Zend/zend_language_scanner.c"
+#line 6269 "Zend/zend_language_scanner.c"
 yy661:
                YYDEBUG(661, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6283,11 +6285,11 @@ yy663:
                }
                YYDEBUG(664, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1099 "Zend/zend_language_scanner.l"
+#line 1101 "Zend/zend_language_scanner.l"
                {
        return T_CASE;
 }
-#line 6291 "Zend/zend_language_scanner.c"
+#line 6293 "Zend/zend_language_scanner.c"
 yy665:
                YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6301,11 +6303,11 @@ yy666:
                }
                YYDEBUG(667, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1023 "Zend/zend_language_scanner.l"
+#line 1025 "Zend/zend_language_scanner.l"
                {
        return T_CATCH;
 }
-#line 6309 "Zend/zend_language_scanner.c"
+#line 6311 "Zend/zend_language_scanner.c"
 yy668:
                YYDEBUG(668, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6356,11 +6358,11 @@ yy676:
                }
                YYDEBUG(677, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1007 "Zend/zend_language_scanner.l"
+#line 1009 "Zend/zend_language_scanner.l"
                {
        return T_FUNCTION;
 }
-#line 6364 "Zend/zend_language_scanner.c"
+#line 6366 "Zend/zend_language_scanner.c"
 yy678:
                YYDEBUG(678, *YYCURSOR);
                ++YYCURSOR;
@@ -6384,11 +6386,11 @@ yy678:
 yy679:
                YYDEBUG(679, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1059 "Zend/zend_language_scanner.l"
+#line 1061 "Zend/zend_language_scanner.l"
                {
        return T_FOR;
 }
-#line 6392 "Zend/zend_language_scanner.c"
+#line 6394 "Zend/zend_language_scanner.c"
 yy680:
                YYDEBUG(680, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6412,11 +6414,11 @@ yy683:
                }
                YYDEBUG(684, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1067 "Zend/zend_language_scanner.l"
+#line 1069 "Zend/zend_language_scanner.l"
                {
        return T_FOREACH;
 }
-#line 6420 "Zend/zend_language_scanner.c"
+#line 6422 "Zend/zend_language_scanner.c"
 yy685:
                YYDEBUG(685, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6435,11 +6437,11 @@ yy687:
                }
                YYDEBUG(688, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1281 "Zend/zend_language_scanner.l"
+#line 1283 "Zend/zend_language_scanner.l"
                {
        return T_FINAL;
 }
-#line 6443 "Zend/zend_language_scanner.c"
+#line 6445 "Zend/zend_language_scanner.c"
 yy689:
                YYDEBUG(689, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6470,11 +6472,11 @@ yy691:
                }
                YYDEBUG(692, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1055 "Zend/zend_language_scanner.l"
+#line 1057 "Zend/zend_language_scanner.l"
                {
        return T_DO;
 }
-#line 6478 "Zend/zend_language_scanner.c"
+#line 6480 "Zend/zend_language_scanner.c"
 yy693:
                YYDEBUG(693, *YYCURSOR);
                ++YYCURSOR;
@@ -6483,11 +6485,11 @@ yy693:
                }
                YYDEBUG(694, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1003 "Zend/zend_language_scanner.l"
+#line 1005 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6491 "Zend/zend_language_scanner.c"
+#line 6493 "Zend/zend_language_scanner.c"
 yy695:
                YYDEBUG(695, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6522,11 +6524,11 @@ yy700:
                }
                YYDEBUG(701, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1103 "Zend/zend_language_scanner.l"
+#line 1105 "Zend/zend_language_scanner.l"
                {
        return T_DEFAULT;
 }
-#line 6530 "Zend/zend_language_scanner.c"
+#line 6532 "Zend/zend_language_scanner.c"
 yy702:
                YYDEBUG(702, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6550,11 +6552,11 @@ yy705:
                }
                YYDEBUG(706, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1075 "Zend/zend_language_scanner.l"
+#line 1077 "Zend/zend_language_scanner.l"
                {
        return T_DECLARE;
 }
-#line 6558 "Zend/zend_language_scanner.c"
+#line 6560 "Zend/zend_language_scanner.c"
 yy707:
                YYDEBUG(707, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6634,11 +6636,11 @@ yy718:
                }
                YYDEBUG(719, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1139 "Zend/zend_language_scanner.l"
+#line 1141 "Zend/zend_language_scanner.l"
                {
        return T_EXTENDS;
 }
-#line 6642 "Zend/zend_language_scanner.c"
+#line 6644 "Zend/zend_language_scanner.c"
 yy720:
                YYDEBUG(720, *YYCURSOR);
                ++YYCURSOR;
@@ -6647,11 +6649,11 @@ yy720:
                }
                YYDEBUG(721, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 999 "Zend/zend_language_scanner.l"
+#line 1001 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6655 "Zend/zend_language_scanner.c"
+#line 6657 "Zend/zend_language_scanner.c"
 yy722:
                YYDEBUG(722, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6665,11 +6667,11 @@ yy723:
                }
                YYDEBUG(724, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1225 "Zend/zend_language_scanner.l"
+#line 1227 "Zend/zend_language_scanner.l"
                {
        return T_EVAL;
 }
-#line 6673 "Zend/zend_language_scanner.c"
+#line 6675 "Zend/zend_language_scanner.c"
 yy725:
                YYDEBUG(725, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6739,11 +6741,11 @@ yy734:
                }
                YYDEBUG(735, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1051 "Zend/zend_language_scanner.l"
+#line 1053 "Zend/zend_language_scanner.l"
                {
        return T_ENDWHILE;
 }
-#line 6747 "Zend/zend_language_scanner.c"
+#line 6749 "Zend/zend_language_scanner.c"
 yy736:
                YYDEBUG(736, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6772,11 +6774,11 @@ yy740:
                }
                YYDEBUG(741, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1095 "Zend/zend_language_scanner.l"
+#line 1097 "Zend/zend_language_scanner.l"
                {
        return T_ENDSWITCH;
 }
-#line 6780 "Zend/zend_language_scanner.c"
+#line 6782 "Zend/zend_language_scanner.c"
 yy742:
                YYDEBUG(742, *YYCURSOR);
                ++YYCURSOR;
@@ -6785,11 +6787,11 @@ yy742:
                }
                YYDEBUG(743, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1039 "Zend/zend_language_scanner.l"
+#line 1041 "Zend/zend_language_scanner.l"
                {
        return T_ENDIF;
 }
-#line 6793 "Zend/zend_language_scanner.c"
+#line 6795 "Zend/zend_language_scanner.c"
 yy744:
                YYDEBUG(744, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6818,11 +6820,11 @@ yy745:
 yy746:
                YYDEBUG(746, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1063 "Zend/zend_language_scanner.l"
+#line 1065 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOR;
 }
-#line 6826 "Zend/zend_language_scanner.c"
+#line 6828 "Zend/zend_language_scanner.c"
 yy747:
                YYDEBUG(747, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6846,11 +6848,11 @@ yy750:
                }
                YYDEBUG(751, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1071 "Zend/zend_language_scanner.l"
+#line 1073 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOREACH;
 }
-#line 6854 "Zend/zend_language_scanner.c"
+#line 6856 "Zend/zend_language_scanner.c"
 yy752:
                YYDEBUG(752, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6884,11 +6886,11 @@ yy757:
                }
                YYDEBUG(758, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1079 "Zend/zend_language_scanner.l"
+#line 1081 "Zend/zend_language_scanner.l"
                {
        return T_ENDDECLARE;
 }
-#line 6892 "Zend/zend_language_scanner.c"
+#line 6894 "Zend/zend_language_scanner.c"
 yy759:
                YYDEBUG(759, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6907,11 +6909,11 @@ yy761:
                }
                YYDEBUG(762, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1265 "Zend/zend_language_scanner.l"
+#line 1267 "Zend/zend_language_scanner.l"
                {
        return T_EMPTY;
 }
-#line 6915 "Zend/zend_language_scanner.c"
+#line 6917 "Zend/zend_language_scanner.c"
 yy763:
                YYDEBUG(763, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6940,11 +6942,11 @@ yy764:
 yy765:
                YYDEBUG(765, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1043 "Zend/zend_language_scanner.l"
+#line 1045 "Zend/zend_language_scanner.l"
                {
        return T_ELSE;
 }
-#line 6948 "Zend/zend_language_scanner.c"
+#line 6950 "Zend/zend_language_scanner.c"
 yy766:
                YYDEBUG(766, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6958,11 +6960,11 @@ yy767:
                }
                YYDEBUG(768, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1035 "Zend/zend_language_scanner.l"
+#line 1037 "Zend/zend_language_scanner.l"
                {
        return T_ELSEIF;
 }
-#line 6966 "Zend/zend_language_scanner.c"
+#line 6968 "Zend/zend_language_scanner.c"
 yy769:
                YYDEBUG(769, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6976,11 +6978,11 @@ yy770:
                }
                YYDEBUG(771, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1119 "Zend/zend_language_scanner.l"
+#line 1121 "Zend/zend_language_scanner.l"
                {
        return T_ECHO;
 }
-#line 6984 "Zend/zend_language_scanner.c"
+#line 6986 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7053,7 +7055,7 @@ yy774:
 yy775:
                YYDEBUG(775, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1152 "Zend/zend_language_scanner.l"
+#line 1154 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -7061,7 +7063,7 @@ yy775:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7065 "Zend/zend_language_scanner.c"
+#line 7067 "Zend/zend_language_scanner.c"
 yy776:
                YYDEBUG(776, *YYCURSOR);
                ++YYCURSOR;
@@ -7069,13 +7071,13 @@ yy776:
 yy777:
                YYDEBUG(777, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1171 "Zend/zend_language_scanner.l"
+#line 1173 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 7079 "Zend/zend_language_scanner.c"
+#line 7081 "Zend/zend_language_scanner.c"
 yy778:
                YYDEBUG(778, *YYCURSOR);
                ++YYCURSOR;
@@ -7084,14 +7086,14 @@ yy778:
 yy779:
                YYDEBUG(779, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1164 "Zend/zend_language_scanner.l"
+#line 1166 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7095 "Zend/zend_language_scanner.c"
+#line 7097 "Zend/zend_language_scanner.c"
 yy780:
                YYDEBUG(780, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7112,11 +7114,11 @@ yy783:
                ++YYCURSOR;
                YYDEBUG(784, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1160 "Zend/zend_language_scanner.l"
+#line 1162 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7120 "Zend/zend_language_scanner.c"
+#line 7122 "Zend/zend_language_scanner.c"
 yy785:
                YYDEBUG(785, *YYCURSOR);
                ++YYCURSOR;
@@ -7186,7 +7188,7 @@ yy789:
 yy790:
                YYDEBUG(790, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1443 "Zend/zend_language_scanner.l"
+#line 1445 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@ -7194,20 +7196,20 @@ yy790:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 7198 "Zend/zend_language_scanner.c"
+#line 7200 "Zend/zend_language_scanner.c"
 yy791:
                YYDEBUG(791, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(792, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1452 "Zend/zend_language_scanner.l"
+#line 1454 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 7211 "Zend/zend_language_scanner.c"
+#line 7213 "Zend/zend_language_scanner.c"
 yy793:
                YYDEBUG(793, *YYCURSOR);
                ++YYCURSOR;
@@ -7229,7 +7231,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(798, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2275 "Zend/zend_language_scanner.l"
+#line 2277 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7284,7 +7286,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7288 "Zend/zend_language_scanner.c"
+#line 7290 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7384,7 +7386,7 @@ yy801:
 yy802:
                YYDEBUG(802, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1502 "Zend/zend_language_scanner.l"
+#line 1504 "Zend/zend_language_scanner.l"
                { /* Offset could be treated as a long */
        if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
                zendlval->value.lval = strtol(yytext, NULL, 10);
@@ -7396,7 +7398,7 @@ yy802:
        }
        return T_NUM_STRING;
 }
-#line 7400 "Zend/zend_language_scanner.c"
+#line 7402 "Zend/zend_language_scanner.c"
 yy803:
                YYDEBUG(803, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7416,23 +7418,23 @@ yy804:
 yy805:
                YYDEBUG(805, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1803 "Zend/zend_language_scanner.l"
+#line 1805 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7425 "Zend/zend_language_scanner.c"
+#line 7427 "Zend/zend_language_scanner.c"
 yy806:
                YYDEBUG(806, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(807, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1798 "Zend/zend_language_scanner.l"
+#line 1800 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 7436 "Zend/zend_language_scanner.c"
+#line 7438 "Zend/zend_language_scanner.c"
 yy808:
                YYDEBUG(808, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7442,14 +7444,14 @@ yy809:
                ++YYCURSOR;
                YYDEBUG(810, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1808 "Zend/zend_language_scanner.l"
+#line 1810 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
        yy_pop_state(TSRMLS_C);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7453 "Zend/zend_language_scanner.c"
+#line 7455 "Zend/zend_language_scanner.c"
 yy811:
                YYDEBUG(811, *YYCURSOR);
                ++YYCURSOR;
@@ -7458,19 +7460,19 @@ yy811:
 yy812:
                YYDEBUG(812, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1815 "Zend/zend_language_scanner.l"
+#line 1817 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7468 "Zend/zend_language_scanner.c"
+#line 7470 "Zend/zend_language_scanner.c"
 yy813:
                YYDEBUG(813, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(814, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2331 "Zend/zend_language_scanner.l"
+#line 2333 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7479,7 +7481,7 @@ yy813:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7483 "Zend/zend_language_scanner.c"
+#line 7485 "Zend/zend_language_scanner.c"
 yy815:
                YYDEBUG(815, *YYCURSOR);
                ++YYCURSOR;
@@ -7515,13 +7517,13 @@ yy817:
 yy819:
                YYDEBUG(819, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1794 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 7525 "Zend/zend_language_scanner.c"
+#line 7527 "Zend/zend_language_scanner.c"
 yy820:
                YYDEBUG(820, *YYCURSOR);
                ++YYCURSOR;
@@ -7553,14 +7555,14 @@ yy824:
 yy826:
                YYDEBUG(826, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1514 "Zend/zend_language_scanner.l"
+#line 1516 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        zendlval->value.str.val = (char *)estrndup(yytext, yyleng);
        zendlval->value.str.len = yyleng;
        zendlval->type = IS_STRING;
        return T_NUM_STRING;
 }
-#line 7564 "Zend/zend_language_scanner.c"
+#line 7566 "Zend/zend_language_scanner.c"
 yy827:
                YYDEBUG(827, *YYCURSOR);
                ++YYCURSOR;
@@ -7573,6 +7575,6 @@ yy827:
                goto yy826;
        }
 }
-#line 2340 "Zend/zend_language_scanner.l"
+#line 2342 "Zend/zend_language_scanner.l"
 
 }
index cd329c61f942c77c555cccf42c1c5429620f59f3..8c04cf76028686a297e1613f27701093e776f0c0 100644 (file)
@@ -174,6 +174,7 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
 
 void startup_scanner(TSRMLS_D)
 {
+       CG(parse_error) = 0;
        CG(heredoc) = NULL;
        CG(heredoc_len) = 0;
        CG(doc_comment) = NULL;
@@ -187,6 +188,7 @@ void shutdown_scanner(TSRMLS_D)
                efree(CG(heredoc));
                CG(heredoc_len)=0;
        }
+       CG(parse_error) = 0;
        zend_stack_destroy(&SCNG(state_stack));
        RESET_DOC_COMMENT();
 }
index d620cf6237a4ec39ec1718b8ee7230c3f7c44bd9..cd44289e7ae90821cfdd001887d41dc973c6c720 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Jun  2 17:34:19 2011 */
+/* Generated by re2c 0.13.5 on Thu Jun 23 19:47:38 2011 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {
index f4a70cb11358519a654c730635f9879385238047..e52853397fa348b3920d148caca233098234bb33 100644 (file)
@@ -990,7 +990,7 @@ static void php_error_cb(int type, const char *error_filename, const uint error_
                                char *append_string = INI_STR("error_append_string");
 
                                if (PG(html_errors)) {
-                                       if (type == E_ERROR) {
+                                       if (type == E_ERROR || type == E_PARSE) {
                                                size_t len;
                                                char *buf = php_escape_html_entities(buffer, buffer_len, &len, 0, ENT_COMPAT, NULL TSRMLS_CC);
                                                php_printf("%s<br />\n<b>%s</b>:  %s in <b>%s</b> on line <b>%d</b><br />\n%s", STR_PRINT(prepend_string), error_type_str, buf, error_filename, error_lineno, STR_PRINT(append_string));
@@ -1061,7 +1061,9 @@ static void php_error_cb(int type, const char *error_filename, const uint error_
                                        sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC);
                                }
                                /* the parser would return 1 (failure), we can bail out nicely */
-                               if (type != E_PARSE) {
+                               if (type == E_PARSE) {
+                                       CG(parse_error) = 0;
+                               } else {
                                        /* restore memory limit */
                                        zend_set_memory_limit(PG(memory_limit));
                                        efree(buffer);