]> granicus.if.org Git - php/commitdiff
Revert "Handle scanner error in first place (don't hide them from ext/tokenizer)...
authorDmitry Stogov <dmitry@zend.com>
Tue, 13 Mar 2018 22:08:03 +0000 (01:08 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 13 Mar 2018 22:08:03 +0000 (01:08 +0300)
This reverts commit 0d6da03f5c3e49b92cf6817ba8a7f8d6f60ee1aa.

Zend/zend_compile.c
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
ext/tokenizer/tests/parse_errors.phpt
ext/tokenizer/tokenizer_data.c

index 873b963a158120167bf945cd55b66405a8c15e1f..ed90929249dce95ad38445cc520195ad604fddd3 100644 (file)
@@ -1690,16 +1690,25 @@ again:
        ZVAL_UNDEF(&zv);
        start_lineno = CG(zend_lineno);
        retval = lex_scan(&zv);
+       if (EG(exception)) {
+               return T_ERROR;
+       }
 
-       if (retval >= T_WHITESPACE) {
-               if (EXPECTED(retval < T_OPEN_TAG_WITH_ECHO)) {
+       switch (retval) {
+               case T_COMMENT:
+               case T_DOC_COMMENT:
+               case T_OPEN_TAG:
+               case T_WHITESPACE:
                        goto again;
-               } else if (retval == T_OPEN_TAG_WITH_ECHO) {
-                       retval = T_ECHO;
-               } else if (retval == T_CLOSE_TAG) {
+
+               case T_CLOSE_TAG:
                        retval = ';'; /* implicit ; */
-               }
-       } else if (Z_TYPE(zv) != IS_UNDEF) {
+                       break;
+               case T_OPEN_TAG_WITH_ECHO:
+                       retval = T_ECHO;
+                       break;
+       }
+       if (Z_TYPE(zv) != IS_UNDEF) {
                elem->ast = zend_ast_create_zval_with_lineno(&zv, 0, start_lineno);
        }
 
index 017e84a9e4922c3bc69bbb83ebfcb96cb9ed9a1a..2941546e06e4338bc127a901658aec761246895c 100644 (file)
@@ -203,6 +203,12 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
 %token T_TRAIT_C         "__TRAIT__ (T_TRAIT_C)"
 %token T_METHOD_C        "__METHOD__ (T_METHOD_C)"
 %token T_FUNC_C          "__FUNCTION__ (T_FUNC_C)"
+%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)"
@@ -216,14 +222,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
 %token T_POW             "** (T_POW)"
 %token T_POW_EQUAL       "**= (T_POW_EQUAL)"
 
-/* Special tokens (ignorred by PHP compiler, T_WHITESPACE must be first) */
-%token T_WHITESPACE      "whitespace (T_WHITESPACE)"
-%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 used to force a parse error from the lexer */
 %token T_ERROR
 
index 1775c595567df20d49ed5f3f9c66e39c2f39af13..f91d10368742c7ec63ac6a06d936fe19313fed6e 100644 (file)
@@ -1343,7 +1343,7 @@ yyc_ST_BACKQUOTE:
 yy20:
                YYDEBUG(20, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2230 "Zend/zend_language_scanner.l"
+#line 2224 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -1381,13 +1381,10 @@ yy20:
 
        yyleng = YYCURSOR - SCNG(yy_text);
 
-       if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '`') == SUCCESS)) {
-               RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
-       } else {
-               RETURN_TOKEN(T_ERROR);
-       }
+       zend_scan_escape_string(zendlval, yytext, yyleng, '`');
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 1391 "Zend/zend_language_scanner.c"
+#line 1388 "Zend/zend_language_scanner.c"
 yy21:
                YYDEBUG(21, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1411,12 +1408,12 @@ yy22:
                ++YYCURSOR;
                YYDEBUG(23, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2171 "Zend/zend_language_scanner.l"
+#line 2168 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN('`');
 }
-#line 1420 "Zend/zend_language_scanner.c"
+#line 1417 "Zend/zend_language_scanner.c"
 yy24:
                YYDEBUG(24, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1442,7 +1439,7 @@ yy27:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1446 "Zend/zend_language_scanner.c"
+#line 1443 "Zend/zend_language_scanner.c"
 yy28:
                YYDEBUG(28, *YYCURSOR);
                ++YYCURSOR;
@@ -1453,20 +1450,20 @@ yy28:
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
 }
-#line 1457 "Zend/zend_language_scanner.c"
+#line 1454 "Zend/zend_language_scanner.c"
 yy30:
                YYDEBUG(30, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(31, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2158 "Zend/zend_language_scanner.l"
+#line 2155 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        RETURN_TOKEN(T_CURLY_OPEN);
 }
-#line 1470 "Zend/zend_language_scanner.c"
+#line 1467 "Zend/zend_language_scanner.c"
 yy32:
                YYDEBUG(32, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1487,7 +1484,7 @@ yy34:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1491 "Zend/zend_language_scanner.c"
+#line 1488 "Zend/zend_language_scanner.c"
 yy36:
                YYDEBUG(36, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1512,7 +1509,7 @@ yy37:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1516 "Zend/zend_language_scanner.c"
+#line 1513 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
@@ -1565,7 +1562,7 @@ yyc_ST_DOUBLE_QUOTES:
 yy42:
                YYDEBUG(42, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2177 "Zend/zend_language_scanner.l"
+#line 2174 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1611,24 +1608,21 @@ yy42:
 double_quotes_scan_done:
        yyleng = YYCURSOR - SCNG(yy_text);
 
-       if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '"') == SUCCESS)) {
-               RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
-       } else {
-               RETURN_TOKEN(T_ERROR);
-       }
+       zend_scan_escape_string(zendlval, yytext, yyleng, '"');
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 1621 "Zend/zend_language_scanner.c"
+#line 1615 "Zend/zend_language_scanner.c"
 yy43:
                YYDEBUG(43, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2166 "Zend/zend_language_scanner.l"
+#line 2163 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN('"');
 }
-#line 1632 "Zend/zend_language_scanner.c"
+#line 1626 "Zend/zend_language_scanner.c"
 yy45:
                YYDEBUG(45, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1672,7 +1666,7 @@ yy49:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1676 "Zend/zend_language_scanner.c"
+#line 1670 "Zend/zend_language_scanner.c"
 yy50:
                YYDEBUG(50, *YYCURSOR);
                ++YYCURSOR;
@@ -1683,20 +1677,20 @@ yy50:
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
 }
-#line 1687 "Zend/zend_language_scanner.c"
+#line 1681 "Zend/zend_language_scanner.c"
 yy52:
                YYDEBUG(52, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(53, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2158 "Zend/zend_language_scanner.l"
+#line 2155 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        RETURN_TOKEN(T_CURLY_OPEN);
 }
-#line 1700 "Zend/zend_language_scanner.c"
+#line 1694 "Zend/zend_language_scanner.c"
 yy54:
                YYDEBUG(54, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1717,7 +1711,7 @@ yy56:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1721 "Zend/zend_language_scanner.c"
+#line 1715 "Zend/zend_language_scanner.c"
 yy58:
                YYDEBUG(58, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1742,7 +1736,7 @@ yy59:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1746 "Zend/zend_language_scanner.c"
+#line 1740 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_END_HEREDOC:
@@ -1753,7 +1747,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(64, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2144 "Zend/zend_language_scanner.l"
+#line 2141 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -1766,7 +1760,7 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_END_HEREDOC);
 }
-#line 1770 "Zend/zend_language_scanner.c"
+#line 1764 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
@@ -1814,7 +1808,7 @@ yyc_ST_HEREDOC:
 yy68:
                YYDEBUG(68, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2275 "Zend/zend_language_scanner.l"
+#line 2266 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -1884,13 +1878,10 @@ yy68:
 heredoc_scan_done:
        yyleng = YYCURSOR - SCNG(yy_text);
 
-       if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0) == SUCCESS)) {
-               RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
-       } else {
-               RETURN_TOKEN(T_ERROR);
-       }
+       zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 1894 "Zend/zend_language_scanner.c"
+#line 1885 "Zend/zend_language_scanner.c"
 yy69:
                YYDEBUG(69, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1934,7 +1925,7 @@ yy73:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1938 "Zend/zend_language_scanner.c"
+#line 1929 "Zend/zend_language_scanner.c"
 yy74:
                YYDEBUG(74, *YYCURSOR);
                ++YYCURSOR;
@@ -1945,20 +1936,20 @@ yy74:
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
 }
-#line 1949 "Zend/zend_language_scanner.c"
+#line 1940 "Zend/zend_language_scanner.c"
 yy76:
                YYDEBUG(76, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(77, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2158 "Zend/zend_language_scanner.l"
+#line 2155 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        RETURN_TOKEN(T_CURLY_OPEN);
 }
-#line 1962 "Zend/zend_language_scanner.c"
+#line 1953 "Zend/zend_language_scanner.c"
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1979,7 +1970,7 @@ yy80:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1983 "Zend/zend_language_scanner.c"
+#line 1974 "Zend/zend_language_scanner.c"
 yy82:
                YYDEBUG(82, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2004,7 +1995,7 @@ yy83:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 2008 "Zend/zend_language_scanner.c"
+#line 1999 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
@@ -2173,7 +2164,7 @@ yy87:
                ++YYCURSOR;
                YYDEBUG(88, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2409 "Zend/zend_language_scanner.l"
+#line 2397 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -2182,7 +2173,7 @@ yy87:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 2186 "Zend/zend_language_scanner.c"
+#line 2177 "Zend/zend_language_scanner.c"
 yy89:
                YYDEBUG(89, *YYCURSOR);
                ++YYCURSOR;
@@ -2199,7 +2190,7 @@ yy89:
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_WHITESPACE);
 }
-#line 2203 "Zend/zend_language_scanner.c"
+#line 2194 "Zend/zend_language_scanner.c"
 yy92:
                YYDEBUG(92, *YYCURSOR);
                ++YYCURSOR;
@@ -2211,7 +2202,7 @@ yy93:
                {
        RETURN_TOKEN(yytext[0]);
 }
-#line 2215 "Zend/zend_language_scanner.c"
+#line 2206 "Zend/zend_language_scanner.c"
 yy94:
                YYDEBUG(94, *YYCURSOR);
                ++YYCURSOR;
@@ -2225,11 +2216,8 @@ yy94:
                switch (*YYCURSOR++) {
                        case '"':
                                yyleng = YYCURSOR - SCNG(yy_text);
-                               if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS)) {
-                                       RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
-                               } else {
-                                       RETURN_TOKEN(T_ERROR);
-                               }
+                               zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"');
+                               RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
                        case '$':
                                if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
                                        break;
@@ -2261,7 +2249,7 @@ yy94:
        BEGIN(ST_DOUBLE_QUOTES);
        RETURN_TOKEN('"');
 }
-#line 2265 "Zend/zend_language_scanner.c"
+#line 2253 "Zend/zend_language_scanner.c"
 yy96:
                YYDEBUG(96, *YYCURSOR);
                ++YYCURSOR;
@@ -2296,7 +2284,7 @@ yy96:
 
        RETURN_TOKEN(T_COMMENT);
 }
-#line 2300 "Zend/zend_language_scanner.c"
+#line 2288 "Zend/zend_language_scanner.c"
 yy98:
                YYDEBUG(98, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2395,7 +2383,7 @@ yy101:
        }
        RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
 }
