From: Dmitry Stogov Date: Tue, 13 Mar 2018 22:08:03 +0000 (+0300) Subject: Revert "Handle scanner error in first place (don't hide them from ext/tokenizer)... X-Git-Tag: php-7.3.0alpha1~198 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d1585a9e3f7c6e3da7177f07c68b250543d8fbf2;p=php Revert "Handle scanner error in first place (don't hide them from ext/tokenizer) and cheaper whitespace handlig." This reverts commit 0d6da03f5c3e49b92cf6817ba8a7f8d6f60ee1aa. --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 873b963a15..ed90929249 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1690,16 +1690,25 @@ again: ZVAL_UNDEF(&zv); start_lineno = CG(zend_lineno); retval = lex_scan(&zv); + if (EG(exception)) { + return T_ERROR; + } - if (retval >= T_WHITESPACE) { - if (EXPECTED(retval < T_OPEN_TAG_WITH_ECHO)) { + switch (retval) { + case T_COMMENT: + case T_DOC_COMMENT: + case T_OPEN_TAG: + case T_WHITESPACE: goto again; - } else if (retval == T_OPEN_TAG_WITH_ECHO) { - retval = T_ECHO; - } else if (retval == T_CLOSE_TAG) { + + case T_CLOSE_TAG: retval = ';'; /* implicit ; */ - } - } else if (Z_TYPE(zv) != IS_UNDEF) { + break; + case T_OPEN_TAG_WITH_ECHO: + retval = T_ECHO; + break; + } + if (Z_TYPE(zv) != IS_UNDEF) { elem->ast = zend_ast_create_zval_with_lineno(&zv, 0, start_lineno); } diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 017e84a9e4..2941546e06 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -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 diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 1775c59556..f91d103687 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -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" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 033299d969..6a1d5e021e 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -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); } diff --git a/ext/tokenizer/tests/parse_errors.phpt b/ext/tokenizer/tests/parse_errors.phpt index 3f376e0f9a..700326ff41 100644 --- a/ext/tokenizer/tests/parse_errors.phpt +++ b/ext/tokenizer/tests/parse_errors.phpt @@ -33,7 +33,7 @@ Invalid numeric literal T_OPEN_TAG (