From: Nikita Popov Date: Mon, 13 May 2019 09:06:14 +0000 (+0200) Subject: Merge branch 'PHP-7.2' into PHP-7.3 X-Git-Tag: php-7.3.6RC1~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bec68d59a2ada17768d47c708eda52adc491e615;p=php Merge branch 'PHP-7.2' into PHP-7.3 --- bec68d59a2ada17768d47c708eda52adc491e615 diff --cc Zend/zend_language_scanner.c index 5d6d9cae91,d6543fadd2..511dea577f --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@@ -1453,7 -1317,7 +1453,7 @@@ yy3 ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2748 "Zend/zend_language_scanner.l" -#line 2390 "Zend/zend_language_scanner.l" ++#line 2749 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@@ -1496,7 -1361,7 +1496,7 @@@ yy10 ++YYCURSOR; YYDEBUG(11, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2222 "Zend/zend_language_scanner.l" -#line 2038 "Zend/zend_language_scanner.l" ++#line 2223 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@@ -1547,7 -1408,7 +1547,7 @@@ yy12 ++YYCURSOR; YYDEBUG(13, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2049 "Zend/zend_language_scanner.l" -#line 1898 "Zend/zend_language_scanner.l" ++#line 2050 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@@ -1610,7 -1468,7 +1610,7 @@@ yy17 ++YYCURSOR; YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2132 "Zend/zend_language_scanner.l" -#line 1969 "Zend/zend_language_scanner.l" ++#line 2133 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@@ -1872,9 -1702,9 +1873,9 @@@ yy27 } } ZEND_ASSERT(!errno); - RETURN_TOKEN(T_LNUMBER); + RETURN_TOKEN_WITH_VAL(T_LNUMBER); } - #line 1878 "Zend/zend_language_scanner.c" -#line 1708 "Zend/zend_language_scanner.c" ++#line 1879 "Zend/zend_language_scanner.c" yy28: YYDEBUG(28, *YYCURSOR); yyaccept = 1; @@@ -1956,11 -1786,12 +1957,11 @@@ yy35 yy36: YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2044 "Zend/zend_language_scanner.l" -#line 1892 "Zend/zend_language_scanner.l" ++#line 2045 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } - #line 1964 "Zend/zend_language_scanner.c" -#line 1795 "Zend/zend_language_scanner.c" ++#line 1965 "Zend/zend_language_scanner.c" yy37: YYDEBUG(37, *YYCURSOR); yyaccept = 2; @@@ -2249,7 -2080,7 +2250,7 @@@ yy58 { RETURN_TOKEN(T_NS_SEPARATOR); } - #line 2253 "Zend/zend_language_scanner.c" -#line 2084 "Zend/zend_language_scanner.c" ++#line 2254 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@@ -2265,12 -2096,12 +2266,12 @@@ yy62 ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2401 "Zend/zend_language_scanner.l" -#line 2128 "Zend/zend_language_scanner.l" ++#line 2402 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } - #line 2274 "Zend/zend_language_scanner.c" -#line 2105 "Zend/zend_language_scanner.c" ++#line 2275 "Zend/zend_language_scanner.c" yy64: YYDEBUG(64, *YYCURSOR); ++YYCURSOR; @@@ -2281,7 -2112,7 +2282,7 @@@ yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } - #line 2285 "Zend/zend_language_scanner.c" -#line 2116 "Zend/zend_language_scanner.c" ++#line 2286 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); yych = *++YYCURSOR; @@@ -2301,7 -2132,7 +2302,7 @@@ yy67 } RETURN_TOKEN('}'); } - #line 2305 "Zend/zend_language_scanner.c" -#line 2136 "Zend/zend_language_scanner.c" ++#line 2306 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@@ -2313,7 -2144,7 +2314,7 @@@ yy70 { RETURN_TOKEN(T_IS_NOT_EQUAL); } - #line 2317 "Zend/zend_language_scanner.c" -#line 2148 "Zend/zend_language_scanner.c" ++#line 2318 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); ++YYCURSOR; @@@ -2338,11 -2169,12 +2339,11 @@@ yy73: YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2022 "Zend/zend_language_scanner.l" -#line 1869 "Zend/zend_language_scanner.l" ++#line 2023 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 2346 "Zend/zend_language_scanner.c" -#line 2178 "Zend/zend_language_scanner.c" ++#line 2347 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; @@@ -2352,7 -2184,7 +2353,7 @@@ { RETURN_TOKEN(T_MOD_EQUAL); } - #line 2356 "Zend/zend_language_scanner.c" -#line 2188 "Zend/zend_language_scanner.c" ++#line 2357 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@@ -2362,7 -2194,7 +2363,7 @@@ { RETURN_TOKEN(T_BOOLEAN_AND); } - #line 2366 "Zend/zend_language_scanner.c" -#line 2198 "Zend/zend_language_scanner.c" ++#line 2367 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); ++YYCURSOR; @@@ -2372,7 -2204,7 +2373,7 @@@ { RETURN_TOKEN(T_AND_EQUAL); } - #line 2376 "Zend/zend_language_scanner.c" -#line 2208 "Zend/zend_language_scanner.c" ++#line 2377 "Zend/zend_language_scanner.c" yy80: YYDEBUG(80, *YYCURSOR); ++YYCURSOR; @@@ -2506,7 -2338,7 +2507,7 @@@ yy92 { RETURN_TOKEN(T_POW); } - #line 2510 "Zend/zend_language_scanner.c" -#line 2342 "Zend/zend_language_scanner.c" ++#line 2511 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; @@@ -2516,7 -2348,7 +2517,7 @@@ { RETURN_TOKEN(T_MUL_EQUAL); } - #line 2520 "Zend/zend_language_scanner.c" -#line 2352 "Zend/zend_language_scanner.c" ++#line 2521 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; @@@ -2526,7 -2358,7 +2527,7 @@@ { RETURN_TOKEN(T_INC); } - #line 2530 "Zend/zend_language_scanner.c" -#line 2362 "Zend/zend_language_scanner.c" ++#line 2531 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); ++YYCURSOR; @@@ -2536,7 -2368,7 +2537,7 @@@ { RETURN_TOKEN(T_PLUS_EQUAL); } - #line 2540 "Zend/zend_language_scanner.c" -#line 2372 "Zend/zend_language_scanner.c" ++#line 2541 "Zend/zend_language_scanner.c" yy100: YYDEBUG(100, *YYCURSOR); ++YYCURSOR; @@@ -2546,7 -2378,7 +2547,7 @@@ { RETURN_TOKEN(T_DEC); } - #line 2550 "Zend/zend_language_scanner.c" -#line 2382 "Zend/zend_language_scanner.c" ++#line 2551 "Zend/zend_language_scanner.c" yy102: YYDEBUG(102, *YYCURSOR); ++YYCURSOR; @@@ -2556,7 -2388,7 +2557,7 @@@ { RETURN_TOKEN(T_MINUS_EQUAL); } - #line 2560 "Zend/zend_language_scanner.c" -#line 2392 "Zend/zend_language_scanner.c" ++#line 2561 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@@ -2567,7 -2399,7 +2568,7 @@@ yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } - #line 2571 "Zend/zend_language_scanner.c" -#line 2403 "Zend/zend_language_scanner.c" ++#line 2572 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@@ -2590,16 -2422,16 +2591,16 @@@ yy107 yy109: YYDEBUG(109, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1884 "Zend/zend_language_scanner.l" -#line 1740 "Zend/zend_language_scanner.l" ++#line 1885 "Zend/zend_language_scanner.l" { const char *end; ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end)); /* errno isn't checked since we allow HUGE_VAL/INF overflow */ ZEND_ASSERT(end == yytext + yyleng); - RETURN_TOKEN(T_DNUMBER); + RETURN_TOKEN_WITH_VAL(T_DNUMBER); } - #line 2603 "Zend/zend_language_scanner.c" -#line 2435 "Zend/zend_language_scanner.c" ++#line 2604 "Zend/zend_language_scanner.c" yy110: YYDEBUG(110, *YYCURSOR); ++YYCURSOR; @@@ -2609,7 -2441,7 +2610,7 @@@ { RETURN_TOKEN(T_CONCAT_EQUAL); } - #line 2613 "Zend/zend_language_scanner.c" -#line 2445 "Zend/zend_language_scanner.c" ++#line 2614 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 4; @@@ -2618,7 -2450,7 +2619,7 @@@ yy113: YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2081 "Zend/zend_language_scanner.l" -#line 1927 "Zend/zend_language_scanner.l" ++#line 2082 "Zend/zend_language_scanner.l" { int doc_com; @@@ -2652,12 -2481,9 +2653,12 @@@ RETURN_TOKEN(T_DOC_COMMENT); } + if (PARSER_MODE()) { + SKIP_TOKEN(T_COMMENT); + } RETURN_TOKEN(T_COMMENT); } - #line 2661 "Zend/zend_language_scanner.c" -#line 2487 "Zend/zend_language_scanner.c" ++#line 2662 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); ++YYCURSOR; @@@ -2667,7 -2493,7 +2668,7 @@@ { RETURN_TOKEN(T_DIV_EQUAL); } - #line 2671 "Zend/zend_language_scanner.c" -#line 2497 "Zend/zend_language_scanner.c" ++#line 2672 "Zend/zend_language_scanner.c" yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; @@@ -2703,7 -2529,7 +2704,7 @@@ yy119 { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } - #line 2707 "Zend/zend_language_scanner.c" -#line 2533 "Zend/zend_language_scanner.c" ++#line 2708 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 5; @@@ -2718,7 -2544,7 +2719,7 @@@ yy122 { RETURN_TOKEN(T_SL); } - #line 2722 "Zend/zend_language_scanner.c" -#line 2548 "Zend/zend_language_scanner.c" ++#line 2723 "Zend/zend_language_scanner.c" yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; @@@ -2729,7 -2555,7 +2730,7 @@@ { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } - #line 2733 "Zend/zend_language_scanner.c" -#line 2559 "Zend/zend_language_scanner.c" ++#line 2734 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); ++YYCURSOR; @@@ -2744,7 -2570,7 +2745,7 @@@ yy126 { RETURN_TOKEN(T_IS_EQUAL); } - #line 2748 "Zend/zend_language_scanner.c" -#line 2574 "Zend/zend_language_scanner.c" ++#line 2749 "Zend/zend_language_scanner.c" yy128: YYDEBUG(128, *YYCURSOR); ++YYCURSOR; @@@ -2754,7 -2580,7 +2755,7 @@@ { RETURN_TOKEN(T_DOUBLE_ARROW); } - #line 2758 "Zend/zend_language_scanner.c" -#line 2584 "Zend/zend_language_scanner.c" ++#line 2759 "Zend/zend_language_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); ++YYCURSOR; @@@ -2764,7 -2590,7 +2765,7 @@@ { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } - #line 2768 "Zend/zend_language_scanner.c" -#line 2594 "Zend/zend_language_scanner.c" ++#line 2769 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; @@@ -2775,7 -2601,7 +2776,7 @@@ { RETURN_TOKEN(T_SR); } - #line 2779 "Zend/zend_language_scanner.c" -#line 2605 "Zend/zend_language_scanner.c" ++#line 2780 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; @@@ -2784,18 -2610,15 +2785,18 @@@ yy135: YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2120 "Zend/zend_language_scanner.l" -#line 1960 "Zend/zend_language_scanner.l" ++#line 2121 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { CG(increment_lineno) = 1; } - RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ + if (PARSER_MODE()) { + RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ + } + RETURN_TOKEN(T_CLOSE_TAG); } - #line 2799 "Zend/zend_language_scanner.c" -#line 2622 "Zend/zend_language_scanner.c" ++#line 2800 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); ++YYCURSOR; @@@ -2805,7 -2628,7 +2806,7 @@@ { RETURN_TOKEN(T_COALESCE); } - #line 2809 "Zend/zend_language_scanner.c" -#line 2632 "Zend/zend_language_scanner.c" ++#line 2810 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; @@@ -2836,7 -2659,7 +2837,7 @@@ yy141 { RETURN_TOKEN(T_AS); } - #line 2840 "Zend/zend_language_scanner.c" -#line 2663 "Zend/zend_language_scanner.c" ++#line 2841 "Zend/zend_language_scanner.c" yy143: YYDEBUG(143, *YYCURSOR); yych = *++YYCURSOR; @@@ -2926,7 -2749,7 +2927,7 @@@ yy150 { RETURN_TOKEN(T_DO); } - #line 2930 "Zend/zend_language_scanner.c" -#line 2753 "Zend/zend_language_scanner.c" ++#line 2931 "Zend/zend_language_scanner.c" yy152: YYDEBUG(152, *YYCURSOR); yych = *++YYCURSOR; @@@ -3015,7 -2838,7 +3016,7 @@@ yy163 { RETURN_TOKEN(T_IF); } - #line 3019 "Zend/zend_language_scanner.c" -#line 2842 "Zend/zend_language_scanner.c" ++#line 3020 "Zend/zend_language_scanner.c" yy165: YYDEBUG(165, *YYCURSOR); yych = *++YYCURSOR; @@@ -3080,7 -2903,7 +3081,7 @@@ yy171 { RETURN_TOKEN(T_LOGICAL_OR); } - #line 3084 "Zend/zend_language_scanner.c" -#line 2907 "Zend/zend_language_scanner.c" ++#line 3085 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@@ -3198,7 -3021,7 +3199,7 @@@ yy186 { RETURN_TOKEN(T_XOR_EQUAL); } - #line 3202 "Zend/zend_language_scanner.c" -#line 3025 "Zend/zend_language_scanner.c" ++#line 3203 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); yych = *++YYCURSOR; @@@ -3230,7 -3053,7 +3231,7 @@@ yy189 { RETURN_TOKEN(T_OR_EQUAL); } - #line 3234 "Zend/zend_language_scanner.c" -#line 3057 "Zend/zend_language_scanner.c" ++#line 3235 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); ++YYCURSOR; @@@ -3240,7 -3063,7 +3241,7 @@@ { RETURN_TOKEN(T_BOOLEAN_OR); } - #line 3244 "Zend/zend_language_scanner.c" -#line 3067 "Zend/zend_language_scanner.c" ++#line 3245 "Zend/zend_language_scanner.c" yy193: YYDEBUG(193, *YYCURSOR); ++YYCURSOR; @@@ -3250,7 -3073,7 +3251,7 @@@ { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } - #line 3254 "Zend/zend_language_scanner.c" -#line 3077 "Zend/zend_language_scanner.c" ++#line 3255 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@@ -3320,7 -3143,7 +3321,7 @@@ yy205 { RETURN_TOKEN(T_POW_EQUAL); } - #line 3324 "Zend/zend_language_scanner.c" -#line 3147 "Zend/zend_language_scanner.c" ++#line 3325 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; @@@ -3330,7 -3153,7 +3331,7 @@@ { RETURN_TOKEN(T_ELLIPSIS); } - #line 3334 "Zend/zend_language_scanner.c" -#line 3157 "Zend/zend_language_scanner.c" ++#line 3335 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@@ -3379,10 -3202,10 +3380,10 @@@ yy210 ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end)); /* errno isn't checked since we allow HUGE_VAL/INF overflow */ ZEND_ASSERT(end == yytext + yyleng); - RETURN_TOKEN(T_DNUMBER); + RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } - #line 3386 "Zend/zend_language_scanner.c" -#line 3209 "Zend/zend_language_scanner.c" ++#line 3387 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@@ -3408,7 -3231,7 +3409,7 @@@ yy216 } YYDEBUG(218, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1831 "Zend/zend_language_scanner.l" -#line 1691 "Zend/zend_language_scanner.l" ++#line 1832 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@@ -3433,10 -3256,10 +3434,10 @@@ ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end)); /* errno isn't checked since we allow HUGE_VAL/INF overflow */ ZEND_ASSERT(end == hex + len); - RETURN_TOKEN(T_DNUMBER); + RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } - #line 3440 "Zend/zend_language_scanner.c" -#line 3263 "Zend/zend_language_scanner.c" ++#line 3441 "Zend/zend_language_scanner.c" yy219: YYDEBUG(219, *YYCURSOR); ++YYCURSOR; @@@ -3475,7 -3298,7 +3476,7 @@@ yy221 { RETURN_TOKEN(T_SL_EQUAL); } - #line 3479 "Zend/zend_language_scanner.c" -#line 3302 "Zend/zend_language_scanner.c" ++#line 3480 "Zend/zend_language_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); ++YYCURSOR; @@@ -3485,7 -3308,7 +3486,7 @@@ { RETURN_TOKEN(T_SPACESHIP); } - #line 3489 "Zend/zend_language_scanner.c" -#line 3312 "Zend/zend_language_scanner.c" ++#line 3490 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; @@@ -3495,7 -3318,7 +3496,7 @@@ { RETURN_TOKEN(T_IS_IDENTICAL); } - #line 3499 "Zend/zend_language_scanner.c" -#line 3322 "Zend/zend_language_scanner.c" ++#line 3500 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); ++YYCURSOR; @@@ -3505,7 -3328,7 +3506,7 @@@ { RETURN_TOKEN(T_SR_EQUAL); } - #line 3509 "Zend/zend_language_scanner.c" -#line 3332 "Zend/zend_language_scanner.c" ++#line 3510 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); ++YYCURSOR; @@@ -3533,7 -3356,7 +3534,7 @@@ yy232 { RETURN_TOKEN(T_LOGICAL_AND); } - #line 3537 "Zend/zend_language_scanner.c" -#line 3360 "Zend/zend_language_scanner.c" ++#line 3538 "Zend/zend_language_scanner.c" yy234: YYDEBUG(234, *YYCURSOR); yych = *++YYCURSOR; @@@ -3618,7 -3441,7 +3619,7 @@@ yy245 { RETURN_TOKEN(T_EXIT); } - #line 3622 "Zend/zend_language_scanner.c" -#line 3445 "Zend/zend_language_scanner.c" ++#line 3623 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); yych = *++YYCURSOR; @@@ -3704,7 -3527,7 +3705,7 @@@ yy256 { RETURN_TOKEN(T_FOR); } - #line 3708 "Zend/zend_language_scanner.c" -#line 3531 "Zend/zend_language_scanner.c" ++#line 3709 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@@ -3777,7 -3600,7 +3778,7 @@@ yy267 { RETURN_TOKEN(T_NEW); } - #line 3781 "Zend/zend_language_scanner.c" -#line 3604 "Zend/zend_language_scanner.c" ++#line 3782 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; @@@ -3854,7 -3677,7 +3855,7 @@@ yy278 { RETURN_TOKEN(T_TRY); } - #line 3858 "Zend/zend_language_scanner.c" -#line 3681 "Zend/zend_language_scanner.c" ++#line 3859 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; @@@ -3873,7 -3696,7 +3874,7 @@@ yy281 { RETURN_TOKEN(T_USE); } - #line 3877 "Zend/zend_language_scanner.c" -#line 3700 "Zend/zend_language_scanner.c" ++#line 3878 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; @@@ -3886,7 -3709,7 +3887,7 @@@ { RETURN_TOKEN(T_VAR); } - #line 3890 "Zend/zend_language_scanner.c" -#line 3713 "Zend/zend_language_scanner.c" ++#line 3891 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; @@@ -3905,7 -3728,7 +3906,7 @@@ yy286 { RETURN_TOKEN(T_LOGICAL_XOR); } - #line 3909 "Zend/zend_language_scanner.c" -#line 3732 "Zend/zend_language_scanner.c" ++#line 3910 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; @@@ -4123,7 -3946,7 +4124,7 @@@ yy317 { RETURN_TOKEN(T_CASE); } - #line 4127 "Zend/zend_language_scanner.c" -#line 3950 "Zend/zend_language_scanner.c" ++#line 4128 "Zend/zend_language_scanner.c" yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; @@@ -4178,7 -4001,7 +4179,7 @@@ yy326 { RETURN_TOKEN(T_ECHO); } - #line 4182 "Zend/zend_language_scanner.c" -#line 4005 "Zend/zend_language_scanner.c" ++#line 4183 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; @@@ -4206,7 -4029,7 +4207,7 @@@ yy329 { RETURN_TOKEN(T_ELSE); } - #line 4210 "Zend/zend_language_scanner.c" -#line 4033 "Zend/zend_language_scanner.c" ++#line 4211 "Zend/zend_language_scanner.c" yy330: YYDEBUG(330, *YYCURSOR); yych = *++YYCURSOR; @@@ -4255,7 -4078,7 +4256,7 @@@ yy336 { RETURN_TOKEN(T_EVAL); } - #line 4259 "Zend/zend_language_scanner.c" -#line 4082 "Zend/zend_language_scanner.c" ++#line 4260 "Zend/zend_language_scanner.c" yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; @@@ -4268,7 -4091,7 +4269,7 @@@ { RETURN_TOKEN(T_EXIT); } - #line 4272 "Zend/zend_language_scanner.c" -#line 4095 "Zend/zend_language_scanner.c" ++#line 4273 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@@ -4311,7 -4134,7 +4312,7 @@@ yy345 { RETURN_TOKEN(T_GOTO); } - #line 4315 "Zend/zend_language_scanner.c" -#line 4138 "Zend/zend_language_scanner.c" ++#line 4316 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; @@@ -4364,7 -4187,7 +4365,7 @@@ yy352 { RETURN_TOKEN(T_LIST); } - #line 4368 "Zend/zend_language_scanner.c" -#line 4191 "Zend/zend_language_scanner.c" ++#line 4369 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; @@@ -4555,7 -4378,7 +4556,7 @@@ yy383 { RETURN_TOKEN(T_INT_CAST); } - #line 4559 "Zend/zend_language_scanner.c" -#line 4382 "Zend/zend_language_scanner.c" ++#line 4560 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; @@@ -4652,13 -4475,11 +4653,13 @@@ yy396 yy397: YYDEBUG(397, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2268 "Zend/zend_language_scanner.l" -#line 2080 "Zend/zend_language_scanner.l" ++#line 2269 "Zend/zend_language_scanner.l" { char *s; - int bprefix = (yytext[0] != '<') ? 1 : 0; + unsigned char *saved_cursor; + int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 0, indentation = 0; zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label)); + zend_bool is_heredoc = 1; CG(zend_lineno)++; heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); @@@ -4784,7 -4522,7 +4785,7 @@@ RETURN_TOKEN(T_START_HEREDOC); } - #line 4788 "Zend/zend_language_scanner.c" -#line 4526 "Zend/zend_language_scanner.c" ++#line 4789 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@@ -4808,7 -4546,7 +4809,7 @@@ yy400 { RETURN_TOKEN(T_ARRAY); } - #line 4812 "Zend/zend_language_scanner.c" -#line 4550 "Zend/zend_language_scanner.c" ++#line 4813 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@@ -4821,7 -4559,7 +4822,7 @@@ { RETURN_TOKEN(T_BREAK); } - #line 4825 "Zend/zend_language_scanner.c" -#line 4563 "Zend/zend_language_scanner.c" ++#line 4826 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@@ -4840,7 -4578,7 +4841,7 @@@ yy405 { RETURN_TOKEN(T_CATCH); } - #line 4844 "Zend/zend_language_scanner.c" -#line 4582 "Zend/zend_language_scanner.c" ++#line 4845 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@@ -4853,7 -4591,7 +4854,7 @@@ { RETURN_TOKEN(T_CLASS); } - #line 4857 "Zend/zend_language_scanner.c" -#line 4595 "Zend/zend_language_scanner.c" ++#line 4858 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@@ -4866,7 -4604,7 +4867,7 @@@ { RETURN_TOKEN(T_CLONE); } - #line 4870 "Zend/zend_language_scanner.c" -#line 4608 "Zend/zend_language_scanner.c" ++#line 4871 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@@ -4879,7 -4617,7 +4880,7 @@@ { RETURN_TOKEN(T_CONST); } - #line 4883 "Zend/zend_language_scanner.c" -#line 4621 "Zend/zend_language_scanner.c" ++#line 4884 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@@ -4916,7 -4654,7 +4917,7 @@@ yy417 { RETURN_TOKEN(T_EMPTY); } - #line 4920 "Zend/zend_language_scanner.c" -#line 4658 "Zend/zend_language_scanner.c" ++#line 4921 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@@ -4941,7 -4679,7 +4942,7 @@@ yy421 { RETURN_TOKEN(T_ENDIF); } - #line 4945 "Zend/zend_language_scanner.c" -#line 4683 "Zend/zend_language_scanner.c" ++#line 4946 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@@ -4987,7 -4725,7 +4988,7 @@@ yy427 { RETURN_TOKEN(T_FINAL); } - #line 4991 "Zend/zend_language_scanner.c" -#line 4729 "Zend/zend_language_scanner.c" ++#line 4992 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@@ -5048,7 -4786,7 +5049,7 @@@ yy436 { RETURN_TOKEN(T_ISSET); } - #line 5052 "Zend/zend_language_scanner.c" -#line 4790 "Zend/zend_language_scanner.c" ++#line 5053 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@@ -5067,7 -4805,7 +5068,7 @@@ yy439 { RETURN_TOKEN(T_PRINT); } - #line 5071 "Zend/zend_language_scanner.c" -#line 4809 "Zend/zend_language_scanner.c" ++#line 5072 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@@ -5122,7 -4860,7 +5123,7 @@@ yy448 { RETURN_TOKEN(T_THROW); } - #line 5126 "Zend/zend_language_scanner.c" -#line 4864 "Zend/zend_language_scanner.c" ++#line 5127 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@@ -5135,7 -4873,7 +5136,7 @@@ { RETURN_TOKEN(T_TRAIT); } - #line 5139 "Zend/zend_language_scanner.c" -#line 4877 "Zend/zend_language_scanner.c" ++#line 5140 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@@ -5148,7 -4886,7 +5149,7 @@@ { RETURN_TOKEN(T_UNSET); } - #line 5152 "Zend/zend_language_scanner.c" -#line 4890 "Zend/zend_language_scanner.c" ++#line 5153 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@@ -5161,7 -4899,7 +5162,7 @@@ { RETURN_TOKEN(T_WHILE); } - #line 5165 "Zend/zend_language_scanner.c" -#line 4903 "Zend/zend_language_scanner.c" ++#line 5166 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@@ -5183,7 -4921,7 +5184,7 @@@ yy457 { RETURN_TOKEN(T_YIELD); } - #line 5187 "Zend/zend_language_scanner.c" -#line 4925 "Zend/zend_language_scanner.c" ++#line 5188 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@@ -5279,7 -5017,7 +5280,7 @@@ yy471 { RETURN_TOKEN(T_BOOL_CAST); } - #line 5283 "Zend/zend_language_scanner.c" -#line 5021 "Zend/zend_language_scanner.c" ++#line 5284 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@@ -5313,7 -5051,7 +5314,7 @@@ yy478 { RETURN_TOKEN(T_DOUBLE_CAST); } - #line 5317 "Zend/zend_language_scanner.c" -#line 5055 "Zend/zend_language_scanner.c" ++#line 5318 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@@ -5382,7 -5120,7 +5383,7 @@@ yy489 { RETURN_TOKEN(T_ELSEIF); } - #line 5386 "Zend/zend_language_scanner.c" -#line 5124 "Zend/zend_language_scanner.c" ++#line 5387 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@@ -5416,7 -5154,7 +5417,7 @@@ yy493 { RETURN_TOKEN(T_ENDFOR); } - #line 5420 "Zend/zend_language_scanner.c" -#line 5158 "Zend/zend_language_scanner.c" ++#line 5421 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@@ -5465,7 -5203,7 +5466,7 @@@ yy500 { RETURN_TOKEN(T_GLOBAL); } - #line 5469 "Zend/zend_language_scanner.c" -#line 5207 "Zend/zend_language_scanner.c" ++#line 5470 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@@ -5526,7 -5264,7 +5527,7 @@@ yy510 { RETURN_TOKEN(T_PUBLIC); } - #line 5530 "Zend/zend_language_scanner.c" -#line 5268 "Zend/zend_language_scanner.c" ++#line 5531 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@@ -5545,7 -5283,7 +5546,7 @@@ yy513 { RETURN_TOKEN(T_RETURN); } - #line 5549 "Zend/zend_language_scanner.c" -#line 5287 "Zend/zend_language_scanner.c" ++#line 5550 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@@ -5558,7 -5296,7 +5559,7 @@@ { RETURN_TOKEN(T_STATIC); } - #line 5562 "Zend/zend_language_scanner.c" -#line 5300 "Zend/zend_language_scanner.c" ++#line 5563 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@@ -5571,7 -5309,7 +5572,7 @@@ { RETURN_TOKEN(T_SWITCH); } - #line 5575 "Zend/zend_language_scanner.c" -#line 5313 "Zend/zend_language_scanner.c" ++#line 5576 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@@ -5655,7 -5393,7 +5656,7 @@@ yy530 { RETURN_TOKEN(T_ARRAY_CAST); } - #line 5659 "Zend/zend_language_scanner.c" -#line 5397 "Zend/zend_language_scanner.c" ++#line 5660 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@@ -5705,7 -5443,7 +5706,7 @@@ yy538 { RETURN_TOKEN(T_UNSET_CAST); } - #line 5709 "Zend/zend_language_scanner.c" -#line 5447 "Zend/zend_language_scanner.c" ++#line 5710 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@@ -5736,7 -5474,7 +5737,7 @@@ yy543 { RETURN_TOKEN(T_DECLARE); } - #line 5740 "Zend/zend_language_scanner.c" -#line 5478 "Zend/zend_language_scanner.c" ++#line 5741 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@@ -5749,7 -5487,7 +5750,7 @@@ { RETURN_TOKEN(T_DEFAULT); } - #line 5753 "Zend/zend_language_scanner.c" -#line 5491 "Zend/zend_language_scanner.c" ++#line 5754 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@@ -5786,7 -5524,7 +5787,7 @@@ yy551 { RETURN_TOKEN(T_EXTENDS); } - #line 5790 "Zend/zend_language_scanner.c" -#line 5528 "Zend/zend_language_scanner.c" ++#line 5791 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@@ -5799,7 -5537,7 +5800,7 @@@ { RETURN_TOKEN(T_FINALLY); } - #line 5803 "Zend/zend_language_scanner.c" -#line 5541 "Zend/zend_language_scanner.c" ++#line 5804 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@@ -5812,7 -5550,7 +5813,7 @@@ { RETURN_TOKEN(T_FOREACH); } - #line 5816 "Zend/zend_language_scanner.c" -#line 5554 "Zend/zend_language_scanner.c" ++#line 5817 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@@ -5850,7 -5588,7 +5851,7 @@@ yy560 { RETURN_TOKEN(T_INCLUDE); } - #line 5854 "Zend/zend_language_scanner.c" -#line 5592 "Zend/zend_language_scanner.c" ++#line 5855 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@@ -5887,7 -5625,7 +5888,7 @@@ yy565 { RETURN_TOKEN(T_PRIVATE); } - #line 5891 "Zend/zend_language_scanner.c" -#line 5629 "Zend/zend_language_scanner.c" ++#line 5892 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@@ -5919,7 -5657,7 +5920,7 @@@ yy569 { RETURN_TOKEN(T_REQUIRE); } - #line 5923 "Zend/zend_language_scanner.c" -#line 5661 "Zend/zend_language_scanner.c" ++#line 5924 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@@ -5939,11 -5677,11 +5940,11 @@@ yy572 } YYDEBUG(573, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1917 "Zend/zend_language_scanner.l" -#line 1773 "Zend/zend_language_scanner.l" ++#line 1918 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } - #line 5947 "Zend/zend_language_scanner.c" -#line 5685 "Zend/zend_language_scanner.c" ++#line 5948 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@@ -5992,7 -5730,7 +5993,7 @@@ yy581 { RETURN_TOKEN(T_STRING_CAST); } - #line 5996 "Zend/zend_language_scanner.c" -#line 5734 "Zend/zend_language_scanner.c" ++#line 5997 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@@ -6002,7 -5740,7 +6003,7 @@@ { RETURN_TOKEN(T_OBJECT_CAST); } - #line 6006 "Zend/zend_language_scanner.c" -#line 5744 "Zend/zend_language_scanner.c" ++#line 6007 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@@ -6015,7 -5753,7 +6016,7 @@@ { RETURN_TOKEN(T_ABSTRACT); } - #line 6019 "Zend/zend_language_scanner.c" -#line 5757 "Zend/zend_language_scanner.c" ++#line 6020 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@@ -6028,7 -5766,7 +6029,7 @@@ { RETURN_TOKEN(T_CALLABLE); } - #line 6032 "Zend/zend_language_scanner.c" -#line 5770 "Zend/zend_language_scanner.c" ++#line 6033 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@@ -6041,7 -5779,7 +6042,7 @@@ { RETURN_TOKEN(T_CONTINUE); } - #line 6045 "Zend/zend_language_scanner.c" -#line 5783 "Zend/zend_language_scanner.c" ++#line 6046 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@@ -6072,7 -5810,7 +6073,7 @@@ yy594 { RETURN_TOKEN(T_ENDWHILE); } - #line 6076 "Zend/zend_language_scanner.c" -#line 5814 "Zend/zend_language_scanner.c" ++#line 6077 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@@ -6085,7 -5823,7 +6086,7 @@@ { RETURN_TOKEN(T_FUNCTION); } - #line 6089 "Zend/zend_language_scanner.c" -#line 5827 "Zend/zend_language_scanner.c" ++#line 6090 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@@ -6153,11 -5891,11 +6154,11 @@@ yy608 } YYDEBUG(609, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1913 "Zend/zend_language_scanner.l" -#line 1769 "Zend/zend_language_scanner.l" ++#line 1914 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } - #line 6161 "Zend/zend_language_scanner.c" -#line 5899 "Zend/zend_language_scanner.c" ++#line 6162 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@@ -6178,11 -5916,11 +6179,11 @@@ yy612 } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1909 "Zend/zend_language_scanner.l" -#line 1765 "Zend/zend_language_scanner.l" ++#line 1910 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } - #line 6186 "Zend/zend_language_scanner.c" -#line 5924 "Zend/zend_language_scanner.c" ++#line 6187 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@@ -6223,7 -5961,7 +6224,7 @@@ yy619 { RETURN_TOKEN(T_ENDSWITCH); } - #line 6227 "Zend/zend_language_scanner.c" -#line 5965 "Zend/zend_language_scanner.c" ++#line 6228 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@@ -6254,7 -5992,7 +6255,7 @@@ yy624 { RETURN_TOKEN(T_INSTEADOF); } - #line 6258 "Zend/zend_language_scanner.c" -#line 5996 "Zend/zend_language_scanner.c" ++#line 6259 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@@ -6267,7 -6005,7 +6268,7 @@@ { RETURN_TOKEN(T_INTERFACE); } - #line 6271 "Zend/zend_language_scanner.c" -#line 6009 "Zend/zend_language_scanner.c" ++#line 6272 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@@ -6280,7 -6018,7 +6281,7 @@@ { RETURN_TOKEN(T_NAMESPACE); } - #line 6284 "Zend/zend_language_scanner.c" -#line 6022 "Zend/zend_language_scanner.c" ++#line 6285 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@@ -6293,7 -6031,7 +6294,7 @@@ { RETURN_TOKEN(T_PROTECTED); } - #line 6297 "Zend/zend_language_scanner.c" -#line 6035 "Zend/zend_language_scanner.c" ++#line 6298 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@@ -6314,11 -6052,11 +6315,11 @@@ yy634 } YYDEBUG(635, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1893 "Zend/zend_language_scanner.l" -#line 1749 "Zend/zend_language_scanner.l" ++#line 1894 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } - #line 6322 "Zend/zend_language_scanner.c" -#line 6060 "Zend/zend_language_scanner.c" ++#line 6323 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@@ -6350,11 -6088,11 +6351,11 @@@ yy640 } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1897 "Zend/zend_language_scanner.l" -#line 1753 "Zend/zend_language_scanner.l" ++#line 1898 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } - #line 6358 "Zend/zend_language_scanner.c" -#line 6096 "Zend/zend_language_scanner.c" ++#line 6359 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@@ -6367,7 -6105,7 +6368,7 @@@ { RETURN_TOKEN(T_ENDDECLARE); } - #line 6371 "Zend/zend_language_scanner.c" -#line 6109 "Zend/zend_language_scanner.c" ++#line 6372 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@@ -6380,7 -6118,7 +6381,7 @@@ { RETURN_TOKEN(T_ENDFOREACH); } - #line 6384 "Zend/zend_language_scanner.c" -#line 6122 "Zend/zend_language_scanner.c" ++#line 6385 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@@ -6393,7 -6131,7 +6394,7 @@@ { RETURN_TOKEN(T_IMPLEMENTS); } - #line 6397 "Zend/zend_language_scanner.c" -#line 6135 "Zend/zend_language_scanner.c" ++#line 6398 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@@ -6412,7 -6150,7 +6413,7 @@@ yy649 { RETURN_TOKEN(T_INSTANCEOF); } - #line 6416 "Zend/zend_language_scanner.c" -#line 6154 "Zend/zend_language_scanner.c" ++#line 6417 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@@ -6460,11 -6198,11 +6461,11 @@@ yy655 } YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1905 "Zend/zend_language_scanner.l" -#line 1761 "Zend/zend_language_scanner.l" ++#line 1906 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } - #line 6468 "Zend/zend_language_scanner.c" -#line 6206 "Zend/zend_language_scanner.c" ++#line 6469 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@@ -6494,7 -6232,7 +6495,7 @@@ yy660 HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } - #line 6498 "Zend/zend_language_scanner.c" -#line 6236 "Zend/zend_language_scanner.c" ++#line 6499 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@@ -6523,7 -6261,7 +6524,7 @@@ yy665 { RETURN_TOKEN(T_INCLUDE_ONCE); } - #line 6527 "Zend/zend_language_scanner.c" -#line 6265 "Zend/zend_language_scanner.c" ++#line 6528 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@@ -6536,7 -6274,7 +6537,7 @@@ { RETURN_TOKEN(T_REQUIRE_ONCE); } - #line 6540 "Zend/zend_language_scanner.c" -#line 6278 "Zend/zend_language_scanner.c" ++#line 6541 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@@ -6545,11 -6283,11 +6546,11 @@@ } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1901 "Zend/zend_language_scanner.l" -#line 1757 "Zend/zend_language_scanner.l" ++#line 1902 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } - #line 6553 "Zend/zend_language_scanner.c" -#line 6291 "Zend/zend_language_scanner.c" ++#line 6554 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@@ -6575,11 -6313,11 +6576,11 @@@ yy674 } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1921 "Zend/zend_language_scanner.l" -#line 1777 "Zend/zend_language_scanner.l" ++#line 1922 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } - #line 6583 "Zend/zend_language_scanner.c" -#line 6321 "Zend/zend_language_scanner.c" ++#line 6584 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@@ -6597,7 -6335,7 +6598,7 @@@ yy677 { RETURN_TOKEN(T_HALT_COMPILER); } - #line 6601 "Zend/zend_language_scanner.c" -#line 6339 "Zend/zend_language_scanner.c" ++#line 6602 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@@ -6669,7 -6407,7 +6670,7 @@@ yy682 yy_pop_state(); goto restart; } - #line 6673 "Zend/zend_language_scanner.c" -#line 6411 "Zend/zend_language_scanner.c" ++#line 6674 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@@ -6681,11 -6419,12 +6682,11 @@@ } YYDEBUG(685, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1428 "Zend/zend_language_scanner.l" { - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_WHITESPACE); + goto return_whitespace; } - #line 6689 "Zend/zend_language_scanner.c" -#line 6428 "Zend/zend_language_scanner.c" ++#line 6690 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@@ -6702,12 -6441,13 +6703,12 @@@ yy687 } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1301 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { yy_pop_state(); - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } - #line 6711 "Zend/zend_language_scanner.c" -#line 6451 "Zend/zend_language_scanner.c" ++#line 6712 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@@ -6717,7 -6457,7 +6718,7 @@@ { RETURN_TOKEN(T_OBJECT_OPERATOR); } - #line 6721 "Zend/zend_language_scanner.c" -#line 6461 "Zend/zend_language_scanner.c" ++#line 6722 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@@ -6770,7 -6510,7 +6771,7 @@@ yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2493 "Zend/zend_language_scanner.l" -#line 2217 "Zend/zend_language_scanner.l" ++#line 2494 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@@ -6808,14 -6548,10 +6809,14 @@@ yyleng = YYCURSOR - SCNG(yy_text); - zend_scan_escape_string(zendlval, yytext, yyleng, '`'); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '`') == SUCCESS) + || !PARSER_MODE()) { + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } else { + RETURN_TOKEN(T_ERROR); + } } - #line 6819 "Zend/zend_language_scanner.c" -#line 6555 "Zend/zend_language_scanner.c" ++#line 6820 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@@ -6839,12 -6575,12 +6840,12 @@@ yy697 ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2433 "Zend/zend_language_scanner.l" -#line 2161 "Zend/zend_language_scanner.l" ++#line 2434 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } - #line 6848 "Zend/zend_language_scanner.c" -#line 6584 "Zend/zend_language_scanner.c" ++#line 6849 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@@ -6865,11 -6601,12 +6866,11 @@@ yy700 yy702: YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2022 "Zend/zend_language_scanner.l" -#line 1869 "Zend/zend_language_scanner.l" ++#line 2023 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 6873 "Zend/zend_language_scanner.c" -#line 6610 "Zend/zend_language_scanner.c" ++#line 6874 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@@ -6880,19 -6617,20 +6881,19 @@@ yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } - #line 6884 "Zend/zend_language_scanner.c" -#line 6621 "Zend/zend_language_scanner.c" ++#line 6885 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2421 "Zend/zend_language_scanner.l" -#line 2148 "Zend/zend_language_scanner.l" ++#line 2422 "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 6896 "Zend/zend_language_scanner.c" -#line 6634 "Zend/zend_language_scanner.c" ++#line 6897 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@@ -6906,13 -6644,14 +6907,13 @@@ yy709 ++YYCURSOR; YYDEBUG(710, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2016 "Zend/zend_language_scanner.l" -#line 1862 "Zend/zend_language_scanner.l" ++#line 2017 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 6916 "Zend/zend_language_scanner.c" -#line 6655 "Zend/zend_language_scanner.c" ++#line 6917 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@@ -6930,13 -6669,14 +6931,13 @@@ yy712 ++YYCURSOR; YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2008 "Zend/zend_language_scanner.l" -#line 1853 "Zend/zend_language_scanner.l" ++#line 2009 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 6940 "Zend/zend_language_scanner.c" -#line 6680 "Zend/zend_language_scanner.c" ++#line 6941 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@@ -6989,7 -6729,7 +6990,7 @@@ yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2439 "Zend/zend_language_scanner.l" -#line 2167 "Zend/zend_language_scanner.l" ++#line 2440 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@@ -7035,25 -6775,21 +7036,25 @@@ double_quotes_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - zend_scan_escape_string(zendlval, yytext, yyleng, '"'); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '"') == SUCCESS) + || !PARSER_MODE()) { + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } else { + RETURN_TOKEN(T_ERROR); + } } - #line 7046 "Zend/zend_language_scanner.c" -#line 6782 "Zend/zend_language_scanner.c" ++#line 7047 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2428 "Zend/zend_language_scanner.l" -#line 2156 "Zend/zend_language_scanner.l" ++#line 2429 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } - #line 7057 "Zend/zend_language_scanner.c" -#line 6793 "Zend/zend_language_scanner.c" ++#line 7058 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@@ -7092,11 -6828,12 +7093,11 @@@ yy722 yy724: YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2022 "Zend/zend_language_scanner.l" -#line 1869 "Zend/zend_language_scanner.l" ++#line 2023 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7100 "Zend/zend_language_scanner.c" -#line 6837 "Zend/zend_language_scanner.c" ++#line 7101 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@@ -7107,19 -6844,20 +7108,19 @@@ yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } - #line 7111 "Zend/zend_language_scanner.c" -#line 6848 "Zend/zend_language_scanner.c" ++#line 7112 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2421 "Zend/zend_language_scanner.l" -#line 2148 "Zend/zend_language_scanner.l" ++#line 2422 "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 7123 "Zend/zend_language_scanner.c" -#line 6861 "Zend/zend_language_scanner.c" ++#line 7124 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@@ -7133,13 -6871,14 +7134,13 @@@ yy731 ++YYCURSOR; YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2016 "Zend/zend_language_scanner.l" -#line 1862 "Zend/zend_language_scanner.l" ++#line 2017 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7143 "Zend/zend_language_scanner.c" -#line 6882 "Zend/zend_language_scanner.c" ++#line 7144 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@@ -7157,13 -6896,14 +7158,13 @@@ yy734 ++YYCURSOR; YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2008 "Zend/zend_language_scanner.l" -#line 1853 "Zend/zend_language_scanner.l" ++#line 2009 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7167 "Zend/zend_language_scanner.c" -#line 6907 "Zend/zend_language_scanner.c" ++#line 7168 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@@ -7212,10 -6952,11 +7213,10 @@@ yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2539 "Zend/zend_language_scanner.l" -#line 2259 "Zend/zend_language_scanner.l" ++#line 2540 "Zend/zend_language_scanner.l" { - int newline = 0; - zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + int newline = 0, indentation = 0, spacing = 0; if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@@ -7306,33 -7020,12 +7307,33 @@@ } heredoc_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng - newline); + + if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) { + zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; + zend_string *copy = Z_STR_P(zendlval); + + if (!strip_multiline_string_indentation( + zendlval, heredoc_label->indentation, heredoc_label->indentation_uses_spaces, + newline_at_start, newline != 0)) { + RETURN_TOKEN(T_ERROR); + } - zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS)) { + zend_string_efree(copy); + RETURN_TOKEN(T_ERROR); + } + + zend_string_efree(copy); + } else { + HANDLE_NEWLINES(yytext, yyleng - newline); + } + + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } - #line 7336 "Zend/zend_language_scanner.c" -#line 7029 "Zend/zend_language_scanner.c" ++#line 7337 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@@ -7371,11 -7064,12 +7372,11 @@@ yy742 yy744: YYDEBUG(744, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2022 "Zend/zend_language_scanner.l" -#line 1869 "Zend/zend_language_scanner.l" ++#line 2023 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7379 "Zend/zend_language_scanner.c" -#line 7073 "Zend/zend_language_scanner.c" ++#line 7380 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@@ -7386,19 -7080,20 +7387,19 @@@ yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } - #line 7390 "Zend/zend_language_scanner.c" -#line 7084 "Zend/zend_language_scanner.c" ++#line 7391 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2421 "Zend/zend_language_scanner.l" -#line 2148 "Zend/zend_language_scanner.l" ++#line 2422 "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 7402 "Zend/zend_language_scanner.c" -#line 7097 "Zend/zend_language_scanner.c" ++#line 7403 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@@ -7412,13 -7107,14 +7413,13 @@@ yy751 ++YYCURSOR; YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2016 "Zend/zend_language_scanner.l" -#line 1862 "Zend/zend_language_scanner.l" ++#line 2017 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7422 "Zend/zend_language_scanner.c" -#line 7118 "Zend/zend_language_scanner.c" ++#line 7423 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@@ -7436,13 -7132,14 +7437,13 @@@ yy754 ++YYCURSOR; YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2008 "Zend/zend_language_scanner.l" -#line 1853 "Zend/zend_language_scanner.l" ++#line 2009 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7446 "Zend/zend_language_scanner.c" -#line 7143 "Zend/zend_language_scanner.c" ++#line 7447 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@@ -7506,7 -7203,7 +7507,7 @@@ yy759 yy_push_state(ST_IN_SCRIPTING); goto restart; } - #line 7510 "Zend/zend_language_scanner.c" -#line 7207 "Zend/zend_language_scanner.c" ++#line 7511 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@@ -7553,14 -7250,15 +7554,14 @@@ yy764 ++YYCURSOR; YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1737 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); - zend_copy_value(zendlval, yytext, yyleng); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN(T_STRING_VARNAME); + RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } - #line 7564 "Zend/zend_language_scanner.c" -#line 7262 "Zend/zend_language_scanner.c" ++#line 7565 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@@ -7649,7 -7347,7 +7650,7 @@@ yy768 ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2748 "Zend/zend_language_scanner.l" -#line 2390 "Zend/zend_language_scanner.l" ++#line 2749 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@@ -7658,33 -7356,33 +7659,33 @@@ zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } - #line 7662 "Zend/zend_language_scanner.c" -#line 7360 "Zend/zend_language_scanner.c" ++#line 7663 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2036 "Zend/zend_language_scanner.l" -#line 1884 "Zend/zend_language_scanner.l" ++#line 2037 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); yy_pop_state(); ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } - #line 7676 "Zend/zend_language_scanner.c" -#line 7374 "Zend/zend_language_scanner.c" ++#line 7677 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; yy773: YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2031 "Zend/zend_language_scanner.l" -#line 1879 "Zend/zend_language_scanner.l" ++#line 2032 "Zend/zend_language_scanner.l" { /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } - #line 7688 "Zend/zend_language_scanner.c" -#line 7386 "Zend/zend_language_scanner.c" ++#line 7689 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@@ -7719,7 -7417,7 +7720,7 @@@ yy775 yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1859 "Zend/zend_language_scanner.l" -#line 1719 "Zend/zend_language_scanner.l" ++#line 1860 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { char *end; @@@ -7733,9 -7431,9 +7734,9 @@@ string: ZVAL_STRINGL(zendlval, yytext, yyleng); } - RETURN_TOKEN(T_NUM_STRING); + RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } - #line 7739 "Zend/zend_language_scanner.c" -#line 7437 "Zend/zend_language_scanner.c" ++#line 7740 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@@ -7757,22 -7455,23 +7758,22 @@@ yy779 } YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2044 "Zend/zend_language_scanner.l" -#line 1892 "Zend/zend_language_scanner.l" ++#line 2045 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } - #line 7765 "Zend/zend_language_scanner.c" -#line 7464 "Zend/zend_language_scanner.c" ++#line 7766 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2026 "Zend/zend_language_scanner.l" -#line 1874 "Zend/zend_language_scanner.l" ++#line 2027 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } - #line 7776 "Zend/zend_language_scanner.c" -#line 7475 "Zend/zend_language_scanner.c" ++#line 7777 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@@ -7797,11 -7496,12 +7798,11 @@@ yy786: YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2022 "Zend/zend_language_scanner.l" -#line 1869 "Zend/zend_language_scanner.l" ++#line 2023 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } - #line 7805 "Zend/zend_language_scanner.c" -#line 7505 "Zend/zend_language_scanner.c" ++#line 7806 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@@ -7813,16 -7513,12 +7814,16 @@@ yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1875 "Zend/zend_language_scanner.l" -#line 1735 "Zend/zend_language_scanner.l" ++#line 1876 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN(T_NUM_STRING); + if (yyleng == 1) { + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); + } else { + ZVAL_STRINGL(zendlval, yytext, yyleng); + } + RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } - #line 7826 "Zend/zend_language_scanner.c" -#line 7522 "Zend/zend_language_scanner.c" ++#line 7827 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@@ -7872,7 -7568,7 +7873,7 @@@ yyc_INITIAL yy800: YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1957 "Zend/zend_language_scanner.l" -#line 1804 "Zend/zend_language_scanner.l" ++#line 1958 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@@ -7911,15 -7607,13 +7912,15 @@@ inline_char_handler if (readsize < yyleng) { yyless(readsize); } + } else if (yyleng == 1) { + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng); } HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_INLINE_HTML); + RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } - #line 7923 "Zend/zend_language_scanner.c" -#line 7617 "Zend/zend_language_scanner.c" ++#line 7924 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@@ -7935,7 -7629,7 +7936,7 @@@ yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1945 "Zend/zend_language_scanner.l" -#line 1795 "Zend/zend_language_scanner.l" ++#line 1946 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@@ -7947,21 -7638,18 +7948,21 @@@ goto inline_char_handler; } } - #line 7951 "Zend/zend_language_scanner.c" -#line 7642 "Zend/zend_language_scanner.c" ++#line 7952 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1926 "Zend/zend_language_scanner.l" -#line 1782 "Zend/zend_language_scanner.l" ++#line 1927 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ECHO); + } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } - #line 7965 "Zend/zend_language_scanner.c" -#line 7653 "Zend/zend_language_scanner.c" ++#line 7966 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@@ -7992,16 -7680,13 +7993,16 @@@ yy810 yy811: YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 1935 "Zend/zend_language_scanner.l" -#line 1788 "Zend/zend_language_scanner.l" ++#line 1936 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + SKIP_TOKEN(T_OPEN_TAG); + } RETURN_TOKEN(T_OPEN_TAG); } - #line 8005 "Zend/zend_language_scanner.c" -#line 7690 "Zend/zend_language_scanner.c" ++#line 8006 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@@ -8016,7 -7701,7 +8017,7 @@@ yyc_ST_END_HEREDOC ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2407 "Zend/zend_language_scanner.l" -#line 2134 "Zend/zend_language_scanner.l" ++#line 2408 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@@ -8029,7 -7714,7 +8030,7 @@@ BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } - #line 8033 "Zend/zend_language_scanner.c" -#line 7718 "Zend/zend_language_scanner.c" ++#line 8034 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@@ -8039,10 -7724,11 +8040,10 @@@ ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 2660 "Zend/zend_language_scanner.l" -#line 2333 "Zend/zend_language_scanner.l" ++#line 2661 "Zend/zend_language_scanner.l" { - int newline = 0; - zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + int newline = 0, indentation = 0, spacing = -1; if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@@ -8112,56 -7775,13 +8113,56 @@@ nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng - newline); + + if (!EG(exception) && spacing != -1 && PARSER_MODE()) { + zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; + if (!strip_multiline_string_indentation( + zendlval, indentation, spacing == HEREDOC_USING_SPACES, + newline_at_start, newline != 0)) { + RETURN_TOKEN(T_ERROR); + } + } - zend_copy_value(zendlval, yytext, yyleng - newline); HANDLE_NEWLINES(yytext, yyleng - newline); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } - #line 8130 "Zend/zend_language_scanner.c" -#line 7784 "Zend/zend_language_scanner.c" ++#line 8131 "Zend/zend_language_scanner.c" } - #line 2757 "Zend/zend_language_scanner.l" -#line 2399 "Zend/zend_language_scanner.l" ++#line 2758 "Zend/zend_language_scanner.l" + +emit_token_with_str: + zend_copy_value(zendlval, (yytext + offset), (yyleng - offset)); + +emit_token_with_val: + if (PARSER_MODE()) { + ZEND_ASSERT(Z_TYPE_P(zendlval) != IS_UNDEF); + elem->ast = zend_ast_create_zval_with_lineno(zendlval, start_line); + } + +emit_token: + if (SCNG(on_event)) { + SCNG(on_event)(ON_TOKEN, token, start_line, SCNG(on_event_context)); + } + return token; + +return_whitespace: + HANDLE_NEWLINES(yytext, yyleng); + if (SCNG(on_event)) { + SCNG(on_event)(ON_TOKEN, T_WHITESPACE, start_line, SCNG(on_event_context)); + } + if (PARSER_MODE()) { + start_line = CG(zend_lineno); + goto restart; + } else { + return T_WHITESPACE; + } + +skip_token: + if (SCNG(on_event)) { + SCNG(on_event)(ON_TOKEN, token, start_line, SCNG(on_event_context)); + } + start_line = CG(zend_lineno); + goto restart; }