-#line 2399 "Zend/zend_language_scanner.c"
+#line 2387 "Zend/zend_language_scanner.c"
 yy103:
                YYDEBUG(103, *YYCURSOR);
                yyaccept = 0;
@@ -2537,7 +2525,7 @@ yy111:
                if (end != yytext + yyleng) {
                        zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
                        ZVAL_UNDEF(zendlval);
-                       RETURN_TOKEN(T_ERROR);
+                       RETURN_TOKEN(T_LNUMBER);
                }
        } else {
                errno = 0;
@@ -2554,7 +2542,7 @@ yy111:
                                zend_throw_exception(zend_ce_parse_error,
                                        "Invalid numeric literal", 0);
                                ZVAL_UNDEF(zendlval);
-                               RETURN_TOKEN(T_ERROR);
+                               RETURN_TOKEN(T_DNUMBER);
                        }
                        RETURN_TOKEN(T_DNUMBER);
                }
@@ -2562,13 +2550,13 @@ yy111:
                if (end != yytext + yyleng) {
                        zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
                        ZVAL_UNDEF(zendlval);
-                       RETURN_TOKEN(T_ERROR);
+                       RETURN_TOKEN(T_DNUMBER);
                }
        }
        ZEND_ASSERT(!errno);
        RETURN_TOKEN(T_LNUMBER);
 }
-#line 2572 "Zend/zend_language_scanner.c"
+#line 2560 "Zend/zend_language_scanner.c"
 yy112:
                YYDEBUG(112, *YYCURSOR);
                yyaccept = 1;
@@ -2654,7 +2642,7 @@ yy120:
        zend_copy_value(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_STRING);
 }
-#line 2658 "Zend/zend_language_scanner.c"
+#line 2646 "Zend/zend_language_scanner.c"
 yy121:
                YYDEBUG(121, *YYCURSOR);
                yyaccept = 2;
@@ -2943,7 +2931,7 @@ yy142:
                {
        RETURN_TOKEN(T_NS_SEPARATOR);
 }
-#line 2947 "Zend/zend_language_scanner.c"
+#line 2935 "Zend/zend_language_scanner.c"
 yy144:
                YYDEBUG(144, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2959,12 +2947,12 @@ yy146:
                ++YYCURSOR;
                YYDEBUG(147, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2138 "Zend/zend_language_scanner.l"
+#line 2135 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        RETURN_TOKEN('`');
 }
-#line 2968 "Zend/zend_language_scanner.c"
+#line 2956 "Zend/zend_language_scanner.c"
 yy148:
                YYDEBUG(148, *YYCURSOR);
                ++YYCURSOR;
@@ -2975,7 +2963,7 @@ yy148:
        yy_push_state(ST_IN_SCRIPTING);
        RETURN_TOKEN('{');
 }
-#line 2979 "Zend/zend_language_scanner.c"
+#line 2967 "Zend/zend_language_scanner.c"
 yy150:
                YYDEBUG(150, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2995,7 +2983,7 @@ yy151:
        }
        RETURN_TOKEN('}');
 }
-#line 2999 "Zend/zend_language_scanner.c"
+#line 2987 "Zend/zend_language_scanner.c"
 yy153:
                YYDEBUG(153, *YYCURSOR);
                ++YYCURSOR;
@@ -3007,7 +2995,7 @@ yy154:
                {
        RETURN_TOKEN(T_IS_NOT_EQUAL);
 }
-#line 3011 "Zend/zend_language_scanner.c"
+#line 2999 "Zend/zend_language_scanner.c"
 yy155:
                YYDEBUG(155, *YYCURSOR);
                ++YYCURSOR;
@@ -3037,7 +3025,7 @@ yy157:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 3041 "Zend/zend_language_scanner.c"
+#line 3029 "Zend/zend_language_scanner.c"
 yy158:
                YYDEBUG(158, *YYCURSOR);
                ++YYCURSOR;
@@ -3047,7 +3035,7 @@ yy158:
                {
        RETURN_TOKEN(T_MOD_EQUAL);
 }
-#line 3051 "Zend/zend_language_scanner.c"
+#line 3039 "Zend/zend_language_scanner.c"
 yy160:
                YYDEBUG(160, *YYCURSOR);
                ++YYCURSOR;
@@ -3057,7 +3045,7 @@ yy160:
                {
        RETURN_TOKEN(T_BOOLEAN_AND);
 }
-#line 3061 "Zend/zend_language_scanner.c"
+#line 3049 "Zend/zend_language_scanner.c"
 yy162:
                YYDEBUG(162, *YYCURSOR);
                ++YYCURSOR;
@@ -3067,7 +3055,7 @@ yy162:
                {
        RETURN_TOKEN(T_AND_EQUAL);
 }
-#line 3071 "Zend/zend_language_scanner.c"
+#line 3059 "Zend/zend_language_scanner.c"
 yy164:
                YYDEBUG(164, *YYCURSOR);
                ++YYCURSOR;
@@ -3201,7 +3189,7 @@ yy176:
                {
        RETURN_TOKEN(T_POW);
 }
-#line 3205 "Zend/zend_language_scanner.c"
+#line 3193 "Zend/zend_language_scanner.c"
 yy178:
                YYDEBUG(178, *YYCURSOR);
                ++YYCURSOR;
@@ -3211,7 +3199,7 @@ yy178:
                {
        RETURN_TOKEN(T_MUL_EQUAL);
 }
-#line 3215 "Zend/zend_language_scanner.c"
+#line 3203 "Zend/zend_language_scanner.c"
 yy180:
                YYDEBUG(180, *YYCURSOR);
                ++YYCURSOR;
@@ -3221,7 +3209,7 @@ yy180:
                {
        RETURN_TOKEN(T_INC);
 }
-#line 3225 "Zend/zend_language_scanner.c"
+#line 3213 "Zend/zend_language_scanner.c"
 yy182:
                YYDEBUG(182, *YYCURSOR);
                ++YYCURSOR;
@@ -3231,7 +3219,7 @@ yy182:
                {
        RETURN_TOKEN(T_PLUS_EQUAL);
 }
-#line 3235 "Zend/zend_language_scanner.c"
+#line 3223 "Zend/zend_language_scanner.c"
 yy184:
                YYDEBUG(184, *YYCURSOR);
                ++YYCURSOR;
@@ -3241,7 +3229,7 @@ yy184:
                {
        RETURN_TOKEN(T_DEC);
 }
-#line 3245 "Zend/zend_language_scanner.c"
+#line 3233 "Zend/zend_language_scanner.c"
 yy186:
                YYDEBUG(186, *YYCURSOR);
                ++YYCURSOR;
@@ -3251,7 +3239,7 @@ yy186:
                {
        RETURN_TOKEN(T_MINUS_EQUAL);
 }
-#line 3255 "Zend/zend_language_scanner.c"
+#line 3243 "Zend/zend_language_scanner.c"
 yy188:
                YYDEBUG(188, *YYCURSOR);
                ++YYCURSOR;
@@ -3262,7 +3250,7 @@ yy188:
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        RETURN_TOKEN(T_OBJECT_OPERATOR);
 }
-#line 3266 "Zend/zend_language_scanner.c"
+#line 3254 "Zend/zend_language_scanner.c"
 yy190:
                YYDEBUG(190, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3294,7 +3282,7 @@ yy193:
        ZEND_ASSERT(end == yytext + yyleng);
        RETURN_TOKEN(T_DNUMBER);
 }
-#line 3298 "Zend/zend_language_scanner.c"
+#line 3286 "Zend/zend_language_scanner.c"
 yy194:
                YYDEBUG(194, *YYCURSOR);
                ++YYCURSOR;
@@ -3304,7 +3292,7 @@ yy194:
                {
        RETURN_TOKEN(T_CONCAT_EQUAL);
 }
-#line 3308 "Zend/zend_language_scanner.c"
+#line 3296 "Zend/zend_language_scanner.c"
 yy196:
                YYDEBUG(196, *YYCURSOR);
                yyaccept = 4;
@@ -3346,7 +3334,7 @@ yy197:
 
        RETURN_TOKEN(T_COMMENT);
 }
-#line 3350 "Zend/zend_language_scanner.c"
+#line 3338 "Zend/zend_language_scanner.c"
 yy198:
                YYDEBUG(198, *YYCURSOR);
                ++YYCURSOR;
@@ -3356,7 +3344,7 @@ yy198:
                {
        RETURN_TOKEN(T_DIV_EQUAL);
 }
-#line 3360 "Zend/zend_language_scanner.c"
+#line 3348 "Zend/zend_language_scanner.c"
 yy200:
                YYDEBUG(200, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3392,7 +3380,7 @@ yy203:
                {
        RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM);
 }
-#line 3396 "Zend/zend_language_scanner.c"
+#line 3384 "Zend/zend_language_scanner.c"
 yy205:
                YYDEBUG(205, *YYCURSOR);
                yyaccept = 5;
@@ -3407,7 +3395,7 @@ yy206:
                {
        RETURN_TOKEN(T_SL);
 }
-#line 3411 "Zend/zend_language_scanner.c"
+#line 3399 "Zend/zend_language_scanner.c"
 yy207:
                YYDEBUG(207, *YYCURSOR);
                ++YYCURSOR;
@@ -3418,7 +3406,7 @@ yy207:
                {
        RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL);
 }
-#line 3422 "Zend/zend_language_scanner.c"
+#line 3410 "Zend/zend_language_scanner.c"
 yy209:
                YYDEBUG(209, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3433,7 +3421,7 @@ yy210:
                {
        RETURN_TOKEN(T_IS_EQUAL);
 }
-#line 3437 "Zend/zend_language_scanner.c"
+#line 3425 "Zend/zend_language_scanner.c"
 yy212:
                YYDEBUG(212, *YYCURSOR);
                ++YYCURSOR;
@@ -3443,7 +3431,7 @@ yy212:
                {
        RETURN_TOKEN(T_DOUBLE_ARROW);
 }
-#line 3447 "Zend/zend_language_scanner.c"
+#line 3435 "Zend/zend_language_scanner.c"
 yy214:
                YYDEBUG(214, *YYCURSOR);
                ++YYCURSOR;
@@ -3453,7 +3441,7 @@ yy214:
                {
        RETURN_TOKEN(T_IS_GREATER_OR_EQUAL);
 }
-#line 3457 "Zend/zend_language_scanner.c"
+#line 3445 "Zend/zend_language_scanner.c"
 yy216:
                YYDEBUG(216, *YYCURSOR);
                ++YYCURSOR;
@@ -3464,7 +3452,7 @@ yy216:
                {
        RETURN_TOKEN(T_SR);
 }
-#line 3468 "Zend/zend_language_scanner.c"
+#line 3456 "Zend/zend_language_scanner.c"
 yy218:
                YYDEBUG(218, *YYCURSOR);
                ++YYCURSOR;
@@ -3481,7 +3469,7 @@ yy219:
        }
        RETURN_TOKEN(T_CLOSE_TAG);  /* implicit ';' at php-end tag */
 }
-#line 3485 "Zend/zend_language_scanner.c"
+#line 3473 "Zend/zend_language_scanner.c"
 yy220:
                YYDEBUG(220, *YYCURSOR);
                ++YYCURSOR;
@@ -3491,7 +3479,7 @@ yy220:
                {
        RETURN_TOKEN(T_COALESCE);
 }
-#line 3495 "Zend/zend_language_scanner.c"
+#line 3483 "Zend/zend_language_scanner.c"
 yy222:
                YYDEBUG(222, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3522,7 +3510,7 @@ yy225:
                {
        RETURN_TOKEN(T_AS);
 }
-#line 3526 "Zend/zend_language_scanner.c"
+#line 3514 "Zend/zend_language_scanner.c"
 yy227:
                YYDEBUG(227, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3612,7 +3600,7 @@ yy234:
                {
        RETURN_TOKEN(T_DO);
 }
-#line 3616 "Zend/zend_language_scanner.c"
+#line 3604 "Zend/zend_language_scanner.c"
 yy236:
                YYDEBUG(236, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3701,7 +3689,7 @@ yy247:
                {
        RETURN_TOKEN(T_IF);
 }
-#line 3705 "Zend/zend_language_scanner.c"
+#line 3693 "Zend/zend_language_scanner.c"
 yy249:
                YYDEBUG(249, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3766,7 +3754,7 @@ yy255:
                {
        RETURN_TOKEN(T_LOGICAL_OR);
 }
-#line 3770 "Zend/zend_language_scanner.c"
+#line 3758 "Zend/zend_language_scanner.c"
 yy257:
                YYDEBUG(257, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3884,7 +3872,7 @@ yy270:
                {
        RETURN_TOKEN(T_XOR_EQUAL);
 }
-#line 3888 "Zend/zend_language_scanner.c"
+#line 3876 "Zend/zend_language_scanner.c"
 yy272:
                YYDEBUG(272, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3916,7 +3904,7 @@ yy273:
                {
        RETURN_TOKEN(T_OR_EQUAL);
 }
-#line 3920 "Zend/zend_language_scanner.c"
+#line 3908 "Zend/zend_language_scanner.c"
 yy275:
                YYDEBUG(275, *YYCURSOR);
                ++YYCURSOR;
@@ -3926,7 +3914,7 @@ yy275:
                {
        RETURN_TOKEN(T_BOOLEAN_OR);
 }
-#line 3930 "Zend/zend_language_scanner.c"
+#line 3918 "Zend/zend_language_scanner.c"
 yy277:
                YYDEBUG(277, *YYCURSOR);
                ++YYCURSOR;
@@ -3936,7 +3924,7 @@ yy277:
                {
        RETURN_TOKEN(T_IS_NOT_IDENTICAL);
 }
-#line 3940 "Zend/zend_language_scanner.c"
+#line 3928 "Zend/zend_language_scanner.c"
 yy279:
                YYDEBUG(279, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4006,7 +3994,7 @@ yy289:
                {
        RETURN_TOKEN(T_POW_EQUAL);
 }
-#line 4010 "Zend/zend_language_scanner.c"
+#line 3998 "Zend/zend_language_scanner.c"
 yy291:
                YYDEBUG(291, *YYCURSOR);
                ++YYCURSOR;
@@ -4016,7 +4004,7 @@ yy291:
                {
        RETURN_TOKEN(T_ELLIPSIS);
 }
-#line 4020 "Zend/zend_language_scanner.c"
+#line 4008 "Zend/zend_language_scanner.c"
 yy293:
                YYDEBUG(293, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4068,7 +4056,7 @@ yy294:
                RETURN_TOKEN(T_DNUMBER);
        }
 }
-#line 4072 "Zend/zend_language_scanner.c"
+#line 4060 "Zend/zend_language_scanner.c"
 yy297:
                YYDEBUG(297, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4122,7 +4110,7 @@ yy300:
                RETURN_TOKEN(T_DNUMBER);
        }
 }
-#line 4126 "Zend/zend_language_scanner.c"
+#line 4114 "Zend/zend_language_scanner.c"
 yy303:
                YYDEBUG(303, *YYCURSOR);
                ++YYCURSOR;
@@ -4161,7 +4149,7 @@ yy305:
                {
        RETURN_TOKEN(T_SL_EQUAL);
 }
-#line 4165 "Zend/zend_language_scanner.c"
+#line 4153 "Zend/zend_language_scanner.c"
 yy307:
                YYDEBUG(307, *YYCURSOR);
                ++YYCURSOR;
@@ -4171,7 +4159,7 @@ yy307:
                {
        RETURN_TOKEN(T_SPACESHIP);
 }
-#line 4175 "Zend/zend_language_scanner.c"
+#line 4163 "Zend/zend_language_scanner.c"
 yy309:
                YYDEBUG(309, *YYCURSOR);
                ++YYCURSOR;
@@ -4181,7 +4169,7 @@ yy309:
                {
        RETURN_TOKEN(T_IS_IDENTICAL);
 }
-#line 4185 "Zend/zend_language_scanner.c"
+#line 4173 "Zend/zend_language_scanner.c"
 yy311:
                YYDEBUG(311, *YYCURSOR);
                ++YYCURSOR;
@@ -4191,7 +4179,7 @@ yy311:
                {
        RETURN_TOKEN(T_SR_EQUAL);
 }
-#line 4195 "Zend/zend_language_scanner.c"
+#line 4183 "Zend/zend_language_scanner.c"
 yy313:
                YYDEBUG(313, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4219,7 +4207,7 @@ yy316:
                {
        RETURN_TOKEN(T_LOGICAL_AND);
 }
-#line 4223 "Zend/zend_language_scanner.c"
+#line 4211 "Zend/zend_language_scanner.c"
 yy318:
                YYDEBUG(318, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4304,7 +4292,7 @@ yy329:
                {
        RETURN_TOKEN(T_EXIT);
 }
-#line 4308 "Zend/zend_language_scanner.c"
+#line 4296 "Zend/zend_language_scanner.c"
 yy331:
                YYDEBUG(331, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4390,7 +4378,7 @@ yy340:
                {
        RETURN_TOKEN(T_FOR);
 }
-#line 4394 "Zend/zend_language_scanner.c"
+#line 4382 "Zend/zend_language_scanner.c"
 yy341:
                YYDEBUG(341, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4463,7 +4451,7 @@ yy351:
                {
        RETURN_TOKEN(T_NEW);
 }
-#line 4467 "Zend/zend_language_scanner.c"
+#line 4455 "Zend/zend_language_scanner.c"
 yy353:
                YYDEBUG(353, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4540,7 +4528,7 @@ yy362:
                {
        RETURN_TOKEN(T_TRY);
 }
-#line 4544 "Zend/zend_language_scanner.c"
+#line 4532 "Zend/zend_language_scanner.c"
 yy364:
                YYDEBUG(364, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4559,7 +4547,7 @@ yy365:
                {
        RETURN_TOKEN(T_USE);
 }
-#line 4563 "Zend/zend_language_scanner.c"
+#line 4551 "Zend/zend_language_scanner.c"
 yy367:
                YYDEBUG(367, *YYCURSOR);
                ++YYCURSOR;
@@ -4572,7 +4560,7 @@ yy367:
                {
        RETURN_TOKEN(T_VAR);
 }
-#line 4576 "Zend/zend_language_scanner.c"
+#line 4564 "Zend/zend_language_scanner.c"
 yy369:
                YYDEBUG(369, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4591,7 +4579,7 @@ yy370:
                {
        RETURN_TOKEN(T_LOGICAL_XOR);
 }
-#line 4595 "Zend/zend_language_scanner.c"
+#line 4583 "Zend/zend_language_scanner.c"
 yy372:
                YYDEBUG(372, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4809,7 +4797,7 @@ yy401:
                {
        RETURN_TOKEN(T_CASE);
 }
-#line 4813 "Zend/zend_language_scanner.c"
+#line 4801 "Zend/zend_language_scanner.c"
 yy403:
                YYDEBUG(403, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4864,7 +4852,7 @@ yy410:
                {
        RETURN_TOKEN(T_ECHO);
 }
-#line 4868 "Zend/zend_language_scanner.c"
+#line 4856 "Zend/zend_language_scanner.c"
 yy412:
                YYDEBUG(412, *YYCURSOR);
                ++YYCURSOR;
@@ -4892,7 +4880,7 @@ yy413:
                {
        RETURN_TOKEN(T_ELSE);
 }
-#line 4896 "Zend/zend_language_scanner.c"
+#line 4884 "Zend/zend_language_scanner.c"
 yy414:
                YYDEBUG(414, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4941,7 +4929,7 @@ yy420:
                {
        RETURN_TOKEN(T_EVAL);
 }
-#line 4945 "Zend/zend_language_scanner.c"
+#line 4933 "Zend/zend_language_scanner.c"
 yy422:
                YYDEBUG(422, *YYCURSOR);
                ++YYCURSOR;
@@ -4954,7 +4942,7 @@ yy422:
                {
        RETURN_TOKEN(T_EXIT);
 }
-#line 4958 "Zend/zend_language_scanner.c"
+#line 4946 "Zend/zend_language_scanner.c"
 yy424:
                YYDEBUG(424, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4997,7 +4985,7 @@ yy429:
                {
        RETURN_TOKEN(T_GOTO);
 }
-#line 5001 "Zend/zend_language_scanner.c"
+#line 4989 "Zend/zend_language_scanner.c"
 yy431:
                YYDEBUG(431, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5050,7 +5038,7 @@ yy436:
                {
        RETURN_TOKEN(T_LIST);
 }
-#line 5054 "Zend/zend_language_scanner.c"
+#line 5042 "Zend/zend_language_scanner.c"
 yy438:
                YYDEBUG(438, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5241,7 +5229,7 @@ yy467:
                {
        RETURN_TOKEN(T_INT_CAST);
 }
-#line 5245 "Zend/zend_language_scanner.c"
+#line 5233 "Zend/zend_language_scanner.c"
 yy470:
                YYDEBUG(470, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5338,7 +5326,7 @@ yy480:
 yy481:
                YYDEBUG(481, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2090 "Zend/zend_language_scanner.l"
+#line 2087 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -5385,7 +5373,7 @@ yy481:
 
        RETURN_TOKEN(T_START_HEREDOC);
 }
-#line 5389 "Zend/zend_language_scanner.c"
+#line 5377 "Zend/zend_language_scanner.c"
 yy482:
                YYDEBUG(482, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5409,7 +5397,7 @@ yy484:
                {
        RETURN_TOKEN(T_ARRAY);
 }
-#line 5413 "Zend/zend_language_scanner.c"
+#line 5401 "Zend/zend_language_scanner.c"
 yy486:
                YYDEBUG(486, *YYCURSOR);
                ++YYCURSOR;
@@ -5422,7 +5410,7 @@ yy486:
                {
        RETURN_TOKEN(T_BREAK);
 }
-#line 5426 "Zend/zend_language_scanner.c"
+#line 5414 "Zend/zend_language_scanner.c"
 yy488:
                YYDEBUG(488, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5441,7 +5429,7 @@ yy489:
                {
        RETURN_TOKEN(T_CATCH);
 }
-#line 5445 "Zend/zend_language_scanner.c"
+#line 5433 "Zend/zend_language_scanner.c"
 yy491:
                YYDEBUG(491, *YYCURSOR);
                ++YYCURSOR;
@@ -5454,7 +5442,7 @@ yy491:
                {
        RETURN_TOKEN(T_CLASS);
 }
-#line 5458 "Zend/zend_language_scanner.c"
+#line 5446 "Zend/zend_language_scanner.c"
 yy493:
                YYDEBUG(493, *YYCURSOR);
                ++YYCURSOR;
@@ -5467,7 +5455,7 @@ yy493:
                {
        RETURN_TOKEN(T_CLONE);
 }
-#line 5471 "Zend/zend_language_scanner.c"
+#line 5459 "Zend/zend_language_scanner.c"
 yy495:
                YYDEBUG(495, *YYCURSOR);
                ++YYCURSOR;
@@ -5480,7 +5468,7 @@ yy495:
                {
        RETURN_TOKEN(T_CONST);
 }
-#line 5484 "Zend/zend_language_scanner.c"
+#line 5472 "Zend/zend_language_scanner.c"
 yy497:
                YYDEBUG(497, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5517,7 +5505,7 @@ yy501:
                {
        RETURN_TOKEN(T_EMPTY);
 }
-#line 5521 "Zend/zend_language_scanner.c"
+#line 5509 "Zend/zend_language_scanner.c"
 yy503:
                YYDEBUG(503, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5542,7 +5530,7 @@ yy505:
                {
        RETURN_TOKEN(T_ENDIF);
 }
-#line 5546 "Zend/zend_language_scanner.c"
+#line 5534 "Zend/zend_language_scanner.c"
 yy507:
                YYDEBUG(507, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5588,7 +5576,7 @@ yy511:
                {
        RETURN_TOKEN(T_FINAL);
 }
-#line 5592 "Zend/zend_language_scanner.c"
+#line 5580 "Zend/zend_language_scanner.c"
 yy512:
                YYDEBUG(512, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5649,7 +5637,7 @@ yy520:
                {
        RETURN_TOKEN(T_ISSET);
 }
-#line 5653 "Zend/zend_language_scanner.c"
+#line 5641 "Zend/zend_language_scanner.c"
 yy522:
                YYDEBUG(522, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5668,7 +5656,7 @@ yy523:
                {
        RETURN_TOKEN(T_PRINT);
 }
-#line 5672 "Zend/zend_language_scanner.c"
+#line 5660 "Zend/zend_language_scanner.c"
 yy525:
                YYDEBUG(525, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5723,7 +5711,7 @@ yy532:
                {
        RETURN_TOKEN(T_THROW);
 }
-#line 5727 "Zend/zend_language_scanner.c"
+#line 5715 "Zend/zend_language_scanner.c"
 yy534:
                YYDEBUG(534, *YYCURSOR);
                ++YYCURSOR;
@@ -5736,7 +5724,7 @@ yy534:
                {
        RETURN_TOKEN(T_TRAIT);
 }
-#line 5740 "Zend/zend_language_scanner.c"
+#line 5728 "Zend/zend_language_scanner.c"
 yy536:
                YYDEBUG(536, *YYCURSOR);
                ++YYCURSOR;
@@ -5749,7 +5737,7 @@ yy536:
                {
        RETURN_TOKEN(T_UNSET);
 }
-#line 5753 "Zend/zend_language_scanner.c"
+#line 5741 "Zend/zend_language_scanner.c"
 yy538:
                YYDEBUG(538, *YYCURSOR);
                ++YYCURSOR;
@@ -5762,7 +5750,7 @@ yy538:
                {
        RETURN_TOKEN(T_WHILE);
 }
-#line 5766 "Zend/zend_language_scanner.c"
+#line 5754 "Zend/zend_language_scanner.c"
 yy540:
                YYDEBUG(540, *YYCURSOR);
                yyaccept = 6;
@@ -5784,7 +5772,7 @@ yy541:
                {
        RETURN_TOKEN(T_YIELD);
 }
-#line 5788 "Zend/zend_language_scanner.c"
+#line 5776 "Zend/zend_language_scanner.c"
 yy542:
                YYDEBUG(542, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5880,7 +5868,7 @@ yy555:
                {
        RETURN_TOKEN(T_BOOL_CAST);
 }
-#line 5884 "Zend/zend_language_scanner.c"
+#line 5872 "Zend/zend_language_scanner.c"
 yy558:
                YYDEBUG(558, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5914,7 +5902,7 @@ yy562:
                {
        RETURN_TOKEN(T_DOUBLE_CAST);
 }
-#line 5918 "Zend/zend_language_scanner.c"
+#line 5906 "Zend/zend_language_scanner.c"
 yy564:
                YYDEBUG(564, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5983,7 +5971,7 @@ yy573:
                {
        RETURN_TOKEN(T_ELSEIF);
 }
-#line 5987 "Zend/zend_language_scanner.c"
+#line 5975 "Zend/zend_language_scanner.c"
 yy575:
                YYDEBUG(575, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6017,7 +6005,7 @@ yy577:
                {
        RETURN_TOKEN(T_ENDFOR);
 }
-#line 6021 "Zend/zend_language_scanner.c"
+#line 6009 "Zend/zend_language_scanner.c"
 yy578:
                YYDEBUG(578, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6066,7 +6054,7 @@ yy584:
                {
        RETURN_TOKEN(T_GLOBAL);
 }
-#line 6070 "Zend/zend_language_scanner.c"
+#line 6058 "Zend/zend_language_scanner.c"
 yy586:
                YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6127,7 +6115,7 @@ yy594:
                {
        RETURN_TOKEN(T_PUBLIC);
 }
-#line 6131 "Zend/zend_language_scanner.c"
+#line 6119 "Zend/zend_language_scanner.c"
 yy596:
                YYDEBUG(596, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6146,7 +6134,7 @@ yy597:
                {
        RETURN_TOKEN(T_RETURN);
 }
-#line 6150 "Zend/zend_language_scanner.c"
+#line 6138 "Zend/zend_language_scanner.c"
 yy599:
                YYDEBUG(599, *YYCURSOR);
                ++YYCURSOR;
@@ -6159,7 +6147,7 @@ yy599:
                {
        RETURN_TOKEN(T_STATIC);
 }
-#line 6163 "Zend/zend_language_scanner.c"
+#line 6151 "Zend/zend_language_scanner.c"
 yy601:
                YYDEBUG(601, *YYCURSOR);
                ++YYCURSOR;
@@ -6172,7 +6160,7 @@ yy601:
                {
        RETURN_TOKEN(T_SWITCH);
 }
-#line 6176 "Zend/zend_language_scanner.c"
+#line 6164 "Zend/zend_language_scanner.c"
 yy603:
                YYDEBUG(603, *YYCURSOR);
                ++YYCURSOR;
@@ -6256,7 +6244,7 @@ yy614:
                {
        RETURN_TOKEN(T_ARRAY_CAST);
 }
-#line 6260 "Zend/zend_language_scanner.c"
+#line 6248 "Zend/zend_language_scanner.c"
 yy616:
                YYDEBUG(616, *YYCURSOR);
                ++YYCURSOR;
@@ -6306,7 +6294,7 @@ yy622:
                {
        RETURN_TOKEN(T_UNSET_CAST);
 }
-#line 6310 "Zend/zend_language_scanner.c"
+#line 6298 "Zend/zend_language_scanner.c"
 yy624:
                YYDEBUG(624, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6337,7 +6325,7 @@ yy627:
                {
        RETURN_TOKEN(T_DECLARE);
 }
-#line 6341 "Zend/zend_language_scanner.c"
+#line 6329 "Zend/zend_language_scanner.c"
 yy629:
                YYDEBUG(629, *YYCURSOR);
                ++YYCURSOR;
@@ -6350,7 +6338,7 @@ yy629:
                {
        RETURN_TOKEN(T_DEFAULT);
 }
-#line 6354 "Zend/zend_language_scanner.c"
+#line 6342 "Zend/zend_language_scanner.c"
 yy631:
                YYDEBUG(631, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6387,7 +6375,7 @@ yy635:
                {
        RETURN_TOKEN(T_EXTENDS);
 }
-#line 6391 "Zend/zend_language_scanner.c"
+#line 6379 "Zend/zend_language_scanner.c"
 yy637:
                YYDEBUG(637, *YYCURSOR);
                ++YYCURSOR;
@@ -6400,7 +6388,7 @@ yy637:
                {
        RETURN_TOKEN(T_FINALLY);
 }
-#line 6404 "Zend/zend_language_scanner.c"
+#line 6392 "Zend/zend_language_scanner.c"
 yy639:
                YYDEBUG(639, *YYCURSOR);
                ++YYCURSOR;
@@ -6413,7 +6401,7 @@ yy639:
                {
        RETURN_TOKEN(T_FOREACH);
 }
-#line 6417 "Zend/zend_language_scanner.c"
+#line 6405 "Zend/zend_language_scanner.c"
 yy641:
                YYDEBUG(641, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6451,7 +6439,7 @@ yy644:
                {
        RETURN_TOKEN(T_INCLUDE);
 }
-#line 6455 "Zend/zend_language_scanner.c"
+#line 6443 "Zend/zend_language_scanner.c"
 yy645:
                YYDEBUG(645, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6488,7 +6476,7 @@ yy649:
                {
        RETURN_TOKEN(T_PRIVATE);
 }
-#line 6492 "Zend/zend_language_scanner.c"
+#line 6480 "Zend/zend_language_scanner.c"
 yy651:
                YYDEBUG(651, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6520,7 +6508,7 @@ yy653:
                {
        RETURN_TOKEN(T_REQUIRE);
 }
-#line 6524 "Zend/zend_language_scanner.c"
+#line 6512 "Zend/zend_language_scanner.c"
 yy654:
                YYDEBUG(654, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6544,7 +6532,7 @@ yy656:
                {
        RETURN_TOKEN(T_DIR);
 }
-#line 6548 "Zend/zend_language_scanner.c"
+#line 6536 "Zend/zend_language_scanner.c"
 yy658:
                YYDEBUG(658, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6593,7 +6581,7 @@ yy665:
                {
        RETURN_TOKEN(T_STRING_CAST);
 }
-#line 6597 "Zend/zend_language_scanner.c"
+#line 6585 "Zend/zend_language_scanner.c"
 yy667:
                YYDEBUG(667, *YYCURSOR);
                ++YYCURSOR;
@@ -6603,7 +6591,7 @@ yy667:
                {
        RETURN_TOKEN(T_OBJECT_CAST);
 }
-#line 6607 "Zend/zend_language_scanner.c"
+#line 6595 "Zend/zend_language_scanner.c"
 yy669:
                YYDEBUG(669, *YYCURSOR);
                ++YYCURSOR;
@@ -6616,7 +6604,7 @@ yy669:
                {
        RETURN_TOKEN(T_ABSTRACT);
 }
-#line 6620 "Zend/zend_language_scanner.c"
+#line 6608 "Zend/zend_language_scanner.c"
 yy671:
                YYDEBUG(671, *YYCURSOR);
                ++YYCURSOR;
@@ -6629,7 +6617,7 @@ yy671:
                {
        RETURN_TOKEN(T_CALLABLE);
 }
-#line 6633 "Zend/zend_language_scanner.c"
+#line 6621 "Zend/zend_language_scanner.c"
 yy673:
                YYDEBUG(673, *YYCURSOR);
                ++YYCURSOR;
@@ -6642,7 +6630,7 @@ yy673:
                {
        RETURN_TOKEN(T_CONTINUE);
 }
-#line 6646 "Zend/zend_language_scanner.c"
+#line 6634 "Zend/zend_language_scanner.c"
 yy675:
                YYDEBUG(675, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6673,7 +6661,7 @@ yy678:
                {
        RETURN_TOKEN(T_ENDWHILE);
 }
-#line 6677 "Zend/zend_language_scanner.c"
+#line 6665 "Zend/zend_language_scanner.c"
 yy680:
                YYDEBUG(680, *YYCURSOR);
                ++YYCURSOR;
@@ -6686,7 +6674,7 @@ yy680:
                {
        RETURN_TOKEN(T_FUNCTION);
 }
-#line 6690 "Zend/zend_language_scanner.c"
+#line 6678 "Zend/zend_language_scanner.c"
 yy682:
                YYDEBUG(682, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6758,7 +6746,7 @@ yy692:
                {
        RETURN_TOKEN(T_FILE);
 }
-#line 6762 "Zend/zend_language_scanner.c"
+#line 6750 "Zend/zend_language_scanner.c"
 yy694:
                YYDEBUG(694, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6783,7 +6771,7 @@ yy696:
                {
        RETURN_TOKEN(T_LINE);
 }
-#line 6787 "Zend/zend_language_scanner.c"
+#line 6775 "Zend/zend_language_scanner.c"
 yy698:
                YYDEBUG(698, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6824,7 +6812,7 @@ yy703:
                {
        RETURN_TOKEN(T_ENDSWITCH);
 }
-#line 6828 "Zend/zend_language_scanner.c"
+#line 6816 "Zend/zend_language_scanner.c"
 yy705:
                YYDEBUG(705, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6855,7 +6843,7 @@ yy708:
                {
     RETURN_TOKEN(T_INSTEADOF);
 }
-#line 6859 "Zend/zend_language_scanner.c"
+#line 6847 "Zend/zend_language_scanner.c"
 yy710:
                YYDEBUG(710, *YYCURSOR);
                ++YYCURSOR;
@@ -6868,7 +6856,7 @@ yy710:
                {
        RETURN_TOKEN(T_INTERFACE);
 }
-#line 6872 "Zend/zend_language_scanner.c"
+#line 6860 "Zend/zend_language_scanner.c"
 yy712:
                YYDEBUG(712, *YYCURSOR);
                ++YYCURSOR;
@@ -6881,7 +6869,7 @@ yy712:
                {
        RETURN_TOKEN(T_NAMESPACE);
 }
-#line 6885 "Zend/zend_language_scanner.c"
+#line 6873 "Zend/zend_language_scanner.c"
 yy714:
                YYDEBUG(714, *YYCURSOR);
                ++YYCURSOR;
@@ -6894,7 +6882,7 @@ yy714:
                {
        RETURN_TOKEN(T_PROTECTED);
 }
-#line 6898 "Zend/zend_language_scanner.c"
+#line 6886 "Zend/zend_language_scanner.c"
 yy716:
                YYDEBUG(716, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6919,7 +6907,7 @@ yy718:
                {
        RETURN_TOKEN(T_CLASS_C);
 }
-#line 6923 "Zend/zend_language_scanner.c"
+#line 6911 "Zend/zend_language_scanner.c"
 yy720:
                YYDEBUG(720, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6955,7 +6943,7 @@ yy724:
                {
        RETURN_TOKEN(T_TRAIT_C);
 }
-#line 6959 "Zend/zend_language_scanner.c"
+#line 6947 "Zend/zend_language_scanner.c"
 yy726:
                YYDEBUG(726, *YYCURSOR);
                ++YYCURSOR;
@@ -6968,7 +6956,7 @@ yy726:
                {
        RETURN_TOKEN(T_ENDDECLARE);
 }
-#line 6972 "Zend/zend_language_scanner.c"
+#line 6960 "Zend/zend_language_scanner.c"
 yy728:
                YYDEBUG(728, *YYCURSOR);
                ++YYCURSOR;
@@ -6981,7 +6969,7 @@ yy728:
                {
        RETURN_TOKEN(T_ENDFOREACH);
 }
-#line 6985 "Zend/zend_language_scanner.c"
+#line 6973 "Zend/zend_language_scanner.c"
 yy730:
                YYDEBUG(730, *YYCURSOR);
                ++YYCURSOR;
@@ -6994,7 +6982,7 @@ yy730:
                {
        RETURN_TOKEN(T_IMPLEMENTS);
 }
-#line 6998 "Zend/zend_language_scanner.c"
+#line 6986 "Zend/zend_language_scanner.c"
 yy732:
                YYDEBUG(732, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7013,7 +7001,7 @@ yy733:
                {
        RETURN_TOKEN(T_INSTANCEOF);
 }
-#line 7017 "Zend/zend_language_scanner.c"
+#line 7005 "Zend/zend_language_scanner.c"
 yy735:
                YYDEBUG(735, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7065,7 +7053,7 @@ yy739:
                {
        RETURN_TOKEN(T_METHOD_C);
 }
-#line 7069 "Zend/zend_language_scanner.c"
+#line 7057 "Zend/zend_language_scanner.c"
 yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7095,7 +7083,7 @@ yy744:
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_YIELD_FROM);
 }
-#line 7099 "Zend/zend_language_scanner.c"
+#line 7087 "Zend/zend_language_scanner.c"
 yy746:
                YYDEBUG(746, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7124,7 +7112,7 @@ yy749:
                {
        RETURN_TOKEN(T_INCLUDE_ONCE);
 }
-#line 7128 "Zend/zend_language_scanner.c"
+#line 7116 "Zend/zend_language_scanner.c"
 yy751:
                YYDEBUG(751, *YYCURSOR);
                ++YYCURSOR;
@@ -7137,7 +7125,7 @@ yy751:
                {
        RETURN_TOKEN(T_REQUIRE_ONCE);
 }
-#line 7141 "Zend/zend_language_scanner.c"
+#line 7129 "Zend/zend_language_scanner.c"
 yy753:
                YYDEBUG(753, *YYCURSOR);
                ++YYCURSOR;
@@ -7150,7 +7138,7 @@ yy753:
                {
        RETURN_TOKEN(T_FUNC_C);
 }
-#line 7154 "Zend/zend_language_scanner.c"
+#line 7142 "Zend/zend_language_scanner.c"
 yy755:
                YYDEBUG(755, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7180,7 +7168,7 @@ yy758:
                {
        RETURN_TOKEN(T_NS_C);
 }
-#line 7184 "Zend/zend_language_scanner.c"
+#line 7172 "Zend/zend_language_scanner.c"
 yy760:
                YYDEBUG(760, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7198,7 +7186,7 @@ yy761:
                {
        RETURN_TOKEN(T_HALT_COMPILER);
 }
-#line 7202 "Zend/zend_language_scanner.c"
+#line 7190 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7270,7 +7258,7 @@ yy766:
        yy_pop_state();
        goto restart;
 }
-#line 7274 "Zend/zend_language_scanner.c"
+#line 7262 "Zend/zend_language_scanner.c"
 yy767:
                YYDEBUG(767, *YYCURSOR);
                ++YYCURSOR;
@@ -7287,7 +7275,7 @@ yy767:
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_WHITESPACE);
 }
-#line 7291 "Zend/zend_language_scanner.c"
+#line 7279 "Zend/zend_language_scanner.c"
 yy770:
                YYDEBUG(770, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7310,7 +7298,7 @@ yy771:
        zend_copy_value(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_STRING);
 }
-#line 7314 "Zend/zend_language_scanner.c"
+#line 7302 "Zend/zend_language_scanner.c"
 yy774:
                YYDEBUG(774, *YYCURSOR);
                ++YYCURSOR;
@@ -7320,7 +7308,7 @@ yy774:
                {
        RETURN_TOKEN(T_OBJECT_OPERATOR);
 }
-#line 7324 "Zend/zend_language_scanner.c"
+#line 7312 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_VARNAME:
@@ -7384,7 +7372,7 @@ yy779:
        yy_push_state(ST_IN_SCRIPTING);
        goto restart;
 }
-#line 7388 "Zend/zend_language_scanner.c"
+#line 7376 "Zend/zend_language_scanner.c"
 yy780:
                YYDEBUG(780, *YYCURSOR);
                yych = *(YYMARKER = ++YYCURSOR);
@@ -7439,7 +7427,7 @@ yy784:
        yy_push_state(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_STRING_VARNAME);
 }
-#line 7443 "Zend/zend_language_scanner.c"
+#line 7431 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
@@ -7450,7 +7438,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(789, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2352 "Zend/zend_language_scanner.l"
+#line 2340 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7506,7 +7494,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 7510 "Zend/zend_language_scanner.c"
+#line 7498 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7594,7 +7582,7 @@ yy792:
                ++YYCURSOR;
                YYDEBUG(793, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2409 "Zend/zend_language_scanner.l"
+#line 2397 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -7603,7 +7591,7 @@ yy792:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7607 "Zend/zend_language_scanner.c"
+#line 7595 "Zend/zend_language_scanner.c"
 yy794:
                YYDEBUG(794, *YYCURSOR);
                ++YYCURSOR;
@@ -7617,7 +7605,7 @@ yy794:
        ZVAL_NULL(zendlval);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 7621 "Zend/zend_language_scanner.c"
+#line 7609 "Zend/zend_language_scanner.c"
 yy796:
                YYDEBUG(796, *YYCURSOR);
                ++YYCURSOR;
@@ -7629,7 +7617,7 @@ yy797:
        /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */
        RETURN_TOKEN(yytext[0]);
 }
-#line 7633 "Zend/zend_language_scanner.c"
+#line 7621 "Zend/zend_language_scanner.c"
 yy798:
                YYDEBUG(798, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7680,7 +7668,7 @@ string:
        }
        RETURN_TOKEN(T_NUM_STRING);
 }
-#line 7684 "Zend/zend_language_scanner.c"
+#line 7672 "Zend/zend_language_scanner.c"
 yy801:
                YYDEBUG(801, *YYCURSOR);
                ++YYCURSOR;
@@ -7707,7 +7695,7 @@ yy803:
        zend_copy_value(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_STRING);
 }
-#line 7711 "Zend/zend_language_scanner.c"
+#line 7699 "Zend/zend_language_scanner.c"
 yy806:
                YYDEBUG(806, *YYCURSOR);
                ++YYCURSOR;
@@ -7718,7 +7706,7 @@ yy806:
        yy_pop_state();
        RETURN_TOKEN(']');
 }
-#line 7722 "Zend/zend_language_scanner.c"
+#line 7710 "Zend/zend_language_scanner.c"
 yy808:
                YYDEBUG(808, *YYCURSOR);
                ++YYCURSOR;
@@ -7748,7 +7736,7 @@ yy810:
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 7752 "Zend/zend_language_scanner.c"
+#line 7740 "Zend/zend_language_scanner.c"
 yy811:
                YYDEBUG(811, *YYCURSOR);
                ++YYCURSOR;
@@ -7765,7 +7753,7 @@ yy813:
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_NUM_STRING);
 }
-#line 7769 "Zend/zend_language_scanner.c"
+#line 7757 "Zend/zend_language_scanner.c"
 yy814:
                YYDEBUG(814, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7805,6 +7793,6 @@ yy819:
                goto yy813;
        }
 }
-#line 2418 "Zend/zend_language_scanner.l"
+#line 2406 "Zend/zend_language_scanner.l"
 
 }
index 033299d969cf5a4b4e012a78ec79fb63c934e7f8..6a1d5e021edb01931cb5315354ace3753578a757 100644 (file)
@@ -1663,7 +1663,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
                if (end != yytext + yyleng) {
                        zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
                        ZVAL_UNDEF(zendlval);
-                       RETURN_TOKEN(T_ERROR);
+                       RETURN_TOKEN(T_LNUMBER);
                }
        } else {
                errno = 0;
@@ -1680,7 +1680,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
                                zend_throw_exception(zend_ce_parse_error,
                                        "Invalid numeric literal", 0);
                                ZVAL_UNDEF(zendlval);
-                               RETURN_TOKEN(T_ERROR);
+                               RETURN_TOKEN(T_DNUMBER);
                        }
                        RETURN_TOKEN(T_DNUMBER);
                }
@@ -1688,7 +1688,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
                if (end != yytext + yyleng) {
                        zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
                        ZVAL_UNDEF(zendlval);
-                       RETURN_TOKEN(T_ERROR);
+                       RETURN_TOKEN(T_DNUMBER);
                }
        }
        ZEND_ASSERT(!errno);
@@ -2049,11 +2049,8 @@ inline_char_handler:
                switch (*YYCURSOR++) {
                        case '"':
                                yyleng = YYCURSOR - SCNG(yy_text);
-                               if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS)) {
-                                       RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
-                               } else {
-                                       RETURN_TOKEN(T_ERROR);
-                               }
+                               zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"');
+                               RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
                        case '$':
                                if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
                                        break;
@@ -2219,11 +2216,8 @@ inline_char_handler:
 double_quotes_scan_done:
        yyleng = YYCURSOR - SCNG(yy_text);
 
-       if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '"') == SUCCESS)) {
-               RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
-       } else {
-               RETURN_TOKEN(T_ERROR);
-       }
+       zend_scan_escape_string(zendlval, yytext, yyleng, '"');
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
 
 
@@ -2264,11 +2258,8 @@ double_quotes_scan_done:
 
        yyleng = YYCURSOR - SCNG(yy_text);
 
-       if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '`') == SUCCESS)) {
-               RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
-       } else {
-               RETURN_TOKEN(T_ERROR);
-       }
+       zend_scan_escape_string(zendlval, yytext, yyleng, '`');
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
 
 
@@ -2341,11 +2332,8 @@ double_quotes_scan_done:
 heredoc_scan_done:
        yyleng = YYCURSOR - SCNG(yy_text);
 
-       if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0) == SUCCESS)) {
-               RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
-       } else {
-               RETURN_TOKEN(T_ERROR);
-       }
+       zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
 
 
index 3f376e0f9afa5a09b2b1efc6e0fa38ec8b54fa96..700326ff41f20cc8178d16fa949f68a590fb0739 100644 (file)
@@ -33,7 +33,7 @@ Invalid numeric literal
 T_OPEN_TAG (<?php )
 T_STRING (var_dump)
 (
-T_ERROR (078)
+T_LNUMBER (078)
 )
 ;
 
@@ -41,7 +41,7 @@ Invalid UTF-8 codepoint escape sequence
 T_OPEN_TAG (<?php )
 T_STRING (var_dump)
 (
-T_ERROR ("\u{xyz}")
+T_CONSTANT_ENCAPSED_STRING ("\u{xyz}")
 )
 ;
 
@@ -49,7 +49,7 @@ Invalid UTF-8 codepoint escape sequence: Codepoint too large
 T_OPEN_TAG (<?php )
 T_STRING (var_dump)
 (
-T_ERROR ("\u{ffffff}")
+T_CONSTANT_ENCAPSED_STRING ("\u{ffffff}")
 )
 ;
 
@@ -57,10 +57,10 @@ Invalid numeric literal
 T_OPEN_TAG (<?php )
 T_STRING (var_dump)
 (
-T_ERROR (078)
+T_LNUMBER (078)
 T_WHITESPACE ( )
 +
 T_WHITESPACE ( )
-T_ERROR (078)
+T_LNUMBER (078)
 )
 ;
index dbe9f0aedc2b7e262ff8b7764968843ae4781a26..6b36ab0e39f41e92e48b4b1affecae9754e85488 100644 (file)
@@ -163,7 +163,6 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
        REGISTER_LONG_CONSTANT("T_NS_SEPARATOR", T_NS_SEPARATOR, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("T_ELLIPSIS", T_ELLIPSIS, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);
-       REGISTER_LONG_CONSTANT("T_ERROR", T_ERROR, CONST_CS | CONST_PERSISTENT);
 }
 
 char *get_token_type_name(int token_type)
@@ -303,7 +302,6 @@ char *get_token_type_name(int token_type)
                case T_NS_C: return "T_NS_C";
                case T_NS_SEPARATOR: return "T_NS_SEPARATOR";
                case T_ELLIPSIS: return "T_ELLIPSIS";
-               case T_ERROR: return "T_ERROR";
 
        }
        return "UNKNOWN";