From 232da518e6828ddc6964d986453e61ca0d05ad7e Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Fri, 15 Sep 2017 14:07:59 +0100 Subject: [PATCH 01/54] Initial flexibly heredoc/nowdoc implementation --- Zend/tests/flexible-heredoc-nowdoc.phpt | 169 + Zend/zend_language_scanner.c | 7960 +++++++++++------------ Zend/zend_language_scanner.l | 74 +- Zend/zend_language_scanner_defs.h | 2 +- 4 files changed, 4129 insertions(+), 4076 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-nowdoc.phpt diff --git a/Zend/tests/flexible-heredoc-nowdoc.phpt b/Zend/tests/flexible-heredoc-nowdoc.phpt new file mode 100644 index 0000000000000..48a7690fd6205 --- /dev/null +++ b/Zend/tests/flexible-heredoc-nowdoc.phpt @@ -0,0 +1,169 @@ +--TEST-- +Flexible heredoc/nowdoc syntax +--FILE-- + +--EXPECT-- + a + b + c + d +e + a + b + c +d +e + a + b +c +d +e + a +b +c +d +e +a +b +c +d +e +a +b +c +d +e + + a + + b + + c + + d + +e + + +a + +b + +c + +d + +e + +a + + b + + c + +d + +e diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 0ef393d6e9aee..1de53ee31935f 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.16 */ +/* Generated by re2c 0.15.3 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -1114,10 +1114,38 @@ static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quot goto emit_token; \ } while (0) -#define RETURN_TOKEN_WITH_VAL(_token) do { \ - token = _token; \ - goto emit_token_with_val; \ - } while (0) +static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation) +{ + int new_len = len; + + for (int i = 0, j = 0, skip; ; ) { + for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { + if (copy[j] != ' ' && copy[j] != '\t') { + break; + } + } + + while (copy[j] != '\r' && copy[j] != '\n') { + copy[i++] = copy[j++]; + } + + if (copy[j] == '\r') { + copy[i++] = copy[j++]; + } + + if (copy[j] == '\n') { + copy[i++] = copy[j++]; + } + + if (j >= len) { + break; + } + } + + return new_len - newline; +} + +#define RETURN_TOKEN(token) return emit_token(token, start_line); #define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ token = _token; \ @@ -1141,7 +1169,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1145 "Zend/zend_language_scanner.c" +#line 1143 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1187,13 +1215,14 @@ int start_line = CG(zend_lineno); YYDEBUG(1, *YYCURSOR); YYFILL(7); yych = *YYCURSOR; - if (yych == '<') goto yy5; + if (yych != '<') goto yy5; YYDEBUG(3, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '?') goto yy6; yy4: YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1834 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1240,11 +1269,12 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1244 "Zend/zend_language_scanner.c" +#line 1241 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '?') goto yy4; + goto yy4; +yy6: YYDEBUG(6, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'O') { @@ -1256,7 +1286,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1842 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1268,13 +1298,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1272 "Zend/zend_language_scanner.c" +#line 1267 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 1812 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1282,7 +1312,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1286 "Zend/zend_language_scanner.c" +#line 1278 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1313,7 +1343,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1832 "Zend/zend_language_scanner.l" +#line 1818 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1322,7 +1352,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1326 "Zend/zend_language_scanner.c" +#line 1315 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1369,17 +1399,30 @@ int start_line = CG(zend_lineno); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych == '$') goto yy21; + if (yych != '$') goto yy24; } else { if (yych <= '`') goto yy22; - if (yych == '{') goto yy24; + if (yych == '{') goto yy21; + goto yy24; } YYDEBUG(19, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= '_') { + if (yych <= '@') goto yy20; + if (yych <= 'Z') goto yy27; + if (yych >= '_') goto yy27; + } else { + if (yych <= 'z') { + if (yych >= 'a') goto yy27; + } else { + if (yych <= '{') goto yy30; + if (yych >= 0x80) goto yy27; + } + } yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2305 "Zend/zend_language_scanner.l" +#line 2247 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1424,84 +1467,71 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1428 "Zend/zend_language_scanner.c" +#line 1426 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy20; - if (yych <= 'Z') goto yy25; - if (yych <= '^') goto yy20; - goto yy25; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy20; - goto yy25; - } else { - if (yych <= '{') goto yy28; - if (yych <= 0x7F) goto yy20; - goto yy25; - } - } + if (yych == '$') goto yy25; + goto yy20; yy22: YYDEBUG(22, *YYCURSOR); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2245 "Zend/zend_language_scanner.l" +#line 2191 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1457 "Zend/zend_language_scanner.c" +#line 1442 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy30; goto yy20; yy25: YYDEBUG(25, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(26, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2178 "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 1459 "Zend/zend_language_scanner.c" +yy27: + YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(26, *YYCURSOR); + YYDEBUG(28, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy25; + goto yy27; } if (yych == '-') goto yy32; - if (yych <= '@') goto yy27; + if (yych <= '@') goto yy29; if (yych <= '[') goto yy34; -yy27: - YYDEBUG(27, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1482 "Zend/zend_language_scanner.c" -yy28: - YYDEBUG(28, *YYCURSOR); - ++YYCURSOR; +yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1493 "Zend/zend_language_scanner.c" +#line 1480 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2233 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1505 "Zend/zend_language_scanner.c" +#line 1491 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1509,19 +1539,19 @@ int start_line = CG(zend_lineno); yy33: YYDEBUG(33, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy27; + goto yy29; yy34: YYDEBUG(34, *YYCURSOR); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1913 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1525 "Zend/zend_language_scanner.c" +#line 1512 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1539,13 +1569,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1905 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1549 "Zend/zend_language_scanner.c" +#line 1537 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1588,17 +1618,32 @@ int start_line = CG(zend_lineno); YYFILL(2); yych = *YYCURSOR; if (yych <= '#') { - if (yych == '"') goto yy43; + if (yych == '"') goto yy44; + goto yy46; } else { - if (yych <= '$') goto yy45; - if (yych == '{') goto yy46; + if (yych <= '$') goto yy41; + if (yych == '{') goto yy43; + goto yy46; } +yy41: YYDEBUG(41, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= '_') { + if (yych <= '@') goto yy42; + if (yych <= 'Z') goto yy49; + if (yych >= '_') goto yy49; + } else { + if (yych <= 'z') { + if (yych >= 'a') goto yy49; + } else { + if (yych <= '{') goto yy52; + if (yych >= 0x80) goto yy49; + } + } yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2251 "Zend/zend_language_scanner.l" +#line 2197 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1651,84 +1696,71 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1655 "Zend/zend_language_scanner.c" +#line 1654 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '$') goto yy47; + goto yy42; +yy44: YYDEBUG(44, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2240 "Zend/zend_language_scanner.l" +#line 2186 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1666 "Zend/zend_language_scanner.c" -yy45: - YYDEBUG(45, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy42; - if (yych <= 'Z') goto yy47; - if (yych <= '^') goto yy42; - goto yy47; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy42; - goto yy47; - } else { - if (yych <= '{') goto yy50; - if (yych <= 0x7F) goto yy42; - goto yy47; - } - } +#line 1670 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy52; goto yy42; yy47: YYDEBUG(47, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(48, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2178 "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 1687 "Zend/zend_language_scanner.c" +yy49: + YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(48, *YYCURSOR); + YYDEBUG(50, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy47; + goto yy49; } if (yych == '-') goto yy54; - if (yych <= '@') goto yy49; + if (yych <= '@') goto yy51; if (yych <= '[') goto yy56; -yy49: - YYDEBUG(49, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1709 "Zend/zend_language_scanner.c" -yy50: - YYDEBUG(50, *YYCURSOR); - ++YYCURSOR; +yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1720 "Zend/zend_language_scanner.c" +#line 1708 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2233 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1732 "Zend/zend_language_scanner.c" +#line 1719 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1736,19 +1768,19 @@ int start_line = CG(zend_lineno); yy55: YYDEBUG(55, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy49; + goto yy51; yy56: YYDEBUG(56, *YYCURSOR); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1913 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1752 "Zend/zend_language_scanner.c" +#line 1740 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1766,13 +1798,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1905 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1776 "Zend/zend_language_scanner.c" +#line 1765 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1783,7 +1815,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2219 "Zend/zend_language_scanner.l" +#line 2164 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1796,7 +1828,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1800 "Zend/zend_language_scanner.c" +#line 1789 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1837,16 +1869,31 @@ int start_line = CG(zend_lineno); YYDEBUG(65, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych == '$') goto yy69; - if (yych == '{') goto yy70; + if (yych == '$') goto yy67; + if (yych == '{') goto yy69; + goto yy70; +yy67: YYDEBUG(67, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= '_') { + if (yych <= '@') goto yy68; + if (yych <= 'Z') goto yy73; + if (yych >= '_') goto yy73; + } else { + if (yych <= 'z') { + if (yych >= 'a') goto yy73; + } else { + if (yych <= '{') goto yy76; + if (yych >= 0x80) goto yy73; + } + } yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2351 "Zend/zend_language_scanner.l" +#line 2289 "Zend/zend_language_scanner.l" { - int newline = 0; + int newline = 0, indentation, len, new_len; + char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -1864,6 +1911,12 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': + indentation = 0; + while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + ++YYCURSOR; + ++indentation; + } + /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; @@ -1913,67 +1966,56 @@ int start_line = CG(zend_lineno); heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + len = yyleng - indentation; + copy = estrndup(yytext, len); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0) == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } else { - RETURN_TOKEN(T_ERROR); - } + new_len = strip_multiline_string_indentation(copy, len, newline, indentation); + + zend_scan_escape_string(zendlval, copy, new_len, 0); + efree(copy); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1925 "Zend/zend_language_scanner.c" +#line 1936 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy68; - if (yych <= 'Z') goto yy71; - if (yych <= '^') goto yy68; - goto yy71; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy68; - goto yy71; - } else { - if (yych <= '{') goto yy74; - if (yych <= 0x7F) goto yy68; - goto yy71; - } - } + if (yych == '$') goto yy71; + goto yy68; yy70: YYDEBUG(70, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy76; goto yy68; yy71: YYDEBUG(71, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(72, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2178 "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 1958 "Zend/zend_language_scanner.c" +yy73: + YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(72, *YYCURSOR); + YYDEBUG(74, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy71; + goto yy73; } if (yych == '-') goto yy78; - if (yych <= '@') goto yy73; + if (yych <= '@') goto yy75; if (yych <= '[') goto yy80; -yy73: - YYDEBUG(73, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1968 "Zend/zend_language_scanner.c" -yy74: - YYDEBUG(74, *YYCURSOR); - ++YYCURSOR; +yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } #line 1979 "Zend/zend_language_scanner.c" yy76: @@ -1981,13 +2023,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2233 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1991 "Zend/zend_language_scanner.c" +#line 1990 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -1995,13 +2036,13 @@ int start_line = CG(zend_lineno); yy79: YYDEBUG(79, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy73; + goto yy75; yy80: YYDEBUG(80, *YYCURSOR); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1913 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); @@ -2025,57 +2066,54 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1905 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2035 "Zend/zend_language_scanner.c" +#line 2036 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 4, 0, 0, 4, 0, 0, + 0, 192, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, + 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 216, 152, 152, 152, 152, 152, 152, - 152, 152, 0, 0, 0, 0, 0, 0, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, + 60, 60, 44, 44, 44, 44, 44, 44, + 44, 44, 0, 0, 0, 0, 0, 0, + 0, 36, 36, 36, 36, 36, 36, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 0, 0, 0, 0, 4, + 0, 36, 36, 36, 36, 36, 36, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, }; YYDEBUG(85, *YYCURSOR); YYFILL(16); yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy89; - } switch (yych) { case 0x00: case 0x01: @@ -2086,11 +2124,8 @@ int start_line = CG(zend_lineno); case 0x06: case 0x07: case 0x08: - case '\t': - case '\n': case '\v': case '\f': - case '\r': case 0x0E: case 0x0F: case 0x10: @@ -2109,29 +2144,32 @@ int start_line = CG(zend_lineno); case 0x1D: case 0x1E: case 0x1F: - case 0x7F: goto yy87; - case ' ': - case '!': goto yy92; - case '"': goto yy94; - case '#': goto yy96; - case '$': goto yy98; - case '%': goto yy99; - case '&': goto yy100; - case '\'': goto yy101; - case '(': goto yy103; + case 0x7F: goto yy148; + case '\t': + case '\n': + case '\r': + case ' ': goto yy104; + case '!': goto yy119; + case '"': goto yy144; + case '#': goto yy140; + case '$': goto yy130; + case '%': goto yy124; + case '&': goto yy125; + case '\'': goto yy142; + case '(': goto yy113; case ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy104; - case '*': goto yy105; - case '+': goto yy106; - case '-': goto yy107; - case '.': goto yy108; - case '/': goto yy109; - case '0': goto yy110; + case '~': goto yy131; + case '*': goto yy122; + case '+': goto yy118; + case '-': goto yy102; + case '.': goto yy109; + case '/': goto yy123; + case '0': goto yy136; case '1': case '2': case '3': @@ -2140,1237 +2178,1208 @@ int start_line = CG(zend_lineno); case '6': case '7': case '8': - case '9': goto yy112; - case ':': goto yy114; - case '<': goto yy115; + case '9': goto yy138; + case ':': goto yy106; + case '<': goto yy120; case '=': goto yy116; - case '>': goto yy117; - case '?': goto yy118; + case '>': goto yy121; + case '?': goto yy110; case 'A': - case 'a': goto yy119; + case 'a': goto yy97; case 'B': - case 'b': goto yy121; + case 'b': goto yy99; case 'C': - case 'c': goto yy122; + case 'c': goto yy91; case 'D': - case 'd': goto yy123; + case 'd': goto yy89; case 'E': - case 'e': goto yy124; + case 'e': goto yy87; case 'F': - case 'f': goto yy125; + case 'f': goto yy90; case 'G': - case 'g': goto yy126; + case 'g': goto yy100; case 'I': - case 'i': goto yy129; + case 'i': goto yy95; case 'L': - case 'l': goto yy130; + case 'l': goto yy117; case 'N': - case 'n': goto yy131; + case 'n': goto yy111; case 'O': - case 'o': goto yy132; + case 'o': goto yy128; case 'P': - case 'p': goto yy133; + case 'p': goto yy101; case 'R': - case 'r': goto yy134; + case 'r': goto yy92; case 'S': - case 's': goto yy135; + case 's': goto yy98; case 'T': - case 't': goto yy136; + case 't': goto yy94; case 'U': - case 'u': goto yy137; + case 'u': goto yy114; case 'V': - case 'v': goto yy138; + case 'v': goto yy112; case 'W': - case 'w': goto yy139; + case 'w': goto yy96; case 'X': - case 'x': goto yy140; + case 'x': goto yy129; case 'Y': - case 'y': goto yy141; - case '\\': goto yy142; - case '^': goto yy144; - case '_': goto yy145; + case 'y': goto yy93; + case '\\': goto yy107; + case '^': goto yy127; + case '_': goto yy115; case '`': goto yy146; - case '{': goto yy148; - case '|': goto yy150; - case '}': goto yy151; - default: goto yy127; + case '{': goto yy132; + case '|': goto yy126; + case '}': goto yy134; + default: goto yy139; } yy87: YYDEBUG(87, *YYCURSOR); ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case 'C': + case 'c': goto yy706; + case 'L': + case 'l': goto yy707; + case 'M': + case 'm': goto yy708; + case 'N': + case 'n': goto yy709; + case 'V': + case 'v': goto yy710; + case 'X': + case 'x': goto yy711; + default: goto yy151; + } +yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2486 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; + zend_copy_value(zendlval, yytext, yyleng); + RETURN_TOKEN(T_STRING); } -#line 2213 "Zend/zend_language_scanner.c" +#line 2223 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'E') goto yy688; + goto yy151; + } else { + if (yych <= 'I') goto yy689; + if (yych <= 'N') goto yy151; + goto yy690; + } + } else { + if (yych <= 'h') { + if (yych == 'e') goto yy688; + goto yy151; + } else { + if (yych <= 'i') goto yy689; + if (yych == 'o') goto yy690; + goto yy151; + } + } +yy90: YYDEBUG(90, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy89; + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'I') goto yy664; + goto yy151; + } else { + if (yych <= 'O') goto yy665; + if (yych <= 'T') goto yy151; + goto yy666; + } + } else { + if (yych <= 'n') { + if (yych == 'i') goto yy664; + goto yy151; + } else { + if (yych <= 'o') goto yy665; + if (yych == 'u') goto yy666; + goto yy151; + } } +yy91: YYDEBUG(91, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 2229 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') goto yy629; + goto yy151; + } else { + if (yych <= 'L') goto yy630; + if (yych <= 'N') goto yy151; + goto yy631; + } + } else { + if (yych <= 'k') { + if (yych == 'a') goto yy629; + goto yy151; + } else { + if (yych <= 'l') goto yy630; + if (yych == 'o') goto yy631; + goto yy151; + } + } yy92: YYDEBUG(92, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy153; + yych = *++YYCURSOR; + if (yych == 'E') goto yy611; + if (yych == 'e') goto yy611; + goto yy151; yy93: YYDEBUG(93, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(yytext[0]); -} -#line 2241 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy598; + if (yych == 'i') goto yy598; + goto yy151; yy94: YYDEBUG(94, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'H') goto yy586; + if (yych <= 'Q') goto yy151; + goto yy587; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy151; + goto yy586; + } else { + if (yych == 'r') goto yy587; + goto yy151; + } + } +yy95: YYDEBUG(95, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2119 "Zend/zend_language_scanner.l" - { - int bprefix = (yytext[0] != '"') ? 1 : 0; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); - } else { - RETURN_TOKEN(T_ERROR); - } - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'L') { + if (yych == 'F') goto yy533; + goto yy151; + } else { + if (yych <= 'M') goto yy535; + if (yych <= 'N') goto yy536; + if (yych <= 'R') goto yy151; + goto yy537; + } + } else { + if (yych <= 'm') { + if (yych == 'f') goto yy533; + if (yych <= 'l') goto yy151; + goto yy535; + } else { + if (yych <= 'n') goto yy536; + if (yych == 's') goto yy537; + goto yy151; + } } - - YYCURSOR--; - break; - } - - /* Remember how much was scanned to save rescanning */ - SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); - - YYCURSOR = SCNG(yy_text) + yyleng; - - BEGIN(ST_DOUBLE_QUOTES); - RETURN_TOKEN('"'); -} -#line 2292 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'H') goto yy528; + if (yych == 'h') goto yy528; + goto yy151; +yy97: YYDEBUG(97, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1946 "Zend/zend_language_scanner.l" - { - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - CG(zend_lineno)++; - break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'M') { + if (yych == 'B') goto yy510; + goto yy151; + } else { + if (yych <= 'N') goto yy511; + if (yych <= 'Q') goto yy151; + if (yych <= 'R') goto yy512; + goto yy513; + } + } else { + if (yych <= 'n') { + if (yych == 'b') goto yy510; + if (yych <= 'm') goto yy151; + goto yy511; + } else { + if (yych <= 'q') goto yy151; + if (yych <= 'r') goto yy512; + if (yych <= 's') goto yy513; + goto yy151; + } } - - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 2330 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy93; - if (yych <= 'Z') goto yy155; - if (yych <= '^') goto yy93; - goto yy155; + if (yych <= 'W') { + if (yych == 'T') goto yy498; + if (yych <= 'V') goto yy151; + goto yy499; } else { - if (yych <= '`') goto yy93; - if (yych <= 'z') goto yy155; - if (yych <= 0x7F) goto yy93; - goto yy155; + if (yych <= 't') { + if (yych <= 's') goto yy151; + goto yy498; + } else { + if (yych == 'w') goto yy499; + goto yy151; + } } yy99: YYDEBUG(99, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy158; - goto yy93; -yy100: - YYDEBUG(100, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy160; - if (yych == '=') goto yy162; - goto yy93; -yy101: - YYDEBUG(101, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(102, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2029 "Zend/zend_language_scanner.l" - { - register char *s, *t; - char *end; - int bprefix = (yytext[0] != '\'') ? 1 : 0; - - while (1) { - if (YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\'') { - YYCURSOR++; - yyleng = YYCURSOR - SCNG(yy_text); - - break; - } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') { + if (yych <= '"') { + if (yych <= '!') goto yy151; + goto yy490; + } else { + if (yych == '\'') goto yy491; + goto yy151; } } else { - yyleng = YYLIMIT - SCNG(yy_text); - - /* Unclosed single quotes; treat similar to double quotes, but without a separate token - * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." - * rule, which continued in ST_IN_SCRIPTING state after the quote */ - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + if (yych <= 'R') { + if (yych <= '<') goto yy489; + if (yych <= 'Q') goto yy151; + goto yy492; + } else { + if (yych == 'r') goto yy492; + goto yy151; + } } - } - - if (yyleng-bprefix-2 <= 1) { - if (yyleng-bprefix-2 < 1) { - ZVAL_EMPTY_STRING(zendlval); +yy100: + YYDEBUG(100, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'L') goto yy479; + if (yych <= 'N') goto yy151; + goto yy480; } else { - zend_uchar c = (zend_uchar)*(yytext+bprefix+1); - if (c == '\n' || c == '\r') { - CG(zend_lineno)++; + if (yych <= 'l') { + if (yych <= 'k') goto yy151; + goto yy479; + } else { + if (yych == 'o') goto yy480; + goto yy151; } - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); } - goto skip_escape_conversion; - } - ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - - /* convert escape sequences */ - s = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (1) { - if (UNEXPECTED(*s=='\\')) { - break; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - if (s == end) { - goto skip_escape_conversion; - } - } - - t = s; - while (s= '0') goto yy155; + } else { + if (yych == 'B') goto yy163; + if (yych >= 'E') goto yy157; + } } else { - if (yych <= 't') { - if (yych <= 's') goto yy128; - goto yy260; + if (yych <= 'b') { + if (yych == 'X') goto yy162; + if (yych >= 'b') goto yy163; } else { - if (yych == 'w') goto yy261; - goto yy128; + if (yych <= 'e') { + if (yych >= 'e') goto yy157; + } else { + if (yych == 'x') goto yy162; + } } } -yy136: - YYDEBUG(136, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy262; - if (yych <= 'Q') goto yy128; - goto yy263; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy128; - goto yy262; +yy137: + YYDEBUG(137, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1678 "Zend/zend_language_scanner.l" + { + char *end; + if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + /* This isn't an assert, we need to ensure 019 isn't valid octal + * Because the lexing itself doesn't do that for us + */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_LNUMBER); + } + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + if (errno == ERANGE) { /* Overflow */ + errno = 0; + if (yytext[0] == '0') { /* octal overflow */ + ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); } else { - if (yych == 'r') goto yy263; - goto yy128; + ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, + "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_DNUMBER); } + RETURN_TOKEN(T_DNUMBER); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_DNUMBER); } -yy137: - YYDEBUG(137, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy264; - if (yych <= 'R') goto yy128; - goto yy265; + } + ZEND_ASSERT(!errno); + RETURN_TOKEN(T_LNUMBER); +} +#line 2807 "Zend/zend_language_scanner.c" +yy138: + YYDEBUG(138, *YYCURSOR); + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych == '.') goto yy152; + if (yych <= '/') goto yy137; + goto yy155; } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy128; - goto yy264; + if (yych <= 'E') { + if (yych <= 'D') goto yy137; + goto yy157; } else { - if (yych == 's') goto yy265; - goto yy128; + if (yych == 'e') goto yy157; + goto yy137; } } -yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy266; - if (yych == 'a') goto yy266; - goto yy128; yy139: YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy267; - if (yych == 'h') goto yy267; - goto yy128; + goto yy151; yy140: YYDEBUG(140, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy268; - if (yych == 'o') goto yy268; - goto yy128; + ++YYCURSOR; yy141: YYDEBUG(141, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy269; - if (yych == 'i') goto yy269; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1928 "Zend/zend_language_scanner.l" + { + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + CG(zend_lineno)++; + break; + case '?': + if (*YYCURSOR == '>') { + YYCURSOR--; + break; + } + /* fall through */ + default: + continue; + } + + break; + } + + yyleng = YYCURSOR - SCNG(yy_text); + + RETURN_TOKEN(T_COMMENT); +} +#line 2864 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; +yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" +#line 1999 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + register char *s, *t; + char *end; + int bprefix = (yytext[0] != '\'') ? 1 : 0; + + while (1) { + if (YYCURSOR < YYLIMIT) { + if (*YYCURSOR == '\'') { + YYCURSOR++; + yyleng = YYCURSOR - SCNG(yy_text); + + break; + } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + } else { + yyleng = YYLIMIT - SCNG(yy_text); + + /* Unclosed single quotes; treat similar to double quotes, but without a separate token + * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." + * rule, which continued in ST_IN_SCRIPTING state after the quote */ + ZVAL_NULL(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + } + + ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); + + /* convert escape sequences */ + s = t = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (s YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; } -#line 3037 "Zend/zend_language_scanner.c" +#line 3013 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy273; - if (yych == '|') goto yy275; - goto yy93; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy151: YYDEBUG(151, *YYCURSOR); - ++YYCURSOR; + if (yybm[0+yych] & 4) { + goto yy150; + } + goto yy88; +yy152: YYDEBUG(152, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" - { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); - } - RETURN_TOKEN('}'); -} -#line 3057 "Zend/zend_language_scanner.c" -yy153: + yyaccept = 3; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(153, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy277; + if (yybm[0+yych] & 8) { + goto yy152; + } + if (yych == 'E') goto yy157; + if (yych == 'e') goto yy157; yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" +#line 1770 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_NOT_EQUAL); + 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); } -#line 3069 "Zend/zend_language_scanner.c" +#line 3049 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); + yyaccept = 2; + YYMARKER = ++YYCURSOR; + YYFILL(3); yych = *YYCURSOR; YYDEBUG(156, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy155; - } else { - if (yych <= '@') goto yy157; - if (yych <= 'Z') goto yy155; - } + if (yych <= '9') { + if (yych == '.') goto yy152; + if (yych <= '/') goto yy137; + goto yy155; } else { - if (yych <= '`') { - if (yych <= '_') goto yy155; + if (yych <= 'E') { + if (yych <= 'D') goto yy137; } else { - if (yych <= 'z') goto yy155; - if (yych >= 0x80) goto yy155; + if (yych != 'e') goto yy137; } } yy157: YYDEBUG(157, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 3098 "Zend/zend_language_scanner.c" -yy158: - YYDEBUG(158, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(159, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1556 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MOD_EQUAL); -} -#line 3108 "Zend/zend_language_scanner.c" -yy160: - YYDEBUG(160, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(161, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1584 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_AND); -} -#line 3118 "Zend/zend_language_scanner.c" -yy162: - YYDEBUG(162, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(163, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_AND_EQUAL); -} -#line 3128 "Zend/zend_language_scanner.c" -yy164: - YYDEBUG(164, *YYCURSOR); - ++YYCURSOR; - YYFILL(7); - yych = *YYCURSOR; -yy165: - YYDEBUG(165, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy164; - } - switch (yych) { - case 'A': - case 'a': goto yy167; - case 'B': - case 'b': goto yy168; - case 'D': - case 'd': goto yy169; - case 'F': - case 'f': goto yy170; - case 'I': - case 'i': goto yy171; - case 'O': - case 'o': goto yy172; - case 'R': - case 'r': goto yy173; - case 'S': - case 's': goto yy174; - case 'U': - case 'u': goto yy175; - default: goto yy166; + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych == '+') goto yy159; + } else { + if (yych <= '-') goto yy159; + if (yych <= '/') goto yy158; + if (yych <= '9') goto yy160; } -yy166: - YYDEBUG(166, *YYCURSOR); +yy158: + YYDEBUG(158, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 3) { if (yyaccept <= 1) { if (yyaccept == 0) { - goto yy93; + goto yy88; } else { - goto yy111; + goto yy103; } } else { if (yyaccept == 2) { - goto yy120; + goto yy137; } else { - goto yy193; + goto yy154; } } } else { if (yyaccept <= 5) { if (yyaccept == 4) { - goto yy197; + goto yy191; } else { - goto yy206; + goto yy211; } } else { - goto yy541; + goto yy602; } } -yy167: - YYDEBUG(167, *YYCURSOR); +yy159: + YYDEBUG(159, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy279; - if (yych == 'r') goto yy279; - goto yy166; -yy168: - YYDEBUG(168, *YYCURSOR); + if (yych <= '/') goto yy158; + if (yych >= ':') goto yy158; +yy160: + YYDEBUG(160, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(161, *YYCURSOR); + if (yych <= '/') goto yy154; + if (yych <= '9') goto yy160; + goto yy154; +yy162: + YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy280; - if (yych <= 'N') goto yy166; - goto yy281; + if (yybm[0+yych] & 32) { + goto yy167; + } + goto yy158; +yy163: + YYDEBUG(163, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy164; + } + goto yy158; +yy164: + YYDEBUG(164, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(165, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy164; + } + YYDEBUG(166, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1650 "Zend/zend_language_scanner.l" + { + char *bin = yytext + 2; /* Skip "0b" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*bin == '0') { + ++bin; + --len; + } + + if (len < SIZEOF_ZEND_LONG * 8) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy166; - goto yy280; - } else { - if (yych == 'o') goto yy281; - goto yy166; - } + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); + ZEND_ASSERT(!errno && end == yytext + yyleng); + } + RETURN_TOKEN(T_LNUMBER); + } else { + 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); + } +} +#line 3173 "Zend/zend_language_scanner.c" +yy167: + YYDEBUG(167, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(168, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy167; } -yy169: YYDEBUG(169, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy282; - if (yych == 'o') goto yy282; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1721 "Zend/zend_language_scanner.l" + { + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; + } + + if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); + ZEND_ASSERT(!errno && end == hex + len); + } + RETURN_TOKEN(T_LNUMBER); + } else { + 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); + } +} +#line 3213 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy283; - if (yych == 'l') goto yy283; - goto yy166; -yy171: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(171, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy284; - if (yych == 'n') goto yy284; - goto yy166; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy170; + } else { + if (yych <= '@') goto yy172; + if (yych <= 'Z') goto yy170; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy170; + } else { + if (yych <= 'z') goto yy170; + if (yych >= 0x80) goto yy170; + } + } yy172: YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy285; - if (yych == 'b') goto yy285; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1899 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 3243 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy286; - if (yych == 'e') goto yy286; - goto yy166; + if (yych == 'R') goto yy174; + if (yych != 'r') goto yy151; yy174: YYDEBUG(174, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy287; - if (yych == 't') goto yy287; - goto yy166; -yy175: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(175, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy288; - if (yych == 'n') goto yy288; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1596 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_XOR); +} +#line 3261 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy289; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1540 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_POW); + RETURN_TOKEN(T_LOGICAL_OR); } -#line 3262 "Zend/zend_language_scanner.c" +#line 3274 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1536 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MUL_EQUAL); + RETURN_TOKEN(T_XOR_EQUAL); } -#line 3272 "Zend/zend_language_scanner.c" +#line 3284 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INC); + RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3282 "Zend/zend_language_scanner.c" +#line 3294 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PLUS_EQUAL); + RETURN_TOKEN(T_OR_EQUAL); } -#line 3292 "Zend/zend_language_scanner.c" +#line 3304 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" +#line 1584 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DEC); + RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3302 "Zend/zend_language_scanner.c" +#line 3314 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" +#line 1568 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MINUS_EQUAL); + RETURN_TOKEN(T_AND_EQUAL); } -#line 3312 "Zend/zend_language_scanner.c" +#line 3324 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" +#line 1556 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN(T_OBJECT_OPERATOR); + RETURN_TOKEN(T_MOD_EQUAL); } -#line 3323 "Zend/zend_language_scanner.c" +#line 3334 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy291; - goto yy166; -yy191: - YYDEBUG(191, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(192, *YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy191; - } else { - if (yych <= 'E') goto yy201; - if (yych == 'e') goto yy201; - } -yy193: - YYDEBUG(193, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1781 "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_WITH_VAL(T_DNUMBER); -} -#line 3355 "Zend/zend_language_scanner.c" -yy194: - YYDEBUG(194, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(195, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1552 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONCAT_EQUAL); -} -#line 3365 "Zend/zend_language_scanner.c" -yy196: - YYDEBUG(196, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy293; -yy197: - YYDEBUG(197, *YYCURSOR); + if (yych == '*') goto yy195; +yy191: + YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1978 "Zend/zend_language_scanner.l" +#line 1957 "Zend/zend_language_scanner.l" { int doc_com; @@ -3409,2836 +3418,2521 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3413 "Zend/zend_language_scanner.c" -yy198: - YYDEBUG(198, *YYCURSOR); +#line 3376 "Zend/zend_language_scanner.c" +yy192: + YYDEBUG(192, *YYCURSOR); + yych = *++YYCURSOR; + goto yy141; +yy193: + YYDEBUG(193, *YYCURSOR); ++YYCURSOR; - YYDEBUG(199, *YYCURSOR); + YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1548 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3423 "Zend/zend_language_scanner.c" -yy200: - YYDEBUG(200, *YYCURSOR); +#line 3390 "Zend/zend_language_scanner.c" +yy195: + YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy294; + goto yy196; } - goto yy166; -yy201: - YYDEBUG(201, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy297; - goto yy166; - } else { - if (yych <= '-') goto yy297; - if (yych <= '/') goto yy166; - if (yych <= '9') goto yy298; - goto yy166; + goto yy158; +yy196: + YYDEBUG(196, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(197, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy196; } + goto yy191; +yy198: + YYDEBUG(198, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy202; + YYDEBUG(199, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1540 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW); +} +#line 3418 "Zend/zend_language_scanner.c" +yy200: + YYDEBUG(200, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(201, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1536 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MUL_EQUAL); +} +#line 3428 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy300; - } - goto yy166; -yy203: - YYDEBUG(203, *YYCURSOR); ++YYCURSOR; - YYDEBUG(204, *YYCURSOR); + YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" +#line 1544 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); + RETURN_TOKEN(T_POW_EQUAL); } -#line 3459 "Zend/zend_language_scanner.c" -yy205: +#line 3438 "Zend/zend_language_scanner.c" +yy204: + YYDEBUG(204, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy206; - if (yych <= '<') goto yy303; - if (yych <= '=') goto yy305; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1604 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR); +} +#line 3449 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" +#line 1524 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL); + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3474 "Zend/zend_language_scanner.c" -yy207: - YYDEBUG(207, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy307; +#line 3459 "Zend/zend_language_scanner.c" +yy208: YYDEBUG(208, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); + RETURN_TOKEN(T_SR_EQUAL); } -#line 3485 "Zend/zend_language_scanner.c" -yy209: - YYDEBUG(209, *YYCURSOR); - yych = *++YYCURSOR; - goto yy154; +#line 3469 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy309; + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy211; + if (yych <= '<') goto yy220; + if (yych <= '=') goto yy218; +yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1600 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_EQUAL); + RETURN_TOKEN(T_SL); } -#line 3500 "Zend/zend_language_scanner.c" +#line 3484 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1520 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DOUBLE_ARROW); + RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3510 "Zend/zend_language_scanner.c" +#line 3495 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; +yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); + RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3520 "Zend/zend_language_scanner.c" +#line 3506 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy311; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SR); + RETURN_TOKEN(T_SPACESHIP); } -#line 3531 "Zend/zend_language_scanner.c" +#line 3516 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy313; - if (yych == '\r') goto yy314; -yy219: YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2017 "Zend/zend_language_scanner.l" +#line 1560 "Zend/zend_language_scanner.l" { - BEGIN(INITIAL); - if (yytext[yyleng-1] != '>') { - CG(increment_lineno) = 1; - } - if (PARSER_MODE()) { - RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ - } - RETURN_TOKEN(T_CLOSE_TAG); + RETURN_TOKEN(T_SL_EQUAL); } -#line 3551 "Zend/zend_language_scanner.c" +#line 3526 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; YYDEBUG(221, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1356 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_COALESCE); -} -#line 3561 "Zend/zend_language_scanner.c" + if (yybm[0+yych] & 128) { + goto yy220; + } + if (yych <= 'Z') { + if (yych <= '&') { + if (yych == '"') goto yy225; + goto yy158; + } else { + if (yych <= '\'') goto yy224; + if (yych <= '@') goto yy158; + } + } else { + if (yych <= '`') { + if (yych != '_') goto yy158; + } else { + if (yych <= 'z') goto yy222; + if (yych <= 0x7F) goto yy158; + } + } yy222: YYDEBUG(222, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy315; - if (yych == 's') goto yy315; - goto yy128; -yy223: + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; YYDEBUG(223, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy316; - if (yych == 'd') goto yy316; - goto yy128; + if (yych <= '@') { + if (yych <= '\f') { + if (yych == '\n') goto yy229; + goto yy158; + } else { + if (yych <= '\r') goto yy231; + if (yych <= '/') goto yy158; + if (yych <= '9') goto yy222; + goto yy158; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy222; + if (yych <= '^') goto yy158; + goto yy222; + } else { + if (yych <= '`') goto yy158; + if (yych <= 'z') goto yy222; + if (yych <= 0x7F) goto yy158; + goto yy222; + } + } yy224: YYDEBUG(224, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy318; - if (yych == 'r') goto yy318; - goto yy128; + if (yych == '\'') goto yy158; + if (yych <= '/') goto yy233; + if (yych <= '9') goto yy158; + goto yy233; yy225: YYDEBUG(225, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == '"') goto yy158; + if (yych <= '/') goto yy227; + if (yych <= '9') goto yy158; + goto yy227; +yy226: YYDEBUG(226, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_AS); -} -#line 3592 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; yy227: YYDEBUG(227, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy319; - goto yy166; -yy228: - YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy320; - if (yych == 'e') goto yy320; - goto yy128; -yy229: - YYDEBUG(229, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy128; - goto yy321; + if (yych <= 'Z') { + if (yych <= '/') { + if (yych != '"') goto yy158; } else { - if (yych <= 'R') goto yy128; - if (yych <= 'S') goto yy322; - goto yy323; + if (yych <= '9') goto yy226; + if (yych <= '@') goto yy158; + goto yy226; } } else { - if (yych <= 'r') { - if (yych == 'l') goto yy321; - goto yy128; + if (yych <= '`') { + if (yych == '_') goto yy226; + goto yy158; } else { - if (yych <= 's') goto yy322; - if (yych <= 't') goto yy323; - goto yy128; + if (yych <= 'z') goto yy226; + if (yych <= 0x7F) goto yy158; + goto yy226; } } +yy228: + YYDEBUG(228, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy229; + if (yych == '\r') goto yy231; + goto yy158; +yy229: + YYDEBUG(229, *YYCURSOR); + ++YYCURSOR; yy230: YYDEBUG(230, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy324; - if (yych <= 'N') goto yy128; - goto yy325; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy324; - } else { - if (yych == 'o') goto yy325; - goto yy128; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2110 "Zend/zend_language_scanner.l" + { + char *s; + int bprefix = (yytext[0] != '<') ? 1 : 0; + zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label)); + + CG(zend_lineno)++; + heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); + s = yytext+bprefix+3; + while ((*s == ' ') || (*s == '\t')) { + s++; + heredoc_label->length--; + } + + if (*s == '\'') { + s++; + heredoc_label->length -= 2; + + BEGIN(ST_NOWDOC); + } else { + if (*s == '"') { + s++; + heredoc_label->length -= 2; + } + + BEGIN(ST_HEREDOC); + } + + heredoc_label->label = estrndup(s, heredoc_label->length); + + /* Check for ending label on the next line */ + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; + + if (*end == ';') { + end++; + } + + if (*end == '\n' || *end == '\r') { + BEGIN(ST_END_HEREDOC); } + } + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + RETURN_TOKEN(T_START_HEREDOC); +} +#line 3678 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy326; - if (yych == 'n') goto yy326; - goto yy128; + if (yych == '\n') goto yy229; + goto yy230; yy232: YYDEBUG(232, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy327; - if (yych <= 'E') goto yy128; - goto yy328; + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy233: + YYDEBUG(233, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '\'') goto yy228; + goto yy158; + } else { + if (yych <= '9') goto yy232; + if (yych <= '@') goto yy158; + goto yy232; + } } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy128; - goto yy327; + if (yych <= '`') { + if (yych == '_') goto yy232; + goto yy158; } else { - if (yych == 'f') goto yy328; - goto yy128; + if (yych <= 'z') goto yy232; + if (yych <= 0x7F) goto yy158; + goto yy232; } } -yy233: - YYDEBUG(233, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy329; - if (yych == 'e') goto yy329; - goto yy128; yy234: YYDEBUG(234, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych != '=') goto yy215; YYDEBUG(235, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" +#line 1504 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DO); + RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3682 "Zend/zend_language_scanner.c" -yy236: - YYDEBUG(236, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy331; - if (yych == 'h') goto yy331; - goto yy128; +#line 3722 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy332; - if (yych == 's') goto yy332; - goto yy128; -yy238: + ++YYCURSOR; YYDEBUG(238, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy333; - if (yych == 'p') goto yy333; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1528 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PLUS_EQUAL); +} +#line 3732 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy334; - if (yych == 'd') goto yy334; - goto yy128; -yy240: + ++YYCURSOR; YYDEBUG(240, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy335; - if (yych == 'a') goto yy335; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1492 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INC); +} +#line 3742 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy336; - if (yych <= 'S') goto yy128; - goto yy337; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy128; - goto yy336; - } else { - if (yych == 't') goto yy337; - goto yy128; - } - } + if (yych == 'S') goto yy242; + if (yych != 's') goto yy151; yy242: YYDEBUG(242, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy338; - if (yych == 'n') goto yy338; - goto yy128; + if (yych == 'T') goto yy243; + if (yych != 't') goto yy151; yy243: YYDEBUG(243, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy339; - if (yych == 'r') goto yy339; - goto yy128; -yy244: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(244, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy341; - if (yych == 'n') goto yy341; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1480 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LIST); +} +#line 3765 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy342; - if (yych == 'o') goto yy342; - goto yy128; -yy246: + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy343; - if (yych == 't') goto yy343; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1508 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_EQUAL); +} +#line 3776 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1204 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IF); + RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3771 "Zend/zend_language_scanner.c" +#line 3786 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy344; - if (yych == 'p') goto yy344; - goto yy128; -yy250: + ++YYCURSOR; YYDEBUG(250, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy128; - goto yy345; - } else { - if (yych <= 'R') goto yy128; - if (yych <= 'S') goto yy346; - goto yy347; - } - } else { - if (yych <= 'r') { - if (yych == 'c') goto yy345; - goto yy128; - } else { - if (yych <= 's') goto yy346; - if (yych <= 't') goto yy347; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1500 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_IDENTICAL); +} +#line 3796 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy348; - if (yych == 's') goto yy348; - goto yy128; + switch (yych) { + case 'C': + case 'c': goto yy253; + case 'D': + case 'd': goto yy258; + case 'F': + case 'f': goto yy255; + case 'H': + case 'h': goto yy252; + case 'L': + case 'l': goto yy257; + case 'M': + case 'm': goto yy256; + case 'N': + case 'n': goto yy259; + case 'T': + case 't': goto yy254; + default: goto yy151; + } yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy349; - if (yych == 's') goto yy349; - goto yy128; + if (yych == 'A') goto yy320; + if (yych == 'a') goto yy320; + goto yy151; yy253: YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy350; - if (yych == 'm') goto yy350; - goto yy128; + if (yych == 'L') goto yy313; + if (yych == 'l') goto yy313; + goto yy151; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy351; - if (yych == 'w') goto yy351; - goto yy128; + if (yych == 'R') goto yy306; + if (yych == 'r') goto yy306; + goto yy151; yy255: YYDEBUG(255, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(256, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_OR); -} -#line 3836 "Zend/zend_language_scanner.c" -yy257: - YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy353; - if (yych <= 'N') goto yy128; - goto yy354; + if (yych <= 'U') { + if (yych == 'I') goto yy290; + if (yych <= 'T') goto yy151; + goto yy291; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy128; - goto yy353; + if (yych <= 'h') goto yy151; + goto yy290; } else { - if (yych == 'o') goto yy354; - goto yy128; + if (yych == 'u') goto yy291; + goto yy151; } } +yy256: + YYDEBUG(256, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy282; + if (yych == 'e') goto yy282; + goto yy151; +yy257: + YYDEBUG(257, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy276; + if (yych == 'i') goto yy276; + goto yy151; yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy355; - if (yych == 'b') goto yy355; - goto yy128; + if (yych == 'I') goto yy271; + if (yych == 'i') goto yy271; + goto yy151; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy356; - if (yych <= 'S') goto yy128; - goto yy357; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy128; - goto yy356; - } else { - if (yych == 't') goto yy357; - goto yy128; - } - } + if (yych == 'A') goto yy260; + if (yych != 'a') goto yy151; yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy358; - if (yych == 'a') goto yy358; - goto yy128; + if (yych == 'M') goto yy261; + if (yych != 'm') goto yy151; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy359; - if (yych == 'i') goto yy359; - goto yy128; + if (yych == 'E') goto yy262; + if (yych != 'e') goto yy151; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy360; - if (yych == 'r') goto yy360; - goto yy128; + if (yych == 'S') goto yy263; + if (yych != 's') goto yy151; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy361; - if (yych <= 'X') goto yy128; - goto yy362; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy361; - } else { - if (yych == 'y') goto yy362; - goto yy128; - } - } + if (yych == 'P') goto yy264; + if (yych != 'p') goto yy151; yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy364; - if (yych == 's') goto yy364; - goto yy128; + if (yych == 'A') goto yy265; + if (yych != 'a') goto yy151; yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy365; - if (yych == 'e') goto yy365; - goto yy128; + if (yych == 'C') goto yy266; + if (yych != 'c') goto yy151; yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy367; - if (yych == 'r') goto yy367; - goto yy128; + if (yych == 'E') goto yy267; + if (yych != 'e') goto yy151; yy267: YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy369; - if (yych == 'i') goto yy369; - goto yy128; -yy268: + if (yych != '_') goto yy151; YYDEBUG(268, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy370; - if (yych == 'r') goto yy370; - goto yy128; -yy269: + if (yych != '_') goto yy151; YYDEBUG(269, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy372; - if (yych == 'e') goto yy372; - goto yy128; -yy270: - YYDEBUG(270, *YYCURSOR); ++YYCURSOR; - YYDEBUG(271, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 1807 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_XOR_EQUAL); + RETURN_TOKEN(T_NS_C); } -#line 3954 "Zend/zend_language_scanner.c" +#line 3929 "Zend/zend_language_scanner.c" +yy271: + YYDEBUG(271, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy272; + if (yych != 'r') goto yy151; yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy373; - case 'D': - case 'd': goto yy374; - case 'F': - case 'f': goto yy375; - case 'H': - case 'h': goto yy376; - case 'L': - case 'l': goto yy377; - case 'M': - case 'm': goto yy378; - case 'N': - case 'n': goto yy379; - case 'T': - case 't': goto yy380; - default: goto yy128; - } -yy273: + if (yych != '_') goto yy151; YYDEBUG(273, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(274, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OR_EQUAL); -} -#line 3986 "Zend/zend_language_scanner.c" -yy275: - YYDEBUG(275, *YYCURSOR); ++YYCURSOR; - YYDEBUG(276, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1803 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOLEAN_OR); + RETURN_TOKEN(T_DIR); } -#line 3996 "Zend/zend_language_scanner.c" +#line 3953 "Zend/zend_language_scanner.c" +yy276: + YYDEBUG(276, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy277; + if (yych != 'n') goto yy151; yy277: YYDEBUG(277, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy278; + if (yych != 'e') goto yy151; +yy278: YYDEBUG(278, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); -} -#line 4006 "Zend/zend_language_scanner.c" -yy279: + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy381; - if (yych == 'r') goto yy381; - goto yy166; -yy280: + if (yych != '_') goto yy151; YYDEBUG(280, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy382; - if (yych == 'n') goto yy382; - goto yy166; -yy281: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(281, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy383; - if (yych == 'o') goto yy383; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1795 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LINE); +} +#line 3982 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy384; - if (yych == 'u') goto yy384; - goto yy166; + if (yych == 'T') goto yy283; + if (yych != 't') goto yy151; yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy385; - if (yych == 'o') goto yy385; - goto yy166; + if (yych == 'H') goto yy284; + if (yych != 'h') goto yy151; yy284: YYDEBUG(284, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy386; - if (yych == 't') goto yy386; - goto yy166; + if (yych == 'O') goto yy285; + if (yych != 'o') goto yy151; yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy387; - if (yych == 'j') goto yy387; - goto yy166; + if (yych == 'D') goto yy286; + if (yych != 'd') goto yy151; yy286: YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy388; - if (yych == 'a') goto yy388; - goto yy166; -yy287: + if (yych != '_') goto yy151; YYDEBUG(287, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy389; - if (yych == 'r') goto yy389; - goto yy166; -yy288: + if (yych != '_') goto yy151; YYDEBUG(288, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy390; - if (yych == 's') goto yy390; - goto yy166; -yy289: - YYDEBUG(289, *YYCURSOR); ++YYCURSOR; - YYDEBUG(290, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" +#line 1791 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_POW_EQUAL); + RETURN_TOKEN(T_METHOD_C); } -#line 4076 "Zend/zend_language_scanner.c" +#line 4021 "Zend/zend_language_scanner.c" +yy290: + YYDEBUG(290, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy301; + if (yych == 'l') goto yy301; + goto yy151; yy291: YYDEBUG(291, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy292; + if (yych != 'n') goto yy151; +yy292: YYDEBUG(292, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELLIPSIS); -} -#line 4086 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy293; + if (yych != 'c') goto yy151; yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy166; - if (yych <= '\n') goto yy391; - goto yy166; - } else { - if (yych <= '\r') goto yy391; - if (yych == ' ') goto yy391; - goto yy166; - } + if (yych == 'T') goto yy294; + if (yych != 't') goto yy151; yy294: YYDEBUG(294, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy295; + if (yych != 'i') goto yy151; +yy295: YYDEBUG(295, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy294; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy296; + if (yych != 'o') goto yy151; +yy296: YYDEBUG(296, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1649 "Zend/zend_language_scanner.l" - { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); - } -} -#line 4138 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy297; + if (yych != 'n') goto yy151; yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy166; - if (yych >= ':') goto yy166; -yy298: + if (yych != '_') goto yy151; YYDEBUG(298, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(299, *YYCURSOR); - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy298; - goto yy193; -yy300: - YYDEBUG(300, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(301, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy300; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(302, *YYCURSOR); + YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1728 "Zend/zend_language_scanner.l" +#line 1787 "Zend/zend_language_scanner.l" { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); - } + RETURN_TOKEN(T_FUNC_C); } -#line 4192 "Zend/zend_language_scanner.c" -yy303: +#line 4076 "Zend/zend_language_scanner.c" +yy301: + YYDEBUG(301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy302; + if (yych != 'e') goto yy151; +yy302: + YYDEBUG(302, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(303, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(304, *YYCURSOR); - if (yych <= '\'') { - if (yych <= ' ') { - if (yych == '\t') goto yy303; - if (yych <= 0x1F) goto yy166; - goto yy303; - } else { - if (yych == '"') goto yy393; - if (yych <= '&') goto yy166; - goto yy394; - } - } else { - if (yych <= '_') { - if (yych <= '@') goto yy166; - if (yych <= 'Z') goto yy395; - if (yych <= '^') goto yy166; - goto yy395; - } else { - if (yych <= '`') goto yy166; - if (yych <= 'z') goto yy395; - if (yych <= 0x7F) goto yy166; - goto yy395; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } -yy305: YYDEBUG(305, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(306, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" +#line 1799 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL_EQUAL); + RETURN_TOKEN(T_FILE); } -#line 4231 "Zend/zend_language_scanner.c" +#line 4100 "Zend/zend_language_scanner.c" +yy306: + YYDEBUG(306, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy307; + if (yych != 'a') goto yy151; yy307: YYDEBUG(307, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy308; + if (yych != 'i') goto yy151; +yy308: YYDEBUG(308, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 4241 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy309; + if (yych != 't') goto yy151; yy309: YYDEBUG(309, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(310, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_IDENTICAL); -} -#line 4251 "Zend/zend_language_scanner.c" -yy311: + yych = *++YYCURSOR; + if (yych != '_') goto yy151; YYDEBUG(311, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1783 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SR_EQUAL); + RETURN_TOKEN(T_TRAIT_C); } -#line 4261 "Zend/zend_language_scanner.c" +#line 4134 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - goto yy219; + if (yych == 'A') goto yy314; + if (yych != 'a') goto yy151; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy313; - goto yy219; + if (yych == 'S') goto yy315; + if (yych != 's') goto yy151; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy397; - if (yych == 't') goto yy397; - goto yy128; + if (yych == 'S') goto yy316; + if (yych != 's') goto yy151; yy316: YYDEBUG(316, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(317, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(318, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(317, *YYCURSOR); + YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" +#line 1779 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LOGICAL_AND); + RETURN_TOKEN(T_CLASS_C); } -#line 4289 "Zend/zend_language_scanner.c" -yy318: - YYDEBUG(318, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy398; - if (yych == 'a') goto yy398; - goto yy128; -yy319: - YYDEBUG(319, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy303; - goto yy166; +#line 4168 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy399; - if (yych == 'a') goto yy399; - goto yy128; + if (yych == 'L') goto yy321; + if (yych != 'l') goto yy151; yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy400; - if (yych == 'l') goto yy400; - goto yy128; + if (yych == 'T') goto yy322; + if (yych != 't') goto yy151; yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy401; - if (yych == 'e') goto yy401; - goto yy128; -yy323: + if (yych != '_') goto yy151; YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy403; - if (yych == 'c') goto yy403; - goto yy128; + if (yych == 'C') goto yy324; + if (yych != 'c') goto yy151; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy404; - if (yych == 's') goto yy404; - goto yy128; + if (yych == 'O') goto yy325; + if (yych != 'o') goto yy151; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy405; - if (yych == 'n') goto yy405; - goto yy128; + if (yych == 'M') goto yy326; + if (yych != 'm') goto yy151; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy128; - if (yych <= 'S') goto yy406; - goto yy407; - } else { - if (yych <= 'r') goto yy128; - if (yych <= 's') goto yy406; - if (yych <= 't') goto yy407; - goto yy128; - } + if (yych == 'P') goto yy327; + if (yych != 'p') goto yy151; yy327: YYDEBUG(327, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy408; - if (yych == 'l') goto yy408; - goto yy128; + if (yych == 'I') goto yy328; + if (yych != 'i') goto yy151; yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy409; - if (yych == 'a') goto yy409; - goto yy128; + if (yych == 'L') goto yy329; + if (yych != 'l') goto yy151; yy329: YYDEBUG(329, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy330; + if (yych != 'e') goto yy151; +yy330: + YYDEBUG(330, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy331; + if (yych != 'r') goto yy151; +yy331: + YYDEBUG(331, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(330, *YYCURSOR); + YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1162 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 4374 "Zend/zend_language_scanner.c" -yy331: - YYDEBUG(331, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy410; - if (yych == 'o') goto yy410; - goto yy128; -yy332: - YYDEBUG(332, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy412; - if (yych == 'e') goto yy412; - goto yy128; +#line 4234 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy414; - if (yych == 't') goto yy414; - goto yy128; + if (yych == 'S') goto yy337; + if (yych == 's') goto yy337; + goto yy151; yy334: YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - switch (yych) { - case 'D': - case 'd': goto yy415; - case 'F': - case 'f': goto yy416; - case 'I': - case 'i': goto yy417; - case 'S': - case 's': goto yy418; - case 'W': - case 'w': goto yy419; - default: goto yy128; - } + if (yych == 'E') goto yy335; + if (yych != 'e') goto yy151; yy335: YYDEBUG(335, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy420; - if (yych == 'l') goto yy420; - goto yy128; -yy336: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(336, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy422; - if (yych == 't') goto yy422; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1424 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_USE); +} +#line 4258 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy424; - if (yych == 'e') goto yy424; - goto yy128; + if (yych == 'E') goto yy338; + if (yych != 'e') goto yy151; yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy425; - if (yych == 'a') goto yy425; - goto yy128; + if (yych == 'T') goto yy339; + if (yych != 't') goto yy151; yy339: YYDEBUG(339, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy340; - if (yych <= '9') goto yy127; - } else { - if (yych == 'E') goto yy426; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'e') goto yy426; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } -yy340: YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOR); + RETURN_TOKEN(T_UNSET); } -#line 4460 "Zend/zend_language_scanner.c" +#line 4281 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy427; - if (yych == 'c') goto yy427; - goto yy128; + ++YYCURSOR; + YYFILL(7); + yych = *YYCURSOR; yy342: YYDEBUG(342, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy428; - if (yych == 'b') goto yy428; - goto yy128; + if (yych <= 'S') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy341; + if (yych <= 0x1F) goto yy158; + goto yy341; + } else { + if (yych <= 'A') { + if (yych <= '@') goto yy158; + goto yy346; + } else { + if (yych <= 'B') goto yy344; + if (yych <= 'C') goto yy158; + goto yy349; + } + } + } else { + if (yych <= 'I') { + if (yych == 'F') goto yy350; + if (yych <= 'H') goto yy158; + goto yy351; + } else { + if (yych <= 'O') { + if (yych <= 'N') goto yy158; + goto yy345; + } else { + if (yych <= 'Q') goto yy158; + if (yych <= 'R') goto yy348; + goto yy347; + } + } + } + } else { + if (yych <= 'f') { + if (yych <= 'a') { + if (yych == 'U') goto yy343; + if (yych <= '`') goto yy158; + goto yy346; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy344; + goto yy158; + } else { + if (yych <= 'd') goto yy349; + if (yych <= 'e') goto yy158; + goto yy350; + } + } + } else { + if (yych <= 'q') { + if (yych <= 'i') { + if (yych <= 'h') goto yy158; + goto yy351; + } else { + if (yych == 'o') goto yy345; + goto yy158; + } + } else { + if (yych <= 's') { + if (yych <= 'r') goto yy348; + goto yy347; + } else { + if (yych != 'u') goto yy158; + } + } + } + } yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy429; - if (yych == 'o') goto yy429; - goto yy128; + if (yych == 'N') goto yy410; + if (yych == 'n') goto yy410; + goto yy158; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy431; - if (yych == 'l') goto yy431; - goto yy128; + if (yych <= 'O') { + if (yych == 'I') goto yy397; + if (yych <= 'N') goto yy158; + goto yy398; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy158; + goto yy397; + } else { + if (yych == 'o') goto yy398; + goto yy158; + } + } yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy432; - if (yych == 'l') goto yy432; - goto yy128; + if (yych == 'B') goto yy389; + if (yych == 'b') goto yy389; + goto yy158; yy346: YYDEBUG(346, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy433; - if (yych == 't') goto yy433; - goto yy128; + if (yych == 'R') goto yy382; + if (yych == 'r') goto yy382; + goto yy158; yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy434; - if (yych == 'e') goto yy434; - goto yy128; + if (yych == 'T') goto yy374; + if (yych == 't') goto yy374; + goto yy158; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy435; - if (yych == 'e') goto yy435; - goto yy128; + if (yych == 'E') goto yy372; + if (yych == 'e') goto yy372; + goto yy158; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy436; - if (yych == 't') goto yy436; - goto yy128; + if (yych == 'O') goto yy368; + if (yych == 'o') goto yy368; + goto yy158; yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy438; - if (yych == 'e') goto yy438; - goto yy128; + if (yych == 'L') goto yy361; + if (yych == 'l') goto yy361; + goto yy158; yy351: YYDEBUG(351, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'N') goto yy352; + if (yych != 'n') goto yy158; +yy352: YYDEBUG(352, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1360 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NEW); -} -#line 4533 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy353; + if (yych != 't') goto yy158; yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy439; - if (yych <= 'U') goto yy128; - goto yy440; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy128; - goto yy439; - } else { - if (yych == 'v') goto yy440; - goto yy128; - } - } + if (yych == 'E') goto yy354; + if (yych != 'e') goto yy356; yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy441; - if (yych == 't') goto yy441; - goto yy128; + if (yych == 'G') goto yy359; + if (yych == 'g') goto yy359; + goto yy158; yy355: YYDEBUG(355, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy442; - if (yych == 'l') goto yy442; - goto yy128; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy356: YYDEBUG(356, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy443; - if (yych == 'u') goto yy443; - goto yy128; -yy357: + if (yych <= 0x1F) { + if (yych == '\t') goto yy355; + goto yy158; + } else { + if (yych <= ' ') goto yy355; + if (yych != ')') goto yy158; + } YYDEBUG(357, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy444; - if (yych == 'u') goto yy444; - goto yy128; -yy358: + ++YYCURSOR; YYDEBUG(358, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy445; - if (yych == 't') goto yy445; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1372 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INT_CAST); +} +#line 4457 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy446; - if (yych == 't') goto yy446; - goto yy128; + if (yych == 'E') goto yy360; + if (yych != 'e') goto yy158; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy447; - if (yych == 'o') goto yy447; - goto yy128; + if (yych == 'R') goto yy355; + if (yych == 'r') goto yy355; + goto yy158; yy361: YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy448; - if (yych == 'i') goto yy448; - goto yy128; + if (yych == 'O') goto yy362; + if (yych != 'o') goto yy158; yy362: YYDEBUG(362, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy363; + if (yych != 'a') goto yy158; +yy363: YYDEBUG(363, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1188 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRY); -} -#line 4610 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy364; + if (yych != 't') goto yy158; yy364: YYDEBUG(364, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy449; - if (yych == 'e') goto yy449; - goto yy128; -yy365: - YYDEBUG(365, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(365, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy364; + goto yy158; + } else { + if (yych <= ' ') goto yy364; + if (yych != ')') goto yy158; } YYDEBUG(366, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1424 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 4629 "Zend/zend_language_scanner.c" -yy367: - YYDEBUG(367, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(368, *YYCURSOR); + YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1368 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_VAR); + RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4642 "Zend/zend_language_scanner.c" +#line 4505 "Zend/zend_language_scanner.c" +yy368: + YYDEBUG(368, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy369; + if (yych != 'u') goto yy158; yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy450; - if (yych == 'l') goto yy450; - goto yy128; + if (yych == 'B') goto yy370; + if (yych != 'b') goto yy158; yy370: YYDEBUG(370, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy371; + if (yych != 'l') goto yy158; +yy371: YYDEBUG(371, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 4661 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy364; + if (yych == 'e') goto yy364; + goto yy158; yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy451; - if (yych == 'l') goto yy451; - goto yy128; + if (yych == 'A') goto yy373; + if (yych != 'a') goto yy158; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy452; - if (yych == 'l') goto yy452; - goto yy128; + if (yych == 'L') goto yy364; + if (yych == 'l') goto yy364; + goto yy158; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy453; - if (yych == 'i') goto yy453; - goto yy128; + if (yych == 'R') goto yy375; + if (yych != 'r') goto yy158; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy454; - if (yych <= 'T') goto yy128; - goto yy455; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy128; - goto yy454; - } else { - if (yych == 'u') goto yy455; - goto yy128; - } - } + if (yych == 'I') goto yy376; + if (yych != 'i') goto yy158; yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy456; - if (yych == 'a') goto yy456; - goto yy128; + if (yych == 'N') goto yy377; + if (yych != 'n') goto yy158; yy377: YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy457; - if (yych == 'i') goto yy457; - goto yy128; + if (yych == 'G') goto yy378; + if (yych != 'g') goto yy158; yy378: YYDEBUG(378, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy458; - if (yych == 'e') goto yy458; - goto yy128; -yy379: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(379, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy459; - if (yych == 'a') goto yy459; - goto yy128; -yy380: + if (yych <= 0x1F) { + if (yych == '\t') goto yy378; + goto yy158; + } else { + if (yych <= ' ') goto yy378; + if (yych != ')') goto yy158; + } YYDEBUG(380, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy460; - if (yych == 'r') goto yy460; - goto yy128; -yy381: + ++YYCURSOR; YYDEBUG(381, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy461; - if (yych == 'a') goto yy461; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1380 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STRING_CAST); +} +#line 4579 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy462; - if (yych == 'a') goto yy462; - goto yy166; + if (yych == 'R') goto yy383; + if (yych != 'r') goto yy158; yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy463; - if (yych == 'l') goto yy463; - goto yy166; + if (yych == 'A') goto yy384; + if (yych != 'a') goto yy158; yy384: YYDEBUG(384, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy464; - if (yych == 'b') goto yy464; - goto yy166; + if (yych == 'Y') goto yy385; + if (yych != 'y') goto yy158; yy385: YYDEBUG(385, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy465; - if (yych == 'a') goto yy465; - goto yy166; -yy386: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(386, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy470; - if (yych == 'e') goto yy470; - goto yy467; -yy387: + if (yych <= 0x1F) { + if (yych == '\t') goto yy385; + goto yy158; + } else { + if (yych <= ' ') goto yy385; + if (yych != ')') goto yy158; + } YYDEBUG(387, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy471; - if (yych == 'e') goto yy471; - goto yy166; -yy388: + ++YYCURSOR; YYDEBUG(388, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy472; - if (yych == 'l') goto yy472; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1384 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY_CAST); +} +#line 4616 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy474; - if (yych == 'i') goto yy474; - goto yy166; + if (yych == 'J') goto yy390; + if (yych != 'j') goto yy158; yy390: YYDEBUG(390, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy475; - if (yych == 'e') goto yy475; - goto yy166; + if (yych == 'E') goto yy391; + if (yych != 'e') goto yy158; yy391: YYDEBUG(391, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy392; + if (yych != 'c') goto yy158; +yy392: + YYDEBUG(392, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy393; + if (yych != 't') goto yy158; +yy393: + YYDEBUG(393, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(392, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy197; - if (yych <= '\n') goto yy391; - goto yy197; + YYDEBUG(394, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy393; + goto yy158; } else { - if (yych <= '\r') goto yy391; - if (yych == ' ') goto yy391; - goto yy197; + if (yych <= ' ') goto yy393; + if (yych != ')') goto yy158; } -yy393: - YYDEBUG(393, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy166; - if (yych <= '/') goto yy477; - if (yych <= '9') goto yy166; - goto yy477; -yy394: - YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy166; - if (yych <= '/') goto yy479; - if (yych <= '9') goto yy166; - goto yy479; -yy395: YYDEBUG(395, *YYCURSOR); ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; YYDEBUG(396, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy480; - goto yy166; - } else { - if (yych <= '\r') goto yy482; - if (yych <= '/') goto yy166; - if (yych <= '9') goto yy395; - goto yy166; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy395; - if (yych <= '^') goto yy166; - goto yy395; - } else { - if (yych <= '`') goto yy166; - if (yych <= 'z') goto yy395; - if (yych <= 0x7F) goto yy166; - goto yy395; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1388 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OBJECT_CAST); +} +#line 4658 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy483; - if (yych == 'r') goto yy483; - goto yy128; + if (yych == 'N') goto yy407; + if (yych == 'n') goto yy407; + goto yy158; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy484; - if (yych == 'y') goto yy484; - goto yy128; + if (yych == 'O') goto yy399; + if (yych != 'o') goto yy158; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy486; - if (yych == 'k') goto yy486; - goto yy128; + if (yych == 'L') goto yy400; + if (yych != 'l') goto yy158; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy488; - if (yych == 'a') goto yy488; - goto yy128; + if (yych == 'E') goto yy405; + if (yych == 'e') goto yy405; + goto yy402; yy401: YYDEBUG(401, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + YYFILL(1); + yych = *YYCURSOR; +yy402: YYDEBUG(402, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy401; + goto yy158; + } else { + if (yych <= ' ') goto yy401; + if (yych != ')') goto yy158; + } + YYDEBUG(403, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CASE); + RETURN_TOKEN(T_BOOL_CAST); } -#line 4879 "Zend/zend_language_scanner.c" -yy403: - YYDEBUG(403, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy489; - if (yych == 'h') goto yy489; - goto yy128; -yy404: - YYDEBUG(404, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy491; - if (yych == 's') goto yy491; - goto yy128; +#line 4703 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy493; - if (yych == 'e') goto yy493; - goto yy128; + if (yych == 'A') goto yy406; + if (yych != 'a') goto yy158; yy406: YYDEBUG(406, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy495; - if (yych == 't') goto yy495; - goto yy128; + if (yych == 'N') goto yy401; + if (yych == 'n') goto yy401; + goto yy158; yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy497; - if (yych == 'i') goto yy497; - goto yy128; + if (yych == 'A') goto yy408; + if (yych != 'a') goto yy158; yy408: YYDEBUG(408, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy498; - if (yych == 'a') goto yy498; - goto yy128; + if (yych == 'R') goto yy409; + if (yych != 'r') goto yy158; yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy499; - if (yych == 'u') goto yy499; - goto yy128; + if (yych == 'Y') goto yy378; + if (yych == 'y') goto yy378; + goto yy158; yy410: YYDEBUG(410, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'S') goto yy411; + if (yych != 's') goto yy158; +yy411: YYDEBUG(411, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ECHO); -} -#line 4934 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy412; + if (yych != 'e') goto yy158; yy412: YYDEBUG(412, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy413; + if (yych != 't') goto yy158; +yy413: + YYDEBUG(413, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy413; - if (yych <= '9') goto yy127; - } else { - if (yych == 'I') goto yy500; - if (yych <= 'Z') goto yy127; - } + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(414, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy413; + goto yy158; } else { - if (yych <= 'h') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'i') goto yy500; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + if (yych <= ' ') goto yy413; + if (yych != ')') goto yy158; } -yy413: - YYDEBUG(413, *YYCURSOR); + YYDEBUG(415, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + RETURN_TOKEN(T_UNSET_CAST); } -#line 4962 "Zend/zend_language_scanner.c" -yy414: - YYDEBUG(414, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy501; - if (yych == 'y') goto yy501; - goto yy128; -yy415: - YYDEBUG(415, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy503; - if (yych == 'e') goto yy503; - goto yy128; -yy416: - YYDEBUG(416, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy504; - if (yych == 'o') goto yy504; - goto yy128; +#line 4767 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy505; - if (yych == 'f') goto yy505; - goto yy128; + if (yych == 'R') goto yy418; + if (yych != 'r') goto yy151; yy418: YYDEBUG(418, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy507; - if (yych == 'w') goto yy507; - goto yy128; -yy419: - YYDEBUG(419, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy508; - if (yych == 'h') goto yy508; - goto yy128; -yy420: - YYDEBUG(420, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(421, *YYCURSOR); + YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" +#line 1368 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EVAL); + RETURN_TOKEN(T_VAR); } -#line 5011 "Zend/zend_language_scanner.c" +#line 4785 "Zend/zend_language_scanner.c" +yy420: + YYDEBUG(420, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy424; + if (yych == 'm') goto yy424; + goto yy151; +yy421: + YYDEBUG(421, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy422; + if (yych != 'w') goto yy151; yy422: YYDEBUG(422, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1158 "Zend/zend_language_scanner.l" +#line 1360 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_NEW); } -#line 5024 "Zend/zend_language_scanner.c" +#line 4809 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy509; - if (yych == 'n') goto yy509; - goto yy128; + if (yych == 'E') goto yy425; + if (yych != 'e') goto yy151; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy510; - if (yych == 'l') goto yy510; - goto yy128; + if (yych == 'S') goto yy426; + if (yych != 's') goto yy151; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy512; - if (yych == 'a') goto yy512; - goto yy128; + if (yych == 'P') goto yy427; + if (yych != 'p') goto yy151; yy427: YYDEBUG(427, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy513; - if (yych == 't') goto yy513; - goto yy128; + if (yych == 'A') goto yy428; + if (yych != 'a') goto yy151; yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy514; - if (yych == 'a') goto yy514; - goto yy128; + if (yych == 'C') goto yy429; + if (yych != 'c') goto yy151; yy429: YYDEBUG(429, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy430; + if (yych != 'e') goto yy151; +yy430: + YYDEBUG(430, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(430, *YYCURSOR); + YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" +#line 1420 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_GOTO); + RETURN_TOKEN(T_NAMESPACE); } -#line 5067 "Zend/zend_language_scanner.c" -yy431: - YYDEBUG(431, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy515; - if (yych == 'e') goto yy515; - goto yy128; +#line 4852 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy516; - if (yych == 'u') goto yy516; - goto yy128; + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy436; + if (yych == '\r') goto yy437; yy433: YYDEBUG(433, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy517; - if (yych <= 'D') goto yy128; - goto yy518; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy517; - } else { - if (yych == 'e') goto yy518; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1990 "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 */ +} +#line 4869 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy519; - if (yych == 'r') goto yy519; - goto yy128; -yy435: - YYDEBUG(435, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy520; - if (yych == 't') goto yy520; - goto yy128; -yy436: - YYDEBUG(436, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(437, *YYCURSOR); + YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1356 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LIST); + RETURN_TOKEN(T_COALESCE); } -#line 5120 "Zend/zend_language_scanner.c" +#line 4879 "Zend/zend_language_scanner.c" +yy436: + YYDEBUG(436, *YYCURSOR); + yych = *++YYCURSOR; + goto yy433; +yy437: + YYDEBUG(437, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy436; + goto yy433; yy438: YYDEBUG(438, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy522; - if (yych == 's') goto yy522; - goto yy128; -yy439: + yyaccept = 3; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(439, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy523; - if (yych == 't') goto yy523; - goto yy128; + if (yych <= 'D') { + if (yych <= '/') goto yy154; + if (yych <= '9') goto yy438; + goto yy154; + } else { + if (yych <= 'E') goto yy157; + if (yych == 'e') goto yy157; + goto yy154; + } yy440: YYDEBUG(440, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy525; - if (yych == 'a') goto yy525; - goto yy128; -yy441: + ++YYCURSOR; YYDEBUG(441, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy526; - if (yych == 'e') goto yy526; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1552 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONCAT_EQUAL); +} +#line 4914 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy527; - if (yych == 'i') goto yy527; - goto yy128; -yy443: + if (yych != '.') goto yy158; YYDEBUG(443, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy528; - if (yych == 'i') goto yy528; - goto yy128; -yy444: + ++YYCURSOR; YYDEBUG(444, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy529; - if (yych == 'r') goto yy529; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1352 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELLIPSIS); +} +#line 4927 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy530; - if (yych == 'i') goto yy530; - goto yy128; -yy446: + ++YYCURSOR; YYDEBUG(446, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy531; - if (yych == 'c') goto yy531; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1344 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); +} +#line 4937 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy532; - if (yych == 'w') goto yy532; - goto yy128; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy448: YYDEBUG(448, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy534; - if (yych == 't') goto yy534; - goto yy128; + if (yych <= '\f') { + if (yych <= 0x08) goto yy105; + if (yych <= '\n') goto yy447; + goto yy105; + } else { + if (yych <= '\r') goto yy447; + if (yych == ' ') goto yy447; + goto yy105; + } yy449: YYDEBUG(449, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy536; - if (yych == 't') goto yy536; - goto yy128; -yy450: + ++YYCURSOR; YYDEBUG(450, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy538; - if (yych == 'e') goto yy538; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1532 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MINUS_EQUAL); +} +#line 4963 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy540; - if (yych == 'd') goto yy540; - goto yy128; -yy452: + ++YYCURSOR; YYDEBUG(452, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy542; - if (yych == 'a') goto yy542; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1496 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEC); +} +#line 4973 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy543; - if (yych == 'r') goto yy543; - goto yy128; -yy454: + ++YYCURSOR; YYDEBUG(454, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy544; - if (yych == 'l') goto yy544; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1318 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN(T_OBJECT_OPERATOR); +} +#line 4984 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy545; - if (yych == 'n') goto yy545; - goto yy128; + if (yych <= 'O') { + if (yych == 'I') goto yy462; + if (yych <= 'N') goto yy151; + goto yy463; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy151; + goto yy462; + } else { + if (yych == 'o') goto yy463; + goto yy151; + } + } yy456: YYDEBUG(456, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy546; - if (yych == 'l') goto yy546; - goto yy128; + if (yych == 'B') goto yy457; + if (yych != 'b') goto yy151; yy457: YYDEBUG(457, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy547; - if (yych == 'n') goto yy547; - goto yy128; + if (yych == 'L') goto yy458; + if (yych != 'l') goto yy151; yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy548; - if (yych == 't') goto yy548; - goto yy128; + if (yych == 'I') goto yy459; + if (yych != 'i') goto yy151; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy549; - if (yych == 'm') goto yy549; - goto yy128; + if (yych == 'C') goto yy460; + if (yych != 'c') goto yy151; yy460: YYDEBUG(460, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy550; - if (yych == 'a') goto yy550; - goto yy128; -yy461: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(461, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy551; - if (yych == 'y') goto yy551; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1468 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PUBLIC); +} +#line 5033 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy553; - if (yych == 'r') goto yy553; - goto yy166; + if (yych <= 'V') { + if (yych == 'N') goto yy471; + if (yych <= 'U') goto yy151; + goto yy472; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy151; + goto yy471; + } else { + if (yych == 'v') goto yy472; + goto yy151; + } + } yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy558; - if (yych == 'e') goto yy558; - goto yy555; + if (yych == 'T') goto yy464; + if (yych != 't') goto yy151; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy559; - if (yych == 'l') goto yy559; - goto yy166; + if (yych == 'E') goto yy465; + if (yych != 'e') goto yy151; yy465: YYDEBUG(465, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy472; - if (yych == 't') goto yy472; - goto yy166; -yy466: - YYDEBUG(466, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy467: - YYDEBUG(467, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy466; - goto yy166; - } else { - if (yych <= ' ') goto yy466; - if (yych != ')') goto yy166; - } - YYDEBUG(468, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(469, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 5311 "Zend/zend_language_scanner.c" -yy470: - YYDEBUG(470, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy560; - if (yych == 'g') goto yy560; - goto yy166; -yy471: - YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy561; - if (yych == 'c') goto yy561; - goto yy166; -yy472: - YYDEBUG(472, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(473, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy472; - goto yy166; - } else { - if (yych <= ' ') goto yy472; - if (yych == ')') goto yy562; - goto yy166; - } -yy474: - YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy564; - if (yych == 'n') goto yy564; - goto yy166; -yy475: - YYDEBUG(475, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy565; - if (yych == 't') goto yy565; - goto yy166; -yy476: - YYDEBUG(476, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy477: - YYDEBUG(477, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '"') goto yy567; - goto yy166; - } else { - if (yych <= '9') goto yy476; - if (yych <= '@') goto yy166; - goto yy476; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy476; - goto yy166; - } else { - if (yych <= 'z') goto yy476; - if (yych <= 0x7F) goto yy166; - goto yy476; - } - } -yy478: - YYDEBUG(478, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy479: - YYDEBUG(479, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy567; - goto yy166; - } else { - if (yych <= '9') goto yy478; - if (yych <= '@') goto yy166; - goto yy478; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy478; - goto yy166; - } else { - if (yych <= 'z') goto yy478; - if (yych <= 0x7F) goto yy166; - goto yy478; - } - } -yy480: - YYDEBUG(480, *YYCURSOR); - ++YYCURSOR; -yy481: - YYDEBUG(481, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2165 "Zend/zend_language_scanner.l" - { - char *s; - int bprefix = (yytext[0] != '<') ? 1 : 0; - zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label)); - - CG(zend_lineno)++; - heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - heredoc_label->length--; - } - - if (*s == '\'') { - s++; - heredoc_label->length -= 2; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - heredoc_label->length -= 2; - } - - BEGIN(ST_HEREDOC); - } - - heredoc_label->label = estrndup(s, heredoc_label->length); - - /* Check for ending label on the next line */ - if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (*end == ';') { - end++; - } - - if (*end == '\n' || *end == '\r') { - BEGIN(ST_END_HEREDOC); + yych = *++YYCURSOR; + if (yych == 'C') goto yy466; + if (yych != 'c') goto yy151; +yy466: + YYDEBUG(466, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy467; + if (yych != 't') goto yy151; +yy467: + YYDEBUG(467, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy468; + if (yych != 'e') goto yy151; +yy468: + YYDEBUG(468, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy469; + if (yych != 'd') goto yy151; +yy469: + YYDEBUG(469, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - } - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); - - RETURN_TOKEN(T_START_HEREDOC); + YYDEBUG(470, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1464 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PROTECTED); } -#line 5455 "Zend/zend_language_scanner.c" -yy482: - YYDEBUG(482, *YYCURSOR); +#line 5092 "Zend/zend_language_scanner.c" +yy471: + YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy480; - goto yy481; -yy483: - YYDEBUG(483, *YYCURSOR); + if (yych == 'T') goto yy477; + if (yych == 't') goto yy477; + goto yy151; +yy472: + YYDEBUG(472, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy568; - if (yych == 'a') goto yy568; - goto yy128; -yy484: - YYDEBUG(484, *YYCURSOR); + if (yych == 'A') goto yy473; + if (yych != 'a') goto yy151; +yy473: + YYDEBUG(473, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy474; + if (yych != 't') goto yy151; +yy474: + YYDEBUG(474, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy475; + if (yych != 'e') goto yy151; +yy475: + YYDEBUG(475, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(485, *YYCURSOR); + YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" +#line 1460 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ARRAY); + RETURN_TOKEN(T_PRIVATE); } -#line 5479 "Zend/zend_language_scanner.c" -yy486: - YYDEBUG(486, *YYCURSOR); +#line 5126 "Zend/zend_language_scanner.c" +yy477: + YYDEBUG(477, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(487, *YYCURSOR); + YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" +#line 1294 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BREAK); + RETURN_TOKEN(T_PRINT); } -#line 5492 "Zend/zend_language_scanner.c" -yy488: - YYDEBUG(488, *YYCURSOR); +#line 5139 "Zend/zend_language_scanner.c" +yy479: + YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy569; - if (yych == 'b') goto yy569; - goto yy128; -yy489: - YYDEBUG(489, *YYCURSOR); + if (yych == 'O') goto yy484; + if (yych == 'o') goto yy484; + goto yy151; +yy480: + YYDEBUG(480, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy481; + if (yych != 't') goto yy151; +yy481: + YYDEBUG(481, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy482; + if (yych != 'o') goto yy151; +yy482: + YYDEBUG(482, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(490, *YYCURSOR); + YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1192 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CATCH); + RETURN_TOKEN(T_GOTO); } -#line 5511 "Zend/zend_language_scanner.c" -yy491: - YYDEBUG(491, *YYCURSOR); +#line 5168 "Zend/zend_language_scanner.c" +yy484: + YYDEBUG(484, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy485; + if (yych != 'b') goto yy151; +yy485: + YYDEBUG(485, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy486; + if (yych != 'a') goto yy151; +yy486: + YYDEBUG(486, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy487; + if (yych != 'l') goto yy151; +yy487: + YYDEBUG(487, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(492, *YYCURSOR); + YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS); + RETURN_TOKEN(T_GLOBAL); } -#line 5524 "Zend/zend_language_scanner.c" +#line 5196 "Zend/zend_language_scanner.c" +yy489: + YYDEBUG(489, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '<') goto yy497; + goto yy158; +yy490: + YYDEBUG(490, *YYCURSOR); + yych = *++YYCURSOR; + goto yy145; +yy491: + YYDEBUG(491, *YYCURSOR); + yych = *++YYCURSOR; + goto yy143; +yy492: + YYDEBUG(492, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy493; + if (yych != 'e') goto yy151; yy493: YYDEBUG(493, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy494; + if (yych != 'a') goto yy151; +yy494: YYDEBUG(494, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1364 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLONE); -} -#line 5537 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'K') goto yy495; + if (yych != 'k') goto yy151; yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1170 "Zend/zend_language_scanner.l" +#line 1278 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONST); + RETURN_TOKEN(T_BREAK); } -#line 5550 "Zend/zend_language_scanner.c" +#line 5237 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy570; - if (yych == 'n') goto yy570; - goto yy128; + if (yych == '<') goto yy220; + goto yy158; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy571; - if (yych == 'r') goto yy571; - goto yy128; + if (yych == 'A') goto yy505; + if (yych == 'a') goto yy505; + goto yy151; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy572; - if (yych == 'l') goto yy572; - goto yy128; + if (yych == 'I') goto yy500; + if (yych != 'i') goto yy151; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy573; - if (yych == 'f') goto yy573; - goto yy128; + if (yych == 'T') goto yy501; + if (yych != 't') goto yy151; yy501: YYDEBUG(501, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy502; + if (yych != 'c') goto yy151; +yy502: YYDEBUG(502, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1440 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EMPTY); -} -#line 5587 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy503; + if (yych != 'h') goto yy151; yy503: YYDEBUG(503, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy575; - if (yych == 'c') goto yy575; - goto yy128; -yy504: - YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy576; - if (yych == 'r') goto yy576; - goto yy128; -yy505: - YYDEBUG(505, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(506, *YYCURSOR); + YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1212 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDIF); + RETURN_TOKEN(T_SWITCH); } -#line 5612 "Zend/zend_language_scanner.c" +#line 5281 "Zend/zend_language_scanner.c" +yy505: + YYDEBUG(505, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy506; + if (yych != 't') goto yy151; +yy506: + YYDEBUG(506, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy507; + if (yych != 'i') goto yy151; yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy578; - if (yych == 'i') goto yy578; - goto yy128; + if (yych == 'C') goto yy508; + if (yych != 'c') goto yy151; yy508: YYDEBUG(508, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy579; - if (yych == 'i') goto yy579; - goto yy128; -yy509: - YYDEBUG(509, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy580; - if (yych == 'd') goto yy580; - goto yy128; -yy510: - YYDEBUG(510, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy511; - if (yych <= '9') goto yy127; - } else { - if (yych == 'L') goto yy581; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'k') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'l') goto yy581; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } -yy511: - YYDEBUG(511, *YYCURSOR); + YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FINAL); + RETURN_TOKEN(T_STATIC); } -#line 5658 "Zend/zend_language_scanner.c" +#line 5309 "Zend/zend_language_scanner.c" +yy510: + YYDEBUG(510, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy521; + if (yych == 's') goto yy521; + goto yy151; +yy511: + YYDEBUG(511, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy519; + if (yych == 'd') goto yy519; + goto yy151; yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy582; - if (yych == 'c') goto yy582; - goto yy128; + if (yych == 'R') goto yy515; + if (yych == 'r') goto yy515; + goto yy151; yy513: YYDEBUG(513, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy583; - if (yych == 'i') goto yy583; - goto yy128; -yy514: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(514, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy584; - if (yych == 'l') goto yy584; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1258 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_AS); +} +#line 5340 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy586; - if (yych == 'm') goto yy586; - goto yy128; + if (yych == 'A') goto yy516; + if (yych != 'a') goto yy151; yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy587; - if (yych == 'd') goto yy587; - goto yy128; + if (yych == 'Y') goto yy517; + if (yych != 'y') goto yy151; yy517: YYDEBUG(517, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy588; - if (yych == 'n') goto yy588; - goto yy128; -yy518: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(518, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy589; - if (yych == 'a') goto yy589; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1484 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY); +} +#line 5363 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy590; - if (yych == 'f') goto yy590; - goto yy128; -yy520: - YYDEBUG(520, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(521, *YYCURSOR); + YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ISSET); + RETURN_TOKEN(T_LOGICAL_AND); } -#line 5719 "Zend/zend_language_scanner.c" +#line 5376 "Zend/zend_language_scanner.c" +yy521: + YYDEBUG(521, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy522; + if (yych != 't') goto yy151; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy591; - if (yych == 'p') goto yy591; - goto yy128; + if (yych == 'R') goto yy523; + if (yych != 'r') goto yy151; yy523: YYDEBUG(523, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy524; + if (yych != 'a') goto yy151; +yy524: YYDEBUG(524, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5738 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy525; + if (yych != 'c') goto yy151; yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy592; - if (yych == 't') goto yy592; - goto yy128; + if (yych == 'T') goto yy526; + if (yych != 't') goto yy151; yy526: YYDEBUG(526, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy593; - if (yych == 'c') goto yy593; - goto yy128; -yy527: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(527, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy594; - if (yych == 'c') goto yy594; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1452 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ABSTRACT); +} +#line 5414 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy596; - if (yych == 'r') goto yy596; - goto yy128; + if (yych == 'I') goto yy529; + if (yych != 'i') goto yy151; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy597; - if (yych == 'n') goto yy597; - goto yy128; + if (yych == 'L') goto yy530; + if (yych != 'l') goto yy151; yy530: YYDEBUG(530, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy599; - if (yych == 'c') goto yy599; - goto yy128; + if (yych == 'E') goto yy531; + if (yych != 'e') goto yy151; yy531: YYDEBUG(531, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy601; - if (yych == 'h') goto yy601; - goto yy128; -yy532: - YYDEBUG(532, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(533, *YYCURSOR); + YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1200 "Zend/zend_language_scanner.l" +#line 1218 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_THROW); + RETURN_TOKEN(T_WHILE); } -#line 5793 "Zend/zend_language_scanner.c" -yy534: - YYDEBUG(534, *YYCURSOR); +#line 5442 "Zend/zend_language_scanner.c" +yy533: + YYDEBUG(533, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(535, *YYCURSOR); + YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" +#line 1202 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRAIT); + RETURN_TOKEN(T_IF); } -#line 5806 "Zend/zend_language_scanner.c" +#line 5455 "Zend/zend_language_scanner.c" +yy535: + YYDEBUG(535, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy577; + if (yych == 'p') goto yy577; + goto yy151; yy536: YYDEBUG(536, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy151; + goto yy544; + } else { + if (yych <= 'R') goto yy151; + if (yych <= 'S') goto yy542; + goto yy543; + } + } else { + if (yych <= 'r') { + if (yych == 'c') goto yy544; + goto yy151; + } else { + if (yych <= 's') goto yy542; + if (yych <= 't') goto yy543; + goto yy151; + } } +yy537: YYDEBUG(537, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 5819 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy538; + if (yych != 's') goto yy151; yy538: YYDEBUG(538, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy539; + if (yych != 'e') goto yy151; +yy539: YYDEBUG(539, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_WHILE); -} -#line 5832 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy540; + if (yych != 't') goto yy151; yy540: YYDEBUG(540, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy127; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy541; - if (yych <= '\n') goto yy603; - } else { - if (yych <= '\r') goto yy603; - if (yych == ' ') goto yy603; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } -yy541: YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1184 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_YIELD); + RETURN_TOKEN(T_ISSET); } -#line 5854 "Zend/zend_language_scanner.c" +#line 5511 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy605; - if (yych == 's') goto yy605; - goto yy128; + if (yych == 'T') goto yy563; + if (yych == 't') goto yy563; + goto yy151; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy606; - goto yy128; + if (yych == 'E') goto yy556; + if (yych == 'e') goto yy556; + goto yy151; yy544: YYDEBUG(544, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy607; - if (yych == 'e') goto yy607; - goto yy128; + if (yych == 'L') goto yy545; + if (yych != 'l') goto yy151; yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy608; - if (yych == 'c') goto yy608; - goto yy128; + if (yych == 'U') goto yy546; + if (yych != 'u') goto yy151; yy546: YYDEBUG(546, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy609; - if (yych == 't') goto yy609; - goto yy128; + if (yych == 'D') goto yy547; + if (yych != 'd') goto yy151; yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy610; - if (yych == 'e') goto yy610; - goto yy128; + if (yych == 'E') goto yy548; + if (yych != 'e') goto yy151; yy548: YYDEBUG(548, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy611; - if (yych == 'h') goto yy611; - goto yy128; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy150; + } else { + if (yych <= '@') goto yy549; + if (yych <= 'Z') goto yy150; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy550; + } else { + if (yych <= 'z') goto yy150; + if (yych >= 0x80) goto yy150; + } + } yy549: YYDEBUG(549, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy612; - if (yych == 'e') goto yy612; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1404 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE); +} +#line 5569 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy613; - if (yych == 'i') goto yy613; - goto yy128; + if (yych == 'O') goto yy551; + if (yych != 'o') goto yy151; yy551: YYDEBUG(551, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy552; + if (yych != 'n') goto yy151; +yy552: YYDEBUG(552, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy551; - goto yy166; - } else { - if (yych <= ' ') goto yy551; - if (yych == ')') goto yy614; - goto yy166; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy553; + if (yych != 'c') goto yy151; yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy616; - if (yych == 'y') goto yy616; - goto yy166; + if (yych == 'E') goto yy554; + if (yych != 'e') goto yy151; yy554: YYDEBUG(554, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy555: - YYDEBUG(555, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy554; - goto yy166; - } else { - if (yych <= ' ') goto yy554; - if (yych != ')') goto yy166; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(556, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(557, *YYCURSOR); + YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" +#line 1408 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOL_CAST); + RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5950 "Zend/zend_language_scanner.c" +#line 5602 "Zend/zend_language_scanner.c" +yy556: + YYDEBUG(556, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy557; + if (yych != 'r') goto yy151; +yy557: + YYDEBUG(557, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy558; + if (yych != 'f') goto yy151; yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy618; - if (yych == 'a') goto yy618; - goto yy166; + if (yych == 'A') goto yy559; + if (yych != 'a') goto yy151; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy472; - if (yych == 'e') goto yy472; - goto yy166; + if (yych == 'C') goto yy560; + if (yych != 'c') goto yy151; yy560: YYDEBUG(560, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy619; - if (yych == 'e') goto yy619; - goto yy166; + if (yych == 'E') goto yy561; + if (yych != 'e') goto yy151; yy561: YYDEBUG(561, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy620; - if (yych == 't') goto yy620; - goto yy166; -yy562: - YYDEBUG(562, *YYCURSOR); ++YYCURSOR; - YYDEBUG(563, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DOUBLE_CAST); + RETURN_TOKEN(T_INTERFACE); } -#line 5984 "Zend/zend_language_scanner.c" +#line 5640 "Zend/zend_language_scanner.c" +yy563: + YYDEBUG(563, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy564; + if (yych <= 'D') goto yy151; + goto yy565; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy151; + } else { + if (yych == 'e') goto yy565; + goto yy151; + } + } yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy616; - if (yych == 'g') goto yy616; - goto yy166; + if (yych == 'N') goto yy571; + if (yych == 'n') goto yy571; + goto yy151; yy565: YYDEBUG(565, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'A') goto yy566; + if (yych != 'a') goto yy151; +yy566: YYDEBUG(566, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy565; - goto yy166; - } else { - if (yych <= ' ') goto yy565; - if (yych == ')') goto yy622; - goto yy166; - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy567; + if (yych != 'd') goto yy151; yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy480; - if (yych == '\r') goto yy482; - goto yy166; + if (yych == 'O') goto yy568; + if (yych != 'o') goto yy151; yy568: YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy624; - if (yych == 'c') goto yy624; - goto yy128; + if (yych == 'F') goto yy569; + if (yych != 'f') goto yy151; yy569: YYDEBUG(569, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy625; - if (yych == 'l') goto yy625; - goto yy128; -yy570: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(570, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy626; - if (yych == 'u') goto yy626; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1428 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INSTEADOF); +} +#line 5694 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy627; - if (yych == 'e') goto yy627; - goto yy128; + if (yych == 'C') goto yy572; + if (yych != 'c') goto yy151; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy629; - if (yych == 't') goto yy629; - goto yy128; + if (yych == 'E') goto yy573; + if (yych != 'e') goto yy151; yy573: YYDEBUG(573, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy574; + if (yych != 'o') goto yy151; +yy574: YYDEBUG(574, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1208 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELSEIF); -} -#line 6053 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy575; + if (yych != 'f') goto yy151; yy575: YYDEBUG(575, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy631; - if (yych == 'l') goto yy631; - goto yy128; -yy576: - YYDEBUG(576, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy577; - if (yych <= '9') goto yy127; - } else { - if (yych == 'E') goto yy632; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'e') goto yy632; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } -yy577: - YYDEBUG(577, *YYCURSOR); + YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOR); + RETURN_TOKEN(T_INSTANCEOF); } -#line 6087 "Zend/zend_language_scanner.c" +#line 5727 "Zend/zend_language_scanner.c" +yy577: + YYDEBUG(577, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy578; + if (yych != 'l') goto yy151; yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy633; - if (yych == 't') goto yy633; - goto yy128; + if (yych == 'E') goto yy579; + if (yych != 'e') goto yy151; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy634; - if (yych == 'l') goto yy634; - goto yy128; + if (yych == 'M') goto yy580; + if (yych != 'm') goto yy151; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy635; - if (yych == 's') goto yy635; - goto yy128; + if (yych == 'E') goto yy581; + if (yych != 'e') goto yy151; yy581: YYDEBUG(581, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy637; - if (yych == 'y') goto yy637; - goto yy128; + if (yych == 'N') goto yy582; + if (yych != 'n') goto yy151; yy582: YYDEBUG(582, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy639; - if (yych == 'h') goto yy639; - goto yy128; + if (yych == 'T') goto yy583; + if (yych != 't') goto yy151; yy583: YYDEBUG(583, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy641; - if (yych == 'o') goto yy641; - goto yy128; + if (yych == 'S') goto yy584; + if (yych != 's') goto yy151; yy584: YYDEBUG(584, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_GLOBAL); + RETURN_TOKEN(T_IMPLEMENTS); } -#line 6136 "Zend/zend_language_scanner.c" +#line 5775 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy642; - if (yych == 'e') goto yy642; - goto yy128; + if (yych == 'R') goto yy594; + if (yych == 'r') goto yy594; + goto yy151; yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy643; - if (yych == 'e') goto yy643; - goto yy128; -yy588: + if (yych <= 'Y') { + if (yych == 'A') goto yy590; + if (yych <= 'X') goto yy151; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy151; + goto yy590; + } else { + if (yych != 'y') goto yy151; + } + } YYDEBUG(588, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy645; - if (yych == 'c') goto yy645; - goto yy128; -yy589: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(589, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy646; - if (yych == 'd') goto yy646; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1186 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRY); +} +#line 5807 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy647; - if (yych == 'a') goto yy647; - goto yy128; + if (yych == 'I') goto yy591; + if (yych != 'i') goto yy151; yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy648; - if (yych == 'a') goto yy648; - goto yy128; + if (yych == 'T') goto yy592; + if (yych != 't') goto yy151; yy592: YYDEBUG(592, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy649; - if (yych == 'e') goto yy649; - goto yy128; -yy593: - YYDEBUG(593, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy651; - if (yych == 't') goto yy651; - goto yy128; -yy594: - YYDEBUG(594, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(595, *YYCURSOR); + YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PUBLIC); + RETURN_TOKEN(T_TRAIT); } -#line 6197 "Zend/zend_language_scanner.c" +#line 5830 "Zend/zend_language_scanner.c" +yy594: + YYDEBUG(594, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy595; + if (yych != 'o') goto yy151; +yy595: + YYDEBUG(595, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy596; + if (yych != 'w') goto yy151; yy596: YYDEBUG(596, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy652; - if (yych == 'e') goto yy652; - goto yy128; -yy597: - YYDEBUG(597, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(598, *YYCURSOR); + YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1174 "Zend/zend_language_scanner.l" +#line 1198 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_RETURN); + RETURN_TOKEN(T_THROW); } -#line 6216 "Zend/zend_language_scanner.c" +#line 5853 "Zend/zend_language_scanner.c" +yy598: + YYDEBUG(598, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy599; + if (yych != 'e') goto yy151; yy599: YYDEBUG(599, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy600; + if (yych != 'l') goto yy151; +yy600: YYDEBUG(600, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 6229 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy601; + if (yych != 'd') goto yy151; yy601: YYDEBUG(601, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy150; + } + if (yych <= '\f') { + if (yych <= 0x08) goto yy602; + if (yych <= '\n') goto yy603; + } else { + if (yych <= '\r') goto yy603; + if (yych == ' ') goto yy603; } +yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" +#line 1182 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SWITCH); + RETURN_TOKEN(T_YIELD); } -#line 6242 "Zend/zend_language_scanner.c" +#line 5890 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6247,1088 +5941,1210 @@ int start_line = CG(zend_lineno); YYDEBUG(604, *YYCURSOR); if (yych <= 0x1F) { if (yych <= '\n') { - if (yych <= 0x08) goto yy166; + if (yych <= 0x08) goto yy158; goto yy603; } else { if (yych == '\r') goto yy603; - goto yy166; + goto yy158; } } else { if (yych <= 'F') { if (yych <= ' ') goto yy603; - if (yych <= 'E') goto yy166; - goto yy654; + if (yych <= 'E') goto yy158; } else { - if (yych == 'f') goto yy654; - goto yy166; + if (yych != 'f') goto yy158; } } -yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy655; - if (yych == 's') goto yy655; - goto yy128; + if (yych == 'R') goto yy606; + if (yych != 'r') goto yy158; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy656; - goto yy128; + if (yych == 'O') goto yy607; + if (yych != 'o') goto yy158; yy607: YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy658; - goto yy128; + if (yych == 'M') goto yy608; + if (yych != 'm') goto yy158; yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy659; - if (yych == 't') goto yy659; - goto yy128; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy158; + } else { + if (yych <= '@') goto yy609; + if (yych <= 'Z') goto yy158; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy158; + } else { + if (yych <= 'z') goto yy158; + if (yych >= 0x80) goto yy158; + } + } yy609: YYDEBUG(609, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy660; - goto yy128; -yy610: + ++YYCURSOR; YYDEBUG(610, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy661; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1176 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 1); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_YIELD_FROM); +} +#line 5956 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy662; - if (yych == 'o') goto yy662; - goto yy128; -yy612: + if (yych <= 'T') { + if (yych == 'Q') goto yy613; + if (yych <= 'S') goto yy151; + } else { + if (yych <= 'q') { + if (yych <= 'p') goto yy151; + goto yy613; + } else { + if (yych != 't') goto yy151; + } + } YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy663; - if (yych == 's') goto yy663; - goto yy128; + if (yych == 'U') goto yy625; + if (yych == 'u') goto yy625; + goto yy151; yy613: YYDEBUG(613, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy664; - if (yych == 't') goto yy664; - goto yy128; + if (yych == 'U') goto yy614; + if (yych != 'u') goto yy151; yy614: YYDEBUG(614, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy615; + if (yych != 'i') goto yy151; +yy615: YYDEBUG(615, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1384 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY_CAST); -} -#line 6326 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy616; + if (yych != 'r') goto yy151; yy616: YYDEBUG(616, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy617; + if (yych != 'e') goto yy151; +yy617: YYDEBUG(617, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy616; - goto yy166; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy150; + } else { + if (yych <= '@') goto yy618; + if (yych <= 'Z') goto yy150; + } } else { - if (yych <= ' ') goto yy616; - if (yych == ')') goto yy665; - goto yy166; + if (yych <= '`') { + if (yych <= '_') goto yy619; + } else { + if (yych <= 'z') goto yy150; + if (yych >= 0x80) goto yy150; + } } yy618: YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy554; - if (yych == 'n') goto yy554; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1412 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE); +} +#line 6021 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy466; - if (yych == 'r') goto yy466; - goto yy166; + if (yych == 'O') goto yy620; + if (yych != 'o') goto yy151; yy620: YYDEBUG(620, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy621; + if (yych != 'n') goto yy151; +yy621: YYDEBUG(621, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy620; - goto yy166; - } else { - if (yych <= ' ') goto yy620; - if (yych == ')') goto yy667; - goto yy166; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy622; + if (yych != 'c') goto yy151; yy622: YYDEBUG(622, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy623; + if (yych != 'e') goto yy151; +yy623: YYDEBUG(623, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1416 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_UNSET_CAST); + RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6376 "Zend/zend_language_scanner.c" -yy624: - YYDEBUG(624, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy669; - if (yych == 't') goto yy669; - goto yy128; +#line 6054 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy671; - if (yych == 'e') goto yy671; - goto yy128; + if (yych == 'R') goto yy626; + if (yych != 'r') goto yy151; yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy673; - if (yych == 'e') goto yy673; - goto yy128; + if (yych == 'N') goto yy627; + if (yych != 'n') goto yy151; yy627: YYDEBUG(627, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" +#line 1172 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DECLARE); + RETURN_TOKEN(T_RETURN); } -#line 6407 "Zend/zend_language_scanner.c" +#line 6077 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych <= 'K') goto yy151; + goto yy652; + } else { + if (yych <= 'R') goto yy151; + if (yych <= 'S') goto yy651; + goto yy650; + } + } else { + if (yych <= 'r') { + if (yych == 'l') goto yy652; + goto yy151; + } else { + if (yych <= 's') goto yy651; + if (yych <= 't') goto yy650; + goto yy151; + } } +yy630: YYDEBUG(630, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEFAULT); -} -#line 6420 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'A') goto yy642; + if (yych <= 'N') goto yy151; + goto yy643; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy151; + goto yy642; + } else { + if (yych == 'o') goto yy643; + goto yy151; + } + } yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy675; - if (yych == 'a') goto yy675; - goto yy128; + if (yych == 'N') goto yy632; + if (yych != 'n') goto yy151; yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy676; - if (yych == 'a') goto yy676; - goto yy128; + if (yych <= 'T') { + if (yych <= 'R') goto yy151; + if (yych >= 'T') goto yy634; + } else { + if (yych <= 'r') goto yy151; + if (yych <= 's') goto yy633; + if (yych <= 't') goto yy634; + goto yy151; + } yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy677; - if (yych == 'c') goto yy677; - goto yy128; + if (yych == 'T') goto yy640; + if (yych == 't') goto yy640; + goto yy151; yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy678; - if (yych == 'e') goto yy678; - goto yy128; + if (yych == 'I') goto yy635; + if (yych != 'i') goto yy151; yy635: YYDEBUG(635, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'N') goto yy636; + if (yych != 'n') goto yy151; +yy636: YYDEBUG(636, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXTENDS); -} -#line 6457 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'U') goto yy637; + if (yych != 'u') goto yy151; yy637: YYDEBUG(637, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy638; + if (yych != 'e') goto yy151; +yy638: + YYDEBUG(638, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(638, *YYCURSOR); + YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1196 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FINALLY); + RETURN_TOKEN(T_CONTINUE); } -#line 6470 "Zend/zend_language_scanner.c" -yy639: - YYDEBUG(639, *YYCURSOR); +#line 6171 "Zend/zend_language_scanner.c" +yy640: + YYDEBUG(640, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(640, *YYCURSOR); + YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" +#line 1168 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOREACH); + RETURN_TOKEN(T_CONST); } -#line 6483 "Zend/zend_language_scanner.c" -yy641: - YYDEBUG(641, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy680; - if (yych == 'n') goto yy680; - goto yy128; +#line 6184 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy682; - if (yych == 'n') goto yy682; - goto yy128; + if (yych == 'S') goto yy647; + if (yych == 's') goto yy647; + goto yy151; yy643: YYDEBUG(643, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy127; - } else { - if (yych <= '@') goto yy644; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy683; - } else { - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } - } + yych = *++YYCURSOR; + if (yych == 'N') goto yy644; + if (yych != 'n') goto yy151; yy644: YYDEBUG(644, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1404 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE); -} -#line 6521 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy645; + if (yych != 'e') goto yy151; yy645: YYDEBUG(645, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy684; - if (yych == 'e') goto yy684; - goto yy128; -yy646: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(646, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy685; - if (yych == 'o') goto yy685; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1364 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLONE); +} +#line 6213 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy686; - if (yych == 'c') goto yy686; - goto yy128; + if (yych == 'S') goto yy648; + if (yych != 's') goto yy151; yy648: YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy687; - if (yych == 'c') goto yy687; - goto yy128; -yy649: - YYDEBUG(649, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(650, *YYCURSOR); + YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PRIVATE); + RETURN_TOKEN(T_CLASS); } -#line 6558 "Zend/zend_language_scanner.c" +#line 6231 "Zend/zend_language_scanner.c" +yy650: + YYDEBUG(650, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy661; + if (yych == 'c') goto yy661; + goto yy151; yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy688; - if (yych == 'e') goto yy688; - goto yy128; + if (yych == 'E') goto yy659; + if (yych == 'e') goto yy659; + goto yy151; yy652: YYDEBUG(652, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy127; - } else { - if (yych <= '@') goto yy653; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy689; - } else { - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy653; + if (yych != 'l') goto yy151; yy653: YYDEBUG(653, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1412 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 6590 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy654; + if (yych != 'a') goto yy151; yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy690; - if (yych == 'r') goto yy690; - goto yy166; + if (yych == 'B') goto yy655; + if (yych != 'b') goto yy151; yy655: YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy691; - goto yy128; + if (yych == 'L') goto yy656; + if (yych != 'l') goto yy151; yy656: YYDEBUG(656, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy657; + if (yych != 'e') goto yy151; +yy657: + YYDEBUG(657, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(657, *YYCURSOR); + YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1814 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DIR); + RETURN_TOKEN(T_CALLABLE); } -#line 6614 "Zend/zend_language_scanner.c" -yy658: - YYDEBUG(658, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy692; - goto yy128; +#line 6281 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy694; - if (yych == 'i') goto yy694; - goto yy128; -yy660: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(660, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy695; - if (yych == 'c') goto yy695; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1270 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CASE); +} +#line 6294 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy696; - goto yy128; + if (yych == 'H') goto yy662; + if (yych != 'h') goto yy151; yy662: YYDEBUG(662, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy698; - if (yych == 'd') goto yy698; - goto yy128; -yy663: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(663, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy699; - if (yych == 'p') goto yy699; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1190 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CATCH); +} +#line 6312 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy700; - goto yy128; + if (yych == 'N') goto yy681; + if (yych == 'n') goto yy681; + goto yy151; yy665: YYDEBUG(665, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy674; + if (yych == 'r') goto yy674; + goto yy151; +yy666: YYDEBUG(666, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STRING_CAST); -} -#line 6663 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy667; + if (yych != 'n') goto yy151; yy667: YYDEBUG(667, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'C') goto yy668; + if (yych != 'c') goto yy151; +yy668: YYDEBUG(668, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1388 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_CAST); -} -#line 6673 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy669; + if (yych != 't') goto yy151; yy669: YYDEBUG(669, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy670; + if (yych != 'i') goto yy151; +yy670: YYDEBUG(670, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ABSTRACT); -} -#line 6686 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy671; + if (yych != 'o') goto yy151; yy671: YYDEBUG(671, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy672; + if (yych != 'n') goto yy151; +yy672: + YYDEBUG(672, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(672, *YYCURSOR); + YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" +#line 1164 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CALLABLE); + RETURN_TOKEN(T_FUNCTION); } -#line 6699 "Zend/zend_language_scanner.c" -yy673: - YYDEBUG(673, *YYCURSOR); +#line 6367 "Zend/zend_language_scanner.c" +yy674: + YYDEBUG(674, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy675; + if (yych <= '9') goto yy150; + } else { + if (yych == 'E') goto yy676; + if (yych <= 'Z') goto yy150; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy150; + } else { + if (yych <= 'e') goto yy676; + if (yych <= 'z') goto yy150; + if (yych >= 0x80) goto yy150; + } } - YYDEBUG(674, *YYCURSOR); +yy675: + YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" +#line 1230 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONTINUE); + RETURN_TOKEN(T_FOR); } -#line 6712 "Zend/zend_language_scanner.c" -yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy701; - if (yych == 'r') goto yy701; - goto yy128; +#line 6395 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy702; - if (yych == 'c') goto yy702; - goto yy128; + if (yych == 'A') goto yy677; + if (yych != 'a') goto yy151; yy677: YYDEBUG(677, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy703; - if (yych == 'h') goto yy703; - goto yy128; + if (yych == 'C') goto yy678; + if (yych != 'c') goto yy151; yy678: YYDEBUG(678, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'H') goto yy679; + if (yych != 'h') goto yy151; +yy679: YYDEBUG(679, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDWHILE); -} -#line 6743 "Zend/zend_language_scanner.c" -yy680: - YYDEBUG(680, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(681, *YYCURSOR); + YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1166 "Zend/zend_language_scanner.l" +#line 1238 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNCTION); + RETURN_TOKEN(T_FOREACH); } -#line 6756 "Zend/zend_language_scanner.c" +#line 6423 "Zend/zend_language_scanner.c" +yy681: + YYDEBUG(681, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy682; + if (yych != 'a') goto yy151; yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy705; - if (yych == 't') goto yy705; - goto yy128; + if (yych == 'L') goto yy683; + if (yych != 'l') goto yy151; yy683: YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy706; - if (yych == 'o') goto yy706; - goto yy128; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy684; + if (yych <= '9') goto yy150; + } else { + if (yych == 'L') goto yy685; + if (yych <= 'Z') goto yy150; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy150; + } else { + if (yych <= 'l') goto yy685; + if (yych <= 'z') goto yy150; + if (yych >= 0x80) goto yy150; + } + } yy684: YYDEBUG(684, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy707; - if (yych == 'o') goto yy707; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1456 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINAL); +} +#line 6461 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy708; - if (yych == 'f') goto yy708; - goto yy128; + if (yych == 'Y') goto yy686; + if (yych != 'y') goto yy151; yy686: YYDEBUG(686, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy710; - if (yych == 'e') goto yy710; - goto yy128; -yy687: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy712; - if (yych == 'e') goto yy712; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1194 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINALLY); +} +#line 6479 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy714; - if (yych == 'd') goto yy714; - goto yy128; + if (yych <= 'F') { + if (yych == 'C') goto yy694; + if (yych <= 'E') goto yy151; + goto yy695; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy151; + goto yy694; + } else { + if (yych == 'f') goto yy695; + goto yy151; + } + } yy689: YYDEBUG(689, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy716; - if (yych == 'o') goto yy716; - goto yy128; + if (yych == 'E') goto yy692; + if (yych == 'e') goto yy692; + goto yy151; yy690: YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy717; - if (yych == 'o') goto yy717; - goto yy166; -yy691: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(691, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy718; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1226 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DO); +} +#line 6514 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1810 "Zend/zend_language_scanner.l" +#line 1160 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FILE); + RETURN_TOKEN(T_EXIT); } -#line 6828 "Zend/zend_language_scanner.c" +#line 6527 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy720; - if (yych == 'o') goto yy720; - goto yy128; + if (yych == 'L') goto yy701; + if (yych == 'l') goto yy701; + goto yy151; yy695: YYDEBUG(695, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy721; - if (yych == 'o') goto yy721; - goto yy128; + if (yych == 'A') goto yy696; + if (yych != 'a') goto yy151; yy696: YYDEBUG(696, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'U') goto yy697; + if (yych != 'u') goto yy151; +yy697: YYDEBUG(697, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1806 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LINE); -} -#line 6853 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy698; + if (yych != 'l') goto yy151; yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy722; - goto yy128; + if (yych == 'T') goto yy699; + if (yych != 't') goto yy151; yy699: YYDEBUG(699, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy723; - if (yych == 'a') goto yy723; - goto yy128; -yy700: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(700, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy724; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1274 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEFAULT); +} +#line 6566 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy726; - if (yych == 'e') goto yy726; - goto yy128; + if (yych == 'A') goto yy702; + if (yych != 'a') goto yy151; yy702: YYDEBUG(702, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy728; - if (yych == 'h') goto yy728; - goto yy128; + if (yych == 'R') goto yy703; + if (yych != 'r') goto yy151; yy703: YYDEBUG(703, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy704; + if (yych != 'e') goto yy151; +yy704: + YYDEBUG(704, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(704, *YYCURSOR); + YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDSWITCH); + RETURN_TOKEN(T_DECLARE); } -#line 6894 "Zend/zend_language_scanner.c" -yy705: - YYDEBUG(705, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy730; - if (yych == 's') goto yy730; - goto yy128; +#line 6594 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy732; - if (yych == 'n') goto yy732; - goto yy128; + if (yych == 'H') goto yy768; + if (yych == 'h') goto yy768; + goto yy151; yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy733; - if (yych == 'f') goto yy733; - goto yy128; + if (yych == 'S') goto yy762; + if (yych == 's') goto yy762; + goto yy151; yy708: YYDEBUG(708, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'P') goto yy758; + if (yych == 'p') goto yy758; + goto yy151; +yy709: YYDEBUG(709, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1428 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTEADOF); -} -#line 6925 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy724; + if (yych == 'd') goto yy724; + goto yy151; yy710: YYDEBUG(710, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy721; + if (yych == 'a') goto yy721; + goto yy151; +yy711: YYDEBUG(711, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INTERFACE); -} -#line 6938 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'I') goto yy712; + if (yych <= 'S') goto yy151; + goto yy713; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy151; + } else { + if (yych == 't') goto yy713; + goto yy151; + } + } yy712: YYDEBUG(712, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy719; + if (yych == 't') goto yy719; + goto yy151; +yy713: YYDEBUG(713, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NAMESPACE); -} -#line 6951 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy714; + if (yych != 'e') goto yy151; yy714: YYDEBUG(714, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'N') goto yy715; + if (yych != 'n') goto yy151; +yy715: YYDEBUG(715, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PROTECTED); -} -#line 6964 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy716; + if (yych != 'd') goto yy151; yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy735; - if (yych == 'n') goto yy735; - goto yy128; + if (yych == 'S') goto yy717; + if (yych != 's') goto yy151; yy717: YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy736; - if (yych == 'm') goto yy736; - goto yy166; -yy718: - YYDEBUG(718, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(719, *YYCURSOR); + YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1790 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS_C); + RETURN_TOKEN(T_EXTENDS); } -#line 6989 "Zend/zend_language_scanner.c" -yy720: +#line 6678 "Zend/zend_language_scanner.c" +yy719: + YYDEBUG(719, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(720, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy737; - if (yych == 'n') goto yy737; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1156 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXIT); +} +#line 6691 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy738; - if (yych == 'm') goto yy738; - goto yy128; + if (yych == 'L') goto yy722; + if (yych != 'l') goto yy151; yy722: YYDEBUG(722, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy739; - goto yy128; -yy723: - YYDEBUG(723, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy741; - if (yych == 'c') goto yy741; - goto yy128; -yy724: - YYDEBUG(724, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(725, *YYCURSOR); + YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1794 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRAIT_C); + RETURN_TOKEN(T_EVAL); } -#line 7025 "Zend/zend_language_scanner.c" +#line 6709 "Zend/zend_language_scanner.c" +yy724: + YYDEBUG(724, *YYCURSOR); + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy725; + case 'F': + case 'f': goto yy726; + case 'I': + case 'i': goto yy727; + case 'S': + case 's': goto yy728; + case 'W': + case 'w': goto yy729; + default: goto yy151; + } +yy725: + YYDEBUG(725, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy751; + if (yych == 'e') goto yy751; + goto yy151; yy726: YYDEBUG(726, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy743; + if (yych == 'o') goto yy743; + goto yy151; +yy727: YYDEBUG(727, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 7038 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy741; + if (yych == 'f') goto yy741; + goto yy151; yy728: YYDEBUG(728, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'W') goto yy735; + if (yych == 'w') goto yy735; + goto yy151; +yy729: YYDEBUG(729, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOREACH); -} -#line 7051 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy730; + if (yych != 'h') goto yy151; yy730: YYDEBUG(730, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy731; + if (yych != 'i') goto yy151; +yy731: YYDEBUG(731, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 7064 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy732; + if (yych != 'l') goto yy151; yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy742; - if (yych == 'c') goto yy742; - goto yy128; + if (yych == 'E') goto yy733; + if (yych != 'e') goto yy151; yy733: YYDEBUG(733, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" +#line 1222 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INSTANCEOF); + RETURN_TOKEN(T_ENDWHILE); } -#line 7083 "Zend/zend_language_scanner.c" +#line 6782 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy743; - if (yych == 'c') goto yy743; - goto yy128; + if (yych == 'I') goto yy736; + if (yych != 'i') goto yy151; yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych <= '/') goto yy744; - goto yy166; - } else { - if (yych <= '@') goto yy744; - if (yych <= 'Z') goto yy166; - goto yy744; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy166; - goto yy744; - } else { - if (yych <= 'z') goto yy166; - if (yych <= 0x7F) goto yy744; - goto yy166; - } - } + if (yych == 'T') goto yy737; + if (yych != 't') goto yy151; yy737: YYDEBUG(737, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy746; - goto yy128; + if (yych == 'C') goto yy738; + if (yych != 'c') goto yy151; yy738: YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy747; - if (yych == 'p') goto yy747; - goto yy128; + if (yych == 'H') goto yy739; + if (yych != 'h') goto yy151; yy739: YYDEBUG(739, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1802 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_METHOD_C); + RETURN_TOKEN(T_ENDSWITCH); } -#line 7135 "Zend/zend_language_scanner.c" +#line 6815 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy748; - if (yych == 'e') goto yy748; - goto yy128; -yy742: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(742, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy749; - if (yych == 'e') goto yy749; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1210 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDIF); +} +#line 6828 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy751; - if (yych == 'e') goto yy751; - goto yy128; + if (yych == 'R') goto yy744; + if (yych != 'r') goto yy151; yy744: YYDEBUG(744, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy745; + if (yych <= '9') goto yy150; + } else { + if (yych == 'E') goto yy746; + if (yych <= 'Z') goto yy150; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy150; + } else { + if (yych <= 'e') goto yy746; + if (yych <= 'z') goto yy150; + if (yych >= 0x80) goto yy150; + } + } +yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1178 "Zend/zend_language_scanner.l" +#line 1234 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_YIELD_FROM); + RETURN_TOKEN(T_ENDFOR); } -#line 7165 "Zend/zend_language_scanner.c" +#line 6861 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy753; - goto yy128; + if (yych == 'A') goto yy747; + if (yych != 'a') goto yy151; yy747: YYDEBUG(747, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy755; - if (yych == 'i') goto yy755; - goto yy128; + if (yych == 'C') goto yy748; + if (yych != 'c') goto yy151; yy748: YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy756; - goto yy128; + if (yych == 'H') goto yy749; + if (yych != 'h') goto yy151; yy749: YYDEBUG(749, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1408 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE_ONCE); + RETURN_TOKEN(T_ENDFOREACH); } -#line 7194 "Zend/zend_language_scanner.c" +#line 6889 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy752; + if (yych != 'c') goto yy151; +yy752: YYDEBUG(752, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1416 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE_ONCE); -} -#line 7207 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy753; + if (yych != 'l') goto yy151; yy753: YYDEBUG(753, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy754; + if (yych != 'a') goto yy151; +yy754: YYDEBUG(754, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1798 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNC_C); -} -#line 7220 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy755; + if (yych != 'r') goto yy151; yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy757; - if (yych == 'l') goto yy757; - goto yy128; + if (yych == 'E') goto yy756; + if (yych != 'e') goto yy151; yy756: YYDEBUG(756, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy758; - goto yy128; -yy757: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } YYDEBUG(757, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy760; - if (yych == 'e') goto yy760; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1250 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDDECLARE); +} +#line 6927 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy759; + if (yych != 't') goto yy151; +yy759: + YYDEBUG(759, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy760; + if (yych != 'y') goto yy151; +yy760: + YYDEBUG(760, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; } - YYDEBUG(759, *YYCURSOR); + YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1818 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_C); + RETURN_TOKEN(T_EMPTY); } -#line 7250 "Zend/zend_language_scanner.c" -yy760: - YYDEBUG(760, *YYCURSOR); +#line 6950 "Zend/zend_language_scanner.c" +yy762: + YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy761; - if (yych != 'r') goto yy128; -yy761: - YYDEBUG(761, *YYCURSOR); + if (yych == 'E') goto yy763; + if (yych != 'e') goto yy151; +yy763: + YYDEBUG(763, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy764; + if (yych <= '9') goto yy150; + } else { + if (yych == 'I') goto yy765; + if (yych <= 'Z') goto yy150; + } + } else { + if (yych <= 'h') { + if (yych != '`') goto yy150; + } else { + if (yych <= 'i') goto yy765; + if (yych <= 'z') goto yy150; + if (yych >= 0x80) goto yy150; + } } - YYDEBUG(762, *YYCURSOR); +yy764: + YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1444 "Zend/zend_language_scanner.l" +#line 1214 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_HALT_COMPILER); + RETURN_TOKEN(T_ELSE); +} +#line 6983 "Zend/zend_language_scanner.c" +yy765: + YYDEBUG(765, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy766; + if (yych != 'f') goto yy151; +yy766: + YYDEBUG(766, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(767, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1206 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELSEIF); +} +#line 7001 "Zend/zend_language_scanner.c" +yy768: + YYDEBUG(768, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy769; + if (yych != 'o') goto yy151; +yy769: + YYDEBUG(769, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy150; + } + YYDEBUG(770, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1290 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ECHO); } -#line 7268 "Zend/zend_language_scanner.c" +#line 7019 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 0, 0, 64, 0, 0, + 0, 128, 128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 0, 0, 0, 0, 0, 0, + 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 0, 0, 0, 0, 64, + 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 0, 0, 0, 0, 0, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(763, *YYCURSOR); + YYDEBUG(771, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy767; - } - if (yych <= '^') { - if (yych <= '-') { - if (yych >= '-') goto yy770; + if (yych <= '-') { + if (yych <= '\r') { + if (yych <= 0x08) goto yy779; + if (yych <= '\n') goto yy773; + if (yych <= '\f') goto yy779; } else { - if (yych <= '@') goto yy765; - if (yych <= 'Z') goto yy771; + if (yych == ' ') goto yy773; + if (yych <= ',') goto yy779; + goto yy775; } } else { - if (yych <= '`') { - if (yych <= '_') goto yy771; + if (yych <= '_') { + if (yych <= '@') goto yy779; + if (yych <= 'Z') goto yy777; + if (yych <= '^') goto yy779; + goto yy777; } else { - if (yych <= 'z') goto yy771; - if (yych >= 0x80) goto yy771; + if (yych <= '`') goto yy779; + if (yych <= 'z') goto yy777; + if (yych <= 0x7F) goto yy779; + goto yy777; } } -yy765: - YYDEBUG(765, *YYCURSOR); +yy773: + YYDEBUG(773, *YYCURSOR); ++YYCURSOR; -yy766: - YYDEBUG(766, *YYCURSOR); + yych = *YYCURSOR; + goto yy785; +yy774: + YYDEBUG(774, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1323 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 7097 "Zend/zend_language_scanner.c" +yy775: + YYDEBUG(775, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy782; +yy776: + YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1338 "Zend/zend_language_scanner.l" { @@ -7336,55 +7152,57 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7340 "Zend/zend_language_scanner.c" -yy767: - YYDEBUG(767, *YYCURSOR); +#line 7111 "Zend/zend_language_scanner.c" +yy777: + YYDEBUG(777, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy781; +yy778: + YYDEBUG(778, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1332 "Zend/zend_language_scanner.l" + { + yy_pop_state(); + RETURN_TOKEN_WITH_STR(T_STRING, 0); +} +#line 7126 "Zend/zend_language_scanner.c" +yy779: + YYDEBUG(779, *YYCURSOR); + yych = *++YYCURSOR; + goto yy776; +yy780: + YYDEBUG(780, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(768, *YYCURSOR); +yy781: + YYDEBUG(781, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy767; + goto yy780; } - YYDEBUG(769, *YYCURSOR); + goto yy778; +yy782: + YYDEBUG(782, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { - goto return_whitespace; + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7356 "Zend/zend_language_scanner.c" -yy770: - YYDEBUG(770, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy774; - goto yy766; -yy771: - YYDEBUG(771, *YYCURSOR); +#line 7151 "Zend/zend_language_scanner.c" +yy784: + YYDEBUG(784, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(772, *YYCURSOR); +yy785: + YYDEBUG(785, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy771; + goto yy784; } - YYDEBUG(773, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1333 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 7378 "Zend/zend_language_scanner.c" -yy774: - YYDEBUG(774, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(775, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1329 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_OPERATOR); -} -#line 7388 "Zend/zend_language_scanner.c" + goto yy774; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7423,77 +7241,74 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(776, *YYCURSOR); + YYDEBUG(786, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy778; - if (yych <= 'Z') goto yy780; - if (yych >= '_') goto yy780; + if (yych <= '@') goto yy790; + if (yych <= 'Z') goto yy788; + if (yych <= '^') goto yy790; } else { - if (yych <= '`') goto yy778; - if (yych <= 'z') goto yy780; - if (yych >= 0x80) goto yy780; + if (yych <= '`') goto yy790; + if (yych <= 'z') goto yy788; + if (yych <= 0x7F) goto yy790; } -yy778: - YYDEBUG(778, *YYCURSOR); - ++YYCURSOR; -yy779: - YYDEBUG(779, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" - { - yyless(0); - yy_pop_state(); - yy_push_state(ST_IN_SCRIPTING); - goto restart; -} -#line 7452 "Zend/zend_language_scanner.c" -yy780: - YYDEBUG(780, *YYCURSOR); +yy788: + YYDEBUG(788, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy779; - if (yych <= '9') goto yy782; - goto yy779; + if (yych <= '/') goto yy789; + if (yych <= '9') goto yy792; } else { - if (yych <= '[') goto yy782; - if (yych <= '^') goto yy779; - goto yy782; + if (yych <= '[') goto yy792; + if (yych >= '_') goto yy792; } } else { if (yych <= '|') { - if (yych <= '`') goto yy779; - if (yych <= 'z') goto yy782; - goto yy779; + if (yych <= '`') goto yy789; + if (yych <= 'z') goto yy792; } else { - if (yych <= '}') goto yy782; - if (yych <= 0x7F) goto yy779; - goto yy782; + if (yych <= '}') goto yy792; + if (yych >= 0x80) goto yy792; } } -yy781: - YYDEBUG(781, *YYCURSOR); +yy789: + YYDEBUG(789, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1643 "Zend/zend_language_scanner.l" + { + yyless(0); + yy_pop_state(); + yy_push_state(ST_IN_SCRIPTING); + goto restart; +} +#line 7243 "Zend/zend_language_scanner.c" +yy790: + YYDEBUG(790, *YYCURSOR); + yych = *++YYCURSOR; + goto yy789; +yy791: + YYDEBUG(791, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy782: - YYDEBUG(782, *YYCURSOR); +yy792: + YYDEBUG(792, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy781; + goto yy791; } - if (yych <= '@') goto yy783; - if (yych <= '[') goto yy784; - if (yych == '}') goto yy784; -yy783: - YYDEBUG(783, *YYCURSOR); + if (yych <= '@') goto yy793; + if (yych <= '[') goto yy794; + if (yych == '}') goto yy794; +yy793: + YYDEBUG(793, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy779; -yy784: - YYDEBUG(784, *YYCURSOR); + goto yy789; +yy794: + YYDEBUG(794, *YYCURSOR); ++YYCURSOR; - YYDEBUG(785, *YYCURSOR); + YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1634 "Zend/zend_language_scanner.l" { @@ -7502,20 +7317,21 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7506 "Zend/zend_language_scanner.c" +#line 7278 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(786, *YYCURSOR); + YYDEBUG(796, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(788, *YYCURSOR); + YYDEBUG(798, *YYCURSOR); ++YYCURSOR; - YYDEBUG(789, *YYCURSOR); + YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2429 "Zend/zend_language_scanner.l" +#line 2375 "Zend/zend_language_scanner.l" { - int newline = 0; + int newline = 0, indentation, len, new_len; + char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7533,6 +7349,12 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': + indentation = 0; + while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + ++YYCURSOR; + ++indentation; + } + /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; @@ -7564,12 +7386,17 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + len = yyleng - indentation; + copy = estrndup(yytext, len); + + new_len = strip_multiline_string_indentation(copy, len, newline, indentation); - zend_copy_value(zendlval, yytext, yyleng - newline); + zend_copy_value(zendlval, copy, new_len); + efree(copy); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7573 "Zend/zend_language_scanner.c" +#line 7357 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7580,154 +7407,100 @@ int start_line = CG(zend_lineno); 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 240, 240, 176, 176, 176, 176, 176, 176, - 176, 176, 0, 0, 0, 0, 0, 0, - 0, 160, 160, 160, 160, 160, 160, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 0, 0, 32, - 0, 160, 160, 160, 160, 160, 160, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 0, 0, 0, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, + 240, 240, 112, 112, 112, 112, 112, 112, + 112, 112, 0, 0, 0, 0, 0, 0, + 0, 80, 80, 80, 80, 80, 80, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 16, + 0, 80, 80, 80, 80, 80, 80, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, }; - YYDEBUG(790, *YYCURSOR); + YYDEBUG(800, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '0') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy792; - if (yych <= '\n') goto yy794; + if (yych <= 0x08) goto yy814; + if (yych <= '\n') goto yy810; + goto yy814; } else { - if (yych <= '\r') goto yy794; - if (yych >= ' ') goto yy794; + if (yych <= '\r') goto yy810; + if (yych <= 0x1F) goto yy814; + goto yy810; } } else { if (yych <= '$') { - if (yych <= '"') goto yy796; - if (yych <= '#') goto yy794; - goto yy798; + if (yych <= '"') goto yy809; + if (yych <= '#') goto yy810; + goto yy805; } else { - if (yych == '\'') goto yy794; - if (yych <= '/') goto yy796; - goto yy799; + if (yych == '\'') goto yy810; + if (yych <= '/') goto yy809; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '9') goto yy801; - if (yych <= '@') goto yy796; - goto yy803; + if (yych <= '9') goto yy804; + if (yych <= '@') goto yy809; + goto yy812; } else { - if (yych <= '[') goto yy796; - if (yych <= '\\') goto yy794; - goto yy806; + if (yych <= '[') goto yy809; + if (yych <= '\\') goto yy810; + goto yy807; } } else { if (yych <= '`') { - if (yych == '_') goto yy803; - goto yy796; + if (yych == '_') goto yy812; + goto yy809; } else { - if (yych <= 'z') goto yy803; - if (yych <= '~') goto yy796; - if (yych >= 0x80) goto yy803; + if (yych <= 'z') goto yy812; + if (yych <= '~') goto yy809; + if (yych <= 0x7F) goto yy814; + goto yy812; } } } -yy792: - YYDEBUG(792, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(793, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2486 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 7670 "Zend/zend_language_scanner.c" -yy794: - YYDEBUG(794, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(795, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "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_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 7684 "Zend/zend_language_scanner.c" -yy796: - YYDEBUG(796, *YYCURSOR); - ++YYCURSOR; -yy797: - YYDEBUG(797, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1928 "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 7696 "Zend/zend_language_scanner.c" -yy798: - YYDEBUG(798, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy797; - if (yych <= 'Z') goto yy808; - if (yych <= '^') goto yy797; - goto yy808; - } else { - if (yych <= '`') goto yy797; - if (yych <= 'z') goto yy808; - if (yych <= 0x7F) goto yy797; - goto yy808; - } -yy799: - YYDEBUG(799, *YYCURSOR); + YYDEBUG(802, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy811; + if (yych >= '0') goto yy826; } else { - if (yych == 'B') goto yy814; + if (yych == 'B') goto yy823; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy816; - if (yych >= 'b') goto yy814; + if (yych <= 'X') goto yy825; + if (yych >= 'b') goto yy823; } else { - if (yych == 'x') goto yy816; + if (yych == 'x') goto yy825; } } -yy800: - YYDEBUG(800, *YYCURSOR); +yy803: + YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1756 "Zend/zend_language_scanner.l" +#line 1749 "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; @@ -7743,134 +7516,197 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7747 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); +#line 7477 "Zend/zend_language_scanner.c" +yy804: + YYDEBUG(804, *YYCURSOR); + yych = *++YYCURSOR; + goto yy822; +yy805: + YYDEBUG(805, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(802, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy801; + if ((yych = *YYCURSOR) <= '_') { + if (yych <= '@') goto yy806; + if (yych <= 'Z') goto yy818; + if (yych >= '_') goto yy818; + } else { + if (yych <= '`') goto yy806; + if (yych <= 'z') goto yy818; + if (yych >= 0x80) goto yy818; } - goto yy800; -yy803: - YYDEBUG(803, *YYCURSOR); +yy806: + YYDEBUG(806, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1909 "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 7502 "Zend/zend_language_scanner.c" +yy807: + YYDEBUG(807, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(808, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1904 "Zend/zend_language_scanner.l" + { + yy_pop_state(); + RETURN_TOKEN(']'); +} +#line 7513 "Zend/zend_language_scanner.c" +yy809: + YYDEBUG(809, *YYCURSOR); + yych = *++YYCURSOR; + goto yy806; +yy810: + YYDEBUG(810, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(811, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1914 "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); +} +#line 7531 "Zend/zend_language_scanner.c" +yy812: + YYDEBUG(812, *YYCURSOR); ++YYCURSOR; - YYFILL(1); yych = *YYCURSOR; - YYDEBUG(804, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy803; - } - YYDEBUG(805, *YYCURSOR); + goto yy817; +yy813: + YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7773 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); +#line 7545 "Zend/zend_language_scanner.c" +yy814: + YYDEBUG(814, *YYCURSOR); ++YYCURSOR; - YYDEBUG(807, *YYCURSOR); + YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1923 "Zend/zend_language_scanner.l" +#line 2444 "Zend/zend_language_scanner.l" { - yy_pop_state(); - RETURN_TOKEN(']'); + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; } -#line 7784 "Zend/zend_language_scanner.c" -yy808: - YYDEBUG(808, *YYCURSOR); +#line 7560 "Zend/zend_language_scanner.c" +yy816: + YYDEBUG(816, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(809, *YYCURSOR); +yy817: + YYDEBUG(817, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy816; + } + goto yy813; +yy818: + YYDEBUG(818, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(819, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy808; + if (yych >= '0') goto yy818; } else { - if (yych <= '@') goto yy810; - if (yych <= 'Z') goto yy808; + if (yych <= '@') goto yy820; + if (yych <= 'Z') goto yy818; } } else { if (yych <= '`') { - if (yych <= '_') goto yy808; + if (yych <= '_') goto yy818; } else { - if (yych <= 'z') goto yy808; - if (yych >= 0x80) goto yy808; + if (yych <= 'z') goto yy818; + if (yych >= 0x80) goto yy818; } } -yy810: - YYDEBUG(810, *YYCURSOR); +yy820: + YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7813 "Zend/zend_language_scanner.c" -yy811: - YYDEBUG(811, *YYCURSOR); +#line 7601 "Zend/zend_language_scanner.c" +yy821: + YYDEBUG(821, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(812, *YYCURSOR); - if (yych <= '/') goto yy813; - if (yych <= '9') goto yy811; -yy813: - YYDEBUG(813, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" - { /* Offset must be treated as a 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 7834 "Zend/zend_language_scanner.c" -yy814: - YYDEBUG(814, *YYCURSOR); +yy822: + YYDEBUG(822, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy821; + } + goto yy803; +yy823: + YYDEBUG(823, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy817; + if (yybm[0+yych] & 128) { + goto yy831; } -yy815: - YYDEBUG(815, *YYCURSOR); +yy824: + YYDEBUG(824, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy800; -yy816: - YYDEBUG(816, *YYCURSOR); + goto yy803; +yy825: + YYDEBUG(825, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy819; + if (yybm[0+yych] & 64) { + goto yy829; } - goto yy815; -yy817: - YYDEBUG(817, *YYCURSOR); + goto yy824; +yy826: + YYDEBUG(826, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(818, *YYCURSOR); + YYDEBUG(827, *YYCURSOR); + if (yych <= '/') goto yy828; + if (yych <= '9') goto yy826; +yy828: + YYDEBUG(828, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1765 "Zend/zend_language_scanner.l" + { /* Offset must be treated as a string */ + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN(T_NUM_STRING); +} +#line 7646 "Zend/zend_language_scanner.c" +yy829: + YYDEBUG(829, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(830, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy817; + goto yy829; } - goto yy813; -yy819: - YYDEBUG(819, *YYCURSOR); + goto yy828; +yy831: + YYDEBUG(831, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(820, *YYCURSOR); + YYDEBUG(832, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy819; + goto yy831; } - goto yy813; + goto yy828; } } -#line 2495 "Zend/zend_language_scanner.l" +#line 2453 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 5e256447f15c0..9426392894d13 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1112,10 +1112,38 @@ skip_escape_conversion: goto emit_token; \ } while (0) -#define RETURN_TOKEN_WITH_VAL(_token) do { \ - token = _token; \ - goto emit_token_with_val; \ - } while (0) +static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation) +{ + int new_len = len; + + for (int i = 0, j = 0, skip; ; ) { + for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { + if (copy[j] != ' ' && copy[j] != '\t') { + break; + } + } + + while (copy[j] != '\r' && copy[j] != '\n') { + copy[i++] = copy[j++]; + } + + if (copy[j] == '\r') { + copy[i++] = copy[j++]; + } + + if (copy[j] == '\n') { + copy[i++] = copy[j++]; + } + + if (j >= len) { + break; + } + } + + return new_len - newline; +} + +#define RETURN_TOKEN(token) return emit_token(token, start_line); #define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ token = _token; \ @@ -2349,7 +2377,8 @@ double_quotes_scan_done: {ANY_CHAR} { - int newline = 0; + int newline = 0, indentation, len, new_len; + char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -2367,6 +2396,12 @@ double_quotes_scan_done: } /* fall through */ case '\n': + indentation = 0; + while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + ++YYCURSOR; + ++indentation; + } + /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; @@ -2416,18 +2451,20 @@ double_quotes_scan_done: heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + len = yyleng - indentation; + copy = estrndup(yytext, len); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0) == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } else { - RETURN_TOKEN(T_ERROR); - } + new_len = strip_multiline_string_indentation(copy, len, newline, indentation); + + zend_scan_escape_string(zendlval, copy, new_len, 0); + efree(copy); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } {ANY_CHAR} { - int newline = 0; + int newline = 0, indentation, len, new_len; + char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -2445,6 +2482,12 @@ heredoc_scan_done: } /* fall through */ case '\n': + indentation = 0; + while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + ++YYCURSOR; + ++indentation; + } + /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; @@ -2476,8 +2519,13 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + len = yyleng - indentation; + copy = estrndup(yytext, len); + + new_len = strip_multiline_string_indentation(copy, len, newline, indentation); - zend_copy_value(zendlval, yytext, yyleng - newline); + zend_copy_value(zendlval, copy, new_len); + efree(copy); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index c89b1bba457d0..09bcf92f4fe82 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.16 */ +/* Generated by re2c 0.15.3 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From 0f151de3f578b57dfc64e05a125a3aa98b310797 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Fri, 15 Sep 2017 16:34:54 +0100 Subject: [PATCH 02/54] Fix \t bug in heredocs --- Zend/tests/flexible-heredoc-nowdoc.phpt | 13 +- Zend/zend_language_scanner.c | 338 ++++++++++++------------ Zend/zend_language_scanner.l | 22 +- 3 files changed, 190 insertions(+), 183 deletions(-) diff --git a/Zend/tests/flexible-heredoc-nowdoc.phpt b/Zend/tests/flexible-heredoc-nowdoc.phpt index 48a7690fd6205..924ff9e09cb68 100644 --- a/Zend/tests/flexible-heredoc-nowdoc.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc.phpt @@ -96,11 +96,12 @@ e echo $text, PHP_EOL; $text = << YYLIMIT) { RETURN_TOKEN(END); @@ -3049,7 +3050,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3013 "Zend/zend_language_scanner.c" +#line 3014 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3085,7 +3086,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3049 "Zend/zend_language_scanner.c" +#line 3050 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3209,7 +3210,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3173 "Zend/zend_language_scanner.c" +#line 3174 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3249,7 +3250,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3213 "Zend/zend_language_scanner.c" +#line 3214 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3279,7 +3280,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3243 "Zend/zend_language_scanner.c" +#line 3244 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3297,7 +3298,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3261 "Zend/zend_language_scanner.c" +#line 3262 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3310,7 +3311,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3274 "Zend/zend_language_scanner.c" +#line 3275 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3320,7 +3321,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3284 "Zend/zend_language_scanner.c" +#line 3285 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3330,7 +3331,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3294 "Zend/zend_language_scanner.c" +#line 3295 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3340,7 +3341,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 3304 "Zend/zend_language_scanner.c" +#line 3305 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3350,7 +3351,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3314 "Zend/zend_language_scanner.c" +#line 3315 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3360,7 +3361,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3324 "Zend/zend_language_scanner.c" +#line 3325 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3370,7 +3371,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3334 "Zend/zend_language_scanner.c" +#line 3335 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3418,7 +3419,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3376 "Zend/zend_language_scanner.c" +#line 3377 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3432,7 +3433,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3390 "Zend/zend_language_scanner.c" +#line 3391 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3460,7 +3461,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3418 "Zend/zend_language_scanner.c" +#line 3419 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; @@ -3470,7 +3471,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3428 "Zend/zend_language_scanner.c" +#line 3429 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; @@ -3480,7 +3481,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 3438 "Zend/zend_language_scanner.c" +#line 3439 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; @@ -3491,7 +3492,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3449 "Zend/zend_language_scanner.c" +#line 3450 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3501,7 +3502,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3459 "Zend/zend_language_scanner.c" +#line 3460 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; @@ -3511,7 +3512,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 3469 "Zend/zend_language_scanner.c" +#line 3470 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3526,7 +3527,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3484 "Zend/zend_language_scanner.c" +#line 3485 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3537,7 +3538,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3495 "Zend/zend_language_scanner.c" +#line 3496 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3548,7 +3549,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3506 "Zend/zend_language_scanner.c" +#line 3507 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3558,7 +3559,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 3516 "Zend/zend_language_scanner.c" +#line 3517 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3568,7 +3569,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 3526 "Zend/zend_language_scanner.c" +#line 3527 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3720,7 +3721,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3678 "Zend/zend_language_scanner.c" +#line 3679 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3764,7 +3765,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3722 "Zend/zend_language_scanner.c" +#line 3723 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3774,7 +3775,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3732 "Zend/zend_language_scanner.c" +#line 3733 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; @@ -3784,7 +3785,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3742 "Zend/zend_language_scanner.c" +#line 3743 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3807,7 +3808,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 3765 "Zend/zend_language_scanner.c" +#line 3766 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3818,7 +3819,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3776 "Zend/zend_language_scanner.c" +#line 3777 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3828,7 +3829,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3786 "Zend/zend_language_scanner.c" +#line 3787 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3838,7 +3839,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3796 "Zend/zend_language_scanner.c" +#line 3797 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -3971,7 +3972,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 3929 "Zend/zend_language_scanner.c" +#line 3930 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -3995,7 +3996,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 3953 "Zend/zend_language_scanner.c" +#line 3954 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4024,7 +4025,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 3982 "Zend/zend_language_scanner.c" +#line 3983 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4063,7 +4064,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 4021 "Zend/zend_language_scanner.c" +#line 4022 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4118,7 +4119,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 4076 "Zend/zend_language_scanner.c" +#line 4077 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4142,7 +4143,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 4100 "Zend/zend_language_scanner.c" +#line 4101 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4176,7 +4177,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 4134 "Zend/zend_language_scanner.c" +#line 4135 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4210,7 +4211,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 4168 "Zend/zend_language_scanner.c" +#line 4169 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4276,7 +4277,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4234 "Zend/zend_language_scanner.c" +#line 4235 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4300,7 +4301,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4258 "Zend/zend_language_scanner.c" +#line 4259 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4323,7 +4324,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 4281 "Zend/zend_language_scanner.c" +#line 4282 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4499,7 +4500,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 4457 "Zend/zend_language_scanner.c" +#line 4458 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4547,7 +4548,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4505 "Zend/zend_language_scanner.c" +#line 4506 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4621,7 +4622,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 4579 "Zend/zend_language_scanner.c" +#line 4580 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4658,7 +4659,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4616 "Zend/zend_language_scanner.c" +#line 4617 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4700,7 +4701,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4658 "Zend/zend_language_scanner.c" +#line 4659 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4745,7 +4746,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 4703 "Zend/zend_language_scanner.c" +#line 4704 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4809,7 +4810,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 4767 "Zend/zend_language_scanner.c" +#line 4768 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4827,7 +4828,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4785 "Zend/zend_language_scanner.c" +#line 4786 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4851,7 +4852,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4809 "Zend/zend_language_scanner.c" +#line 4810 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4894,7 +4895,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 4852 "Zend/zend_language_scanner.c" +#line 4853 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -4911,7 +4912,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4869 "Zend/zend_language_scanner.c" +#line 4870 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; @@ -4921,7 +4922,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 4879 "Zend/zend_language_scanner.c" +#line 4880 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -4956,7 +4957,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 4914 "Zend/zend_language_scanner.c" +#line 4915 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -4969,7 +4970,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 4927 "Zend/zend_language_scanner.c" +#line 4928 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -4979,7 +4980,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 4937 "Zend/zend_language_scanner.c" +#line 4938 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5005,7 +5006,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 4963 "Zend/zend_language_scanner.c" +#line 4964 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -5015,7 +5016,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 4973 "Zend/zend_language_scanner.c" +#line 4974 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; @@ -5026,7 +5027,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 4984 "Zend/zend_language_scanner.c" +#line 4985 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5075,7 +5076,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5033 "Zend/zend_language_scanner.c" +#line 5034 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5134,7 +5135,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 5092 "Zend/zend_language_scanner.c" +#line 5093 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5168,7 +5169,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5126 "Zend/zend_language_scanner.c" +#line 5127 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5181,7 +5182,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5139 "Zend/zend_language_scanner.c" +#line 5140 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5210,7 +5211,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5168 "Zend/zend_language_scanner.c" +#line 5169 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5238,7 +5239,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5196 "Zend/zend_language_scanner.c" +#line 5197 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5279,7 +5280,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5237 "Zend/zend_language_scanner.c" +#line 5238 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5323,7 +5324,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5281 "Zend/zend_language_scanner.c" +#line 5282 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5351,7 +5352,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5309 "Zend/zend_language_scanner.c" +#line 5310 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5382,7 +5383,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 5340 "Zend/zend_language_scanner.c" +#line 5341 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5405,7 +5406,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5363 "Zend/zend_language_scanner.c" +#line 5364 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5418,7 +5419,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5376 "Zend/zend_language_scanner.c" +#line 5377 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5456,7 +5457,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5414 "Zend/zend_language_scanner.c" +#line 5415 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5484,7 +5485,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5442 "Zend/zend_language_scanner.c" +#line 5443 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5497,7 +5498,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 5455 "Zend/zend_language_scanner.c" +#line 5456 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5553,7 +5554,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5511 "Zend/zend_language_scanner.c" +#line 5512 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5611,7 +5612,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5569 "Zend/zend_language_scanner.c" +#line 5570 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5644,7 +5645,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5602 "Zend/zend_language_scanner.c" +#line 5603 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5682,7 +5683,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 5640 "Zend/zend_language_scanner.c" +#line 5641 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5736,7 +5737,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 5694 "Zend/zend_language_scanner.c" +#line 5695 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5769,7 +5770,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 5727 "Zend/zend_language_scanner.c" +#line 5728 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5817,7 +5818,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5775 "Zend/zend_language_scanner.c" +#line 5776 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5849,7 +5850,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 5807 "Zend/zend_language_scanner.c" +#line 5808 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5872,7 +5873,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5830 "Zend/zend_language_scanner.c" +#line 5831 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5895,7 +5896,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5853 "Zend/zend_language_scanner.c" +#line 5854 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -5932,7 +5933,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5890 "Zend/zend_language_scanner.c" +#line 5891 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -5998,7 +5999,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 5956 "Zend/zend_language_scanner.c" +#line 5957 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6063,7 +6064,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6021 "Zend/zend_language_scanner.c" +#line 6022 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6096,7 +6097,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6054 "Zend/zend_language_scanner.c" +#line 6055 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6119,7 +6120,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6077 "Zend/zend_language_scanner.c" +#line 6078 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6213,7 +6214,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6171 "Zend/zend_language_scanner.c" +#line 6172 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6226,7 +6227,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 6184 "Zend/zend_language_scanner.c" +#line 6185 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6255,7 +6256,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 6213 "Zend/zend_language_scanner.c" +#line 6214 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6273,7 +6274,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 6231 "Zend/zend_language_scanner.c" +#line 6232 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6323,7 +6324,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6281 "Zend/zend_language_scanner.c" +#line 6282 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6336,7 +6337,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 6294 "Zend/zend_language_scanner.c" +#line 6295 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6354,7 +6355,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 6312 "Zend/zend_language_scanner.c" +#line 6313 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6409,7 +6410,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6367 "Zend/zend_language_scanner.c" +#line 6368 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6437,7 +6438,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 6395 "Zend/zend_language_scanner.c" +#line 6396 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6465,7 +6466,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6423 "Zend/zend_language_scanner.c" +#line 6424 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6503,7 +6504,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 6461 "Zend/zend_language_scanner.c" +#line 6462 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6521,7 +6522,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6479 "Zend/zend_language_scanner.c" +#line 6480 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6556,7 +6557,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 6514 "Zend/zend_language_scanner.c" +#line 6515 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6569,7 +6570,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6527 "Zend/zend_language_scanner.c" +#line 6528 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6608,7 +6609,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6566 "Zend/zend_language_scanner.c" +#line 6567 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6636,7 +6637,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6594 "Zend/zend_language_scanner.c" +#line 6595 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6720,7 +6721,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6678 "Zend/zend_language_scanner.c" +#line 6679 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6733,7 +6734,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6691 "Zend/zend_language_scanner.c" +#line 6692 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6751,7 +6752,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 6709 "Zend/zend_language_scanner.c" +#line 6710 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6824,7 +6825,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6782 "Zend/zend_language_scanner.c" +#line 6783 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6857,7 +6858,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6815 "Zend/zend_language_scanner.c" +#line 6816 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6870,7 +6871,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 6828 "Zend/zend_language_scanner.c" +#line 6829 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -6903,7 +6904,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6861 "Zend/zend_language_scanner.c" +#line 6862 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -6931,7 +6932,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6889 "Zend/zend_language_scanner.c" +#line 6890 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -6969,7 +6970,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6927 "Zend/zend_language_scanner.c" +#line 6928 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -6992,7 +6993,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 6950 "Zend/zend_language_scanner.c" +#line 6951 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7025,7 +7026,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 6983 "Zend/zend_language_scanner.c" +#line 6984 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7043,7 +7044,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 7001 "Zend/zend_language_scanner.c" +#line 7002 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7061,7 +7062,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 7019 "Zend/zend_language_scanner.c" +#line 7020 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7138,7 +7139,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7097 "Zend/zend_language_scanner.c" +#line 7098 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7152,7 +7153,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7111 "Zend/zend_language_scanner.c" +#line 7112 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7166,7 +7167,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7126 "Zend/zend_language_scanner.c" +#line 7127 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7191,7 +7192,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7151 "Zend/zend_language_scanner.c" +#line 7152 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7283,7 +7284,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7243 "Zend/zend_language_scanner.c" +#line 7244 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7317,7 +7318,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7278 "Zend/zend_language_scanner.c" +#line 7279 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7328,10 +7329,9 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2375 "Zend/zend_language_scanner.l" +#line 2376 "Zend/zend_language_scanner.l" { int newline = 0, indentation, len, new_len; - char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7387,16 +7387,18 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); len = yyleng - indentation; - copy = estrndup(yytext, len); + + zend_copy_value(zendlval, yytext, len); + + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); - new_len = strip_multiline_string_indentation(copy, len, newline, indentation); + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; - zend_copy_value(zendlval, copy, new_len); - efree(copy); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7357 "Zend/zend_language_scanner.c" +#line 7359 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7516,7 +7518,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7477 "Zend/zend_language_scanner.c" +#line 7479 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7541,7 +7543,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7502 "Zend/zend_language_scanner.c" +#line 7504 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7552,7 +7554,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7513 "Zend/zend_language_scanner.c" +#line 7515 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7570,7 +7572,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7531 "Zend/zend_language_scanner.c" +#line 7533 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7583,13 +7585,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7545 "Zend/zend_language_scanner.c" +#line 7547 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2444 "Zend/zend_language_scanner.l" +#line 2446 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7598,7 +7600,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7560 "Zend/zend_language_scanner.c" +#line 7562 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7638,7 +7640,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7601 "Zend/zend_language_scanner.c" +#line 7603 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7683,7 +7685,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7646 "Zend/zend_language_scanner.c" +#line 7648 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7706,7 +7708,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2453 "Zend/zend_language_scanner.l" +#line 2455 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 9426392894d13..cfc44da620546 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2378,7 +2378,6 @@ double_quotes_scan_done: {ANY_CHAR} { int newline = 0, indentation, len, new_len; - char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -2452,19 +2451,20 @@ double_quotes_scan_done: heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); len = yyleng - indentation; - copy = estrndup(yytext, len); - new_len = strip_multiline_string_indentation(copy, len, newline, indentation); + zend_scan_escape_string(zendlval, yytext, len, 0); + + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); + + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; - zend_scan_escape_string(zendlval, copy, new_len, 0); - efree(copy); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } {ANY_CHAR} { int newline = 0, indentation, len, new_len; - char *copy; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -2520,12 +2520,14 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); len = yyleng - indentation; - copy = estrndup(yytext, len); - new_len = strip_multiline_string_indentation(copy, len, newline, indentation); + zend_copy_value(zendlval, yytext, len); + + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); + + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; - zend_copy_value(zendlval, copy, new_len); - efree(copy); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } From fe13a33ef6b828a9a153fe5677909bf03ee5324f Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sat, 16 Sep 2017 17:30:45 +0100 Subject: [PATCH 03/54] Remove new line requirement after terminating marker --- Zend/tests/flexible-heredoc-nowdoc.phpt | 14 + Zend/zend_language_scanner.c | 371 ++++++++++++------------ Zend/zend_language_scanner.l | 53 ++-- 3 files changed, 231 insertions(+), 207 deletions(-) diff --git a/Zend/tests/flexible-heredoc-nowdoc.phpt b/Zend/tests/flexible-heredoc-nowdoc.phpt index 924ff9e09cb68..3600c4130b7d4 100644 --- a/Zend/tests/flexible-heredoc-nowdoc.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc.phpt @@ -105,6 +105,14 @@ e\n END; echo $text, PHP_EOL; + +echo << --EXPECT-- a @@ -170,3 +178,9 @@ a d e + + a + b + c + d +e \ No newline at end of file diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 0337781b0a550..9ae1969324cfd 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1920,24 +1920,27 @@ int start_line = CG(zend_lineno); if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; + if (IS_LABEL_START(*end)) { + continue; + } + if (*end == ';') { end++; } - if (*end == '\n' || *end == '\r') { - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } - CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); + CG(increment_lineno) = 1; /* For newline before label */ - goto heredoc_scan_done; - } + BEGIN(ST_END_HEREDOC); + + goto heredoc_scan_done; } continue; case '$': @@ -1976,7 +1979,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1937 "Zend/zend_language_scanner.c" +#line 1940 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -1998,7 +2001,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1959 "Zend/zend_language_scanner.c" +#line 1962 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2018,7 +2021,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1980 "Zend/zend_language_scanner.c" +#line 1983 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2029,7 +2032,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1991 "Zend/zend_language_scanner.c" +#line 1994 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2049,7 +2052,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2012 "Zend/zend_language_scanner.c" +#line 2015 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2073,7 +2076,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2037 "Zend/zend_language_scanner.c" +#line 2040 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2260,7 +2263,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2224 "Zend/zend_language_scanner.c" +#line 2227 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2496,7 +2499,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2460 "Zend/zend_language_scanner.c" +#line 2463 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2510,7 +2513,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2474 "Zend/zend_language_scanner.c" +#line 2477 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2525,7 +2528,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2489 "Zend/zend_language_scanner.c" +#line 2492 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2759,7 +2762,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2723 "Zend/zend_language_scanner.c" +#line 2726 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; @@ -2773,7 +2776,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2737 "Zend/zend_language_scanner.c" +#line 2740 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2844,7 +2847,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2808 "Zend/zend_language_scanner.c" +#line 2811 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2901,7 +2904,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2865 "Zend/zend_language_scanner.c" +#line 2868 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; @@ -2976,7 +2979,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2940 "Zend/zend_language_scanner.c" +#line 2943 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; @@ -3024,7 +3027,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2988 "Zend/zend_language_scanner.c" +#line 2991 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; @@ -3035,13 +3038,13 @@ int start_line = CG(zend_lineno); BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 2999 "Zend/zend_language_scanner.c" +#line 3002 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2446 "Zend/zend_language_scanner.l" +#line 2451 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3050,7 +3053,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3014 "Zend/zend_language_scanner.c" +#line 3017 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3086,7 +3089,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3050 "Zend/zend_language_scanner.c" +#line 3053 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3210,7 +3213,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3174 "Zend/zend_language_scanner.c" +#line 3177 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3250,7 +3253,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3214 "Zend/zend_language_scanner.c" +#line 3217 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3280,7 +3283,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3244 "Zend/zend_language_scanner.c" +#line 3247 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3298,7 +3301,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3262 "Zend/zend_language_scanner.c" +#line 3265 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3311,7 +3314,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3275 "Zend/zend_language_scanner.c" +#line 3278 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3321,7 +3324,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3285 "Zend/zend_language_scanner.c" +#line 3288 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3331,7 +3334,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3295 "Zend/zend_language_scanner.c" +#line 3298 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3341,7 +3344,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 3305 "Zend/zend_language_scanner.c" +#line 3308 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3351,7 +3354,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3315 "Zend/zend_language_scanner.c" +#line 3318 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3361,7 +3364,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3325 "Zend/zend_language_scanner.c" +#line 3328 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3371,7 +3374,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3335 "Zend/zend_language_scanner.c" +#line 3338 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3419,7 +3422,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3377 "Zend/zend_language_scanner.c" +#line 3380 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3433,7 +3436,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3391 "Zend/zend_language_scanner.c" +#line 3394 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3461,7 +3464,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3419 "Zend/zend_language_scanner.c" +#line 3422 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; @@ -3471,7 +3474,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3429 "Zend/zend_language_scanner.c" +#line 3432 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; @@ -3481,7 +3484,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 3439 "Zend/zend_language_scanner.c" +#line 3442 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; @@ -3492,7 +3495,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3450 "Zend/zend_language_scanner.c" +#line 3453 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3502,7 +3505,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3460 "Zend/zend_language_scanner.c" +#line 3463 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; @@ -3512,7 +3515,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 3470 "Zend/zend_language_scanner.c" +#line 3473 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3527,7 +3530,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3485 "Zend/zend_language_scanner.c" +#line 3488 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3538,7 +3541,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3496 "Zend/zend_language_scanner.c" +#line 3499 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3549,7 +3552,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3507 "Zend/zend_language_scanner.c" +#line 3510 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3559,7 +3562,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 3517 "Zend/zend_language_scanner.c" +#line 3520 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3569,7 +3572,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 3527 "Zend/zend_language_scanner.c" +#line 3530 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3721,7 +3724,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3679 "Zend/zend_language_scanner.c" +#line 3682 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3765,7 +3768,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3723 "Zend/zend_language_scanner.c" +#line 3726 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3775,7 +3778,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3733 "Zend/zend_language_scanner.c" +#line 3736 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; @@ -3785,7 +3788,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3743 "Zend/zend_language_scanner.c" +#line 3746 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3808,7 +3811,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 3766 "Zend/zend_language_scanner.c" +#line 3769 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3819,7 +3822,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3777 "Zend/zend_language_scanner.c" +#line 3780 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3829,7 +3832,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3787 "Zend/zend_language_scanner.c" +#line 3790 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3839,7 +3842,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3797 "Zend/zend_language_scanner.c" +#line 3800 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -3972,7 +3975,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 3930 "Zend/zend_language_scanner.c" +#line 3933 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -3996,7 +3999,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 3954 "Zend/zend_language_scanner.c" +#line 3957 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4025,7 +4028,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 3983 "Zend/zend_language_scanner.c" +#line 3986 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4064,7 +4067,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 4022 "Zend/zend_language_scanner.c" +#line 4025 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4119,7 +4122,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 4077 "Zend/zend_language_scanner.c" +#line 4080 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4143,7 +4146,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 4101 "Zend/zend_language_scanner.c" +#line 4104 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4177,7 +4180,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 4135 "Zend/zend_language_scanner.c" +#line 4138 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4211,7 +4214,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 4169 "Zend/zend_language_scanner.c" +#line 4172 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4277,7 +4280,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4235 "Zend/zend_language_scanner.c" +#line 4238 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4301,7 +4304,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4259 "Zend/zend_language_scanner.c" +#line 4262 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4324,7 +4327,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 4282 "Zend/zend_language_scanner.c" +#line 4285 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4500,7 +4503,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 4458 "Zend/zend_language_scanner.c" +#line 4461 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4548,7 +4551,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4506 "Zend/zend_language_scanner.c" +#line 4509 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4622,7 +4625,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 4580 "Zend/zend_language_scanner.c" +#line 4583 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4659,7 +4662,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4617 "Zend/zend_language_scanner.c" +#line 4620 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4701,7 +4704,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4659 "Zend/zend_language_scanner.c" +#line 4662 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4746,7 +4749,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 4704 "Zend/zend_language_scanner.c" +#line 4707 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4810,7 +4813,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 4768 "Zend/zend_language_scanner.c" +#line 4771 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4828,7 +4831,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4786 "Zend/zend_language_scanner.c" +#line 4789 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4852,7 +4855,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4810 "Zend/zend_language_scanner.c" +#line 4813 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4895,7 +4898,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 4853 "Zend/zend_language_scanner.c" +#line 4856 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -4912,7 +4915,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4870 "Zend/zend_language_scanner.c" +#line 4873 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; @@ -4922,7 +4925,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 4880 "Zend/zend_language_scanner.c" +#line 4883 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -4957,7 +4960,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 4915 "Zend/zend_language_scanner.c" +#line 4918 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -4970,7 +4973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 4928 "Zend/zend_language_scanner.c" +#line 4931 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -4980,7 +4983,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 4938 "Zend/zend_language_scanner.c" +#line 4941 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5006,7 +5009,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 4964 "Zend/zend_language_scanner.c" +#line 4967 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -5016,7 +5019,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 4974 "Zend/zend_language_scanner.c" +#line 4977 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; @@ -5027,7 +5030,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 4985 "Zend/zend_language_scanner.c" +#line 4988 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5076,7 +5079,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5034 "Zend/zend_language_scanner.c" +#line 5037 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5135,7 +5138,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 5093 "Zend/zend_language_scanner.c" +#line 5096 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5169,7 +5172,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5127 "Zend/zend_language_scanner.c" +#line 5130 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5182,7 +5185,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5140 "Zend/zend_language_scanner.c" +#line 5143 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5211,7 +5214,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5169 "Zend/zend_language_scanner.c" +#line 5172 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5239,7 +5242,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5197 "Zend/zend_language_scanner.c" +#line 5200 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5280,7 +5283,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5238 "Zend/zend_language_scanner.c" +#line 5241 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5324,7 +5327,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5282 "Zend/zend_language_scanner.c" +#line 5285 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5352,7 +5355,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5310 "Zend/zend_language_scanner.c" +#line 5313 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5383,7 +5386,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 5341 "Zend/zend_language_scanner.c" +#line 5344 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5406,7 +5409,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5364 "Zend/zend_language_scanner.c" +#line 5367 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5419,7 +5422,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5377 "Zend/zend_language_scanner.c" +#line 5380 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5457,7 +5460,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5415 "Zend/zend_language_scanner.c" +#line 5418 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5485,7 +5488,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5443 "Zend/zend_language_scanner.c" +#line 5446 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5498,7 +5501,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 5456 "Zend/zend_language_scanner.c" +#line 5459 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5554,7 +5557,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5512 "Zend/zend_language_scanner.c" +#line 5515 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5612,7 +5615,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5570 "Zend/zend_language_scanner.c" +#line 5573 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5645,7 +5648,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5603 "Zend/zend_language_scanner.c" +#line 5606 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5683,7 +5686,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 5641 "Zend/zend_language_scanner.c" +#line 5644 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5737,7 +5740,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 5695 "Zend/zend_language_scanner.c" +#line 5698 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5770,7 +5773,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 5728 "Zend/zend_language_scanner.c" +#line 5731 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5818,7 +5821,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5776 "Zend/zend_language_scanner.c" +#line 5779 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5850,7 +5853,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 5808 "Zend/zend_language_scanner.c" +#line 5811 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5873,7 +5876,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5831 "Zend/zend_language_scanner.c" +#line 5834 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5896,7 +5899,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5854 "Zend/zend_language_scanner.c" +#line 5857 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -5933,7 +5936,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5891 "Zend/zend_language_scanner.c" +#line 5894 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -5999,7 +6002,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 5957 "Zend/zend_language_scanner.c" +#line 5960 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6064,7 +6067,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6022 "Zend/zend_language_scanner.c" +#line 6025 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6097,7 +6100,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6055 "Zend/zend_language_scanner.c" +#line 6058 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6120,7 +6123,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6078 "Zend/zend_language_scanner.c" +#line 6081 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6214,7 +6217,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6172 "Zend/zend_language_scanner.c" +#line 6175 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6227,7 +6230,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 6185 "Zend/zend_language_scanner.c" +#line 6188 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6256,7 +6259,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 6214 "Zend/zend_language_scanner.c" +#line 6217 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6274,7 +6277,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 6232 "Zend/zend_language_scanner.c" +#line 6235 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6324,7 +6327,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6282 "Zend/zend_language_scanner.c" +#line 6285 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6337,7 +6340,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 6295 "Zend/zend_language_scanner.c" +#line 6298 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6355,7 +6358,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 6313 "Zend/zend_language_scanner.c" +#line 6316 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6410,7 +6413,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6368 "Zend/zend_language_scanner.c" +#line 6371 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6438,7 +6441,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 6396 "Zend/zend_language_scanner.c" +#line 6399 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6466,7 +6469,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6424 "Zend/zend_language_scanner.c" +#line 6427 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6504,7 +6507,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 6462 "Zend/zend_language_scanner.c" +#line 6465 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6522,7 +6525,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6480 "Zend/zend_language_scanner.c" +#line 6483 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6557,7 +6560,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 6515 "Zend/zend_language_scanner.c" +#line 6518 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6570,7 +6573,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6528 "Zend/zend_language_scanner.c" +#line 6531 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6609,7 +6612,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6567 "Zend/zend_language_scanner.c" +#line 6570 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6637,7 +6640,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6595 "Zend/zend_language_scanner.c" +#line 6598 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6721,7 +6724,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6679 "Zend/zend_language_scanner.c" +#line 6682 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6734,7 +6737,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6692 "Zend/zend_language_scanner.c" +#line 6695 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6752,7 +6755,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 6710 "Zend/zend_language_scanner.c" +#line 6713 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6825,7 +6828,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6783 "Zend/zend_language_scanner.c" +#line 6786 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6858,7 +6861,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6816 "Zend/zend_language_scanner.c" +#line 6819 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6871,7 +6874,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 6829 "Zend/zend_language_scanner.c" +#line 6832 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -6904,7 +6907,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6862 "Zend/zend_language_scanner.c" +#line 6865 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -6932,7 +6935,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6890 "Zend/zend_language_scanner.c" +#line 6893 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -6970,7 +6973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6928 "Zend/zend_language_scanner.c" +#line 6931 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -6993,7 +6996,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 6951 "Zend/zend_language_scanner.c" +#line 6954 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7026,7 +7029,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 6984 "Zend/zend_language_scanner.c" +#line 6987 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7044,7 +7047,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 7002 "Zend/zend_language_scanner.c" +#line 7005 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7062,7 +7065,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 7020 "Zend/zend_language_scanner.c" +#line 7023 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7139,7 +7142,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7098 "Zend/zend_language_scanner.c" +#line 7101 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7153,7 +7156,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7112 "Zend/zend_language_scanner.c" +#line 7115 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7167,7 +7170,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7127 "Zend/zend_language_scanner.c" +#line 7130 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7192,7 +7195,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7152 "Zend/zend_language_scanner.c" +#line 7155 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7284,7 +7287,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7244 "Zend/zend_language_scanner.c" +#line 7247 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7318,7 +7321,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7279 "Zend/zend_language_scanner.c" +#line 7282 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7329,7 +7332,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2376 "Zend/zend_language_scanner.l" +#line 2379 "Zend/zend_language_scanner.l" { int newline = 0, indentation, len, new_len; @@ -7359,24 +7362,26 @@ int start_line = CG(zend_lineno); if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; + if (IS_LABEL_START(*end)) { + continue; + } + if (*end == ';') { end++; } - if (*end == '\n' || *end == '\r') { - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } - CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); + CG(increment_lineno) = 1; /* For newline before label */ + BEGIN(ST_END_HEREDOC); - goto nowdoc_scan_done; - } + goto nowdoc_scan_done; } /* fall through */ default: @@ -7387,7 +7392,7 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); len = yyleng - indentation; - + zend_copy_value(zendlval, yytext, len); new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); @@ -7398,7 +7403,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7359 "Zend/zend_language_scanner.c" +#line 7364 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7518,7 +7523,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7479 "Zend/zend_language_scanner.c" +#line 7484 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7543,7 +7548,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7504 "Zend/zend_language_scanner.c" +#line 7509 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7554,7 +7559,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7515 "Zend/zend_language_scanner.c" +#line 7520 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7572,7 +7577,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7533 "Zend/zend_language_scanner.c" +#line 7538 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7585,13 +7590,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7547 "Zend/zend_language_scanner.c" +#line 7552 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2446 "Zend/zend_language_scanner.l" +#line 2451 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7600,7 +7605,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7562 "Zend/zend_language_scanner.c" +#line 7567 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7640,7 +7645,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7603 "Zend/zend_language_scanner.c" +#line 7608 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7685,7 +7690,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7648 "Zend/zend_language_scanner.c" +#line 7653 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7708,7 +7713,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2455 "Zend/zend_language_scanner.l" +#line 2460 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index cfc44da620546..91c5624816a9f 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2405,24 +2405,27 @@ double_quotes_scan_done: if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; + if (IS_LABEL_START(*end)) { + continue; + } + if (*end == ';') { end++; } - if (*end == '\n' || *end == '\r') { - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } - CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); + CG(increment_lineno) = 1; /* For newline before label */ - goto heredoc_scan_done; - } + BEGIN(ST_END_HEREDOC); + + goto heredoc_scan_done; } continue; case '$': @@ -2492,24 +2495,26 @@ heredoc_scan_done: if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; + if (IS_LABEL_START(*end)) { + continue; + } + if (*end == ';') { end++; } - if (*end == '\n' || *end == '\r') { - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } - CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); + CG(increment_lineno) = 1; /* For newline before label */ + BEGIN(ST_END_HEREDOC); - goto nowdoc_scan_done; - } + goto nowdoc_scan_done; } /* fall through */ default: From 1041f612f3a8864bf5dc53758ec07ed96bad47ec Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Thu, 21 Sep 2017 12:49:37 +0100 Subject: [PATCH 04/54] Add whitespace constraints --- Zend/tests/flexible-heredoc-error1.phpt | 16 + Zend/tests/flexible-heredoc-error2.phpt | 16 + Zend/tests/flexible-heredoc-error3.phpt | 16 + Zend/tests/flexible-heredoc-error4.phpt | 16 + Zend/tests/flexible-heredoc-nowdoc.phpt | 151 +---- Zend/tests/flexible-nowdoc-error1.phpt | 16 + Zend/tests/flexible-nowdoc-error2.phpt | 16 + Zend/tests/flexible-nowdoc-error3.phpt | 16 + Zend/tests/flexible-nowdoc-error4.phpt | 16 + Zend/zend_language_scanner.c | 776 ++++++++++++------------ Zend/zend_language_scanner.l | 80 ++- 11 files changed, 614 insertions(+), 521 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-error1.phpt create mode 100644 Zend/tests/flexible-heredoc-error2.phpt create mode 100644 Zend/tests/flexible-heredoc-error3.phpt create mode 100644 Zend/tests/flexible-heredoc-error4.phpt create mode 100644 Zend/tests/flexible-nowdoc-error1.phpt create mode 100644 Zend/tests/flexible-nowdoc-error2.phpt create mode 100644 Zend/tests/flexible-nowdoc-error3.phpt create mode 100644 Zend/tests/flexible-nowdoc-error4.phpt diff --git a/Zend/tests/flexible-heredoc-error1.phpt b/Zend/tests/flexible-heredoc-error1.phpt new file mode 100644 index 0000000000000..21734b4e8232a --- /dev/null +++ b/Zend/tests/flexible-heredoc-error1.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible heredoc syntax 1: different indentation for body (spaces) ending marker (tabs) +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error2.phpt b/Zend/tests/flexible-heredoc-error2.phpt new file mode 100644 index 0000000000000..1c0ed66d59c2d --- /dev/null +++ b/Zend/tests/flexible-heredoc-error2.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible heredoc syntax 2: mixing spaces and tabs in body +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error3.phpt b/Zend/tests/flexible-heredoc-error3.phpt new file mode 100644 index 0000000000000..56d0ee1e07469 --- /dev/null +++ b/Zend/tests/flexible-heredoc-error3.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible heredoc syntax error 3: mixing spaces and tabs in ending marker +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error4.phpt b/Zend/tests/flexible-heredoc-error4.phpt new file mode 100644 index 0000000000000..e013b829bd8a8 --- /dev/null +++ b/Zend/tests/flexible-heredoc-error4.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible heredoc syntax error 4: not enough body indentation +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid body indentation level (expecting an indentation at least 5) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-nowdoc.phpt b/Zend/tests/flexible-heredoc-nowdoc.phpt index 3600c4130b7d4..b6d16a71c3ff3 100644 --- a/Zend/tests/flexible-heredoc-nowdoc.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc.phpt @@ -3,83 +3,23 @@ Flexible heredoc/nowdoc syntax --FILE-- getMessage()); +} +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error2.phpt b/Zend/tests/flexible-nowdoc-error2.phpt new file mode 100644 index 0000000000000..864c3ac752497 --- /dev/null +++ b/Zend/tests/flexible-nowdoc-error2.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible nowdoc syntax 2: mixing spaces and tabs in body +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error3.phpt b/Zend/tests/flexible-nowdoc-error3.phpt new file mode 100644 index 0000000000000..f7e8199d922c6 --- /dev/null +++ b/Zend/tests/flexible-nowdoc-error3.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible nowdoc syntax error 3: mixing spaces and tabs in ending marker +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error4.phpt b/Zend/tests/flexible-nowdoc-error4.phpt new file mode 100644 index 0000000000000..84291334250af --- /dev/null +++ b/Zend/tests/flexible-nowdoc-error4.phpt @@ -0,0 +1,16 @@ +--TEST-- +Flexible nowdoc syntax error 4: not enough body indentation +--FILE-- +getMessage()); +} +--EXPECTF-- +Parse error: Invalid body indentation level (expecting an indentation at least 5) in %s on line %d \ No newline at end of file diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 9ae1969324cfd..43da5c31ddac8 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1114,14 +1114,20 @@ static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quot goto emit_token; \ } while (0) -static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation) +static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation, int using_spaces) { int new_len = len; - for (int i = 0, j = 0, skip; ; ) { + for (int i = 0, j = 0, skip; j < len; ) { for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { if (copy[j] != ' ' && copy[j] != '\t') { - break; + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation at least %d)", indentation); + return -1; + } + + if ((!using_spaces && copy[j] == ' ') || (using_spaces && copy[j] == '\t')) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + return -1; } } @@ -1136,10 +1142,6 @@ static int strip_multiline_string_indentation(char *copy, int len, int newline, if (copy[j] == '\n') { copy[i++] = copy[j++]; } - - if (j >= len) { - break; - } } return new_len - newline; @@ -1169,7 +1171,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1143 "Zend/zend_language_scanner.c" +#line 1145 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1222,7 +1224,7 @@ int start_line = CG(zend_lineno); yy4: YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1834 "Zend/zend_language_scanner.l" +#line 1836 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1269,7 +1271,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1241 "Zend/zend_language_scanner.c" +#line 1243 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; @@ -1286,7 +1288,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1825 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1298,13 +1300,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1267 "Zend/zend_language_scanner.c" +#line 1269 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1814 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1312,7 +1314,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1278 "Zend/zend_language_scanner.c" +#line 1280 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1343,7 +1345,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1818 "Zend/zend_language_scanner.l" +#line 1820 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1352,7 +1354,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1315 "Zend/zend_language_scanner.c" +#line 1317 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1422,7 +1424,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2247 "Zend/zend_language_scanner.l" +#line 2249 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1467,7 +1469,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1426 "Zend/zend_language_scanner.c" +#line 1428 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1478,12 +1480,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2191 "Zend/zend_language_scanner.l" +#line 2193 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1442 "Zend/zend_language_scanner.c" +#line 1444 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; @@ -1493,14 +1495,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2178 "Zend/zend_language_scanner.l" +#line 2180 "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 1459 "Zend/zend_language_scanner.c" +#line 1461 "Zend/zend_language_scanner.c" yy27: YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1516,22 +1518,22 @@ int start_line = CG(zend_lineno); yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1480 "Zend/zend_language_scanner.c" +#line 1482 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1491 "Zend/zend_language_scanner.c" +#line 1493 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1545,13 +1547,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1892 "Zend/zend_language_scanner.l" +#line 1894 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1512 "Zend/zend_language_scanner.c" +#line 1514 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1569,13 +1571,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1883 "Zend/zend_language_scanner.l" +#line 1885 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1537 "Zend/zend_language_scanner.c" +#line 1539 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1643,7 +1645,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2197 "Zend/zend_language_scanner.l" +#line 2199 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1696,7 +1698,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1654 "Zend/zend_language_scanner.c" +#line 1656 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1707,12 +1709,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2186 "Zend/zend_language_scanner.l" +#line 2188 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1670 "Zend/zend_language_scanner.c" +#line 1672 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1722,14 +1724,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2178 "Zend/zend_language_scanner.l" +#line 2180 "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 1687 "Zend/zend_language_scanner.c" +#line 1689 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1745,22 +1747,22 @@ int start_line = CG(zend_lineno); yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1708 "Zend/zend_language_scanner.c" +#line 1710 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1719 "Zend/zend_language_scanner.c" +#line 1721 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1774,13 +1776,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1892 "Zend/zend_language_scanner.l" +#line 1894 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1740 "Zend/zend_language_scanner.c" +#line 1742 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1798,13 +1800,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1883 "Zend/zend_language_scanner.l" +#line 1885 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1765 "Zend/zend_language_scanner.c" +#line 1767 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1815,7 +1817,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2164 "Zend/zend_language_scanner.l" +#line 2166 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1828,7 +1830,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1789 "Zend/zend_language_scanner.c" +#line 1791 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1890,9 +1892,9 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2289 "Zend/zend_language_scanner.l" +#line 2291 "Zend/zend_language_scanner.l" { - int newline = 0, indentation, len, new_len; + int newline = 0, indentation, len, new_len, using_spaces, using_tabs; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -1910,8 +1912,10 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': - indentation = 0; + indentation = using_spaces = using_tabs = 0; while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + using_spaces |= *YYCURSOR == ' '; + using_tabs |= *YYCURSOR == '\t'; ++YYCURSOR; ++indentation; } @@ -1920,9 +1924,16 @@ int start_line = CG(zend_lineno); if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; - if (IS_LABEL_START(*end)) { - continue; - } + if (IS_LABEL_START(*end)) { + continue; + } + + if (using_spaces && using_tabs) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } if (*end == ';') { end++; @@ -1938,9 +1949,9 @@ int start_line = CG(zend_lineno); CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); + BEGIN(ST_END_HEREDOC); - goto heredoc_scan_done; + goto heredoc_scan_done; } continue; case '$': @@ -1972,14 +1983,19 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, len, 0); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; + if (new_len < 0) { + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + } else { + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; + } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1940 "Zend/zend_language_scanner.c" +#line 1956 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -1994,14 +2010,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2178 "Zend/zend_language_scanner.l" +#line 2180 "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 1978 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2017,22 +2033,22 @@ int start_line = CG(zend_lineno); yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1983 "Zend/zend_language_scanner.c" +#line 1999 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1994 "Zend/zend_language_scanner.c" +#line 2010 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2046,13 +2062,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1892 "Zend/zend_language_scanner.l" +#line 1894 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2015 "Zend/zend_language_scanner.c" +#line 2031 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2070,13 +2086,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1883 "Zend/zend_language_scanner.l" +#line 1885 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2040 "Zend/zend_language_scanner.c" +#line 2056 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2258,12 +2274,12 @@ int start_line = CG(zend_lineno); yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1924 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2227 "Zend/zend_language_scanner.c" +#line 2243 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2495,11 +2511,11 @@ int start_line = CG(zend_lineno); yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" +#line 1610 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2463 "Zend/zend_language_scanner.c" +#line 2479 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2508,12 +2524,12 @@ int start_line = CG(zend_lineno); yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1323 "Zend/zend_language_scanner.l" +#line 1325 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2477 "Zend/zend_language_scanner.c" +#line 2493 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2524,11 +2540,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" +#line 1350 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2492 "Zend/zend_language_scanner.c" +#line 2508 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2757,18 +2773,18 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1613 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2726 "Zend/zend_language_scanner.c" +#line 2742 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" +#line 1627 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2776,7 +2792,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2740 "Zend/zend_language_scanner.c" +#line 2756 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2804,7 +2820,7 @@ int start_line = CG(zend_lineno); yy137: YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1678 "Zend/zend_language_scanner.l" +#line 1680 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2847,7 +2863,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2811 "Zend/zend_language_scanner.c" +#line 2827 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2875,7 +2891,7 @@ int start_line = CG(zend_lineno); yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1928 "Zend/zend_language_scanner.l" +#line 1930 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2904,14 +2920,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2868 "Zend/zend_language_scanner.c" +#line 2884 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1999 "Zend/zend_language_scanner.l" +#line 2001 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2979,14 +2995,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2943 "Zend/zend_language_scanner.c" +#line 2959 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2068 "Zend/zend_language_scanner.l" +#line 2070 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3027,24 +3043,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2991 "Zend/zend_language_scanner.c" +#line 3007 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2158 "Zend/zend_language_scanner.l" +#line 2160 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3002 "Zend/zend_language_scanner.c" +#line 3018 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2451 "Zend/zend_language_scanner.l" +#line 2481 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3053,7 +3069,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3017 "Zend/zend_language_scanner.c" +#line 3033 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3080,7 +3096,7 @@ int start_line = CG(zend_lineno); yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1770 "Zend/zend_language_scanner.l" +#line 1772 "Zend/zend_language_scanner.l" { const char *end; @@ -3089,7 +3105,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3053 "Zend/zend_language_scanner.c" +#line 3069 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3185,7 +3201,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1650 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3213,7 +3229,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3177 "Zend/zend_language_scanner.c" +#line 3193 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3225,7 +3241,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1721 "Zend/zend_language_scanner.l" +#line 1723 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3253,7 +3269,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3217 "Zend/zend_language_scanner.c" +#line 3233 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3278,12 +3294,12 @@ int start_line = CG(zend_lineno); yy172: YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3247 "Zend/zend_language_scanner.c" +#line 3263 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3297,11 +3313,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" +#line 1598 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3265 "Zend/zend_language_scanner.c" +#line 3281 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3310,71 +3326,71 @@ int start_line = CG(zend_lineno); } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1590 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3278 "Zend/zend_language_scanner.c" +#line 3294 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 1578 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3288 "Zend/zend_language_scanner.c" +#line 3304 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1582 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3298 "Zend/zend_language_scanner.c" +#line 3314 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1574 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3308 "Zend/zend_language_scanner.c" +#line 3324 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1584 "Zend/zend_language_scanner.l" +#line 1586 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3318 "Zend/zend_language_scanner.c" +#line 3334 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" +#line 1570 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3328 "Zend/zend_language_scanner.c" +#line 3344 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1556 "Zend/zend_language_scanner.l" +#line 1558 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3338 "Zend/zend_language_scanner.c" +#line 3354 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3383,7 +3399,7 @@ int start_line = CG(zend_lineno); yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1957 "Zend/zend_language_scanner.l" +#line 1959 "Zend/zend_language_scanner.l" { int doc_com; @@ -3422,7 +3438,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3380 "Zend/zend_language_scanner.c" +#line 3396 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3432,11 +3448,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1550 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3394 "Zend/zend_language_scanner.c" +#line 3410 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3460,62 +3476,62 @@ int start_line = CG(zend_lineno); if ((yych = *YYCURSOR) == '=') goto yy202; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1540 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3422 "Zend/zend_language_scanner.c" +#line 3438 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1536 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3432 "Zend/zend_language_scanner.c" +#line 3448 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3442 "Zend/zend_language_scanner.c" +#line 3458 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" +#line 1606 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3453 "Zend/zend_language_scanner.c" +#line 3469 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" +#line 1526 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3463 "Zend/zend_language_scanner.c" +#line 3479 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1566 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3473 "Zend/zend_language_scanner.c" +#line 3489 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3526,53 +3542,53 @@ int start_line = CG(zend_lineno); yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" +#line 1602 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3488 "Zend/zend_language_scanner.c" +#line 3504 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3499 "Zend/zend_language_scanner.c" +#line 3515 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3510 "Zend/zend_language_scanner.c" +#line 3526 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3520 "Zend/zend_language_scanner.c" +#line 3536 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" +#line 1562 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3530 "Zend/zend_language_scanner.c" +#line 3546 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3677,7 +3693,7 @@ int start_line = CG(zend_lineno); yy230: YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2110 "Zend/zend_language_scanner.l" +#line 2112 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3724,7 +3740,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3682 "Zend/zend_language_scanner.c" +#line 3698 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3764,31 +3780,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3726 "Zend/zend_language_scanner.c" +#line 3742 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1530 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3736 "Zend/zend_language_scanner.c" +#line 3752 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" +#line 1494 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3746 "Zend/zend_language_scanner.c" +#line 3762 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3807,42 +3823,42 @@ int start_line = CG(zend_lineno); } YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1482 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3769 "Zend/zend_language_scanner.c" +#line 3785 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1510 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3780 "Zend/zend_language_scanner.c" +#line 3796 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3790 "Zend/zend_language_scanner.c" +#line 3806 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" +#line 1502 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3800 "Zend/zend_language_scanner.c" +#line 3816 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -3971,11 +3987,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1807 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 3933 "Zend/zend_language_scanner.c" +#line 3949 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -3995,11 +4011,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1803 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 3957 "Zend/zend_language_scanner.c" +#line 3973 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4024,11 +4040,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1795 "Zend/zend_language_scanner.l" +#line 1797 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 3986 "Zend/zend_language_scanner.c" +#line 4002 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4063,11 +4079,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1791 "Zend/zend_language_scanner.l" +#line 1793 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 4025 "Zend/zend_language_scanner.c" +#line 4041 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4118,11 +4134,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1787 "Zend/zend_language_scanner.l" +#line 1789 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4080 "Zend/zend_language_scanner.c" +#line 4096 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4142,11 +4158,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1799 "Zend/zend_language_scanner.l" +#line 1801 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4104 "Zend/zend_language_scanner.c" +#line 4120 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4176,11 +4192,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1783 "Zend/zend_language_scanner.l" +#line 1785 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4138 "Zend/zend_language_scanner.c" +#line 4154 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4210,11 +4226,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1779 "Zend/zend_language_scanner.l" +#line 1781 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4172 "Zend/zend_language_scanner.c" +#line 4188 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4276,11 +4292,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1444 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4238 "Zend/zend_language_scanner.c" +#line 4254 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4300,11 +4316,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1424 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4262 "Zend/zend_language_scanner.c" +#line 4278 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4323,11 +4339,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" +#line 1474 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4285 "Zend/zend_language_scanner.c" +#line 4301 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4499,11 +4515,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" +#line 1374 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4461 "Zend/zend_language_scanner.c" +#line 4477 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4547,11 +4563,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" +#line 1378 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4509 "Zend/zend_language_scanner.c" +#line 4525 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4621,11 +4637,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(381, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4583 "Zend/zend_language_scanner.c" +#line 4599 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4658,11 +4674,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(388, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1384 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4620 "Zend/zend_language_scanner.c" +#line 4636 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4700,11 +4716,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(396, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1388 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4662 "Zend/zend_language_scanner.c" +#line 4678 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4745,11 +4761,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4707 "Zend/zend_language_scanner.c" +#line 4723 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4809,11 +4825,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1398 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4771 "Zend/zend_language_scanner.c" +#line 4787 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4827,11 +4843,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1368 "Zend/zend_language_scanner.l" +#line 1370 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4789 "Zend/zend_language_scanner.c" +#line 4805 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4851,11 +4867,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1360 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4813 "Zend/zend_language_scanner.c" +#line 4829 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4894,11 +4910,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4856 "Zend/zend_language_scanner.c" +#line 4872 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -4907,7 +4923,7 @@ int start_line = CG(zend_lineno); yy433: YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1990 "Zend/zend_language_scanner.l" +#line 1992 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -4915,17 +4931,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4873 "Zend/zend_language_scanner.c" +#line 4889 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1356 "Zend/zend_language_scanner.l" +#line 1358 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 4883 "Zend/zend_language_scanner.c" +#line 4899 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -4956,11 +4972,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1552 "Zend/zend_language_scanner.l" +#line 1554 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 4918 "Zend/zend_language_scanner.c" +#line 4934 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -4969,21 +4985,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" +#line 1354 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 4931 "Zend/zend_language_scanner.c" +#line 4947 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 4941 "Zend/zend_language_scanner.c" +#line 4957 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5005,32 +5021,32 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 4967 "Zend/zend_language_scanner.c" +#line 4983 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" +#line 1498 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 4977 "Zend/zend_language_scanner.c" +#line 4993 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1320 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 4988 "Zend/zend_language_scanner.c" +#line 5004 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5075,11 +5091,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5037 "Zend/zend_language_scanner.c" +#line 5053 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5134,11 +5150,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(470, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" +#line 1466 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5096 "Zend/zend_language_scanner.c" +#line 5112 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5168,11 +5184,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5130 "Zend/zend_language_scanner.c" +#line 5146 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5181,11 +5197,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5143 "Zend/zend_language_scanner.c" +#line 5159 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5210,11 +5226,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5172 "Zend/zend_language_scanner.c" +#line 5188 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5238,11 +5254,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5200 "Zend/zend_language_scanner.c" +#line 5216 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5279,11 +5295,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1280 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5241 "Zend/zend_language_scanner.c" +#line 5257 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5323,11 +5339,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1264 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5285 "Zend/zend_language_scanner.c" +#line 5301 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5351,11 +5367,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" +#line 1450 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5313 "Zend/zend_language_scanner.c" +#line 5329 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5382,11 +5398,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1260 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5344 "Zend/zend_language_scanner.c" +#line 5360 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5405,11 +5421,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5367 "Zend/zend_language_scanner.c" +#line 5383 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5418,11 +5434,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" +#line 1594 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5380 "Zend/zend_language_scanner.c" +#line 5396 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5456,11 +5472,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" +#line 1454 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5418 "Zend/zend_language_scanner.c" +#line 5434 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5484,11 +5500,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1220 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5446 "Zend/zend_language_scanner.c" +#line 5462 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5497,11 +5513,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1204 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5459 "Zend/zend_language_scanner.c" +#line 5475 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5553,11 +5569,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5515 "Zend/zend_language_scanner.c" +#line 5531 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5611,11 +5627,11 @@ int start_line = CG(zend_lineno); yy549: YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1404 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5573 "Zend/zend_language_scanner.c" +#line 5589 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5644,11 +5660,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1408 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5606 "Zend/zend_language_scanner.c" +#line 5622 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5682,11 +5698,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5644 "Zend/zend_language_scanner.c" +#line 5660 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5736,11 +5752,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1428 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5698 "Zend/zend_language_scanner.c" +#line 5714 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5769,11 +5785,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1256 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5731 "Zend/zend_language_scanner.c" +#line 5747 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5817,11 +5833,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5779 "Zend/zend_language_scanner.c" +#line 5795 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5849,11 +5865,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1186 "Zend/zend_language_scanner.l" +#line 1188 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5811 "Zend/zend_language_scanner.c" +#line 5827 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5872,11 +5888,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5834 "Zend/zend_language_scanner.c" +#line 5850 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5895,11 +5911,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1198 "Zend/zend_language_scanner.l" +#line 1200 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5857 "Zend/zend_language_scanner.c" +#line 5873 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -5932,11 +5948,11 @@ int start_line = CG(zend_lineno); yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1182 "Zend/zend_language_scanner.l" +#line 1184 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5894 "Zend/zend_language_scanner.c" +#line 5910 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -5996,13 +6012,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1176 "Zend/zend_language_scanner.l" +#line 1178 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 5960 "Zend/zend_language_scanner.c" +#line 5976 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6063,11 +6079,11 @@ int start_line = CG(zend_lineno); yy618: YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1412 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 6025 "Zend/zend_language_scanner.c" +#line 6041 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6096,11 +6112,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1416 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6058 "Zend/zend_language_scanner.c" +#line 6074 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6119,11 +6135,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1172 "Zend/zend_language_scanner.l" +#line 1174 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 6081 "Zend/zend_language_scanner.c" +#line 6097 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6213,11 +6229,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1284 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6175 "Zend/zend_language_scanner.c" +#line 6191 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6226,11 +6242,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1168 "Zend/zend_language_scanner.l" +#line 1170 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6188 "Zend/zend_language_scanner.c" +#line 6204 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6255,11 +6271,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1364 "Zend/zend_language_scanner.l" +#line 1366 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6217 "Zend/zend_language_scanner.c" +#line 6233 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6273,11 +6289,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6235 "Zend/zend_language_scanner.c" +#line 6251 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6323,11 +6339,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6285 "Zend/zend_language_scanner.c" +#line 6301 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6336,11 +6352,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6298 "Zend/zend_language_scanner.c" +#line 6314 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6354,11 +6370,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1190 "Zend/zend_language_scanner.l" +#line 1192 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6316 "Zend/zend_language_scanner.c" +#line 6332 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6409,11 +6425,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1164 "Zend/zend_language_scanner.l" +#line 1166 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6371 "Zend/zend_language_scanner.c" +#line 6387 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6437,11 +6453,11 @@ int start_line = CG(zend_lineno); yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6399 "Zend/zend_language_scanner.c" +#line 6415 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6465,11 +6481,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1240 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6427 "Zend/zend_language_scanner.c" +#line 6443 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6503,11 +6519,11 @@ int start_line = CG(zend_lineno); yy684: YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6465 "Zend/zend_language_scanner.c" +#line 6481 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6521,11 +6537,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1194 "Zend/zend_language_scanner.l" +#line 1196 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6483 "Zend/zend_language_scanner.c" +#line 6499 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6556,11 +6572,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6518 "Zend/zend_language_scanner.c" +#line 6534 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6569,11 +6585,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1160 "Zend/zend_language_scanner.l" +#line 1162 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6531 "Zend/zend_language_scanner.c" +#line 6547 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6608,11 +6624,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(700, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6570 "Zend/zend_language_scanner.c" +#line 6586 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6636,11 +6652,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1248 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6598 "Zend/zend_language_scanner.c" +#line 6614 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6720,11 +6736,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6682 "Zend/zend_language_scanner.c" +#line 6698 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6733,11 +6749,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1156 "Zend/zend_language_scanner.l" +#line 1158 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6695 "Zend/zend_language_scanner.c" +#line 6711 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6751,11 +6767,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6713 "Zend/zend_language_scanner.c" +#line 6729 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6824,11 +6840,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1222 "Zend/zend_language_scanner.l" +#line 1224 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6786 "Zend/zend_language_scanner.c" +#line 6802 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6857,11 +6873,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1268 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6819 "Zend/zend_language_scanner.c" +#line 6835 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6870,11 +6886,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1212 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6832 "Zend/zend_language_scanner.c" +#line 6848 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -6903,11 +6919,11 @@ int start_line = CG(zend_lineno); yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6865 "Zend/zend_language_scanner.c" +#line 6881 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -6931,11 +6947,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6893 "Zend/zend_language_scanner.c" +#line 6909 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -6969,11 +6985,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1252 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 6931 "Zend/zend_language_scanner.c" +#line 6947 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -6992,11 +7008,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1440 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 6954 "Zend/zend_language_scanner.c" +#line 6970 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7025,11 +7041,11 @@ int start_line = CG(zend_lineno); yy764: YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1216 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 6987 "Zend/zend_language_scanner.c" +#line 7003 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7043,11 +7059,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(767, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1208 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 7005 "Zend/zend_language_scanner.c" +#line 7021 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7061,11 +7077,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 7023 "Zend/zend_language_scanner.c" +#line 7039 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7138,11 +7154,11 @@ int start_line = CG(zend_lineno); yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1323 "Zend/zend_language_scanner.l" +#line 1325 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 7101 "Zend/zend_language_scanner.c" +#line 7117 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7150,13 +7166,13 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7115 "Zend/zend_language_scanner.c" +#line 7131 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7165,12 +7181,12 @@ int start_line = CG(zend_lineno); yy778: YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7130 "Zend/zend_language_scanner.c" +#line 7146 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7191,11 +7207,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7155 "Zend/zend_language_scanner.c" +#line 7171 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7280,14 +7296,14 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7247 "Zend/zend_language_scanner.c" +#line 7263 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7314,14 +7330,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1634 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7282 "Zend/zend_language_scanner.c" +#line 7298 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7332,9 +7348,9 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2379 "Zend/zend_language_scanner.l" +#line 2395 "Zend/zend_language_scanner.l" { - int newline = 0, indentation, len, new_len; + int newline = 0, indentation, len, new_len, using_spaces, using_tabs; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7352,8 +7368,10 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': - indentation = 0; + indentation = using_spaces = using_tabs = 0; while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + using_spaces |= *YYCURSOR == ' '; + using_tabs |= *YYCURSOR == '\t'; ++YYCURSOR; ++indentation; } @@ -7362,9 +7380,16 @@ int start_line = CG(zend_lineno); if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; - if (IS_LABEL_START(*end)) { - continue; - } + if (IS_LABEL_START(*end)) { + continue; + } + + if (using_spaces && using_tabs) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } if (*end == ';') { end++; @@ -7395,15 +7420,20 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, len); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; + if (new_len < 0) { + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + } else { + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; + } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7364 "Zend/zend_language_scanner.c" +#line 7394 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7507,7 +7537,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1749 "Zend/zend_language_scanner.l" +#line 1751 "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; @@ -7523,7 +7553,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7484 "Zend/zend_language_scanner.c" +#line 7514 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7543,23 +7573,23 @@ int start_line = CG(zend_lineno); yy806: YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1909 "Zend/zend_language_scanner.l" +#line 1911 "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 7509 "Zend/zend_language_scanner.c" +#line 7539 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1904 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7520 "Zend/zend_language_scanner.c" +#line 7550 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7569,7 +7599,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1914 "Zend/zend_language_scanner.l" +#line 1916 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7577,7 +7607,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7538 "Zend/zend_language_scanner.c" +#line 7568 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7586,17 +7616,17 @@ int start_line = CG(zend_lineno); yy813: YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1924 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7552 "Zend/zend_language_scanner.c" +#line 7582 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2451 "Zend/zend_language_scanner.l" +#line 2481 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7605,7 +7635,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7567 "Zend/zend_language_scanner.c" +#line 7597 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7641,11 +7671,11 @@ int start_line = CG(zend_lineno); yy820: YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7608 "Zend/zend_language_scanner.c" +#line 7638 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7685,12 +7715,12 @@ int start_line = CG(zend_lineno); yy828: YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1765 "Zend/zend_language_scanner.l" +#line 1767 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7653 "Zend/zend_language_scanner.c" +#line 7683 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7713,7 +7743,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2460 "Zend/zend_language_scanner.l" +#line 2490 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 91c5624816a9f..57c06a75d234f 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1112,14 +1112,20 @@ skip_escape_conversion: goto emit_token; \ } while (0) -static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation) +static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation, int using_spaces) { int new_len = len; - for (int i = 0, j = 0, skip; ; ) { + for (int i = 0, j = 0, skip; j < len; ) { for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { if (copy[j] != ' ' && copy[j] != '\t') { - break; + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation at least %d)", indentation); + return -1; + } + + if ((!using_spaces && copy[j] == ' ') || (using_spaces && copy[j] == '\t')) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + return -1; } } @@ -1134,10 +1140,6 @@ static int strip_multiline_string_indentation(char *copy, int len, int newline, if (copy[j] == '\n') { copy[i++] = copy[j++]; } - - if (j >= len) { - break; - } } return new_len - newline; @@ -2377,7 +2379,7 @@ double_quotes_scan_done: {ANY_CHAR} { - int newline = 0, indentation, len, new_len; + int newline = 0, indentation, len, new_len, using_spaces, using_tabs; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -2395,8 +2397,10 @@ double_quotes_scan_done: } /* fall through */ case '\n': - indentation = 0; + indentation = using_spaces = using_tabs = 0; while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + using_spaces |= *YYCURSOR == ' '; + using_tabs |= *YYCURSOR == '\t'; ++YYCURSOR; ++indentation; } @@ -2405,9 +2409,16 @@ double_quotes_scan_done: if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; - if (IS_LABEL_START(*end)) { - continue; - } + if (IS_LABEL_START(*end)) { + continue; + } + + if (using_spaces && using_tabs) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } if (*end == ';') { end++; @@ -2423,9 +2434,9 @@ double_quotes_scan_done: CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); + BEGIN(ST_END_HEREDOC); - goto heredoc_scan_done; + goto heredoc_scan_done; } continue; case '$': @@ -2457,17 +2468,22 @@ heredoc_scan_done: zend_scan_escape_string(zendlval, yytext, len, 0); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; + if (new_len < 0) { + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + } else { + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; + } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } {ANY_CHAR} { - int newline = 0, indentation, len, new_len; + int newline = 0, indentation, len, new_len, using_spaces, using_tabs; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -2485,8 +2501,10 @@ heredoc_scan_done: } /* fall through */ case '\n': - indentation = 0; + indentation = using_spaces = using_tabs = 0; while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + using_spaces |= *YYCURSOR == ' '; + using_tabs |= *YYCURSOR == '\t'; ++YYCURSOR; ++indentation; } @@ -2495,9 +2513,16 @@ heredoc_scan_done: if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; - if (IS_LABEL_START(*end)) { - continue; - } + if (IS_LABEL_START(*end)) { + continue; + } + + if (using_spaces && using_tabs) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } if (*end == ';') { end++; @@ -2528,10 +2553,15 @@ nowdoc_scan_done: zend_copy_value(zendlval, yytext, len); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation); + new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; + if (new_len < 0) { + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); + } else { + Z_STRVAL_P(zendlval)[new_len] = '\0'; + Z_STRLEN_P(zendlval) = new_len; + } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); From e3f8833296b0deaf3325a1e81a7e2832b07e3fa5 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Tue, 26 Sep 2017 23:08:52 +0100 Subject: [PATCH 05/54] Fix some implementation bugs --- Zend/tests/flexible-heredoc-error1.phpt | 6 +- Zend/tests/flexible-heredoc-error2.phpt | 6 +- Zend/tests/flexible-heredoc-error3.phpt | 6 +- Zend/tests/flexible-heredoc-error4.phpt | 8 +- Zend/tests/flexible-heredoc-error5.phpt | 9 + Zend/tests/flexible-heredoc-error6.phpt | 8 + Zend/tests/flexible-heredoc-error7.phpt | 9 + Zend/tests/flexible-heredoc-nowdoc.phpt | 19 +- Zend/tests/flexible-nowdoc-error1.phpt | 6 +- Zend/tests/flexible-nowdoc-error2.phpt | 6 +- Zend/tests/flexible-nowdoc-error3.phpt | 6 +- Zend/tests/flexible-nowdoc-error4.phpt | 8 +- Zend/tests/flexible-nowdoc-error5.phpt | 9 + Zend/zend_language_scanner.c | 873 +++++++++++++----------- Zend/zend_language_scanner.h | 2 + Zend/zend_language_scanner.l | 177 +++-- 16 files changed, 654 insertions(+), 504 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-error5.phpt create mode 100644 Zend/tests/flexible-heredoc-error6.phpt create mode 100644 Zend/tests/flexible-heredoc-error7.phpt create mode 100644 Zend/tests/flexible-nowdoc-error5.phpt diff --git a/Zend/tests/flexible-heredoc-error1.phpt b/Zend/tests/flexible-heredoc-error1.phpt index 21734b4e8232a..61071ec6fd448 100644 --- a/Zend/tests/flexible-heredoc-error1.phpt +++ b/Zend/tests/flexible-heredoc-error1.phpt @@ -3,14 +3,10 @@ Flexible heredoc syntax 1: different indentation for body (spaces) ending marker --FILE-- getMessage()); -} --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error2.phpt b/Zend/tests/flexible-heredoc-error2.phpt index 1c0ed66d59c2d..f7f5fa61356bf 100644 --- a/Zend/tests/flexible-heredoc-error2.phpt +++ b/Zend/tests/flexible-heredoc-error2.phpt @@ -3,14 +3,10 @@ Flexible heredoc syntax 2: mixing spaces and tabs in body --FILE-- getMessage()); -} --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error3.phpt b/Zend/tests/flexible-heredoc-error3.phpt index 56d0ee1e07469..940f5f16f2005 100644 --- a/Zend/tests/flexible-heredoc-error3.phpt +++ b/Zend/tests/flexible-heredoc-error3.phpt @@ -3,14 +3,10 @@ Flexible heredoc syntax error 3: mixing spaces and tabs in ending marker --FILE-- getMessage()); -} --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error4.phpt b/Zend/tests/flexible-heredoc-error4.phpt index e013b829bd8a8..710a1f9077718 100644 --- a/Zend/tests/flexible-heredoc-error4.phpt +++ b/Zend/tests/flexible-heredoc-error4.phpt @@ -3,14 +3,10 @@ Flexible heredoc syntax error 4: not enough body indentation --FILE-- getMessage()); -} --EXPECTF-- -Parse error: Invalid body indentation level (expecting an indentation at least 5) in %s on line %d \ No newline at end of file +Parse error: Invalid body indentation level (expecting an indentation level of at least 5) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error5.phpt b/Zend/tests/flexible-heredoc-error5.phpt new file mode 100644 index 0000000000000..85b813c5399e0 --- /dev/null +++ b/Zend/tests/flexible-heredoc-error5.phpt @@ -0,0 +1,9 @@ +--TEST-- +Flexible heredoc syntax error 5: mixing spaces and tabs in ending marker for 0 length body +--FILE-- + --EXPECT-- +string(0) "" +string(0) "" a b + c + d e a diff --git a/Zend/tests/flexible-nowdoc-error1.phpt b/Zend/tests/flexible-nowdoc-error1.phpt index cc5d1e0e22341..4200b9ddbcc0f 100644 --- a/Zend/tests/flexible-nowdoc-error1.phpt +++ b/Zend/tests/flexible-nowdoc-error1.phpt @@ -3,14 +3,10 @@ Flexible nowdoc syntax 1: different indentation for body (spaces) ending marker --FILE-- getMessage()); -} --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error2.phpt b/Zend/tests/flexible-nowdoc-error2.phpt index 864c3ac752497..87887e1d60925 100644 --- a/Zend/tests/flexible-nowdoc-error2.phpt +++ b/Zend/tests/flexible-nowdoc-error2.phpt @@ -3,14 +3,10 @@ Flexible nowdoc syntax 2: mixing spaces and tabs in body --FILE-- getMessage()); -} --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error3.phpt b/Zend/tests/flexible-nowdoc-error3.phpt index f7e8199d922c6..9fce19ebdfd15 100644 --- a/Zend/tests/flexible-nowdoc-error3.phpt +++ b/Zend/tests/flexible-nowdoc-error3.phpt @@ -3,14 +3,10 @@ Flexible nowdoc syntax error 3: mixing spaces and tabs in ending marker --FILE-- getMessage()); -} --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error4.phpt b/Zend/tests/flexible-nowdoc-error4.phpt index 84291334250af..aa8b260c090df 100644 --- a/Zend/tests/flexible-nowdoc-error4.phpt +++ b/Zend/tests/flexible-nowdoc-error4.phpt @@ -3,14 +3,10 @@ Flexible nowdoc syntax error 4: not enough body indentation --FILE-- getMessage()); -} --EXPECTF-- -Parse error: Invalid body indentation level (expecting an indentation at least 5) in %s on line %d \ No newline at end of file +Parse error: Invalid body indentation level (expecting an indentation level of at least 5) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error5.phpt b/Zend/tests/flexible-nowdoc-error5.phpt new file mode 100644 index 0000000000000..8dc3340e38029 --- /dev/null +++ b/Zend/tests/flexible-nowdoc-error5.phpt @@ -0,0 +1,9 @@ +--TEST-- +Flexible nowdoc syntax error 5: mixing spaces and tabs in ending marker for 0 length body +--FILE-- + YYLIMIT) { RETURN_TOKEN(END); @@ -1271,7 +1287,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1243 "Zend/zend_language_scanner.c" +#line 1259 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; @@ -1288,7 +1304,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1827 "Zend/zend_language_scanner.l" +#line 1843 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1300,13 +1316,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1269 "Zend/zend_language_scanner.c" +#line 1285 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1814 "Zend/zend_language_scanner.l" +#line 1830 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1314,7 +1330,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1280 "Zend/zend_language_scanner.c" +#line 1296 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1345,7 +1361,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1836 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1354,7 +1370,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1317 "Zend/zend_language_scanner.c" +#line 1333 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1424,7 +1440,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2249 "Zend/zend_language_scanner.l" +#line 2346 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1469,7 +1485,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1428 "Zend/zend_language_scanner.c" +#line 1444 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1480,12 +1496,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2193 "Zend/zend_language_scanner.l" +#line 2290 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1444 "Zend/zend_language_scanner.c" +#line 1460 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; @@ -1495,14 +1511,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2277 "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 1461 "Zend/zend_language_scanner.c" +#line 1477 "Zend/zend_language_scanner.c" yy27: YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1518,22 +1534,22 @@ int start_line = CG(zend_lineno); yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1482 "Zend/zend_language_scanner.c" +#line 1498 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1493 "Zend/zend_language_scanner.c" +#line 1509 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1547,13 +1563,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1894 "Zend/zend_language_scanner.l" +#line 1910 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1514 "Zend/zend_language_scanner.c" +#line 1530 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1571,13 +1587,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1885 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1539 "Zend/zend_language_scanner.c" +#line 1555 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1645,7 +1661,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2199 "Zend/zend_language_scanner.l" +#line 2296 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1698,7 +1714,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1656 "Zend/zend_language_scanner.c" +#line 1672 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1709,12 +1725,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2188 "Zend/zend_language_scanner.l" +#line 2285 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1672 "Zend/zend_language_scanner.c" +#line 1688 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1724,14 +1740,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2277 "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 1689 "Zend/zend_language_scanner.c" +#line 1705 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1747,22 +1763,22 @@ int start_line = CG(zend_lineno); yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1710 "Zend/zend_language_scanner.c" +#line 1726 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1721 "Zend/zend_language_scanner.c" +#line 1737 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1776,13 +1792,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1894 "Zend/zend_language_scanner.l" +#line 1910 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1742 "Zend/zend_language_scanner.c" +#line 1758 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1800,13 +1816,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1885 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1767 "Zend/zend_language_scanner.c" +#line 1783 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1817,7 +1833,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2166 "Zend/zend_language_scanner.l" +#line 2263 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1830,7 +1846,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1791 "Zend/zend_language_scanner.c" +#line 1807 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1892,11 +1908,10 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2291 "Zend/zend_language_scanner.l" +#line 2388 "Zend/zend_language_scanner.l" { - int newline = 0, indentation, len, new_len, using_spaces, using_tabs; - zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + int newline = 0, indentation = 0; if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1912,12 +1927,8 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': - indentation = using_spaces = using_tabs = 0; while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { - using_spaces |= *YYCURSOR == ' '; - using_tabs |= *YYCURSOR == '\t'; ++YYCURSOR; - ++indentation; } /* Check for ending label on the next line */ @@ -1928,13 +1939,6 @@ int start_line = CG(zend_lineno); continue; } - if (using_spaces && using_tabs) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - if (*end == ';') { end++; } @@ -1948,6 +1952,7 @@ int start_line = CG(zend_lineno); } CG(increment_lineno) = 1; /* For newline before label */ + indentation = heredoc_label->indentation; BEGIN(ST_END_HEREDOC); @@ -1979,23 +1984,14 @@ int start_line = CG(zend_lineno); heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - len = yyleng - indentation; - zend_scan_escape_string(zendlval, yytext, len, 0); + zend_scan_escape_string(zendlval, yytext, yyleng - indentation, 0); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - - if (new_len < 0) { - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); - } else { - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; - } + strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1956 "Zend/zend_language_scanner.c" +#line 1952 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2010,14 +2006,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2277 "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 1978 "Zend/zend_language_scanner.c" +#line 1974 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2033,22 +2029,22 @@ int start_line = CG(zend_lineno); yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1999 "Zend/zend_language_scanner.c" +#line 1995 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2010 "Zend/zend_language_scanner.c" +#line 2006 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2062,13 +2058,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1894 "Zend/zend_language_scanner.l" +#line 1910 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2031 "Zend/zend_language_scanner.c" +#line 2027 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2086,13 +2082,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1885 "Zend/zend_language_scanner.l" +#line 1901 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2056 "Zend/zend_language_scanner.c" +#line 2052 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2274,12 +2270,12 @@ int start_line = CG(zend_lineno); yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1924 "Zend/zend_language_scanner.l" +#line 1940 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2243 "Zend/zend_language_scanner.c" +#line 2239 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2511,11 +2507,11 @@ int start_line = CG(zend_lineno); yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1610 "Zend/zend_language_scanner.l" +#line 1626 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2479 "Zend/zend_language_scanner.c" +#line 2475 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2524,12 +2520,12 @@ int start_line = CG(zend_lineno); yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" +#line 1341 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2493 "Zend/zend_language_scanner.c" +#line 2489 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2540,11 +2536,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1366 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2508 "Zend/zend_language_scanner.c" +#line 2504 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2773,18 +2769,18 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" +#line 1631 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2742 "Zend/zend_language_scanner.c" +#line 2738 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" +#line 1643 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2792,7 +2788,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2756 "Zend/zend_language_scanner.c" +#line 2752 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2820,7 +2816,7 @@ int start_line = CG(zend_lineno); yy137: YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" +#line 1696 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2863,7 +2859,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2827 "Zend/zend_language_scanner.c" +#line 2823 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2891,7 +2887,7 @@ int start_line = CG(zend_lineno); yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1930 "Zend/zend_language_scanner.l" +#line 1946 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2920,14 +2916,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2884 "Zend/zend_language_scanner.c" +#line 2880 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2001 "Zend/zend_language_scanner.l" +#line 2017 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2995,14 +2991,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2959 "Zend/zend_language_scanner.c" +#line 2955 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2070 "Zend/zend_language_scanner.l" +#line 2086 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3043,24 +3039,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3007 "Zend/zend_language_scanner.c" +#line 3003 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2160 "Zend/zend_language_scanner.l" +#line 2257 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3018 "Zend/zend_language_scanner.c" +#line 3014 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2481 "Zend/zend_language_scanner.l" +#line 2546 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3069,7 +3065,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3033 "Zend/zend_language_scanner.c" +#line 3029 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3096,7 +3092,7 @@ int start_line = CG(zend_lineno); yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" +#line 1788 "Zend/zend_language_scanner.l" { const char *end; @@ -3105,7 +3101,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3069 "Zend/zend_language_scanner.c" +#line 3065 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3201,7 +3197,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" +#line 1668 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3229,7 +3225,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3193 "Zend/zend_language_scanner.c" +#line 3189 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3241,7 +3237,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" +#line 1739 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3269,7 +3265,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3233 "Zend/zend_language_scanner.c" +#line 3229 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3294,12 +3290,12 @@ int start_line = CG(zend_lineno); yy172: YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3263 "Zend/zend_language_scanner.c" +#line 3259 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3313,11 +3309,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1598 "Zend/zend_language_scanner.l" +#line 1614 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3281 "Zend/zend_language_scanner.c" +#line 3277 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3326,71 +3322,71 @@ int start_line = CG(zend_lineno); } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1590 "Zend/zend_language_scanner.l" +#line 1606 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3294 "Zend/zend_language_scanner.c" +#line 3290 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1578 "Zend/zend_language_scanner.l" +#line 1594 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3304 "Zend/zend_language_scanner.c" +#line 3300 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1582 "Zend/zend_language_scanner.l" +#line 1598 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3314 "Zend/zend_language_scanner.c" +#line 3310 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" +#line 1590 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3324 "Zend/zend_language_scanner.c" +#line 3320 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1586 "Zend/zend_language_scanner.l" +#line 1602 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3334 "Zend/zend_language_scanner.c" +#line 3330 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1586 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3344 "Zend/zend_language_scanner.c" +#line 3340 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1574 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3354 "Zend/zend_language_scanner.c" +#line 3350 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3399,7 +3395,7 @@ int start_line = CG(zend_lineno); yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1959 "Zend/zend_language_scanner.l" +#line 1975 "Zend/zend_language_scanner.l" { int doc_com; @@ -3438,7 +3434,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3396 "Zend/zend_language_scanner.c" +#line 3392 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3448,11 +3444,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" +#line 1566 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3410 "Zend/zend_language_scanner.c" +#line 3406 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3476,62 +3472,62 @@ int start_line = CG(zend_lineno); if ((yych = *YYCURSOR) == '=') goto yy202; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1558 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3438 "Zend/zend_language_scanner.c" +#line 3434 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1554 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3448 "Zend/zend_language_scanner.c" +#line 3444 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" +#line 1562 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3458 "Zend/zend_language_scanner.c" +#line 3454 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1606 "Zend/zend_language_scanner.l" +#line 1622 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3469 "Zend/zend_language_scanner.c" +#line 3465 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3479 "Zend/zend_language_scanner.c" +#line 3475 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1582 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3489 "Zend/zend_language_scanner.c" +#line 3485 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3542,53 +3538,53 @@ int start_line = CG(zend_lineno); yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1618 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3504 "Zend/zend_language_scanner.c" +#line 3500 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3515 "Zend/zend_language_scanner.c" +#line 3511 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1530 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3526 "Zend/zend_language_scanner.c" +#line 3522 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3536 "Zend/zend_language_scanner.c" +#line 3532 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" +#line 1578 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3546 "Zend/zend_language_scanner.c" +#line 3542 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3693,11 +3689,13 @@ int start_line = CG(zend_lineno); yy230: YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2112 "Zend/zend_language_scanner.l" +#line 2128 "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; 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); @@ -3710,6 +3708,7 @@ int start_line = CG(zend_lineno); if (*s == '\'') { s++; heredoc_label->length -= 2; + is_heredoc = 0; BEGIN(ST_NOWDOC); } else { @@ -3722,25 +3721,103 @@ int start_line = CG(zend_lineno); } heredoc_label->label = estrndup(s, heredoc_label->length); + heredoc_label->indentation = -1; + saved_cursor = YYCURSOR; + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + spacing |= 1 << (*YYCURSOR == '\t'); + ++YYCURSOR; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } /* Check for ending label on the next line */ if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; - if (*end == ';') { - end++; - } + if (!IS_LABEL_START(*end)) { + if ((spacing & 3) == 3) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + if (*end == ';') { + end++; + } - if (*end == '\n' || *end == '\r') { BEGIN(ST_END_HEREDOC); + is_heredoc = 0; + } else { + YYCURSOR = saved_cursor; } + } else { + YYCURSOR = saved_cursor; } - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + if (is_heredoc) { + int indentation; + unsigned char *cursor = YYCURSOR; + + --YYCURSOR; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + spacing |= 1 << (*YYCURSOR == '\t'); + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; + + if (IS_LABEL_START(*end)) { + continue; + } + + if ((spacing & 3) == 3) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + heredoc_label->indentation = indentation; + heredoc_label->indentation_spacing = spacing & 1; + + YYCURSOR = YYLIMIT; + } + } + } + + if (heredoc_label->indentation == -1) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + YYCURSOR = cursor; + } RETURN_TOKEN(T_START_HEREDOC); } -#line 3698 "Zend/zend_language_scanner.c" +#line 3775 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3780,31 +3857,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3742 "Zend/zend_language_scanner.c" +#line 3819 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3752 "Zend/zend_language_scanner.c" +#line 3829 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" +#line 1510 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3762 "Zend/zend_language_scanner.c" +#line 3839 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3823,42 +3900,42 @@ int start_line = CG(zend_lineno); } YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1498 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3785 "Zend/zend_language_scanner.c" +#line 3862 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" +#line 1526 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3796 "Zend/zend_language_scanner.c" +#line 3873 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" +#line 1494 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3806 "Zend/zend_language_scanner.c" +#line 3883 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3816 "Zend/zend_language_scanner.c" +#line 3893 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -3987,11 +4064,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1809 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 3949 "Zend/zend_language_scanner.c" +#line 4026 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4011,11 +4088,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 1821 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 3973 "Zend/zend_language_scanner.c" +#line 4050 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4040,11 +4117,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1797 "Zend/zend_language_scanner.l" +#line 1813 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 4002 "Zend/zend_language_scanner.c" +#line 4079 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4079,11 +4156,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1793 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 4041 "Zend/zend_language_scanner.c" +#line 4118 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4134,11 +4211,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1789 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4096 "Zend/zend_language_scanner.c" +#line 4173 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4158,11 +4235,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1801 "Zend/zend_language_scanner.l" +#line 1817 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4120 "Zend/zend_language_scanner.c" +#line 4197 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4192,11 +4269,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1785 "Zend/zend_language_scanner.l" +#line 1801 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4154 "Zend/zend_language_scanner.c" +#line 4231 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4226,11 +4303,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1781 "Zend/zend_language_scanner.l" +#line 1797 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4188 "Zend/zend_language_scanner.c" +#line 4265 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4292,11 +4369,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4254 "Zend/zend_language_scanner.c" +#line 4331 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4316,11 +4393,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4278 "Zend/zend_language_scanner.c" +#line 4355 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4339,11 +4416,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4301 "Zend/zend_language_scanner.c" +#line 4378 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4515,11 +4592,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4477 "Zend/zend_language_scanner.c" +#line 4554 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4563,11 +4640,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4525 "Zend/zend_language_scanner.c" +#line 4602 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4637,11 +4714,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(381, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1398 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4599 "Zend/zend_language_scanner.c" +#line 4676 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4674,11 +4751,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(388, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4636 "Zend/zend_language_scanner.c" +#line 4713 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4716,11 +4793,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(396, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4678 "Zend/zend_language_scanner.c" +#line 4755 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4761,11 +4838,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4723 "Zend/zend_language_scanner.c" +#line 4800 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4825,11 +4902,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4787 "Zend/zend_language_scanner.c" +#line 4864 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4843,11 +4920,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4805 "Zend/zend_language_scanner.c" +#line 4882 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4867,11 +4944,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1378 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4829 "Zend/zend_language_scanner.c" +#line 4906 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4910,11 +4987,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4872 "Zend/zend_language_scanner.c" +#line 4949 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -4923,7 +5000,7 @@ int start_line = CG(zend_lineno); yy433: YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1992 "Zend/zend_language_scanner.l" +#line 2008 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -4931,17 +5008,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4889 "Zend/zend_language_scanner.c" +#line 4966 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1374 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 4899 "Zend/zend_language_scanner.c" +#line 4976 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -4972,11 +5049,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" +#line 1570 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 4934 "Zend/zend_language_scanner.c" +#line 5011 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -4985,21 +5062,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" +#line 1370 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 4947 "Zend/zend_language_scanner.c" +#line 5024 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 4957 "Zend/zend_language_scanner.c" +#line 5034 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5021,32 +5098,32 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1550 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 4983 "Zend/zend_language_scanner.c" +#line 5060 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 4993 "Zend/zend_language_scanner.c" +#line 5070 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5004 "Zend/zend_language_scanner.c" +#line 5081 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5091,11 +5168,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5053 "Zend/zend_language_scanner.c" +#line 5130 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5150,11 +5227,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(470, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" +#line 1482 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5112 "Zend/zend_language_scanner.c" +#line 5189 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5184,11 +5261,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5146 "Zend/zend_language_scanner.c" +#line 5223 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5197,11 +5274,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5159 "Zend/zend_language_scanner.c" +#line 5236 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5226,11 +5303,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5188 "Zend/zend_language_scanner.c" +#line 5265 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5254,11 +5331,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1450 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5216 "Zend/zend_language_scanner.c" +#line 5293 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5295,11 +5372,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5257 "Zend/zend_language_scanner.c" +#line 5334 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5339,11 +5416,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" +#line 1280 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5301 "Zend/zend_language_scanner.c" +#line 5378 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5367,11 +5444,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1466 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5329 "Zend/zend_language_scanner.c" +#line 5406 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5398,11 +5475,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5360 "Zend/zend_language_scanner.c" +#line 5437 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5421,11 +5498,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1502 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5383 "Zend/zend_language_scanner.c" +#line 5460 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5434,11 +5511,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1594 "Zend/zend_language_scanner.l" +#line 1610 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5396 "Zend/zend_language_scanner.c" +#line 5473 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5472,11 +5549,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5434 "Zend/zend_language_scanner.c" +#line 5511 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5500,11 +5577,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5462 "Zend/zend_language_scanner.c" +#line 5539 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5513,11 +5590,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1204 "Zend/zend_language_scanner.l" +#line 1220 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5475 "Zend/zend_language_scanner.c" +#line 5552 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5569,11 +5646,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1454 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5531 "Zend/zend_language_scanner.c" +#line 5608 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5627,11 +5704,11 @@ int start_line = CG(zend_lineno); yy549: YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5589 "Zend/zend_language_scanner.c" +#line 5666 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5660,11 +5737,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5622 "Zend/zend_language_scanner.c" +#line 5699 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5698,11 +5775,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" +#line 1320 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5660 "Zend/zend_language_scanner.c" +#line 5737 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5752,11 +5829,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5714 "Zend/zend_language_scanner.c" +#line 5791 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5785,11 +5862,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5747 "Zend/zend_language_scanner.c" +#line 5824 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5833,11 +5910,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5795 "Zend/zend_language_scanner.c" +#line 5872 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5865,11 +5942,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1188 "Zend/zend_language_scanner.l" +#line 1204 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5827 "Zend/zend_language_scanner.c" +#line 5904 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5888,11 +5965,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" +#line 1324 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5850 "Zend/zend_language_scanner.c" +#line 5927 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5911,11 +5988,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1200 "Zend/zend_language_scanner.l" +#line 1216 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5873 "Zend/zend_language_scanner.c" +#line 5950 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -5948,11 +6025,11 @@ int start_line = CG(zend_lineno); yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1184 "Zend/zend_language_scanner.l" +#line 1200 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5910 "Zend/zend_language_scanner.c" +#line 5987 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6012,13 +6089,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1178 "Zend/zend_language_scanner.l" +#line 1194 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 5976 "Zend/zend_language_scanner.c" +#line 6053 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6079,11 +6156,11 @@ int start_line = CG(zend_lineno); yy618: YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 6041 "Zend/zend_language_scanner.c" +#line 6118 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6112,11 +6189,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6074 "Zend/zend_language_scanner.c" +#line 6151 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6135,11 +6212,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1174 "Zend/zend_language_scanner.l" +#line 1190 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 6097 "Zend/zend_language_scanner.c" +#line 6174 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6229,11 +6306,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6191 "Zend/zend_language_scanner.c" +#line 6268 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6242,11 +6319,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1170 "Zend/zend_language_scanner.l" +#line 1186 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6204 "Zend/zend_language_scanner.c" +#line 6281 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6271,11 +6348,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6233 "Zend/zend_language_scanner.c" +#line 6310 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6289,11 +6366,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6251 "Zend/zend_language_scanner.c" +#line 6328 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6339,11 +6416,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6301 "Zend/zend_language_scanner.c" +#line 6378 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6352,11 +6429,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6314 "Zend/zend_language_scanner.c" +#line 6391 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6370,11 +6447,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1192 "Zend/zend_language_scanner.l" +#line 1208 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6332 "Zend/zend_language_scanner.c" +#line 6409 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6425,11 +6502,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1166 "Zend/zend_language_scanner.l" +#line 1182 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6387 "Zend/zend_language_scanner.c" +#line 6464 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6453,11 +6530,11 @@ int start_line = CG(zend_lineno); yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" +#line 1248 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6415 "Zend/zend_language_scanner.c" +#line 6492 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6481,11 +6558,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" +#line 1256 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6443 "Zend/zend_language_scanner.c" +#line 6520 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6519,11 +6596,11 @@ int start_line = CG(zend_lineno); yy684: YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" +#line 1474 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6481 "Zend/zend_language_scanner.c" +#line 6558 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6537,11 +6614,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1196 "Zend/zend_language_scanner.l" +#line 1212 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6499 "Zend/zend_language_scanner.c" +#line 6576 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6572,11 +6649,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6534 "Zend/zend_language_scanner.c" +#line 6611 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6585,11 +6662,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1162 "Zend/zend_language_scanner.l" +#line 1178 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6547 "Zend/zend_language_scanner.c" +#line 6624 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6624,11 +6701,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(700, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6586 "Zend/zend_language_scanner.c" +#line 6663 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6652,11 +6729,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" +#line 1264 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6614 "Zend/zend_language_scanner.c" +#line 6691 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6736,11 +6813,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6698 "Zend/zend_language_scanner.c" +#line 6775 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6749,11 +6826,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1158 "Zend/zend_language_scanner.l" +#line 1174 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6711 "Zend/zend_language_scanner.c" +#line 6788 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6767,11 +6844,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6729 "Zend/zend_language_scanner.c" +#line 6806 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6840,11 +6917,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" +#line 1240 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6802 "Zend/zend_language_scanner.c" +#line 6879 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6873,11 +6950,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" +#line 1284 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6835 "Zend/zend_language_scanner.c" +#line 6912 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6886,11 +6963,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1212 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6848 "Zend/zend_language_scanner.c" +#line 6925 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -6919,11 +6996,11 @@ int start_line = CG(zend_lineno); yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" +#line 1252 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6881 "Zend/zend_language_scanner.c" +#line 6958 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -6947,11 +7024,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" +#line 1260 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6909 "Zend/zend_language_scanner.c" +#line 6986 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -6985,11 +7062,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" +#line 1268 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 6947 "Zend/zend_language_scanner.c" +#line 7024 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7008,11 +7085,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 6970 "Zend/zend_language_scanner.c" +#line 7047 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7041,11 +7118,11 @@ int start_line = CG(zend_lineno); yy764: YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 7003 "Zend/zend_language_scanner.c" +#line 7080 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7059,11 +7136,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(767, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1208 "Zend/zend_language_scanner.l" +#line 1224 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 7021 "Zend/zend_language_scanner.c" +#line 7098 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7077,11 +7154,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 7039 "Zend/zend_language_scanner.c" +#line 7116 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7154,11 +7231,11 @@ int start_line = CG(zend_lineno); yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" +#line 1341 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 7117 "Zend/zend_language_scanner.c" +#line 7194 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7166,13 +7243,13 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" +#line 1356 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7131 "Zend/zend_language_scanner.c" +#line 7208 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7181,12 +7258,12 @@ int start_line = CG(zend_lineno); yy778: YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1350 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7146 "Zend/zend_language_scanner.c" +#line 7223 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7207,11 +7284,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7171 "Zend/zend_language_scanner.c" +#line 7248 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7296,14 +7373,14 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7263 "Zend/zend_language_scanner.c" +#line 7340 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7330,14 +7407,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7298 "Zend/zend_language_scanner.c" +#line 7375 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7348,10 +7425,9 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2395 "Zend/zend_language_scanner.l" +#line 2472 "Zend/zend_language_scanner.l" { - int newline = 0, indentation, len, new_len, using_spaces, using_tabs; - + int newline = 0, indentation, spacing; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); if (YYCURSOR > YYLIMIT) { @@ -7368,10 +7444,10 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': - indentation = using_spaces = using_tabs = 0; + indentation = spacing = 0; + while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { - using_spaces |= *YYCURSOR == ' '; - using_tabs |= *YYCURSOR == '\t'; + spacing |= 1 << (*YYCURSOR == '\t'); ++YYCURSOR; ++indentation; } @@ -7384,10 +7460,8 @@ int start_line = CG(zend_lineno); continue; } - if (using_spaces && using_tabs) { + if ((spacing & 3) == 3) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7416,24 +7490,15 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - len = yyleng - indentation; - zend_copy_value(zendlval, yytext, len); + zend_copy_value(zendlval, yytext, yyleng - indentation); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - - if (new_len < 0) { - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); - } else { - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; - } + strip_multiline_string_indentation(zendlval, newline, indentation, spacing & 1); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7394 "Zend/zend_language_scanner.c" +#line 7459 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7537,7 +7602,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1751 "Zend/zend_language_scanner.l" +#line 1767 "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; @@ -7553,7 +7618,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7514 "Zend/zend_language_scanner.c" +#line 7579 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7573,23 +7638,23 @@ int start_line = CG(zend_lineno); yy806: YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1911 "Zend/zend_language_scanner.l" +#line 1927 "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 7539 "Zend/zend_language_scanner.c" +#line 7604 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1906 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7550 "Zend/zend_language_scanner.c" +#line 7615 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7599,7 +7664,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1916 "Zend/zend_language_scanner.l" +#line 1932 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7607,7 +7672,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7568 "Zend/zend_language_scanner.c" +#line 7633 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7616,17 +7681,17 @@ int start_line = CG(zend_lineno); yy813: YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1924 "Zend/zend_language_scanner.l" +#line 1940 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7582 "Zend/zend_language_scanner.c" +#line 7647 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2481 "Zend/zend_language_scanner.l" +#line 2546 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7635,7 +7700,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7597 "Zend/zend_language_scanner.c" +#line 7662 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7671,11 +7736,11 @@ int start_line = CG(zend_lineno); yy820: YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7638 "Zend/zend_language_scanner.c" +#line 7703 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7715,12 +7780,12 @@ int start_line = CG(zend_lineno); yy828: YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1767 "Zend/zend_language_scanner.l" +#line 1783 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7683 "Zend/zend_language_scanner.c" +#line 7748 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7743,7 +7808,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2490 "Zend/zend_language_scanner.l" +#line 2555 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index 2064d6d17ae07..975701f210fcf 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -61,6 +61,8 @@ typedef struct _zend_lex_state { typedef struct _zend_heredoc_label { char *label; int length; + int indentation; + zend_bool indentation_spacing; } zend_heredoc_label; BEGIN_EXTERN_C() diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 57c06a75d234f..a768747de846e 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1112,27 +1112,36 @@ skip_escape_conversion: goto emit_token; \ } while (0) -static int strip_multiline_string_indentation(char *copy, int len, int newline, int indentation, int using_spaces) +static void strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { - int new_len = len; + int len = Z_STRLEN_P(zendlval), new_len = len; + char *copy = Z_STRVAL_P(zendlval); for (int i = 0, j = 0, skip; j < len; ) { for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { + if (copy[j] == '\r' || copy[j] == '\n') { + goto skip; + } + if (copy[j] != ' ' && copy[j] != '\t') { - zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation at least %d)", indentation); - return -1; + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); + goto error; } if ((!using_spaces && copy[j] == ' ') || (using_spaces && copy[j] == '\t')) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - return -1; + goto error; } } - while (copy[j] != '\r' && copy[j] != '\n') { + while (j < len && copy[j] != '\r' && copy[j] != '\n') { copy[i++] = copy[j++]; } + if (j == len) { + break; + } +skip: if (copy[j] == '\r') { copy[i++] = copy[j++]; } @@ -1142,7 +1151,14 @@ static int strip_multiline_string_indentation(char *copy, int len, int newline, } } - return new_len - newline; + Z_STRVAL_P(zendlval)[new_len - newline] = '\0'; + Z_STRLEN_P(zendlval) = new_len - newline; + + return; + +error: + zval_dtor(zendlval); + ZVAL_UNDEF(zendlval); } #define RETURN_TOKEN(token) return emit_token(token, start_line); @@ -2194,8 +2210,10 @@ skip_escape_conversion: b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} { char *s; - int bprefix = (yytext[0] != '<') ? 1 : 0; + unsigned char *saved_cursor; + int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 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); @@ -2208,6 +2226,7 @@ skip_escape_conversion: if (*s == '\'') { s++; heredoc_label->length -= 2; + is_heredoc = 0; BEGIN(ST_NOWDOC); } else { @@ -2220,21 +2239,99 @@ skip_escape_conversion: } heredoc_label->label = estrndup(s, heredoc_label->length); + heredoc_label->indentation = -1; + saved_cursor = YYCURSOR; + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + spacing |= 1 << (*YYCURSOR == '\t'); + ++YYCURSOR; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } /* Check for ending label on the next line */ if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; - if (*end == ';') { - end++; - } + if (!IS_LABEL_START(*end)) { + if ((spacing & 3) == 3) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + if (*end == ';') { + end++; + } - if (*end == '\n' || *end == '\r') { BEGIN(ST_END_HEREDOC); + is_heredoc = 0; + } else { + YYCURSOR = saved_cursor; } + } else { + YYCURSOR = saved_cursor; } - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + if (is_heredoc) { + int indentation; + unsigned char *cursor = YYCURSOR; + + --YYCURSOR; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + spacing |= 1 << (*YYCURSOR == '\t'); + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; + + if (IS_LABEL_START(*end)) { + continue; + } + + if ((spacing & 3) == 3) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + heredoc_label->indentation = indentation; + heredoc_label->indentation_spacing = spacing & 1; + + YYCURSOR = YYLIMIT; + } + } + } + + if (heredoc_label->indentation == -1) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + YYCURSOR = cursor; + } RETURN_TOKEN(T_START_HEREDOC); } @@ -2379,9 +2476,8 @@ double_quotes_scan_done: {ANY_CHAR} { - int newline = 0, indentation, len, new_len, using_spaces, using_tabs; - zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); + int newline = 0, indentation = 0; if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2397,12 +2493,8 @@ double_quotes_scan_done: } /* fall through */ case '\n': - indentation = using_spaces = using_tabs = 0; while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { - using_spaces |= *YYCURSOR == ' '; - using_tabs |= *YYCURSOR == '\t'; ++YYCURSOR; - ++indentation; } /* Check for ending label on the next line */ @@ -2413,13 +2505,6 @@ double_quotes_scan_done: continue; } - if (using_spaces && using_tabs) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - if (*end == ';') { end++; } @@ -2433,6 +2518,7 @@ double_quotes_scan_done: } CG(increment_lineno) = 1; /* For newline before label */ + indentation = heredoc_label->indentation; BEGIN(ST_END_HEREDOC); @@ -2464,27 +2550,17 @@ double_quotes_scan_done: heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - len = yyleng - indentation; - zend_scan_escape_string(zendlval, yytext, len, 0); + zend_scan_escape_string(zendlval, yytext, yyleng - indentation, 0); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - - if (new_len < 0) { - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); - } else { - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; - } + strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } {ANY_CHAR} { - int newline = 0, indentation, len, new_len, using_spaces, using_tabs; - + int newline = 0, indentation, spacing; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); if (YYCURSOR > YYLIMIT) { @@ -2501,10 +2577,10 @@ heredoc_scan_done: } /* fall through */ case '\n': - indentation = using_spaces = using_tabs = 0; + indentation = spacing = 0; + while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { - using_spaces |= *YYCURSOR == ' '; - using_tabs |= *YYCURSOR == '\t'; + spacing |= 1 << (*YYCURSOR == '\t'); ++YYCURSOR; ++indentation; } @@ -2517,10 +2593,8 @@ heredoc_scan_done: continue; } - if (using_spaces && using_tabs) { + if ((spacing & 3) == 3) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2549,19 +2623,10 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - len = yyleng - indentation; - zend_copy_value(zendlval, yytext, len); + zend_copy_value(zendlval, yytext, yyleng - indentation); - new_len = strip_multiline_string_indentation(Z_STRVAL_P(zendlval), Z_STRLEN_P(zendlval), newline, indentation, using_spaces); - - if (new_len < 0) { - zval_dtor(zendlval); - ZVAL_UNDEF(zendlval); - } else { - Z_STRVAL_P(zendlval)[new_len] = '\0'; - Z_STRLEN_P(zendlval) = new_len; - } + strip_multiline_string_indentation(zendlval, newline, indentation, spacing & 1); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); From 9044e32cd13ea00eb721fed4afc03ac2cb6a6b15 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 27 Sep 2017 10:59:53 +0100 Subject: [PATCH 06/54] Fix another bug --- Zend/zend_language_scanner.c | 345 +++++++++++++++++------------------ Zend/zend_language_scanner.l | 9 +- 2 files changed, 174 insertions(+), 180 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 5f14684e08a46..0eb00ea4b15e4 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1440,7 +1440,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2346 "Zend/zend_language_scanner.l" +#line 2344 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1496,7 +1496,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2290 "Zend/zend_language_scanner.l" +#line 2288 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); @@ -1511,7 +1511,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2275 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -1661,7 +1661,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2296 "Zend/zend_language_scanner.l" +#line 2294 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1725,7 +1725,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2285 "Zend/zend_language_scanner.l" +#line 2283 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); @@ -1740,7 +1740,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2275 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -1833,7 +1833,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2263 "Zend/zend_language_scanner.l" +#line 2261 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1908,7 +1908,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2388 "Zend/zend_language_scanner.l" +#line 2386 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0; @@ -1951,7 +1951,6 @@ int start_line = CG(zend_lineno); newline = 1; } - CG(increment_lineno) = 1; /* For newline before label */ indentation = heredoc_label->indentation; BEGIN(ST_END_HEREDOC); @@ -1991,7 +1990,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1952 "Zend/zend_language_scanner.c" +#line 1951 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2006,14 +2005,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2275 "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 1974 "Zend/zend_language_scanner.c" +#line 1973 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2033,7 +2032,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1995 "Zend/zend_language_scanner.c" +#line 1994 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2044,7 +2043,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2006 "Zend/zend_language_scanner.c" +#line 2005 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2064,7 +2063,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2027 "Zend/zend_language_scanner.c" +#line 2026 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2088,7 +2087,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2052 "Zend/zend_language_scanner.c" +#line 2051 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2275,7 +2274,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2239 "Zend/zend_language_scanner.c" +#line 2238 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2511,7 +2510,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2475 "Zend/zend_language_scanner.c" +#line 2474 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2525,7 +2524,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2489 "Zend/zend_language_scanner.c" +#line 2488 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2540,7 +2539,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2504 "Zend/zend_language_scanner.c" +#line 2503 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2774,7 +2773,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2738 "Zend/zend_language_scanner.c" +#line 2737 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; @@ -2788,7 +2787,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2752 "Zend/zend_language_scanner.c" +#line 2751 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2859,7 +2858,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2823 "Zend/zend_language_scanner.c" +#line 2822 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2916,7 +2915,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2880 "Zend/zend_language_scanner.c" +#line 2879 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; @@ -2991,7 +2990,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2955 "Zend/zend_language_scanner.c" +#line 2954 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; @@ -3039,24 +3038,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3003 "Zend/zend_language_scanner.c" +#line 3002 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2257 "Zend/zend_language_scanner.l" +#line 2255 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3014 "Zend/zend_language_scanner.c" +#line 3013 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2546 "Zend/zend_language_scanner.l" +#line 2543 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3065,7 +3064,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3029 "Zend/zend_language_scanner.c" +#line 3028 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3101,7 +3100,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3065 "Zend/zend_language_scanner.c" +#line 3064 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3225,7 +3224,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3189 "Zend/zend_language_scanner.c" +#line 3188 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3265,7 +3264,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3229 "Zend/zend_language_scanner.c" +#line 3228 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3295,7 +3294,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3259 "Zend/zend_language_scanner.c" +#line 3258 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3313,7 +3312,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3277 "Zend/zend_language_scanner.c" +#line 3276 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3326,7 +3325,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3290 "Zend/zend_language_scanner.c" +#line 3289 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3336,7 +3335,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3300 "Zend/zend_language_scanner.c" +#line 3299 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3346,7 +3345,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3310 "Zend/zend_language_scanner.c" +#line 3309 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3356,7 +3355,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 3320 "Zend/zend_language_scanner.c" +#line 3319 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3366,7 +3365,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3330 "Zend/zend_language_scanner.c" +#line 3329 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3376,7 +3375,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3340 "Zend/zend_language_scanner.c" +#line 3339 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3386,7 +3385,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3350 "Zend/zend_language_scanner.c" +#line 3349 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3434,7 +3433,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3392 "Zend/zend_language_scanner.c" +#line 3391 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3448,7 +3447,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3406 "Zend/zend_language_scanner.c" +#line 3405 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3476,7 +3475,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3434 "Zend/zend_language_scanner.c" +#line 3433 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; @@ -3486,7 +3485,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3444 "Zend/zend_language_scanner.c" +#line 3443 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; @@ -3496,7 +3495,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 3454 "Zend/zend_language_scanner.c" +#line 3453 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; @@ -3507,7 +3506,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3465 "Zend/zend_language_scanner.c" +#line 3464 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3517,7 +3516,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3475 "Zend/zend_language_scanner.c" +#line 3474 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; @@ -3527,7 +3526,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 3485 "Zend/zend_language_scanner.c" +#line 3484 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3542,7 +3541,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3500 "Zend/zend_language_scanner.c" +#line 3499 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3553,7 +3552,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3511 "Zend/zend_language_scanner.c" +#line 3510 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3564,7 +3563,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3522 "Zend/zend_language_scanner.c" +#line 3521 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3574,7 +3573,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 3532 "Zend/zend_language_scanner.c" +#line 3531 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3584,7 +3583,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 3542 "Zend/zend_language_scanner.c" +#line 3541 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3761,9 +3760,8 @@ int start_line = CG(zend_lineno); if (is_heredoc) { int indentation; - unsigned char *cursor = YYCURSOR; - --YYCURSOR; + saved_cursor = YYCURSOR--; while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3807,17 +3805,16 @@ int start_line = CG(zend_lineno); } } + YYCURSOR = saved_cursor; + if (heredoc_label->indentation == -1) { - YYCURSOR = saved_cursor; RETURN_TOKEN(T_START_HEREDOC); } - - YYCURSOR = cursor; } RETURN_TOKEN(T_START_HEREDOC); } -#line 3775 "Zend/zend_language_scanner.c" +#line 3772 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3861,7 +3858,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3819 "Zend/zend_language_scanner.c" +#line 3816 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3871,7 +3868,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3829 "Zend/zend_language_scanner.c" +#line 3826 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; @@ -3881,7 +3878,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3839 "Zend/zend_language_scanner.c" +#line 3836 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3904,7 +3901,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 3862 "Zend/zend_language_scanner.c" +#line 3859 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3915,7 +3912,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3873 "Zend/zend_language_scanner.c" +#line 3870 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3925,7 +3922,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3883 "Zend/zend_language_scanner.c" +#line 3880 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3935,7 +3932,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3893 "Zend/zend_language_scanner.c" +#line 3890 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4068,7 +4065,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 4026 "Zend/zend_language_scanner.c" +#line 4023 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4092,7 +4089,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 4050 "Zend/zend_language_scanner.c" +#line 4047 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4121,7 +4118,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 4079 "Zend/zend_language_scanner.c" +#line 4076 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4160,7 +4157,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 4118 "Zend/zend_language_scanner.c" +#line 4115 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4215,7 +4212,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 4173 "Zend/zend_language_scanner.c" +#line 4170 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4239,7 +4236,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 4197 "Zend/zend_language_scanner.c" +#line 4194 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4273,7 +4270,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 4231 "Zend/zend_language_scanner.c" +#line 4228 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4307,7 +4304,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 4265 "Zend/zend_language_scanner.c" +#line 4262 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4373,7 +4370,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4331 "Zend/zend_language_scanner.c" +#line 4328 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4397,7 +4394,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4355 "Zend/zend_language_scanner.c" +#line 4352 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4420,7 +4417,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 4378 "Zend/zend_language_scanner.c" +#line 4375 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4596,7 +4593,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 4554 "Zend/zend_language_scanner.c" +#line 4551 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4644,7 +4641,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4602 "Zend/zend_language_scanner.c" +#line 4599 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4718,7 +4715,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 4676 "Zend/zend_language_scanner.c" +#line 4673 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4755,7 +4752,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4713 "Zend/zend_language_scanner.c" +#line 4710 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4797,7 +4794,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4755 "Zend/zend_language_scanner.c" +#line 4752 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4842,7 +4839,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 4800 "Zend/zend_language_scanner.c" +#line 4797 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4906,7 +4903,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 4864 "Zend/zend_language_scanner.c" +#line 4861 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4924,7 +4921,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4882 "Zend/zend_language_scanner.c" +#line 4879 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4948,7 +4945,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4906 "Zend/zend_language_scanner.c" +#line 4903 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4991,7 +4988,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 4949 "Zend/zend_language_scanner.c" +#line 4946 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5008,7 +5005,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4966 "Zend/zend_language_scanner.c" +#line 4963 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; @@ -5018,7 +5015,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 4976 "Zend/zend_language_scanner.c" +#line 4973 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5053,7 +5050,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5011 "Zend/zend_language_scanner.c" +#line 5008 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5066,7 +5063,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 5024 "Zend/zend_language_scanner.c" +#line 5021 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -5076,7 +5073,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5034 "Zend/zend_language_scanner.c" +#line 5031 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5102,7 +5099,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5060 "Zend/zend_language_scanner.c" +#line 5057 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -5112,7 +5109,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 5070 "Zend/zend_language_scanner.c" +#line 5067 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; @@ -5123,7 +5120,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5081 "Zend/zend_language_scanner.c" +#line 5078 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5172,7 +5169,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5130 "Zend/zend_language_scanner.c" +#line 5127 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5231,7 +5228,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 5189 "Zend/zend_language_scanner.c" +#line 5186 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5265,7 +5262,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5223 "Zend/zend_language_scanner.c" +#line 5220 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5278,7 +5275,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5236 "Zend/zend_language_scanner.c" +#line 5233 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5307,7 +5304,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5265 "Zend/zend_language_scanner.c" +#line 5262 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5335,7 +5332,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5293 "Zend/zend_language_scanner.c" +#line 5290 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5376,7 +5373,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5334 "Zend/zend_language_scanner.c" +#line 5331 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5420,7 +5417,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5378 "Zend/zend_language_scanner.c" +#line 5375 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5448,7 +5445,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5406 "Zend/zend_language_scanner.c" +#line 5403 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5479,7 +5476,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 5437 "Zend/zend_language_scanner.c" +#line 5434 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5502,7 +5499,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5460 "Zend/zend_language_scanner.c" +#line 5457 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5515,7 +5512,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5473 "Zend/zend_language_scanner.c" +#line 5470 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5553,7 +5550,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5511 "Zend/zend_language_scanner.c" +#line 5508 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5581,7 +5578,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5539 "Zend/zend_language_scanner.c" +#line 5536 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5594,7 +5591,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 5552 "Zend/zend_language_scanner.c" +#line 5549 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5650,7 +5647,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5608 "Zend/zend_language_scanner.c" +#line 5605 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5708,7 +5705,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5666 "Zend/zend_language_scanner.c" +#line 5663 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5741,7 +5738,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5699 "Zend/zend_language_scanner.c" +#line 5696 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5779,7 +5776,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 5737 "Zend/zend_language_scanner.c" +#line 5734 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5833,7 +5830,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 5791 "Zend/zend_language_scanner.c" +#line 5788 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5866,7 +5863,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 5824 "Zend/zend_language_scanner.c" +#line 5821 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5914,7 +5911,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5872 "Zend/zend_language_scanner.c" +#line 5869 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5946,7 +5943,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 5904 "Zend/zend_language_scanner.c" +#line 5901 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5969,7 +5966,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5927 "Zend/zend_language_scanner.c" +#line 5924 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5992,7 +5989,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5950 "Zend/zend_language_scanner.c" +#line 5947 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6029,7 +6026,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5987 "Zend/zend_language_scanner.c" +#line 5984 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6095,7 +6092,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6053 "Zend/zend_language_scanner.c" +#line 6050 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6160,7 +6157,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6118 "Zend/zend_language_scanner.c" +#line 6115 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6193,7 +6190,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6151 "Zend/zend_language_scanner.c" +#line 6148 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6216,7 +6213,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6174 "Zend/zend_language_scanner.c" +#line 6171 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6310,7 +6307,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6268 "Zend/zend_language_scanner.c" +#line 6265 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6323,7 +6320,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 6281 "Zend/zend_language_scanner.c" +#line 6278 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6352,7 +6349,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 6310 "Zend/zend_language_scanner.c" +#line 6307 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6370,7 +6367,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 6328 "Zend/zend_language_scanner.c" +#line 6325 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6420,7 +6417,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6378 "Zend/zend_language_scanner.c" +#line 6375 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6433,7 +6430,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 6391 "Zend/zend_language_scanner.c" +#line 6388 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6451,7 +6448,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 6409 "Zend/zend_language_scanner.c" +#line 6406 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6506,7 +6503,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6464 "Zend/zend_language_scanner.c" +#line 6461 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6534,7 +6531,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 6492 "Zend/zend_language_scanner.c" +#line 6489 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6562,7 +6559,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6520 "Zend/zend_language_scanner.c" +#line 6517 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6600,7 +6597,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 6558 "Zend/zend_language_scanner.c" +#line 6555 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6618,7 +6615,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6576 "Zend/zend_language_scanner.c" +#line 6573 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6653,7 +6650,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 6611 "Zend/zend_language_scanner.c" +#line 6608 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6666,7 +6663,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6624 "Zend/zend_language_scanner.c" +#line 6621 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6705,7 +6702,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6663 "Zend/zend_language_scanner.c" +#line 6660 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6733,7 +6730,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6691 "Zend/zend_language_scanner.c" +#line 6688 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6817,7 +6814,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6775 "Zend/zend_language_scanner.c" +#line 6772 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6830,7 +6827,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6788 "Zend/zend_language_scanner.c" +#line 6785 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6848,7 +6845,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 6806 "Zend/zend_language_scanner.c" +#line 6803 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6921,7 +6918,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6879 "Zend/zend_language_scanner.c" +#line 6876 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6954,7 +6951,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6912 "Zend/zend_language_scanner.c" +#line 6909 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6967,7 +6964,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 6925 "Zend/zend_language_scanner.c" +#line 6922 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7000,7 +6997,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6958 "Zend/zend_language_scanner.c" +#line 6955 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7028,7 +7025,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6986 "Zend/zend_language_scanner.c" +#line 6983 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7066,7 +7063,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7024 "Zend/zend_language_scanner.c" +#line 7021 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7089,7 +7086,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 7047 "Zend/zend_language_scanner.c" +#line 7044 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7122,7 +7119,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 7080 "Zend/zend_language_scanner.c" +#line 7077 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7140,7 +7137,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 7098 "Zend/zend_language_scanner.c" +#line 7095 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7158,7 +7155,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 7116 "Zend/zend_language_scanner.c" +#line 7113 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7235,7 +7232,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7194 "Zend/zend_language_scanner.c" +#line 7191 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7249,7 +7246,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7208 "Zend/zend_language_scanner.c" +#line 7205 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7263,7 +7260,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7223 "Zend/zend_language_scanner.c" +#line 7220 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7288,7 +7285,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7248 "Zend/zend_language_scanner.c" +#line 7245 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7380,7 +7377,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7340 "Zend/zend_language_scanner.c" +#line 7337 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7414,7 +7411,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7375 "Zend/zend_language_scanner.c" +#line 7372 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7425,7 +7422,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2472 "Zend/zend_language_scanner.l" +#line 2469 "Zend/zend_language_scanner.l" { int newline = 0, indentation, spacing; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7498,7 +7495,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7459 "Zend/zend_language_scanner.c" +#line 7456 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7618,7 +7615,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7579 "Zend/zend_language_scanner.c" +#line 7576 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7643,7 +7640,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7604 "Zend/zend_language_scanner.c" +#line 7601 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7654,7 +7651,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7615 "Zend/zend_language_scanner.c" +#line 7612 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7672,7 +7669,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7633 "Zend/zend_language_scanner.c" +#line 7630 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7685,13 +7682,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7647 "Zend/zend_language_scanner.c" +#line 7644 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2546 "Zend/zend_language_scanner.l" +#line 2543 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7700,7 +7697,7 @@ int start_line = CG(zend_lineno); 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 7659 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7740,7 +7737,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7703 "Zend/zend_language_scanner.c" +#line 7700 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7785,7 +7782,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7748 "Zend/zend_language_scanner.c" +#line 7745 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7808,7 +7805,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2555 "Zend/zend_language_scanner.l" +#line 2552 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index a768747de846e..e84281a1416f9 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2279,9 +2279,8 @@ skip_escape_conversion: if (is_heredoc) { int indentation; - unsigned char *cursor = YYCURSOR; - --YYCURSOR; + saved_cursor = YYCURSOR--; while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2325,12 +2324,11 @@ skip_escape_conversion: } } + YYCURSOR = saved_cursor; + if (heredoc_label->indentation == -1) { - YYCURSOR = saved_cursor; RETURN_TOKEN(T_START_HEREDOC); } - - YYCURSOR = cursor; } RETURN_TOKEN(T_START_HEREDOC); @@ -2517,7 +2515,6 @@ double_quotes_scan_done: newline = 1; } - CG(increment_lineno) = 1; /* For newline before label */ indentation = heredoc_label->indentation; BEGIN(ST_END_HEREDOC); From 0c8cf6da646b66577f46861971ceb896b97414c5 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 27 Sep 2017 12:19:37 +0100 Subject: [PATCH 07/54] Remove irrelevant tests --- Zend/tests/heredoc_009.phpt | 42 ------------------------------------- Zend/tests/heredoc_010.phpt | 32 ---------------------------- Zend/tests/heredoc_017.phpt | 17 --------------- Zend/tests/heredoc_018.phpt | 17 --------------- Zend/tests/nowdoc_009.phpt | 40 ----------------------------------- Zend/tests/nowdoc_010.phpt | 33 ----------------------------- 6 files changed, 181 deletions(-) delete mode 100644 Zend/tests/heredoc_009.phpt delete mode 100644 Zend/tests/heredoc_010.phpt delete mode 100644 Zend/tests/heredoc_017.phpt delete mode 100644 Zend/tests/heredoc_018.phpt delete mode 100644 Zend/tests/nowdoc_009.phpt delete mode 100644 Zend/tests/nowdoc_010.phpt diff --git a/Zend/tests/heredoc_009.phpt b/Zend/tests/heredoc_009.phpt deleted file mode 100644 index 38f5d282f0ae5..0000000000000 --- a/Zend/tests/heredoc_009.phpt +++ /dev/null @@ -1,42 +0,0 @@ ---TEST-- -Torture the T_END_HEREDOC rules (heredoc) ---FILE-- - ---EXPECTF-- -Notice: Undefined variable: ENDOFHEREDOC in %s on line %d -ENDOFHEREDOC ; - ENDOFHEREDOC; -ENDOFHEREDOC - ENDOFHEREDOC -; - -Notice: Undefined variable: ENDOFHEREDOC in %s on line %d -ENDOFHEREDOC ; - ENDOFHEREDOC; -ENDOFHEREDOC - ENDOFHEREDOC -; diff --git a/Zend/tests/heredoc_010.phpt b/Zend/tests/heredoc_010.phpt deleted file mode 100644 index 5aa0433bcff7a..0000000000000 --- a/Zend/tests/heredoc_010.phpt +++ /dev/null @@ -1,32 +0,0 @@ ---TEST-- -Torture the T_END_HEREDOC rules with variable expansions (heredoc) ---FILE-- - ---EXPECT-- -ENDOFHEREDOC -ENDOFHEREDOC -ENDOFHEREDOC -ENDOFHEREDOC -ENDOFHEREDOC -ENDOFHEREDOC diff --git a/Zend/tests/heredoc_017.phpt b/Zend/tests/heredoc_017.phpt deleted file mode 100644 index e0ffddf05f302..0000000000000 --- a/Zend/tests/heredoc_017.phpt +++ /dev/null @@ -1,17 +0,0 @@ ---TEST-- -Testinh heredoc syntax ---FILE-- - ---EXPECT-- -bool(true) diff --git a/Zend/tests/heredoc_018.phpt b/Zend/tests/heredoc_018.phpt deleted file mode 100644 index c10e9c1c4e296..0000000000000 --- a/Zend/tests/heredoc_018.phpt +++ /dev/null @@ -1,17 +0,0 @@ ---TEST-- -Testing heredoc with tabs before identifier ---FILE-- - ---EXPECT-- -bool(true) diff --git a/Zend/tests/nowdoc_009.phpt b/Zend/tests/nowdoc_009.phpt deleted file mode 100644 index ec8b78f010c8f..0000000000000 --- a/Zend/tests/nowdoc_009.phpt +++ /dev/null @@ -1,40 +0,0 @@ ---TEST-- -Torture the T_END_NOWDOC rules (nowdoc) ---FILE-- - ---EXPECT-- -ENDOFNOWDOC ; - ENDOFNOWDOC; -ENDOFNOWDOC - ENDOFNOWDOC -$ENDOFNOWDOC; -ENDOFNOWDOC ; - ENDOFNOWDOC; -ENDOFNOWDOC - ENDOFNOWDOC -$ENDOFNOWDOC; - diff --git a/Zend/tests/nowdoc_010.phpt b/Zend/tests/nowdoc_010.phpt deleted file mode 100644 index 6f288151ce937..0000000000000 --- a/Zend/tests/nowdoc_010.phpt +++ /dev/null @@ -1,33 +0,0 @@ ---TEST-- -Torture the T_END_NOWDOC rules with variable expansions (nowdoc) ---FILE-- - ---EXPECT-- -{$fooledYou}ENDOFNOWDOC{$fooledYou} -ENDOFNOWDOC{$fooledYou} -{$fooledYou}ENDOFNOWDOC -{$fooledYou}ENDOFNOWDOC{$fooledYou} -ENDOFNOWDOC{$fooledYou} -{$fooledYou}ENDOFNOWDOC - From 6518b64066e7e506fb0b53565896504fca8dda42 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 27 Sep 2017 13:02:29 +0100 Subject: [PATCH 08/54] Fix yet another bug --- Zend/tests/flexible-nowdoc-error6.phpt | 8 +++++++ Zend/tests/flexible-nowdoc-error7.phpt | 9 ++++++++ Zend/zend_language_scanner.c | 31 +++++++++++++++----------- Zend/zend_language_scanner.l | 7 +++++- 4 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 Zend/tests/flexible-nowdoc-error6.phpt create mode 100644 Zend/tests/flexible-nowdoc-error7.phpt diff --git a/Zend/tests/flexible-nowdoc-error6.phpt b/Zend/tests/flexible-nowdoc-error6.phpt new file mode 100644 index 0000000000000..4501cb5841bb2 --- /dev/null +++ b/Zend/tests/flexible-nowdoc-error6.phpt @@ -0,0 +1,8 @@ +--TEST-- +Flexible nowdoc syntax error 6: no ending token on 0 length body +--FILE-- + YYLIMIT) { RETURN_TOKEN(END); @@ -7443,12 +7443,17 @@ int start_line = CG(zend_lineno); case '\n': indentation = spacing = 0; - while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { spacing |= 1 << (*YYCURSOR == '\t'); ++YYCURSOR; ++indentation; } + if (YYCURSOR == YYLIMIT) { + CG(increment_lineno) = 1; + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; @@ -7495,7 +7500,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7456 "Zend/zend_language_scanner.c" +#line 7461 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7615,7 +7620,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7576 "Zend/zend_language_scanner.c" +#line 7581 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7640,7 +7645,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7601 "Zend/zend_language_scanner.c" +#line 7606 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7651,7 +7656,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7612 "Zend/zend_language_scanner.c" +#line 7617 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7669,7 +7674,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7630 "Zend/zend_language_scanner.c" +#line 7635 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7682,13 +7687,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7644 "Zend/zend_language_scanner.c" +#line 7649 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2543 "Zend/zend_language_scanner.l" +#line 2548 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7697,7 +7702,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7659 "Zend/zend_language_scanner.c" +#line 7664 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7737,7 +7742,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7700 "Zend/zend_language_scanner.c" +#line 7705 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7782,7 +7787,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7745 "Zend/zend_language_scanner.c" +#line 7750 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7805,7 +7810,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2552 "Zend/zend_language_scanner.l" +#line 2557 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index e84281a1416f9..14991bdc96673 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2576,12 +2576,17 @@ heredoc_scan_done: case '\n': indentation = spacing = 0; - while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { spacing |= 1 << (*YYCURSOR == '\t'); ++YYCURSOR; ++indentation; } + if (YYCURSOR == YYLIMIT) { + CG(increment_lineno) = 1; + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { YYCTYPE *end = YYCURSOR + heredoc_label->length; From 0fce83f3ee8c5c316bd85cd27bbb95b81f3cc6cf Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 27 Sep 2017 13:16:08 +0100 Subject: [PATCH 09/54] Only consider literal spacing as indentation --- Zend/tests/flexible-heredoc-error8.phpt | 10 + Zend/zend_language_scanner.c | 710 ++++++++++++------------ Zend/zend_language_scanner.l | 14 +- 3 files changed, 378 insertions(+), 356 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-error8.phpt diff --git a/Zend/tests/flexible-heredoc-error8.phpt b/Zend/tests/flexible-heredoc-error8.phpt new file mode 100644 index 0000000000000..fa025ea1f208f --- /dev/null +++ b/Zend/tests/flexible-heredoc-error8.phpt @@ -0,0 +1,10 @@ +--TEST-- +Flexible heredoc syntax error 8: don't interpret \t as indentation +--FILE-- + YYLIMIT) { RETURN_TOKEN(END); @@ -1287,7 +1289,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1259 "Zend/zend_language_scanner.c" +#line 1261 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; @@ -1304,7 +1306,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1843 "Zend/zend_language_scanner.l" +#line 1845 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1316,13 +1318,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1285 "Zend/zend_language_scanner.c" +#line 1287 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1830 "Zend/zend_language_scanner.l" +#line 1832 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1330,7 +1332,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1296 "Zend/zend_language_scanner.c" +#line 1298 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1361,7 +1363,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1838 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1370,7 +1372,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1333 "Zend/zend_language_scanner.c" +#line 1335 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1440,7 +1442,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2344 "Zend/zend_language_scanner.l" +#line 2346 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1485,7 +1487,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1444 "Zend/zend_language_scanner.c" +#line 1446 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1496,12 +1498,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2288 "Zend/zend_language_scanner.l" +#line 2290 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1460 "Zend/zend_language_scanner.c" +#line 1462 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; @@ -1511,14 +1513,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2275 "Zend/zend_language_scanner.l" +#line 2277 "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 1477 "Zend/zend_language_scanner.c" +#line 1479 "Zend/zend_language_scanner.c" yy27: YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1534,22 +1536,22 @@ int start_line = CG(zend_lineno); yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1919 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1498 "Zend/zend_language_scanner.c" +#line 1500 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1639 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1509 "Zend/zend_language_scanner.c" +#line 1511 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1563,13 +1565,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1910 "Zend/zend_language_scanner.l" +#line 1912 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1530 "Zend/zend_language_scanner.c" +#line 1532 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1587,13 +1589,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1903 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1555 "Zend/zend_language_scanner.c" +#line 1557 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1661,7 +1663,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2294 "Zend/zend_language_scanner.l" +#line 2296 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1714,7 +1716,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1672 "Zend/zend_language_scanner.c" +#line 1674 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1725,12 +1727,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2283 "Zend/zend_language_scanner.l" +#line 2285 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1688 "Zend/zend_language_scanner.c" +#line 1690 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1740,14 +1742,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2275 "Zend/zend_language_scanner.l" +#line 2277 "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 1705 "Zend/zend_language_scanner.c" +#line 1707 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1763,22 +1765,22 @@ int start_line = CG(zend_lineno); yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1919 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1726 "Zend/zend_language_scanner.c" +#line 1728 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1639 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1737 "Zend/zend_language_scanner.c" +#line 1739 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1792,13 +1794,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1910 "Zend/zend_language_scanner.l" +#line 1912 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1758 "Zend/zend_language_scanner.c" +#line 1760 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1816,13 +1818,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1903 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1783 "Zend/zend_language_scanner.c" +#line 1785 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1833,7 +1835,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2261 "Zend/zend_language_scanner.l" +#line 2263 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1846,7 +1848,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1807 "Zend/zend_language_scanner.c" +#line 1809 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1908,7 +1910,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2386 "Zend/zend_language_scanner.l" +#line 2388 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0; @@ -1983,14 +1985,18 @@ int start_line = CG(zend_lineno); heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng - indentation); - zend_scan_escape_string(zendlval, yytext, yyleng - indentation, 0); + if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing)) { + zend_string *copy = Z_STR_P(zendlval); - strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing); + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1951 "Zend/zend_language_scanner.c" +#line 1957 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2005,14 +2011,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2275 "Zend/zend_language_scanner.l" +#line 2277 "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 1973 "Zend/zend_language_scanner.c" +#line 1979 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2028,22 +2034,22 @@ int start_line = CG(zend_lineno); yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1919 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1994 "Zend/zend_language_scanner.c" +#line 2000 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1639 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2005 "Zend/zend_language_scanner.c" +#line 2011 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2057,13 +2063,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1910 "Zend/zend_language_scanner.l" +#line 1912 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2026 "Zend/zend_language_scanner.c" +#line 2032 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2081,13 +2087,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1901 "Zend/zend_language_scanner.l" +#line 1903 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2051 "Zend/zend_language_scanner.c" +#line 2057 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2269,12 +2275,12 @@ int start_line = CG(zend_lineno); yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1940 "Zend/zend_language_scanner.l" +#line 1942 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2238 "Zend/zend_language_scanner.c" +#line 2244 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2506,11 +2512,11 @@ int start_line = CG(zend_lineno); yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1626 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2474 "Zend/zend_language_scanner.c" +#line 2480 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2519,12 +2525,12 @@ int start_line = CG(zend_lineno); yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1341 "Zend/zend_language_scanner.l" +#line 1343 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2488 "Zend/zend_language_scanner.c" +#line 2494 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2535,11 +2541,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1368 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2503 "Zend/zend_language_scanner.c" +#line 2509 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2768,18 +2774,18 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2737 "Zend/zend_language_scanner.c" +#line 2743 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2787,7 +2793,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2751 "Zend/zend_language_scanner.c" +#line 2757 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2815,7 +2821,7 @@ int start_line = CG(zend_lineno); yy137: YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1698 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2858,7 +2864,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2822 "Zend/zend_language_scanner.c" +#line 2828 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2886,7 +2892,7 @@ int start_line = CG(zend_lineno); yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1946 "Zend/zend_language_scanner.l" +#line 1948 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2915,14 +2921,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2879 "Zend/zend_language_scanner.c" +#line 2885 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2017 "Zend/zend_language_scanner.l" +#line 2019 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2990,14 +2996,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2954 "Zend/zend_language_scanner.c" +#line 2960 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2086 "Zend/zend_language_scanner.l" +#line 2088 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3038,24 +3044,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3002 "Zend/zend_language_scanner.c" +#line 3008 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2255 "Zend/zend_language_scanner.l" +#line 2257 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3013 "Zend/zend_language_scanner.c" +#line 3019 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2548 "Zend/zend_language_scanner.l" +#line 2554 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3064,7 +3070,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3028 "Zend/zend_language_scanner.c" +#line 3034 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3091,7 +3097,7 @@ int start_line = CG(zend_lineno); yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1788 "Zend/zend_language_scanner.l" +#line 1790 "Zend/zend_language_scanner.l" { const char *end; @@ -3100,7 +3106,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3064 "Zend/zend_language_scanner.c" +#line 3070 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3196,7 +3202,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" +#line 1670 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3224,7 +3230,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3188 "Zend/zend_language_scanner.c" +#line 3194 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3236,7 +3242,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1739 "Zend/zend_language_scanner.l" +#line 1741 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3264,7 +3270,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3228 "Zend/zend_language_scanner.c" +#line 3234 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3289,12 +3295,12 @@ int start_line = CG(zend_lineno); yy172: YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1919 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3258 "Zend/zend_language_scanner.c" +#line 3264 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3308,11 +3314,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1614 "Zend/zend_language_scanner.l" +#line 1616 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3276 "Zend/zend_language_scanner.c" +#line 3282 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3321,71 +3327,71 @@ int start_line = CG(zend_lineno); } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1606 "Zend/zend_language_scanner.l" +#line 1608 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3289 "Zend/zend_language_scanner.c" +#line 3295 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1594 "Zend/zend_language_scanner.l" +#line 1596 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3299 "Zend/zend_language_scanner.c" +#line 3305 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1598 "Zend/zend_language_scanner.l" +#line 1600 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3309 "Zend/zend_language_scanner.c" +#line 3315 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1590 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3319 "Zend/zend_language_scanner.c" +#line 3325 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3329 "Zend/zend_language_scanner.c" +#line 3335 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1586 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3339 "Zend/zend_language_scanner.c" +#line 3345 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3349 "Zend/zend_language_scanner.c" +#line 3355 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3394,7 +3400,7 @@ int start_line = CG(zend_lineno); yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1975 "Zend/zend_language_scanner.l" +#line 1977 "Zend/zend_language_scanner.l" { int doc_com; @@ -3433,7 +3439,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3391 "Zend/zend_language_scanner.c" +#line 3397 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3443,11 +3449,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1568 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3405 "Zend/zend_language_scanner.c" +#line 3411 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3471,62 +3477,62 @@ int start_line = CG(zend_lineno); if ((yych = *YYCURSOR) == '=') goto yy202; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1560 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3433 "Zend/zend_language_scanner.c" +#line 3439 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" +#line 1556 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3443 "Zend/zend_language_scanner.c" +#line 3449 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3453 "Zend/zend_language_scanner.c" +#line 3459 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1622 "Zend/zend_language_scanner.l" +#line 1624 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3464 "Zend/zend_language_scanner.c" +#line 3470 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1544 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3474 "Zend/zend_language_scanner.c" +#line 3480 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1582 "Zend/zend_language_scanner.l" +#line 1584 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3484 "Zend/zend_language_scanner.c" +#line 3490 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3537,53 +3543,53 @@ int start_line = CG(zend_lineno); yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1618 "Zend/zend_language_scanner.l" +#line 1620 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3499 "Zend/zend_language_scanner.c" +#line 3505 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1540 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3510 "Zend/zend_language_scanner.c" +#line 3516 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" +#line 1532 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3521 "Zend/zend_language_scanner.c" +#line 3527 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1536 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3531 "Zend/zend_language_scanner.c" +#line 3537 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1578 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3541 "Zend/zend_language_scanner.c" +#line 3547 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3688,7 +3694,7 @@ int start_line = CG(zend_lineno); yy230: YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2128 "Zend/zend_language_scanner.l" +#line 2130 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -3814,7 +3820,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3772 "Zend/zend_language_scanner.c" +#line 3778 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3854,31 +3860,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1524 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3816 "Zend/zend_language_scanner.c" +#line 3822 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" +#line 1548 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3826 "Zend/zend_language_scanner.c" +#line 3832 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3836 "Zend/zend_language_scanner.c" +#line 3842 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3897,42 +3903,42 @@ int start_line = CG(zend_lineno); } YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" +#line 1500 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3859 "Zend/zend_language_scanner.c" +#line 3865 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3870 "Zend/zend_language_scanner.c" +#line 3876 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" +#line 1496 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3880 "Zend/zend_language_scanner.c" +#line 3886 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1520 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3890 "Zend/zend_language_scanner.c" +#line 3896 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4061,11 +4067,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1825 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 4023 "Zend/zend_language_scanner.c" +#line 4029 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4085,11 +4091,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1821 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 4047 "Zend/zend_language_scanner.c" +#line 4053 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4114,11 +4120,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1813 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 4076 "Zend/zend_language_scanner.c" +#line 4082 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4153,11 +4159,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1809 "Zend/zend_language_scanner.l" +#line 1811 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 4115 "Zend/zend_language_scanner.c" +#line 4121 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4208,11 +4214,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 1807 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4170 "Zend/zend_language_scanner.c" +#line 4176 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4232,11 +4238,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1817 "Zend/zend_language_scanner.l" +#line 1819 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4194 "Zend/zend_language_scanner.c" +#line 4200 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4266,11 +4272,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1801 "Zend/zend_language_scanner.l" +#line 1803 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4228 "Zend/zend_language_scanner.c" +#line 4234 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4300,11 +4306,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1797 "Zend/zend_language_scanner.l" +#line 1799 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4262 "Zend/zend_language_scanner.c" +#line 4268 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4366,11 +4372,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4328 "Zend/zend_language_scanner.c" +#line 4334 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4390,11 +4396,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4352 "Zend/zend_language_scanner.c" +#line 4358 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4413,11 +4419,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1492 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4375 "Zend/zend_language_scanner.c" +#line 4381 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4589,11 +4595,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4551 "Zend/zend_language_scanner.c" +#line 4557 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4637,11 +4643,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4599 "Zend/zend_language_scanner.c" +#line 4605 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4711,11 +4717,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(381, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4673 "Zend/zend_language_scanner.c" +#line 4679 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4748,11 +4754,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(388, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4710 "Zend/zend_language_scanner.c" +#line 4716 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4790,11 +4796,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(396, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1408 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4752 "Zend/zend_language_scanner.c" +#line 4758 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4835,11 +4841,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1412 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4797 "Zend/zend_language_scanner.c" +#line 4803 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4899,11 +4905,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1416 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4861 "Zend/zend_language_scanner.c" +#line 4867 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4917,11 +4923,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1388 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4879 "Zend/zend_language_scanner.c" +#line 4885 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4941,11 +4947,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1380 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4903 "Zend/zend_language_scanner.c" +#line 4909 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4984,11 +4990,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4946 "Zend/zend_language_scanner.c" +#line 4952 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -4997,7 +5003,7 @@ int start_line = CG(zend_lineno); yy433: YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2008 "Zend/zend_language_scanner.l" +#line 2010 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -5005,17 +5011,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4963 "Zend/zend_language_scanner.c" +#line 4969 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 4973 "Zend/zend_language_scanner.c" +#line 4979 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5046,11 +5052,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5008 "Zend/zend_language_scanner.c" +#line 5014 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5059,21 +5065,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1372 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 5021 "Zend/zend_language_scanner.c" +#line 5027 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1364 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5031 "Zend/zend_language_scanner.c" +#line 5037 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5095,32 +5101,32 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" +#line 1552 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5057 "Zend/zend_language_scanner.c" +#line 5063 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 5067 "Zend/zend_language_scanner.c" +#line 5073 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1336 "Zend/zend_language_scanner.l" +#line 1338 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5078 "Zend/zend_language_scanner.c" +#line 5084 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5165,11 +5171,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5127 "Zend/zend_language_scanner.c" +#line 5133 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5224,11 +5230,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(470, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5186 "Zend/zend_language_scanner.c" +#line 5192 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5258,11 +5264,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" +#line 1480 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5220 "Zend/zend_language_scanner.c" +#line 5226 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5271,11 +5277,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5233 "Zend/zend_language_scanner.c" +#line 5239 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5300,11 +5306,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5262 "Zend/zend_language_scanner.c" +#line 5268 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5328,11 +5334,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1452 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5290 "Zend/zend_language_scanner.c" +#line 5296 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5369,11 +5375,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5331 "Zend/zend_language_scanner.c" +#line 5337 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5413,11 +5419,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5375 "Zend/zend_language_scanner.c" +#line 5381 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5441,11 +5447,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" +#line 1468 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5403 "Zend/zend_language_scanner.c" +#line 5409 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5472,11 +5478,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 1278 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5434 "Zend/zend_language_scanner.c" +#line 5440 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5495,11 +5501,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" +#line 1504 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5457 "Zend/zend_language_scanner.c" +#line 5463 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5508,11 +5514,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1610 "Zend/zend_language_scanner.l" +#line 1612 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5470 "Zend/zend_language_scanner.c" +#line 5476 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5546,11 +5552,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5508 "Zend/zend_language_scanner.c" +#line 5514 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5574,11 +5580,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" +#line 1238 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5536 "Zend/zend_language_scanner.c" +#line 5542 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5587,11 +5593,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" +#line 1222 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5549 "Zend/zend_language_scanner.c" +#line 5555 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5643,11 +5649,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1456 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5605 "Zend/zend_language_scanner.c" +#line 5611 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5701,11 +5707,11 @@ int start_line = CG(zend_lineno); yy549: YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1424 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5663 "Zend/zend_language_scanner.c" +#line 5669 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5734,11 +5740,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1428 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5696 "Zend/zend_language_scanner.c" +#line 5702 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5772,11 +5778,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" +#line 1322 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5734 "Zend/zend_language_scanner.c" +#line 5740 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5826,11 +5832,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5788 "Zend/zend_language_scanner.c" +#line 5794 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5859,11 +5865,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1274 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5821 "Zend/zend_language_scanner.c" +#line 5827 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5907,11 +5913,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5869 "Zend/zend_language_scanner.c" +#line 5875 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5939,11 +5945,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1204 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5901 "Zend/zend_language_scanner.c" +#line 5907 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5962,11 +5968,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1324 "Zend/zend_language_scanner.l" +#line 1326 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5924 "Zend/zend_language_scanner.c" +#line 5930 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5985,11 +5991,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" +#line 1218 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5947 "Zend/zend_language_scanner.c" +#line 5953 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6022,11 +6028,11 @@ int start_line = CG(zend_lineno); yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1200 "Zend/zend_language_scanner.l" +#line 1202 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5984 "Zend/zend_language_scanner.c" +#line 5990 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6086,13 +6092,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1194 "Zend/zend_language_scanner.l" +#line 1196 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6050 "Zend/zend_language_scanner.c" +#line 6056 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6153,11 +6159,11 @@ int start_line = CG(zend_lineno); yy618: YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 6115 "Zend/zend_language_scanner.c" +#line 6121 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6186,11 +6192,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6148 "Zend/zend_language_scanner.c" +#line 6154 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6209,11 +6215,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1190 "Zend/zend_language_scanner.l" +#line 1192 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 6171 "Zend/zend_language_scanner.c" +#line 6177 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6303,11 +6309,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6265 "Zend/zend_language_scanner.c" +#line 6271 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6316,11 +6322,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1186 "Zend/zend_language_scanner.l" +#line 1188 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6278 "Zend/zend_language_scanner.c" +#line 6284 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6345,11 +6351,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1384 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6307 "Zend/zend_language_scanner.c" +#line 6313 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6363,11 +6369,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" +#line 1318 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6325 "Zend/zend_language_scanner.c" +#line 6331 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6413,11 +6419,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6375 "Zend/zend_language_scanner.c" +#line 6381 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6426,11 +6432,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" +#line 1290 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6388 "Zend/zend_language_scanner.c" +#line 6394 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6444,11 +6450,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1208 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6406 "Zend/zend_language_scanner.c" +#line 6412 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6499,11 +6505,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1182 "Zend/zend_language_scanner.l" +#line 1184 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6461 "Zend/zend_language_scanner.c" +#line 6467 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6527,11 +6533,11 @@ int start_line = CG(zend_lineno); yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6489 "Zend/zend_language_scanner.c" +#line 6495 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6555,11 +6561,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6517 "Zend/zend_language_scanner.c" +#line 6523 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6593,11 +6599,11 @@ int start_line = CG(zend_lineno); yy684: YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6555 "Zend/zend_language_scanner.c" +#line 6561 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6611,11 +6617,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1212 "Zend/zend_language_scanner.l" +#line 1214 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6573 "Zend/zend_language_scanner.c" +#line 6579 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6646,11 +6652,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6608 "Zend/zend_language_scanner.c" +#line 6614 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6659,11 +6665,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1178 "Zend/zend_language_scanner.l" +#line 1180 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6621 "Zend/zend_language_scanner.c" +#line 6627 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6698,11 +6704,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(700, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1294 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6660 "Zend/zend_language_scanner.c" +#line 6666 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6726,11 +6732,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6688 "Zend/zend_language_scanner.c" +#line 6694 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6810,11 +6816,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6772 "Zend/zend_language_scanner.c" +#line 6778 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6823,11 +6829,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1174 "Zend/zend_language_scanner.l" +#line 1176 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6785 "Zend/zend_language_scanner.c" +#line 6791 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6841,11 +6847,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1420 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6803 "Zend/zend_language_scanner.c" +#line 6809 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6914,11 +6920,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6876 "Zend/zend_language_scanner.c" +#line 6882 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6947,11 +6953,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6909 "Zend/zend_language_scanner.c" +#line 6915 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6960,11 +6966,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" +#line 1230 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6922 "Zend/zend_language_scanner.c" +#line 6928 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -6993,11 +6999,11 @@ int start_line = CG(zend_lineno); yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6955 "Zend/zend_language_scanner.c" +#line 6961 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7021,11 +7027,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6983 "Zend/zend_language_scanner.c" +#line 6989 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7059,11 +7065,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" +#line 1270 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 7021 "Zend/zend_language_scanner.c" +#line 7027 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7082,11 +7088,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" +#line 1460 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 7044 "Zend/zend_language_scanner.c" +#line 7050 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7115,11 +7121,11 @@ int start_line = CG(zend_lineno); yy764: YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" +#line 1234 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 7077 "Zend/zend_language_scanner.c" +#line 7083 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7133,11 +7139,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(767, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" +#line 1226 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 7095 "Zend/zend_language_scanner.c" +#line 7101 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7151,11 +7157,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 7113 "Zend/zend_language_scanner.c" +#line 7119 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7228,11 +7234,11 @@ int start_line = CG(zend_lineno); yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1341 "Zend/zend_language_scanner.l" +#line 1343 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 7191 "Zend/zend_language_scanner.c" +#line 7197 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7240,13 +7246,13 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1356 "Zend/zend_language_scanner.l" +#line 1358 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7205 "Zend/zend_language_scanner.c" +#line 7211 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7255,12 +7261,12 @@ int start_line = CG(zend_lineno); yy778: YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7220 "Zend/zend_language_scanner.c" +#line 7226 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7281,11 +7287,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1348 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7245 "Zend/zend_language_scanner.c" +#line 7251 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7370,14 +7376,14 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7337 "Zend/zend_language_scanner.c" +#line 7343 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7404,14 +7410,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" +#line 1654 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7372 "Zend/zend_language_scanner.c" +#line 7378 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7422,7 +7428,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2469 "Zend/zend_language_scanner.l" +#line 2475 "Zend/zend_language_scanner.l" { int newline = 0, indentation, spacing; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7500,7 +7506,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7461 "Zend/zend_language_scanner.c" +#line 7467 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7604,7 +7610,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1767 "Zend/zend_language_scanner.l" +#line 1769 "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; @@ -7620,7 +7626,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7581 "Zend/zend_language_scanner.c" +#line 7587 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7640,23 +7646,23 @@ int start_line = CG(zend_lineno); yy806: YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" +#line 1929 "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 7606 "Zend/zend_language_scanner.c" +#line 7612 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1924 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7617 "Zend/zend_language_scanner.c" +#line 7623 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7666,7 +7672,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1932 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7674,7 +7680,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7635 "Zend/zend_language_scanner.c" +#line 7641 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7683,17 +7689,17 @@ int start_line = CG(zend_lineno); yy813: YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1940 "Zend/zend_language_scanner.l" +#line 1942 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7649 "Zend/zend_language_scanner.c" +#line 7655 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2548 "Zend/zend_language_scanner.l" +#line 2554 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7702,7 +7708,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7664 "Zend/zend_language_scanner.c" +#line 7670 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7738,11 +7744,11 @@ int start_line = CG(zend_lineno); yy820: YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1919 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7705 "Zend/zend_language_scanner.c" +#line 7711 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7782,12 +7788,12 @@ int start_line = CG(zend_lineno); yy828: YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1783 "Zend/zend_language_scanner.l" +#line 1785 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7750 "Zend/zend_language_scanner.c" +#line 7756 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7810,7 +7816,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2557 "Zend/zend_language_scanner.l" +#line 2563 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 14991bdc96673..33ac23d7b5c20 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1112,7 +1112,7 @@ skip_escape_conversion: goto emit_token; \ } while (0) -static void strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) +static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { int len = Z_STRLEN_P(zendlval), new_len = len; char *copy = Z_STRVAL_P(zendlval); @@ -1154,11 +1154,13 @@ skip: Z_STRVAL_P(zendlval)[new_len - newline] = '\0'; Z_STRLEN_P(zendlval) = new_len - newline; - return; + return 1; error: zval_dtor(zendlval); ZVAL_UNDEF(zendlval); + + return 0; } #define RETURN_TOKEN(token) return emit_token(token, start_line); @@ -2547,10 +2549,14 @@ double_quotes_scan_done: heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng - indentation); - zend_scan_escape_string(zendlval, yytext, yyleng - indentation, 0); + if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing)) { + zend_string *copy = Z_STR_P(zendlval); - strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing); + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } From 3e4f7027b8459e7837f98fefcb4e06891bd87d54 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 27 Sep 2017 14:14:15 +0100 Subject: [PATCH 10/54] Fix line numebrs... --- Zend/zend_language_scanner.c | 317 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 1 + 2 files changed, 160 insertions(+), 158 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index a37f9d1084ce6..dcd6d887a93d0 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1955,6 +1955,7 @@ int start_line = CG(zend_lineno); indentation = heredoc_label->indentation; + CG(increment_lineno) = 1; BEGIN(ST_END_HEREDOC); goto heredoc_scan_done; @@ -1996,7 +1997,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1957 "Zend/zend_language_scanner.c" +#line 1958 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2018,7 +2019,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1979 "Zend/zend_language_scanner.c" +#line 1980 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2038,7 +2039,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2000 "Zend/zend_language_scanner.c" +#line 2001 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2049,7 +2050,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2011 "Zend/zend_language_scanner.c" +#line 2012 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2069,7 +2070,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2032 "Zend/zend_language_scanner.c" +#line 2033 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2093,7 +2094,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2057 "Zend/zend_language_scanner.c" +#line 2058 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2280,7 +2281,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2244 "Zend/zend_language_scanner.c" +#line 2245 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2516,7 +2517,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2480 "Zend/zend_language_scanner.c" +#line 2481 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2530,7 +2531,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2494 "Zend/zend_language_scanner.c" +#line 2495 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2545,7 +2546,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2509 "Zend/zend_language_scanner.c" +#line 2510 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2779,7 +2780,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2743 "Zend/zend_language_scanner.c" +#line 2744 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; @@ -2793,7 +2794,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2757 "Zend/zend_language_scanner.c" +#line 2758 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2864,7 +2865,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2828 "Zend/zend_language_scanner.c" +#line 2829 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2921,7 +2922,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2885 "Zend/zend_language_scanner.c" +#line 2886 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; @@ -2996,7 +2997,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2960 "Zend/zend_language_scanner.c" +#line 2961 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; @@ -3044,7 +3045,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3008 "Zend/zend_language_scanner.c" +#line 3009 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; @@ -3055,13 +3056,13 @@ int start_line = CG(zend_lineno); BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3019 "Zend/zend_language_scanner.c" +#line 3020 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2554 "Zend/zend_language_scanner.l" +#line 2555 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3070,7 +3071,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3034 "Zend/zend_language_scanner.c" +#line 3035 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3106,7 +3107,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3070 "Zend/zend_language_scanner.c" +#line 3071 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3230,7 +3231,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3194 "Zend/zend_language_scanner.c" +#line 3195 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3270,7 +3271,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3234 "Zend/zend_language_scanner.c" +#line 3235 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3300,7 +3301,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3264 "Zend/zend_language_scanner.c" +#line 3265 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3318,7 +3319,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3282 "Zend/zend_language_scanner.c" +#line 3283 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3331,7 +3332,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3295 "Zend/zend_language_scanner.c" +#line 3296 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3341,7 +3342,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3305 "Zend/zend_language_scanner.c" +#line 3306 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3351,7 +3352,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3315 "Zend/zend_language_scanner.c" +#line 3316 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3361,7 +3362,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 3325 "Zend/zend_language_scanner.c" +#line 3326 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3371,7 +3372,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3335 "Zend/zend_language_scanner.c" +#line 3336 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3381,7 +3382,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3345 "Zend/zend_language_scanner.c" +#line 3346 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3391,7 +3392,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3355 "Zend/zend_language_scanner.c" +#line 3356 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3439,7 +3440,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3397 "Zend/zend_language_scanner.c" +#line 3398 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3453,7 +3454,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3411 "Zend/zend_language_scanner.c" +#line 3412 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3481,7 +3482,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3439 "Zend/zend_language_scanner.c" +#line 3440 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; @@ -3491,7 +3492,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3449 "Zend/zend_language_scanner.c" +#line 3450 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; @@ -3501,7 +3502,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 3459 "Zend/zend_language_scanner.c" +#line 3460 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; @@ -3512,7 +3513,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3470 "Zend/zend_language_scanner.c" +#line 3471 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3522,7 +3523,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3480 "Zend/zend_language_scanner.c" +#line 3481 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; @@ -3532,7 +3533,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 3490 "Zend/zend_language_scanner.c" +#line 3491 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3547,7 +3548,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3505 "Zend/zend_language_scanner.c" +#line 3506 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3558,7 +3559,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3516 "Zend/zend_language_scanner.c" +#line 3517 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3569,7 +3570,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3527 "Zend/zend_language_scanner.c" +#line 3528 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3579,7 +3580,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 3537 "Zend/zend_language_scanner.c" +#line 3538 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3589,7 +3590,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 3547 "Zend/zend_language_scanner.c" +#line 3548 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3820,7 +3821,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3778 "Zend/zend_language_scanner.c" +#line 3779 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3864,7 +3865,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3822 "Zend/zend_language_scanner.c" +#line 3823 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3874,7 +3875,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3832 "Zend/zend_language_scanner.c" +#line 3833 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; @@ -3884,7 +3885,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3842 "Zend/zend_language_scanner.c" +#line 3843 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3907,7 +3908,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 3865 "Zend/zend_language_scanner.c" +#line 3866 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3918,7 +3919,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3876 "Zend/zend_language_scanner.c" +#line 3877 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3928,7 +3929,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3886 "Zend/zend_language_scanner.c" +#line 3887 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3938,7 +3939,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3896 "Zend/zend_language_scanner.c" +#line 3897 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4071,7 +4072,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 4029 "Zend/zend_language_scanner.c" +#line 4030 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4095,7 +4096,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 4053 "Zend/zend_language_scanner.c" +#line 4054 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4124,7 +4125,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 4082 "Zend/zend_language_scanner.c" +#line 4083 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4163,7 +4164,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 4121 "Zend/zend_language_scanner.c" +#line 4122 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4218,7 +4219,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 4176 "Zend/zend_language_scanner.c" +#line 4177 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4242,7 +4243,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 4200 "Zend/zend_language_scanner.c" +#line 4201 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4276,7 +4277,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 4234 "Zend/zend_language_scanner.c" +#line 4235 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4310,7 +4311,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 4268 "Zend/zend_language_scanner.c" +#line 4269 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4376,7 +4377,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4334 "Zend/zend_language_scanner.c" +#line 4335 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4400,7 +4401,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4358 "Zend/zend_language_scanner.c" +#line 4359 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4423,7 +4424,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 4381 "Zend/zend_language_scanner.c" +#line 4382 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4599,7 +4600,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 4557 "Zend/zend_language_scanner.c" +#line 4558 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4647,7 +4648,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4605 "Zend/zend_language_scanner.c" +#line 4606 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4721,7 +4722,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 4679 "Zend/zend_language_scanner.c" +#line 4680 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4758,7 +4759,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4716 "Zend/zend_language_scanner.c" +#line 4717 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4800,7 +4801,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4758 "Zend/zend_language_scanner.c" +#line 4759 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4845,7 +4846,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 4803 "Zend/zend_language_scanner.c" +#line 4804 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4909,7 +4910,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 4867 "Zend/zend_language_scanner.c" +#line 4868 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4927,7 +4928,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4885 "Zend/zend_language_scanner.c" +#line 4886 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4951,7 +4952,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4909 "Zend/zend_language_scanner.c" +#line 4910 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4994,7 +4995,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 4952 "Zend/zend_language_scanner.c" +#line 4953 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5011,7 +5012,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4969 "Zend/zend_language_scanner.c" +#line 4970 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; @@ -5021,7 +5022,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 4979 "Zend/zend_language_scanner.c" +#line 4980 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5056,7 +5057,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5014 "Zend/zend_language_scanner.c" +#line 5015 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5069,7 +5070,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 5027 "Zend/zend_language_scanner.c" +#line 5028 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -5079,7 +5080,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5037 "Zend/zend_language_scanner.c" +#line 5038 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5105,7 +5106,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5063 "Zend/zend_language_scanner.c" +#line 5064 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -5115,7 +5116,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 5073 "Zend/zend_language_scanner.c" +#line 5074 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; @@ -5126,7 +5127,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5084 "Zend/zend_language_scanner.c" +#line 5085 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5175,7 +5176,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5133 "Zend/zend_language_scanner.c" +#line 5134 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5234,7 +5235,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 5192 "Zend/zend_language_scanner.c" +#line 5193 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5268,7 +5269,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5226 "Zend/zend_language_scanner.c" +#line 5227 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5281,7 +5282,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5239 "Zend/zend_language_scanner.c" +#line 5240 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5310,7 +5311,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5268 "Zend/zend_language_scanner.c" +#line 5269 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5338,7 +5339,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5296 "Zend/zend_language_scanner.c" +#line 5297 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5379,7 +5380,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5337 "Zend/zend_language_scanner.c" +#line 5338 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5423,7 +5424,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5381 "Zend/zend_language_scanner.c" +#line 5382 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5451,7 +5452,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5409 "Zend/zend_language_scanner.c" +#line 5410 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5482,7 +5483,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 5440 "Zend/zend_language_scanner.c" +#line 5441 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5505,7 +5506,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5463 "Zend/zend_language_scanner.c" +#line 5464 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5518,7 +5519,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5476 "Zend/zend_language_scanner.c" +#line 5477 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5556,7 +5557,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5514 "Zend/zend_language_scanner.c" +#line 5515 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5584,7 +5585,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5542 "Zend/zend_language_scanner.c" +#line 5543 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5597,7 +5598,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 5555 "Zend/zend_language_scanner.c" +#line 5556 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5653,7 +5654,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5611 "Zend/zend_language_scanner.c" +#line 5612 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5711,7 +5712,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5669 "Zend/zend_language_scanner.c" +#line 5670 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5744,7 +5745,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5702 "Zend/zend_language_scanner.c" +#line 5703 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5782,7 +5783,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 5740 "Zend/zend_language_scanner.c" +#line 5741 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5836,7 +5837,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 5794 "Zend/zend_language_scanner.c" +#line 5795 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5869,7 +5870,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 5827 "Zend/zend_language_scanner.c" +#line 5828 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5917,7 +5918,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5875 "Zend/zend_language_scanner.c" +#line 5876 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5949,7 +5950,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 5907 "Zend/zend_language_scanner.c" +#line 5908 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5972,7 +5973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5930 "Zend/zend_language_scanner.c" +#line 5931 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5995,7 +5996,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5953 "Zend/zend_language_scanner.c" +#line 5954 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6032,7 +6033,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5990 "Zend/zend_language_scanner.c" +#line 5991 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6098,7 +6099,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6056 "Zend/zend_language_scanner.c" +#line 6057 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6163,7 +6164,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6121 "Zend/zend_language_scanner.c" +#line 6122 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6196,7 +6197,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6154 "Zend/zend_language_scanner.c" +#line 6155 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6219,7 +6220,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6177 "Zend/zend_language_scanner.c" +#line 6178 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6313,7 +6314,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6271 "Zend/zend_language_scanner.c" +#line 6272 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6326,7 +6327,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 6284 "Zend/zend_language_scanner.c" +#line 6285 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6355,7 +6356,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 6313 "Zend/zend_language_scanner.c" +#line 6314 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6373,7 +6374,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 6331 "Zend/zend_language_scanner.c" +#line 6332 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6423,7 +6424,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6381 "Zend/zend_language_scanner.c" +#line 6382 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6436,7 +6437,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 6394 "Zend/zend_language_scanner.c" +#line 6395 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6454,7 +6455,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 6412 "Zend/zend_language_scanner.c" +#line 6413 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6509,7 +6510,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6467 "Zend/zend_language_scanner.c" +#line 6468 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6537,7 +6538,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 6495 "Zend/zend_language_scanner.c" +#line 6496 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6565,7 +6566,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6523 "Zend/zend_language_scanner.c" +#line 6524 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6603,7 +6604,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 6561 "Zend/zend_language_scanner.c" +#line 6562 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6621,7 +6622,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6579 "Zend/zend_language_scanner.c" +#line 6580 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6656,7 +6657,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 6614 "Zend/zend_language_scanner.c" +#line 6615 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6669,7 +6670,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6627 "Zend/zend_language_scanner.c" +#line 6628 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6708,7 +6709,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6666 "Zend/zend_language_scanner.c" +#line 6667 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6736,7 +6737,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6694 "Zend/zend_language_scanner.c" +#line 6695 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6820,7 +6821,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6778 "Zend/zend_language_scanner.c" +#line 6779 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6833,7 +6834,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6791 "Zend/zend_language_scanner.c" +#line 6792 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6851,7 +6852,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 6809 "Zend/zend_language_scanner.c" +#line 6810 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6924,7 +6925,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6882 "Zend/zend_language_scanner.c" +#line 6883 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6957,7 +6958,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6915 "Zend/zend_language_scanner.c" +#line 6916 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6970,7 +6971,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 6928 "Zend/zend_language_scanner.c" +#line 6929 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7003,7 +7004,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6961 "Zend/zend_language_scanner.c" +#line 6962 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7031,7 +7032,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6989 "Zend/zend_language_scanner.c" +#line 6990 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7069,7 +7070,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7027 "Zend/zend_language_scanner.c" +#line 7028 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7092,7 +7093,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 7050 "Zend/zend_language_scanner.c" +#line 7051 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7125,7 +7126,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 7083 "Zend/zend_language_scanner.c" +#line 7084 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7143,7 +7144,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 7101 "Zend/zend_language_scanner.c" +#line 7102 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7161,7 +7162,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 7119 "Zend/zend_language_scanner.c" +#line 7120 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7238,7 +7239,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7197 "Zend/zend_language_scanner.c" +#line 7198 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7252,7 +7253,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7211 "Zend/zend_language_scanner.c" +#line 7212 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7266,7 +7267,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7226 "Zend/zend_language_scanner.c" +#line 7227 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7291,7 +7292,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7251 "Zend/zend_language_scanner.c" +#line 7252 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7383,7 +7384,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7343 "Zend/zend_language_scanner.c" +#line 7344 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7417,7 +7418,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7378 "Zend/zend_language_scanner.c" +#line 7379 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7428,7 +7429,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2475 "Zend/zend_language_scanner.l" +#line 2476 "Zend/zend_language_scanner.l" { int newline = 0, indentation, spacing; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7506,7 +7507,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7467 "Zend/zend_language_scanner.c" +#line 7468 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7626,7 +7627,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7587 "Zend/zend_language_scanner.c" +#line 7588 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7651,7 +7652,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7612 "Zend/zend_language_scanner.c" +#line 7613 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7662,7 +7663,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7623 "Zend/zend_language_scanner.c" +#line 7624 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7680,7 +7681,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7641 "Zend/zend_language_scanner.c" +#line 7642 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7693,13 +7694,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7655 "Zend/zend_language_scanner.c" +#line 7656 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2554 "Zend/zend_language_scanner.l" +#line 2555 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7708,7 +7709,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7670 "Zend/zend_language_scanner.c" +#line 7671 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7748,7 +7749,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7711 "Zend/zend_language_scanner.c" +#line 7712 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7793,7 +7794,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7756 "Zend/zend_language_scanner.c" +#line 7757 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7816,7 +7817,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2563 "Zend/zend_language_scanner.l" +#line 2564 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 33ac23d7b5c20..11e1a8f317711 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2519,6 +2519,7 @@ double_quotes_scan_done: indentation = heredoc_label->indentation; + CG(increment_lineno) = 1; BEGIN(ST_END_HEREDOC); goto heredoc_scan_done; From a5619a99abf4d77111439876c2ca78c5e165a3b1 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 15 Nov 2017 21:43:00 +0000 Subject: [PATCH 11/54] Some touchups --- Zend/tests/flexible-nowdoc-error8.phpt | 9 + Zend/zend_language_scanner.c | 733 +++++++++++++------------ Zend/zend_language_scanner.h | 2 +- Zend/zend_language_scanner.l | 37 +- 4 files changed, 404 insertions(+), 377 deletions(-) create mode 100644 Zend/tests/flexible-nowdoc-error8.phpt diff --git a/Zend/tests/flexible-nowdoc-error8.phpt b/Zend/tests/flexible-nowdoc-error8.phpt new file mode 100644 index 0000000000000..7905c7a8d665a --- /dev/null +++ b/Zend/tests/flexible-nowdoc-error8.phpt @@ -0,0 +1,9 @@ +--TEST-- +Flexible nowdoc syntax error 8: no ending token with explicit trailing space +--FILE-- + YYLIMIT) { RETURN_TOKEN(END); @@ -1289,7 +1292,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1261 "Zend/zend_language_scanner.c" +#line 1264 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; @@ -1306,7 +1309,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1845 "Zend/zend_language_scanner.l" +#line 1848 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1318,13 +1321,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1287 "Zend/zend_language_scanner.c" +#line 1290 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1832 "Zend/zend_language_scanner.l" +#line 1835 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1332,7 +1335,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1298 "Zend/zend_language_scanner.c" +#line 1301 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1363,7 +1366,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1838 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1372,7 +1375,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1335 "Zend/zend_language_scanner.c" +#line 1338 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1442,7 +1445,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2346 "Zend/zend_language_scanner.l" +#line 2349 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1487,7 +1490,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1446 "Zend/zend_language_scanner.c" +#line 1449 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1498,12 +1501,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2290 "Zend/zend_language_scanner.l" +#line 2293 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1462 "Zend/zend_language_scanner.c" +#line 1465 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; @@ -1513,14 +1516,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2280 "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 1479 "Zend/zend_language_scanner.c" +#line 1482 "Zend/zend_language_scanner.c" yy27: YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1536,22 +1539,22 @@ int start_line = CG(zend_lineno); yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1500 "Zend/zend_language_scanner.c" +#line 1503 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1642 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1511 "Zend/zend_language_scanner.c" +#line 1514 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1565,13 +1568,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1912 "Zend/zend_language_scanner.l" +#line 1915 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1532 "Zend/zend_language_scanner.c" +#line 1535 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1589,13 +1592,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1903 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1557 "Zend/zend_language_scanner.c" +#line 1560 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1663,7 +1666,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2296 "Zend/zend_language_scanner.l" +#line 2299 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1716,7 +1719,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1674 "Zend/zend_language_scanner.c" +#line 1677 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1727,12 +1730,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2285 "Zend/zend_language_scanner.l" +#line 2288 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1690 "Zend/zend_language_scanner.c" +#line 1693 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1742,14 +1745,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2280 "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 1707 "Zend/zend_language_scanner.c" +#line 1710 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1765,22 +1768,22 @@ int start_line = CG(zend_lineno); yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1728 "Zend/zend_language_scanner.c" +#line 1731 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1642 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1739 "Zend/zend_language_scanner.c" +#line 1742 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1794,13 +1797,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1912 "Zend/zend_language_scanner.l" +#line 1915 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1760 "Zend/zend_language_scanner.c" +#line 1763 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1818,13 +1821,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1903 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1785 "Zend/zend_language_scanner.c" +#line 1788 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1835,7 +1838,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2263 "Zend/zend_language_scanner.l" +#line 2266 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1848,7 +1851,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1809 "Zend/zend_language_scanner.c" +#line 1812 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1910,7 +1913,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2388 "Zend/zend_language_scanner.l" +#line 2391 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0; @@ -1988,7 +1991,7 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng - indentation); - if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing)) { + if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { zend_string *copy = Z_STR_P(zendlval); zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); @@ -1997,7 +2000,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1958 "Zend/zend_language_scanner.c" +#line 1961 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2012,14 +2015,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2280 "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 1980 "Zend/zend_language_scanner.c" +#line 1983 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2035,22 +2038,22 @@ int start_line = CG(zend_lineno); yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2001 "Zend/zend_language_scanner.c" +#line 2004 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1642 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2012 "Zend/zend_language_scanner.c" +#line 2015 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2064,13 +2067,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1912 "Zend/zend_language_scanner.l" +#line 1915 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2033 "Zend/zend_language_scanner.c" +#line 2036 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2088,13 +2091,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1903 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2058 "Zend/zend_language_scanner.c" +#line 2061 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2276,12 +2279,12 @@ int start_line = CG(zend_lineno); yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1942 "Zend/zend_language_scanner.l" +#line 1945 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2245 "Zend/zend_language_scanner.c" +#line 2248 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2513,11 +2516,11 @@ int start_line = CG(zend_lineno); yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" +#line 1631 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2481 "Zend/zend_language_scanner.c" +#line 2484 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2526,12 +2529,12 @@ int start_line = CG(zend_lineno); yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1343 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2495 "Zend/zend_language_scanner.c" +#line 2498 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2542,11 +2545,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1368 "Zend/zend_language_scanner.l" +#line 1371 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2510 "Zend/zend_language_scanner.c" +#line 2513 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2775,18 +2778,18 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1633 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2744 "Zend/zend_language_scanner.c" +#line 2747 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1648 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2794,7 +2797,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2758 "Zend/zend_language_scanner.c" +#line 2761 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2822,7 +2825,7 @@ int start_line = CG(zend_lineno); yy137: YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1698 "Zend/zend_language_scanner.l" +#line 1701 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2865,7 +2868,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2829 "Zend/zend_language_scanner.c" +#line 2832 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2893,7 +2896,7 @@ int start_line = CG(zend_lineno); yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1948 "Zend/zend_language_scanner.l" +#line 1951 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2922,14 +2925,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2886 "Zend/zend_language_scanner.c" +#line 2889 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2019 "Zend/zend_language_scanner.l" +#line 2022 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2997,14 +3000,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2961 "Zend/zend_language_scanner.c" +#line 2964 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2088 "Zend/zend_language_scanner.l" +#line 2091 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3045,24 +3048,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3009 "Zend/zend_language_scanner.c" +#line 3012 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2257 "Zend/zend_language_scanner.l" +#line 2260 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3020 "Zend/zend_language_scanner.c" +#line 3023 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2555 "Zend/zend_language_scanner.l" +#line 2564 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3071,7 +3074,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3035 "Zend/zend_language_scanner.c" +#line 3038 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3098,7 +3101,7 @@ int start_line = CG(zend_lineno); yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1790 "Zend/zend_language_scanner.l" +#line 1793 "Zend/zend_language_scanner.l" { const char *end; @@ -3107,7 +3110,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3071 "Zend/zend_language_scanner.c" +#line 3074 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3203,7 +3206,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1670 "Zend/zend_language_scanner.l" +#line 1673 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3231,7 +3234,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3195 "Zend/zend_language_scanner.c" +#line 3198 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3243,7 +3246,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1741 "Zend/zend_language_scanner.l" +#line 1744 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3271,7 +3274,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3235 "Zend/zend_language_scanner.c" +#line 3238 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3296,12 +3299,12 @@ int start_line = CG(zend_lineno); yy172: YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3265 "Zend/zend_language_scanner.c" +#line 3268 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3315,11 +3318,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3283 "Zend/zend_language_scanner.c" +#line 3286 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3328,71 +3331,71 @@ int start_line = CG(zend_lineno); } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" +#line 1611 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3296 "Zend/zend_language_scanner.c" +#line 3299 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" +#line 1599 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3306 "Zend/zend_language_scanner.c" +#line 3309 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" +#line 1603 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3316 "Zend/zend_language_scanner.c" +#line 3319 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" +#line 1595 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3326 "Zend/zend_language_scanner.c" +#line 3329 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" +#line 1607 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3336 "Zend/zend_language_scanner.c" +#line 3339 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1591 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3346 "Zend/zend_language_scanner.c" +#line 3349 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 1579 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3356 "Zend/zend_language_scanner.c" +#line 3359 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3401,7 +3404,7 @@ int start_line = CG(zend_lineno); yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1977 "Zend/zend_language_scanner.l" +#line 1980 "Zend/zend_language_scanner.l" { int doc_com; @@ -3440,7 +3443,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3398 "Zend/zend_language_scanner.c" +#line 3401 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3450,11 +3453,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3412 "Zend/zend_language_scanner.c" +#line 3415 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3478,62 +3481,62 @@ int start_line = CG(zend_lineno); if ((yych = *YYCURSOR) == '=') goto yy202; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" +#line 1563 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3440 "Zend/zend_language_scanner.c" +#line 3443 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1556 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3450 "Zend/zend_language_scanner.c" +#line 3453 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3460 "Zend/zend_language_scanner.c" +#line 3463 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1627 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3471 "Zend/zend_language_scanner.c" +#line 3474 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" +#line 1547 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3481 "Zend/zend_language_scanner.c" +#line 3484 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1584 "Zend/zend_language_scanner.l" +#line 1587 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3491 "Zend/zend_language_scanner.c" +#line 3494 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3544,53 +3547,53 @@ int start_line = CG(zend_lineno); yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 1623 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3506 "Zend/zend_language_scanner.c" +#line 3509 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1540 "Zend/zend_language_scanner.l" +#line 1543 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3517 "Zend/zend_language_scanner.c" +#line 3520 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" +#line 1535 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3528 "Zend/zend_language_scanner.c" +#line 3531 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1536 "Zend/zend_language_scanner.l" +#line 1539 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3538 "Zend/zend_language_scanner.c" +#line 3541 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1583 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3548 "Zend/zend_language_scanner.c" +#line 3551 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3695,7 +3698,7 @@ int start_line = CG(zend_lineno); yy230: YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2130 "Zend/zend_language_scanner.l" +#line 2133 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -3733,7 +3736,11 @@ int start_line = CG(zend_lineno); zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - spacing |= 1 << (*YYCURSOR == '\t'); + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; } @@ -3747,7 +3754,7 @@ int start_line = CG(zend_lineno); YYCTYPE *end = YYCURSOR + heredoc_label->length; if (!IS_LABEL_START(*end)) { - if ((spacing & 3) == 3) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -3799,13 +3806,13 @@ int start_line = CG(zend_lineno); continue; } - if ((spacing & 3) == 3) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } heredoc_label->indentation = indentation; - heredoc_label->indentation_spacing = spacing & 1; + heredoc_label->indentation_uses_spaces = (spacing == HEREDOC_USING_SPACES); YYCURSOR = YYLIMIT; } @@ -3813,15 +3820,11 @@ int start_line = CG(zend_lineno); } YYCURSOR = saved_cursor; - - if (heredoc_label->indentation == -1) { - RETURN_TOKEN(T_START_HEREDOC); - } } RETURN_TOKEN(T_START_HEREDOC); } -#line 3779 "Zend/zend_language_scanner.c" +#line 3782 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3861,31 +3864,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" +#line 1527 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3823 "Zend/zend_language_scanner.c" +#line 3826 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3833 "Zend/zend_language_scanner.c" +#line 3836 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" +#line 1515 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3843 "Zend/zend_language_scanner.c" +#line 3846 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3904,42 +3907,42 @@ int start_line = CG(zend_lineno); } YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" +#line 1503 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3866 "Zend/zend_language_scanner.c" +#line 3869 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1531 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3877 "Zend/zend_language_scanner.c" +#line 3880 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3887 "Zend/zend_language_scanner.c" +#line 3890 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" +#line 1523 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3897 "Zend/zend_language_scanner.c" +#line 3900 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4068,11 +4071,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1827 "Zend/zend_language_scanner.l" +#line 1830 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 4030 "Zend/zend_language_scanner.c" +#line 4033 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4092,11 +4095,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 1826 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 4054 "Zend/zend_language_scanner.c" +#line 4057 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4121,11 +4124,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 1818 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 4083 "Zend/zend_language_scanner.c" +#line 4086 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4160,11 +4163,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1811 "Zend/zend_language_scanner.l" +#line 1814 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 4122 "Zend/zend_language_scanner.c" +#line 4125 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4215,11 +4218,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1807 "Zend/zend_language_scanner.l" +#line 1810 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4177 "Zend/zend_language_scanner.c" +#line 4180 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4239,11 +4242,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1819 "Zend/zend_language_scanner.l" +#line 1822 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4201 "Zend/zend_language_scanner.c" +#line 4204 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4273,11 +4276,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1803 "Zend/zend_language_scanner.l" +#line 1806 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4235 "Zend/zend_language_scanner.c" +#line 4238 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4307,11 +4310,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1799 "Zend/zend_language_scanner.l" +#line 1802 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4269 "Zend/zend_language_scanner.c" +#line 4272 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4373,11 +4376,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" +#line 1467 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4335 "Zend/zend_language_scanner.c" +#line 4338 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4397,11 +4400,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1444 "Zend/zend_language_scanner.l" +#line 1447 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4359 "Zend/zend_language_scanner.c" +#line 4362 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4420,11 +4423,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4382 "Zend/zend_language_scanner.c" +#line 4385 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4596,11 +4599,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" +#line 1395 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4558 "Zend/zend_language_scanner.c" +#line 4561 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4644,11 +4647,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1399 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4606 "Zend/zend_language_scanner.c" +#line 4609 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4718,11 +4721,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(381, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" +#line 1403 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4680 "Zend/zend_language_scanner.c" +#line 4683 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4755,11 +4758,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(388, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1404 "Zend/zend_language_scanner.l" +#line 1407 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4717 "Zend/zend_language_scanner.c" +#line 4720 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4797,11 +4800,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(396, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1408 "Zend/zend_language_scanner.l" +#line 1411 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4759 "Zend/zend_language_scanner.c" +#line 4762 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4842,11 +4845,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1412 "Zend/zend_language_scanner.l" +#line 1415 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4804 "Zend/zend_language_scanner.c" +#line 4807 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4906,11 +4909,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1416 "Zend/zend_language_scanner.l" +#line 1419 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4868 "Zend/zend_language_scanner.c" +#line 4871 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4924,11 +4927,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1388 "Zend/zend_language_scanner.l" +#line 1391 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4886 "Zend/zend_language_scanner.c" +#line 4889 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4948,11 +4951,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" +#line 1383 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4910 "Zend/zend_language_scanner.c" +#line 4913 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4991,11 +4994,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1440 "Zend/zend_language_scanner.l" +#line 1443 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4953 "Zend/zend_language_scanner.c" +#line 4956 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5004,7 +5007,7 @@ int start_line = CG(zend_lineno); yy433: YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2010 "Zend/zend_language_scanner.l" +#line 2013 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -5012,17 +5015,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4970 "Zend/zend_language_scanner.c" +#line 4973 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" +#line 1379 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 4980 "Zend/zend_language_scanner.c" +#line 4983 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5053,11 +5056,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1575 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5015 "Zend/zend_language_scanner.c" +#line 5018 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5066,21 +5069,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" +#line 1375 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 5028 "Zend/zend_language_scanner.c" +#line 5031 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1364 "Zend/zend_language_scanner.l" +#line 1367 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5038 "Zend/zend_language_scanner.c" +#line 5041 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5102,32 +5105,32 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1552 "Zend/zend_language_scanner.l" +#line 1555 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5064 "Zend/zend_language_scanner.c" +#line 5067 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 5074 "Zend/zend_language_scanner.c" +#line 5077 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1341 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5085 "Zend/zend_language_scanner.c" +#line 5088 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5172,11 +5175,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" +#line 1491 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5134 "Zend/zend_language_scanner.c" +#line 5137 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5231,11 +5234,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(470, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" +#line 1487 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5193 "Zend/zend_language_scanner.c" +#line 5196 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5265,11 +5268,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1483 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5227 "Zend/zend_language_scanner.c" +#line 5230 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5278,11 +5281,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1317 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5240 "Zend/zend_language_scanner.c" +#line 5243 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5307,11 +5310,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1309 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5269 "Zend/zend_language_scanner.c" +#line 5272 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5335,11 +5338,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" +#line 1455 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5297 "Zend/zend_language_scanner.c" +#line 5300 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5376,11 +5379,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1301 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5338 "Zend/zend_language_scanner.c" +#line 5341 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5420,11 +5423,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1285 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5382 "Zend/zend_language_scanner.c" +#line 5385 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5448,11 +5451,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" +#line 1471 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5410 "Zend/zend_language_scanner.c" +#line 5413 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5479,11 +5482,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1281 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5441 "Zend/zend_language_scanner.c" +#line 5444 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5502,11 +5505,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" +#line 1507 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5464 "Zend/zend_language_scanner.c" +#line 5467 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5515,11 +5518,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5477 "Zend/zend_language_scanner.c" +#line 5480 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5553,11 +5556,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" +#line 1475 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5515 "Zend/zend_language_scanner.c" +#line 5518 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5581,11 +5584,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1241 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5543 "Zend/zend_language_scanner.c" +#line 5546 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5594,11 +5597,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1222 "Zend/zend_language_scanner.l" +#line 1225 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5556 "Zend/zend_language_scanner.c" +#line 5559 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5650,11 +5653,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5612 "Zend/zend_language_scanner.c" +#line 5615 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5708,11 +5711,11 @@ int start_line = CG(zend_lineno); yy549: YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1424 "Zend/zend_language_scanner.l" +#line 1427 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5670 "Zend/zend_language_scanner.c" +#line 5673 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5741,11 +5744,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1428 "Zend/zend_language_scanner.l" +#line 1431 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5703 "Zend/zend_language_scanner.c" +#line 5706 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5779,11 +5782,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" +#line 1325 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5741 "Zend/zend_language_scanner.c" +#line 5744 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5833,11 +5836,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" +#line 1451 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5795 "Zend/zend_language_scanner.c" +#line 5798 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5866,11 +5869,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1277 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5828 "Zend/zend_language_scanner.c" +#line 5831 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5914,11 +5917,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1337 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5876 "Zend/zend_language_scanner.c" +#line 5879 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5946,11 +5949,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1209 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5908 "Zend/zend_language_scanner.c" +#line 5911 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5969,11 +5972,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" +#line 1329 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5931 "Zend/zend_language_scanner.c" +#line 5934 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5992,11 +5995,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1221 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5954 "Zend/zend_language_scanner.c" +#line 5957 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6029,11 +6032,11 @@ int start_line = CG(zend_lineno); yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1205 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5991 "Zend/zend_language_scanner.c" +#line 5994 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6093,13 +6096,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1196 "Zend/zend_language_scanner.l" +#line 1199 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6057 "Zend/zend_language_scanner.c" +#line 6060 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6160,11 +6163,11 @@ int start_line = CG(zend_lineno); yy618: YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1435 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 6122 "Zend/zend_language_scanner.c" +#line 6125 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6193,11 +6196,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" +#line 1439 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6155 "Zend/zend_language_scanner.c" +#line 6158 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6216,11 +6219,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1192 "Zend/zend_language_scanner.l" +#line 1195 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 6178 "Zend/zend_language_scanner.c" +#line 6181 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6310,11 +6313,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1305 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6272 "Zend/zend_language_scanner.c" +#line 6275 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6323,11 +6326,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1188 "Zend/zend_language_scanner.l" +#line 1191 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6285 "Zend/zend_language_scanner.c" +#line 6288 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6352,11 +6355,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1384 "Zend/zend_language_scanner.l" +#line 1387 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6314 "Zend/zend_language_scanner.c" +#line 6317 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6370,11 +6373,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1321 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6332 "Zend/zend_language_scanner.c" +#line 6335 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6420,11 +6423,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1511 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6382 "Zend/zend_language_scanner.c" +#line 6385 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6433,11 +6436,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1293 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6395 "Zend/zend_language_scanner.c" +#line 6398 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6451,11 +6454,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1213 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6413 "Zend/zend_language_scanner.c" +#line 6416 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6506,11 +6509,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1184 "Zend/zend_language_scanner.l" +#line 1187 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6468 "Zend/zend_language_scanner.c" +#line 6471 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6534,11 +6537,11 @@ int start_line = CG(zend_lineno); yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1253 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6496 "Zend/zend_language_scanner.c" +#line 6499 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6562,11 +6565,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1261 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6524 "Zend/zend_language_scanner.c" +#line 6527 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6600,11 +6603,11 @@ int start_line = CG(zend_lineno); yy684: YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1479 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6562 "Zend/zend_language_scanner.c" +#line 6565 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6618,11 +6621,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1217 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6580 "Zend/zend_language_scanner.c" +#line 6583 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6653,11 +6656,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1249 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6615 "Zend/zend_language_scanner.c" +#line 6618 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6666,11 +6669,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1180 "Zend/zend_language_scanner.l" +#line 1183 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6628 "Zend/zend_language_scanner.c" +#line 6631 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6705,11 +6708,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(700, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1297 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6667 "Zend/zend_language_scanner.c" +#line 6670 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6733,11 +6736,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1269 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6695 "Zend/zend_language_scanner.c" +#line 6698 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6817,11 +6820,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" +#line 1333 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6779 "Zend/zend_language_scanner.c" +#line 6782 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6830,11 +6833,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1176 "Zend/zend_language_scanner.l" +#line 1179 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6792 "Zend/zend_language_scanner.c" +#line 6795 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6848,11 +6851,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" +#line 1423 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6810 "Zend/zend_language_scanner.c" +#line 6813 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6921,11 +6924,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1245 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6883 "Zend/zend_language_scanner.c" +#line 6886 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6954,11 +6957,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1289 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6916 "Zend/zend_language_scanner.c" +#line 6919 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6967,11 +6970,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1233 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6929 "Zend/zend_language_scanner.c" +#line 6932 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7000,11 +7003,11 @@ int start_line = CG(zend_lineno); yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1257 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6962 "Zend/zend_language_scanner.c" +#line 6965 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7028,11 +7031,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1265 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6990 "Zend/zend_language_scanner.c" +#line 6993 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7066,11 +7069,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1273 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 7028 "Zend/zend_language_scanner.c" +#line 7031 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7089,11 +7092,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" +#line 1463 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 7051 "Zend/zend_language_scanner.c" +#line 7054 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7122,11 +7125,11 @@ int start_line = CG(zend_lineno); yy764: YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1237 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 7084 "Zend/zend_language_scanner.c" +#line 7087 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7140,11 +7143,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(767, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1229 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 7102 "Zend/zend_language_scanner.c" +#line 7105 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7158,11 +7161,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1313 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 7120 "Zend/zend_language_scanner.c" +#line 7123 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7235,11 +7238,11 @@ int start_line = CG(zend_lineno); yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1343 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 7198 "Zend/zend_language_scanner.c" +#line 7201 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7247,13 +7250,13 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1361 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7212 "Zend/zend_language_scanner.c" +#line 7215 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7262,12 +7265,12 @@ int start_line = CG(zend_lineno); yy778: YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" +#line 1355 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7227 "Zend/zend_language_scanner.c" +#line 7230 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7288,11 +7291,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" +#line 1351 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7252 "Zend/zend_language_scanner.c" +#line 7255 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7377,14 +7380,14 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1666 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7344 "Zend/zend_language_scanner.c" +#line 7347 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7411,14 +7414,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1654 "Zend/zend_language_scanner.l" +#line 1657 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7379 "Zend/zend_language_scanner.c" +#line 7382 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7429,9 +7432,9 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2476 "Zend/zend_language_scanner.l" +#line 2479 "Zend/zend_language_scanner.l" { - int newline = 0, indentation, spacing; + int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); if (YYCURSOR > YYLIMIT) { @@ -7451,7 +7454,11 @@ int start_line = CG(zend_lineno); indentation = spacing = 0; while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - spacing |= 1 << (*YYCURSOR == '\t'); + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; ++indentation; } @@ -7469,7 +7476,7 @@ int start_line = CG(zend_lineno); continue; } - if ((spacing & 3) == 3) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7500,14 +7507,16 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - zend_copy_value(zendlval, yytext, yyleng - indentation); + if (spacing != -1) { + zend_copy_value(zendlval, yytext, yyleng - indentation); - strip_multiline_string_indentation(zendlval, newline, indentation, spacing & 1); + strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7468 "Zend/zend_language_scanner.c" +#line 7477 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7611,7 +7620,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1769 "Zend/zend_language_scanner.l" +#line 1772 "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; @@ -7627,7 +7636,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7588 "Zend/zend_language_scanner.c" +#line 7597 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7647,23 +7656,23 @@ int start_line = CG(zend_lineno); yy806: YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1929 "Zend/zend_language_scanner.l" +#line 1932 "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 7613 "Zend/zend_language_scanner.c" +#line 7622 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1924 "Zend/zend_language_scanner.l" +#line 1927 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7624 "Zend/zend_language_scanner.c" +#line 7633 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7673,7 +7682,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1934 "Zend/zend_language_scanner.l" +#line 1937 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7681,7 +7690,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7642 "Zend/zend_language_scanner.c" +#line 7651 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7690,17 +7699,17 @@ int start_line = CG(zend_lineno); yy813: YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1942 "Zend/zend_language_scanner.l" +#line 1945 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7656 "Zend/zend_language_scanner.c" +#line 7665 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2555 "Zend/zend_language_scanner.l" +#line 2564 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7709,7 +7718,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7671 "Zend/zend_language_scanner.c" +#line 7680 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7745,11 +7754,11 @@ int start_line = CG(zend_lineno); yy820: YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1922 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7712 "Zend/zend_language_scanner.c" +#line 7721 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7789,12 +7798,12 @@ int start_line = CG(zend_lineno); yy828: YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1785 "Zend/zend_language_scanner.l" +#line 1788 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7757 "Zend/zend_language_scanner.c" +#line 7766 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7817,7 +7826,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2564 "Zend/zend_language_scanner.l" +#line 2573 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index 975701f210fcf..29263b8e71988 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -62,7 +62,7 @@ typedef struct _zend_heredoc_label { char *label; int length; int indentation; - zend_bool indentation_spacing; + zend_bool indentation_uses_spaces; } zend_heredoc_label; BEGIN_EXTERN_C() diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 11e1a8f317711..a11f9f8f6f460 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1112,6 +1112,9 @@ skip_escape_conversion: goto emit_token; \ } while (0) +#define HEREDOC_USING_SPACES 1 +#define HEREDOC_USING_TABS 2 + static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { int len = Z_STRLEN_P(zendlval), new_len = len; @@ -2247,7 +2250,11 @@ skip_escape_conversion: zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - spacing |= 1 << (*YYCURSOR == '\t'); + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; } @@ -2261,7 +2268,7 @@ skip_escape_conversion: YYCTYPE *end = YYCURSOR + heredoc_label->length; if (!IS_LABEL_START(*end)) { - if ((spacing & 3) == 3) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2313,13 +2320,13 @@ skip_escape_conversion: continue; } - if ((spacing & 3) == 3) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } heredoc_label->indentation = indentation; - heredoc_label->indentation_spacing = spacing & 1; + heredoc_label->indentation_uses_spaces = (spacing == HEREDOC_USING_SPACES); YYCURSOR = YYLIMIT; } @@ -2327,10 +2334,6 @@ skip_escape_conversion: } YYCURSOR = saved_cursor; - - if (heredoc_label->indentation == -1) { - RETURN_TOKEN(T_START_HEREDOC); - } } RETURN_TOKEN(T_START_HEREDOC); @@ -2552,7 +2555,7 @@ heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng - indentation); - if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_spacing)) { + if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { zend_string *copy = Z_STR_P(zendlval); zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); @@ -2564,7 +2567,7 @@ heredoc_scan_done: {ANY_CHAR} { - int newline = 0, indentation, spacing; + int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); if (YYCURSOR > YYLIMIT) { @@ -2584,7 +2587,11 @@ heredoc_scan_done: indentation = spacing = 0; while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - spacing |= 1 << (*YYCURSOR == '\t'); + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; ++indentation; } @@ -2602,7 +2609,7 @@ heredoc_scan_done: continue; } - if ((spacing & 3) == 3) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2633,9 +2640,11 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - zend_copy_value(zendlval, yytext, yyleng - indentation); + if (spacing != -1) { + zend_copy_value(zendlval, yytext, yyleng - indentation); - strip_multiline_string_indentation(zendlval, newline, indentation, spacing & 1); + strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); From ecdc006ac91acde03a3b4e887ac681d603c80f2c Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 15 Nov 2017 21:52:34 +0000 Subject: [PATCH 12/54] Ensure compatibility with C89 --- Zend/zend_language_scanner.l | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index a11f9f8f6f460..2281105575d96 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1117,10 +1117,10 @@ skip_escape_conversion: static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { - int len = Z_STRLEN_P(zendlval), new_len = len; + int len = Z_STRLEN_P(zendlval), new_len = len, i, j, skip; char *copy = Z_STRVAL_P(zendlval); - for (int i = 0, j = 0, skip; j < len; ) { + for (i = 0, j = 0; j < len; ) { for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { if (copy[j] == '\r' || copy[j] == '\n') { goto skip; From a01b7dd2cef1ac2713d2308c16591e50bc469ca8 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Wed, 15 Nov 2017 22:08:35 +0000 Subject: [PATCH 13/54] Second time lucky... --- Zend/zend_language_scanner.c | 4 ++-- Zend/zend_language_scanner.l | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 6a013c41f791b..dc8ee59a752de 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1119,10 +1119,10 @@ static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quot static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { - int len = Z_STRLEN_P(zendlval), new_len = len; + int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip; char *copy = Z_STRVAL_P(zendlval); - for (int i = 0, j = 0, skip; j < len; ) { + while (j < len) { for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { if (copy[j] == '\r' || copy[j] == '\n') { goto skip; diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 2281105575d96..d2bd81e969ed7 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1117,10 +1117,10 @@ skip_escape_conversion: static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { - int len = Z_STRLEN_P(zendlval), new_len = len, i, j, skip; + int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip; char *copy = Z_STRVAL_P(zendlval); - for (i = 0, j = 0; j < len; ) { + while (j < len) { for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { if (copy[j] == '\r' || copy[j] == '\n') { goto skip; From 8b4b3f6744a55d7a186466b792148588591d1f0f Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sat, 9 Dec 2017 20:26:34 +0000 Subject: [PATCH 14/54] For parity with the other two indentation checking styles --- Zend/zend_language_scanner.c | 256 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 6 +- 2 files changed, 135 insertions(+), 127 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index dc8ee59a752de..fdd89525c8dfc 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1445,7 +1445,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2349 "Zend/zend_language_scanner.l" +#line 2353 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1501,7 +1501,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2293 "Zend/zend_language_scanner.l" +#line 2297 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); @@ -1516,7 +1516,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2280 "Zend/zend_language_scanner.l" +#line 2284 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -1666,7 +1666,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2299 "Zend/zend_language_scanner.l" +#line 2303 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1730,7 +1730,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2288 "Zend/zend_language_scanner.l" +#line 2292 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); @@ -1745,7 +1745,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2280 "Zend/zend_language_scanner.l" +#line 2284 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -1838,7 +1838,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2266 "Zend/zend_language_scanner.l" +#line 2270 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1913,7 +1913,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2391 "Zend/zend_language_scanner.l" +#line 2395 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0; @@ -2015,7 +2015,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2280 "Zend/zend_language_scanner.l" +#line 2284 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -3054,7 +3054,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2260 "Zend/zend_language_scanner.l" +#line 2264 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -3065,7 +3065,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2564 "Zend/zend_language_scanner.l" +#line 2568 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3788,7 +3788,11 @@ int start_line = CG(zend_lineno); indentation = spacing = 0; while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - spacing |= 1 << (*YYCURSOR == '\t'); + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; ++indentation; } @@ -3824,7 +3828,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3782 "Zend/zend_language_scanner.c" +#line 3786 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3868,7 +3872,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3826 "Zend/zend_language_scanner.c" +#line 3830 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3878,7 +3882,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3836 "Zend/zend_language_scanner.c" +#line 3840 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; @@ -3888,7 +3892,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3846 "Zend/zend_language_scanner.c" +#line 3850 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3911,7 +3915,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 3869 "Zend/zend_language_scanner.c" +#line 3873 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3922,7 +3926,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3880 "Zend/zend_language_scanner.c" +#line 3884 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3932,7 +3936,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3890 "Zend/zend_language_scanner.c" +#line 3894 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3942,7 +3946,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3900 "Zend/zend_language_scanner.c" +#line 3904 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4075,7 +4079,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 4033 "Zend/zend_language_scanner.c" +#line 4037 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4099,7 +4103,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 4057 "Zend/zend_language_scanner.c" +#line 4061 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4128,7 +4132,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 4086 "Zend/zend_language_scanner.c" +#line 4090 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4167,7 +4171,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 4125 "Zend/zend_language_scanner.c" +#line 4129 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4222,7 +4226,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 4180 "Zend/zend_language_scanner.c" +#line 4184 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4246,7 +4250,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 4204 "Zend/zend_language_scanner.c" +#line 4208 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4280,7 +4284,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 4238 "Zend/zend_language_scanner.c" +#line 4242 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4314,7 +4318,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 4272 "Zend/zend_language_scanner.c" +#line 4276 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4380,7 +4384,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4338 "Zend/zend_language_scanner.c" +#line 4342 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4404,7 +4408,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4362 "Zend/zend_language_scanner.c" +#line 4366 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4427,7 +4431,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 4385 "Zend/zend_language_scanner.c" +#line 4389 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4603,7 +4607,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 4561 "Zend/zend_language_scanner.c" +#line 4565 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4651,7 +4655,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4609 "Zend/zend_language_scanner.c" +#line 4613 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4725,7 +4729,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 4683 "Zend/zend_language_scanner.c" +#line 4687 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4762,7 +4766,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4720 "Zend/zend_language_scanner.c" +#line 4724 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4804,7 +4808,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4762 "Zend/zend_language_scanner.c" +#line 4766 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4849,7 +4853,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 4807 "Zend/zend_language_scanner.c" +#line 4811 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4913,7 +4917,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 4871 "Zend/zend_language_scanner.c" +#line 4875 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4931,7 +4935,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4889 "Zend/zend_language_scanner.c" +#line 4893 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4955,7 +4959,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4913 "Zend/zend_language_scanner.c" +#line 4917 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4998,7 +5002,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 4956 "Zend/zend_language_scanner.c" +#line 4960 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5015,7 +5019,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4973 "Zend/zend_language_scanner.c" +#line 4977 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; @@ -5025,7 +5029,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 4983 "Zend/zend_language_scanner.c" +#line 4987 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5060,7 +5064,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5018 "Zend/zend_language_scanner.c" +#line 5022 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5073,7 +5077,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 5031 "Zend/zend_language_scanner.c" +#line 5035 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -5083,7 +5087,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5041 "Zend/zend_language_scanner.c" +#line 5045 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5109,7 +5113,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5067 "Zend/zend_language_scanner.c" +#line 5071 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -5119,7 +5123,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 5077 "Zend/zend_language_scanner.c" +#line 5081 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; @@ -5130,7 +5134,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5088 "Zend/zend_language_scanner.c" +#line 5092 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5179,7 +5183,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5137 "Zend/zend_language_scanner.c" +#line 5141 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5238,7 +5242,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 5196 "Zend/zend_language_scanner.c" +#line 5200 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5272,7 +5276,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5230 "Zend/zend_language_scanner.c" +#line 5234 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5285,7 +5289,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5243 "Zend/zend_language_scanner.c" +#line 5247 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5314,7 +5318,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5272 "Zend/zend_language_scanner.c" +#line 5276 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5342,7 +5346,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5300 "Zend/zend_language_scanner.c" +#line 5304 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5383,7 +5387,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5341 "Zend/zend_language_scanner.c" +#line 5345 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5427,7 +5431,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5385 "Zend/zend_language_scanner.c" +#line 5389 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5455,7 +5459,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5413 "Zend/zend_language_scanner.c" +#line 5417 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5486,7 +5490,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 5444 "Zend/zend_language_scanner.c" +#line 5448 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5509,7 +5513,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5467 "Zend/zend_language_scanner.c" +#line 5471 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5522,7 +5526,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5480 "Zend/zend_language_scanner.c" +#line 5484 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5560,7 +5564,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5518 "Zend/zend_language_scanner.c" +#line 5522 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5588,7 +5592,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5546 "Zend/zend_language_scanner.c" +#line 5550 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5601,7 +5605,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 5559 "Zend/zend_language_scanner.c" +#line 5563 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5657,7 +5661,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5615 "Zend/zend_language_scanner.c" +#line 5619 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5715,7 +5719,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5673 "Zend/zend_language_scanner.c" +#line 5677 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5748,7 +5752,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5706 "Zend/zend_language_scanner.c" +#line 5710 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5786,7 +5790,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 5744 "Zend/zend_language_scanner.c" +#line 5748 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5840,7 +5844,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 5798 "Zend/zend_language_scanner.c" +#line 5802 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5873,7 +5877,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 5831 "Zend/zend_language_scanner.c" +#line 5835 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5921,7 +5925,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5879 "Zend/zend_language_scanner.c" +#line 5883 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5953,7 +5957,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 5911 "Zend/zend_language_scanner.c" +#line 5915 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5976,7 +5980,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5934 "Zend/zend_language_scanner.c" +#line 5938 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5999,7 +6003,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5957 "Zend/zend_language_scanner.c" +#line 5961 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6036,7 +6040,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5994 "Zend/zend_language_scanner.c" +#line 5998 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6102,7 +6106,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6060 "Zend/zend_language_scanner.c" +#line 6064 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6167,7 +6171,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6125 "Zend/zend_language_scanner.c" +#line 6129 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6200,7 +6204,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6158 "Zend/zend_language_scanner.c" +#line 6162 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6223,7 +6227,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6181 "Zend/zend_language_scanner.c" +#line 6185 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6317,7 +6321,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6275 "Zend/zend_language_scanner.c" +#line 6279 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6330,7 +6334,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 6288 "Zend/zend_language_scanner.c" +#line 6292 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6359,7 +6363,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 6317 "Zend/zend_language_scanner.c" +#line 6321 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6377,7 +6381,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 6335 "Zend/zend_language_scanner.c" +#line 6339 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6427,7 +6431,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6385 "Zend/zend_language_scanner.c" +#line 6389 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6440,7 +6444,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 6398 "Zend/zend_language_scanner.c" +#line 6402 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6458,7 +6462,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 6416 "Zend/zend_language_scanner.c" +#line 6420 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6513,7 +6517,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6471 "Zend/zend_language_scanner.c" +#line 6475 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6541,7 +6545,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 6499 "Zend/zend_language_scanner.c" +#line 6503 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6569,7 +6573,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6527 "Zend/zend_language_scanner.c" +#line 6531 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6607,7 +6611,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 6565 "Zend/zend_language_scanner.c" +#line 6569 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6625,7 +6629,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6583 "Zend/zend_language_scanner.c" +#line 6587 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6660,7 +6664,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 6618 "Zend/zend_language_scanner.c" +#line 6622 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6673,7 +6677,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6631 "Zend/zend_language_scanner.c" +#line 6635 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6712,7 +6716,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6670 "Zend/zend_language_scanner.c" +#line 6674 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6740,7 +6744,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6698 "Zend/zend_language_scanner.c" +#line 6702 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6824,7 +6828,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6782 "Zend/zend_language_scanner.c" +#line 6786 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6837,7 +6841,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6795 "Zend/zend_language_scanner.c" +#line 6799 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6855,7 +6859,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 6813 "Zend/zend_language_scanner.c" +#line 6817 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6928,7 +6932,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6886 "Zend/zend_language_scanner.c" +#line 6890 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6961,7 +6965,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6919 "Zend/zend_language_scanner.c" +#line 6923 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6974,7 +6978,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 6932 "Zend/zend_language_scanner.c" +#line 6936 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7007,7 +7011,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6965 "Zend/zend_language_scanner.c" +#line 6969 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7035,7 +7039,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6993 "Zend/zend_language_scanner.c" +#line 6997 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7073,7 +7077,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7031 "Zend/zend_language_scanner.c" +#line 7035 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7096,7 +7100,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 7054 "Zend/zend_language_scanner.c" +#line 7058 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7129,7 +7133,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 7087 "Zend/zend_language_scanner.c" +#line 7091 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7147,7 +7151,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 7105 "Zend/zend_language_scanner.c" +#line 7109 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7165,7 +7169,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 7123 "Zend/zend_language_scanner.c" +#line 7127 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7242,7 +7246,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7201 "Zend/zend_language_scanner.c" +#line 7205 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7256,7 +7260,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7215 "Zend/zend_language_scanner.c" +#line 7219 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7270,7 +7274,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7230 "Zend/zend_language_scanner.c" +#line 7234 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7295,7 +7299,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7255 "Zend/zend_language_scanner.c" +#line 7259 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7387,7 +7391,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7347 "Zend/zend_language_scanner.c" +#line 7351 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7421,7 +7425,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7382 "Zend/zend_language_scanner.c" +#line 7386 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7432,7 +7436,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2479 "Zend/zend_language_scanner.l" +#line 2483 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7516,7 +7520,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7477 "Zend/zend_language_scanner.c" +#line 7481 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7636,7 +7640,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7597 "Zend/zend_language_scanner.c" +#line 7601 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7661,7 +7665,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7622 "Zend/zend_language_scanner.c" +#line 7626 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7672,7 +7676,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7633 "Zend/zend_language_scanner.c" +#line 7637 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7690,7 +7694,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7651 "Zend/zend_language_scanner.c" +#line 7655 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7703,13 +7707,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7665 "Zend/zend_language_scanner.c" +#line 7669 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2564 "Zend/zend_language_scanner.l" +#line 2568 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7718,7 +7722,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7680 "Zend/zend_language_scanner.c" +#line 7684 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7758,7 +7762,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7721 "Zend/zend_language_scanner.c" +#line 7725 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7803,7 +7807,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7766 "Zend/zend_language_scanner.c" +#line 7770 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7826,7 +7830,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2573 "Zend/zend_language_scanner.l" +#line 2577 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d2bd81e969ed7..4abbfcf3d9d24 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2302,7 +2302,11 @@ skip_escape_conversion: indentation = spacing = 0; while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - spacing |= 1 << (*YYCURSOR == '\t'); + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; ++indentation; } From abe82f3cc51cebb8545e866d310ede5e0bdafa60 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 11 Dec 2017 15:09:28 +0000 Subject: [PATCH 15/54] Use stateful forward scan --- .../tests/flexible-heredoc-complex-test1.phpt | 25 + .../tests/flexible-heredoc-complex-test2.phpt | 25 + .../tests/flexible-heredoc-complex-test3.phpt | 25 + .../tests/flexible-heredoc-complex-test4.phpt | 33 + Zend/zend_globals.h | 3 + Zend/zend_language_scanner.c | 819 +++++++++--------- Zend/zend_language_scanner.l | 123 ++- Zend/zend_ptr_stack.c | 9 + Zend/zend_ptr_stack.h | 1 + 9 files changed, 619 insertions(+), 444 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-complex-test1.phpt create mode 100644 Zend/tests/flexible-heredoc-complex-test2.phpt create mode 100644 Zend/tests/flexible-heredoc-complex-test3.phpt create mode 100644 Zend/tests/flexible-heredoc-complex-test4.phpt diff --git a/Zend/tests/flexible-heredoc-complex-test1.phpt b/Zend/tests/flexible-heredoc-complex-test1.phpt new file mode 100644 index 0000000000000..b040c9b569009 --- /dev/null +++ b/Zend/tests/flexible-heredoc-complex-test1.phpt @@ -0,0 +1,25 @@ +--TEST-- +Flexible heredoc syntax complex test 1: interpolated nested heredocs +with different delimiter names +--FILE-- +label = estrndup(heredoc_label->label, heredoc_label->length); + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); +} + +static int copy_state_stack(void *void_state) +{ + zend_stack_push(&SCNG(state_stack), void_state); + return SUCCESS; +} + #define RETURN_TOKEN(token) return emit_token(token, start_line); #define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ @@ -1192,7 +1211,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1166 "Zend/zend_language_scanner.c" +#line 1185 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1245,7 +1264,7 @@ int start_line = CG(zend_lineno); yy4: YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1876 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1292,7 +1311,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1264 "Zend/zend_language_scanner.c" +#line 1283 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; @@ -1309,7 +1328,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1848 "Zend/zend_language_scanner.l" +#line 1867 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1321,13 +1340,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1290 "Zend/zend_language_scanner.c" +#line 1309 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1835 "Zend/zend_language_scanner.l" +#line 1854 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1335,7 +1354,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1301 "Zend/zend_language_scanner.c" +#line 1320 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1366,7 +1385,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1841 "Zend/zend_language_scanner.l" +#line 1860 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1375,7 +1394,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1338 "Zend/zend_language_scanner.c" +#line 1357 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1445,7 +1464,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2353 "Zend/zend_language_scanner.l" +#line 2361 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1490,7 +1509,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1449 "Zend/zend_language_scanner.c" +#line 1468 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1501,12 +1520,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2297 "Zend/zend_language_scanner.l" +#line 2305 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1465 "Zend/zend_language_scanner.c" +#line 1484 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; @@ -1516,14 +1535,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2292 "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 1482 "Zend/zend_language_scanner.c" +#line 1501 "Zend/zend_language_scanner.c" yy27: YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1539,22 +1558,22 @@ int start_line = CG(zend_lineno); yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1941 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1503 "Zend/zend_language_scanner.c" +#line 1522 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1514 "Zend/zend_language_scanner.c" +#line 1533 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1568,13 +1587,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1915 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1535 "Zend/zend_language_scanner.c" +#line 1554 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1592,13 +1611,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1906 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1560 "Zend/zend_language_scanner.c" +#line 1579 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1666,7 +1685,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2303 "Zend/zend_language_scanner.l" +#line 2311 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1719,7 +1738,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1677 "Zend/zend_language_scanner.c" +#line 1696 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1730,12 +1749,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2292 "Zend/zend_language_scanner.l" +#line 2300 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1693 "Zend/zend_language_scanner.c" +#line 1712 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1745,14 +1764,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2292 "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 1710 "Zend/zend_language_scanner.c" +#line 1729 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1768,22 +1787,22 @@ int start_line = CG(zend_lineno); yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1941 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1731 "Zend/zend_language_scanner.c" +#line 1750 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1742 "Zend/zend_language_scanner.c" +#line 1761 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1797,13 +1816,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1915 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1763 "Zend/zend_language_scanner.c" +#line 1782 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1821,13 +1840,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1906 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1788 "Zend/zend_language_scanner.c" +#line 1807 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1838,7 +1857,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2270 "Zend/zend_language_scanner.l" +#line 2278 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1851,7 +1870,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1812 "Zend/zend_language_scanner.c" +#line 1831 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1913,10 +1932,10 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2395 "Zend/zend_language_scanner.l" +#line 2403 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); - int newline = 0, indentation = 0; + int newline = 0, indentation = 0, spacing = 0; if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1932,8 +1951,20 @@ int start_line = CG(zend_lineno); } /* fall through */ case '\n': - while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } /* Check for ending label on the next line */ @@ -1944,6 +1975,11 @@ int start_line = CG(zend_lineno); continue; } + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + if (*end == ';') { end++; } @@ -1956,7 +1992,8 @@ int start_line = CG(zend_lineno); newline = 1; } - indentation = heredoc_label->indentation; + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); CG(increment_lineno) = 1; BEGIN(ST_END_HEREDOC); @@ -1989,9 +2026,10 @@ int start_line = CG(zend_lineno); heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng - indentation); + ZVAL_STRINGL(zendlval, yytext, yyleng); - if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { zend_string *copy = Z_STR_P(zendlval); zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); @@ -2000,7 +2038,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1961 "Zend/zend_language_scanner.c" +#line 1999 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2015,14 +2053,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2292 "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 1983 "Zend/zend_language_scanner.c" +#line 2021 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2038,22 +2076,22 @@ int start_line = CG(zend_lineno); yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1941 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2004 "Zend/zend_language_scanner.c" +#line 2042 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2015 "Zend/zend_language_scanner.c" +#line 2053 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2067,13 +2105,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1915 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2036 "Zend/zend_language_scanner.c" +#line 2074 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2091,13 +2129,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1906 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2061 "Zend/zend_language_scanner.c" +#line 2099 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2279,12 +2317,12 @@ int start_line = CG(zend_lineno); yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1945 "Zend/zend_language_scanner.l" +#line 1964 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2248 "Zend/zend_language_scanner.c" +#line 2286 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2516,11 +2554,11 @@ int start_line = CG(zend_lineno); yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" +#line 1650 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2484 "Zend/zend_language_scanner.c" +#line 2522 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2529,12 +2567,12 @@ int start_line = CG(zend_lineno); yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1365 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2498 "Zend/zend_language_scanner.c" +#line 2536 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2545,11 +2583,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1371 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2513 "Zend/zend_language_scanner.c" +#line 2551 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2778,18 +2816,18 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" +#line 1655 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2747 "Zend/zend_language_scanner.c" +#line 2785 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1648 "Zend/zend_language_scanner.l" +#line 1667 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2797,7 +2835,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2761 "Zend/zend_language_scanner.c" +#line 2799 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2825,7 +2863,7 @@ int start_line = CG(zend_lineno); yy137: YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1701 "Zend/zend_language_scanner.l" +#line 1720 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2868,7 +2906,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2832 "Zend/zend_language_scanner.c" +#line 2870 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2896,7 +2934,7 @@ int start_line = CG(zend_lineno); yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1951 "Zend/zend_language_scanner.l" +#line 1970 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2925,14 +2963,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2889 "Zend/zend_language_scanner.c" +#line 2927 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2022 "Zend/zend_language_scanner.l" +#line 2041 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3000,14 +3038,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2964 "Zend/zend_language_scanner.c" +#line 3002 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2091 "Zend/zend_language_scanner.l" +#line 2110 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3048,24 +3086,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3012 "Zend/zend_language_scanner.c" +#line 3050 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2264 "Zend/zend_language_scanner.l" +#line 2272 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3023 "Zend/zend_language_scanner.c" +#line 3061 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2568 "Zend/zend_language_scanner.l" +#line 2595 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3074,7 +3112,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3038 "Zend/zend_language_scanner.c" +#line 3076 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3101,7 +3139,7 @@ int start_line = CG(zend_lineno); yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1793 "Zend/zend_language_scanner.l" +#line 1812 "Zend/zend_language_scanner.l" { const char *end; @@ -3110,7 +3148,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3074 "Zend/zend_language_scanner.c" +#line 3112 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3206,7 +3244,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1673 "Zend/zend_language_scanner.l" +#line 1692 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3234,7 +3272,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3198 "Zend/zend_language_scanner.c" +#line 3236 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3246,7 +3284,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1744 "Zend/zend_language_scanner.l" +#line 1763 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3274,7 +3312,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3238 "Zend/zend_language_scanner.c" +#line 3276 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3299,12 +3337,12 @@ int start_line = CG(zend_lineno); yy172: YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1941 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3268 "Zend/zend_language_scanner.c" +#line 3306 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3318,11 +3356,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1638 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3286 "Zend/zend_language_scanner.c" +#line 3324 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3331,71 +3369,71 @@ int start_line = CG(zend_lineno); } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1611 "Zend/zend_language_scanner.l" +#line 1630 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3299 "Zend/zend_language_scanner.c" +#line 3337 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1599 "Zend/zend_language_scanner.l" +#line 1618 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3309 "Zend/zend_language_scanner.c" +#line 3347 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1622 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3319 "Zend/zend_language_scanner.c" +#line 3357 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1595 "Zend/zend_language_scanner.l" +#line 1614 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3329 "Zend/zend_language_scanner.c" +#line 3367 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1607 "Zend/zend_language_scanner.l" +#line 1626 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3339 "Zend/zend_language_scanner.c" +#line 3377 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" +#line 1610 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3349 "Zend/zend_language_scanner.c" +#line 3387 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" +#line 1598 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3359 "Zend/zend_language_scanner.c" +#line 3397 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3404,7 +3442,7 @@ int start_line = CG(zend_lineno); yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" +#line 1999 "Zend/zend_language_scanner.l" { int doc_com; @@ -3443,7 +3481,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3401 "Zend/zend_language_scanner.c" +#line 3439 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3453,11 +3491,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1590 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3415 "Zend/zend_language_scanner.c" +#line 3453 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3481,62 +3519,62 @@ int start_line = CG(zend_lineno); if ((yych = *YYCURSOR) == '=') goto yy202; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" +#line 1582 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3443 "Zend/zend_language_scanner.c" +#line 3481 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" +#line 1578 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3453 "Zend/zend_language_scanner.c" +#line 3491 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" +#line 1586 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3463 "Zend/zend_language_scanner.c" +#line 3501 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" +#line 1646 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3474 "Zend/zend_language_scanner.c" +#line 3512 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1547 "Zend/zend_language_scanner.l" +#line 1566 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3484 "Zend/zend_language_scanner.c" +#line 3522 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1606 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3494 "Zend/zend_language_scanner.c" +#line 3532 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3547,53 +3585,53 @@ int start_line = CG(zend_lineno); yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1623 "Zend/zend_language_scanner.l" +#line 1642 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3509 "Zend/zend_language_scanner.c" +#line 3547 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" +#line 1562 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3520 "Zend/zend_language_scanner.c" +#line 3558 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1535 "Zend/zend_language_scanner.l" +#line 1554 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3531 "Zend/zend_language_scanner.c" +#line 3569 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1539 "Zend/zend_language_scanner.l" +#line 1558 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3541 "Zend/zend_language_scanner.c" +#line 3579 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1583 "Zend/zend_language_scanner.l" +#line 1602 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3551 "Zend/zend_language_scanner.c" +#line 3589 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3698,7 +3736,7 @@ int start_line = CG(zend_lineno); yy230: YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2133 "Zend/zend_language_scanner.l" +#line 2152 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -3730,7 +3768,7 @@ int start_line = CG(zend_lineno); } heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = -1; + heredoc_label->indentation = 0; saved_cursor = YYCURSOR; zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); @@ -3772,63 +3810,52 @@ int start_line = CG(zend_lineno); YYCURSOR = saved_cursor; } - if (is_heredoc) { - int indentation; + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { + zend_lex_state current_state; + int heredoc_nesting_level = 1; - saved_cursor = YYCURSOR--; + zend_save_lexical_state(¤t_state); - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; + SCNG(heredoc_scan_ahead) = 1; - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } + zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + zend_stack_apply(¤t_state.state_stack, ZEND_STACK_APPLY_BOTTOMUP, copy_state_stack); // necessary? - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } + while (heredoc_nesting_level) { + zval zv; + int retval; - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; + ZVAL_UNDEF(&zv); + retval = lex_scan(&zv); + zval_dtor(&zv); - if (IS_LABEL_START(*end)) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - - heredoc_label->indentation = indentation; - heredoc_label->indentation_uses_spaces = (spacing == HEREDOC_USING_SPACES); + if (EG(exception)) { + zend_restore_lexical_state(¤t_state); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); // return something else on error? perhaps retval? + } - YYCURSOR = YYLIMIT; - } + switch (retval) { + case T_START_HEREDOC: + ++heredoc_nesting_level; + break; + case T_END_HEREDOC: + --heredoc_nesting_level; + break; + case END: + heredoc_nesting_level = 0; } } - YYCURSOR = saved_cursor; + heredoc_label->indentation = SCNG(heredoc_indentation); + heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); + + zend_restore_lexical_state(¤t_state); + SCNG(heredoc_scan_ahead) = 0; } RETURN_TOKEN(T_START_HEREDOC); } -#line 3786 "Zend/zend_language_scanner.c" +#line 3813 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3868,31 +3895,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1527 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3830 "Zend/zend_language_scanner.c" +#line 3857 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" +#line 1570 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3840 "Zend/zend_language_scanner.c" +#line 3867 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1515 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3850 "Zend/zend_language_scanner.c" +#line 3877 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3911,42 +3938,42 @@ int start_line = CG(zend_lineno); } YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1503 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3873 "Zend/zend_language_scanner.c" +#line 3900 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1531 "Zend/zend_language_scanner.l" +#line 1550 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3884 "Zend/zend_language_scanner.c" +#line 3911 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1499 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3894 "Zend/zend_language_scanner.c" +#line 3921 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1523 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3904 "Zend/zend_language_scanner.c" +#line 3931 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4075,11 +4102,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1830 "Zend/zend_language_scanner.l" +#line 1849 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 4037 "Zend/zend_language_scanner.c" +#line 4064 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4099,11 +4126,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1826 "Zend/zend_language_scanner.l" +#line 1845 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 4061 "Zend/zend_language_scanner.c" +#line 4088 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4128,11 +4155,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1818 "Zend/zend_language_scanner.l" +#line 1837 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 4090 "Zend/zend_language_scanner.c" +#line 4117 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4167,11 +4194,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1814 "Zend/zend_language_scanner.l" +#line 1833 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 4129 "Zend/zend_language_scanner.c" +#line 4156 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4222,11 +4249,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1810 "Zend/zend_language_scanner.l" +#line 1829 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4184 "Zend/zend_language_scanner.c" +#line 4211 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4246,11 +4273,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1822 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4208 "Zend/zend_language_scanner.c" +#line 4235 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4280,11 +4307,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1806 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4242 "Zend/zend_language_scanner.c" +#line 4269 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4314,11 +4341,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1802 "Zend/zend_language_scanner.l" +#line 1821 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4276 "Zend/zend_language_scanner.c" +#line 4303 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4380,11 +4407,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1467 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4342 "Zend/zend_language_scanner.c" +#line 4369 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4404,11 +4431,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1447 "Zend/zend_language_scanner.l" +#line 1466 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4366 "Zend/zend_language_scanner.c" +#line 4393 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4427,11 +4454,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1495 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4389 "Zend/zend_language_scanner.c" +#line 4416 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4603,11 +4630,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1395 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4565 "Zend/zend_language_scanner.c" +#line 4592 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4651,11 +4678,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1399 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4613 "Zend/zend_language_scanner.c" +#line 4640 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4725,11 +4752,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(381, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1403 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4687 "Zend/zend_language_scanner.c" +#line 4714 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4762,11 +4789,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(388, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1407 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4724 "Zend/zend_language_scanner.c" +#line 4751 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4804,11 +4831,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(396, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1411 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4766 "Zend/zend_language_scanner.c" +#line 4793 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4849,11 +4876,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4811 "Zend/zend_language_scanner.c" +#line 4838 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4913,11 +4940,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1419 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4875 "Zend/zend_language_scanner.c" +#line 4902 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4931,11 +4958,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1391 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4893 "Zend/zend_language_scanner.c" +#line 4920 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4955,11 +4982,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1383 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4917 "Zend/zend_language_scanner.c" +#line 4944 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4998,11 +5025,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4960 "Zend/zend_language_scanner.c" +#line 4987 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5011,7 +5038,7 @@ int start_line = CG(zend_lineno); yy433: YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2013 "Zend/zend_language_scanner.l" +#line 2032 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -5019,17 +5046,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4977 "Zend/zend_language_scanner.c" +#line 5004 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1379 "Zend/zend_language_scanner.l" +#line 1398 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 4987 "Zend/zend_language_scanner.c" +#line 5014 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5060,11 +5087,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" +#line 1594 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5022 "Zend/zend_language_scanner.c" +#line 5049 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5073,21 +5100,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1375 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 5035 "Zend/zend_language_scanner.c" +#line 5062 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5045 "Zend/zend_language_scanner.c" +#line 5072 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5109,32 +5136,32 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" +#line 1574 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5071 "Zend/zend_language_scanner.c" +#line 5098 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1519 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 5081 "Zend/zend_language_scanner.c" +#line 5108 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1341 "Zend/zend_language_scanner.l" +#line 1360 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5092 "Zend/zend_language_scanner.c" +#line 5119 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5179,11 +5206,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" +#line 1510 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5141 "Zend/zend_language_scanner.c" +#line 5168 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5238,11 +5265,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(470, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1487 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5200 "Zend/zend_language_scanner.c" +#line 5227 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5272,11 +5299,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1483 "Zend/zend_language_scanner.l" +#line 1502 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5234 "Zend/zend_language_scanner.c" +#line 5261 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5285,11 +5312,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1317 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5247 "Zend/zend_language_scanner.c" +#line 5274 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5314,11 +5341,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1309 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5276 "Zend/zend_language_scanner.c" +#line 5303 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5342,11 +5369,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" +#line 1474 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5304 "Zend/zend_language_scanner.c" +#line 5331 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5383,11 +5410,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1301 "Zend/zend_language_scanner.l" +#line 1320 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5345 "Zend/zend_language_scanner.c" +#line 5372 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5427,11 +5454,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1285 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5389 "Zend/zend_language_scanner.c" +#line 5416 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5455,11 +5482,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5417 "Zend/zend_language_scanner.c" +#line 5444 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5486,11 +5513,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1281 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5448 "Zend/zend_language_scanner.c" +#line 5475 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5509,11 +5536,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1507 "Zend/zend_language_scanner.l" +#line 1526 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5471 "Zend/zend_language_scanner.c" +#line 5498 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5522,11 +5549,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" +#line 1634 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5484 "Zend/zend_language_scanner.c" +#line 5511 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5560,11 +5587,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1475 "Zend/zend_language_scanner.l" +#line 1494 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5522 "Zend/zend_language_scanner.c" +#line 5549 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5588,11 +5615,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1241 "Zend/zend_language_scanner.l" +#line 1260 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5550 "Zend/zend_language_scanner.c" +#line 5577 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5601,11 +5628,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1225 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5563 "Zend/zend_language_scanner.c" +#line 5590 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5657,11 +5684,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5619 "Zend/zend_language_scanner.c" +#line 5646 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5715,11 +5742,11 @@ int start_line = CG(zend_lineno); yy549: YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1427 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5677 "Zend/zend_language_scanner.c" +#line 5704 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5748,11 +5775,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" +#line 1450 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5710 "Zend/zend_language_scanner.c" +#line 5737 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5786,11 +5813,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" +#line 1344 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5748 "Zend/zend_language_scanner.c" +#line 5775 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5840,11 +5867,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5802 "Zend/zend_language_scanner.c" +#line 5829 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5873,11 +5900,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1277 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5835 "Zend/zend_language_scanner.c" +#line 5862 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5921,11 +5948,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1337 "Zend/zend_language_scanner.l" +#line 1356 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5883 "Zend/zend_language_scanner.c" +#line 5910 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5953,11 +5980,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1209 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5915 "Zend/zend_language_scanner.c" +#line 5942 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -5976,11 +6003,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1329 "Zend/zend_language_scanner.l" +#line 1348 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5938 "Zend/zend_language_scanner.c" +#line 5965 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -5999,11 +6026,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1221 "Zend/zend_language_scanner.l" +#line 1240 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5961 "Zend/zend_language_scanner.c" +#line 5988 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6036,11 +6063,11 @@ int start_line = CG(zend_lineno); yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1205 "Zend/zend_language_scanner.l" +#line 1224 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5998 "Zend/zend_language_scanner.c" +#line 6025 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6100,13 +6127,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1199 "Zend/zend_language_scanner.l" +#line 1218 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6064 "Zend/zend_language_scanner.c" +#line 6091 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6167,11 +6194,11 @@ int start_line = CG(zend_lineno); yy618: YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" +#line 1454 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 6129 "Zend/zend_language_scanner.c" +#line 6156 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6200,11 +6227,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6162 "Zend/zend_language_scanner.c" +#line 6189 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6223,11 +6250,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1195 "Zend/zend_language_scanner.l" +#line 1214 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 6185 "Zend/zend_language_scanner.c" +#line 6212 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6317,11 +6344,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1305 "Zend/zend_language_scanner.l" +#line 1324 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6279 "Zend/zend_language_scanner.c" +#line 6306 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6330,11 +6357,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1191 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6292 "Zend/zend_language_scanner.c" +#line 6319 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6359,11 +6386,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1387 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6321 "Zend/zend_language_scanner.c" +#line 6348 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6377,11 +6404,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1321 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6339 "Zend/zend_language_scanner.c" +#line 6366 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6427,11 +6454,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1511 "Zend/zend_language_scanner.l" +#line 1530 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6389 "Zend/zend_language_scanner.c" +#line 6416 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6440,11 +6467,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1293 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6402 "Zend/zend_language_scanner.c" +#line 6429 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6458,11 +6485,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1213 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6420 "Zend/zend_language_scanner.c" +#line 6447 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6513,11 +6540,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1187 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6475 "Zend/zend_language_scanner.c" +#line 6502 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6541,11 +6568,11 @@ int start_line = CG(zend_lineno); yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1253 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6503 "Zend/zend_language_scanner.c" +#line 6530 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6569,11 +6596,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1261 "Zend/zend_language_scanner.l" +#line 1280 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6531 "Zend/zend_language_scanner.c" +#line 6558 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6607,11 +6634,11 @@ int start_line = CG(zend_lineno); yy684: YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" +#line 1498 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6569 "Zend/zend_language_scanner.c" +#line 6596 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6625,11 +6652,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1217 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6587 "Zend/zend_language_scanner.c" +#line 6614 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6660,11 +6687,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1249 "Zend/zend_language_scanner.l" +#line 1268 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6622 "Zend/zend_language_scanner.c" +#line 6649 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6673,11 +6700,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1183 "Zend/zend_language_scanner.l" +#line 1202 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6635 "Zend/zend_language_scanner.c" +#line 6662 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6712,11 +6739,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(700, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1297 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6674 "Zend/zend_language_scanner.c" +#line 6701 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6740,11 +6767,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1269 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6702 "Zend/zend_language_scanner.c" +#line 6729 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6824,11 +6851,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1333 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6786 "Zend/zend_language_scanner.c" +#line 6813 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6837,11 +6864,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1179 "Zend/zend_language_scanner.l" +#line 1198 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6799 "Zend/zend_language_scanner.c" +#line 6826 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6855,11 +6882,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1423 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6817 "Zend/zend_language_scanner.c" +#line 6844 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6928,11 +6955,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1245 "Zend/zend_language_scanner.l" +#line 1264 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6890 "Zend/zend_language_scanner.c" +#line 6917 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6961,11 +6988,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1289 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6923 "Zend/zend_language_scanner.c" +#line 6950 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -6974,11 +7001,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1233 "Zend/zend_language_scanner.l" +#line 1252 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6936 "Zend/zend_language_scanner.c" +#line 6963 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7007,11 +7034,11 @@ int start_line = CG(zend_lineno); yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1257 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6969 "Zend/zend_language_scanner.c" +#line 6996 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7035,11 +7062,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1265 "Zend/zend_language_scanner.l" +#line 1284 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6997 "Zend/zend_language_scanner.c" +#line 7024 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7073,11 +7100,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1273 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 7035 "Zend/zend_language_scanner.c" +#line 7062 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7096,11 +7123,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" +#line 1482 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 7058 "Zend/zend_language_scanner.c" +#line 7085 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7129,11 +7156,11 @@ int start_line = CG(zend_lineno); yy764: YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1237 "Zend/zend_language_scanner.l" +#line 1256 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 7091 "Zend/zend_language_scanner.c" +#line 7118 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7147,11 +7174,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(767, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1229 "Zend/zend_language_scanner.l" +#line 1248 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 7109 "Zend/zend_language_scanner.c" +#line 7136 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7165,11 +7192,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1313 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 7127 "Zend/zend_language_scanner.c" +#line 7154 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7242,11 +7269,11 @@ int start_line = CG(zend_lineno); yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1365 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 7205 "Zend/zend_language_scanner.c" +#line 7232 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7254,13 +7281,13 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1361 "Zend/zend_language_scanner.l" +#line 1380 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7219 "Zend/zend_language_scanner.c" +#line 7246 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7269,12 +7296,12 @@ int start_line = CG(zend_lineno); yy778: YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1355 "Zend/zend_language_scanner.l" +#line 1374 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7234 "Zend/zend_language_scanner.c" +#line 7261 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7295,11 +7322,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1351 "Zend/zend_language_scanner.l" +#line 1370 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7259 "Zend/zend_language_scanner.c" +#line 7286 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7384,14 +7411,14 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1666 "Zend/zend_language_scanner.l" +#line 1685 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7351 "Zend/zend_language_scanner.c" +#line 7378 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7418,14 +7445,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1657 "Zend/zend_language_scanner.l" +#line 1676 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7386 "Zend/zend_language_scanner.c" +#line 7413 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7436,7 +7463,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2483 "Zend/zend_language_scanner.l" +#line 2510 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7520,7 +7547,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7481 "Zend/zend_language_scanner.c" +#line 7508 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7624,7 +7651,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" +#line 1791 "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; @@ -7640,7 +7667,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7601 "Zend/zend_language_scanner.c" +#line 7628 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7660,23 +7687,23 @@ int start_line = CG(zend_lineno); yy806: YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1932 "Zend/zend_language_scanner.l" +#line 1951 "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 7626 "Zend/zend_language_scanner.c" +#line 7653 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" +#line 1946 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7637 "Zend/zend_language_scanner.c" +#line 7664 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7686,7 +7713,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1937 "Zend/zend_language_scanner.l" +#line 1956 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7694,7 +7721,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7655 "Zend/zend_language_scanner.c" +#line 7682 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7703,17 +7730,17 @@ int start_line = CG(zend_lineno); yy813: YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1945 "Zend/zend_language_scanner.l" +#line 1964 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7669 "Zend/zend_language_scanner.c" +#line 7696 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2568 "Zend/zend_language_scanner.l" +#line 2595 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7722,7 +7749,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7684 "Zend/zend_language_scanner.c" +#line 7711 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7758,11 +7785,11 @@ int start_line = CG(zend_lineno); yy820: YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" +#line 1941 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7725 "Zend/zend_language_scanner.c" +#line 7752 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7802,12 +7829,12 @@ int start_line = CG(zend_lineno); yy828: YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1788 "Zend/zend_language_scanner.l" +#line 1807 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7770 "Zend/zend_language_scanner.c" +#line 7797 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7830,7 +7857,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2577 "Zend/zend_language_scanner.l" +#line 2604 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 4abbfcf3d9d24..b2e4410542d7c 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -181,6 +181,7 @@ void startup_scanner(void) CG(extra_fn_flags) = 0; zend_stack_init(&SCNG(state_stack), sizeof(int)); zend_ptr_stack_init(&SCNG(heredoc_label_stack)); + SCNG(heredoc_scan_ahead) = 0; } static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) { @@ -194,6 +195,7 @@ void shutdown_scanner(void) zend_stack_destroy(&SCNG(state_stack)); zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); + SCNG(heredoc_scan_ahead) = 0; SCNG(on_event) = NULL; } @@ -1166,6 +1168,23 @@ error: return 0; } +static void copy_heredoc_label_stack(void *void_heredoc_label) +{ + zend_heredoc_label *heredoc_label = void_heredoc_label; + zend_heredoc_label *new_heredoc_label = emalloc(sizeof(zend_heredoc_label)); + + *new_heredoc_label = *heredoc_label; + new_heredoc_label->label = estrndup(heredoc_label->label, heredoc_label->length); + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); +} + +static int copy_state_stack(void *void_state) +{ + zend_stack_push(&SCNG(state_stack), void_state); + return SUCCESS; +} + #define RETURN_TOKEN(token) return emit_token(token, start_line); #define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ @@ -2244,7 +2263,7 @@ skip_escape_conversion: } heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = -1; + heredoc_label->indentation = 0; saved_cursor = YYCURSOR; zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); @@ -2286,58 +2305,47 @@ skip_escape_conversion: YYCURSOR = saved_cursor; } - if (is_heredoc) { - int indentation; + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { + zend_lex_state current_state; + int heredoc_nesting_level = 1; - saved_cursor = YYCURSOR--; + zend_save_lexical_state(¤t_state); - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; + SCNG(heredoc_scan_ahead) = 1; - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; + zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + zend_stack_apply(¤t_state.state_stack, ZEND_STACK_APPLY_BOTTOMUP, copy_state_stack); // necessary? - if (IS_LABEL_START(*end)) { - continue; - } + while (heredoc_nesting_level) { + zval zv; + int retval; - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } + ZVAL_UNDEF(&zv); + retval = lex_scan(&zv); + zval_dtor(&zv); - heredoc_label->indentation = indentation; - heredoc_label->indentation_uses_spaces = (spacing == HEREDOC_USING_SPACES); + if (EG(exception)) { + zend_restore_lexical_state(¤t_state); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); // return something else on error? perhaps retval? + } - YYCURSOR = YYLIMIT; - } + switch (retval) { + case T_START_HEREDOC: + ++heredoc_nesting_level; + break; + case T_END_HEREDOC: + --heredoc_nesting_level; + break; + case END: + heredoc_nesting_level = 0; } } - YYCURSOR = saved_cursor; + heredoc_label->indentation = SCNG(heredoc_indentation); + heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); + + zend_restore_lexical_state(¤t_state); + SCNG(heredoc_scan_ahead) = 0; } RETURN_TOKEN(T_START_HEREDOC); @@ -2484,7 +2492,7 @@ double_quotes_scan_done: {ANY_CHAR} { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); - int newline = 0, indentation = 0; + int newline = 0, indentation = 0, spacing = 0; if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2500,8 +2508,20 @@ double_quotes_scan_done: } /* fall through */ case '\n': - while (*YYCURSOR == ' ' || *YYCURSOR == '\t') { + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } /* Check for ending label on the next line */ @@ -2512,6 +2532,11 @@ double_quotes_scan_done: continue; } + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + if (*end == ';') { end++; } @@ -2524,7 +2549,8 @@ double_quotes_scan_done: newline = 1; } - indentation = heredoc_label->indentation; + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); CG(increment_lineno) = 1; BEGIN(ST_END_HEREDOC); @@ -2557,9 +2583,10 @@ double_quotes_scan_done: heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng - indentation); + ZVAL_STRINGL(zendlval, yytext, yyleng); - if (strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { zend_string *copy = Z_STR_P(zendlval); zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); diff --git a/Zend/zend_ptr_stack.c b/Zend/zend_ptr_stack.c index 97643dc47daf0..0c053c5ba4a46 100644 --- a/Zend/zend_ptr_stack.c +++ b/Zend/zend_ptr_stack.c @@ -90,6 +90,15 @@ ZEND_API void zend_ptr_stack_apply(zend_ptr_stack *stack, void (*func)(void *)) } } +ZEND_API void zend_ptr_stack_reverse_apply(zend_ptr_stack *stack, void (*func)(void *)) +{ + int i = 0; + + while (i < stack->top) { + func(stack->elements[i++]); + } +} + ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *), zend_bool free_elements) { diff --git a/Zend/zend_ptr_stack.h b/Zend/zend_ptr_stack.h index 80aa8bb252989..01c1e0b87acde 100644 --- a/Zend/zend_ptr_stack.h +++ b/Zend/zend_ptr_stack.h @@ -39,6 +39,7 @@ ZEND_API void zend_ptr_stack_n_push(zend_ptr_stack *stack, int count, ...); ZEND_API void zend_ptr_stack_n_pop(zend_ptr_stack *stack, int count, ...); ZEND_API void zend_ptr_stack_destroy(zend_ptr_stack *stack); ZEND_API void zend_ptr_stack_apply(zend_ptr_stack *stack, void (*func)(void *)); +ZEND_API void zend_ptr_stack_reverse_apply(zend_ptr_stack *stack, void (*func)(void *)); ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *), zend_bool free_elements); ZEND_API int zend_ptr_stack_num_elements(zend_ptr_stack *stack); END_EXTERN_C() From ef81d0921afc18cfedf77b972a55f8c6d824b116 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 11 Dec 2017 15:50:07 +0000 Subject: [PATCH 16/54] Fix compile globals line number (ignore forward scans) --- Zend/tests/flexible-heredoc-lineno.phpt | 24 ++ Zend/zend_language_scanner.c | 325 ++++++++++++------------ Zend/zend_language_scanner.l | 9 +- 3 files changed, 194 insertions(+), 164 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-lineno.phpt diff --git a/Zend/tests/flexible-heredoc-lineno.phpt b/Zend/tests/flexible-heredoc-lineno.phpt new file mode 100644 index 0000000000000..b1e0fb50c15e3 --- /dev/null +++ b/Zend/tests/flexible-heredoc-lineno.phpt @@ -0,0 +1,24 @@ +--TEST-- +Flexible heredoc lineno: ensure the compiler globals line number is correct +--FILE-- +getLine()); +} +--EXPECTF-- +int(16) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 6fe114bc9189c..4c534485dc3dd 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1992,10 +1992,13 @@ int start_line = CG(zend_lineno); newline = 1; } - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + if (SCNG(heredoc_scan_ahead)) { + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + } else { + CG(increment_lineno) = 1; + } - CG(increment_lineno) = 1; BEGIN(ST_END_HEREDOC); goto heredoc_scan_done; @@ -2038,7 +2041,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1999 "Zend/zend_language_scanner.c" +#line 2002 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2060,7 +2063,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 2021 "Zend/zend_language_scanner.c" +#line 2024 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2080,7 +2083,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2042 "Zend/zend_language_scanner.c" +#line 2045 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2091,7 +2094,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2053 "Zend/zend_language_scanner.c" +#line 2056 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2111,7 +2114,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2074 "Zend/zend_language_scanner.c" +#line 2077 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2135,7 +2138,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2099 "Zend/zend_language_scanner.c" +#line 2102 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2322,7 +2325,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2286 "Zend/zend_language_scanner.c" +#line 2289 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2558,7 +2561,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2522 "Zend/zend_language_scanner.c" +#line 2525 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2572,7 +2575,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2536 "Zend/zend_language_scanner.c" +#line 2539 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2587,7 +2590,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2551 "Zend/zend_language_scanner.c" +#line 2554 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2821,7 +2824,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2785 "Zend/zend_language_scanner.c" +#line 2788 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; @@ -2835,7 +2838,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2799 "Zend/zend_language_scanner.c" +#line 2802 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2906,7 +2909,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2870 "Zend/zend_language_scanner.c" +#line 2873 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2963,7 +2966,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2927 "Zend/zend_language_scanner.c" +#line 2930 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; @@ -3038,7 +3041,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 3002 "Zend/zend_language_scanner.c" +#line 3005 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; @@ -3086,7 +3089,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3050 "Zend/zend_language_scanner.c" +#line 3053 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; @@ -3097,13 +3100,13 @@ int start_line = CG(zend_lineno); BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3061 "Zend/zend_language_scanner.c" +#line 3064 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2595 "Zend/zend_language_scanner.l" +#line 2598 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3112,7 +3115,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3076 "Zend/zend_language_scanner.c" +#line 3079 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3148,7 +3151,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3112 "Zend/zend_language_scanner.c" +#line 3115 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3272,7 +3275,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3236 "Zend/zend_language_scanner.c" +#line 3239 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3312,7 +3315,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3276 "Zend/zend_language_scanner.c" +#line 3279 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3342,7 +3345,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3306 "Zend/zend_language_scanner.c" +#line 3309 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3360,7 +3363,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3324 "Zend/zend_language_scanner.c" +#line 3327 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3373,7 +3376,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3337 "Zend/zend_language_scanner.c" +#line 3340 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3383,7 +3386,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3347 "Zend/zend_language_scanner.c" +#line 3350 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3393,7 +3396,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3357 "Zend/zend_language_scanner.c" +#line 3360 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3403,7 +3406,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 3367 "Zend/zend_language_scanner.c" +#line 3370 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3413,7 +3416,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3377 "Zend/zend_language_scanner.c" +#line 3380 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3423,7 +3426,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3387 "Zend/zend_language_scanner.c" +#line 3390 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3433,7 +3436,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3397 "Zend/zend_language_scanner.c" +#line 3400 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3481,7 +3484,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3439 "Zend/zend_language_scanner.c" +#line 3442 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3495,7 +3498,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3453 "Zend/zend_language_scanner.c" +#line 3456 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3523,7 +3526,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3481 "Zend/zend_language_scanner.c" +#line 3484 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; @@ -3533,7 +3536,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3491 "Zend/zend_language_scanner.c" +#line 3494 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; @@ -3543,7 +3546,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 3501 "Zend/zend_language_scanner.c" +#line 3504 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; @@ -3554,7 +3557,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3512 "Zend/zend_language_scanner.c" +#line 3515 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3564,7 +3567,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3522 "Zend/zend_language_scanner.c" +#line 3525 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; @@ -3574,7 +3577,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 3532 "Zend/zend_language_scanner.c" +#line 3535 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3589,7 +3592,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3547 "Zend/zend_language_scanner.c" +#line 3550 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3600,7 +3603,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3558 "Zend/zend_language_scanner.c" +#line 3561 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3611,7 +3614,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3569 "Zend/zend_language_scanner.c" +#line 3572 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3621,7 +3624,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 3579 "Zend/zend_language_scanner.c" +#line 3582 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3631,7 +3634,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 3589 "Zend/zend_language_scanner.c" +#line 3592 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3855,7 +3858,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3813 "Zend/zend_language_scanner.c" +#line 3816 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3899,7 +3902,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3857 "Zend/zend_language_scanner.c" +#line 3860 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3909,7 +3912,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3867 "Zend/zend_language_scanner.c" +#line 3870 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; @@ -3919,7 +3922,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3877 "Zend/zend_language_scanner.c" +#line 3880 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3942,7 +3945,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 3900 "Zend/zend_language_scanner.c" +#line 3903 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3953,7 +3956,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3911 "Zend/zend_language_scanner.c" +#line 3914 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3963,7 +3966,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3921 "Zend/zend_language_scanner.c" +#line 3924 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3973,7 +3976,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3931 "Zend/zend_language_scanner.c" +#line 3934 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4106,7 +4109,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 4064 "Zend/zend_language_scanner.c" +#line 4067 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4130,7 +4133,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 4088 "Zend/zend_language_scanner.c" +#line 4091 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4159,7 +4162,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 4117 "Zend/zend_language_scanner.c" +#line 4120 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4198,7 +4201,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 4156 "Zend/zend_language_scanner.c" +#line 4159 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4253,7 +4256,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 4211 "Zend/zend_language_scanner.c" +#line 4214 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4277,7 +4280,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 4235 "Zend/zend_language_scanner.c" +#line 4238 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4311,7 +4314,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 4269 "Zend/zend_language_scanner.c" +#line 4272 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4345,7 +4348,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 4303 "Zend/zend_language_scanner.c" +#line 4306 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4411,7 +4414,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4369 "Zend/zend_language_scanner.c" +#line 4372 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4435,7 +4438,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4393 "Zend/zend_language_scanner.c" +#line 4396 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4458,7 +4461,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 4416 "Zend/zend_language_scanner.c" +#line 4419 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4634,7 +4637,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 4592 "Zend/zend_language_scanner.c" +#line 4595 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4682,7 +4685,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4640 "Zend/zend_language_scanner.c" +#line 4643 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4756,7 +4759,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 4714 "Zend/zend_language_scanner.c" +#line 4717 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4793,7 +4796,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4751 "Zend/zend_language_scanner.c" +#line 4754 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4835,7 +4838,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4793 "Zend/zend_language_scanner.c" +#line 4796 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4880,7 +4883,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 4838 "Zend/zend_language_scanner.c" +#line 4841 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4944,7 +4947,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 4902 "Zend/zend_language_scanner.c" +#line 4905 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4962,7 +4965,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4920 "Zend/zend_language_scanner.c" +#line 4923 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4986,7 +4989,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4944 "Zend/zend_language_scanner.c" +#line 4947 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -5029,7 +5032,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 4987 "Zend/zend_language_scanner.c" +#line 4990 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5046,7 +5049,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 5004 "Zend/zend_language_scanner.c" +#line 5007 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; @@ -5056,7 +5059,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 5014 "Zend/zend_language_scanner.c" +#line 5017 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5091,7 +5094,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5049 "Zend/zend_language_scanner.c" +#line 5052 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5104,7 +5107,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 5062 "Zend/zend_language_scanner.c" +#line 5065 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -5114,7 +5117,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5072 "Zend/zend_language_scanner.c" +#line 5075 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5140,7 +5143,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5098 "Zend/zend_language_scanner.c" +#line 5101 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -5150,7 +5153,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 5108 "Zend/zend_language_scanner.c" +#line 5111 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; @@ -5161,7 +5164,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5119 "Zend/zend_language_scanner.c" +#line 5122 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5210,7 +5213,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5168 "Zend/zend_language_scanner.c" +#line 5171 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5269,7 +5272,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 5227 "Zend/zend_language_scanner.c" +#line 5230 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5303,7 +5306,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5261 "Zend/zend_language_scanner.c" +#line 5264 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5316,7 +5319,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5274 "Zend/zend_language_scanner.c" +#line 5277 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5345,7 +5348,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5303 "Zend/zend_language_scanner.c" +#line 5306 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5373,7 +5376,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5331 "Zend/zend_language_scanner.c" +#line 5334 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5414,7 +5417,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5372 "Zend/zend_language_scanner.c" +#line 5375 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5458,7 +5461,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5416 "Zend/zend_language_scanner.c" +#line 5419 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5486,7 +5489,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5444 "Zend/zend_language_scanner.c" +#line 5447 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5517,7 +5520,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 5475 "Zend/zend_language_scanner.c" +#line 5478 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5540,7 +5543,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5498 "Zend/zend_language_scanner.c" +#line 5501 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5553,7 +5556,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5511 "Zend/zend_language_scanner.c" +#line 5514 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5591,7 +5594,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5549 "Zend/zend_language_scanner.c" +#line 5552 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5619,7 +5622,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5577 "Zend/zend_language_scanner.c" +#line 5580 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5632,7 +5635,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 5590 "Zend/zend_language_scanner.c" +#line 5593 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5688,7 +5691,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5646 "Zend/zend_language_scanner.c" +#line 5649 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5746,7 +5749,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5704 "Zend/zend_language_scanner.c" +#line 5707 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5779,7 +5782,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5737 "Zend/zend_language_scanner.c" +#line 5740 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5817,7 +5820,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 5775 "Zend/zend_language_scanner.c" +#line 5778 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5871,7 +5874,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 5829 "Zend/zend_language_scanner.c" +#line 5832 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5904,7 +5907,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 5862 "Zend/zend_language_scanner.c" +#line 5865 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5952,7 +5955,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5910 "Zend/zend_language_scanner.c" +#line 5913 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5984,7 +5987,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 5942 "Zend/zend_language_scanner.c" +#line 5945 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -6007,7 +6010,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5965 "Zend/zend_language_scanner.c" +#line 5968 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -6030,7 +6033,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5988 "Zend/zend_language_scanner.c" +#line 5991 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6067,7 +6070,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 6025 "Zend/zend_language_scanner.c" +#line 6028 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6133,7 +6136,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6091 "Zend/zend_language_scanner.c" +#line 6094 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6198,7 +6201,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6156 "Zend/zend_language_scanner.c" +#line 6159 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6231,7 +6234,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6189 "Zend/zend_language_scanner.c" +#line 6192 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6254,7 +6257,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6212 "Zend/zend_language_scanner.c" +#line 6215 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6348,7 +6351,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6306 "Zend/zend_language_scanner.c" +#line 6309 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6361,7 +6364,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 6319 "Zend/zend_language_scanner.c" +#line 6322 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6390,7 +6393,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 6348 "Zend/zend_language_scanner.c" +#line 6351 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6408,7 +6411,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 6366 "Zend/zend_language_scanner.c" +#line 6369 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6458,7 +6461,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6416 "Zend/zend_language_scanner.c" +#line 6419 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6471,7 +6474,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 6429 "Zend/zend_language_scanner.c" +#line 6432 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6489,7 +6492,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 6447 "Zend/zend_language_scanner.c" +#line 6450 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6544,7 +6547,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6502 "Zend/zend_language_scanner.c" +#line 6505 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6572,7 +6575,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 6530 "Zend/zend_language_scanner.c" +#line 6533 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6600,7 +6603,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6558 "Zend/zend_language_scanner.c" +#line 6561 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6638,7 +6641,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 6596 "Zend/zend_language_scanner.c" +#line 6599 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6656,7 +6659,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6614 "Zend/zend_language_scanner.c" +#line 6617 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6691,7 +6694,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 6649 "Zend/zend_language_scanner.c" +#line 6652 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6704,7 +6707,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6662 "Zend/zend_language_scanner.c" +#line 6665 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6743,7 +6746,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6701 "Zend/zend_language_scanner.c" +#line 6704 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6771,7 +6774,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6729 "Zend/zend_language_scanner.c" +#line 6732 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6855,7 +6858,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6813 "Zend/zend_language_scanner.c" +#line 6816 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6868,7 +6871,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 6826 "Zend/zend_language_scanner.c" +#line 6829 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6886,7 +6889,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 6844 "Zend/zend_language_scanner.c" +#line 6847 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6959,7 +6962,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6917 "Zend/zend_language_scanner.c" +#line 6920 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6992,7 +6995,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6950 "Zend/zend_language_scanner.c" +#line 6953 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -7005,7 +7008,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 6963 "Zend/zend_language_scanner.c" +#line 6966 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7038,7 +7041,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6996 "Zend/zend_language_scanner.c" +#line 6999 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7066,7 +7069,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 7024 "Zend/zend_language_scanner.c" +#line 7027 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7104,7 +7107,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7062 "Zend/zend_language_scanner.c" +#line 7065 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7127,7 +7130,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 7085 "Zend/zend_language_scanner.c" +#line 7088 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7160,7 +7163,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 7118 "Zend/zend_language_scanner.c" +#line 7121 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7178,7 +7181,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 7136 "Zend/zend_language_scanner.c" +#line 7139 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7196,7 +7199,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 7154 "Zend/zend_language_scanner.c" +#line 7157 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7273,7 +7276,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7232 "Zend/zend_language_scanner.c" +#line 7235 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7287,7 +7290,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7246 "Zend/zend_language_scanner.c" +#line 7249 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7301,7 +7304,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7261 "Zend/zend_language_scanner.c" +#line 7264 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7326,7 +7329,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7286 "Zend/zend_language_scanner.c" +#line 7289 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7418,7 +7421,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7378 "Zend/zend_language_scanner.c" +#line 7381 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7452,7 +7455,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7413 "Zend/zend_language_scanner.c" +#line 7416 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7463,7 +7466,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2510 "Zend/zend_language_scanner.l" +#line 2513 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7547,7 +7550,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7508 "Zend/zend_language_scanner.c" +#line 7511 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7667,7 +7670,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7628 "Zend/zend_language_scanner.c" +#line 7631 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7692,7 +7695,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7653 "Zend/zend_language_scanner.c" +#line 7656 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7703,7 +7706,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7664 "Zend/zend_language_scanner.c" +#line 7667 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7721,7 +7724,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7682 "Zend/zend_language_scanner.c" +#line 7685 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7734,13 +7737,13 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7696 "Zend/zend_language_scanner.c" +#line 7699 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2595 "Zend/zend_language_scanner.l" +#line 2598 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7749,7 +7752,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7711 "Zend/zend_language_scanner.c" +#line 7714 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7789,7 +7792,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7752 "Zend/zend_language_scanner.c" +#line 7755 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7834,7 +7837,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7797 "Zend/zend_language_scanner.c" +#line 7800 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7857,7 +7860,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2604 "Zend/zend_language_scanner.l" +#line 2607 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index b2e4410542d7c..d36c49f2e4b30 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2549,10 +2549,13 @@ double_quotes_scan_done: newline = 1; } - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + if (SCNG(heredoc_scan_ahead)) { + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + } else { + CG(increment_lineno) = 1; + } - CG(increment_lineno) = 1; BEGIN(ST_END_HEREDOC); goto heredoc_scan_done; From 6bd382154168f096eb66543d536de450bacb4ef5 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sat, 16 Dec 2017 13:21:34 +0000 Subject: [PATCH 17/54] Copying the state stack shouldn't be necessary. Also, just return retval --- Zend/zend_language_scanner.c | 705 +++++++++++++++++------------------ Zend/zend_language_scanner.l | 9 +- 2 files changed, 350 insertions(+), 364 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 4c534485dc3dd..1c456b2392129 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1181,12 +1181,6 @@ static void copy_heredoc_label_stack(void *void_heredoc_label) zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); } -static int copy_state_stack(void *void_state) -{ - zend_stack_push(&SCNG(state_stack), void_state); - return SUCCESS; -} - #define RETURN_TOKEN(token) return emit_token(token, start_line); #define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ @@ -1211,7 +1205,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1185 "Zend/zend_language_scanner.c" +#line 1177 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1264,7 +1258,7 @@ int start_line = CG(zend_lineno); yy4: YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1876 "Zend/zend_language_scanner.l" +#line 1868 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1311,7 +1305,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1283 "Zend/zend_language_scanner.c" +#line 1275 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; @@ -1328,7 +1322,7 @@ int start_line = CG(zend_lineno); yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" +#line 1859 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1340,13 +1334,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1309 "Zend/zend_language_scanner.c" +#line 1301 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1846 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -1354,7 +1348,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1320 "Zend/zend_language_scanner.c" +#line 1312 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); yych = *++YYCURSOR; @@ -1385,7 +1379,7 @@ int start_line = CG(zend_lineno); yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1860 "Zend/zend_language_scanner.l" +#line 1852 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -1394,7 +1388,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 1357 "Zend/zend_language_scanner.c" +#line 1349 "Zend/zend_language_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; @@ -1464,7 +1458,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2361 "Zend/zend_language_scanner.l" +#line 2352 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1509,7 +1503,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1468 "Zend/zend_language_scanner.c" +#line 1460 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1520,12 +1514,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2305 "Zend/zend_language_scanner.l" +#line 2296 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1484 "Zend/zend_language_scanner.c" +#line 1476 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; @@ -1535,14 +1529,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2292 "Zend/zend_language_scanner.l" +#line 2283 "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 1501 "Zend/zend_language_scanner.c" +#line 1493 "Zend/zend_language_scanner.c" yy27: YYDEBUG(27, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1558,22 +1552,22 @@ int start_line = CG(zend_lineno); yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1522 "Zend/zend_language_scanner.c" +#line 1514 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1533 "Zend/zend_language_scanner.c" +#line 1525 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1587,13 +1581,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1934 "Zend/zend_language_scanner.l" +#line 1926 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1554 "Zend/zend_language_scanner.c" +#line 1546 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1611,13 +1605,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1579 "Zend/zend_language_scanner.c" +#line 1571 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1685,7 +1679,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2311 "Zend/zend_language_scanner.l" +#line 2302 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1738,7 +1732,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 1696 "Zend/zend_language_scanner.c" +#line 1688 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1749,12 +1743,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2300 "Zend/zend_language_scanner.l" +#line 2291 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1712 "Zend/zend_language_scanner.c" +#line 1704 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1764,14 +1758,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2292 "Zend/zend_language_scanner.l" +#line 2283 "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 1729 "Zend/zend_language_scanner.c" +#line 1721 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -1787,22 +1781,22 @@ int start_line = CG(zend_lineno); yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1750 "Zend/zend_language_scanner.c" +#line 1742 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1761 "Zend/zend_language_scanner.c" +#line 1753 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1816,13 +1810,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1934 "Zend/zend_language_scanner.l" +#line 1926 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1782 "Zend/zend_language_scanner.c" +#line 1774 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1840,13 +1834,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1807 "Zend/zend_language_scanner.c" +#line 1799 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1857,7 +1851,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2278 "Zend/zend_language_scanner.l" +#line 2269 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1870,7 +1864,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1831 "Zend/zend_language_scanner.c" +#line 1823 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1932,7 +1926,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2403 "Zend/zend_language_scanner.l" +#line 2394 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -2041,7 +2035,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 2002 "Zend/zend_language_scanner.c" +#line 1994 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2056,14 +2050,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2292 "Zend/zend_language_scanner.l" +#line 2283 "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 2024 "Zend/zend_language_scanner.c" +#line 2016 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); YYMARKER = ++YYCURSOR; @@ -2079,22 +2073,22 @@ int start_line = CG(zend_lineno); yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2045 "Zend/zend_language_scanner.c" +#line 2037 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2056 "Zend/zend_language_scanner.c" +#line 2048 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2108,13 +2102,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1934 "Zend/zend_language_scanner.l" +#line 1926 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2077 "Zend/zend_language_scanner.c" +#line 2069 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2132,13 +2126,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2102 "Zend/zend_language_scanner.c" +#line 2094 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2320,12 +2314,12 @@ int start_line = CG(zend_lineno); yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1964 "Zend/zend_language_scanner.l" +#line 1956 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2289 "Zend/zend_language_scanner.c" +#line 2281 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2557,11 +2551,11 @@ int start_line = CG(zend_lineno); yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1650 "Zend/zend_language_scanner.l" +#line 1642 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2525 "Zend/zend_language_scanner.c" +#line 2517 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2570,12 +2564,12 @@ int start_line = CG(zend_lineno); yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1365 "Zend/zend_language_scanner.l" +#line 1357 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2539 "Zend/zend_language_scanner.c" +#line 2531 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2586,11 +2580,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2554 "Zend/zend_language_scanner.c" +#line 2546 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2819,18 +2813,18 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1655 "Zend/zend_language_scanner.l" +#line 1647 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2788 "Zend/zend_language_scanner.c" +#line 2780 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1667 "Zend/zend_language_scanner.l" +#line 1659 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2838,7 +2832,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2802 "Zend/zend_language_scanner.c" +#line 2794 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2866,7 +2860,7 @@ int start_line = CG(zend_lineno); yy137: YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1720 "Zend/zend_language_scanner.l" +#line 1712 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2909,7 +2903,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2873 "Zend/zend_language_scanner.c" +#line 2865 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2937,7 +2931,7 @@ int start_line = CG(zend_lineno); yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1970 "Zend/zend_language_scanner.l" +#line 1962 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2966,14 +2960,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2930 "Zend/zend_language_scanner.c" +#line 2922 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; yy143: YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2041 "Zend/zend_language_scanner.l" +#line 2033 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3041,14 +3035,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 3005 "Zend/zend_language_scanner.c" +#line 2997 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2110 "Zend/zend_language_scanner.l" +#line 2102 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3089,24 +3083,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 3053 "Zend/zend_language_scanner.c" +#line 3045 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2272 "Zend/zend_language_scanner.l" +#line 2263 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3064 "Zend/zend_language_scanner.c" +#line 3056 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2598 "Zend/zend_language_scanner.l" +#line 2589 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3115,7 +3109,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3079 "Zend/zend_language_scanner.c" +#line 3071 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -3142,7 +3136,7 @@ int start_line = CG(zend_lineno); yy154: YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1804 "Zend/zend_language_scanner.l" { const char *end; @@ -3151,7 +3145,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3115 "Zend/zend_language_scanner.c" +#line 3107 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3247,7 +3241,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" +#line 1684 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3275,7 +3269,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3239 "Zend/zend_language_scanner.c" +#line 3231 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3287,7 +3281,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1763 "Zend/zend_language_scanner.l" +#line 1755 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3315,7 +3309,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3279 "Zend/zend_language_scanner.c" +#line 3271 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3340,12 +3334,12 @@ int start_line = CG(zend_lineno); yy172: YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3309 "Zend/zend_language_scanner.c" +#line 3301 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3359,11 +3353,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1638 "Zend/zend_language_scanner.l" +#line 1630 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3327 "Zend/zend_language_scanner.c" +#line 3319 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3372,71 +3366,71 @@ int start_line = CG(zend_lineno); } YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1630 "Zend/zend_language_scanner.l" +#line 1622 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3340 "Zend/zend_language_scanner.c" +#line 3332 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1618 "Zend/zend_language_scanner.l" +#line 1610 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3350 "Zend/zend_language_scanner.c" +#line 3342 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1622 "Zend/zend_language_scanner.l" +#line 1614 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3360 "Zend/zend_language_scanner.c" +#line 3352 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1614 "Zend/zend_language_scanner.l" +#line 1606 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3370 "Zend/zend_language_scanner.c" +#line 3362 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1626 "Zend/zend_language_scanner.l" +#line 1618 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3380 "Zend/zend_language_scanner.c" +#line 3372 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1610 "Zend/zend_language_scanner.l" +#line 1602 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3390 "Zend/zend_language_scanner.c" +#line 3382 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1598 "Zend/zend_language_scanner.l" +#line 1590 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3400 "Zend/zend_language_scanner.c" +#line 3392 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3445,7 +3439,7 @@ int start_line = CG(zend_lineno); yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1999 "Zend/zend_language_scanner.l" +#line 1991 "Zend/zend_language_scanner.l" { int doc_com; @@ -3484,7 +3478,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3442 "Zend/zend_language_scanner.c" +#line 3434 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3494,11 +3488,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1590 "Zend/zend_language_scanner.l" +#line 1582 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3456 "Zend/zend_language_scanner.c" +#line 3448 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3522,62 +3516,62 @@ int start_line = CG(zend_lineno); if ((yych = *YYCURSOR) == '=') goto yy202; YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1582 "Zend/zend_language_scanner.l" +#line 1574 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3484 "Zend/zend_language_scanner.c" +#line 3476 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1578 "Zend/zend_language_scanner.l" +#line 1570 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3494 "Zend/zend_language_scanner.c" +#line 3486 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1586 "Zend/zend_language_scanner.l" +#line 1578 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3504 "Zend/zend_language_scanner.c" +#line 3496 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy208; YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1646 "Zend/zend_language_scanner.l" +#line 1638 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3515 "Zend/zend_language_scanner.c" +#line 3507 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1558 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3525 "Zend/zend_language_scanner.c" +#line 3517 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1606 "Zend/zend_language_scanner.l" +#line 1598 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3535 "Zend/zend_language_scanner.c" +#line 3527 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3588,53 +3582,53 @@ int start_line = CG(zend_lineno); yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" +#line 1634 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3550 "Zend/zend_language_scanner.c" +#line 3542 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy216; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" +#line 1554 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3561 "Zend/zend_language_scanner.c" +#line 3553 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; yy215: YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3572 "Zend/zend_language_scanner.c" +#line 3564 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1550 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3582 "Zend/zend_language_scanner.c" +#line 3574 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1594 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3592 "Zend/zend_language_scanner.c" +#line 3584 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3739,7 +3733,7 @@ int start_line = CG(zend_lineno); yy230: YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2152 "Zend/zend_language_scanner.l" +#line 2144 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -3822,7 +3816,6 @@ int start_line = CG(zend_lineno); SCNG(heredoc_scan_ahead) = 1; zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - zend_stack_apply(¤t_state.state_stack, ZEND_STACK_APPLY_BOTTOMUP, copy_state_stack); // necessary? while (heredoc_nesting_level) { zval zv; @@ -3834,7 +3827,7 @@ int start_line = CG(zend_lineno); if (EG(exception)) { zend_restore_lexical_state(¤t_state); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); // return something else on error? perhaps retval? + RETURN_TOKEN(retval); } switch (retval) { @@ -3858,7 +3851,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3816 "Zend/zend_language_scanner.c" +#line 3807 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3898,31 +3891,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3860 "Zend/zend_language_scanner.c" +#line 3851 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1562 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3870 "Zend/zend_language_scanner.c" +#line 3861 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1526 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3880 "Zend/zend_language_scanner.c" +#line 3871 "Zend/zend_language_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -3941,42 +3934,42 @@ int start_line = CG(zend_lineno); } YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3903 "Zend/zend_language_scanner.c" +#line 3894 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy249; YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3914 "Zend/zend_language_scanner.c" +#line 3905 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1510 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3924 "Zend/zend_language_scanner.c" +#line 3915 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3934 "Zend/zend_language_scanner.c" +#line 3925 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; @@ -4105,11 +4098,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(270, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1849 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 4067 "Zend/zend_language_scanner.c" +#line 4058 "Zend/zend_language_scanner.c" yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; @@ -4129,11 +4122,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1845 "Zend/zend_language_scanner.l" +#line 1837 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 4091 "Zend/zend_language_scanner.c" +#line 4082 "Zend/zend_language_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; @@ -4158,11 +4151,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(281, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1829 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 4120 "Zend/zend_language_scanner.c" +#line 4111 "Zend/zend_language_scanner.c" yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; @@ -4197,11 +4190,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(289, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1833 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 4159 "Zend/zend_language_scanner.c" +#line 4150 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -4252,11 +4245,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 1821 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4214 "Zend/zend_language_scanner.c" +#line 4205 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4276,11 +4269,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1841 "Zend/zend_language_scanner.l" +#line 1833 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4238 "Zend/zend_language_scanner.c" +#line 4229 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; @@ -4310,11 +4303,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(312, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1825 "Zend/zend_language_scanner.l" +#line 1817 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4272 "Zend/zend_language_scanner.c" +#line 4263 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4344,11 +4337,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1821 "Zend/zend_language_scanner.l" +#line 1813 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4306 "Zend/zend_language_scanner.c" +#line 4297 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4410,11 +4403,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4372 "Zend/zend_language_scanner.c" +#line 4363 "Zend/zend_language_scanner.c" yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; @@ -4434,11 +4427,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4396 "Zend/zend_language_scanner.c" +#line 4387 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; @@ -4457,11 +4450,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4419 "Zend/zend_language_scanner.c" +#line 4410 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; @@ -4633,11 +4626,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4595 "Zend/zend_language_scanner.c" +#line 4586 "Zend/zend_language_scanner.c" yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; @@ -4681,11 +4674,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4643 "Zend/zend_language_scanner.c" +#line 4634 "Zend/zend_language_scanner.c" yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; @@ -4755,11 +4748,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(381, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4717 "Zend/zend_language_scanner.c" +#line 4708 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4792,11 +4785,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(388, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4754 "Zend/zend_language_scanner.c" +#line 4745 "Zend/zend_language_scanner.c" yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; @@ -4834,11 +4827,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(396, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4796 "Zend/zend_language_scanner.c" +#line 4787 "Zend/zend_language_scanner.c" yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; @@ -4879,11 +4872,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4841 "Zend/zend_language_scanner.c" +#line 4832 "Zend/zend_language_scanner.c" yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; @@ -4943,11 +4936,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(416, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4905 "Zend/zend_language_scanner.c" +#line 4896 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4961,11 +4954,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(419, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4923 "Zend/zend_language_scanner.c" +#line 4914 "Zend/zend_language_scanner.c" yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; @@ -4985,11 +4978,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(423, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4947 "Zend/zend_language_scanner.c" +#line 4938 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -5028,11 +5021,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" +#line 1454 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4990 "Zend/zend_language_scanner.c" +#line 4981 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -5041,7 +5034,7 @@ int start_line = CG(zend_lineno); yy433: YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2032 "Zend/zend_language_scanner.l" +#line 2024 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -5049,17 +5042,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 5007 "Zend/zend_language_scanner.c" +#line 4998 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); ++YYCURSOR; YYDEBUG(435, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 5017 "Zend/zend_language_scanner.c" +#line 5008 "Zend/zend_language_scanner.c" yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; @@ -5090,11 +5083,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1594 "Zend/zend_language_scanner.l" +#line 1586 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 5052 "Zend/zend_language_scanner.c" +#line 5043 "Zend/zend_language_scanner.c" yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; @@ -5103,21 +5096,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 5065 "Zend/zend_language_scanner.c" +#line 5056 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1378 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 5075 "Zend/zend_language_scanner.c" +#line 5066 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); ++YYCURSOR; @@ -5139,32 +5132,32 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" +#line 1566 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 5101 "Zend/zend_language_scanner.c" +#line 5092 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1530 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 5111 "Zend/zend_language_scanner.c" +#line 5102 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1360 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 5122 "Zend/zend_language_scanner.c" +#line 5113 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5209,11 +5202,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" +#line 1502 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5171 "Zend/zend_language_scanner.c" +#line 5162 "Zend/zend_language_scanner.c" yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; @@ -5268,11 +5261,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(470, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1498 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5230 "Zend/zend_language_scanner.c" +#line 5221 "Zend/zend_language_scanner.c" yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; @@ -5302,11 +5295,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" +#line 1494 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5264 "Zend/zend_language_scanner.c" +#line 5255 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); ++YYCURSOR; @@ -5315,11 +5308,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(478, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1336 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5277 "Zend/zend_language_scanner.c" +#line 5268 "Zend/zend_language_scanner.c" yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; @@ -5344,11 +5337,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" +#line 1320 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5306 "Zend/zend_language_scanner.c" +#line 5297 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; @@ -5372,11 +5365,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" +#line 1466 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5334 "Zend/zend_language_scanner.c" +#line 5325 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; @@ -5413,11 +5406,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5375 "Zend/zend_language_scanner.c" +#line 5366 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5457,11 +5450,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(504, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5419 "Zend/zend_language_scanner.c" +#line 5410 "Zend/zend_language_scanner.c" yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; @@ -5485,11 +5478,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(509, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1482 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5447 "Zend/zend_language_scanner.c" +#line 5438 "Zend/zend_language_scanner.c" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -5516,11 +5509,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5478 "Zend/zend_language_scanner.c" +#line 5469 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5539,11 +5532,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5501 "Zend/zend_language_scanner.c" +#line 5492 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5552,11 +5545,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1634 "Zend/zend_language_scanner.l" +#line 1626 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5514 "Zend/zend_language_scanner.c" +#line 5505 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5590,11 +5583,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5552 "Zend/zend_language_scanner.c" +#line 5543 "Zend/zend_language_scanner.c" yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; @@ -5618,11 +5611,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" +#line 1252 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5580 "Zend/zend_language_scanner.c" +#line 5571 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); ++YYCURSOR; @@ -5631,11 +5624,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(534, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5593 "Zend/zend_language_scanner.c" +#line 5584 "Zend/zend_language_scanner.c" yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; @@ -5687,11 +5680,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5649 "Zend/zend_language_scanner.c" +#line 5640 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5745,11 +5738,11 @@ int start_line = CG(zend_lineno); yy549: YYDEBUG(549, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5707 "Zend/zend_language_scanner.c" +#line 5698 "Zend/zend_language_scanner.c" yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; @@ -5778,11 +5771,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5740 "Zend/zend_language_scanner.c" +#line 5731 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; @@ -5816,11 +5809,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5778 "Zend/zend_language_scanner.c" +#line 5769 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; @@ -5870,11 +5863,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5832 "Zend/zend_language_scanner.c" +#line 5823 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5903,11 +5896,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5865 "Zend/zend_language_scanner.c" +#line 5856 "Zend/zend_language_scanner.c" yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; @@ -5951,11 +5944,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1356 "Zend/zend_language_scanner.l" +#line 1348 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5913 "Zend/zend_language_scanner.c" +#line 5904 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5983,11 +5976,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" +#line 1220 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5945 "Zend/zend_language_scanner.c" +#line 5936 "Zend/zend_language_scanner.c" yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; @@ -6006,11 +5999,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5968 "Zend/zend_language_scanner.c" +#line 5959 "Zend/zend_language_scanner.c" yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; @@ -6029,11 +6022,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5991 "Zend/zend_language_scanner.c" +#line 5982 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6066,11 +6059,11 @@ int start_line = CG(zend_lineno); yy602: YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" +#line 1216 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 6028 "Zend/zend_language_scanner.c" +#line 6019 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6130,13 +6123,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6094 "Zend/zend_language_scanner.c" +#line 6085 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; @@ -6197,11 +6190,11 @@ int start_line = CG(zend_lineno); yy618: YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 6159 "Zend/zend_language_scanner.c" +#line 6150 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -6230,11 +6223,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" +#line 1450 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6192 "Zend/zend_language_scanner.c" +#line 6183 "Zend/zend_language_scanner.c" yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; @@ -6253,11 +6246,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 6215 "Zend/zend_language_scanner.c" +#line 6206 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; @@ -6347,11 +6340,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1324 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6309 "Zend/zend_language_scanner.c" +#line 6300 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); ++YYCURSOR; @@ -6360,11 +6353,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1202 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6322 "Zend/zend_language_scanner.c" +#line 6313 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6389,11 +6382,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1398 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6351 "Zend/zend_language_scanner.c" +#line 6342 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; @@ -6407,11 +6400,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(649, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6369 "Zend/zend_language_scanner.c" +#line 6360 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; @@ -6457,11 +6450,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6419 "Zend/zend_language_scanner.c" +#line 6410 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); ++YYCURSOR; @@ -6470,11 +6463,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6432 "Zend/zend_language_scanner.c" +#line 6423 "Zend/zend_language_scanner.c" yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; @@ -6488,11 +6481,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" +#line 1224 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6450 "Zend/zend_language_scanner.c" +#line 6441 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; @@ -6543,11 +6536,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1198 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6505 "Zend/zend_language_scanner.c" +#line 6496 "Zend/zend_language_scanner.c" yy674: YYDEBUG(674, *YYCURSOR); ++YYCURSOR; @@ -6571,11 +6564,11 @@ int start_line = CG(zend_lineno); yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1264 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6533 "Zend/zend_language_scanner.c" +#line 6524 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6599,11 +6592,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(680, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6561 "Zend/zend_language_scanner.c" +#line 6552 "Zend/zend_language_scanner.c" yy681: YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; @@ -6637,11 +6630,11 @@ int start_line = CG(zend_lineno); yy684: YYDEBUG(684, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6599 "Zend/zend_language_scanner.c" +#line 6590 "Zend/zend_language_scanner.c" yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; @@ -6655,11 +6648,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6617 "Zend/zend_language_scanner.c" +#line 6608 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; @@ -6690,11 +6683,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" +#line 1260 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6652 "Zend/zend_language_scanner.c" +#line 6643 "Zend/zend_language_scanner.c" yy692: YYDEBUG(692, *YYCURSOR); ++YYCURSOR; @@ -6703,11 +6696,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1194 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6665 "Zend/zend_language_scanner.c" +#line 6656 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6742,11 +6735,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(700, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6704 "Zend/zend_language_scanner.c" +#line 6695 "Zend/zend_language_scanner.c" yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; @@ -6770,11 +6763,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(705, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" +#line 1280 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6732 "Zend/zend_language_scanner.c" +#line 6723 "Zend/zend_language_scanner.c" yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; @@ -6854,11 +6847,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" +#line 1344 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6816 "Zend/zend_language_scanner.c" +#line 6807 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); ++YYCURSOR; @@ -6867,11 +6860,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1198 "Zend/zend_language_scanner.l" +#line 1190 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6829 "Zend/zend_language_scanner.c" +#line 6820 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6885,11 +6878,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6847 "Zend/zend_language_scanner.c" +#line 6838 "Zend/zend_language_scanner.c" yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; @@ -6958,11 +6951,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" +#line 1256 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6920 "Zend/zend_language_scanner.c" +#line 6911 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6991,11 +6984,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6953 "Zend/zend_language_scanner.c" +#line 6944 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; @@ -7004,11 +6997,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6966 "Zend/zend_language_scanner.c" +#line 6957 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; @@ -7037,11 +7030,11 @@ int start_line = CG(zend_lineno); yy745: YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 1268 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6999 "Zend/zend_language_scanner.c" +#line 6990 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7065,11 +7058,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 7027 "Zend/zend_language_scanner.c" +#line 7018 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; @@ -7103,11 +7096,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1284 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 7065 "Zend/zend_language_scanner.c" +#line 7056 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -7126,11 +7119,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(761, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1474 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 7088 "Zend/zend_language_scanner.c" +#line 7079 "Zend/zend_language_scanner.c" yy762: YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; @@ -7159,11 +7152,11 @@ int start_line = CG(zend_lineno); yy764: YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" +#line 1248 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 7121 "Zend/zend_language_scanner.c" +#line 7112 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; @@ -7177,11 +7170,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(767, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" +#line 1240 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 7139 "Zend/zend_language_scanner.c" +#line 7130 "Zend/zend_language_scanner.c" yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; @@ -7195,11 +7188,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" +#line 1324 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 7157 "Zend/zend_language_scanner.c" +#line 7148 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7272,11 +7265,11 @@ int start_line = CG(zend_lineno); yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1365 "Zend/zend_language_scanner.l" +#line 1357 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 7235 "Zend/zend_language_scanner.c" +#line 7226 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); ++YYCURSOR; @@ -7284,13 +7277,13 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" +#line 1372 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7249 "Zend/zend_language_scanner.c" +#line 7240 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7299,12 +7292,12 @@ int start_line = CG(zend_lineno); yy778: YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1366 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7264 "Zend/zend_language_scanner.c" +#line 7255 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; @@ -7325,11 +7318,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7289 "Zend/zend_language_scanner.c" +#line 7280 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7414,14 +7407,14 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1685 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7381 "Zend/zend_language_scanner.c" +#line 7372 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7448,14 +7441,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1676 "Zend/zend_language_scanner.l" +#line 1668 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7416 "Zend/zend_language_scanner.c" +#line 7407 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7466,7 +7459,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2513 "Zend/zend_language_scanner.l" +#line 2504 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7550,7 +7543,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7511 "Zend/zend_language_scanner.c" +#line 7502 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7654,7 +7647,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1791 "Zend/zend_language_scanner.l" +#line 1783 "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; @@ -7670,7 +7663,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7631 "Zend/zend_language_scanner.c" +#line 7622 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; @@ -7690,23 +7683,23 @@ int start_line = CG(zend_lineno); yy806: YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1951 "Zend/zend_language_scanner.l" +#line 1943 "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 7656 "Zend/zend_language_scanner.c" +#line 7647 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1946 "Zend/zend_language_scanner.l" +#line 1938 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7667 "Zend/zend_language_scanner.c" +#line 7658 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; @@ -7716,7 +7709,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" +#line 1948 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7724,7 +7717,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7685 "Zend/zend_language_scanner.c" +#line 7676 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7733,17 +7726,17 @@ int start_line = CG(zend_lineno); yy813: YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1964 "Zend/zend_language_scanner.l" +#line 1956 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7699 "Zend/zend_language_scanner.c" +#line 7690 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYDEBUG(815, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2598 "Zend/zend_language_scanner.l" +#line 2589 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7752,7 +7745,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7714 "Zend/zend_language_scanner.c" +#line 7705 "Zend/zend_language_scanner.c" yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; @@ -7788,11 +7781,11 @@ int start_line = CG(zend_lineno); yy820: YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7755 "Zend/zend_language_scanner.c" +#line 7746 "Zend/zend_language_scanner.c" yy821: YYDEBUG(821, *YYCURSOR); ++YYCURSOR; @@ -7832,12 +7825,12 @@ int start_line = CG(zend_lineno); yy828: YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1807 "Zend/zend_language_scanner.l" +#line 1799 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7800 "Zend/zend_language_scanner.c" +#line 7791 "Zend/zend_language_scanner.c" yy829: YYDEBUG(829, *YYCURSOR); ++YYCURSOR; @@ -7860,7 +7853,7 @@ int start_line = CG(zend_lineno); goto yy828; } } -#line 2607 "Zend/zend_language_scanner.l" +#line 2598 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d36c49f2e4b30..76f9fb50b7fcb 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1179,12 +1179,6 @@ static void copy_heredoc_label_stack(void *void_heredoc_label) zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); } -static int copy_state_stack(void *void_state) -{ - zend_stack_push(&SCNG(state_stack), void_state); - return SUCCESS; -} - #define RETURN_TOKEN(token) return emit_token(token, start_line); #define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ @@ -2314,7 +2308,6 @@ skip_escape_conversion: SCNG(heredoc_scan_ahead) = 1; zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - zend_stack_apply(¤t_state.state_stack, ZEND_STACK_APPLY_BOTTOMUP, copy_state_stack); // necessary? while (heredoc_nesting_level) { zval zv; @@ -2326,7 +2319,7 @@ skip_escape_conversion: if (EG(exception)) { zend_restore_lexical_state(¤t_state); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); // return something else on error? perhaps retval? + RETURN_TOKEN(retval); } switch (retval) { From 140ae25772358eb63f1e422033c9649b6906aae1 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 15:08:10 +0000 Subject: [PATCH 18/54] Fix uninitialised zendlvals --- Zend/zend_language_scanner.c | 9924 +++++++++++++++-------------- Zend/zend_language_scanner.l | 3 + Zend/zend_language_scanner_defs.h | 2 +- 3 files changed, 5047 insertions(+), 4882 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 1c456b2392129..4c83ed07811bd 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 */ +/* Generated by re2c 1.0.2 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -75,6 +75,7 @@ /* perform sanity check. If this message is triggered you should increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ #define YYMAXFILL 16 + #if ZEND_MMAP_AHEAD < YYMAXFILL # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL #endif @@ -1205,7 +1206,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1177 "Zend/zend_language_scanner.c" +#line 1178 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1247,6219 +1248,6687 @@ int start_line = CG(zend_lineno); } } /* *********************************** */ -yyc_INITIAL: - YYDEBUG(1, *YYCURSOR); - YYFILL(7); - yych = *YYCURSOR; - if (yych != '<') goto yy5; - YYDEBUG(3, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '?') goto yy6; -yy4: - YYDEBUG(4, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1868 "Zend/zend_language_scanner.l" +yyc_ST_IN_SCRIPTING: { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 4, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 216, 216, 152, 152, 152, 152, 152, 152, + 152, 152, 0, 0, 0, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 16, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + }; + YYDEBUG(1, *YYCURSOR); + YYFILL(16); + yych = *YYCURSOR; + if (yybm[0+yych] & 4) { + goto yy5; + } + switch (yych) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case '\t': + case '\n': + case '\v': + case '\f': + case '\r': + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x7F: goto yy3; + case ' ': + case '!': goto yy8; + case '"': goto yy10; + case '#': goto yy12; + case '$': goto yy14; + case '%': goto yy15; + case '&': goto yy16; + case '\'': goto yy17; + case '(': goto yy19; + case ')': + case ',': + case ';': + case '@': + case '[': + case ']': + case '~': goto yy20; + case '*': goto yy21; + case '+': goto yy22; + case '-': goto yy23; + case '.': goto yy24; + case '/': goto yy25; + case '0': goto yy26; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy28; + case ':': goto yy30; + case '<': goto yy31; + case '=': goto yy32; + case '>': goto yy33; + case '?': goto yy34; + case 'A': + case 'a': goto yy35; + case 'B': + case 'b': goto yy37; + case 'C': + case 'c': goto yy38; + case 'D': + case 'd': goto yy39; + case 'E': + case 'e': goto yy40; + case 'F': + case 'f': goto yy41; + case 'G': + case 'g': goto yy42; + case 'I': + case 'i': goto yy45; + case 'L': + case 'l': goto yy46; + case 'N': + case 'n': goto yy47; + case 'O': + case 'o': goto yy48; + case 'P': + case 'p': goto yy49; + case 'R': + case 'r': goto yy50; + case 'S': + case 's': goto yy51; + case 'T': + case 't': goto yy52; + case 'U': + case 'u': goto yy53; + case 'V': + case 'v': goto yy54; + case 'W': + case 'w': goto yy55; + case 'X': + case 'x': goto yy56; + case 'Y': + case 'y': goto yy57; + case '\\': goto yy58; + case '^': goto yy60; + case '_': goto yy61; + case '`': goto yy62; + case '{': goto yy64; + case '|': goto yy66; + case '}': goto yy67; + default: goto yy43; + } +yy3: + YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(4, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2592 "Zend/zend_language_scanner.l" + { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); } -inline_char_handler: + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} +#line 1395 "Zend/zend_language_scanner.c" +yy5: + YYDEBUG(5, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(6, *YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy5; + } + YYDEBUG(7, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1357 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_WHITESPACE); +} +#line 1412 "Zend/zend_language_scanner.c" +yy8: + YYDEBUG(8, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy69; +yy9: + YYDEBUG(9, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1642 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(yytext[0]); +} +#line 1424 "Zend/zend_language_scanner.c" +yy10: + YYDEBUG(10, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(11, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2102 "Zend/zend_language_scanner.l" + { + int bprefix = (yytext[0] != '"') ? 1 : 0; - while (1) { - YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + yyleng = YYCURSOR - SCNG(yy_text); + 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; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } - YYCURSOR = ptr ? ptr + 1 : YYLIMIT; + YYCURSOR--; + break; + } - if (YYCURSOR >= YYLIMIT) { - break; - } + /* Remember how much was scanned to save rescanning */ + SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); - if (*YYCURSOR == '?') { - if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ + YYCURSOR = SCNG(yy_text) + yyleng; - YYCURSOR--; + BEGIN(ST_DOUBLE_QUOTES); + RETURN_TOKEN('"'); +} +#line 1471 "Zend/zend_language_scanner.c" +yy12: + YYDEBUG(12, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(13, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1962 "Zend/zend_language_scanner.l" + { + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + CG(zend_lineno)++; break; - } + case '?': + if (*YYCURSOR == '>') { + YYCURSOR--; + break; + } + /* fall through */ + default: + continue; } + + break; } yyleng = YYCURSOR - SCNG(yy_text); - if (SCNG(output_filter)) { - size_t readsize; - char *s = NULL; - size_t sz = 0; - // TODO: avoid reallocation ??? - readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); - ZVAL_STRINGL(zendlval, s, sz); - efree(s); - if (readsize < yyleng) { - yyless(readsize); - } - } else if (yyleng == 1) { - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); - } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); + RETURN_TOKEN(T_COMMENT); } -#line 1275 "Zend/zend_language_scanner.c" -yy5: - YYDEBUG(5, *YYCURSOR); - yych = *++YYCURSOR; - goto yy4; -yy6: - YYDEBUG(6, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'O') { - if (yych == '=') goto yy8; - } else { - if (yych <= 'P') goto yy10; - if (yych == 'p') goto yy10; - } -yy7: - YYDEBUG(7, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" - { - if (CG(short_tags)) { - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); +#line 1506 "Zend/zend_language_scanner.c" +yy14: + YYDEBUG(14, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy9; + if (yych <= 'Z') goto yy71; + if (yych <= '^') goto yy9; + goto yy71; + } else { + if (yych <= '`') goto yy9; + if (yych <= 'z') goto yy71; + if (yych <= 0x7F) goto yy9; + goto yy71; } - RETURN_TOKEN(T_OPEN_TAG); - } else { - goto inline_char_handler; - } -} -#line 1301 "Zend/zend_language_scanner.c" -yy8: - YYDEBUG(8, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(9, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ECHO); - } - RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); -} -#line 1312 "Zend/zend_language_scanner.c" -yy10: - YYDEBUG(10, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy12; - if (yych == 'h') goto yy12; -yy11: - YYDEBUG(11, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy7; -yy12: - YYDEBUG(12, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy13; - if (yych != 'p') goto yy11; -yy13: - YYDEBUG(13, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy11; - if (yych >= '\v') goto yy11; - } else { - if (yych <= '\r') goto yy16; - if (yych != ' ') goto yy11; - } -yy14: - YYDEBUG(14, *YYCURSOR); - ++YYCURSOR; yy15: - YYDEBUG(15, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1852 "Zend/zend_language_scanner.l" - { - HANDLE_NEWLINE(yytext[yyleng-1]); - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); -} -#line 1349 "Zend/zend_language_scanner.c" + YYDEBUG(15, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy74; + goto yy9; yy16: - YYDEBUG(16, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy14; - goto yy15; -/* *********************************** */ -yyc_ST_BACKQUOTE: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; + YYDEBUG(16, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '&') goto yy76; + if (yych == '=') goto yy78; + goto yy9; +yy17: YYDEBUG(17, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych != '$') goto yy24; - } else { - if (yych <= '`') goto yy22; - if (yych == '{') goto yy21; - goto yy24; - } - YYDEBUG(19, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy20; - if (yych <= 'Z') goto yy27; - if (yych >= '_') goto yy27; - } else { - if (yych <= 'z') { - if (yych >= 'a') goto yy27; - } else { - if (yych <= '{') goto yy30; - if (yych >= 0x80) goto yy27; - } - } -yy20: - YYDEBUG(20, *YYCURSOR); + YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2352 "Zend/zend_language_scanner.l" +#line 2033 "Zend/zend_language_scanner.l" { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } + register char *s, *t; + char *end; + int bprefix = (yytext[0] != '\'') ? 1 : 0; + + while (1) { + if (YYCURSOR < YYLIMIT) { + if (*YYCURSOR == '\'') { + YYCURSOR++; + yyleng = YYCURSOR - SCNG(yy_text); - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '`': break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + } else { + yyleng = YYLIMIT - SCNG(yy_text); + + /* Unclosed single quotes; treat similar to double quotes, but without a separate token + * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." + * rule, which continued in ST_IN_SCRIPTING state after the quote */ + ZVAL_NULL(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + } + + ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); + + /* convert escape sequences */ + s = t = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (s') goto yy36; -yy33: - YYDEBUG(33, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy29; -yy34: - YYDEBUG(34, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" +#line 1712 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + char *end; + if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + /* This isn't an assert, we need to ensure 019 isn't valid octal + * Because the lexing itself doesn't do that for us + */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_LNUMBER); + } + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + if (errno == ERANGE) { /* Overflow */ + errno = 0; + if (yytext[0] == '0') { /* octal overflow */ + ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); + } else { + ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, + "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_DNUMBER); + } + RETURN_TOKEN(T_DNUMBER); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_DNUMBER); + } + } + ZEND_ASSERT(!errno); + RETURN_TOKEN(T_LNUMBER); } -#line 1546 "Zend/zend_language_scanner.c" -yy36: - YYDEBUG(36, *YYCURSOR); +#line 1772 "Zend/zend_language_scanner.c" +yy28: + YYDEBUG(28, *YYCURSOR); + yyaccept = 1; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy29: + YYDEBUG(29, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy28; + } + if (yych <= 'D') { + if (yych == '.') goto yy107; + goto yy27; + } else { + if (yych <= 'E') goto yy117; + if (yych == 'e') goto yy117; + goto yy27; + } +yy30: + YYDEBUG(30, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy33; - if (yych <= 'Z') goto yy37; - if (yych <= '^') goto yy33; + if (yych == ':') goto yy119; + goto yy9; +yy31: + YYDEBUG(31, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ';') goto yy9; + if (yych <= '<') goto yy121; + if (yych <= '=') goto yy123; + if (yych <= '>') goto yy125; + goto yy9; +yy32: + YYDEBUG(32, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '<') goto yy9; + if (yych <= '=') goto yy126; + if (yych <= '>') goto yy128; + goto yy9; +yy33: + YYDEBUG(33, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '<') goto yy9; + if (yych <= '=') goto yy130; + if (yych <= '>') goto yy132; + goto yy9; +yy34: + YYDEBUG(34, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '=') goto yy9; + if (yych <= '>') goto yy134; + if (yych <= '?') goto yy136; + goto yy9; +yy35: + YYDEBUG(35, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'M') { + if (yych == 'B') goto yy138; + goto yy44; + } else { + if (yych <= 'N') goto yy139; + if (yych <= 'Q') goto yy44; + if (yych <= 'R') goto yy140; + goto yy141; + } } else { - if (yych <= '`') goto yy33; - if (yych <= 'z') goto yy37; - if (yych <= 0x7F) goto yy33; + if (yych <= 'n') { + if (yych == 'b') goto yy138; + if (yych <= 'm') goto yy44; + goto yy139; + } else { + if (yych <= 'q') goto yy44; + if (yych <= 'r') goto yy140; + if (yych <= 's') goto yy141; + goto yy44; + } } -yy37: - YYDEBUG(37, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(38, *YYCURSOR); +yy36: + YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1956 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + zend_copy_value(zendlval, yytext, yyleng); + RETURN_TOKEN(T_STRING); } -#line 1571 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_DOUBLE_QUOTES: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; +#line 1859 "Zend/zend_language_scanner.c" +yy37: + YYDEBUG(37, *YYCURSOR); + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') { + if (yych <= '"') { + if (yych <= '!') goto yy44; + goto yy10; + } else { + if (yych == '\'') goto yy17; + goto yy44; + } + } else { + if (yych <= 'R') { + if (yych <= '<') goto yy143; + if (yych <= 'Q') goto yy44; + goto yy144; + } else { + if (yych == 'r') goto yy144; + goto yy44; + } + } +yy38: + YYDEBUG(38, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') goto yy145; + goto yy44; + } else { + if (yych <= 'L') goto yy146; + if (yych <= 'N') goto yy44; + goto yy147; + } + } else { + if (yych <= 'k') { + if (yych == 'a') goto yy145; + goto yy44; + } else { + if (yych <= 'l') goto yy146; + if (yych == 'o') goto yy147; + goto yy44; + } + } +yy39: YYDEBUG(39, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '#') { - if (yych == '"') goto yy44; - goto yy46; + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'E') goto yy148; + goto yy44; + } else { + if (yych <= 'I') goto yy149; + if (yych <= 'N') goto yy44; + goto yy150; + } } else { - if (yych <= '$') goto yy41; - if (yych == '{') goto yy43; - goto yy46; + if (yych <= 'h') { + if (yych == 'e') goto yy148; + goto yy44; + } else { + if (yych <= 'i') goto yy149; + if (yych == 'o') goto yy150; + goto yy44; + } + } +yy40: + YYDEBUG(40, *YYCURSOR); + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy152; + case 'L': + case 'l': goto yy153; + case 'M': + case 'm': goto yy154; + case 'N': + case 'n': goto yy155; + case 'V': + case 'v': goto yy156; + case 'X': + case 'x': goto yy157; + default: goto yy44; } yy41: YYDEBUG(41, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy42; - if (yych <= 'Z') goto yy49; - if (yych >= '_') goto yy49; + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'I') goto yy158; + goto yy44; + } else { + if (yych <= 'O') goto yy159; + if (yych <= 'T') goto yy44; + goto yy160; + } } else { - if (yych <= 'z') { - if (yych >= 'a') goto yy49; + if (yych <= 'n') { + if (yych == 'i') goto yy158; + goto yy44; } else { - if (yych <= '{') goto yy52; - if (yych >= 0x80) goto yy49; + if (yych <= 'o') goto yy159; + if (yych == 'u') goto yy160; + goto yy44; } } yy42: YYDEBUG(42, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2302 "Zend/zend_language_scanner.l" - { - if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { - YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; - SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); - - goto double_quotes_scan_done; - } - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'L') goto yy161; + if (yych <= 'N') goto yy44; + goto yy162; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy44; + goto yy161; + } else { + if (yych == 'o') goto yy162; + goto yy44; + } } - - YYCURSOR--; - break; - } - -double_quotes_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - - 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 1688 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy47; - goto yy42; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy44: YYDEBUG(44, *YYCURSOR); - ++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + goto yy36; +yy45: YYDEBUG(45, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2291 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('"'); -} -#line 1704 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'L') { + if (yych == 'F') goto yy163; + goto yy44; + } else { + if (yych <= 'M') goto yy165; + if (yych <= 'N') goto yy166; + if (yych <= 'R') goto yy44; + goto yy167; + } + } else { + if (yych <= 'm') { + if (yych == 'f') goto yy163; + if (yych <= 'l') goto yy44; + goto yy165; + } else { + if (yych <= 'n') goto yy166; + if (yych == 's') goto yy167; + goto yy44; + } + } yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - goto yy42; + if (yych == 'I') goto yy168; + if (yych == 'i') goto yy168; + goto yy44; yy47: YYDEBUG(47, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy169; + if (yych <= 'D') goto yy44; + goto yy170; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy169; + } else { + if (yych == 'e') goto yy170; + goto yy44; + } + } +yy48: YYDEBUG(48, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2283 "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 1721 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy171; + if (yych == 'r') goto yy171; + goto yy44; yy49: YYDEBUG(49, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(50, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy49; + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'R') goto yy173; + if (yych <= 'T') goto yy44; + goto yy174; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy44; + goto yy173; + } else { + if (yych == 'u') goto yy174; + goto yy44; + } } - if (yych == '-') goto yy54; - if (yych <= '@') goto yy51; - if (yych <= '[') goto yy56; +yy50: + YYDEBUG(50, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy175; + if (yych == 'e') goto yy175; + goto yy44; yy51: YYDEBUG(51, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1742 "Zend/zend_language_scanner.c" -yy52: - YYDEBUG(52, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(53, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 1753 "Zend/zend_language_scanner.c" -yy54: - YYDEBUG(54, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy58; -yy55: - YYDEBUG(55, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy51; -yy56: - YYDEBUG(56, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(57, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1774 "Zend/zend_language_scanner.c" -yy58: - YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy55; - if (yych <= 'Z') goto yy59; - if (yych <= '^') goto yy55; + if (yych <= 'W') { + if (yych == 'T') goto yy176; + if (yych <= 'V') goto yy44; + goto yy177; } else { - if (yych <= '`') goto yy55; - if (yych <= 'z') goto yy59; - if (yych <= 0x7F) goto yy55; + if (yych <= 't') { + if (yych <= 's') goto yy44; + goto yy176; + } else { + if (yych == 'w') goto yy177; + goto yy44; + } } -yy59: - YYDEBUG(59, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(60, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1799 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_END_HEREDOC: - YYDEBUG(61, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(63, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(64, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2269 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - - YYCURSOR += heredoc_label->length - 1; - yyleng = heredoc_label->length; - - heredoc_label_dtor(heredoc_label); - efree(heredoc_label); - - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN(T_END_HEREDOC); -} -#line 1823 "Zend/zend_language_scanner.c" -/* *********************************** */ -yyc_ST_HEREDOC: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(65, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych == '$') goto yy67; - if (yych == '{') goto yy69; - goto yy70; -yy67: - YYDEBUG(67, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy68; - if (yych <= 'Z') goto yy73; - if (yych >= '_') goto yy73; +yy52: + YYDEBUG(52, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'H') goto yy178; + if (yych <= 'Q') goto yy44; + goto yy179; } else { - if (yych <= 'z') { - if (yych >= 'a') goto yy73; + if (yych <= 'h') { + if (yych <= 'g') goto yy44; + goto yy178; } else { - if (yych <= '{') goto yy76; - if (yych >= 0x80) goto yy73; + if (yych == 'r') goto yy179; + goto yy44; } } -yy68: - YYDEBUG(68, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2394 "Zend/zend_language_scanner.l" - { - 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); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (IS_LABEL_START(*end)) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - - if (*end == ';') { - end++; - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - if (SCNG(heredoc_scan_ahead)) { - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { - CG(increment_lineno) = 1; - } - - BEGIN(ST_END_HEREDOC); - - goto heredoc_scan_done; - } - continue; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { - YYCURSOR++; - } - /* fall through */ - default: - continue; +yy53: + YYDEBUG(53, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == 'N') goto yy180; + if (yych <= 'R') goto yy44; + goto yy181; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy44; + goto yy180; + } else { + if (yych == 's') goto yy181; + goto yy44; + } } - - YYCURSOR--; - break; - } - -heredoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); - - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); +yy54: + YYDEBUG(54, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy182; + if (yych == 'a') goto yy182; + goto yy44; +yy55: + YYDEBUG(55, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy183; + if (yych == 'h') goto yy183; + goto yy44; +yy56: + YYDEBUG(56, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy184; + if (yych == 'o') goto yy184; + goto yy44; +yy57: + YYDEBUG(57, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy185; + if (yych == 'i') goto yy185; + goto yy44; +yy58: + YYDEBUG(58, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(59, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1382 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NS_SEPARATOR); +} +#line 2148 "Zend/zend_language_scanner.c" +yy60: + YYDEBUG(60, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy186; + goto yy9; +yy61: + YYDEBUG(61, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy188; + goto yy44; +yy62: + YYDEBUG(62, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(63, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2264 "Zend/zend_language_scanner.l" + { + BEGIN(ST_BACKQUOTE); + RETURN_TOKEN('`'); +} +#line 2169 "Zend/zend_language_scanner.c" +yy64: + YYDEBUG(64, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(65, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1647 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN('{'); +} +#line 2180 "Zend/zend_language_scanner.c" +yy66: + YYDEBUG(66, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy189; + if (yych == '|') goto yy191; + goto yy9; +yy67: + YYDEBUG(67, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(68, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1659 "Zend/zend_language_scanner.l" + { + RESET_DOC_COMMENT(); + if (!zend_stack_is_empty(&SCNG(state_stack))) { + yy_pop_state(); } - - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN('}'); } -#line 1994 "Zend/zend_language_scanner.c" +#line 2200 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy71; - goto yy68; + if (yych == '=') goto yy193; yy70: YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - goto yy68; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1546 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_NOT_EQUAL); +} +#line 2212 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(72, *YYCURSOR); + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy71; + } else { + if (yych <= '@') goto yy73; + if (yych <= 'Z') goto yy71; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy71; + } else { + if (yych <= 'z') goto yy71; + if (yych >= 0x80) goto yy71; + } + } +yy73: + YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2283 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { - Z_LVAL_P(zendlval) = (zend_long) '{'; - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2016 "Zend/zend_language_scanner.c" -yy73: - YYDEBUG(73, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; +#line 2242 "Zend/zend_language_scanner.c" +yy74: YYDEBUG(74, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy73; - } - if (yych == '-') goto yy78; - if (yych <= '@') goto yy75; - if (yych <= '[') goto yy80; -yy75: + ++YYCURSOR; YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1590 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_MOD_EQUAL); } -#line 2037 "Zend/zend_language_scanner.c" +#line 2252 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1618 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_BOOLEAN_AND); } -#line 2048 "Zend/zend_language_scanner.c" +#line 2262 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy82; -yy79: - YYDEBUG(79, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy75; -yy80: - YYDEBUG(80, *YYCURSOR); ++YYCURSOR; - YYDEBUG(81, *YYCURSOR); + YYDEBUG(79, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" +#line 1602 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_AND_EQUAL); } -#line 2069 "Zend/zend_language_scanner.c" -yy82: - YYDEBUG(82, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy79; - if (yych <= 'Z') goto yy83; - if (yych <= '^') goto yy79; - } else { - if (yych <= '`') goto yy79; - if (yych <= 'z') goto yy83; - if (yych <= 0x7F) goto yy79; - } -yy83: - YYDEBUG(83, *YYCURSOR); +#line 2272 "Zend/zend_language_scanner.c" +yy80: + YYDEBUG(80, *YYCURSOR); ++YYCURSOR; - YYDEBUG(84, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 2094 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_IN_SCRIPTING: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 64, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 60, 60, 44, 44, 44, 44, 44, 44, - 44, 44, 0, 0, 0, 0, 0, 0, - 0, 36, 36, 36, 36, 36, 36, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 0, 0, 0, 0, 4, - 0, 36, 36, 36, 36, 36, 36, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 0, 0, 0, 0, 0, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - }; - YYDEBUG(85, *YYCURSOR); - YYFILL(16); + YYFILL(7); yych = *YYCURSOR; +yy81: + YYDEBUG(81, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy80; + } switch (yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\v': - case '\f': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: goto yy148; - case '\t': - case '\n': - case '\r': - case ' ': goto yy104; - case '!': goto yy119; - case '"': goto yy144; - case '#': goto yy140; - case '$': goto yy130; - case '%': goto yy124; - case '&': goto yy125; - case '\'': goto yy142; - case '(': goto yy113; - case ')': - case ',': - case ';': - case '@': - case '[': - case ']': - case '~': goto yy131; - case '*': goto yy122; - case '+': goto yy118; - case '-': goto yy102; - case '.': goto yy109; - case '/': goto yy123; - case '0': goto yy136; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy138; - case ':': goto yy106; - case '<': goto yy120; - case '=': goto yy116; - case '>': goto yy121; - case '?': goto yy110; case 'A': - case 'a': goto yy97; + case 'a': goto yy83; case 'B': - case 'b': goto yy99; - case 'C': - case 'c': goto yy91; + case 'b': goto yy84; case 'D': - case 'd': goto yy89; - case 'E': - case 'e': goto yy87; + case 'd': goto yy85; case 'F': - case 'f': goto yy90; - case 'G': - case 'g': goto yy100; + case 'f': goto yy86; case 'I': - case 'i': goto yy95; - case 'L': - case 'l': goto yy117; - case 'N': - case 'n': goto yy111; + case 'i': goto yy87; case 'O': - case 'o': goto yy128; - case 'P': - case 'p': goto yy101; + case 'o': goto yy88; case 'R': - case 'r': goto yy92; + case 'r': goto yy89; case 'S': - case 's': goto yy98; - case 'T': - case 't': goto yy94; + case 's': goto yy90; case 'U': - case 'u': goto yy114; - case 'V': - case 'v': goto yy112; - case 'W': - case 'w': goto yy96; - case 'X': - case 'x': goto yy129; - case 'Y': - case 'y': goto yy93; - case '\\': goto yy107; - case '^': goto yy127; - case '_': goto yy115; - case '`': goto yy146; - case '{': goto yy132; - case '|': goto yy126; - case '}': goto yy134; - default: goto yy139; - } -yy87: - YYDEBUG(87, *YYCURSOR); - ++YYCURSOR; - switch ((yych = *YYCURSOR)) { - case 'C': - case 'c': goto yy706; - case 'L': - case 'l': goto yy707; - case 'M': - case 'm': goto yy708; - case 'N': - case 'n': goto yy709; - case 'V': - case 'v': goto yy710; - case 'X': - case 'x': goto yy711; - default: goto yy151; - } -yy88: - YYDEBUG(88, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); -} -#line 2281 "Zend/zend_language_scanner.c" -yy89: - YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'E') goto yy688; - goto yy151; - } else { - if (yych <= 'I') goto yy689; - if (yych <= 'N') goto yy151; - goto yy690; - } - } else { - if (yych <= 'h') { - if (yych == 'e') goto yy688; - goto yy151; - } else { - if (yych <= 'i') goto yy689; - if (yych == 'o') goto yy690; - goto yy151; - } + case 'u': goto yy91; + default: goto yy82; } -yy90: - YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'N') { - if (yych == 'I') goto yy664; - goto yy151; +yy82: + YYDEBUG(82, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy9; + } else { + goto yy27; + } } else { - if (yych <= 'O') goto yy665; - if (yych <= 'T') goto yy151; - goto yy666; + if (yyaccept == 2) { + goto yy36; + } else { + goto yy109; + } } } else { - if (yych <= 'n') { - if (yych == 'i') goto yy664; - goto yy151; + if (yyaccept <= 5) { + if (yyaccept == 4) { + goto yy113; + } else { + goto yy122; + } } else { - if (yych <= 'o') goto yy665; - if (yych == 'u') goto yy666; - goto yy151; + goto yy457; } } -yy91: - YYDEBUG(91, *YYCURSOR); +yy83: + YYDEBUG(83, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy195; + if (yych == 'r') goto yy195; + goto yy82; +yy84: + YYDEBUG(84, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy629; - goto yy151; - } else { - if (yych <= 'L') goto yy630; - if (yych <= 'N') goto yy151; - goto yy631; - } + if (yych == 'I') goto yy196; + if (yych <= 'N') goto yy82; + goto yy197; } else { - if (yych <= 'k') { - if (yych == 'a') goto yy629; - goto yy151; + if (yych <= 'i') { + if (yych <= 'h') goto yy82; + goto yy196; } else { - if (yych <= 'l') goto yy630; - if (yych == 'o') goto yy631; - goto yy151; + if (yych == 'o') goto yy197; + goto yy82; } } +yy85: + YYDEBUG(85, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy198; + if (yych == 'o') goto yy198; + goto yy82; +yy86: + YYDEBUG(86, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy199; + if (yych == 'l') goto yy199; + goto yy82; +yy87: + YYDEBUG(87, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy200; + if (yych == 'n') goto yy200; + goto yy82; +yy88: + YYDEBUG(88, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy201; + if (yych == 'b') goto yy201; + goto yy82; +yy89: + YYDEBUG(89, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy202; + if (yych == 'e') goto yy202; + goto yy82; +yy90: + YYDEBUG(90, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy203; + if (yych == 't') goto yy203; + goto yy82; +yy91: + YYDEBUG(91, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy204; + if (yych == 'n') goto yy204; + goto yy82; yy92: YYDEBUG(92, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy611; - if (yych == 'e') goto yy611; - goto yy151; -yy93: + if (yych == '=') goto yy205; YYDEBUG(93, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy598; - if (yych == 'i') goto yy598; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1574 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW); +} +#line 2406 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy586; - if (yych <= 'Q') goto yy151; - goto yy587; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy151; - goto yy586; - } else { - if (yych == 'r') goto yy587; - goto yy151; - } - } -yy95: + ++YYCURSOR; YYDEBUG(95, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'L') { - if (yych == 'F') goto yy533; - goto yy151; - } else { - if (yych <= 'M') goto yy535; - if (yych <= 'N') goto yy536; - if (yych <= 'R') goto yy151; - goto yy537; - } - } else { - if (yych <= 'm') { - if (yych == 'f') goto yy533; - if (yych <= 'l') goto yy151; - goto yy535; - } else { - if (yych <= 'n') goto yy536; - if (yych == 's') goto yy537; - goto yy151; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1570 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MUL_EQUAL); +} +#line 2416 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy528; - if (yych == 'h') goto yy528; - goto yy151; -yy97: + ++YYCURSOR; YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'M') { - if (yych == 'B') goto yy510; - goto yy151; - } else { - if (yych <= 'N') goto yy511; - if (yych <= 'Q') goto yy151; - if (yych <= 'R') goto yy512; - goto yy513; - } - } else { - if (yych <= 'n') { - if (yych == 'b') goto yy510; - if (yych <= 'm') goto yy151; - goto yy511; - } else { - if (yych <= 'q') goto yy151; - if (yych <= 'r') goto yy512; - if (yych <= 's') goto yy513; - goto yy151; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1526 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INC); +} +#line 2426 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych == 'T') goto yy498; - if (yych <= 'V') goto yy151; - goto yy499; - } else { - if (yych <= 't') { - if (yych <= 's') goto yy151; - goto yy498; - } else { - if (yych == 'w') goto yy499; - goto yy151; - } - } -yy99: + ++YYCURSOR; YYDEBUG(99, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') { - if (yych <= '"') { - if (yych <= '!') goto yy151; - goto yy490; - } else { - if (yych == '\'') goto yy491; - goto yy151; - } - } else { - if (yych <= 'R') { - if (yych <= '<') goto yy489; - if (yych <= 'Q') goto yy151; - goto yy492; - } else { - if (yych == 'r') goto yy492; - goto yy151; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1562 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PLUS_EQUAL); +} +#line 2436 "Zend/zend_language_scanner.c" yy100: YYDEBUG(100, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'L') goto yy479; - if (yych <= 'N') goto yy151; - goto yy480; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy151; - goto yy479; - } else { - if (yych == 'o') goto yy480; - goto yy151; - } - } -yy101: + ++YYCURSOR; YYDEBUG(101, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'R') goto yy455; - if (yych <= 'T') goto yy151; - goto yy456; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy151; - goto yy455; - } else { - if (yych == 'u') goto yy456; - goto yy151; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1530 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEC); +} +#line 2446 "Zend/zend_language_scanner.c" yy102: YYDEBUG(102, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy451; - } else { - if (yych <= '=') goto yy449; - if (yych <= '>') goto yy453; - } -yy103: YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" +#line 1566 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(yytext[0]); + RETURN_TOKEN(T_MINUS_EQUAL); } -#line 2517 "Zend/zend_language_scanner.c" +#line 2456 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; - yych = *YYCURSOR; - goto yy448; -yy105: YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_WHITESPACE); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 2531 "Zend/zend_language_scanner.c" +#line 2467 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; - if (yych == ':') goto yy445; - goto yy103; + if (yych == '.') goto yy207; + goto yy82; yy107: YYDEBUG(107, *YYCURSOR); - ++YYCURSOR; + yyaccept = 3; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(108, *YYCURSOR); + if (yych <= 'D') { + if (yych <= '/') goto yy109; + if (yych <= '9') goto yy107; + } else { + if (yych <= 'E') goto yy117; + if (yych == 'e') goto yy117; + } +yy109: + YYDEBUG(109, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1804 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + 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); } -#line 2546 "Zend/zend_language_scanner.c" -yy109: - YYDEBUG(109, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy442; - goto yy103; - } else { - if (yych <= '9') goto yy438; - if (yych == '=') goto yy440; - goto yy103; - } +#line 2499 "Zend/zend_language_scanner.c" yy110: YYDEBUG(110, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '=') goto yy103; - if (yych <= '>') goto yy432; - if (yych <= '?') goto yy434; - goto yy103; -yy111: + ++YYCURSOR; YYDEBUG(111, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy420; - if (yych <= 'D') goto yy151; - goto yy421; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy151; - goto yy420; - } else { - if (yych == 'e') goto yy421; - goto yy151; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1586 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONCAT_EQUAL); +} +#line 2509 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy417; - if (yych == 'a') goto yy417; - goto yy151; + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '*') goto yy209; yy113: YYDEBUG(113, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy342; - if (yych <= 0x1F) goto yy103; - goto yy342; - } else { - if (yych <= '@') goto yy103; - if (yych == 'C') goto yy103; - goto yy342; - } - } else { - if (yych <= 'I') { - if (yych == 'F') goto yy342; - if (yych <= 'H') goto yy103; - goto yy342; - } else { - if (yych == 'O') goto yy342; - if (yych <= 'Q') goto yy103; - goto yy342; - } - } - } else { - if (yych <= 'f') { - if (yych <= 'b') { - if (yych == 'U') goto yy342; - if (yych <= '`') goto yy103; - goto yy342; - } else { - if (yych == 'd') goto yy342; - if (yych <= 'e') goto yy103; - goto yy342; - } - } else { - if (yych <= 'o') { - if (yych == 'i') goto yy342; - if (yych <= 'n') goto yy103; - goto yy342; - } else { - if (yych <= 's') { - if (yych <= 'q') goto yy103; - goto yy342; - } else { - if (yych == 'u') goto yy342; - goto yy103; - } - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1991 "Zend/zend_language_scanner.l" + { + int doc_com; + + if (yyleng > 2) { + doc_com = 1; + RESET_DOC_COMMENT(); + } else { + doc_com = 0; + } + + while (YYCURSOR < YYLIMIT) { + if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { + break; } + } + + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } else { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + } + + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + + if (doc_com) { + CG(doc_comment) = zend_string_init(yytext, yyleng, 0); + RETURN_TOKEN(T_DOC_COMMENT); + } + + RETURN_TOKEN(T_COMMENT); +} +#line 2551 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy333; - if (yych <= 'R') goto yy151; - goto yy334; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy151; - goto yy333; - } else { - if (yych == 's') goto yy334; - goto yy151; - } - } -yy115: + ++YYCURSOR; YYDEBUG(115, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy251; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1582 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIV_EQUAL); +} +#line 2561 "Zend/zend_language_scanner.c" yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy103; - if (yych <= '=') goto yy245; - if (yych <= '>') goto yy247; - goto yy103; + if (yybm[0+yych] & 64) { + goto yy210; + } + goto yy82; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy241; - if (yych == 'i') goto yy241; - goto yy151; + if (yych <= ',') { + if (yych == '+') goto yy213; + goto yy82; + } else { + if (yych <= '-') goto yy213; + if (yych <= '/') goto yy82; + if (yych <= '9') goto yy214; + goto yy82; + } yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy239; - if (yych == '=') goto yy237; - goto yy103; + if (yybm[0+yych] & 128) { + goto yy216; + } + goto yy82; yy119: YYDEBUG(119, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy234; - goto yy103; -yy120: + ++YYCURSOR; YYDEBUG(120, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ';') goto yy103; - if (yych <= '<') goto yy210; - if (yych <= '=') goto yy212; - if (yych <= '>') goto yy214; - goto yy103; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1378 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); +} +#line 2597 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy103; - if (yych <= '=') goto yy206; - if (yych <= '>') goto yy204; - goto yy103; + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy122; + if (yych <= '<') goto yy219; + if (yych <= '=') goto yy221; yy122: YYDEBUG(122, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '*') goto yy198; - if (yych == '=') goto yy200; - goto yy103; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1634 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL); +} +#line 2612 "Zend/zend_language_scanner.c" yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy190; - goto yy103; - } else { - if (yych <= '/') goto yy192; - if (yych == '=') goto yy193; - goto yy103; - } -yy124: + if (yych == '>') goto yy223; YYDEBUG(124, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy188; - goto yy103; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1554 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); +} +#line 2623 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy184; - if (yych == '=') goto yy186; - goto yy103; + ++YYCURSOR; + goto yy70; yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy182; - if (yych == '|') goto yy180; - goto yy103; -yy127: + if (yych == '=') goto yy225; YYDEBUG(127, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy178; - goto yy103; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1542 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_EQUAL); +} +#line 2638 "Zend/zend_language_scanner.c" yy128: YYDEBUG(128, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy176; - if (yych == 'r') goto yy176; - goto yy151; -yy129: + ++YYCURSOR; YYDEBUG(129, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy173; - if (yych == 'o') goto yy173; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1510 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_ARROW); +} +#line 2648 "Zend/zend_language_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy103; - if (yych <= 'Z') goto yy170; - if (yych <= '^') goto yy103; - goto yy170; - } else { - if (yych <= '`') goto yy103; - if (yych <= 'z') goto yy170; - if (yych <= 0x7F) goto yy103; - goto yy170; - } -yy131: + ++YYCURSOR; YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - goto yy103; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1558 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); +} +#line 2658 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '=') goto yy227; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1647 "Zend/zend_language_scanner.l" +#line 1638 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); + RETURN_TOKEN(T_SR); } -#line 2780 "Zend/zend_language_scanner.c" +#line 2669 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '\n') goto yy229; + if (yych == '\r') goto yy230; +yy135: YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" +#line 2024 "Zend/zend_language_scanner.l" { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); + BEGIN(INITIAL); + if (yytext[yyleng-1] != '>') { + CG(increment_lineno) = 1; } - RETURN_TOKEN('}'); + RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 2794 "Zend/zend_language_scanner.c" +#line 2686 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'E') { - if (yych <= '9') { - if (yych == '.') goto yy152; - if (yych >= '0') goto yy155; - } else { - if (yych == 'B') goto yy163; - if (yych >= 'E') goto yy157; - } - } else { - if (yych <= 'b') { - if (yych == 'X') goto yy162; - if (yych >= 'b') goto yy163; - } else { - if (yych <= 'e') { - if (yych >= 'e') goto yy157; - } else { - if (yych == 'x') goto yy162; - } - } - } -yy137: + ++YYCURSOR; YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1712 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { - char *end; - if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - /* This isn't an assert, we need to ensure 019 isn't valid octal - * Because the lexing itself doesn't do that for us - */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_LNUMBER); - } - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - if (errno == ERANGE) { /* Overflow */ - errno = 0; - if (yytext[0] == '0') { /* octal overflow */ - ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); - } else { - ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, - "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_DNUMBER); - } - RETURN_TOKEN(T_DNUMBER); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_DNUMBER); - } - } - ZEND_ASSERT(!errno); - RETURN_TOKEN(T_LNUMBER); + RETURN_TOKEN(T_COALESCE); } -#line 2865 "Zend/zend_language_scanner.c" +#line 2696 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych == '.') goto yy152; - if (yych <= '/') goto yy137; - goto yy155; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy137; - goto yy157; - } else { - if (yych == 'e') goto yy157; - goto yy137; - } - } + yych = *++YYCURSOR; + if (yych == 'S') goto yy231; + if (yych == 's') goto yy231; + goto yy44; yy139: YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - goto yy151; + if (yych == 'D') goto yy232; + if (yych == 'd') goto yy232; + goto yy44; yy140: - YYDEBUG(140, *YYCURSOR); - ++YYCURSOR; -yy141: - YYDEBUG(141, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1962 "Zend/zend_language_scanner.l" - { - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - CG(zend_lineno)++; - break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; - } - - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - RETURN_TOKEN(T_COMMENT); -} -#line 2922 "Zend/zend_language_scanner.c" -yy142: - YYDEBUG(142, *YYCURSOR); - ++YYCURSOR; -yy143: - YYDEBUG(143, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2033 "Zend/zend_language_scanner.l" - { - register char *s, *t; - char *end; - int bprefix = (yytext[0] != '\'') ? 1 : 0; - - while (1) { - if (YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\'') { - YYCURSOR++; - yyleng = YYCURSOR - SCNG(yy_text); - - break; - } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - } else { - yyleng = YYLIMIT - SCNG(yy_text); - - /* Unclosed single quotes; treat similar to double quotes, but without a separate token - * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." - * rule, which continued in ST_IN_SCRIPTING state after the quote */ - ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - } - - ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - - /* convert escape sequences */ - s = t = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (s YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 3071 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy245; + if (yych == 'e') goto yy245; + goto yy44; yy150: YYDEBUG(150, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy151: - YYDEBUG(151, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy150; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } - goto yy88; + YYDEBUG(151, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1260 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DO); +} +#line 2817 "Zend/zend_language_scanner.c" yy152: YYDEBUG(152, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'H') goto yy247; + if (yych == 'h') goto yy247; + goto yy44; +yy153: YYDEBUG(153, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy152; - } - if (yych == 'E') goto yy157; - if (yych == 'e') goto yy157; + yych = *++YYCURSOR; + if (yych == 'S') goto yy248; + if (yych == 's') goto yy248; + goto yy44; yy154: YYDEBUG(154, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1804 "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); -} -#line 3107 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'P') goto yy249; + if (yych == 'p') goto yy249; + goto yy44; yy155: YYDEBUG(155, *YYCURSOR); - yyaccept = 2; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'D') goto yy250; + if (yych == 'd') goto yy250; + goto yy44; +yy156: YYDEBUG(156, *YYCURSOR); - if (yych <= '9') { - if (yych == '.') goto yy152; - if (yych <= '/') goto yy137; - goto yy155; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy137; - } else { - if (yych != 'e') goto yy137; - } - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy251; + if (yych == 'a') goto yy251; + goto yy44; yy157: YYDEBUG(157, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy159; - } else { - if (yych <= '-') goto yy159; - if (yych <= '/') goto yy158; - if (yych <= '9') goto yy160; - } -yy158: - YYDEBUG(158, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy88; - } else { - goto yy103; - } - } else { - if (yyaccept == 2) { - goto yy137; - } else { - goto yy154; - } - } + if (yych <= 'T') { + if (yych == 'I') goto yy252; + if (yych <= 'S') goto yy44; + goto yy253; } else { - if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy191; - } else { - goto yy211; - } + if (yych <= 'i') { + if (yych <= 'h') goto yy44; + goto yy252; } else { - goto yy602; + if (yych == 't') goto yy253; + goto yy44; } } +yy158: + YYDEBUG(158, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy254; + if (yych == 'n') goto yy254; + goto yy44; yy159: YYDEBUG(159, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy158; - if (yych >= ':') goto yy158; + if (yych == 'R') goto yy255; + if (yych == 'r') goto yy255; + goto yy44; yy160: YYDEBUG(160, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy257; + if (yych == 'n') goto yy257; + goto yy44; +yy161: YYDEBUG(161, *YYCURSOR); - if (yych <= '/') goto yy154; - if (yych <= '9') goto yy160; - goto yy154; + yych = *++YYCURSOR; + if (yych == 'O') goto yy258; + if (yych == 'o') goto yy258; + goto yy44; yy162: YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy167; - } - goto yy158; + if (yych == 'T') goto yy259; + if (yych == 't') goto yy259; + goto yy44; yy163: YYDEBUG(163, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 16) { - goto yy164; + goto yy43; } - goto yy158; -yy164: YYDEBUG(164, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(165, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy164; - } - YYDEBUG(166, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1684 "Zend/zend_language_scanner.l" - { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN(T_LNUMBER); - } else { - 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); - } -} -#line 3231 "Zend/zend_language_scanner.c" -yy167: - YYDEBUG(167, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(168, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy167; - } - YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN(T_LNUMBER); - } else { - 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(T_IF); } -#line 3271 "Zend/zend_language_scanner.c" -yy170: - YYDEBUG(170, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(171, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy170; +#line 2906 "Zend/zend_language_scanner.c" +yy165: + YYDEBUG(165, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy260; + if (yych == 'p') goto yy260; + goto yy44; +yy166: + YYDEBUG(166, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy44; + goto yy261; } else { - if (yych <= '@') goto yy172; - if (yych <= 'Z') goto yy170; + if (yych <= 'R') goto yy44; + if (yych <= 'S') goto yy262; + goto yy263; } } else { - if (yych <= '`') { - if (yych <= '_') goto yy170; + if (yych <= 'r') { + if (yych == 'c') goto yy261; + goto yy44; } else { - if (yych <= 'z') goto yy170; - if (yych >= 0x80) goto yy170; + if (yych <= 's') goto yy262; + if (yych <= 't') goto yy263; + goto yy44; } } -yy172: +yy167: + YYDEBUG(167, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy264; + if (yych == 's') goto yy264; + goto yy44; +yy168: + YYDEBUG(168, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy265; + if (yych == 's') goto yy265; + goto yy44; +yy169: + YYDEBUG(169, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy266; + if (yych == 'm') goto yy266; + goto yy44; +yy170: + YYDEBUG(170, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy267; + if (yych == 'w') goto yy267; + goto yy44; +yy171: + YYDEBUG(171, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1622 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); + RETURN_TOKEN(T_LOGICAL_OR); } -#line 3301 "Zend/zend_language_scanner.c" +#line 2971 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy174; - if (yych != 'r') goto yy151; + if (yych <= 'O') { + if (yych == 'I') goto yy269; + if (yych <= 'N') goto yy44; + goto yy270; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy44; + goto yy269; + } else { + if (yych == 'o') goto yy270; + goto yy44; + } + } yy174: YYDEBUG(174, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'B') goto yy271; + if (yych == 'b') goto yy271; + goto yy44; +yy175: YYDEBUG(175, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1630 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 3319 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'Q') goto yy272; + if (yych <= 'S') goto yy44; + goto yy273; + } else { + if (yych <= 'q') { + if (yych <= 'p') goto yy44; + goto yy272; + } else { + if (yych == 't') goto yy273; + goto yy44; + } + } yy176: YYDEBUG(176, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy274; + if (yych == 'a') goto yy274; + goto yy44; +yy177: YYDEBUG(177, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1622 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_OR); -} -#line 3332 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy275; + if (yych == 'i') goto yy275; + goto yy44; yy178: YYDEBUG(178, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy276; + if (yych == 'r') goto yy276; + goto yy44; +yy179: YYDEBUG(179, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1610 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_XOR_EQUAL); -} -#line 3342 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'A') goto yy277; + if (yych <= 'X') goto yy44; + goto yy278; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy277; + } else { + if (yych == 'y') goto yy278; + goto yy44; + } + } yy180: YYDEBUG(180, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'S') goto yy280; + if (yych == 's') goto yy280; + goto yy44; +yy181: YYDEBUG(181, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1614 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_OR); -} -#line 3352 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy281; + if (yych == 'e') goto yy281; + goto yy44; yy182: YYDEBUG(182, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy283; + if (yych == 'r') goto yy283; + goto yy44; +yy183: YYDEBUG(183, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1606 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OR_EQUAL); -} -#line 3362 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy285; + if (yych == 'i') goto yy285; + goto yy44; yy184: YYDEBUG(184, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy286; + if (yych == 'r') goto yy286; + goto yy44; +yy185: YYDEBUG(185, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1618 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_AND); -} -#line 3372 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy288; + if (yych == 'e') goto yy288; + goto yy44; yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1610 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AND_EQUAL); + RETURN_TOKEN(T_XOR_EQUAL); } -#line 3382 "Zend/zend_language_scanner.c" +#line 3089 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy289; + case 'D': + case 'd': goto yy290; + case 'F': + case 'f': goto yy291; + case 'H': + case 'h': goto yy292; + case 'L': + case 'l': goto yy293; + case 'M': + case 'm': goto yy294; + case 'N': + case 'n': goto yy295; + case 'T': + case 't': goto yy296; + default: goto yy44; + } +yy189: YYDEBUG(189, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1590 "Zend/zend_language_scanner.l" +#line 1606 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MOD_EQUAL); + RETURN_TOKEN(T_OR_EQUAL); } -#line 3392 "Zend/zend_language_scanner.c" -yy190: - YYDEBUG(190, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy195; +#line 3121 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(192, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1991 "Zend/zend_language_scanner.l" +#line 1614 "Zend/zend_language_scanner.l" { - int doc_com; - - if (yyleng > 2) { - doc_com = 1; - RESET_DOC_COMMENT(); - } else { - doc_com = 0; - } - - while (YYCURSOR < YYLIMIT) { - if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { - break; - } - } - - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } else { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - - if (doc_com) { - CG(doc_comment) = zend_string_init(yytext, yyleng, 0); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_DOC_COMMENT); - } - RETURN_TOKEN(T_DOC_COMMENT); - } - - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); + RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3434 "Zend/zend_language_scanner.c" -yy192: - YYDEBUG(192, *YYCURSOR); - yych = *++YYCURSOR; - goto yy141; +#line 3131 "Zend/zend_language_scanner.c" yy193: YYDEBUG(193, *YYCURSOR); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1582 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DIV_EQUAL); + RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3448 "Zend/zend_language_scanner.c" +#line 3141 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy196; - } - goto yy158; + if (yych == 'R') goto yy297; + if (yych == 'r') goto yy297; + goto yy82; yy196: YYDEBUG(196, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy298; + if (yych == 'n') goto yy298; + goto yy82; +yy197: YYDEBUG(197, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy196; - } - goto yy191; + yych = *++YYCURSOR; + if (yych == 'O') goto yy299; + if (yych == 'o') goto yy299; + goto yy82; yy198: YYDEBUG(198, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy202; + yych = *++YYCURSOR; + if (yych == 'U') goto yy300; + if (yych == 'u') goto yy300; + goto yy82; +yy199: YYDEBUG(199, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW); -} -#line 3476 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy301; + if (yych == 'o') goto yy301; + goto yy82; yy200: YYDEBUG(200, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy302; + if (yych == 't') goto yy302; + goto yy82; +yy201: YYDEBUG(201, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MUL_EQUAL); -} -#line 3486 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'J') goto yy303; + if (yych == 'j') goto yy303; + goto yy82; yy202: YYDEBUG(202, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'A') goto yy304; + if (yych == 'a') goto yy304; + goto yy82; +yy203: YYDEBUG(203, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1578 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW_EQUAL); -} -#line 3496 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy305; + if (yych == 'r') goto yy305; + goto yy82; yy204: YYDEBUG(204, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy208; + yych = *++YYCURSOR; + if (yych == 'S') goto yy306; + if (yych == 's') goto yy306; + goto yy82; +yy205: YYDEBUG(205, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1638 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR); -} -#line 3507 "Zend/zend_language_scanner.c" -yy206: - YYDEBUG(206, *YYCURSOR); ++YYCURSOR; - YYDEBUG(207, *YYCURSOR); + YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1578 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); + RETURN_TOKEN(T_POW_EQUAL); } -#line 3517 "Zend/zend_language_scanner.c" -yy208: - YYDEBUG(208, *YYCURSOR); +#line 3211 "Zend/zend_language_scanner.c" +yy207: + YYDEBUG(207, *YYCURSOR); ++YYCURSOR; - YYDEBUG(209, *YYCURSOR); + YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1598 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SR_EQUAL); + RETURN_TOKEN(T_ELLIPSIS); } -#line 3527 "Zend/zend_language_scanner.c" +#line 3221 "Zend/zend_language_scanner.c" +yy209: + YYDEBUG(209, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy82; + if (yych <= '\n') goto yy307; + goto yy82; + } else { + if (yych <= '\r') goto yy307; + if (yych == ' ') goto yy307; + goto yy82; + } yy210: YYDEBUG(210, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy211; - if (yych <= '<') goto yy220; - if (yych <= '=') goto yy218; -yy211: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(211, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy210; + } + YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1634 "Zend/zend_language_scanner.l" +#line 1684 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL); + char *bin = yytext + 2; /* Skip "0b" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*bin == '0') { + ++bin; + --len; + } + + if (len < SIZEOF_ZEND_LONG * 8) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); + ZEND_ASSERT(!errno && end == yytext + yyleng); + } + RETURN_TOKEN(T_LNUMBER); + } else { + 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); + } } -#line 3542 "Zend/zend_language_scanner.c" -yy212: - YYDEBUG(212, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy216; +#line 3273 "Zend/zend_language_scanner.c" +yy213: YYDEBUG(213, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); -} -#line 3553 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= '/') goto yy82; + if (yych >= ':') goto yy82; yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; -yy215: + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(215, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 3564 "Zend/zend_language_scanner.c" + if (yych <= '/') goto yy109; + if (yych <= '9') goto yy214; + goto yy109; yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(217, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 3574 "Zend/zend_language_scanner.c" -yy218: + if (yybm[0+yych] & 128) { + goto yy216; + } YYDEBUG(218, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1594 "Zend/zend_language_scanner.l" +#line 1755 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL_EQUAL); -} -#line 3584 "Zend/zend_language_scanner.c" -yy220: - YYDEBUG(220, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(221, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy220; - } - if (yych <= 'Z') { - if (yych <= '&') { - if (yych == '"') goto yy225; - goto yy158; - } else { - if (yych <= '\'') goto yy224; - if (yych <= '@') goto yy158; - } + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; + } + + if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); } else { - if (yych <= '`') { - if (yych != '_') goto yy158; - } else { - if (yych <= 'z') goto yy222; - if (yych <= 0x7F) goto yy158; - } + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); + ZEND_ASSERT(!errno && end == hex + len); } -yy222: - YYDEBUG(222, *YYCURSOR); + RETURN_TOKEN(T_LNUMBER); + } else { + 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); + } +} +#line 3327 "Zend/zend_language_scanner.c" +yy219: + YYDEBUG(219, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(223, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy229; - goto yy158; + YYDEBUG(220, *YYCURSOR); + if (yych <= '\'') { + if (yych <= ' ') { + if (yych == '\t') goto yy219; + if (yych <= 0x1F) goto yy82; + goto yy219; } else { - if (yych <= '\r') goto yy231; - if (yych <= '/') goto yy158; - if (yych <= '9') goto yy222; - goto yy158; + if (yych == '"') goto yy309; + if (yych <= '&') goto yy82; + goto yy310; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy222; - if (yych <= '^') goto yy158; - goto yy222; + if (yych <= '@') goto yy82; + if (yych <= 'Z') goto yy311; + if (yych <= '^') goto yy82; + goto yy311; } else { - if (yych <= '`') goto yy158; - if (yych <= 'z') goto yy222; - if (yych <= 0x7F) goto yy158; - goto yy222; + if (yych <= '`') goto yy82; + if (yych <= 'z') goto yy311; + if (yych <= 0x7F) goto yy82; + goto yy311; } } -yy224: +yy221: + YYDEBUG(221, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(222, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1594 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL_EQUAL); +} +#line 3366 "Zend/zend_language_scanner.c" +yy223: + YYDEBUG(223, *YYCURSOR); + ++YYCURSOR; YYDEBUG(224, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy158; - if (yych <= '/') goto yy233; - if (yych <= '9') goto yy158; - goto yy233; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1550 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SPACESHIP); +} +#line 3376 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy158; - if (yych <= '/') goto yy227; - if (yych <= '9') goto yy158; - goto yy227; -yy226: - YYDEBUG(226, *YYCURSOR); ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + YYDEBUG(226, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1534 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_IDENTICAL); +} +#line 3386 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych != '"') goto yy158; - } else { - if (yych <= '9') goto yy226; - if (yych <= '@') goto yy158; - goto yy226; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy226; - goto yy158; - } else { - if (yych <= 'z') goto yy226; - if (yych <= 0x7F) goto yy158; - goto yy226; - } - } -yy228: - YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - if (yych == '\r') goto yy231; - goto yy158; -yy229: - YYDEBUG(229, *YYCURSOR); ++YYCURSOR; -yy230: - YYDEBUG(230, *YYCURSOR); + YYDEBUG(228, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2144 "Zend/zend_language_scanner.l" +#line 1598 "Zend/zend_language_scanner.l" { - char *s; - unsigned char *saved_cursor; - int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 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); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - heredoc_label->length--; - } - - if (*s == '\'') { - s++; - heredoc_label->length -= 2; - is_heredoc = 0; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - heredoc_label->length -= 2; - } - - BEGIN(ST_HEREDOC); - } - - heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = 0; - saved_cursor = YYCURSOR; - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - } - - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } - - /* Check for ending label on the next line */ - if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (!IS_LABEL_START(*end)) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - - if (*end == ';') { - end++; - } - - BEGIN(ST_END_HEREDOC); - is_heredoc = 0; - } else { - YYCURSOR = saved_cursor; - } - } else { - YYCURSOR = saved_cursor; - } - - if (is_heredoc && !SCNG(heredoc_scan_ahead)) { - zend_lex_state current_state; - int heredoc_nesting_level = 1; - - zend_save_lexical_state(¤t_state); - - SCNG(heredoc_scan_ahead) = 1; - - zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - - while (heredoc_nesting_level) { - zval zv; - int retval; - - ZVAL_UNDEF(&zv); - retval = lex_scan(&zv); - zval_dtor(&zv); - - if (EG(exception)) { - zend_restore_lexical_state(¤t_state); - RETURN_TOKEN(retval); - } - - switch (retval) { - case T_START_HEREDOC: - ++heredoc_nesting_level; - break; - case T_END_HEREDOC: - --heredoc_nesting_level; - break; - case END: - heredoc_nesting_level = 0; - } - } - - heredoc_label->indentation = SCNG(heredoc_indentation); - heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); - - zend_restore_lexical_state(¤t_state); - SCNG(heredoc_scan_ahead) = 0; - } - - RETURN_TOKEN(T_START_HEREDOC); + RETURN_TOKEN(T_SR_EQUAL); } -#line 3807 "Zend/zend_language_scanner.c" -yy231: - YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - goto yy230; -yy232: - YYDEBUG(232, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy233: - YYDEBUG(233, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy228; - goto yy158; - } else { - if (yych <= '9') goto yy232; - if (yych <= '@') goto yy158; - goto yy232; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy232; - goto yy158; - } else { - if (yych <= 'z') goto yy232; - if (yych <= 0x7F) goto yy158; - goto yy232; - } +#line 3396 "Zend/zend_language_scanner.c" +yy229: + YYDEBUG(229, *YYCURSOR); + ++YYCURSOR; + goto yy135; +yy230: + YYDEBUG(230, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy229; + goto yy135; +yy231: + YYDEBUG(231, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy313; + if (yych == 't') goto yy313; + goto yy44; +yy232: + YYDEBUG(232, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(233, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1626 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_AND); +} +#line 3424 "Zend/zend_language_scanner.c" yy234: YYDEBUG(234, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '=') goto yy215; + if (yych == 'A') goto yy314; + if (yych == 'a') goto yy314; + goto yy44; +yy235: YYDEBUG(235, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '<') goto yy219; + goto yy82; +yy236: YYDEBUG(236, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); -} -#line 3851 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy315; + if (yych == 'a') goto yy315; + goto yy44; yy237: YYDEBUG(237, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy316; + if (yych == 'l') goto yy316; + goto yy44; +yy238: YYDEBUG(238, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 3861 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy317; + if (yych == 'e') goto yy317; + goto yy44; yy239: YYDEBUG(239, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'C') goto yy319; + if (yych == 'c') goto yy319; + goto yy44; +yy240: YYDEBUG(240, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INC); -} -#line 3871 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy320; + if (yych == 's') goto yy320; + goto yy44; yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy242; - if (yych != 's') goto yy151; + if (yych == 'N') goto yy321; + if (yych == 'n') goto yy321; + goto yy44; yy242: YYDEBUG(242, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy243; - if (yych != 't') goto yy151; + if (yych <= 'T') { + if (yych <= 'R') goto yy44; + if (yych <= 'S') goto yy322; + goto yy323; + } else { + if (yych <= 'r') goto yy44; + if (yych <= 's') goto yy322; + if (yych <= 't') goto yy323; + goto yy44; + } yy243: YYDEBUG(243, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy324; + if (yych == 'l') goto yy324; + goto yy44; +yy244: YYDEBUG(244, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LIST); -} -#line 3894 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy325; + if (yych == 'a') goto yy325; + goto yy44; yy245: YYDEBUG(245, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy249; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1194 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_EQUAL); + RETURN_TOKEN(T_EXIT); } -#line 3905 "Zend/zend_language_scanner.c" +#line 3509 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy326; + if (yych == 'o') goto yy326; + goto yy44; +yy248: YYDEBUG(248, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_ARROW); -} -#line 3915 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy328; + if (yych == 'e') goto yy328; + goto yy44; yy249: YYDEBUG(249, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy330; + if (yych == 't') goto yy330; + goto yy44; +yy250: YYDEBUG(250, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_IDENTICAL); -} -#line 3925 "Zend/zend_language_scanner.c" -yy251: - YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; switch (yych) { - case 'C': - case 'c': goto yy253; case 'D': - case 'd': goto yy258; + case 'd': goto yy331; case 'F': - case 'f': goto yy255; - case 'H': - case 'h': goto yy252; - case 'L': - case 'l': goto yy257; - case 'M': - case 'm': goto yy256; - case 'N': - case 'n': goto yy259; - case 'T': - case 't': goto yy254; - default: goto yy151; + case 'f': goto yy332; + case 'I': + case 'i': goto yy333; + case 'S': + case 's': goto yy334; + case 'W': + case 'w': goto yy335; + default: goto yy44; } +yy251: + YYDEBUG(251, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy336; + if (yych == 'l') goto yy336; + goto yy44; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy320; - if (yych == 'a') goto yy320; - goto yy151; + if (yych == 'T') goto yy338; + if (yych == 't') goto yy338; + goto yy44; yy253: YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy313; - if (yych == 'l') goto yy313; - goto yy151; + if (yych == 'E') goto yy340; + if (yych == 'e') goto yy340; + goto yy44; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy306; - if (yych == 'r') goto yy306; - goto yy151; + if (yych == 'A') goto yy341; + if (yych == 'a') goto yy341; + goto yy44; yy255: YYDEBUG(255, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy290; - if (yych <= 'T') goto yy151; - goto yy291; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy256; + if (yych <= '9') goto yy43; + } else { + if (yych == 'E') goto yy342; + if (yych <= 'Z') goto yy43; + } } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy151; - goto yy290; + if (yych <= 'd') { + if (yych != '`') goto yy43; } else { - if (yych == 'u') goto yy291; - goto yy151; + if (yych <= 'e') goto yy342; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; } } yy256: YYDEBUG(256, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy282; - if (yych == 'e') goto yy282; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1264 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FOR); +} +#line 3595 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy276; - if (yych == 'i') goto yy276; - goto yy151; + if (yych == 'C') goto yy343; + if (yych == 'c') goto yy343; + goto yy44; yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy271; - if (yych == 'i') goto yy271; - goto yy151; + if (yych == 'B') goto yy344; + if (yych == 'b') goto yy344; + goto yy44; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy260; - if (yych != 'a') goto yy151; + if (yych == 'O') goto yy345; + if (yych == 'o') goto yy345; + goto yy44; yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy261; - if (yych != 'm') goto yy151; + if (yych == 'L') goto yy347; + if (yych == 'l') goto yy347; + goto yy44; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy262; - if (yych != 'e') goto yy151; + if (yych == 'L') goto yy348; + if (yych == 'l') goto yy348; + goto yy44; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy263; - if (yych != 's') goto yy151; + if (yych == 'T') goto yy349; + if (yych == 't') goto yy349; + goto yy44; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy264; - if (yych != 'p') goto yy151; + if (yych == 'E') goto yy350; + if (yych == 'e') goto yy350; + goto yy44; yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy265; - if (yych != 'a') goto yy151; + if (yych == 'E') goto yy351; + if (yych == 'e') goto yy351; + goto yy44; yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy266; - if (yych != 'c') goto yy151; + if (yych == 'T') goto yy352; + if (yych == 't') goto yy352; + goto yy44; yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy267; - if (yych != 'e') goto yy151; + if (yych == 'E') goto yy354; + if (yych == 'e') goto yy354; + goto yy44; yy267: YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(268, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(269, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(270, *YYCURSOR); + YYDEBUG(268, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1841 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_C); + RETURN_TOKEN(T_NEW); } -#line 4058 "Zend/zend_language_scanner.c" +#line 3668 "Zend/zend_language_scanner.c" +yy269: + YYDEBUG(269, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych == 'N') goto yy355; + if (yych <= 'U') goto yy44; + goto yy356; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy44; + goto yy355; + } else { + if (yych == 'v') goto yy356; + goto yy44; + } + } +yy270: + YYDEBUG(270, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy357; + if (yych == 't') goto yy357; + goto yy44; yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy272; - if (yych != 'r') goto yy151; + if (yych == 'L') goto yy358; + if (yych == 'l') goto yy358; + goto yy44; yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'U') goto yy359; + if (yych == 'u') goto yy359; + goto yy44; +yy273: YYDEBUG(273, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'U') goto yy360; + if (yych == 'u') goto yy360; + goto yy44; +yy274: YYDEBUG(274, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy361; + if (yych == 't') goto yy361; + goto yy44; +yy275: YYDEBUG(275, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIR); -} -#line 4082 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy362; + if (yych == 't') goto yy362; + goto yy44; yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy277; - if (yych != 'n') goto yy151; + if (yych == 'O') goto yy363; + if (yych == 'o') goto yy363; + goto yy44; yy277: YYDEBUG(277, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy278; - if (yych != 'e') goto yy151; + if (yych == 'I') goto yy364; + if (yych == 'i') goto yy364; + goto yy44; yy278: YYDEBUG(278, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1220 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRY); +} +#line 3745 "Zend/zend_language_scanner.c" +yy280: YYDEBUG(280, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy365; + if (yych == 'e') goto yy365; + goto yy44; +yy281: YYDEBUG(281, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(282, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LINE); + RETURN_TOKEN(T_USE); } -#line 4111 "Zend/zend_language_scanner.c" -yy282: - YYDEBUG(282, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy283; - if (yych != 't') goto yy151; +#line 3764 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy284; - if (yych != 'h') goto yy151; -yy284: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(284, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy285; - if (yych != 'o') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1402 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_VAR); +} +#line 3777 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy286; - if (yych != 'd') goto yy151; + if (yych == 'L') goto yy366; + if (yych == 'l') goto yy366; + goto yy44; yy286: YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(287, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(288, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(289, *YYCURSOR); + YYDEBUG(287, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1825 "Zend/zend_language_scanner.l" +#line 1630 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_METHOD_C); + RETURN_TOKEN(T_LOGICAL_XOR); } -#line 4150 "Zend/zend_language_scanner.c" +#line 3796 "Zend/zend_language_scanner.c" +yy288: + YYDEBUG(288, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy367; + if (yych == 'l') goto yy367; + goto yy44; +yy289: + YYDEBUG(289, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy368; + if (yych == 'l') goto yy368; + goto yy44; yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy301; - if (yych == 'l') goto yy301; - goto yy151; + if (yych == 'I') goto yy369; + if (yych == 'i') goto yy369; + goto yy44; yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy292; - if (yych != 'n') goto yy151; + if (yych <= 'U') { + if (yych == 'I') goto yy370; + if (yych <= 'T') goto yy44; + goto yy371; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy44; + goto yy370; + } else { + if (yych == 'u') goto yy371; + goto yy44; + } + } yy292: YYDEBUG(292, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy293; - if (yych != 'c') goto yy151; + if (yych == 'A') goto yy372; + if (yych == 'a') goto yy372; + goto yy44; yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy294; - if (yych != 't') goto yy151; + if (yych == 'I') goto yy373; + if (yych == 'i') goto yy373; + goto yy44; yy294: YYDEBUG(294, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy295; - if (yych != 'i') goto yy151; + if (yych == 'E') goto yy374; + if (yych == 'e') goto yy374; + goto yy44; yy295: YYDEBUG(295, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy296; - if (yych != 'o') goto yy151; + if (yych == 'A') goto yy375; + if (yych == 'a') goto yy375; + goto yy44; yy296: YYDEBUG(296, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy297; - if (yych != 'n') goto yy151; + if (yych == 'R') goto yy376; + if (yych == 'r') goto yy376; + goto yy44; yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'A') goto yy377; + if (yych == 'a') goto yy377; + goto yy82; +yy298: YYDEBUG(298, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'A') goto yy378; + if (yych == 'a') goto yy378; + goto yy82; +yy299: YYDEBUG(299, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy379; + if (yych == 'l') goto yy379; + goto yy82; +yy300: YYDEBUG(300, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1821 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNC_C); -} -#line 4205 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'B') goto yy380; + if (yych == 'b') goto yy380; + goto yy82; yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy302; - if (yych != 'e') goto yy151; + if (yych == 'A') goto yy381; + if (yych == 'a') goto yy381; + goto yy82; yy302: YYDEBUG(302, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'E') goto yy386; + if (yych == 'e') goto yy386; + goto yy383; +yy303: YYDEBUG(303, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'E') goto yy387; + if (yych == 'e') goto yy387; + goto yy82; +yy304: YYDEBUG(304, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy388; + if (yych == 'l') goto yy388; + goto yy82; +yy305: YYDEBUG(305, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1833 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FILE); -} -#line 4229 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy390; + if (yych == 'i') goto yy390; + goto yy82; yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy307; - if (yych != 'a') goto yy151; + if (yych == 'E') goto yy391; + if (yych == 'e') goto yy391; + goto yy82; yy307: YYDEBUG(307, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy308; - if (yych != 'i') goto yy151; -yy308: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(308, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy309; - if (yych != 't') goto yy151; + if (yych <= '\f') { + if (yych <= 0x08) goto yy113; + if (yych <= '\n') goto yy307; + goto yy113; + } else { + if (yych <= '\r') goto yy307; + if (yych == ' ') goto yy307; + goto yy113; + } yy309: YYDEBUG(309, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == '"') goto yy82; + if (yych <= '/') goto yy393; + if (yych <= '9') goto yy82; + goto yy393; +yy310: YYDEBUG(310, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == '\'') goto yy82; + if (yych <= '/') goto yy395; + if (yych <= '9') goto yy82; + goto yy395; +yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + YYFILL(2); + yych = *YYCURSOR; YYDEBUG(312, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1817 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT_C); -} -#line 4263 "Zend/zend_language_scanner.c" + if (yych <= '@') { + if (yych <= '\f') { + if (yych == '\n') goto yy396; + goto yy82; + } else { + if (yych <= '\r') goto yy398; + if (yych <= '/') goto yy82; + if (yych <= '9') goto yy311; + goto yy82; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy311; + if (yych <= '^') goto yy82; + goto yy311; + } else { + if (yych <= '`') goto yy82; + if (yych <= 'z') goto yy311; + if (yych <= 0x7F) goto yy82; + goto yy311; + } + } yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy314; - if (yych != 'a') goto yy151; + if (yych == 'R') goto yy399; + if (yych == 'r') goto yy399; + goto yy44; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy315; - if (yych != 's') goto yy151; + if (yych == 'Y') goto yy400; + if (yych == 'y') goto yy400; + goto yy44; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy316; - if (yych != 's') goto yy151; + if (yych == 'K') goto yy402; + if (yych == 'k') goto yy402; + goto yy44; yy316: YYDEBUG(316, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'A') goto yy404; + if (yych == 'a') goto yy404; + goto yy44; +yy317: YYDEBUG(317, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(318, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(319, *YYCURSOR); + YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1813 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS_C); + RETURN_TOKEN(T_CASE); } -#line 4297 "Zend/zend_language_scanner.c" +#line 4014 "Zend/zend_language_scanner.c" +yy319: + YYDEBUG(319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy405; + if (yych == 'h') goto yy405; + goto yy44; yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy321; - if (yych != 'l') goto yy151; + if (yych == 'S') goto yy407; + if (yych == 's') goto yy407; + goto yy44; yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy322; - if (yych != 't') goto yy151; + if (yych == 'E') goto yy409; + if (yych == 'e') goto yy409; + goto yy44; yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'T') goto yy411; + if (yych == 't') goto yy411; + goto yy44; +yy323: YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy324; - if (yych != 'c') goto yy151; + if (yych == 'I') goto yy413; + if (yych == 'i') goto yy413; + goto yy44; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy325; - if (yych != 'o') goto yy151; + if (yych == 'A') goto yy414; + if (yych == 'a') goto yy414; + goto yy44; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy326; - if (yych != 'm') goto yy151; + if (yych == 'U') goto yy415; + if (yych == 'u') goto yy415; + goto yy44; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy327; - if (yych != 'p') goto yy151; -yy327: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(327, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy328; - if (yych != 'i') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1324 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ECHO); +} +#line 4069 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy329; - if (yych != 'l') goto yy151; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy329; + if (yych <= '9') goto yy43; + } else { + if (yych == 'I') goto yy416; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'h') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'i') goto yy416; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy329: YYDEBUG(329, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy330; - if (yych != 'e') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1248 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELSE); +} +#line 4097 "Zend/zend_language_scanner.c" yy330: YYDEBUG(330, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy331; - if (yych != 'r') goto yy151; + if (yych == 'Y') goto yy417; + if (yych == 'y') goto yy417; + goto yy44; yy331: YYDEBUG(331, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy419; + if (yych == 'e') goto yy419; + goto yy44; +yy332: YYDEBUG(332, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_HALT_COMPILER); -} -#line 4363 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy420; + if (yych == 'o') goto yy420; + goto yy44; yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy337; - if (yych == 's') goto yy337; - goto yy151; + if (yych == 'F') goto yy421; + if (yych == 'f') goto yy421; + goto yy44; yy334: YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy335; - if (yych != 'e') goto yy151; + if (yych == 'W') goto yy423; + if (yych == 'w') goto yy423; + goto yy44; yy335: YYDEBUG(335, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'H') goto yy424; + if (yych == 'h') goto yy424; + goto yy44; +yy336: YYDEBUG(336, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(337, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_USE); + RETURN_TOKEN(T_EVAL); } -#line 4387 "Zend/zend_language_scanner.c" -yy337: - YYDEBUG(337, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy338; - if (yych != 'e') goto yy151; +#line 4146 "Zend/zend_language_scanner.c" yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy339; - if (yych != 't') goto yy151; -yy339: - YYDEBUG(339, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(340, *YYCURSOR); + YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1190 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_UNSET); + RETURN_TOKEN(T_EXIT); } -#line 4410 "Zend/zend_language_scanner.c" +#line 4159 "Zend/zend_language_scanner.c" +yy340: + YYDEBUG(340, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy425; + if (yych == 'n') goto yy425; + goto yy44; yy341: YYDEBUG(341, *YYCURSOR); - ++YYCURSOR; - YYFILL(7); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy426; + if (yych == 'l') goto yy426; + goto yy44; yy342: YYDEBUG(342, *YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy341; - if (yych <= 0x1F) goto yy158; - goto yy341; - } else { - if (yych <= 'A') { - if (yych <= '@') goto yy158; - goto yy346; - } else { - if (yych <= 'B') goto yy344; - if (yych <= 'C') goto yy158; - goto yy349; - } - } - } else { - if (yych <= 'I') { - if (yych == 'F') goto yy350; - if (yych <= 'H') goto yy158; - goto yy351; - } else { - if (yych <= 'O') { - if (yych <= 'N') goto yy158; - goto yy345; - } else { - if (yych <= 'Q') goto yy158; - if (yych <= 'R') goto yy348; - goto yy347; - } - } - } - } else { - if (yych <= 'f') { - if (yych <= 'a') { - if (yych == 'U') goto yy343; - if (yych <= '`') goto yy158; - goto yy346; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy344; - goto yy158; - } else { - if (yych <= 'd') goto yy349; - if (yych <= 'e') goto yy158; - goto yy350; - } - } - } else { - if (yych <= 'q') { - if (yych <= 'i') { - if (yych <= 'h') goto yy158; - goto yy351; - } else { - if (yych == 'o') goto yy345; - goto yy158; - } - } else { - if (yych <= 's') { - if (yych <= 'r') goto yy348; - goto yy347; - } else { - if (yych != 'u') goto yy158; - } - } - } - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy428; + if (yych == 'a') goto yy428; + goto yy44; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy410; - if (yych == 'n') goto yy410; - goto yy158; + if (yych == 'T') goto yy429; + if (yych == 't') goto yy429; + goto yy44; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy397; - if (yych <= 'N') goto yy158; - goto yy398; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy158; - goto yy397; - } else { - if (yych == 'o') goto yy398; - goto yy158; - } - } + if (yych == 'A') goto yy430; + if (yych == 'a') goto yy430; + goto yy44; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy389; - if (yych == 'b') goto yy389; - goto yy158; -yy346: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(346, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy382; - if (yych == 'r') goto yy382; - goto yy158; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1320 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GOTO); +} +#line 4202 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy374; - if (yych == 't') goto yy374; - goto yy158; + if (yych == 'E') goto yy431; + if (yych == 'e') goto yy431; + goto yy44; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy372; - if (yych == 'e') goto yy372; - goto yy158; + if (yych == 'U') goto yy432; + if (yych == 'u') goto yy432; + goto yy44; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy368; - if (yych == 'o') goto yy368; - goto yy158; + if (yych <= 'E') { + if (yych == 'A') goto yy433; + if (yych <= 'D') goto yy44; + goto yy434; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy433; + } else { + if (yych == 'e') goto yy434; + goto yy44; + } + } yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy361; - if (yych == 'l') goto yy361; - goto yy158; + if (yych == 'R') goto yy435; + if (yych == 'r') goto yy435; + goto yy44; yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy352; - if (yych != 'n') goto yy158; + if (yych == 'T') goto yy436; + if (yych == 't') goto yy436; + goto yy44; yy352: YYDEBUG(352, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy353; - if (yych != 't') goto yy158; -yy353: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(353, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy354; - if (yych != 'e') goto yy356; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1514 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LIST); +} +#line 4255 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy359; - if (yych == 'g') goto yy359; - goto yy158; + if (yych == 'S') goto yy438; + if (yych == 's') goto yy438; + goto yy44; yy355: YYDEBUG(355, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy439; + if (yych == 't') goto yy439; + goto yy44; yy356: YYDEBUG(356, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy355; - goto yy158; - } else { - if (yych <= ' ') goto yy355; - if (yych != ')') goto yy158; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy441; + if (yych == 'a') goto yy441; + goto yy44; +yy357: YYDEBUG(357, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy442; + if (yych == 'e') goto yy442; + goto yy44; +yy358: YYDEBUG(358, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 4586 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy443; + if (yych == 'i') goto yy443; + goto yy44; yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy360; - if (yych != 'e') goto yy158; + if (yych == 'I') goto yy444; + if (yych == 'i') goto yy444; + goto yy44; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy355; - if (yych == 'r') goto yy355; - goto yy158; + if (yych == 'R') goto yy445; + if (yych == 'r') goto yy445; + goto yy44; yy361: YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy362; - if (yych != 'o') goto yy158; + if (yych == 'I') goto yy446; + if (yych == 'i') goto yy446; + goto yy44; yy362: YYDEBUG(362, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy363; - if (yych != 'a') goto yy158; + if (yych == 'C') goto yy447; + if (yych == 'c') goto yy447; + goto yy44; yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy364; - if (yych != 't') goto yy158; + if (yych == 'W') goto yy448; + if (yych == 'w') goto yy448; + goto yy44; yy364: YYDEBUG(364, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy450; + if (yych == 't') goto yy450; + goto yy44; +yy365: YYDEBUG(365, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy364; - goto yy158; - } else { - if (yych <= ' ') goto yy364; - if (yych != ')') goto yy158; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy452; + if (yych == 't') goto yy452; + goto yy44; +yy366: YYDEBUG(366, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy454; + if (yych == 'e') goto yy454; + goto yy44; +yy367: YYDEBUG(367, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); -} -#line 4634 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy456; + if (yych == 'd') goto yy456; + goto yy44; yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy369; - if (yych != 'u') goto yy158; + if (yych == 'A') goto yy458; + if (yych == 'a') goto yy458; + goto yy44; yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy370; - if (yych != 'b') goto yy158; + if (yych == 'R') goto yy459; + if (yych == 'r') goto yy459; + goto yy44; yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy371; - if (yych != 'l') goto yy158; + if (yych == 'L') goto yy460; + if (yych == 'l') goto yy460; + goto yy44; yy371: YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy364; - if (yych == 'e') goto yy364; - goto yy158; + if (yych == 'N') goto yy461; + if (yych == 'n') goto yy461; + goto yy44; yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy373; - if (yych != 'a') goto yy158; + if (yych == 'L') goto yy462; + if (yych == 'l') goto yy462; + goto yy44; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy364; - if (yych == 'l') goto yy364; - goto yy158; + if (yych == 'N') goto yy463; + if (yych == 'n') goto yy463; + goto yy44; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy375; - if (yych != 'r') goto yy158; + if (yych == 'T') goto yy464; + if (yych == 't') goto yy464; + goto yy44; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy376; - if (yych != 'i') goto yy158; + if (yych == 'M') goto yy465; + if (yych == 'm') goto yy465; + goto yy44; yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy377; - if (yych != 'n') goto yy158; + if (yych == 'A') goto yy466; + if (yych == 'a') goto yy466; + goto yy44; yy377: YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy378; - if (yych != 'g') goto yy158; + if (yych == 'Y') goto yy467; + if (yych == 'y') goto yy467; + goto yy82; yy378: YYDEBUG(378, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy469; + if (yych == 'r') goto yy469; + goto yy82; +yy379: + YYDEBUG(379, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy474; + if (yych == 'e') goto yy474; + goto yy471; +yy380: + YYDEBUG(380, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy475; + if (yych == 'l') goto yy475; + goto yy82; +yy381: + YYDEBUG(381, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy388; + if (yych == 't') goto yy388; + goto yy82; +yy382: + YYDEBUG(382, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(379, *YYCURSOR); +yy383: + YYDEBUG(383, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy378; - goto yy158; + if (yych == '\t') goto yy382; + goto yy82; } else { - if (yych <= ' ') goto yy378; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy382; + if (yych != ')') goto yy82; } - YYDEBUG(380, *YYCURSOR); + YYDEBUG(384, *YYCURSOR); ++YYCURSOR; - YYDEBUG(381, *YYCURSOR); + YYDEBUG(385, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_STRING_CAST); + RETURN_TOKEN(T_INT_CAST); } -#line 4708 "Zend/zend_language_scanner.c" -yy382: - YYDEBUG(382, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy383; - if (yych != 'r') goto yy158; -yy383: - YYDEBUG(383, *YYCURSOR); +#line 4446 "Zend/zend_language_scanner.c" +yy386: + YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy384; - if (yych != 'a') goto yy158; -yy384: - YYDEBUG(384, *YYCURSOR); + if (yych == 'G') goto yy476; + if (yych == 'g') goto yy476; + goto yy82; +yy387: + YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy385; - if (yych != 'y') goto yy158; -yy385: - YYDEBUG(385, *YYCURSOR); + if (yych == 'C') goto yy477; + if (yych == 'c') goto yy477; + goto yy82; +yy388: + YYDEBUG(388, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(386, *YYCURSOR); + YYDEBUG(389, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy385; - goto yy158; + if (yych == '\t') goto yy388; + goto yy82; + } else { + if (yych <= ' ') goto yy388; + if (yych == ')') goto yy478; + goto yy82; + } +yy390: + YYDEBUG(390, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy480; + if (yych == 'n') goto yy480; + goto yy82; +yy391: + YYDEBUG(391, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy481; + if (yych == 't') goto yy481; + goto yy82; +yy392: + YYDEBUG(392, *YYCURSOR); + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy393: + YYDEBUG(393, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '"') goto yy483; + goto yy82; + } else { + if (yych <= '9') goto yy392; + if (yych <= '@') goto yy82; + goto yy392; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy392; + goto yy82; + } else { + if (yych <= 'z') goto yy392; + if (yych <= 0x7F) goto yy82; + goto yy392; + } + } +yy394: + YYDEBUG(394, *YYCURSOR); + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy395: + YYDEBUG(395, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '\'') goto yy483; + goto yy82; + } else { + if (yych <= '9') goto yy394; + if (yych <= '@') goto yy82; + goto yy394; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy394; + goto yy82; + } else { + if (yych <= 'z') goto yy394; + if (yych <= 0x7F) goto yy82; + goto yy394; + } + } +yy396: + YYDEBUG(396, *YYCURSOR); + ++YYCURSOR; +yy397: + YYDEBUG(397, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2144 "Zend/zend_language_scanner.l" + { + char *s; + unsigned char *saved_cursor; + int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 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); + s = yytext+bprefix+3; + while ((*s == ' ') || (*s == '\t')) { + s++; + heredoc_label->length--; + } + + if (*s == '\'') { + s++; + heredoc_label->length -= 2; + is_heredoc = 0; + + BEGIN(ST_NOWDOC); + } else { + if (*s == '"') { + s++; + heredoc_label->length -= 2; + } + + BEGIN(ST_HEREDOC); + } + + heredoc_label->label = estrndup(s, heredoc_label->length); + heredoc_label->indentation = 0; + saved_cursor = YYCURSOR; + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; } else { - if (yych <= ' ') goto yy385; - if (yych != ')') goto yy158; + spacing |= HEREDOC_USING_SPACES; } - YYDEBUG(387, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(388, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY_CAST); -} -#line 4745 "Zend/zend_language_scanner.c" -yy389: - YYDEBUG(389, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'J') goto yy390; - if (yych != 'j') goto yy158; -yy390: - YYDEBUG(390, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy391; - if (yych != 'e') goto yy158; -yy391: - YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy392; - if (yych != 'c') goto yy158; -yy392: - YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy393; - if (yych != 't') goto yy158; -yy393: - YYDEBUG(393, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(394, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy393; - goto yy158; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + ZVAL_NULL(zendlval); + RETURN_TOKEN(T_START_HEREDOC); + } + + /* Check for ending label on the next line */ + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; + + if (!IS_LABEL_START(*end)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + if (*end == ';') { + end++; + } + + BEGIN(ST_END_HEREDOC); + is_heredoc = 0; } else { - if (yych <= ' ') goto yy393; - if (yych != ')') goto yy158; + YYCURSOR = saved_cursor; } - YYDEBUG(395, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(396, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_CAST); + } else { + YYCURSOR = saved_cursor; + } + + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { + zend_lex_state current_state; + int heredoc_nesting_level = 1; + + zend_save_lexical_state(¤t_state); + + SCNG(heredoc_scan_ahead) = 1; + + zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + + while (heredoc_nesting_level) { + zval zv; + int retval; + + ZVAL_UNDEF(&zv); + retval = lex_scan(&zv); + zval_dtor(&zv); + + if (EG(exception)) { + zend_restore_lexical_state(¤t_state); + RETURN_TOKEN(retval); + } + + switch (retval) { + case T_START_HEREDOC: + ++heredoc_nesting_level; + break; + case T_END_HEREDOC: + --heredoc_nesting_level; + break; + case END: + heredoc_nesting_level = 0; + } + } + + heredoc_label->indentation = SCNG(heredoc_indentation); + heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); + + zend_restore_lexical_state(¤t_state); + SCNG(heredoc_scan_ahead) = 0; + } + + RETURN_TOKEN(T_START_HEREDOC); } -#line 4787 "Zend/zend_language_scanner.c" -yy397: - YYDEBUG(397, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy407; - if (yych == 'n') goto yy407; - goto yy158; +#line 4662 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy399; - if (yych != 'o') goto yy158; + if (yych == '\n') goto yy396; + goto yy397; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy400; - if (yych != 'l') goto yy158; + if (yych == 'A') goto yy484; + if (yych == 'a') goto yy484; + goto yy44; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy405; - if (yych == 'e') goto yy405; - goto yy402; -yy401: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(401, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1518 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY); +} +#line 4686 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy401; - goto yy158; - } else { - if (yych <= ' ') goto yy401; - if (yych != ')') goto yy158; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(403, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(404, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOL_CAST); + RETURN_TOKEN(T_BREAK); } -#line 4832 "Zend/zend_language_scanner.c" +#line 4699 "Zend/zend_language_scanner.c" +yy404: + YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy485; + if (yych == 'b') goto yy485; + goto yy44; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy406; - if (yych != 'a') goto yy158; -yy406: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(406, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy401; - if (yych == 'n') goto yy401; - goto yy158; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1224 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CATCH); +} +#line 4718 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy408; - if (yych != 'a') goto yy158; -yy408: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(408, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy409; - if (yych != 'r') goto yy158; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1332 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS); +} +#line 4731 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy378; - if (yych == 'y') goto yy378; - goto yy158; -yy410: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(410, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy411; - if (yych != 's') goto yy158; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1398 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLONE); +} +#line 4744 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy412; - if (yych != 'e') goto yy158; -yy412: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(412, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy413; - if (yych != 't') goto yy158; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1202 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONST); +} +#line 4757 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy486; + if (yych == 'n') goto yy486; + goto yy44; +yy414: YYDEBUG(414, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy413; - goto yy158; - } else { - if (yych <= ' ') goto yy413; - if (yych != ')') goto yy158; - } + yych = *++YYCURSOR; + if (yych == 'R') goto yy487; + if (yych == 'r') goto yy487; + goto yy44; +yy415: YYDEBUG(415, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy488; + if (yych == 'l') goto yy488; + goto yy44; +yy416: YYDEBUG(416, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET_CAST); -} -#line 4896 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy489; + if (yych == 'f') goto yy489; + goto yy44; yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy418; - if (yych != 'r') goto yy151; -yy418: - YYDEBUG(418, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(419, *YYCURSOR); + YYDEBUG(418, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1474 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_VAR); + RETURN_TOKEN(T_EMPTY); } -#line 4914 "Zend/zend_language_scanner.c" +#line 4794 "Zend/zend_language_scanner.c" +yy419: + YYDEBUG(419, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy491; + if (yych == 'c') goto yy491; + goto yy44; yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy424; - if (yych == 'm') goto yy424; - goto yy151; + if (yych == 'R') goto yy492; + if (yych == 'r') goto yy492; + goto yy44; yy421: YYDEBUG(421, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy422; - if (yych != 'w') goto yy151; -yy422: - YYDEBUG(422, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(423, *YYCURSOR); + YYDEBUG(422, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NEW); + RETURN_TOKEN(T_ENDIF); } -#line 4938 "Zend/zend_language_scanner.c" +#line 4819 "Zend/zend_language_scanner.c" +yy423: + YYDEBUG(423, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy494; + if (yych == 'i') goto yy494; + goto yy44; yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy425; - if (yych != 'e') goto yy151; + if (yych == 'I') goto yy495; + if (yych == 'i') goto yy495; + goto yy44; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy426; - if (yych != 's') goto yy151; + if (yych == 'D') goto yy496; + if (yych == 'd') goto yy496; + goto yy44; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy427; - if (yych != 'p') goto yy151; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy427; + if (yych <= '9') goto yy43; + } else { + if (yych == 'L') goto yy497; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'l') goto yy497; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy427: YYDEBUG(427, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy428; - if (yych != 'a') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1490 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINAL); +} +#line 4865 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy429; - if (yych != 'c') goto yy151; + if (yych == 'C') goto yy498; + if (yych == 'c') goto yy498; + goto yy44; yy429: YYDEBUG(429, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy430; - if (yych != 'e') goto yy151; + if (yych == 'I') goto yy499; + if (yych == 'i') goto yy499; + goto yy44; yy430: YYDEBUG(430, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy500; + if (yych == 'l') goto yy500; + goto yy44; +yy431: YYDEBUG(431, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NAMESPACE); -} -#line 4981 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'M') goto yy502; + if (yych == 'm') goto yy502; + goto yy44; yy432: YYDEBUG(432, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy436; - if (yych == '\r') goto yy437; + yych = *++YYCURSOR; + if (yych == 'D') goto yy503; + if (yych == 'd') goto yy503; + goto yy44; yy433: YYDEBUG(433, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2024 "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 */ -} -#line 4998 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy504; + if (yych == 'n') goto yy504; + goto yy44; yy434: YYDEBUG(434, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'A') goto yy505; + if (yych == 'a') goto yy505; + goto yy44; +yy435: YYDEBUG(435, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_COALESCE); -} -#line 5008 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy506; + if (yych == 'f') goto yy506; + goto yy44; yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; - goto yy433; -yy437: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(437, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy436; - goto yy433; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1470 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ISSET); +} +#line 4926 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'P') goto yy507; + if (yych == 'p') goto yy507; + goto yy44; +yy439: YYDEBUG(439, *YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy154; - if (yych <= '9') goto yy438; - goto yy154; - } else { - if (yych <= 'E') goto yy157; - if (yych == 'e') goto yy157; - goto yy154; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } -yy440: YYDEBUG(440, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(441, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1586 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONCAT_EQUAL); + RETURN_TOKEN(T_PRINT); } -#line 5043 "Zend/zend_language_scanner.c" +#line 4945 "Zend/zend_language_scanner.c" +yy441: + YYDEBUG(441, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy508; + if (yych == 't') goto yy508; + goto yy44; yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '.') goto yy158; + if (yych == 'C') goto yy509; + if (yych == 'c') goto yy509; + goto yy44; +yy443: YYDEBUG(443, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'C') goto yy510; + if (yych == 'c') goto yy510; + goto yy44; +yy444: YYDEBUG(444, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELLIPSIS); -} -#line 5056 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy512; + if (yych == 'r') goto yy512; + goto yy44; yy445: YYDEBUG(445, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy513; + if (yych == 'n') goto yy513; + goto yy44; +yy446: YYDEBUG(446, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); -} -#line 5066 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy515; + if (yych == 'c') goto yy515; + goto yy44; yy447: YYDEBUG(447, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'H') goto yy517; + if (yych == 'h') goto yy517; + goto yy44; yy448: YYDEBUG(448, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy105; - if (yych <= '\n') goto yy447; - goto yy105; - } else { - if (yych <= '\r') goto yy447; - if (yych == ' ') goto yy447; - goto yy105; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } -yy449: YYDEBUG(449, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MINUS_EQUAL); + RETURN_TOKEN(T_THROW); } -#line 5092 "Zend/zend_language_scanner.c" -yy451: +#line 5000 "Zend/zend_language_scanner.c" +yy450: + YYDEBUG(450, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(451, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DEC); + RETURN_TOKEN(T_TRAIT); } -#line 5102 "Zend/zend_language_scanner.c" -yy453: +#line 5013 "Zend/zend_language_scanner.c" +yy452: + YYDEBUG(452, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(453, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN(T_OBJECT_OPERATOR); + RETURN_TOKEN(T_UNSET); } -#line 5113 "Zend/zend_language_scanner.c" -yy455: - YYDEBUG(455, *YYCURSOR); +#line 5026 "Zend/zend_language_scanner.c" +yy454: + YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy462; - if (yych <= 'N') goto yy151; - goto yy463; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy151; - goto yy462; - } else { - if (yych == 'o') goto yy463; - goto yy151; - } + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(455, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1252 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_WHILE); +} +#line 5039 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy457; - if (yych != 'b') goto yy151; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy43; + } + if (yych <= '\f') { + if (yych <= 0x08) goto yy457; + if (yych <= '\n') goto yy519; + } else { + if (yych <= '\r') goto yy519; + if (yych == ' ') goto yy519; + } yy457: YYDEBUG(457, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy458; - if (yych != 'l') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1216 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_YIELD); +} +#line 5061 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy459; - if (yych != 'i') goto yy151; + if (yych == 'S') goto yy521; + if (yych == 's') goto yy521; + goto yy44; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy460; - if (yych != 'c') goto yy151; + if (yych == '_') goto yy522; + goto yy44; yy460: YYDEBUG(460, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy523; + if (yych == 'e') goto yy523; + goto yy44; +yy461: YYDEBUG(461, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PUBLIC); -} -#line 5162 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy524; + if (yych == 'c') goto yy524; + goto yy44; yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy471; - if (yych <= 'U') goto yy151; - goto yy472; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy151; - goto yy471; - } else { - if (yych == 'v') goto yy472; - goto yy151; - } - } + if (yych == 'T') goto yy525; + if (yych == 't') goto yy525; + goto yy44; yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy464; - if (yych != 't') goto yy151; + if (yych == 'E') goto yy526; + if (yych == 'e') goto yy526; + goto yy44; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy465; - if (yych != 'e') goto yy151; + if (yych == 'H') goto yy527; + if (yych == 'h') goto yy527; + goto yy44; yy465: YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy466; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy528; + if (yych == 'e') goto yy528; + goto yy44; yy466: YYDEBUG(466, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy467; - if (yych != 't') goto yy151; + if (yych == 'I') goto yy529; + if (yych == 'i') goto yy529; + goto yy44; yy467: YYDEBUG(467, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy468; - if (yych != 'e') goto yy151; -yy468: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(468, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy469; - if (yych != 'd') goto yy151; + if (yych <= 0x1F) { + if (yych == '\t') goto yy467; + goto yy82; + } else { + if (yych <= ' ') goto yy467; + if (yych == ')') goto yy530; + goto yy82; + } yy469: YYDEBUG(469, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'Y') goto yy532; + if (yych == 'y') goto yy532; + goto yy82; +yy470: YYDEBUG(470, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PROTECTED); -} -#line 5221 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy471: YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy477; - if (yych == 't') goto yy477; - goto yy151; -yy472: + if (yych <= 0x1F) { + if (yych == '\t') goto yy470; + goto yy82; + } else { + if (yych <= ' ') goto yy470; + if (yych != ')') goto yy82; + } YYDEBUG(472, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy473; - if (yych != 'a') goto yy151; -yy473: + ++YYCURSOR; YYDEBUG(473, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy474; - if (yych != 't') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1426 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOL_CAST); +} +#line 5157 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy475; - if (yych != 'e') goto yy151; + if (yych == 'A') goto yy534; + if (yych == 'a') goto yy534; + goto yy82; yy475: YYDEBUG(475, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy388; + if (yych == 'e') goto yy388; + goto yy82; +yy476: YYDEBUG(476, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRIVATE); -} -#line 5255 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy535; + if (yych == 'e') goto yy535; + goto yy82; yy477: YYDEBUG(477, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy536; + if (yych == 't') goto yy536; + goto yy82; +yy478: YYDEBUG(478, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(479, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PRINT); + RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5268 "Zend/zend_language_scanner.c" -yy479: - YYDEBUG(479, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy484; - if (yych == 'o') goto yy484; - goto yy151; +#line 5191 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy481; - if (yych != 't') goto yy151; + if (yych == 'G') goto yy532; + if (yych == 'g') goto yy532; + goto yy82; yy481: YYDEBUG(481, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy482; - if (yych != 'o') goto yy151; -yy482: - YYDEBUG(482, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(482, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy481; + goto yy82; + } else { + if (yych <= ' ') goto yy481; + if (yych == ')') goto yy538; + goto yy82; } +yy483: YYDEBUG(483, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 5297 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '\n') goto yy396; + if (yych == '\r') goto yy398; + goto yy82; yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy485; - if (yych != 'b') goto yy151; + if (yych == 'C') goto yy540; + if (yych == 'c') goto yy540; + goto yy44; yy485: YYDEBUG(485, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy486; - if (yych != 'a') goto yy151; + if (yych == 'L') goto yy541; + if (yych == 'l') goto yy541; + goto yy44; yy486: YYDEBUG(486, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy487; - if (yych != 'l') goto yy151; + if (yych == 'U') goto yy542; + if (yych == 'u') goto yy542; + goto yy44; yy487: YYDEBUG(487, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy543; + if (yych == 'e') goto yy543; + goto yy44; +yy488: YYDEBUG(488, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GLOBAL); -} -#line 5325 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy545; + if (yych == 't') goto yy545; + goto yy44; yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy497; - goto yy158; -yy490: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(490, *YYCURSOR); - yych = *++YYCURSOR; - goto yy145; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1240 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELSEIF); +} +#line 5260 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; - goto yy143; + if (yych == 'L') goto yy547; + if (yych == 'l') goto yy547; + goto yy44; yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy493; - if (yych != 'e') goto yy151; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy493; + if (yych <= '9') goto yy43; + } else { + if (yych == 'E') goto yy548; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'e') goto yy548; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy493: YYDEBUG(493, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy494; - if (yych != 'a') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1268 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDFOR); +} +#line 5294 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy495; - if (yych != 'k') goto yy151; + if (yych == 'T') goto yy549; + if (yych == 't') goto yy549; + goto yy44; yy495: YYDEBUG(495, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy550; + if (yych == 'l') goto yy550; + goto yy44; +yy496: YYDEBUG(496, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BREAK); -} -#line 5366 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy551; + if (yych == 's') goto yy551; + goto yy44; yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy220; - goto yy158; + if (yych == 'Y') goto yy553; + if (yych == 'y') goto yy553; + goto yy44; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy505; - if (yych == 'a') goto yy505; - goto yy151; + if (yych == 'H') goto yy555; + if (yych == 'h') goto yy555; + goto yy44; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy500; - if (yych != 'i') goto yy151; + if (yych == 'O') goto yy557; + if (yych == 'o') goto yy557; + goto yy44; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy501; - if (yych != 't') goto yy151; -yy501: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(501, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy502; - if (yych != 'c') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1466 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GLOBAL); +} +#line 5343 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy503; - if (yych != 'h') goto yy151; + if (yych == 'E') goto yy558; + if (yych == 'e') goto yy558; + goto yy44; yy503: YYDEBUG(503, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy559; + if (yych == 'e') goto yy559; + goto yy44; +yy504: YYDEBUG(504, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 5410 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy561; + if (yych == 'c') goto yy561; + goto yy44; yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy506; - if (yych != 't') goto yy151; + if (yych == 'D') goto yy562; + if (yych == 'd') goto yy562; + goto yy44; yy506: YYDEBUG(506, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy507; - if (yych != 'i') goto yy151; + if (yych == 'A') goto yy563; + if (yych == 'a') goto yy563; + goto yy44; yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy508; - if (yych != 'c') goto yy151; + if (yych == 'A') goto yy564; + if (yych == 'a') goto yy564; + goto yy44; yy508: YYDEBUG(508, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy565; + if (yych == 'e') goto yy565; + goto yy44; +yy509: YYDEBUG(509, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 5438 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy567; + if (yych == 't') goto yy567; + goto yy44; yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy521; - if (yych == 's') goto yy521; - goto yy151; -yy511: - YYDEBUG(511, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy519; - if (yych == 'd') goto yy519; - goto yy151; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(511, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1502 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PUBLIC); +} +#line 5404 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy515; - if (yych == 'r') goto yy515; - goto yy151; + if (yych == 'E') goto yy568; + if (yych == 'e') goto yy568; + goto yy44; yy513: YYDEBUG(513, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AS); + RETURN_TOKEN(T_RETURN); } -#line 5469 "Zend/zend_language_scanner.c" +#line 5423 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy516; - if (yych != 'a') goto yy151; -yy516: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(516, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy517; - if (yych != 'y') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1482 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STATIC); +} +#line 5436 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ARRAY); + RETURN_TOKEN(T_SWITCH); } -#line 5492 "Zend/zend_language_scanner.c" +#line 5449 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + YYFILL(5); + yych = *YYCURSOR; YYDEBUG(520, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1626 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_AND); -} -#line 5505 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych <= '\n') { + if (yych <= 0x08) goto yy82; + goto yy519; + } else { + if (yych == '\r') goto yy519; + goto yy82; + } + } else { + if (yych <= 'F') { + if (yych <= ' ') goto yy519; + if (yych <= 'E') goto yy82; + goto yy570; + } else { + if (yych == 'f') goto yy570; + goto yy82; + } + } yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy522; - if (yych != 't') goto yy151; + if (yych == 'S') goto yy571; + if (yych == 's') goto yy571; + goto yy44; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy523; - if (yych != 'r') goto yy151; + if (yych == '_') goto yy572; + goto yy44; yy523: YYDEBUG(523, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy524; - if (yych != 'a') goto yy151; + if (yych == '_') goto yy574; + goto yy44; yy524: YYDEBUG(524, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy525; - if (yych != 'c') goto yy151; + if (yych == 'T') goto yy575; + if (yych == 't') goto yy575; + goto yy44; yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy526; - if (yych != 't') goto yy151; + if (yych == '_') goto yy576; + goto yy44; yy526: YYDEBUG(526, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == '_') goto yy577; + goto yy44; +yy527: YYDEBUG(527, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ABSTRACT); -} -#line 5543 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy578; + if (yych == 'o') goto yy578; + goto yy44; yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy529; - if (yych != 'i') goto yy151; + if (yych == 'S') goto yy579; + if (yych == 's') goto yy579; + goto yy44; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy530; - if (yych != 'l') goto yy151; + if (yych == 'T') goto yy580; + if (yych == 't') goto yy580; + goto yy44; yy530: YYDEBUG(530, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy531; - if (yych != 'e') goto yy151; -yy531: - YYDEBUG(531, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(532, *YYCURSOR); + YYDEBUG(531, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_WHILE); + RETURN_TOKEN(T_ARRAY_CAST); } -#line 5571 "Zend/zend_language_scanner.c" -yy533: - YYDEBUG(533, *YYCURSOR); +#line 5533 "Zend/zend_language_scanner.c" +yy532: + YYDEBUG(532, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(533, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy532; + goto yy82; + } else { + if (yych <= ' ') goto yy532; + if (yych == ')') goto yy581; + goto yy82; } +yy534: YYDEBUG(534, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IF); -} -#line 5584 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy470; + if (yych == 'n') goto yy470; + goto yy82; yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy577; - if (yych == 'p') goto yy577; - goto yy151; + if (yych == 'R') goto yy382; + if (yych == 'r') goto yy382; + goto yy82; yy536: YYDEBUG(536, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy151; - goto yy544; - } else { - if (yych <= 'R') goto yy151; - if (yych <= 'S') goto yy542; - goto yy543; - } + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(537, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy536; + goto yy82; } else { - if (yych <= 'r') { - if (yych == 'c') goto yy544; - goto yy151; - } else { - if (yych <= 's') goto yy542; - if (yych <= 't') goto yy543; - goto yy151; - } + if (yych <= ' ') goto yy536; + if (yych == ')') goto yy583; + goto yy82; } -yy537: - YYDEBUG(537, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy538; - if (yych != 's') goto yy151; yy538: YYDEBUG(538, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy539; - if (yych != 'e') goto yy151; -yy539: - YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy540; - if (yych != 't') goto yy151; -yy540: - YYDEBUG(540, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(541, *YYCURSOR); + YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ISSET); + RETURN_TOKEN(T_UNSET_CAST); } -#line 5640 "Zend/zend_language_scanner.c" +#line 5583 "Zend/zend_language_scanner.c" +yy540: + YYDEBUG(540, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy585; + if (yych == 't') goto yy585; + goto yy44; +yy541: + YYDEBUG(541, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy587; + if (yych == 'e') goto yy587; + goto yy44; yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy563; - if (yych == 't') goto yy563; - goto yy151; + if (yych == 'E') goto yy589; + if (yych == 'e') goto yy589; + goto yy44; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy556; - if (yych == 'e') goto yy556; - goto yy151; -yy544: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(544, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy545; - if (yych != 'l') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1280 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DECLARE); +} +#line 5614 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy546; - if (yych != 'u') goto yy151; -yy546: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(546, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy547; - if (yych != 'd') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1308 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEFAULT); +} +#line 5627 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy548; - if (yych != 'e') goto yy151; + if (yych == 'A') goto yy591; + if (yych == 'a') goto yy591; + goto yy44; yy548: YYDEBUG(548, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy150; - } else { - if (yych <= '@') goto yy549; - if (yych <= 'Z') goto yy150; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy550; - } else { - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; - } - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy592; + if (yych == 'a') goto yy592; + goto yy44; yy549: YYDEBUG(549, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE); -} -#line 5698 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy593; + if (yych == 'c') goto yy593; + goto yy44; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy551; - if (yych != 'o') goto yy151; + if (yych == 'E') goto yy594; + if (yych == 'e') goto yy594; + goto yy44; yy551: YYDEBUG(551, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy552; - if (yych != 'n') goto yy151; -yy552: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(552, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy553; - if (yych != 'c') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1344 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXTENDS); +} +#line 5664 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy554; - if (yych != 'e') goto yy151; -yy554: - YYDEBUG(554, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(555, *YYCURSOR); + YYDEBUG(554, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE_ONCE); + RETURN_TOKEN(T_FINALLY); } -#line 5731 "Zend/zend_language_scanner.c" -yy556: - YYDEBUG(556, *YYCURSOR); +#line 5677 "Zend/zend_language_scanner.c" +yy555: + YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy557; - if (yych != 'r') goto yy151; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(556, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1272 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FOREACH); +} +#line 5690 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy558; - if (yych != 'f') goto yy151; + if (yych == 'N') goto yy596; + if (yych == 'n') goto yy596; + goto yy44; yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy559; - if (yych != 'a') goto yy151; + if (yych == 'N') goto yy598; + if (yych == 'n') goto yy598; + goto yy44; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy560; - if (yych != 'c') goto yy151; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy43; + } else { + if (yych <= '@') goto yy560; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy599; + } else { + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy560: YYDEBUG(560, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy561; - if (yych != 'e') goto yy151; -yy561: - YYDEBUG(561, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1336 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INTERFACE); + RETURN_TOKEN(T_INCLUDE); } -#line 5769 "Zend/zend_language_scanner.c" +#line 5728 "Zend/zend_language_scanner.c" +yy561: + YYDEBUG(561, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy600; + if (yych == 'e') goto yy600; + goto yy44; +yy562: + YYDEBUG(562, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy601; + if (yych == 'o') goto yy601; + goto yy44; yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy564; - if (yych <= 'D') goto yy151; - goto yy565; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy151; - } else { - if (yych == 'e') goto yy565; - goto yy151; - } - } + if (yych == 'C') goto yy602; + if (yych == 'c') goto yy602; + goto yy44; yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy571; - if (yych == 'n') goto yy571; - goto yy151; + if (yych == 'C') goto yy603; + if (yych == 'c') goto yy603; + goto yy44; yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy566; - if (yych != 'a') goto yy151; -yy566: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(566, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy567; - if (yych != 'd') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1494 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRIVATE); +} +#line 5765 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy568; - if (yych != 'o') goto yy151; + if (yych == 'E') goto yy604; + if (yych == 'e') goto yy604; + goto yy44; yy568: YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy569; - if (yych != 'f') goto yy151; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy43; + } else { + if (yych <= '@') goto yy569; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy605; + } else { + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy569: YYDEBUG(569, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(570, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INSTEADOF); + RETURN_TOKEN(T_REQUIRE); } -#line 5823 "Zend/zend_language_scanner.c" +#line 5797 "Zend/zend_language_scanner.c" +yy570: + YYDEBUG(570, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy606; + if (yych == 'r') goto yy606; + goto yy82; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy572; - if (yych != 'c') goto yy151; + if (yych == '_') goto yy607; + goto yy44; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy573; - if (yych != 'e') goto yy151; -yy573: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(573, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy574; - if (yych != 'o') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1837 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIR); +} +#line 5821 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy575; - if (yych != 'f') goto yy151; + if (yych == '_') goto yy608; + goto yy44; yy575: YYDEBUG(575, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy610; + if (yych == 'i') goto yy610; + goto yy44; +yy576: YYDEBUG(576, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTANCEOF); -} -#line 5856 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy611; + if (yych == 'c') goto yy611; + goto yy44; yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy578; - if (yych != 'l') goto yy151; + if (yych == '_') goto yy612; + goto yy44; yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy579; - if (yych != 'e') goto yy151; + if (yych == 'D') goto yy614; + if (yych == 'd') goto yy614; + goto yy44; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy580; - if (yych != 'm') goto yy151; + if (yych == 'P') goto yy615; + if (yych == 'p') goto yy615; + goto yy44; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy581; - if (yych != 'e') goto yy151; + if (yych == '_') goto yy616; + goto yy44; yy581: YYDEBUG(581, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy582; - if (yych != 'n') goto yy151; -yy582: + ++YYCURSOR; YYDEBUG(582, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy583; - if (yych != 't') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1414 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STRING_CAST); +} +#line 5870 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy584; - if (yych != 's') goto yy151; -yy584: - YYDEBUG(584, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(585, *YYCURSOR); + YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IMPLEMENTS); + RETURN_TOKEN(T_OBJECT_CAST); } -#line 5904 "Zend/zend_language_scanner.c" -yy586: - YYDEBUG(586, *YYCURSOR); +#line 5880 "Zend/zend_language_scanner.c" +yy585: + YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy594; - if (yych == 'r') goto yy594; - goto yy151; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(586, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1486 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ABSTRACT); +} +#line 5893 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy590; - if (yych <= 'X') goto yy151; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy151; - goto yy590; - } else { - if (yych != 'y') goto yy151; - } + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(588, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(589, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRY); + RETURN_TOKEN(T_CALLABLE); } -#line 5936 "Zend/zend_language_scanner.c" -yy590: - YYDEBUG(590, *YYCURSOR); +#line 5906 "Zend/zend_language_scanner.c" +yy589: + YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy591; - if (yych != 'i') goto yy151; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(590, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1316 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONTINUE); +} +#line 5919 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy592; - if (yych != 't') goto yy151; + if (yych == 'R') goto yy617; + if (yych == 'r') goto yy617; + goto yy44; yy592: YYDEBUG(592, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy618; + if (yych == 'c') goto yy618; + goto yy44; +yy593: YYDEBUG(593, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT); -} -#line 5959 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy619; + if (yych == 'h') goto yy619; + goto yy44; yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy595; - if (yych != 'o') goto yy151; -yy595: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy596; - if (yych != 'w') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1256 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDWHILE); +} +#line 5950 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" +#line 1198 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_THROW); + RETURN_TOKEN(T_FUNCTION); } -#line 5982 "Zend/zend_language_scanner.c" +#line 5963 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy599; - if (yych != 'e') goto yy151; + if (yych == 'T') goto yy621; + if (yych == 't') goto yy621; + goto yy44; yy599: YYDEBUG(599, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy600; - if (yych != 'l') goto yy151; + if (yych == 'O') goto yy622; + if (yych == 'o') goto yy622; + goto yy44; yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy601; - if (yych != 'd') goto yy151; + if (yych == 'O') goto yy623; + if (yych == 'o') goto yy623; + goto yy44; yy601: YYDEBUG(601, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy150; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy602; - if (yych <= '\n') goto yy603; - } else { - if (yych <= '\r') goto yy603; - if (yych == ' ') goto yy603; - } + yych = *++YYCURSOR; + if (yych == 'F') goto yy624; + if (yych == 'f') goto yy624; + goto yy44; yy602: YYDEBUG(602, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_YIELD); -} -#line 6019 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy626; + if (yych == 'e') goto yy626; + goto yy44; yy603: YYDEBUG(603, *YYCURSOR); - ++YYCURSOR; - YYFILL(5); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy628; + if (yych == 'e') goto yy628; + goto yy44; +yy604: YYDEBUG(604, *YYCURSOR); - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy158; - goto yy603; - } else { - if (yych == '\r') goto yy603; - goto yy158; - } - } else { - if (yych <= 'F') { - if (yych <= ' ') goto yy603; - if (yych <= 'E') goto yy158; - } else { - if (yych != 'f') goto yy158; - } - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy630; + if (yych == 'd') goto yy630; + goto yy44; +yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy606; - if (yych != 'r') goto yy158; + if (yych == 'O') goto yy632; + if (yych == 'o') goto yy632; + goto yy44; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy607; - if (yych != 'o') goto yy158; + if (yych == 'O') goto yy633; + if (yych == 'o') goto yy633; + goto yy82; yy607: YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy608; - if (yych != 'm') goto yy158; + if (yych == '_') goto yy634; + goto yy44; yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy158; - } else { - if (yych <= '@') goto yy609; - if (yych <= 'Z') goto yy158; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy158; - } else { - if (yych <= 'z') goto yy158; - if (yych >= 0x80) goto yy158; - } + if (yybm[0+yych] & 16) { + goto yy43; } -yy609: YYDEBUG(609, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1833 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_YIELD_FROM); + RETURN_TOKEN(T_FILE); } -#line 6085 "Zend/zend_language_scanner.c" +#line 6035 "Zend/zend_language_scanner.c" +yy610: + YYDEBUG(610, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy636; + if (yych == 'o') goto yy636; + goto yy44; yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy613; - if (yych <= 'S') goto yy151; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy151; - goto yy613; - } else { - if (yych != 't') goto yy151; - } - } + if (yych == 'O') goto yy637; + if (yych == 'o') goto yy637; + goto yy44; +yy612: YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy625; - if (yych == 'u') goto yy625; - goto yy151; -yy613: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(613, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy614; - if (yych != 'u') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1829 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LINE); +} +#line 6060 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy615; - if (yych != 'i') goto yy151; + if (yych == '_') goto yy638; + goto yy44; yy615: YYDEBUG(615, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy616; - if (yych != 'r') goto yy151; + if (yych == 'A') goto yy639; + if (yych == 'a') goto yy639; + goto yy44; yy616: YYDEBUG(616, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy617; - if (yych != 'e') goto yy151; + if (yych == '_') goto yy640; + goto yy44; yy617: YYDEBUG(617, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy150; - } else { - if (yych <= '@') goto yy618; - if (yych <= 'Z') goto yy150; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy619; - } else { - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; - } - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy642; + if (yych == 'e') goto yy642; + goto yy44; yy618: YYDEBUG(618, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 6150 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy644; + if (yych == 'h') goto yy644; + goto yy44; yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy620; - if (yych != 'o') goto yy151; -yy620: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(620, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy621; - if (yych != 'n') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1300 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDSWITCH); +} +#line 6101 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy622; - if (yych != 'c') goto yy151; + if (yych == 'S') goto yy646; + if (yych == 's') goto yy646; + goto yy44; yy622: YYDEBUG(622, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy623; - if (yych != 'e') goto yy151; + if (yych == 'N') goto yy648; + if (yych == 'n') goto yy648; + goto yy44; yy623: YYDEBUG(623, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'F') goto yy649; + if (yych == 'f') goto yy649; + goto yy44; +yy624: YYDEBUG(624, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(625, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_REQUIRE_ONCE); + RETURN_TOKEN(T_INSTEADOF); } -#line 6183 "Zend/zend_language_scanner.c" -yy625: - YYDEBUG(625, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy626; - if (yych != 'r') goto yy151; +#line 6132 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy627; - if (yych != 'n') goto yy151; -yy627: - YYDEBUG(627, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(628, *YYCURSOR); + YYDEBUG(627, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_RETURN); + RETURN_TOKEN(T_INTERFACE); } -#line 6206 "Zend/zend_language_scanner.c" -yy629: - YYDEBUG(629, *YYCURSOR); +#line 6145 "Zend/zend_language_scanner.c" +yy628: + YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy151; - goto yy652; - } else { - if (yych <= 'R') goto yy151; - if (yych <= 'S') goto yy651; - goto yy650; - } - } else { - if (yych <= 'r') { - if (yych == 'l') goto yy652; - goto yy151; - } else { - if (yych <= 's') goto yy651; - if (yych <= 't') goto yy650; - goto yy151; - } + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(629, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1454 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NAMESPACE); +} +#line 6158 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy642; - if (yych <= 'N') goto yy151; - goto yy643; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy151; - goto yy642; - } else { - if (yych == 'o') goto yy643; - goto yy151; - } + if (yybm[0+yych] & 16) { + goto yy43; } -yy631: YYDEBUG(631, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy632; - if (yych != 'n') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1498 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PROTECTED); +} +#line 6171 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy151; - if (yych >= 'T') goto yy634; - } else { - if (yych <= 'r') goto yy151; - if (yych <= 's') goto yy633; - if (yych <= 't') goto yy634; - goto yy151; - } + if (yych == 'N') goto yy651; + if (yych == 'n') goto yy651; + goto yy44; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy640; - if (yych == 't') goto yy640; - goto yy151; + if (yych == 'M') goto yy652; + if (yych == 'm') goto yy652; + goto yy82; yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy635; - if (yych != 'i') goto yy151; -yy635: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(635, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy636; - if (yych != 'n') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1813 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS_C); +} +#line 6196 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy637; - if (yych != 'u') goto yy151; + if (yych == 'N') goto yy653; + if (yych == 'n') goto yy653; + goto yy44; yy637: YYDEBUG(637, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy638; - if (yych != 'e') goto yy151; + if (yych == 'M') goto yy654; + if (yych == 'm') goto yy654; + goto yy44; yy638: YYDEBUG(638, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == '_') goto yy655; + goto yy44; +yy639: YYDEBUG(639, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONTINUE); -} -#line 6300 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy657; + if (yych == 'c') goto yy657; + goto yy44; yy640: YYDEBUG(640, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1817 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONST); + RETURN_TOKEN(T_TRAIT_C); } -#line 6313 "Zend/zend_language_scanner.c" +#line 6232 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy647; - if (yych == 's') goto yy647; - goto yy151; -yy643: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(643, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy644; - if (yych != 'n') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1284 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDDECLARE); +} +#line 6245 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy645; - if (yych != 'e') goto yy151; -yy645: - YYDEBUG(645, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(646, *YYCURSOR); + YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLONE); + RETURN_TOKEN(T_ENDFOREACH); } -#line 6342 "Zend/zend_language_scanner.c" -yy647: - YYDEBUG(647, *YYCURSOR); +#line 6258 "Zend/zend_language_scanner.c" +yy646: + YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy648; - if (yych != 's') goto yy151; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(647, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1348 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IMPLEMENTS); +} +#line 6271 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy658; + if (yych == 'c') goto yy658; + goto yy44; +yy649: YYDEBUG(649, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS); + RETURN_TOKEN(T_INSTANCEOF); } -#line 6360 "Zend/zend_language_scanner.c" -yy650: - YYDEBUG(650, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy661; - if (yych == 'c') goto yy661; - goto yy151; +#line 6290 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy659; - if (yych == 'e') goto yy659; - goto yy151; + if (yych == 'C') goto yy659; + if (yych == 'c') goto yy659; + goto yy44; yy652: YYDEBUG(652, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy653; - if (yych != 'l') goto yy151; + if (yych <= '^') { + if (yych <= '9') { + if (yych <= '/') goto yy660; + goto yy82; + } else { + if (yych <= '@') goto yy660; + if (yych <= 'Z') goto yy82; + goto yy660; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy82; + goto yy660; + } else { + if (yych <= 'z') goto yy82; + if (yych <= 0x7F) goto yy660; + goto yy82; + } + } yy653: YYDEBUG(653, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy654; - if (yych != 'a') goto yy151; + if (yych == '_') goto yy662; + goto yy44; yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy655; - if (yych != 'b') goto yy151; + if (yych == 'P') goto yy663; + if (yych == 'p') goto yy663; + goto yy44; yy655: YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy656; - if (yych != 'l') goto yy151; -yy656: - YYDEBUG(656, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy657; - if (yych != 'e') goto yy151; -yy657: - YYDEBUG(657, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(658, *YYCURSOR); + YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CALLABLE); + RETURN_TOKEN(T_METHOD_C); } -#line 6410 "Zend/zend_language_scanner.c" +#line 6342 "Zend/zend_language_scanner.c" +yy657: + YYDEBUG(657, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy664; + if (yych == 'e') goto yy664; + goto yy44; +yy658: + YYDEBUG(658, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy665; + if (yych == 'e') goto yy665; + goto yy44; yy659: YYDEBUG(659, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy667; + if (yych == 'e') goto yy667; + goto yy44; +yy660: YYDEBUG(660, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CASE); + yyless(yyleng - 1); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_YIELD_FROM); } -#line 6423 "Zend/zend_language_scanner.c" -yy661: - YYDEBUG(661, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy662; - if (yych != 'h') goto yy151; +#line 6372 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == '_') goto yy669; + goto yy44; +yy663: YYDEBUG(663, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CATCH); -} -#line 6441 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy671; + if (yych == 'i') goto yy671; + goto yy44; yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy681; - if (yych == 'n') goto yy681; - goto yy151; + if (yych == '_') goto yy672; + goto yy44; yy665: YYDEBUG(665, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy674; - if (yych == 'r') goto yy674; - goto yy151; -yy666: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(666, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy667; - if (yych != 'n') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1442 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE_ONCE); +} +#line 6401 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy668; - if (yych != 'c') goto yy151; -yy668: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(668, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy669; - if (yych != 't') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1450 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE_ONCE); +} +#line 6414 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy670; - if (yych != 'i') goto yy151; -yy670: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(670, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy671; - if (yych != 'o') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1821 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FUNC_C); +} +#line 6427 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy672; - if (yych != 'n') goto yy151; + if (yych == 'L') goto yy673; + if (yych == 'l') goto yy673; + goto yy44; yy672: YYDEBUG(672, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == '_') goto yy674; + goto yy44; +yy673: YYDEBUG(673, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1198 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNCTION); -} -#line 6496 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy676; + if (yych == 'e') goto yy676; + goto yy44; yy674: YYDEBUG(674, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy675; - if (yych <= '9') goto yy150; - } else { - if (yych == 'E') goto yy676; - if (yych <= 'Z') goto yy150; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy150; - } else { - if (yych <= 'e') goto yy676; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; - } + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } -yy675: YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOR); + RETURN_TOKEN(T_NS_C); } -#line 6524 "Zend/zend_language_scanner.c" +#line 6457 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy677; - if (yych != 'a') goto yy151; + if (yych == 'R') goto yy677; + if (yych != 'r') goto yy44; yy677: YYDEBUG(677, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy678; - if (yych != 'c') goto yy151; -yy678: - YYDEBUG(678, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy679; - if (yych != 'h') goto yy151; -yy679: - YYDEBUG(679, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(680, *YYCURSOR); + YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOREACH); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 6552 "Zend/zend_language_scanner.c" +#line 6475 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_LOOKING_FOR_PROPERTY: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 64, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(679, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yybm[0+yych] & 64) { + goto yy683; + } + if (yych <= '^') { + if (yych <= '-') { + if (yych >= '-') goto yy686; + } else { + if (yych <= '@') goto yy681; + if (yych <= 'Z') goto yy687; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy687; + } else { + if (yych <= 'z') goto yy687; + if (yych >= 0x80) goto yy687; + } + } yy681: YYDEBUG(681, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy682; - if (yych != 'a') goto yy151; + ++YYCURSOR; yy682: YYDEBUG(682, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy683; - if (yych != 'l') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1372 "Zend/zend_language_scanner.l" + { + yyless(0); + yy_pop_state(); + goto restart; +} +#line 6547 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy684; - if (yych <= '9') goto yy150; - } else { - if (yych == 'L') goto yy685; - if (yych <= 'Z') goto yy150; - } + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(684, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy683; + } + YYDEBUG(685, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1357 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_WHITESPACE); +} +#line 6564 "Zend/zend_language_scanner.c" +yy686: + YYDEBUG(686, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy690; + goto yy682; +yy687: + YYDEBUG(687, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(688, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy687; + } + YYDEBUG(689, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1366 "Zend/zend_language_scanner.l" + { + yy_pop_state(); + zend_copy_value(zendlval, yytext, yyleng); + RETURN_TOKEN(T_STRING); +} +#line 6587 "Zend/zend_language_scanner.c" +yy690: + YYDEBUG(690, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(691, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1362 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OBJECT_OPERATOR); +} +#line 6597 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_BACKQUOTE: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(692, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '_') { + if (yych == '$') goto yy696; } else { - if (yych <= 'k') { - if (yych != '`') goto yy150; - } else { - if (yych <= 'l') goto yy685; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; - } + if (yych <= '`') goto yy697; + if (yych == '{') goto yy699; } -yy684: - YYDEBUG(684, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINAL); -} -#line 6590 "Zend/zend_language_scanner.c" -yy685: - YYDEBUG(685, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy686; - if (yych != 'y') goto yy151; -yy686: - YYDEBUG(686, *YYCURSOR); + YYDEBUG(694, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(687, *YYCURSOR); +yy695: + YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" +#line 2353 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FINALLY); + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '`': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + + yyleng = YYCURSOR - SCNG(yy_text); + + zend_scan_escape_string(zendlval, yytext, yyleng, '`'); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6608 "Zend/zend_language_scanner.c" -yy688: - YYDEBUG(688, *YYCURSOR); +#line 6691 "Zend/zend_language_scanner.c" +yy696: + YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy694; - if (yych <= 'E') goto yy151; - goto yy695; + if (yych <= '_') { + if (yych <= '@') goto yy695; + if (yych <= 'Z') goto yy700; + if (yych <= '^') goto yy695; + goto yy700; } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy151; - goto yy694; + if (yych <= 'z') { + if (yych <= '`') goto yy695; + goto yy700; } else { - if (yych == 'f') goto yy695; - goto yy151; + if (yych <= '{') goto yy703; + if (yych <= 0x7F) goto yy695; + goto yy700; } } -yy689: - YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy692; - if (yych == 'e') goto yy692; - goto yy151; -yy690: - YYDEBUG(690, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(691, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DO); -} -#line 6643 "Zend/zend_language_scanner.c" -yy692: - YYDEBUG(692, *YYCURSOR); +yy697: + YYDEBUG(697, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(693, *YYCURSOR); + YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1194 "Zend/zend_language_scanner.l" +#line 2297 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('`'); } -#line 6656 "Zend/zend_language_scanner.c" -yy694: - YYDEBUG(694, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy701; - if (yych == 'l') goto yy701; - goto yy151; -yy695: - YYDEBUG(695, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy696; - if (yych != 'a') goto yy151; -yy696: - YYDEBUG(696, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy697; - if (yych != 'u') goto yy151; -yy697: - YYDEBUG(697, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy698; - if (yych != 'l') goto yy151; -yy698: - YYDEBUG(698, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy699; - if (yych != 't') goto yy151; +#line 6720 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == '$') goto yy705; + goto yy695; +yy700: YYDEBUG(700, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEFAULT); -} -#line 6695 "Zend/zend_language_scanner.c" -yy701: + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy702; - if (yych != 'a') goto yy151; + if (yybm[0+yych] & 128) { + goto yy700; + } + if (yych == '-') goto yy707; + if (yych <= '@') goto yy702; + if (yych <= '[') goto yy709; yy702: YYDEBUG(702, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy703; - if (yych != 'r') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1933 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 6746 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy704; - if (yych != 'e') goto yy151; -yy704: - YYDEBUG(704, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(705, *YYCURSOR); + YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DECLARE); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6723 "Zend/zend_language_scanner.c" -yy706: +#line 6757 "Zend/zend_language_scanner.c" +yy705: + YYDEBUG(705, *YYCURSOR); + ++YYCURSOR; YYDEBUG(706, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy768; - if (yych == 'h') goto yy768; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2284 "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 6770 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy762; - if (yych == 's') goto yy762; - goto yy151; + if (yych == '>') goto yy711; yy708: YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy758; - if (yych == 'p') goto yy758; - goto yy151; + YYCURSOR = YYMARKER; + goto yy702; yy709: YYDEBUG(709, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy724; - if (yych == 'd') goto yy724; - goto yy151; -yy710: + ++YYCURSOR; YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy721; - if (yych == 'a') goto yy721; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1926 "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); +} +#line 6791 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy712; - if (yych <= 'S') goto yy151; - goto yy713; + if (yych <= '_') { + if (yych <= '@') goto yy708; + if (yych <= 'Z') goto yy712; + if (yych <= '^') goto yy708; } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy151; - } else { - if (yych == 't') goto yy713; - goto yy151; - } + if (yych <= '`') goto yy708; + if (yych <= 'z') goto yy712; + if (yych <= 0x7F) goto yy708; } yy712: YYDEBUG(712, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy719; - if (yych == 't') goto yy719; - goto yy151; -yy713: + ++YYCURSOR; YYDEBUG(713, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy714; - if (yych != 'e') goto yy151; -yy714: + yyleng = YYCURSOR - SCNG(yy_text); +#line 1917 "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); +} +#line 6816 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_DOUBLE_QUOTES: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; YYDEBUG(714, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy715; - if (yych != 'n') goto yy151; -yy715: - YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy716; - if (yych != 'd') goto yy151; -yy716: + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '#') { + if (yych == '"') goto yy718; + } else { + if (yych <= '$') goto yy720; + if (yych == '{') goto yy721; + } YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy717; - if (yych != 's') goto yy151; + ++YYCURSOR; yy717: YYDEBUG(717, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2303 "Zend/zend_language_scanner.l" + { + if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { + YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; + SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); + + goto double_quotes_scan_done; + } + + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; } - YYDEBUG(718, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXTENDS); + + YYCURSOR--; + break; + } + +double_quotes_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + + zend_scan_escape_string(zendlval, yytext, yyleng, '"'); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6807 "Zend/zend_language_scanner.c" -yy719: - YYDEBUG(719, *YYCURSOR); +#line 6918 "Zend/zend_language_scanner.c" +yy718: + YYDEBUG(718, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(720, *YYCURSOR); + YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1190 "Zend/zend_language_scanner.l" +#line 2292 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('"'); } -#line 6820 "Zend/zend_language_scanner.c" +#line 6929 "Zend/zend_language_scanner.c" +yy720: + YYDEBUG(720, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy717; + if (yych <= 'Z') goto yy722; + if (yych <= '^') goto yy717; + goto yy722; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy717; + goto yy722; + } else { + if (yych <= '{') goto yy725; + if (yych <= 0x7F) goto yy717; + goto yy722; + } + } yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy722; - if (yych != 'l') goto yy151; + if (yych == '$') goto yy727; + goto yy717; yy722: YYDEBUG(722, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(723, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy722; + } + if (yych == '-') goto yy729; + if (yych <= '@') goto yy724; + if (yych <= '[') goto yy731; +yy724: + YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EVAL); + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); } -#line 6838 "Zend/zend_language_scanner.c" -yy724: - YYDEBUG(724, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'D': - case 'd': goto yy725; - case 'F': - case 'f': goto yy726; - case 'I': - case 'i': goto yy727; - case 'S': - case 's': goto yy728; - case 'W': - case 'w': goto yy729; - default: goto yy151; - } +#line 6973 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy751; - if (yych == 'e') goto yy751; - goto yy151; -yy726: + ++YYCURSOR; YYDEBUG(726, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy743; - if (yych == 'o') goto yy743; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1653 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 6984 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy741; - if (yych == 'f') goto yy741; - goto yy151; -yy728: + ++YYCURSOR; YYDEBUG(728, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy735; - if (yych == 'w') goto yy735; - goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2284 "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 6997 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy730; - if (yych != 'h') goto yy151; + if (yych == '>') goto yy733; yy730: YYDEBUG(730, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy731; - if (yych != 'i') goto yy151; + YYCURSOR = YYMARKER; + goto yy724; yy731: YYDEBUG(731, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy732; - if (yych != 'l') goto yy151; -yy732: + ++YYCURSOR; YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy733; - if (yych != 'e') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1926 "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); +} +#line 7018 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy730; + if (yych <= 'Z') goto yy734; + if (yych <= '^') goto yy730; + } else { + if (yych <= '`') goto yy730; + if (yych <= 'z') goto yy734; + if (yych <= 0x7F) goto yy730; } +yy734: YYDEBUG(734, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDWHILE); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 7043 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_HEREDOC: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(736, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych == '$') goto yy740; + if (yych == '{') goto yy741; + YYDEBUG(738, *YYCURSOR); + ++YYCURSOR; +yy739: + YYDEBUG(739, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2395 "Zend/zend_language_scanner.l" + { + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + ZVAL_NULL(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + YYCTYPE *end = YYCURSOR + heredoc_label->length; + + if (IS_LABEL_START(*end)) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + } + + if (*end == ';') { + end++; + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + if (SCNG(heredoc_scan_ahead)) { + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + } else { + CG(increment_lineno) = 1; + } + + BEGIN(ST_END_HEREDOC); + + goto heredoc_scan_done; + } + continue; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + +heredoc_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); + + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } + + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6911 "Zend/zend_language_scanner.c" -yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy736; - if (yych != 'i') goto yy151; -yy736: - YYDEBUG(736, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy737; - if (yych != 't') goto yy151; -yy737: - YYDEBUG(737, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy738; - if (yych != 'c') goto yy151; -yy738: - YYDEBUG(738, *YYCURSOR); +#line 7202 "Zend/zend_language_scanner.c" +yy740: + YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy739; - if (yych != 'h') goto yy151; -yy739: - YYDEBUG(739, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yych <= '_') { + if (yych <= '@') goto yy739; + if (yych <= 'Z') goto yy742; + if (yych <= '^') goto yy739; + goto yy742; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy739; + goto yy742; + } else { + if (yych <= '{') goto yy745; + if (yych <= 0x7F) goto yy739; + goto yy742; + } } - YYDEBUG(740, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDSWITCH); -} -#line 6944 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } + yych = *++YYCURSOR; + if (yych == '$') goto yy747; + goto yy739; +yy742: YYDEBUG(742, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDIF); -} -#line 6957 "Zend/zend_language_scanner.c" -yy743: + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(743, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy744; - if (yych != 'r') goto yy151; + if (yybm[0+yych] & 128) { + goto yy742; + } + if (yych == '-') goto yy749; + if (yych <= '@') goto yy744; + if (yych <= '[') goto yy751; yy744: YYDEBUG(744, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy745; - if (yych <= '9') goto yy150; - } else { - if (yych == 'E') goto yy746; - if (yych <= 'Z') goto yy150; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy150; - } else { - if (yych <= 'e') goto yy746; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1933 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 7246 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOR); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6990 "Zend/zend_language_scanner.c" -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy747; - if (yych != 'a') goto yy151; +#line 7257 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy748; - if (yych != 'c') goto yy151; -yy748: - YYDEBUG(748, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy749; - if (yych != 'h') goto yy151; -yy749: - YYDEBUG(749, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(750, *YYCURSOR); + YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 2284 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOREACH); + Z_LVAL_P(zendlval) = (zend_long) '{'; + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 7018 "Zend/zend_language_scanner.c" +#line 7270 "Zend/zend_language_scanner.c" +yy749: + YYDEBUG(749, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy753; +yy750: + YYDEBUG(750, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy744; yy751: YYDEBUG(751, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy752; - if (yych != 'c') goto yy151; -yy752: + ++YYCURSOR; YYDEBUG(752, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy753; - if (yych != 'l') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1926 "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); +} +#line 7291 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy754; - if (yych != 'a') goto yy151; + if (yych <= '_') { + if (yych <= '@') goto yy750; + if (yych <= 'Z') goto yy754; + if (yych <= '^') goto yy750; + } else { + if (yych <= '`') goto yy750; + if (yych <= 'z') goto yy754; + if (yych <= 0x7F) goto yy750; + } yy754: YYDEBUG(754, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy755; - if (yych != 'r') goto yy151; -yy755: - YYDEBUG(755, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy756; - if (yych != 'e') goto yy151; -yy756: - YYDEBUG(756, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(757, *YYCURSOR); + YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" +#line 1917 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDDECLARE); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); } -#line 7056 "Zend/zend_language_scanner.c" +#line 7316 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_LOOKING_FOR_VARNAME: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(756, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy758; + if (yych <= 'Z') goto yy760; + if (yych >= '_') goto yy760; + } else { + if (yych <= '`') goto yy758; + if (yych <= 'z') goto yy760; + if (yych >= 0x80) goto yy760; + } yy758: YYDEBUG(758, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy759; - if (yych != 't') goto yy151; + ++YYCURSOR; yy759: YYDEBUG(759, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy760; - if (yych != 'y') goto yy151; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1677 "Zend/zend_language_scanner.l" + { + yyless(0); + yy_pop_state(); + yy_push_state(ST_IN_SCRIPTING); + goto restart; +} +#line 7380 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '_') { + if (yych <= '@') { + if (yych <= '/') goto yy759; + if (yych <= '9') goto yy762; + goto yy759; + } else { + if (yych <= '[') goto yy762; + if (yych <= '^') goto yy759; + goto yy762; + } + } else { + if (yych <= '|') { + if (yych <= '`') goto yy759; + if (yych <= 'z') goto yy762; + goto yy759; + } else { + if (yych <= '}') goto yy762; + if (yych <= 0x7F) goto yy759; + goto yy762; + } } +yy761: YYDEBUG(761, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EMPTY); -} -#line 7079 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy762: YYDEBUG(762, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy763; - if (yych != 'e') goto yy151; + if (yybm[0+yych] & 128) { + goto yy761; + } + if (yych <= '@') goto yy763; + if (yych <= '[') goto yy764; + if (yych == '}') goto yy764; yy763: YYDEBUG(763, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy759; +yy764: + YYDEBUG(764, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy764; - if (yych <= '9') goto yy150; + YYDEBUG(765, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1668 "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); +} +#line 7435 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_VAR_OFFSET: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 240, 240, 176, 176, 176, 176, 176, 176, + 176, 176, 0, 0, 0, 0, 0, 0, + 0, 160, 160, 160, 160, 160, 160, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 0, 0, 0, 0, 32, + 0, 160, 160, 160, 160, 160, 160, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 0, 0, 0, 0, 0, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + }; + YYDEBUG(766, *YYCURSOR); + YYFILL(3); + yych = *YYCURSOR; + if (yych <= '0') { + if (yych <= ' ') { + if (yych <= '\f') { + if (yych <= 0x08) goto yy768; + if (yych <= '\n') goto yy770; + } else { + if (yych <= '\r') goto yy770; + if (yych >= ' ') goto yy770; + } } else { - if (yych == 'I') goto yy765; - if (yych <= 'Z') goto yy150; + if (yych <= '$') { + if (yych <= '"') goto yy772; + if (yych <= '#') goto yy770; + goto yy774; + } else { + if (yych == '\'') goto yy770; + if (yych <= '/') goto yy772; + goto yy775; + } } } else { - if (yych <= 'h') { - if (yych != '`') goto yy150; + if (yych <= ']') { + if (yych <= 'Z') { + if (yych <= '9') goto yy777; + if (yych <= '@') goto yy772; + goto yy779; + } else { + if (yych <= '[') goto yy772; + if (yych <= '\\') goto yy770; + goto yy782; + } } else { - if (yych <= 'i') goto yy765; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= '`') { + if (yych == '_') goto yy779; + goto yy772; + } else { + if (yych <= 'z') goto yy779; + if (yych <= '~') goto yy772; + if (yych >= 0x80) goto yy779; + } } } -yy764: - YYDEBUG(764, *YYCURSOR); +yy768: + YYDEBUG(768, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" +#line 2592 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; } -#line 7112 "Zend/zend_language_scanner.c" -yy765: - YYDEBUG(765, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy766; - if (yych != 'f') goto yy151; -yy766: - YYDEBUG(766, *YYCURSOR); +#line 7533 "Zend/zend_language_scanner.c" +yy770: + YYDEBUG(770, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(771, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1948 "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); +} +#line 7547 "Zend/zend_language_scanner.c" +yy772: + YYDEBUG(772, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; - } - YYDEBUG(767, *YYCURSOR); +yy773: + YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSEIF); + /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ + RETURN_TOKEN(yytext[0]); } -#line 7130 "Zend/zend_language_scanner.c" -yy768: - YYDEBUG(768, *YYCURSOR); +#line 7559 "Zend/zend_language_scanner.c" +yy774: + YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy769; - if (yych != 'o') goto yy151; -yy769: - YYDEBUG(769, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + if (yych <= '_') { + if (yych <= '@') goto yy773; + if (yych <= 'Z') goto yy784; + if (yych <= '^') goto yy773; + goto yy784; + } else { + if (yych <= '`') goto yy773; + if (yych <= 'z') goto yy784; + if (yych <= 0x7F) goto yy773; + goto yy784; } - YYDEBUG(770, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1324 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ECHO); -} -#line 7148 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_LOOKING_FOR_PROPERTY: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 64, - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 0, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - }; - YYDEBUG(771, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '-') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy779; - if (yych <= '\n') goto yy773; - if (yych <= '\f') goto yy779; +yy775: + YYDEBUG(775, *YYCURSOR); + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'W') { + if (yych <= '9') { + if (yych >= '0') goto yy787; } else { - if (yych == ' ') goto yy773; - if (yych <= ',') goto yy779; - goto yy775; + if (yych == 'B') goto yy790; } } else { - if (yych <= '_') { - if (yych <= '@') goto yy779; - if (yych <= 'Z') goto yy777; - if (yych <= '^') goto yy779; - goto yy777; + if (yych <= 'b') { + if (yych <= 'X') goto yy792; + if (yych >= 'b') goto yy790; } else { - if (yych <= '`') goto yy779; - if (yych <= 'z') goto yy777; - if (yych <= 0x7F) goto yy779; - goto yy777; + if (yych == 'x') goto yy792; } } -yy773: - YYDEBUG(773, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy785; -yy774: - YYDEBUG(774, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 7226 "Zend/zend_language_scanner.c" -yy775: - YYDEBUG(775, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy782; yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" - { - yyless(0); - yy_pop_state(); - goto restart; +#line 1783 "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; + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10)); + if (errno == ERANGE) { + goto string; + } + ZEND_ASSERT(end == yytext + yyleng); + } else { +string: + ZVAL_STRINGL(zendlval, yytext, yyleng); + } + RETURN_TOKEN(T_NUM_STRING); } -#line 7240 "Zend/zend_language_scanner.c" +#line 7610 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; + YYFILL(1); yych = *YYCURSOR; - goto yy781; -yy778: YYDEBUG(778, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 7255 "Zend/zend_language_scanner.c" + if (yybm[0+yych] & 16) { + goto yy777; + } + goto yy776; yy779: YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; - goto yy776; -yy780: - YYDEBUG(780, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy781: - YYDEBUG(781, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy780; + YYDEBUG(780, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy779; } - goto yy778; + YYDEBUG(781, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1956 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, yytext, yyleng); + RETURN_TOKEN(T_STRING); +} +#line 7637 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1938 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OBJECT_OPERATOR); + yy_pop_state(); + RETURN_TOKEN(']'); } -#line 7280 "Zend/zend_language_scanner.c" +#line 7648 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy785: YYDEBUG(785, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy784; - } - goto yy774; - } -/* *********************************** */ -yyc_ST_LOOKING_FOR_VARNAME: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(786, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy790; - if (yych <= 'Z') goto yy788; - if (yych <= '^') goto yy790; - } else { - if (yych <= '`') goto yy790; - if (yych <= 'z') goto yy788; - if (yych <= 0x7F) goto yy790; - } -yy788: - YYDEBUG(788, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '_') { - if (yych <= '@') { - if (yych <= '/') goto yy789; - if (yych <= '9') goto yy792; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy784; } else { - if (yych <= '[') goto yy792; - if (yych >= '_') goto yy792; + if (yych <= '@') goto yy786; + if (yych <= 'Z') goto yy784; } } else { - if (yych <= '|') { - if (yych <= '`') goto yy789; - if (yych <= 'z') goto yy792; + if (yych <= '`') { + if (yych <= '_') goto yy784; } else { - if (yych <= '}') goto yy792; - if (yych >= 0x80) goto yy792; + if (yych <= 'z') goto yy784; + if (yych >= 0x80) goto yy784; } } +yy786: + YYDEBUG(786, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1933 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 7678 "Zend/zend_language_scanner.c" +yy787: + YYDEBUG(787, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(788, *YYCURSOR); + if (yych <= '/') goto yy789; + if (yych <= '9') goto yy787; yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" - { - yyless(0); - yy_pop_state(); - yy_push_state(ST_IN_SCRIPTING); - goto restart; +#line 1799 "Zend/zend_language_scanner.l" + { /* Offset must be treated as a string */ + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN(T_NUM_STRING); } -#line 7372 "Zend/zend_language_scanner.c" +#line 7695 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; - goto yy789; + if (yybm[0+yych] & 64) { + goto yy793; + } yy791: YYDEBUG(791, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + YYCURSOR = YYMARKER; + goto yy776; yy792: YYDEBUG(792, *YYCURSOR); + yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy791; + goto yy795; } - if (yych <= '@') goto yy793; - if (yych <= '[') goto yy794; - if (yych == '}') goto yy794; + goto yy791; yy793: YYDEBUG(793, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy789; -yy794: - YYDEBUG(794, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(794, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy793; + } + goto yy789; +yy795: YYDEBUG(795, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_pop_state(); - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(796, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy795; + } + goto yy789; + } +/* *********************************** */ +yyc_INITIAL: + YYDEBUG(797, *YYCURSOR); + YYFILL(7); + yych = *YYCURSOR; + if (yych == '<') goto yy801; + YYDEBUG(799, *YYCURSOR); + ++YYCURSOR; +yy800: + YYDEBUG(800, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1868 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + +inline_char_handler: + + while (1) { + YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); + + YYCURSOR = ptr ? ptr + 1 : YYLIMIT; + + if (YYCURSOR >= YYLIMIT) { + break; + } + + if (*YYCURSOR == '?') { + if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ + + YYCURSOR--; + break; + } + } + } + + yyleng = YYCURSOR - SCNG(yy_text); + + if (SCNG(output_filter)) { + size_t readsize; + char *s = NULL; + size_t sz = 0; + // TODO: avoid reallocation ??? + readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); + ZVAL_STRINGL(zendlval, s, sz); + efree(s); + if (readsize < yyleng) { + yyless(readsize); + } + } else { + ZVAL_STRINGL(zendlval, yytext, yyleng); + } + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_INLINE_HTML); +} +#line 7790 "Zend/zend_language_scanner.c" +yy801: + YYDEBUG(801, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '?') goto yy800; + YYDEBUG(802, *YYCURSOR); + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych == '=') goto yy804; + } else { + if (yych <= 'P') goto yy806; + if (yych == 'p') goto yy806; + } +yy803: + YYDEBUG(803, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1859 "Zend/zend_language_scanner.l" + { + if (CG(short_tags)) { + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_OPEN_TAG); + } else { + goto inline_char_handler; + } +} +#line 7815 "Zend/zend_language_scanner.c" +yy804: + YYDEBUG(804, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(805, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1846 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7407 "Zend/zend_language_scanner.c" +#line 7826 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy808; + if (yych == 'h') goto yy808; +yy807: + YYDEBUG(807, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy803; +yy808: + YYDEBUG(808, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy809; + if (yych != 'p') goto yy807; +yy809: + YYDEBUG(809, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy807; + if (yych >= '\v') goto yy807; + } else { + if (yych <= '\r') goto yy812; + if (yych != ' ') goto yy807; } +yy810: + YYDEBUG(810, *YYCURSOR); + ++YYCURSOR; +yy811: + YYDEBUG(811, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1852 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINE(yytext[yyleng-1]); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_OPEN_TAG); +} +#line 7863 "Zend/zend_language_scanner.c" +yy812: + YYDEBUG(812, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy810; + goto yy811; +/* *********************************** */ +yyc_ST_END_HEREDOC: + YYDEBUG(813, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(815, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(816, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2270 "Zend/zend_language_scanner.l" + { + zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); + + YYCURSOR += heredoc_label->length - 1; + yyleng = heredoc_label->length; + + heredoc_label_dtor(heredoc_label); + efree(heredoc_label); + + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_END_HEREDOC); +} +#line 7891 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(796, *YYCURSOR); + YYDEBUG(817, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(798, *YYCURSOR); + YYDEBUG(819, *YYCURSOR); ++YYCURSOR; - YYDEBUG(799, *YYCURSOR); + YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2504 "Zend/zend_language_scanner.l" +#line 2506 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7492,6 +7961,7 @@ int start_line = CG(zend_lineno); if (YYCURSOR == YYLIMIT) { CG(increment_lineno) = 1; + ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7543,317 +8013,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7502 "Zend/zend_language_scanner.c" -/* *********************************** */ -yyc_ST_VAR_OFFSET: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 240, 240, 112, 112, 112, 112, 112, 112, - 112, 112, 0, 0, 0, 0, 0, 0, - 0, 80, 80, 80, 80, 80, 80, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 80, 80, 80, 80, 80, 80, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - }; - YYDEBUG(800, *YYCURSOR); - YYFILL(3); - yych = *YYCURSOR; - if (yych <= '0') { - if (yych <= ' ') { - if (yych <= '\f') { - if (yych <= 0x08) goto yy814; - if (yych <= '\n') goto yy810; - goto yy814; - } else { - if (yych <= '\r') goto yy810; - if (yych <= 0x1F) goto yy814; - goto yy810; - } - } else { - if (yych <= '$') { - if (yych <= '"') goto yy809; - if (yych <= '#') goto yy810; - goto yy805; - } else { - if (yych == '\'') goto yy810; - if (yych <= '/') goto yy809; - } - } - } else { - if (yych <= ']') { - if (yych <= 'Z') { - if (yych <= '9') goto yy804; - if (yych <= '@') goto yy809; - goto yy812; - } else { - if (yych <= '[') goto yy809; - if (yych <= '\\') goto yy810; - goto yy807; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy812; - goto yy809; - } else { - if (yych <= 'z') goto yy812; - if (yych <= '~') goto yy809; - if (yych <= 0x7F) goto yy814; - goto yy812; - } - } - } - YYDEBUG(802, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'W') { - if (yych <= '9') { - if (yych >= '0') goto yy826; - } else { - if (yych == 'B') goto yy823; - } - } else { - if (yych <= 'b') { - if (yych <= 'X') goto yy825; - if (yych >= 'b') goto yy823; - } else { - if (yych == 'x') goto yy825; - } - } -yy803: - YYDEBUG(803, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1783 "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; - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10)); - if (errno == ERANGE) { - goto string; - } - ZEND_ASSERT(end == yytext + yyleng); - } else { -string: - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - RETURN_TOKEN_WITH_VAL(T_NUM_STRING); -} -#line 7622 "Zend/zend_language_scanner.c" -yy804: - YYDEBUG(804, *YYCURSOR); - yych = *++YYCURSOR; - goto yy822; -yy805: - YYDEBUG(805, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy806; - if (yych <= 'Z') goto yy818; - if (yych >= '_') goto yy818; - } else { - if (yych <= '`') goto yy806; - if (yych <= 'z') goto yy818; - if (yych >= 0x80) goto yy818; - } -yy806: - YYDEBUG(806, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "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 7647 "Zend/zend_language_scanner.c" -yy807: - YYDEBUG(807, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(808, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1938 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN(']'); -} -#line 7658 "Zend/zend_language_scanner.c" -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - goto yy806; -yy810: - YYDEBUG(810, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(811, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1948 "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); -} -#line 7676 "Zend/zend_language_scanner.c" -yy812: - YYDEBUG(812, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy817; -yy813: - YYDEBUG(813, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 7690 "Zend/zend_language_scanner.c" -yy814: - YYDEBUG(814, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(815, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2589 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 7705 "Zend/zend_language_scanner.c" -yy816: - YYDEBUG(816, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy817: - YYDEBUG(817, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy816; - } - goto yy813; -yy818: - YYDEBUG(818, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(819, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy818; - } else { - if (yych <= '@') goto yy820; - if (yych <= 'Z') goto yy818; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy818; - } else { - if (yych <= 'z') goto yy818; - if (yych >= 0x80) goto yy818; - } - } -yy820: - YYDEBUG(820, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7746 "Zend/zend_language_scanner.c" -yy821: - YYDEBUG(821, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy822: - YYDEBUG(822, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy821; - } - goto yy803; -yy823: - YYDEBUG(823, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy831; - } -yy824: - YYDEBUG(824, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy803; -yy825: - YYDEBUG(825, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy829; - } - goto yy824; -yy826: - YYDEBUG(826, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(827, *YYCURSOR); - if (yych <= '/') goto yy828; - if (yych <= '9') goto yy826; -yy828: - YYDEBUG(828, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1799 "Zend/zend_language_scanner.l" - { /* Offset must be treated as a string */ - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN(T_NUM_STRING); -} -#line 7791 "Zend/zend_language_scanner.c" -yy829: - YYDEBUG(829, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(830, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy829; - } - goto yy828; -yy831: - YYDEBUG(831, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(832, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy831; - } - goto yy828; - } +#line 7986 "Zend/zend_language_scanner.c" } -#line 2598 "Zend/zend_language_scanner.l" +#line 2601 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 76f9fb50b7fcb..39dcf50db56c3 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2273,6 +2273,7 @@ skip_escape_conversion: if (YYCURSOR == YYLIMIT) { YYCURSOR = saved_cursor; + ZVAL_NULL(zendlval); RETURN_TOKEN(T_START_HEREDOC); } @@ -2514,6 +2515,7 @@ double_quotes_scan_done: } if (YYCURSOR == YYLIMIT) { + ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2625,6 +2627,7 @@ heredoc_scan_done: if (YYCURSOR == YYLIMIT) { CG(increment_lineno) = 1; + ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 09bcf92f4fe82..ce066883d53b3 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 */ +/* Generated by re2c 1.0.2 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From ddebc250211bbf199da44c1879c044fbe35460c5 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 16:02:44 +0000 Subject: [PATCH 19/54] Delay exception handling --- Zend/zend_language_scanner.c | 243 +++++++++++++++--------------- Zend/zend_language_scanner.l | 5 +- Zend/zend_language_scanner_defs.h | 2 +- 3 files changed, 126 insertions(+), 124 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 4c83ed07811bd..8e151f3dbe207 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.2 */ +/* Generated by re2c 1.0.3 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2592 "Zend/zend_language_scanner.l" +#line 2593 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2192,7 +2192,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2264 "Zend/zend_language_scanner.l" +#line 2265 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4664,8 +4664,9 @@ int start_line = CG(zend_lineno); zval_dtor(&zv); if (EG(exception)) { - zend_restore_lexical_state(¤t_state); - RETURN_TOKEN(retval); + OBJ_RELEASE(EG(exception)); + EG(exception) = NULL; + break; } switch (retval) { @@ -4689,7 +4690,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4662 "Zend/zend_language_scanner.c" +#line 4663 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4713,7 +4714,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 4686 "Zend/zend_language_scanner.c" +#line 4687 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4726,7 +4727,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 4699 "Zend/zend_language_scanner.c" +#line 4700 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4745,7 +4746,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 4718 "Zend/zend_language_scanner.c" +#line 4719 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4758,7 +4759,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 4731 "Zend/zend_language_scanner.c" +#line 4732 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4771,7 +4772,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 4744 "Zend/zend_language_scanner.c" +#line 4745 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4784,7 +4785,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 4757 "Zend/zend_language_scanner.c" +#line 4758 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4821,7 +4822,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 4794 "Zend/zend_language_scanner.c" +#line 4795 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4846,7 +4847,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 4819 "Zend/zend_language_scanner.c" +#line 4820 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4892,7 +4893,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 4865 "Zend/zend_language_scanner.c" +#line 4866 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4953,7 +4954,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 4926 "Zend/zend_language_scanner.c" +#line 4927 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4972,7 +4973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 4945 "Zend/zend_language_scanner.c" +#line 4946 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5027,7 +5028,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5000 "Zend/zend_language_scanner.c" +#line 5001 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5040,7 +5041,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5013 "Zend/zend_language_scanner.c" +#line 5014 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5053,7 +5054,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5026 "Zend/zend_language_scanner.c" +#line 5027 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5066,7 +5067,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5039 "Zend/zend_language_scanner.c" +#line 5040 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5088,7 +5089,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5061 "Zend/zend_language_scanner.c" +#line 5062 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5184,7 +5185,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 5157 "Zend/zend_language_scanner.c" +#line 5158 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5218,7 +5219,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5191 "Zend/zend_language_scanner.c" +#line 5192 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5287,7 +5288,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 5260 "Zend/zend_language_scanner.c" +#line 5261 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5321,7 +5322,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 5294 "Zend/zend_language_scanner.c" +#line 5295 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5370,7 +5371,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5343 "Zend/zend_language_scanner.c" +#line 5344 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5431,7 +5432,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5404 "Zend/zend_language_scanner.c" +#line 5405 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5450,7 +5451,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 5423 "Zend/zend_language_scanner.c" +#line 5424 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5463,7 +5464,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5436 "Zend/zend_language_scanner.c" +#line 5437 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5476,7 +5477,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5449 "Zend/zend_language_scanner.c" +#line 5450 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5560,7 +5561,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5533 "Zend/zend_language_scanner.c" +#line 5534 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5610,7 +5611,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 5583 "Zend/zend_language_scanner.c" +#line 5584 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5641,7 +5642,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 5614 "Zend/zend_language_scanner.c" +#line 5615 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5654,7 +5655,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 5627 "Zend/zend_language_scanner.c" +#line 5628 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5691,7 +5692,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 5664 "Zend/zend_language_scanner.c" +#line 5665 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5704,7 +5705,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 5677 "Zend/zend_language_scanner.c" +#line 5678 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5717,7 +5718,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 5690 "Zend/zend_language_scanner.c" +#line 5691 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5755,7 +5756,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5728 "Zend/zend_language_scanner.c" +#line 5729 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5792,7 +5793,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5765 "Zend/zend_language_scanner.c" +#line 5766 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5824,7 +5825,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 5797 "Zend/zend_language_scanner.c" +#line 5798 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5848,7 +5849,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 5821 "Zend/zend_language_scanner.c" +#line 5822 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5897,7 +5898,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 5870 "Zend/zend_language_scanner.c" +#line 5871 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -5907,7 +5908,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5880 "Zend/zend_language_scanner.c" +#line 5881 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5920,7 +5921,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5893 "Zend/zend_language_scanner.c" +#line 5894 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5933,7 +5934,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 5906 "Zend/zend_language_scanner.c" +#line 5907 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5946,7 +5947,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 5919 "Zend/zend_language_scanner.c" +#line 5920 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5977,7 +5978,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 5950 "Zend/zend_language_scanner.c" +#line 5951 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5990,7 +5991,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 5963 "Zend/zend_language_scanner.c" +#line 5964 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6062,7 +6063,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6035 "Zend/zend_language_scanner.c" +#line 6036 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6087,7 +6088,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 6060 "Zend/zend_language_scanner.c" +#line 6061 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6128,7 +6129,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6101 "Zend/zend_language_scanner.c" +#line 6102 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6159,7 +6160,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 6132 "Zend/zend_language_scanner.c" +#line 6133 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6172,7 +6173,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 6145 "Zend/zend_language_scanner.c" +#line 6146 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6185,7 +6186,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 6158 "Zend/zend_language_scanner.c" +#line 6159 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6198,7 +6199,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 6171 "Zend/zend_language_scanner.c" +#line 6172 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6223,7 +6224,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 6196 "Zend/zend_language_scanner.c" +#line 6197 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6259,7 +6260,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 6232 "Zend/zend_language_scanner.c" +#line 6233 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6272,7 +6273,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6245 "Zend/zend_language_scanner.c" +#line 6246 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6285,7 +6286,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6258 "Zend/zend_language_scanner.c" +#line 6259 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6298,7 +6299,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6271 "Zend/zend_language_scanner.c" +#line 6272 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6317,7 +6318,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 6290 "Zend/zend_language_scanner.c" +#line 6291 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6369,7 +6370,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 6342 "Zend/zend_language_scanner.c" +#line 6343 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6399,7 +6400,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6372 "Zend/zend_language_scanner.c" +#line 6373 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6428,7 +6429,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6401 "Zend/zend_language_scanner.c" +#line 6402 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6441,7 +6442,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6414 "Zend/zend_language_scanner.c" +#line 6415 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6454,7 +6455,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 6427 "Zend/zend_language_scanner.c" +#line 6428 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6484,7 +6485,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 6457 "Zend/zend_language_scanner.c" +#line 6458 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6502,7 +6503,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6475 "Zend/zend_language_scanner.c" +#line 6476 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6574,7 +6575,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 6547 "Zend/zend_language_scanner.c" +#line 6548 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6591,7 +6592,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 6564 "Zend/zend_language_scanner.c" +#line 6565 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6614,7 +6615,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 6587 "Zend/zend_language_scanner.c" +#line 6588 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6624,7 +6625,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6597 "Zend/zend_language_scanner.c" +#line 6598 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6677,7 +6678,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2353 "Zend/zend_language_scanner.l" +#line 2354 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6718,7 +6719,7 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6691 "Zend/zend_language_scanner.c" +#line 6692 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6742,12 +6743,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2297 "Zend/zend_language_scanner.l" +#line 2298 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6720 "Zend/zend_language_scanner.c" +#line 6721 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6773,7 +6774,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6746 "Zend/zend_language_scanner.c" +#line 6747 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6784,20 +6785,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6757 "Zend/zend_language_scanner.c" +#line 6758 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2285 "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 6770 "Zend/zend_language_scanner.c" +#line 6771 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6818,7 +6819,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6791 "Zend/zend_language_scanner.c" +#line 6792 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6843,7 +6844,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6816 "Zend/zend_language_scanner.c" +#line 6817 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6896,7 +6897,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2303 "Zend/zend_language_scanner.l" +#line 2304 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6945,18 +6946,18 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6918 "Zend/zend_language_scanner.c" +#line 6919 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2292 "Zend/zend_language_scanner.l" +#line 2293 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6929 "Zend/zend_language_scanner.c" +#line 6930 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7000,7 +7001,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6973 "Zend/zend_language_scanner.c" +#line 6974 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7011,20 +7012,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6984 "Zend/zend_language_scanner.c" +#line 6985 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2285 "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 6997 "Zend/zend_language_scanner.c" +#line 6998 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7045,7 +7046,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7018 "Zend/zend_language_scanner.c" +#line 7019 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7070,7 +7071,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7043 "Zend/zend_language_scanner.c" +#line 7044 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7119,7 +7120,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2395 "Zend/zend_language_scanner.l" +#line 2396 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7229,7 +7230,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7202 "Zend/zend_language_scanner.c" +#line 7203 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7273,7 +7274,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7246 "Zend/zend_language_scanner.c" +#line 7247 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7284,20 +7285,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7257 "Zend/zend_language_scanner.c" +#line 7258 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2285 "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 7270 "Zend/zend_language_scanner.c" +#line 7271 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7318,7 +7319,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7291 "Zend/zend_language_scanner.c" +#line 7292 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7343,7 +7344,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7316 "Zend/zend_language_scanner.c" +#line 7317 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7407,7 +7408,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7380 "Zend/zend_language_scanner.c" +#line 7381 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7462,7 +7463,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7435 "Zend/zend_language_scanner.c" +#line 7436 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7551,7 +7552,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2592 "Zend/zend_language_scanner.l" +#line 2593 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7560,7 +7561,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7533 "Zend/zend_language_scanner.c" +#line 7534 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7574,7 +7575,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7547 "Zend/zend_language_scanner.c" +#line 7548 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7586,7 +7587,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7559 "Zend/zend_language_scanner.c" +#line 7560 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7637,7 +7638,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7610 "Zend/zend_language_scanner.c" +#line 7611 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7664,7 +7665,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7637 "Zend/zend_language_scanner.c" +#line 7638 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7675,7 +7676,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7648 "Zend/zend_language_scanner.c" +#line 7649 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7705,7 +7706,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7678 "Zend/zend_language_scanner.c" +#line 7679 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7722,7 +7723,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7695 "Zend/zend_language_scanner.c" +#line 7696 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7817,7 +7818,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7790 "Zend/zend_language_scanner.c" +#line 7791 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7842,7 +7843,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7815 "Zend/zend_language_scanner.c" +#line 7816 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7853,7 +7854,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7826 "Zend/zend_language_scanner.c" +#line 7827 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7890,7 +7891,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7863 "Zend/zend_language_scanner.c" +#line 7864 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7905,7 +7906,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2270 "Zend/zend_language_scanner.l" +#line 2271 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7918,7 +7919,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7891 "Zend/zend_language_scanner.c" +#line 7892 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7928,7 +7929,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2506 "Zend/zend_language_scanner.l" +#line 2507 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -8013,9 +8014,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7986 "Zend/zend_language_scanner.c" +#line 7987 "Zend/zend_language_scanner.c" } -#line 2601 "Zend/zend_language_scanner.l" +#line 2602 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 39dcf50db56c3..57e597092c8a7 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2319,8 +2319,9 @@ skip_escape_conversion: zval_dtor(&zv); if (EG(exception)) { - zend_restore_lexical_state(¤t_state); - RETURN_TOKEN(retval); + OBJ_RELEASE(EG(exception)); + EG(exception) = NULL; + break; } switch (retval) { diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index ce066883d53b3..81299aa44ffab 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.2 */ +/* Generated by re2c 1.0.3 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From 5120ebe4eb93262a55a60fec53a29fd11c017fbd Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 16:06:31 +0000 Subject: [PATCH 20/54] Return early --- Zend/zend_language_scanner.c | 2 +- Zend/zend_language_scanner.l | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 8e151f3dbe207..ed85a61143d8c 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -4637,7 +4637,7 @@ int start_line = CG(zend_lineno); } BEGIN(ST_END_HEREDOC); - is_heredoc = 0; + RETURN_TOKEN(T_START_HEREDOC); } else { YYCURSOR = saved_cursor; } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 57e597092c8a7..4213f1fda6e38 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2292,7 +2292,7 @@ skip_escape_conversion: } BEGIN(ST_END_HEREDOC); - is_heredoc = 0; + RETURN_TOKEN(T_START_HEREDOC); } else { YYCURSOR = saved_cursor; } From 9b21e2f56211de925446e14e03792be0de47c016 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 18:24:11 +0000 Subject: [PATCH 21/54] Improve line number test --- ...no.phpt => flexible-heredoc-nowdoc-lineno.phpt} | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) rename Zend/tests/{flexible-heredoc-lineno.phpt => flexible-heredoc-nowdoc-lineno.phpt} (72%) diff --git a/Zend/tests/flexible-heredoc-lineno.phpt b/Zend/tests/flexible-heredoc-nowdoc-lineno.phpt similarity index 72% rename from Zend/tests/flexible-heredoc-lineno.phpt rename to Zend/tests/flexible-heredoc-nowdoc-lineno.phpt index b1e0fb50c15e3..4f4b89100a436 100644 --- a/Zend/tests/flexible-heredoc-lineno.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc-lineno.phpt @@ -7,18 +7,22 @@ $heredoc = <<getLine()); } ---EXPECTF-- -int(16) +--EXPECT-- +int(20) From afe83dcd8ada65c2af3a6bcabbbba734fd7194bb Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 19:06:38 +0000 Subject: [PATCH 22/54] Fix new line detection for indented closing markers --- Zend/zend_language_scanner.c | 62 +++++++++++++++++------------------- Zend/zend_language_scanner.l | 10 +++--- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index ed85a61143d8c..d97205a0a334b 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2593 "Zend/zend_language_scanner.l" +#line 2591 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7137,6 +7137,7 @@ int start_line = CG(zend_lineno); if (*YYCURSOR == '\n') { YYCURSOR++; } + newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -7175,9 +7176,7 @@ int start_line = CG(zend_lineno); /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { + if (!newline) { newline = 1; } @@ -7230,7 +7229,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7203 "Zend/zend_language_scanner.c" +#line 7202 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7274,7 +7273,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7247 "Zend/zend_language_scanner.c" +#line 7246 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7285,7 +7284,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7258 "Zend/zend_language_scanner.c" +#line 7257 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; @@ -7298,7 +7297,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7271 "Zend/zend_language_scanner.c" +#line 7270 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7319,7 +7318,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7292 "Zend/zend_language_scanner.c" +#line 7291 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7344,7 +7343,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7317 "Zend/zend_language_scanner.c" +#line 7316 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7408,7 +7407,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7381 "Zend/zend_language_scanner.c" +#line 7380 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7463,7 +7462,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7436 "Zend/zend_language_scanner.c" +#line 7435 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7552,7 +7551,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2593 "Zend/zend_language_scanner.l" +#line 2591 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7561,7 +7560,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7534 "Zend/zend_language_scanner.c" +#line 7533 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7575,7 +7574,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7548 "Zend/zend_language_scanner.c" +#line 7547 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7587,7 +7586,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7560 "Zend/zend_language_scanner.c" +#line 7559 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7638,7 +7637,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7611 "Zend/zend_language_scanner.c" +#line 7610 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7665,7 +7664,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7638 "Zend/zend_language_scanner.c" +#line 7637 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7676,7 +7675,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7649 "Zend/zend_language_scanner.c" +#line 7648 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7706,7 +7705,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7679 "Zend/zend_language_scanner.c" +#line 7678 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7723,7 +7722,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7696 "Zend/zend_language_scanner.c" +#line 7695 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7818,7 +7817,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7791 "Zend/zend_language_scanner.c" +#line 7790 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7843,7 +7842,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7816 "Zend/zend_language_scanner.c" +#line 7815 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7854,7 +7853,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7827 "Zend/zend_language_scanner.c" +#line 7826 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7891,7 +7890,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7864 "Zend/zend_language_scanner.c" +#line 7863 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7919,7 +7918,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7892 "Zend/zend_language_scanner.c" +#line 7891 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7929,7 +7928,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2507 "Zend/zend_language_scanner.l" +#line 2506 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7946,6 +7945,7 @@ int start_line = CG(zend_lineno); if (*YYCURSOR == '\n') { YYCURSOR++; } + newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -7985,9 +7985,7 @@ int start_line = CG(zend_lineno); /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { + if (!newline) { newline = 1; } @@ -8014,9 +8012,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7987 "Zend/zend_language_scanner.c" +#line 7985 "Zend/zend_language_scanner.c" } -#line 2602 "Zend/zend_language_scanner.l" +#line 2600 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 4213f1fda6e38..0a63115e94ade 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2501,6 +2501,7 @@ double_quotes_scan_done: if (*YYCURSOR == '\n') { YYCURSOR++; } + newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -2539,9 +2540,7 @@ double_quotes_scan_done: /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { + if (!newline) { newline = 1; } @@ -2612,6 +2611,7 @@ heredoc_scan_done: if (*YYCURSOR == '\n') { YYCURSOR++; } + newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -2651,9 +2651,7 @@ heredoc_scan_done: /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') { - newline = 2; /* Windows newline */ - } else { + if (!newline) { newline = 1; } From e6842415e291cf8b8adb02cbb71f37ee62fd5901 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 19:09:13 +0000 Subject: [PATCH 23/54] Clear exception using the appropriate API --- Zend/zend_language_scanner.c | 239 +++++++++++++++++------------------ Zend/zend_language_scanner.l | 3 +- 2 files changed, 120 insertions(+), 122 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index d97205a0a334b..8fd18a49ebb82 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2591 "Zend/zend_language_scanner.l" +#line 2590 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2192,7 +2192,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2265 "Zend/zend_language_scanner.l" +#line 2264 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4664,8 +4664,7 @@ int start_line = CG(zend_lineno); zval_dtor(&zv); if (EG(exception)) { - OBJ_RELEASE(EG(exception)); - EG(exception) = NULL; + zend_clear_exception(); break; } @@ -4690,7 +4689,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4663 "Zend/zend_language_scanner.c" +#line 4662 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4714,7 +4713,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 4687 "Zend/zend_language_scanner.c" +#line 4686 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4727,7 +4726,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 4700 "Zend/zend_language_scanner.c" +#line 4699 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4746,7 +4745,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 4719 "Zend/zend_language_scanner.c" +#line 4718 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4759,7 +4758,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 4732 "Zend/zend_language_scanner.c" +#line 4731 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4772,7 +4771,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 4745 "Zend/zend_language_scanner.c" +#line 4744 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4785,7 +4784,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 4758 "Zend/zend_language_scanner.c" +#line 4757 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4822,7 +4821,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 4795 "Zend/zend_language_scanner.c" +#line 4794 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4847,7 +4846,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 4820 "Zend/zend_language_scanner.c" +#line 4819 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4893,7 +4892,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 4866 "Zend/zend_language_scanner.c" +#line 4865 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4954,7 +4953,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 4927 "Zend/zend_language_scanner.c" +#line 4926 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4973,7 +4972,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 4946 "Zend/zend_language_scanner.c" +#line 4945 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5028,7 +5027,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5001 "Zend/zend_language_scanner.c" +#line 5000 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5041,7 +5040,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5014 "Zend/zend_language_scanner.c" +#line 5013 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5054,7 +5053,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5027 "Zend/zend_language_scanner.c" +#line 5026 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5067,7 +5066,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5040 "Zend/zend_language_scanner.c" +#line 5039 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5089,7 +5088,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5062 "Zend/zend_language_scanner.c" +#line 5061 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5185,7 +5184,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 5158 "Zend/zend_language_scanner.c" +#line 5157 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5219,7 +5218,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5192 "Zend/zend_language_scanner.c" +#line 5191 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5288,7 +5287,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 5261 "Zend/zend_language_scanner.c" +#line 5260 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5322,7 +5321,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 5295 "Zend/zend_language_scanner.c" +#line 5294 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5371,7 +5370,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5344 "Zend/zend_language_scanner.c" +#line 5343 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5432,7 +5431,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5405 "Zend/zend_language_scanner.c" +#line 5404 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5451,7 +5450,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 5424 "Zend/zend_language_scanner.c" +#line 5423 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5464,7 +5463,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5437 "Zend/zend_language_scanner.c" +#line 5436 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5477,7 +5476,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5450 "Zend/zend_language_scanner.c" +#line 5449 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5561,7 +5560,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5534 "Zend/zend_language_scanner.c" +#line 5533 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5611,7 +5610,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 5584 "Zend/zend_language_scanner.c" +#line 5583 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5642,7 +5641,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 5615 "Zend/zend_language_scanner.c" +#line 5614 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5655,7 +5654,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 5628 "Zend/zend_language_scanner.c" +#line 5627 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5692,7 +5691,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 5665 "Zend/zend_language_scanner.c" +#line 5664 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5705,7 +5704,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 5678 "Zend/zend_language_scanner.c" +#line 5677 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5718,7 +5717,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 5691 "Zend/zend_language_scanner.c" +#line 5690 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5756,7 +5755,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5729 "Zend/zend_language_scanner.c" +#line 5728 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5793,7 +5792,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5766 "Zend/zend_language_scanner.c" +#line 5765 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5825,7 +5824,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 5798 "Zend/zend_language_scanner.c" +#line 5797 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5849,7 +5848,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 5822 "Zend/zend_language_scanner.c" +#line 5821 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5898,7 +5897,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 5871 "Zend/zend_language_scanner.c" +#line 5870 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -5908,7 +5907,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5881 "Zend/zend_language_scanner.c" +#line 5880 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5921,7 +5920,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5894 "Zend/zend_language_scanner.c" +#line 5893 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5934,7 +5933,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 5907 "Zend/zend_language_scanner.c" +#line 5906 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5947,7 +5946,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 5920 "Zend/zend_language_scanner.c" +#line 5919 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5978,7 +5977,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 5951 "Zend/zend_language_scanner.c" +#line 5950 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5991,7 +5990,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 5964 "Zend/zend_language_scanner.c" +#line 5963 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6063,7 +6062,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6036 "Zend/zend_language_scanner.c" +#line 6035 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6088,7 +6087,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 6061 "Zend/zend_language_scanner.c" +#line 6060 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6129,7 +6128,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6102 "Zend/zend_language_scanner.c" +#line 6101 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6160,7 +6159,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 6133 "Zend/zend_language_scanner.c" +#line 6132 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6173,7 +6172,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 6146 "Zend/zend_language_scanner.c" +#line 6145 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6186,7 +6185,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 6159 "Zend/zend_language_scanner.c" +#line 6158 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6199,7 +6198,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 6172 "Zend/zend_language_scanner.c" +#line 6171 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6224,7 +6223,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 6197 "Zend/zend_language_scanner.c" +#line 6196 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6260,7 +6259,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 6233 "Zend/zend_language_scanner.c" +#line 6232 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6273,7 +6272,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6246 "Zend/zend_language_scanner.c" +#line 6245 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6286,7 +6285,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6259 "Zend/zend_language_scanner.c" +#line 6258 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6299,7 +6298,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6272 "Zend/zend_language_scanner.c" +#line 6271 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6318,7 +6317,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 6291 "Zend/zend_language_scanner.c" +#line 6290 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6370,7 +6369,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 6343 "Zend/zend_language_scanner.c" +#line 6342 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6400,7 +6399,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6373 "Zend/zend_language_scanner.c" +#line 6372 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6429,7 +6428,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6402 "Zend/zend_language_scanner.c" +#line 6401 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6442,7 +6441,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6415 "Zend/zend_language_scanner.c" +#line 6414 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6455,7 +6454,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 6428 "Zend/zend_language_scanner.c" +#line 6427 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6485,7 +6484,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 6458 "Zend/zend_language_scanner.c" +#line 6457 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6503,7 +6502,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6476 "Zend/zend_language_scanner.c" +#line 6475 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6575,7 +6574,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 6548 "Zend/zend_language_scanner.c" +#line 6547 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6592,7 +6591,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 6565 "Zend/zend_language_scanner.c" +#line 6564 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6615,7 +6614,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 6588 "Zend/zend_language_scanner.c" +#line 6587 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6625,7 +6624,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6598 "Zend/zend_language_scanner.c" +#line 6597 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6678,7 +6677,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2354 "Zend/zend_language_scanner.l" +#line 2353 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6719,7 +6718,7 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6692 "Zend/zend_language_scanner.c" +#line 6691 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6743,12 +6742,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2298 "Zend/zend_language_scanner.l" +#line 2297 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6721 "Zend/zend_language_scanner.c" +#line 6720 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6774,7 +6773,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6747 "Zend/zend_language_scanner.c" +#line 6746 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6785,20 +6784,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6758 "Zend/zend_language_scanner.c" +#line 6757 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2285 "Zend/zend_language_scanner.l" +#line 2284 "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 6771 "Zend/zend_language_scanner.c" +#line 6770 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6819,7 +6818,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6792 "Zend/zend_language_scanner.c" +#line 6791 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6844,7 +6843,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6817 "Zend/zend_language_scanner.c" +#line 6816 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6897,7 +6896,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2304 "Zend/zend_language_scanner.l" +#line 2303 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6946,18 +6945,18 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6919 "Zend/zend_language_scanner.c" +#line 6918 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2293 "Zend/zend_language_scanner.l" +#line 2292 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6930 "Zend/zend_language_scanner.c" +#line 6929 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7001,7 +7000,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6974 "Zend/zend_language_scanner.c" +#line 6973 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7012,20 +7011,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6985 "Zend/zend_language_scanner.c" +#line 6984 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2285 "Zend/zend_language_scanner.l" +#line 2284 "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 6998 "Zend/zend_language_scanner.c" +#line 6997 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7046,7 +7045,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7019 "Zend/zend_language_scanner.c" +#line 7018 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7071,7 +7070,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7044 "Zend/zend_language_scanner.c" +#line 7043 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7120,7 +7119,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2396 "Zend/zend_language_scanner.l" +#line 2395 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7229,7 +7228,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7202 "Zend/zend_language_scanner.c" +#line 7201 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7273,7 +7272,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7246 "Zend/zend_language_scanner.c" +#line 7245 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7284,20 +7283,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7257 "Zend/zend_language_scanner.c" +#line 7256 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2285 "Zend/zend_language_scanner.l" +#line 2284 "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 7270 "Zend/zend_language_scanner.c" +#line 7269 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7318,7 +7317,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7291 "Zend/zend_language_scanner.c" +#line 7290 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7343,7 +7342,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7316 "Zend/zend_language_scanner.c" +#line 7315 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7407,7 +7406,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7380 "Zend/zend_language_scanner.c" +#line 7379 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7462,7 +7461,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7435 "Zend/zend_language_scanner.c" +#line 7434 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7551,7 +7550,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2591 "Zend/zend_language_scanner.l" +#line 2590 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7560,7 +7559,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7533 "Zend/zend_language_scanner.c" +#line 7532 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7574,7 +7573,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7547 "Zend/zend_language_scanner.c" +#line 7546 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7586,7 +7585,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7559 "Zend/zend_language_scanner.c" +#line 7558 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7637,7 +7636,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7610 "Zend/zend_language_scanner.c" +#line 7609 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7664,7 +7663,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7637 "Zend/zend_language_scanner.c" +#line 7636 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7675,7 +7674,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7648 "Zend/zend_language_scanner.c" +#line 7647 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7705,7 +7704,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7678 "Zend/zend_language_scanner.c" +#line 7677 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7722,7 +7721,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7695 "Zend/zend_language_scanner.c" +#line 7694 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7817,7 +7816,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7790 "Zend/zend_language_scanner.c" +#line 7789 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7842,7 +7841,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7815 "Zend/zend_language_scanner.c" +#line 7814 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7853,7 +7852,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7826 "Zend/zend_language_scanner.c" +#line 7825 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7890,7 +7889,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7863 "Zend/zend_language_scanner.c" +#line 7862 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7905,7 +7904,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2271 "Zend/zend_language_scanner.l" +#line 2270 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7918,7 +7917,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7891 "Zend/zend_language_scanner.c" +#line 7890 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7928,7 +7927,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2506 "Zend/zend_language_scanner.l" +#line 2505 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -8012,9 +8011,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7985 "Zend/zend_language_scanner.c" +#line 7984 "Zend/zend_language_scanner.c" } -#line 2600 "Zend/zend_language_scanner.l" +#line 2599 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 0a63115e94ade..948e2e9b9d635 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2319,8 +2319,7 @@ skip_escape_conversion: zval_dtor(&zv); if (EG(exception)) { - OBJ_RELEASE(EG(exception)); - EG(exception) = NULL; + zend_clear_exception(); break; } From 6ae4f7b2b9cf6c338a5f103d1ccc12bc3e3a51f9 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 19:17:53 +0000 Subject: [PATCH 24/54] Remove superfluous code --- Zend/zend_language_scanner.c | 248 +++++++++++++++++------------------ Zend/zend_language_scanner.l | 12 -- 2 files changed, 118 insertions(+), 142 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 8fd18a49ebb82..fad485c03b6ed 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2590 "Zend/zend_language_scanner.l" +#line 2578 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2192,7 +2192,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2264 "Zend/zend_language_scanner.l" +#line 2260 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4632,10 +4632,6 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } - if (*end == ';') { - end++; - } - BEGIN(ST_END_HEREDOC); RETURN_TOKEN(T_START_HEREDOC); } else { @@ -4689,7 +4685,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4662 "Zend/zend_language_scanner.c" +#line 4658 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4713,7 +4709,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 4686 "Zend/zend_language_scanner.c" +#line 4682 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4726,7 +4722,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 4699 "Zend/zend_language_scanner.c" +#line 4695 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4745,7 +4741,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 4718 "Zend/zend_language_scanner.c" +#line 4714 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4758,7 +4754,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 4731 "Zend/zend_language_scanner.c" +#line 4727 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4771,7 +4767,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 4744 "Zend/zend_language_scanner.c" +#line 4740 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4784,7 +4780,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 4757 "Zend/zend_language_scanner.c" +#line 4753 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4821,7 +4817,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 4794 "Zend/zend_language_scanner.c" +#line 4790 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4846,7 +4842,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 4819 "Zend/zend_language_scanner.c" +#line 4815 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4892,7 +4888,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 4865 "Zend/zend_language_scanner.c" +#line 4861 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4953,7 +4949,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 4926 "Zend/zend_language_scanner.c" +#line 4922 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4972,7 +4968,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 4945 "Zend/zend_language_scanner.c" +#line 4941 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5027,7 +5023,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5000 "Zend/zend_language_scanner.c" +#line 4996 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5040,7 +5036,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5013 "Zend/zend_language_scanner.c" +#line 5009 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5053,7 +5049,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5026 "Zend/zend_language_scanner.c" +#line 5022 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5066,7 +5062,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5039 "Zend/zend_language_scanner.c" +#line 5035 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5088,7 +5084,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5061 "Zend/zend_language_scanner.c" +#line 5057 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5184,7 +5180,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 5157 "Zend/zend_language_scanner.c" +#line 5153 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5218,7 +5214,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5191 "Zend/zend_language_scanner.c" +#line 5187 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5287,7 +5283,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 5260 "Zend/zend_language_scanner.c" +#line 5256 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5321,7 +5317,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 5294 "Zend/zend_language_scanner.c" +#line 5290 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5370,7 +5366,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5343 "Zend/zend_language_scanner.c" +#line 5339 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5431,7 +5427,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5404 "Zend/zend_language_scanner.c" +#line 5400 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5450,7 +5446,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 5423 "Zend/zend_language_scanner.c" +#line 5419 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5463,7 +5459,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5436 "Zend/zend_language_scanner.c" +#line 5432 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5476,7 +5472,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5449 "Zend/zend_language_scanner.c" +#line 5445 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5560,7 +5556,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5533 "Zend/zend_language_scanner.c" +#line 5529 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5610,7 +5606,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 5583 "Zend/zend_language_scanner.c" +#line 5579 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5641,7 +5637,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 5614 "Zend/zend_language_scanner.c" +#line 5610 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5654,7 +5650,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 5627 "Zend/zend_language_scanner.c" +#line 5623 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5691,7 +5687,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 5664 "Zend/zend_language_scanner.c" +#line 5660 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5704,7 +5700,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 5677 "Zend/zend_language_scanner.c" +#line 5673 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5717,7 +5713,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 5690 "Zend/zend_language_scanner.c" +#line 5686 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5755,7 +5751,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5728 "Zend/zend_language_scanner.c" +#line 5724 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5792,7 +5788,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5765 "Zend/zend_language_scanner.c" +#line 5761 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5824,7 +5820,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 5797 "Zend/zend_language_scanner.c" +#line 5793 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5848,7 +5844,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 5821 "Zend/zend_language_scanner.c" +#line 5817 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5897,7 +5893,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 5870 "Zend/zend_language_scanner.c" +#line 5866 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -5907,7 +5903,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5880 "Zend/zend_language_scanner.c" +#line 5876 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5920,7 +5916,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5893 "Zend/zend_language_scanner.c" +#line 5889 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5933,7 +5929,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 5906 "Zend/zend_language_scanner.c" +#line 5902 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5946,7 +5942,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 5919 "Zend/zend_language_scanner.c" +#line 5915 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5977,7 +5973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 5950 "Zend/zend_language_scanner.c" +#line 5946 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5990,7 +5986,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 5963 "Zend/zend_language_scanner.c" +#line 5959 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6062,7 +6058,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6035 "Zend/zend_language_scanner.c" +#line 6031 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6087,7 +6083,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 6060 "Zend/zend_language_scanner.c" +#line 6056 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6128,7 +6124,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6101 "Zend/zend_language_scanner.c" +#line 6097 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6159,7 +6155,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 6132 "Zend/zend_language_scanner.c" +#line 6128 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6172,7 +6168,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 6145 "Zend/zend_language_scanner.c" +#line 6141 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6185,7 +6181,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 6158 "Zend/zend_language_scanner.c" +#line 6154 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6198,7 +6194,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 6171 "Zend/zend_language_scanner.c" +#line 6167 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6223,7 +6219,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 6196 "Zend/zend_language_scanner.c" +#line 6192 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6259,7 +6255,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 6232 "Zend/zend_language_scanner.c" +#line 6228 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6272,7 +6268,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6245 "Zend/zend_language_scanner.c" +#line 6241 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6285,7 +6281,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6258 "Zend/zend_language_scanner.c" +#line 6254 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6298,7 +6294,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6271 "Zend/zend_language_scanner.c" +#line 6267 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6317,7 +6313,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 6290 "Zend/zend_language_scanner.c" +#line 6286 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6369,7 +6365,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 6342 "Zend/zend_language_scanner.c" +#line 6338 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6399,7 +6395,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6372 "Zend/zend_language_scanner.c" +#line 6368 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6428,7 +6424,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6401 "Zend/zend_language_scanner.c" +#line 6397 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6441,7 +6437,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6414 "Zend/zend_language_scanner.c" +#line 6410 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6454,7 +6450,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 6427 "Zend/zend_language_scanner.c" +#line 6423 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6484,7 +6480,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 6457 "Zend/zend_language_scanner.c" +#line 6453 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6502,7 +6498,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6475 "Zend/zend_language_scanner.c" +#line 6471 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6574,7 +6570,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 6547 "Zend/zend_language_scanner.c" +#line 6543 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6591,7 +6587,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 6564 "Zend/zend_language_scanner.c" +#line 6560 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6614,7 +6610,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 6587 "Zend/zend_language_scanner.c" +#line 6583 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6624,7 +6620,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6597 "Zend/zend_language_scanner.c" +#line 6593 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6677,7 +6673,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2353 "Zend/zend_language_scanner.l" +#line 2349 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6718,7 +6714,7 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6691 "Zend/zend_language_scanner.c" +#line 6687 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6742,12 +6738,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2297 "Zend/zend_language_scanner.l" +#line 2293 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6720 "Zend/zend_language_scanner.c" +#line 6716 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6773,7 +6769,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6746 "Zend/zend_language_scanner.c" +#line 6742 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6784,20 +6780,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6757 "Zend/zend_language_scanner.c" +#line 6753 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2280 "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 6770 "Zend/zend_language_scanner.c" +#line 6766 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6818,7 +6814,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6791 "Zend/zend_language_scanner.c" +#line 6787 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6843,7 +6839,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6816 "Zend/zend_language_scanner.c" +#line 6812 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6896,7 +6892,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2303 "Zend/zend_language_scanner.l" +#line 2299 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6945,18 +6941,18 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6918 "Zend/zend_language_scanner.c" +#line 6914 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2292 "Zend/zend_language_scanner.l" +#line 2288 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6929 "Zend/zend_language_scanner.c" +#line 6925 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7000,7 +6996,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6973 "Zend/zend_language_scanner.c" +#line 6969 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7011,20 +7007,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6984 "Zend/zend_language_scanner.c" +#line 6980 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2280 "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 6997 "Zend/zend_language_scanner.c" +#line 6993 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7045,7 +7041,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7018 "Zend/zend_language_scanner.c" +#line 7014 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7070,7 +7066,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7043 "Zend/zend_language_scanner.c" +#line 7039 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7119,7 +7115,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2395 "Zend/zend_language_scanner.l" +#line 2391 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7169,10 +7165,6 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } - if (*end == ';') { - end++; - } - /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ if (!newline) { @@ -7228,7 +7220,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7201 "Zend/zend_language_scanner.c" +#line 7193 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7272,7 +7264,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7245 "Zend/zend_language_scanner.c" +#line 7237 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7283,20 +7275,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7256 "Zend/zend_language_scanner.c" +#line 7248 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2280 "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 7269 "Zend/zend_language_scanner.c" +#line 7261 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7317,7 +7309,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7290 "Zend/zend_language_scanner.c" +#line 7282 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7342,7 +7334,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7315 "Zend/zend_language_scanner.c" +#line 7307 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7406,7 +7398,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7379 "Zend/zend_language_scanner.c" +#line 7371 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7461,7 +7453,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7434 "Zend/zend_language_scanner.c" +#line 7426 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7550,7 +7542,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2590 "Zend/zend_language_scanner.l" +#line 2578 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7559,7 +7551,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7532 "Zend/zend_language_scanner.c" +#line 7524 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7573,7 +7565,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7546 "Zend/zend_language_scanner.c" +#line 7538 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7585,7 +7577,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7558 "Zend/zend_language_scanner.c" +#line 7550 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7636,7 +7628,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7609 "Zend/zend_language_scanner.c" +#line 7601 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7663,7 +7655,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7636 "Zend/zend_language_scanner.c" +#line 7628 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7674,7 +7666,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7647 "Zend/zend_language_scanner.c" +#line 7639 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7704,7 +7696,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7677 "Zend/zend_language_scanner.c" +#line 7669 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7721,7 +7713,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7694 "Zend/zend_language_scanner.c" +#line 7686 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7816,7 +7808,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7789 "Zend/zend_language_scanner.c" +#line 7781 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7841,7 +7833,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7814 "Zend/zend_language_scanner.c" +#line 7806 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7852,7 +7844,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7825 "Zend/zend_language_scanner.c" +#line 7817 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7889,7 +7881,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7862 "Zend/zend_language_scanner.c" +#line 7854 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7904,7 +7896,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2270 "Zend/zend_language_scanner.l" +#line 2266 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7917,7 +7909,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7890 "Zend/zend_language_scanner.c" +#line 7882 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7927,7 +7919,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2505 "Zend/zend_language_scanner.l" +#line 2497 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7978,10 +7970,6 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } - if (*end == ';') { - end++; - } - /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ if (!newline) { @@ -8011,9 +7999,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7984 "Zend/zend_language_scanner.c" +#line 7972 "Zend/zend_language_scanner.c" } -#line 2599 "Zend/zend_language_scanner.l" +#line 2587 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 948e2e9b9d635..eb81040c9e293 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2287,10 +2287,6 @@ skip_escape_conversion: RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } - if (*end == ';') { - end++; - } - BEGIN(ST_END_HEREDOC); RETURN_TOKEN(T_START_HEREDOC); } else { @@ -2533,10 +2529,6 @@ double_quotes_scan_done: RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } - if (*end == ';') { - end++; - } - /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ if (!newline) { @@ -2644,10 +2636,6 @@ heredoc_scan_done: RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } - if (*end == ';') { - end++; - } - /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ if (!newline) { From 31166bb4e70c64065ae4ca13a37f6bed8e9ae488 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 19:28:42 +0000 Subject: [PATCH 25/54] Fix compiler line number information --- Zend/zend_language_scanner.c | 13 ++++++++----- Zend/zend_language_scanner.l | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index fad485c03b6ed..bd3285d9512cb 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2578 "Zend/zend_language_scanner.l" +#line 2581 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7542,7 +7542,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2578 "Zend/zend_language_scanner.l" +#line 2581 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7976,7 +7976,10 @@ int start_line = CG(zend_lineno); newline = 1; } - CG(increment_lineno) = 1; /* For newline before label */ + if (!indentation) { + CG(increment_lineno) = 1; /* For newline before label */ + } + BEGIN(ST_END_HEREDOC); goto nowdoc_scan_done; @@ -7999,9 +8002,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7972 "Zend/zend_language_scanner.c" +#line 7975 "Zend/zend_language_scanner.c" } -#line 2587 "Zend/zend_language_scanner.l" +#line 2590 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index eb81040c9e293..c05c01666d43a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2642,7 +2642,10 @@ heredoc_scan_done: newline = 1; } - CG(increment_lineno) = 1; /* For newline before label */ + if (!indentation) { + CG(increment_lineno) = 1; /* For newline before label */ + } + BEGIN(ST_END_HEREDOC); goto nowdoc_scan_done; From d8b6a44f3343c4a53f602c7f015c01167ccefb0f Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 19:29:55 +0000 Subject: [PATCH 26/54] No need for a separate variable anymore --- Zend/zend_language_scanner.c | 60 +++++++++++++++++------------------- Zend/zend_language_scanner.l | 8 ++--- 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index bd3285d9512cb..f287d8c8d2a7c 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2581 "Zend/zend_language_scanner.l" +#line 2577 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7154,9 +7154,7 @@ int start_line = CG(zend_lineno); /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (IS_LABEL_START(*end)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { continue; } @@ -7220,7 +7218,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7193 "Zend/zend_language_scanner.c" +#line 7191 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7264,7 +7262,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7237 "Zend/zend_language_scanner.c" +#line 7235 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7275,7 +7273,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7248 "Zend/zend_language_scanner.c" +#line 7246 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; @@ -7288,7 +7286,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7261 "Zend/zend_language_scanner.c" +#line 7259 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7309,7 +7307,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7282 "Zend/zend_language_scanner.c" +#line 7280 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7334,7 +7332,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7307 "Zend/zend_language_scanner.c" +#line 7305 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7398,7 +7396,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7371 "Zend/zend_language_scanner.c" +#line 7369 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7453,7 +7451,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7426 "Zend/zend_language_scanner.c" +#line 7424 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7542,7 +7540,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2581 "Zend/zend_language_scanner.l" +#line 2577 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7551,7 +7549,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7524 "Zend/zend_language_scanner.c" +#line 7522 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7565,7 +7563,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7538 "Zend/zend_language_scanner.c" +#line 7536 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7577,7 +7575,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7550 "Zend/zend_language_scanner.c" +#line 7548 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7628,7 +7626,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7601 "Zend/zend_language_scanner.c" +#line 7599 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7655,7 +7653,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7628 "Zend/zend_language_scanner.c" +#line 7626 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7666,7 +7664,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7639 "Zend/zend_language_scanner.c" +#line 7637 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7696,7 +7694,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7669 "Zend/zend_language_scanner.c" +#line 7667 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7713,7 +7711,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7686 "Zend/zend_language_scanner.c" +#line 7684 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7808,7 +7806,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7781 "Zend/zend_language_scanner.c" +#line 7779 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7833,7 +7831,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7806 "Zend/zend_language_scanner.c" +#line 7804 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7844,7 +7842,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7817 "Zend/zend_language_scanner.c" +#line 7815 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7881,7 +7879,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7854 "Zend/zend_language_scanner.c" +#line 7852 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7909,7 +7907,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7882 "Zend/zend_language_scanner.c" +#line 7880 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7919,7 +7917,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2497 "Zend/zend_language_scanner.l" +#line 2495 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7959,9 +7957,7 @@ int start_line = CG(zend_lineno); /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (IS_LABEL_START(*end)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { continue; } @@ -8002,9 +7998,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7975 "Zend/zend_language_scanner.c" +#line 7971 "Zend/zend_language_scanner.c" } -#line 2590 "Zend/zend_language_scanner.l" +#line 2586 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index c05c01666d43a..1a5266a242110 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2518,9 +2518,7 @@ double_quotes_scan_done: /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (IS_LABEL_START(*end)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { continue; } @@ -2625,9 +2623,7 @@ heredoc_scan_done: /* Check for ending label on the next line */ if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (IS_LABEL_START(*end)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { continue; } From 8b0329bd935479c1d070a7481762ba3da3656dd2 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 11 Mar 2018 20:10:10 +0000 Subject: [PATCH 27/54] Add a basic test for ext/tokenizer --- .../tests/token_get_all_heredoc_nowdoc.phpt | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt new file mode 100644 index 0000000000000..f3154285bc725 --- /dev/null +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -0,0 +1,78 @@ +--TEST-- +Flexible heredoc and nowdoc testing with token_get_all +--SKIPIF-- + +--FILE-- + Date: Sun, 11 Mar 2018 20:31:58 +0000 Subject: [PATCH 28/54] Update test with some error cases --- .../tests/token_get_all_heredoc_nowdoc.phpt | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index f3154285bc725..d2399d528e844 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -12,7 +12,6 @@ function output(array $tokens) echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL; } } - } output(token_get_all(<<<'OUTER_END' @@ -44,6 +43,27 @@ output(token_get_all(<<<'OUTER_END' echo <<<'INNER_END' INNER_END; OUTER_END)); + +echo PHP_EOL; + +output(token_get_all(<<<'OUTER_END' + Date: Sun, 11 Mar 2018 20:47:10 +0000 Subject: [PATCH 29/54] Fix TOKEN_PARSE scanning --- Zend/zend_language_scanner.c | 237 +++++++++--------- Zend/zend_language_scanner.l | 1 + .../tests/token_get_all_heredoc_nowdoc.phpt | 17 ++ 3 files changed, 137 insertions(+), 118 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index f287d8c8d2a7c..5a3ab8f180c0e 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2577 "Zend/zend_language_scanner.l" +#line 2578 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2192,7 +2192,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2260 "Zend/zend_language_scanner.l" +#line 2261 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4648,6 +4648,7 @@ int start_line = CG(zend_lineno); zend_save_lexical_state(¤t_state); SCNG(heredoc_scan_ahead) = 1; + LANG_SCNG(on_event) = NULL; zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); @@ -4685,7 +4686,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4658 "Zend/zend_language_scanner.c" +#line 4659 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4709,7 +4710,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 4682 "Zend/zend_language_scanner.c" +#line 4683 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4722,7 +4723,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 4695 "Zend/zend_language_scanner.c" +#line 4696 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4741,7 +4742,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 4714 "Zend/zend_language_scanner.c" +#line 4715 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4754,7 +4755,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 4727 "Zend/zend_language_scanner.c" +#line 4728 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4767,7 +4768,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 4740 "Zend/zend_language_scanner.c" +#line 4741 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4780,7 +4781,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 4753 "Zend/zend_language_scanner.c" +#line 4754 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4817,7 +4818,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 4790 "Zend/zend_language_scanner.c" +#line 4791 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4842,7 +4843,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 4815 "Zend/zend_language_scanner.c" +#line 4816 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4888,7 +4889,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 4861 "Zend/zend_language_scanner.c" +#line 4862 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4949,7 +4950,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 4922 "Zend/zend_language_scanner.c" +#line 4923 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4968,7 +4969,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 4941 "Zend/zend_language_scanner.c" +#line 4942 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5023,7 +5024,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 4996 "Zend/zend_language_scanner.c" +#line 4997 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5036,7 +5037,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5009 "Zend/zend_language_scanner.c" +#line 5010 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5049,7 +5050,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5022 "Zend/zend_language_scanner.c" +#line 5023 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5062,7 +5063,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5035 "Zend/zend_language_scanner.c" +#line 5036 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5084,7 +5085,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5057 "Zend/zend_language_scanner.c" +#line 5058 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5180,7 +5181,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 5153 "Zend/zend_language_scanner.c" +#line 5154 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5214,7 +5215,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5187 "Zend/zend_language_scanner.c" +#line 5188 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5283,7 +5284,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 5256 "Zend/zend_language_scanner.c" +#line 5257 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5317,7 +5318,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 5290 "Zend/zend_language_scanner.c" +#line 5291 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5366,7 +5367,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5339 "Zend/zend_language_scanner.c" +#line 5340 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5427,7 +5428,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5400 "Zend/zend_language_scanner.c" +#line 5401 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5446,7 +5447,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 5419 "Zend/zend_language_scanner.c" +#line 5420 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5459,7 +5460,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5432 "Zend/zend_language_scanner.c" +#line 5433 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5472,7 +5473,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5445 "Zend/zend_language_scanner.c" +#line 5446 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5556,7 +5557,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5529 "Zend/zend_language_scanner.c" +#line 5530 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5606,7 +5607,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 5579 "Zend/zend_language_scanner.c" +#line 5580 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5637,7 +5638,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 5610 "Zend/zend_language_scanner.c" +#line 5611 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5650,7 +5651,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 5623 "Zend/zend_language_scanner.c" +#line 5624 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5687,7 +5688,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 5660 "Zend/zend_language_scanner.c" +#line 5661 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5700,7 +5701,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 5673 "Zend/zend_language_scanner.c" +#line 5674 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5713,7 +5714,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 5686 "Zend/zend_language_scanner.c" +#line 5687 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5751,7 +5752,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5724 "Zend/zend_language_scanner.c" +#line 5725 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5788,7 +5789,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5761 "Zend/zend_language_scanner.c" +#line 5762 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5820,7 +5821,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 5793 "Zend/zend_language_scanner.c" +#line 5794 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5844,7 +5845,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 5817 "Zend/zend_language_scanner.c" +#line 5818 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5893,7 +5894,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 5866 "Zend/zend_language_scanner.c" +#line 5867 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -5903,7 +5904,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5876 "Zend/zend_language_scanner.c" +#line 5877 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5916,7 +5917,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5889 "Zend/zend_language_scanner.c" +#line 5890 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5929,7 +5930,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 5902 "Zend/zend_language_scanner.c" +#line 5903 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5942,7 +5943,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 5915 "Zend/zend_language_scanner.c" +#line 5916 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5973,7 +5974,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 5946 "Zend/zend_language_scanner.c" +#line 5947 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5986,7 +5987,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 5959 "Zend/zend_language_scanner.c" +#line 5960 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6058,7 +6059,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6031 "Zend/zend_language_scanner.c" +#line 6032 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6083,7 +6084,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 6056 "Zend/zend_language_scanner.c" +#line 6057 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6124,7 +6125,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6097 "Zend/zend_language_scanner.c" +#line 6098 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6155,7 +6156,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 6128 "Zend/zend_language_scanner.c" +#line 6129 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6168,7 +6169,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 6141 "Zend/zend_language_scanner.c" +#line 6142 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6181,7 +6182,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 6154 "Zend/zend_language_scanner.c" +#line 6155 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6194,7 +6195,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 6167 "Zend/zend_language_scanner.c" +#line 6168 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6219,7 +6220,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 6192 "Zend/zend_language_scanner.c" +#line 6193 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6255,7 +6256,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 6228 "Zend/zend_language_scanner.c" +#line 6229 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6268,7 +6269,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6241 "Zend/zend_language_scanner.c" +#line 6242 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6281,7 +6282,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6254 "Zend/zend_language_scanner.c" +#line 6255 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6294,7 +6295,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6267 "Zend/zend_language_scanner.c" +#line 6268 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6313,7 +6314,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 6286 "Zend/zend_language_scanner.c" +#line 6287 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6365,7 +6366,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 6338 "Zend/zend_language_scanner.c" +#line 6339 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6395,7 +6396,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6368 "Zend/zend_language_scanner.c" +#line 6369 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6424,7 +6425,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6397 "Zend/zend_language_scanner.c" +#line 6398 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6437,7 +6438,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6410 "Zend/zend_language_scanner.c" +#line 6411 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6450,7 +6451,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 6423 "Zend/zend_language_scanner.c" +#line 6424 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6480,7 +6481,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 6453 "Zend/zend_language_scanner.c" +#line 6454 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6498,7 +6499,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6471 "Zend/zend_language_scanner.c" +#line 6472 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6570,7 +6571,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 6543 "Zend/zend_language_scanner.c" +#line 6544 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6587,7 +6588,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 6560 "Zend/zend_language_scanner.c" +#line 6561 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6610,7 +6611,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 6583 "Zend/zend_language_scanner.c" +#line 6584 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6620,7 +6621,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6593 "Zend/zend_language_scanner.c" +#line 6594 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6673,7 +6674,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2349 "Zend/zend_language_scanner.l" +#line 2350 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6714,7 +6715,7 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6687 "Zend/zend_language_scanner.c" +#line 6688 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6738,12 +6739,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2293 "Zend/zend_language_scanner.l" +#line 2294 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6716 "Zend/zend_language_scanner.c" +#line 6717 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6769,7 +6770,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6742 "Zend/zend_language_scanner.c" +#line 6743 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6780,20 +6781,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6753 "Zend/zend_language_scanner.c" +#line 6754 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2280 "Zend/zend_language_scanner.l" +#line 2281 "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 6766 "Zend/zend_language_scanner.c" +#line 6767 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6814,7 +6815,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6787 "Zend/zend_language_scanner.c" +#line 6788 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6839,7 +6840,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6812 "Zend/zend_language_scanner.c" +#line 6813 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6892,7 +6893,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2299 "Zend/zend_language_scanner.l" +#line 2300 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6941,18 +6942,18 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6914 "Zend/zend_language_scanner.c" +#line 6915 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2288 "Zend/zend_language_scanner.l" +#line 2289 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6925 "Zend/zend_language_scanner.c" +#line 6926 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -6996,7 +6997,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6969 "Zend/zend_language_scanner.c" +#line 6970 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7007,20 +7008,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6980 "Zend/zend_language_scanner.c" +#line 6981 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2280 "Zend/zend_language_scanner.l" +#line 2281 "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 6993 "Zend/zend_language_scanner.c" +#line 6994 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7041,7 +7042,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7014 "Zend/zend_language_scanner.c" +#line 7015 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7066,7 +7067,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7039 "Zend/zend_language_scanner.c" +#line 7040 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7115,7 +7116,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2391 "Zend/zend_language_scanner.l" +#line 2392 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7218,7 +7219,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7191 "Zend/zend_language_scanner.c" +#line 7192 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7262,7 +7263,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7235 "Zend/zend_language_scanner.c" +#line 7236 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7273,20 +7274,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7246 "Zend/zend_language_scanner.c" +#line 7247 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2280 "Zend/zend_language_scanner.l" +#line 2281 "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 7259 "Zend/zend_language_scanner.c" +#line 7260 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7307,7 +7308,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7280 "Zend/zend_language_scanner.c" +#line 7281 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7332,7 +7333,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7305 "Zend/zend_language_scanner.c" +#line 7306 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7396,7 +7397,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7369 "Zend/zend_language_scanner.c" +#line 7370 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7451,7 +7452,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7424 "Zend/zend_language_scanner.c" +#line 7425 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7540,7 +7541,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2577 "Zend/zend_language_scanner.l" +#line 2578 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7549,7 +7550,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7522 "Zend/zend_language_scanner.c" +#line 7523 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7563,7 +7564,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7536 "Zend/zend_language_scanner.c" +#line 7537 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7575,7 +7576,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7548 "Zend/zend_language_scanner.c" +#line 7549 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7626,7 +7627,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7599 "Zend/zend_language_scanner.c" +#line 7600 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7653,7 +7654,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7626 "Zend/zend_language_scanner.c" +#line 7627 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7664,7 +7665,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7637 "Zend/zend_language_scanner.c" +#line 7638 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7694,7 +7695,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7667 "Zend/zend_language_scanner.c" +#line 7668 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7711,7 +7712,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7684 "Zend/zend_language_scanner.c" +#line 7685 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7806,7 +7807,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7779 "Zend/zend_language_scanner.c" +#line 7780 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7831,7 +7832,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7804 "Zend/zend_language_scanner.c" +#line 7805 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7842,7 +7843,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7815 "Zend/zend_language_scanner.c" +#line 7816 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7879,7 +7880,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7852 "Zend/zend_language_scanner.c" +#line 7853 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7894,7 +7895,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2266 "Zend/zend_language_scanner.l" +#line 2267 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7907,7 +7908,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7880 "Zend/zend_language_scanner.c" +#line 7881 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7917,7 +7918,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2495 "Zend/zend_language_scanner.l" +#line 2496 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7998,9 +7999,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7971 "Zend/zend_language_scanner.c" +#line 7972 "Zend/zend_language_scanner.c" } -#line 2586 "Zend/zend_language_scanner.l" +#line 2587 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 1a5266a242110..137e51a072e1f 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2303,6 +2303,7 @@ skip_escape_conversion: zend_save_lexical_state(¤t_state); SCNG(heredoc_scan_ahead) = 1; + LANG_SCNG(on_event) = NULL; zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index d2399d528e844..9fbb1e966ef89 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -64,6 +64,13 @@ OUTER_END echo PHP_EOL; +output(token_get_all(<<<'OUTER_END' + Date: Mon, 12 Mar 2018 13:15:53 +0000 Subject: [PATCH 30/54] Partially fix token_get_all() output --- Zend/zend_globals.h | 1 + Zend/zend_language_scanner.c | 720 +++++++++--------- Zend/zend_language_scanner.l | 24 +- .../tests/token_get_all_heredoc_nowdoc.phpt | 60 +- ext/tokenizer/tokenizer.c | 4 + 5 files changed, 434 insertions(+), 375 deletions(-) diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 01b5583f0a18b..8cab71c5a9ebc 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -274,6 +274,7 @@ struct _zend_php_scanner_globals { zend_stack state_stack; zend_ptr_stack heredoc_label_stack; zend_bool heredoc_scan_ahead; + zend_bool tokenizer_scan; int heredoc_indentation; zend_bool heredoc_indentation_uses_spaces; diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 5a3ab8f180c0e..b537f6aaf73ab 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1206,7 +1206,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1178 "Zend/zend_language_scanner.c" +#line 1188 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2578 "Zend/zend_language_scanner.l" +#line 2592 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1423,7 +1423,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 1395 "Zend/zend_language_scanner.c" +#line 1405 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); ++YYCURSOR; @@ -1435,12 +1435,12 @@ int start_line = CG(zend_lineno); } YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" +#line 1367 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 1412 "Zend/zend_language_scanner.c" +#line 1422 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); yych = *++YYCURSOR; @@ -1448,17 +1448,17 @@ int start_line = CG(zend_lineno); yy9: YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1642 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 1424 "Zend/zend_language_scanner.c" +#line 1434 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); ++YYCURSOR; YYDEBUG(11, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2102 "Zend/zend_language_scanner.l" +#line 2112 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -1499,13 +1499,13 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 1471 "Zend/zend_language_scanner.c" +#line 1481 "Zend/zend_language_scanner.c" yy12: YYDEBUG(12, *YYCURSOR); ++YYCURSOR; YYDEBUG(13, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1962 "Zend/zend_language_scanner.l" +#line 1972 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -1534,7 +1534,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 1506 "Zend/zend_language_scanner.c" +#line 1516 "Zend/zend_language_scanner.c" yy14: YYDEBUG(14, *YYCURSOR); yych = *++YYCURSOR; @@ -1565,7 +1565,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2033 "Zend/zend_language_scanner.l" +#line 2043 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -1633,7 +1633,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 1605 "Zend/zend_language_scanner.c" +#line 1615 "Zend/zend_language_scanner.c" yy19: YYDEBUG(19, *YYCURSOR); yyaccept = 0; @@ -1757,7 +1757,7 @@ int start_line = CG(zend_lineno); yy27: YYDEBUG(27, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1712 "Zend/zend_language_scanner.l" +#line 1722 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -1800,7 +1800,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 1772 "Zend/zend_language_scanner.c" +#line 1782 "Zend/zend_language_scanner.c" yy28: YYDEBUG(28, *YYCURSOR); yyaccept = 1; @@ -1882,12 +1882,12 @@ int start_line = CG(zend_lineno); yy36: YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" +#line 1966 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 1859 "Zend/zend_language_scanner.c" +#line 1869 "Zend/zend_language_scanner.c" yy37: YYDEBUG(37, *YYCURSOR); yyaccept = 2; @@ -2172,11 +2172,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2148 "Zend/zend_language_scanner.c" +#line 2158 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -2192,23 +2192,23 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2261 "Zend/zend_language_scanner.l" +#line 2271 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 2169 "Zend/zend_language_scanner.c" +#line 2179 "Zend/zend_language_scanner.c" yy64: YYDEBUG(64, *YYCURSOR); ++YYCURSOR; YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1647 "Zend/zend_language_scanner.l" +#line 1657 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2180 "Zend/zend_language_scanner.c" +#line 2190 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); yych = *++YYCURSOR; @@ -2220,7 +2220,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" +#line 1669 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2228,7 +2228,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2200 "Zend/zend_language_scanner.c" +#line 2210 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2236,11 +2236,11 @@ int start_line = CG(zend_lineno); yy70: YYDEBUG(70, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" +#line 1556 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 2212 "Zend/zend_language_scanner.c" +#line 2222 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); ++YYCURSOR; @@ -2265,41 +2265,41 @@ int start_line = CG(zend_lineno); yy73: YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2242 "Zend/zend_language_scanner.c" +#line 2252 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1590 "Zend/zend_language_scanner.l" +#line 1600 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 2252 "Zend/zend_language_scanner.c" +#line 2262 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1618 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 2262 "Zend/zend_language_scanner.c" +#line 2272 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); ++YYCURSOR; YYDEBUG(79, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1612 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 2272 "Zend/zend_language_scanner.c" +#line 2282 "Zend/zend_language_scanner.c" yy80: YYDEBUG(80, *YYCURSOR); ++YYCURSOR; @@ -2429,72 +2429,72 @@ int start_line = CG(zend_lineno); if (yych == '=') goto yy205; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" +#line 1584 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 2406 "Zend/zend_language_scanner.c" +#line 2416 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 2416 "Zend/zend_language_scanner.c" +#line 2426 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1536 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 2426 "Zend/zend_language_scanner.c" +#line 2436 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); ++YYCURSOR; YYDEBUG(99, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 2436 "Zend/zend_language_scanner.c" +#line 2446 "Zend/zend_language_scanner.c" yy100: YYDEBUG(100, *YYCURSOR); ++YYCURSOR; YYDEBUG(101, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" +#line 1540 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 2446 "Zend/zend_language_scanner.c" +#line 2456 "Zend/zend_language_scanner.c" yy102: YYDEBUG(102, *YYCURSOR); ++YYCURSOR; YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 2456 "Zend/zend_language_scanner.c" +#line 2466 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 2467 "Zend/zend_language_scanner.c" +#line 2477 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2517,7 +2517,7 @@ int start_line = CG(zend_lineno); yy109: YYDEBUG(109, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1804 "Zend/zend_language_scanner.l" +#line 1814 "Zend/zend_language_scanner.l" { const char *end; @@ -2526,17 +2526,17 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 2499 "Zend/zend_language_scanner.c" +#line 2509 "Zend/zend_language_scanner.c" yy110: YYDEBUG(110, *YYCURSOR); ++YYCURSOR; YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1586 "Zend/zend_language_scanner.l" +#line 1596 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 2509 "Zend/zend_language_scanner.c" +#line 2519 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 4; @@ -2545,7 +2545,7 @@ int start_line = CG(zend_lineno); yy113: YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1991 "Zend/zend_language_scanner.l" +#line 2001 "Zend/zend_language_scanner.l" { int doc_com; @@ -2578,17 +2578,17 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2551 "Zend/zend_language_scanner.c" +#line 2561 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); ++YYCURSOR; YYDEBUG(115, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1582 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 2561 "Zend/zend_language_scanner.c" +#line 2571 "Zend/zend_language_scanner.c" yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; @@ -2620,11 +2620,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1388 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 2597 "Zend/zend_language_scanner.c" +#line 2607 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 5; @@ -2635,22 +2635,22 @@ int start_line = CG(zend_lineno); yy122: YYDEBUG(122, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1634 "Zend/zend_language_scanner.l" +#line 1644 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 2612 "Zend/zend_language_scanner.c" +#line 2622 "Zend/zend_language_scanner.c" yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; if (yych == '>') goto yy223; YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 2623 "Zend/zend_language_scanner.c" +#line 2633 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); ++YYCURSOR; @@ -2661,42 +2661,42 @@ int start_line = CG(zend_lineno); if (yych == '=') goto yy225; YYDEBUG(127, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1552 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 2638 "Zend/zend_language_scanner.c" +#line 2648 "Zend/zend_language_scanner.c" yy128: YYDEBUG(128, *YYCURSOR); ++YYCURSOR; YYDEBUG(129, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" +#line 1520 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 2648 "Zend/zend_language_scanner.c" +#line 2658 "Zend/zend_language_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); ++YYCURSOR; YYDEBUG(131, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1568 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 2658 "Zend/zend_language_scanner.c" +#line 2668 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; if (yych == '=') goto yy227; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1638 "Zend/zend_language_scanner.l" +#line 1648 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 2669 "Zend/zend_language_scanner.c" +#line 2679 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; @@ -2705,7 +2705,7 @@ int start_line = CG(zend_lineno); yy135: YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2024 "Zend/zend_language_scanner.l" +#line 2034 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -2713,17 +2713,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 2686 "Zend/zend_language_scanner.c" +#line 2696 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); ++YYCURSOR; YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 2696 "Zend/zend_language_scanner.c" +#line 2706 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; @@ -2750,11 +2750,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(142, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 2727 "Zend/zend_language_scanner.c" +#line 2737 "Zend/zend_language_scanner.c" yy143: YYDEBUG(143, *YYCURSOR); yych = *++YYCURSOR; @@ -2840,11 +2840,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(151, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" +#line 1270 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 2817 "Zend/zend_language_scanner.c" +#line 2827 "Zend/zend_language_scanner.c" yy152: YYDEBUG(152, *YYCURSOR); yych = *++YYCURSOR; @@ -2929,11 +2929,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(164, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 2906 "Zend/zend_language_scanner.c" +#line 2916 "Zend/zend_language_scanner.c" yy165: YYDEBUG(165, *YYCURSOR); yych = *++YYCURSOR; @@ -2994,11 +2994,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1622 "Zend/zend_language_scanner.l" +#line 1632 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 2971 "Zend/zend_language_scanner.c" +#line 2981 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3112,11 +3112,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1610 "Zend/zend_language_scanner.l" +#line 1620 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3089 "Zend/zend_language_scanner.c" +#line 3099 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); yych = *++YYCURSOR; @@ -3144,31 +3144,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1606 "Zend/zend_language_scanner.l" +#line 1616 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3121 "Zend/zend_language_scanner.c" +#line 3131 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); ++YYCURSOR; YYDEBUG(192, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1614 "Zend/zend_language_scanner.l" +#line 1624 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3131 "Zend/zend_language_scanner.c" +#line 3141 "Zend/zend_language_scanner.c" yy193: YYDEBUG(193, *YYCURSOR); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1548 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3141 "Zend/zend_language_scanner.c" +#line 3151 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3234,21 +3234,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1578 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3211 "Zend/zend_language_scanner.c" +#line 3221 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 3221 "Zend/zend_language_scanner.c" +#line 3231 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3272,7 +3272,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1684 "Zend/zend_language_scanner.l" +#line 1694 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3300,7 +3300,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3273 "Zend/zend_language_scanner.c" +#line 3283 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3326,7 +3326,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(218, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" +#line 1765 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3354,7 +3354,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3327 "Zend/zend_language_scanner.c" +#line 3337 "Zend/zend_language_scanner.c" yy219: YYDEBUG(219, *YYCURSOR); ++YYCURSOR; @@ -3389,41 +3389,41 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(222, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1594 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3366 "Zend/zend_language_scanner.c" +#line 3376 "Zend/zend_language_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); ++YYCURSOR; YYDEBUG(224, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" +#line 1560 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3376 "Zend/zend_language_scanner.c" +#line 3386 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1544 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3386 "Zend/zend_language_scanner.c" +#line 3396 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); ++YYCURSOR; YYDEBUG(228, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1598 "Zend/zend_language_scanner.l" +#line 1608 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3396 "Zend/zend_language_scanner.c" +#line 3406 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); ++YYCURSOR; @@ -3447,11 +3447,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(233, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1626 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 3424 "Zend/zend_language_scanner.c" +#line 3434 "Zend/zend_language_scanner.c" yy234: YYDEBUG(234, *YYCURSOR); yych = *++YYCURSOR; @@ -3532,11 +3532,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1194 "Zend/zend_language_scanner.l" +#line 1204 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 3509 "Zend/zend_language_scanner.c" +#line 3519 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); yych = *++YYCURSOR; @@ -3618,11 +3618,11 @@ int start_line = CG(zend_lineno); yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" +#line 1274 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 3595 "Zend/zend_language_scanner.c" +#line 3605 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -3691,11 +3691,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(268, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 3668 "Zend/zend_language_scanner.c" +#line 3678 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; @@ -3768,11 +3768,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" +#line 1230 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 3745 "Zend/zend_language_scanner.c" +#line 3755 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; @@ -3787,11 +3787,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(282, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" +#line 1468 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 3764 "Zend/zend_language_scanner.c" +#line 3774 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; @@ -3800,11 +3800,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(284, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1412 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 3777 "Zend/zend_language_scanner.c" +#line 3787 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; @@ -3819,11 +3819,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(287, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1630 "Zend/zend_language_scanner.l" +#line 1640 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3796 "Zend/zend_language_scanner.c" +#line 3806 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; @@ -4037,11 +4037,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 4014 "Zend/zend_language_scanner.c" +#line 4024 "Zend/zend_language_scanner.c" yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; @@ -4092,11 +4092,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(327, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1324 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 4069 "Zend/zend_language_scanner.c" +#line 4079 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; @@ -4120,11 +4120,11 @@ int start_line = CG(zend_lineno); yy329: YYDEBUG(329, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 4097 "Zend/zend_language_scanner.c" +#line 4107 "Zend/zend_language_scanner.c" yy330: YYDEBUG(330, *YYCURSOR); yych = *++YYCURSOR; @@ -4169,11 +4169,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(337, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 4146 "Zend/zend_language_scanner.c" +#line 4156 "Zend/zend_language_scanner.c" yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; @@ -4182,11 +4182,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1190 "Zend/zend_language_scanner.l" +#line 1200 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 4159 "Zend/zend_language_scanner.c" +#line 4169 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4225,11 +4225,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(346, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 4202 "Zend/zend_language_scanner.c" +#line 4212 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; @@ -4278,11 +4278,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(353, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1524 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 4255 "Zend/zend_language_scanner.c" +#line 4265 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; @@ -4469,11 +4469,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(385, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1416 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4446 "Zend/zend_language_scanner.c" +#line 4456 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; @@ -4570,7 +4570,7 @@ int start_line = CG(zend_lineno); yy397: YYDEBUG(397, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2144 "Zend/zend_language_scanner.l" +#line 2154 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -4627,7 +4627,7 @@ int start_line = CG(zend_lineno); YYCTYPE *end = YYCURSOR + heredoc_label->length; if (!IS_LABEL_START(*end)) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -4686,7 +4686,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4659 "Zend/zend_language_scanner.c" +#line 4669 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4706,11 +4706,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(401, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 4683 "Zend/zend_language_scanner.c" +#line 4693 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4719,11 +4719,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(403, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" +#line 1322 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 4696 "Zend/zend_language_scanner.c" +#line 4706 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4738,11 +4738,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(406, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" +#line 1234 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 4715 "Zend/zend_language_scanner.c" +#line 4725 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4751,11 +4751,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" +#line 1342 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 4728 "Zend/zend_language_scanner.c" +#line 4738 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4764,11 +4764,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(410, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1408 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 4741 "Zend/zend_language_scanner.c" +#line 4751 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4777,11 +4777,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(412, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1212 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 4754 "Zend/zend_language_scanner.c" +#line 4764 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4814,11 +4814,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(418, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 4791 "Zend/zend_language_scanner.c" +#line 4801 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4839,11 +4839,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(422, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 4816 "Zend/zend_language_scanner.c" +#line 4826 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4885,11 +4885,11 @@ int start_line = CG(zend_lineno); yy427: YYDEBUG(427, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1500 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 4862 "Zend/zend_language_scanner.c" +#line 4872 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4946,11 +4946,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1480 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 4923 "Zend/zend_language_scanner.c" +#line 4933 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4965,11 +4965,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(440, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" +#line 1338 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 4942 "Zend/zend_language_scanner.c" +#line 4952 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5020,11 +5020,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(449, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 4997 "Zend/zend_language_scanner.c" +#line 5007 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5033,11 +5033,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(451, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" +#line 1350 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5010 "Zend/zend_language_scanner.c" +#line 5020 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5046,11 +5046,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(453, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 5023 "Zend/zend_language_scanner.c" +#line 5033 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5059,11 +5059,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(455, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5036 "Zend/zend_language_scanner.c" +#line 5046 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5081,11 +5081,11 @@ int start_line = CG(zend_lineno); yy457: YYDEBUG(457, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" +#line 1226 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5058 "Zend/zend_language_scanner.c" +#line 5068 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5177,11 +5177,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 5154 "Zend/zend_language_scanner.c" +#line 5164 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5211,11 +5211,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(479, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1420 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5188 "Zend/zend_language_scanner.c" +#line 5198 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5280,11 +5280,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 5257 "Zend/zend_language_scanner.c" +#line 5267 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5314,11 +5314,11 @@ int start_line = CG(zend_lineno); yy493: YYDEBUG(493, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" +#line 1278 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 5291 "Zend/zend_language_scanner.c" +#line 5301 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5363,11 +5363,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(501, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5340 "Zend/zend_language_scanner.c" +#line 5350 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5424,11 +5424,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5401 "Zend/zend_language_scanner.c" +#line 5411 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5443,11 +5443,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1216 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 5420 "Zend/zend_language_scanner.c" +#line 5430 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5456,11 +5456,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(516, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1492 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5433 "Zend/zend_language_scanner.c" +#line 5443 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5469,11 +5469,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5446 "Zend/zend_language_scanner.c" +#line 5456 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5553,11 +5553,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(531, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1428 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5530 "Zend/zend_language_scanner.c" +#line 5540 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5603,11 +5603,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 5580 "Zend/zend_language_scanner.c" +#line 5590 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5634,11 +5634,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(544, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" +#line 1290 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 5611 "Zend/zend_language_scanner.c" +#line 5621 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5647,11 +5647,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" +#line 1318 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 5624 "Zend/zend_language_scanner.c" +#line 5634 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5684,11 +5684,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(552, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" +#line 1354 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 5661 "Zend/zend_language_scanner.c" +#line 5671 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5697,11 +5697,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(554, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" +#line 1238 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 5674 "Zend/zend_language_scanner.c" +#line 5684 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5710,11 +5710,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(556, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 5687 "Zend/zend_language_scanner.c" +#line 5697 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5748,11 +5748,11 @@ int start_line = CG(zend_lineno); yy560: YYDEBUG(560, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5725 "Zend/zend_language_scanner.c" +#line 5735 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5785,11 +5785,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(566, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" +#line 1504 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5762 "Zend/zend_language_scanner.c" +#line 5772 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5817,11 +5817,11 @@ int start_line = CG(zend_lineno); yy569: YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1456 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 5794 "Zend/zend_language_scanner.c" +#line 5804 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5841,11 +5841,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(573, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1847 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 5818 "Zend/zend_language_scanner.c" +#line 5828 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5890,21 +5890,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(582, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1424 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 5867 "Zend/zend_language_scanner.c" +#line 5877 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5877 "Zend/zend_language_scanner.c" +#line 5887 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5913,11 +5913,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1496 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5890 "Zend/zend_language_scanner.c" +#line 5900 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5926,11 +5926,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(588, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1532 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 5903 "Zend/zend_language_scanner.c" +#line 5913 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5939,11 +5939,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(590, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" +#line 1326 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 5916 "Zend/zend_language_scanner.c" +#line 5926 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5970,11 +5970,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 5947 "Zend/zend_language_scanner.c" +#line 5957 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5983,11 +5983,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1198 "Zend/zend_language_scanner.l" +#line 1208 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 5960 "Zend/zend_language_scanner.c" +#line 5970 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6055,11 +6055,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(609, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1833 "Zend/zend_language_scanner.l" +#line 1843 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 6032 "Zend/zend_language_scanner.c" +#line 6042 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6080,11 +6080,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 1839 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 6057 "Zend/zend_language_scanner.c" +#line 6067 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6121,11 +6121,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(620, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6098 "Zend/zend_language_scanner.c" +#line 6108 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6152,11 +6152,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(625, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 6129 "Zend/zend_language_scanner.c" +#line 6139 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6165,11 +6165,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(627, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1336 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 6142 "Zend/zend_language_scanner.c" +#line 6152 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6178,11 +6178,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(629, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 6155 "Zend/zend_language_scanner.c" +#line 6165 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6191,11 +6191,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(631, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 6168 "Zend/zend_language_scanner.c" +#line 6178 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6216,11 +6216,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(635, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1813 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 6193 "Zend/zend_language_scanner.c" +#line 6203 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6252,11 +6252,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1817 "Zend/zend_language_scanner.l" +#line 1827 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 6229 "Zend/zend_language_scanner.c" +#line 6239 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6265,11 +6265,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(643, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" +#line 1294 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 6242 "Zend/zend_language_scanner.c" +#line 6252 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6278,11 +6278,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6255 "Zend/zend_language_scanner.c" +#line 6265 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6291,11 +6291,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" +#line 1358 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6268 "Zend/zend_language_scanner.c" +#line 6278 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6310,11 +6310,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 6287 "Zend/zend_language_scanner.c" +#line 6297 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6362,11 +6362,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1825 "Zend/zend_language_scanner.l" +#line 1835 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 6339 "Zend/zend_language_scanner.c" +#line 6349 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6390,13 +6390,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1220 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6369 "Zend/zend_language_scanner.c" +#line 6379 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6421,11 +6421,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(666, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1452 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6398 "Zend/zend_language_scanner.c" +#line 6408 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6434,11 +6434,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1460 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6411 "Zend/zend_language_scanner.c" +#line 6421 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6447,11 +6447,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1821 "Zend/zend_language_scanner.l" +#line 1831 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 6424 "Zend/zend_language_scanner.c" +#line 6434 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6477,11 +6477,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1841 "Zend/zend_language_scanner.l" +#line 1851 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 6454 "Zend/zend_language_scanner.c" +#line 6464 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6495,11 +6495,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6472 "Zend/zend_language_scanner.c" +#line 6482 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6565,13 +6565,13 @@ int start_line = CG(zend_lineno); yy682: YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 6544 "Zend/zend_language_scanner.c" +#line 6554 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6583,12 +6583,12 @@ int start_line = CG(zend_lineno); } YYDEBUG(685, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" +#line 1367 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 6561 "Zend/zend_language_scanner.c" +#line 6571 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6605,23 +6605,23 @@ int start_line = CG(zend_lineno); } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { yy_pop_state(); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 6584 "Zend/zend_language_scanner.c" +#line 6594 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1372 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6594 "Zend/zend_language_scanner.c" +#line 6604 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6674,7 +6674,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2350 "Zend/zend_language_scanner.l" +#line 2360 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6715,7 +6715,7 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6688 "Zend/zend_language_scanner.c" +#line 6698 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6739,12 +6739,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2294 "Zend/zend_language_scanner.l" +#line 2304 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6717 "Zend/zend_language_scanner.c" +#line 6727 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6765,36 +6765,36 @@ int start_line = CG(zend_lineno); yy702: YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6743 "Zend/zend_language_scanner.c" +#line 6753 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6754 "Zend/zend_language_scanner.c" +#line 6764 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2281 "Zend/zend_language_scanner.l" +#line 2291 "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 6767 "Zend/zend_language_scanner.c" +#line 6777 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6808,14 +6808,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(710, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" +#line 1936 "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); } -#line 6788 "Zend/zend_language_scanner.c" +#line 6798 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6833,14 +6833,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1927 "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); } -#line 6813 "Zend/zend_language_scanner.c" +#line 6823 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6893,7 +6893,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2300 "Zend/zend_language_scanner.l" +#line 2310 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6942,18 +6942,18 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6915 "Zend/zend_language_scanner.c" +#line 6925 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2289 "Zend/zend_language_scanner.l" +#line 2299 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6926 "Zend/zend_language_scanner.c" +#line 6936 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -6992,36 +6992,36 @@ int start_line = CG(zend_lineno); yy724: YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6970 "Zend/zend_language_scanner.c" +#line 6980 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; YYDEBUG(726, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6981 "Zend/zend_language_scanner.c" +#line 6991 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2281 "Zend/zend_language_scanner.l" +#line 2291 "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 6994 "Zend/zend_language_scanner.c" +#line 7004 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7035,14 +7035,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" +#line 1936 "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); } -#line 7015 "Zend/zend_language_scanner.c" +#line 7025 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7060,14 +7060,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1927 "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); } -#line 7040 "Zend/zend_language_scanner.c" +#line 7050 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7116,7 +7116,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2392 "Zend/zend_language_scanner.l" +#line 2402 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7159,7 +7159,7 @@ int start_line = CG(zend_lineno); continue; } - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7173,7 +7173,7 @@ int start_line = CG(zend_lineno); if (SCNG(heredoc_scan_ahead)) { SCNG(heredoc_indentation) = indentation; SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { + } else if (!SCNG(tokenizer_scan)) { CG(increment_lineno) = 1; } @@ -7209,17 +7209,19 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!SCNG(heredoc_scan_ahead)) { + if (SCNG(tokenizer_scan) + || strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7192 "Zend/zend_language_scanner.c" +#line 7204 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7258,36 +7260,36 @@ int start_line = CG(zend_lineno); yy744: YYDEBUG(744, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7236 "Zend/zend_language_scanner.c" +#line 7248 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7247 "Zend/zend_language_scanner.c" +#line 7259 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2281 "Zend/zend_language_scanner.l" +#line 2291 "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 7260 "Zend/zend_language_scanner.c" +#line 7272 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7301,14 +7303,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" +#line 1936 "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); } -#line 7281 "Zend/zend_language_scanner.c" +#line 7293 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7326,14 +7328,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1917 "Zend/zend_language_scanner.l" +#line 1927 "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); } -#line 7306 "Zend/zend_language_scanner.c" +#line 7318 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7390,14 +7392,14 @@ int start_line = CG(zend_lineno); yy759: YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" +#line 1687 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7370 "Zend/zend_language_scanner.c" +#line 7382 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7444,7 +7446,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" +#line 1678 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7452,7 +7454,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7425 "Zend/zend_language_scanner.c" +#line 7437 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7541,7 +7543,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2578 "Zend/zend_language_scanner.l" +#line 2592 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7550,13 +7552,13 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7523 "Zend/zend_language_scanner.c" +#line 7535 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1948 "Zend/zend_language_scanner.l" +#line 1958 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7564,19 +7566,19 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7537 "Zend/zend_language_scanner.c" +#line 7549 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; yy773: YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1953 "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 7549 "Zend/zend_language_scanner.c" +#line 7561 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7611,7 +7613,7 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1783 "Zend/zend_language_scanner.l" +#line 1793 "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; @@ -7627,7 +7629,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7600 "Zend/zend_language_scanner.c" +#line 7612 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7649,23 +7651,23 @@ int start_line = CG(zend_lineno); } YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" +#line 1966 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7627 "Zend/zend_language_scanner.c" +#line 7639 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1938 "Zend/zend_language_scanner.l" +#line 1948 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7638 "Zend/zend_language_scanner.c" +#line 7650 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7690,12 +7692,12 @@ int start_line = CG(zend_lineno); yy786: YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7668 "Zend/zend_language_scanner.c" +#line 7680 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7707,12 +7709,12 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1799 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7685 "Zend/zend_language_scanner.c" +#line 7697 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7762,7 +7764,7 @@ int start_line = CG(zend_lineno); yy800: YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1868 "Zend/zend_language_scanner.l" +#line 1878 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7807,7 +7809,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7780 "Zend/zend_language_scanner.c" +#line 7792 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7823,7 +7825,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1869 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -7832,18 +7834,18 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7805 "Zend/zend_language_scanner.c" +#line 7817 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 1856 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7816 "Zend/zend_language_scanner.c" +#line 7828 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7874,13 +7876,13 @@ int start_line = CG(zend_lineno); yy811: YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1852 "Zend/zend_language_scanner.l" +#line 1862 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7853 "Zend/zend_language_scanner.c" +#line 7865 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7895,7 +7897,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2267 "Zend/zend_language_scanner.l" +#line 2277 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7908,7 +7910,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7881 "Zend/zend_language_scanner.c" +#line 7893 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7918,7 +7920,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2496 "Zend/zend_language_scanner.l" +#line 2508 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7962,7 +7964,7 @@ int start_line = CG(zend_lineno); continue; } - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7993,15 +7995,17 @@ int start_line = CG(zend_lineno); if (spacing != -1) { zend_copy_value(zendlval, yytext, yyleng - indentation); - strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + if (!SCNG(tokenizer_scan)) { + strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + } } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7972 "Zend/zend_language_scanner.c" +#line 7986 "Zend/zend_language_scanner.c" } -#line 2587 "Zend/zend_language_scanner.l" +#line 2601 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 137e51a072e1f..9e9176f5c4f0f 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2282,7 +2282,7 @@ skip_escape_conversion: YYCTYPE *end = YYCURSOR + heredoc_label->length; if (!IS_LABEL_START(*end)) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2523,7 +2523,7 @@ double_quotes_scan_done: continue; } - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2537,7 +2537,7 @@ double_quotes_scan_done: if (SCNG(heredoc_scan_ahead)) { SCNG(heredoc_indentation) = indentation; SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { + } else if (!SCNG(tokenizer_scan)) { CG(increment_lineno) = 1; } @@ -2573,12 +2573,14 @@ heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!SCNG(heredoc_scan_ahead)) { + if (SCNG(tokenizer_scan) + || strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); @@ -2628,7 +2630,7 @@ heredoc_scan_done: continue; } - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2659,7 +2661,9 @@ nowdoc_scan_done: if (spacing != -1) { zend_copy_value(zendlval, yytext, yyleng - indentation); - strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + if (!SCNG(tokenizer_scan)) { + strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + } } HANDLE_NEWLINES(yytext, yyleng - newline); diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index 9fbb1e966ef89..a0dea49760670 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -20,7 +20,7 @@ echo << Date: Mon, 12 Mar 2018 16:02:38 +0000 Subject: [PATCH 31/54] Partially undo last commit --- Zend/zend_globals.h | 1 - Zend/zend_language_scanner.c | 76 +++++++++++++++++------------------- Zend/zend_language_scanner.l | 24 +++++------- ext/tokenizer/tokenizer.c | 4 -- 4 files changed, 46 insertions(+), 59 deletions(-) diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 8cab71c5a9ebc..01b5583f0a18b 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -274,7 +274,6 @@ struct _zend_php_scanner_globals { zend_stack state_stack; zend_ptr_stack heredoc_label_stack; zend_bool heredoc_scan_ahead; - zend_bool tokenizer_scan; int heredoc_indentation; zend_bool heredoc_indentation_uses_spaces; diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index b537f6aaf73ab..98e9d0a2f9138 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2592 "Zend/zend_language_scanner.l" +#line 2588 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -4627,7 +4627,7 @@ int start_line = CG(zend_lineno); YYCTYPE *end = YYCURSOR + heredoc_label->length; if (!IS_LABEL_START(*end)) { - if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7159,7 +7159,7 @@ int start_line = CG(zend_lineno); continue; } - if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7173,7 +7173,7 @@ int start_line = CG(zend_lineno); if (SCNG(heredoc_scan_ahead)) { SCNG(heredoc_indentation) = indentation; SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else if (!SCNG(tokenizer_scan)) { + } else { CG(increment_lineno) = 1; } @@ -7209,19 +7209,17 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead)) { - if (SCNG(tokenizer_scan) - || strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); - } + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7204 "Zend/zend_language_scanner.c" +#line 7202 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7265,7 +7263,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7248 "Zend/zend_language_scanner.c" +#line 7246 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7276,7 +7274,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7259 "Zend/zend_language_scanner.c" +#line 7257 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; @@ -7289,7 +7287,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7272 "Zend/zend_language_scanner.c" +#line 7270 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7310,7 +7308,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7293 "Zend/zend_language_scanner.c" +#line 7291 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7335,7 +7333,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7318 "Zend/zend_language_scanner.c" +#line 7316 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7399,7 +7397,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7382 "Zend/zend_language_scanner.c" +#line 7380 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7454,7 +7452,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7437 "Zend/zend_language_scanner.c" +#line 7435 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7543,7 +7541,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2592 "Zend/zend_language_scanner.l" +#line 2588 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7552,7 +7550,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7535 "Zend/zend_language_scanner.c" +#line 7533 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7566,7 +7564,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7549 "Zend/zend_language_scanner.c" +#line 7547 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7578,7 +7576,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7561 "Zend/zend_language_scanner.c" +#line 7559 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7629,7 +7627,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7612 "Zend/zend_language_scanner.c" +#line 7610 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7656,7 +7654,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7639 "Zend/zend_language_scanner.c" +#line 7637 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7667,7 +7665,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7650 "Zend/zend_language_scanner.c" +#line 7648 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7697,7 +7695,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7680 "Zend/zend_language_scanner.c" +#line 7678 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7714,7 +7712,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7697 "Zend/zend_language_scanner.c" +#line 7695 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7809,7 +7807,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7792 "Zend/zend_language_scanner.c" +#line 7790 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7834,7 +7832,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7817 "Zend/zend_language_scanner.c" +#line 7815 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7845,7 +7843,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7828 "Zend/zend_language_scanner.c" +#line 7826 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7882,7 +7880,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7865 "Zend/zend_language_scanner.c" +#line 7863 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7910,7 +7908,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7893 "Zend/zend_language_scanner.c" +#line 7891 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7920,7 +7918,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2508 "Zend/zend_language_scanner.l" +#line 2506 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7964,7 +7962,7 @@ int start_line = CG(zend_lineno); continue; } - if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -7995,17 +7993,15 @@ int start_line = CG(zend_lineno); if (spacing != -1) { zend_copy_value(zendlval, yytext, yyleng - indentation); - if (!SCNG(tokenizer_scan)) { - strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); - } + strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7986 "Zend/zend_language_scanner.c" +#line 7982 "Zend/zend_language_scanner.c" } -#line 2601 "Zend/zend_language_scanner.l" +#line 2597 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 9e9176f5c4f0f..137e51a072e1f 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2282,7 +2282,7 @@ skip_escape_conversion: YYCTYPE *end = YYCURSOR + heredoc_label->length; if (!IS_LABEL_START(*end)) { - if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2523,7 +2523,7 @@ double_quotes_scan_done: continue; } - if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2537,7 +2537,7 @@ double_quotes_scan_done: if (SCNG(heredoc_scan_ahead)) { SCNG(heredoc_indentation) = indentation; SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else if (!SCNG(tokenizer_scan)) { + } else { CG(increment_lineno) = 1; } @@ -2573,14 +2573,12 @@ heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead)) { - if (SCNG(tokenizer_scan) - || strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); - } + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); @@ -2630,7 +2628,7 @@ heredoc_scan_done: continue; } - if (!SCNG(tokenizer_scan) && spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } @@ -2661,9 +2659,7 @@ nowdoc_scan_done: if (spacing != -1) { zend_copy_value(zendlval, yytext, yyleng - indentation); - if (!SCNG(tokenizer_scan)) { - strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); - } + strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); } HANDLE_NEWLINES(yytext, yyleng - newline); diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index df5ffaf56ebaf..ef9d1362b757b 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -268,8 +268,6 @@ PHP_FUNCTION(token_get_all) Z_PARAM_LONG(flags) ZEND_PARSE_PARAMETERS_END(); - LANG_SCNG(tokenizer_scan) = 1; - if (flags & TOKEN_PARSE) { success = tokenize_parse(return_value, source); } else { @@ -278,8 +276,6 @@ PHP_FUNCTION(token_get_all) zend_clear_exception(); } - LANG_SCNG(tokenizer_scan) = 0; - if (!success) RETURN_FALSE; } /* }}} */ From 47667dc1665bae7bfc6d517de0e1f0dde6664c8f Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 12 Mar 2018 16:32:58 +0000 Subject: [PATCH 32/54] Don't return early on exception --- Zend/zend_language_scanner.c | 73 ++++++++++--------- Zend/zend_language_scanner.l | 21 +++--- .../tests/token_get_all_heredoc_nowdoc.phpt | 10 +-- 3 files changed, 50 insertions(+), 54 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 98e9d0a2f9138..12c5baf2943c6 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2588 "Zend/zend_language_scanner.l" +#line 2589 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7161,7 +7161,6 @@ int start_line = CG(zend_lineno); if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } /* newline before label will be subtracted from returned text, but @@ -7206,20 +7205,23 @@ int start_line = CG(zend_lineno); } heredoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!EG(exception)) { + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7202 "Zend/zend_language_scanner.c" +#line 7204 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7263,7 +7265,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7246 "Zend/zend_language_scanner.c" +#line 7248 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7274,7 +7276,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7257 "Zend/zend_language_scanner.c" +#line 7259 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; @@ -7287,7 +7289,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7270 "Zend/zend_language_scanner.c" +#line 7272 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7308,7 +7310,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7291 "Zend/zend_language_scanner.c" +#line 7293 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7333,7 +7335,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7316 "Zend/zend_language_scanner.c" +#line 7318 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7397,7 +7399,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7380 "Zend/zend_language_scanner.c" +#line 7382 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7452,7 +7454,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7435 "Zend/zend_language_scanner.c" +#line 7437 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7541,7 +7543,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2588 "Zend/zend_language_scanner.l" +#line 2589 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7550,7 +7552,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7533 "Zend/zend_language_scanner.c" +#line 7535 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7564,7 +7566,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7547 "Zend/zend_language_scanner.c" +#line 7549 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7576,7 +7578,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7559 "Zend/zend_language_scanner.c" +#line 7561 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7627,7 +7629,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7610 "Zend/zend_language_scanner.c" +#line 7612 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7654,7 +7656,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7637 "Zend/zend_language_scanner.c" +#line 7639 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7665,7 +7667,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7648 "Zend/zend_language_scanner.c" +#line 7650 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7695,7 +7697,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7678 "Zend/zend_language_scanner.c" +#line 7680 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7712,7 +7714,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7695 "Zend/zend_language_scanner.c" +#line 7697 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7807,7 +7809,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7790 "Zend/zend_language_scanner.c" +#line 7792 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7832,7 +7834,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7815 "Zend/zend_language_scanner.c" +#line 7817 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7843,7 +7845,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7826 "Zend/zend_language_scanner.c" +#line 7828 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7880,7 +7882,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7863 "Zend/zend_language_scanner.c" +#line 7865 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7908,7 +7910,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7891 "Zend/zend_language_scanner.c" +#line 7893 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7918,7 +7920,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2506 "Zend/zend_language_scanner.l" +#line 2508 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7964,7 +7966,6 @@ int start_line = CG(zend_lineno); if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } /* newline before label will be subtracted from returned text, but @@ -7990,7 +7991,7 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - if (spacing != -1) { + if (spacing != -1 && !EG(exception)) { zend_copy_value(zendlval, yytext, yyleng - indentation); strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); @@ -7999,9 +8000,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7982 "Zend/zend_language_scanner.c" +#line 7983 "Zend/zend_language_scanner.c" } -#line 2597 "Zend/zend_language_scanner.l" +#line 2598 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 137e51a072e1f..956f7b1d37d18 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2525,7 +2525,6 @@ double_quotes_scan_done: if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } /* newline before label will be subtracted from returned text, but @@ -2570,15 +2569,18 @@ double_quotes_scan_done: } heredoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!EG(exception)) { + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!SCNG(heredoc_scan_ahead) + && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); + zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); + zend_string_release(copy); + } } RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); @@ -2630,7 +2632,6 @@ heredoc_scan_done: if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } /* newline before label will be subtracted from returned text, but @@ -2656,7 +2657,7 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - if (spacing != -1) { + if (spacing != -1 && !EG(exception)) { zend_copy_value(zendlval, yytext, yyleng - indentation); strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index a0dea49760670..07f7381c63613 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -167,11 +167,5 @@ Line 3: T_ENCAPSED_AND_WHITESPACE (' XXX Line 4: T_END_HEREDOC ('DOC') -Line 1: T_OPEN_TAG (' Date: Mon, 12 Mar 2018 18:09:41 +0000 Subject: [PATCH 33/54] Almost complete implementation of WS w/ closing marker --- Zend/zend_language_scanner.c | 264 +++++++++--------- Zend/zend_language_scanner.l | 28 +- .../tests/token_get_all_heredoc_nowdoc.phpt | 251 ++++++++++++----- 3 files changed, 332 insertions(+), 211 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 12c5baf2943c6..0e098abca8642 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2589 "Zend/zend_language_scanner.l" +#line 2591 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2192,7 +2192,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2271 "Zend/zend_language_scanner.l" +#line 2270 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4574,7 +4574,7 @@ int start_line = CG(zend_lineno); { char *s; unsigned char *saved_cursor; - int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 0; + 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; @@ -4614,6 +4614,7 @@ int start_line = CG(zend_lineno); spacing |= HEREDOC_USING_SPACES; } ++YYCURSOR; + ++indentation; } if (YYCURSOR == YYLIMIT) { @@ -4624,23 +4625,21 @@ int start_line = CG(zend_lineno); /* Check for ending label on the next line */ if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (!IS_LABEL_START(*end)) { + if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } + YYCURSOR = saved_cursor; + heredoc_label->length += indentation; + BEGIN(ST_END_HEREDOC); RETURN_TOKEN(T_START_HEREDOC); - } else { - YYCURSOR = saved_cursor; } - } else { - YYCURSOR = saved_cursor; } + YYCURSOR = saved_cursor; + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { zend_lex_state current_state; int heredoc_nesting_level = 1; @@ -4686,7 +4685,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4669 "Zend/zend_language_scanner.c" +#line 4668 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4710,7 +4709,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 4693 "Zend/zend_language_scanner.c" +#line 4692 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4723,7 +4722,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 4706 "Zend/zend_language_scanner.c" +#line 4705 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4742,7 +4741,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 4725 "Zend/zend_language_scanner.c" +#line 4724 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4755,7 +4754,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 4738 "Zend/zend_language_scanner.c" +#line 4737 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4768,7 +4767,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 4751 "Zend/zend_language_scanner.c" +#line 4750 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4781,7 +4780,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 4764 "Zend/zend_language_scanner.c" +#line 4763 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4818,7 +4817,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 4801 "Zend/zend_language_scanner.c" +#line 4800 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4843,7 +4842,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 4826 "Zend/zend_language_scanner.c" +#line 4825 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4889,7 +4888,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 4872 "Zend/zend_language_scanner.c" +#line 4871 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4950,7 +4949,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 4933 "Zend/zend_language_scanner.c" +#line 4932 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4969,7 +4968,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 4952 "Zend/zend_language_scanner.c" +#line 4951 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5024,7 +5023,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5007 "Zend/zend_language_scanner.c" +#line 5006 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5037,7 +5036,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5020 "Zend/zend_language_scanner.c" +#line 5019 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5050,7 +5049,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5033 "Zend/zend_language_scanner.c" +#line 5032 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5063,7 +5062,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5046 "Zend/zend_language_scanner.c" +#line 5045 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5085,7 +5084,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5068 "Zend/zend_language_scanner.c" +#line 5067 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5181,7 +5180,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 5164 "Zend/zend_language_scanner.c" +#line 5163 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5215,7 +5214,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5198 "Zend/zend_language_scanner.c" +#line 5197 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5284,7 +5283,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 5267 "Zend/zend_language_scanner.c" +#line 5266 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5318,7 +5317,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 5301 "Zend/zend_language_scanner.c" +#line 5300 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5367,7 +5366,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5350 "Zend/zend_language_scanner.c" +#line 5349 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5428,7 +5427,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5411 "Zend/zend_language_scanner.c" +#line 5410 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5447,7 +5446,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 5430 "Zend/zend_language_scanner.c" +#line 5429 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5460,7 +5459,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5443 "Zend/zend_language_scanner.c" +#line 5442 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5473,7 +5472,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5456 "Zend/zend_language_scanner.c" +#line 5455 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5557,7 +5556,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5540 "Zend/zend_language_scanner.c" +#line 5539 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5607,7 +5606,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 5590 "Zend/zend_language_scanner.c" +#line 5589 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5638,7 +5637,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 5621 "Zend/zend_language_scanner.c" +#line 5620 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5651,7 +5650,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 5634 "Zend/zend_language_scanner.c" +#line 5633 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5688,7 +5687,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 5671 "Zend/zend_language_scanner.c" +#line 5670 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5701,7 +5700,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 5684 "Zend/zend_language_scanner.c" +#line 5683 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5714,7 +5713,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 5697 "Zend/zend_language_scanner.c" +#line 5696 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5752,7 +5751,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5735 "Zend/zend_language_scanner.c" +#line 5734 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5789,7 +5788,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5772 "Zend/zend_language_scanner.c" +#line 5771 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5821,7 +5820,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 5804 "Zend/zend_language_scanner.c" +#line 5803 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5845,7 +5844,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 5828 "Zend/zend_language_scanner.c" +#line 5827 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5894,7 +5893,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 5877 "Zend/zend_language_scanner.c" +#line 5876 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -5904,7 +5903,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5887 "Zend/zend_language_scanner.c" +#line 5886 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5917,7 +5916,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5900 "Zend/zend_language_scanner.c" +#line 5899 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5930,7 +5929,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 5913 "Zend/zend_language_scanner.c" +#line 5912 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5943,7 +5942,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 5926 "Zend/zend_language_scanner.c" +#line 5925 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5974,7 +5973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 5957 "Zend/zend_language_scanner.c" +#line 5956 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5987,7 +5986,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 5970 "Zend/zend_language_scanner.c" +#line 5969 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6059,7 +6058,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6042 "Zend/zend_language_scanner.c" +#line 6041 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6084,7 +6083,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 6067 "Zend/zend_language_scanner.c" +#line 6066 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6125,7 +6124,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6108 "Zend/zend_language_scanner.c" +#line 6107 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6156,7 +6155,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 6139 "Zend/zend_language_scanner.c" +#line 6138 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6169,7 +6168,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 6152 "Zend/zend_language_scanner.c" +#line 6151 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6182,7 +6181,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 6165 "Zend/zend_language_scanner.c" +#line 6164 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6195,7 +6194,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 6178 "Zend/zend_language_scanner.c" +#line 6177 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6220,7 +6219,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 6203 "Zend/zend_language_scanner.c" +#line 6202 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6256,7 +6255,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 6239 "Zend/zend_language_scanner.c" +#line 6238 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6269,7 +6268,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6252 "Zend/zend_language_scanner.c" +#line 6251 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6282,7 +6281,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6265 "Zend/zend_language_scanner.c" +#line 6264 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6295,7 +6294,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6278 "Zend/zend_language_scanner.c" +#line 6277 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6314,7 +6313,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 6297 "Zend/zend_language_scanner.c" +#line 6296 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6366,7 +6365,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 6349 "Zend/zend_language_scanner.c" +#line 6348 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6396,7 +6395,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6379 "Zend/zend_language_scanner.c" +#line 6378 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6425,7 +6424,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6408 "Zend/zend_language_scanner.c" +#line 6407 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6438,7 +6437,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6421 "Zend/zend_language_scanner.c" +#line 6420 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6451,7 +6450,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 6434 "Zend/zend_language_scanner.c" +#line 6433 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6481,7 +6480,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 6464 "Zend/zend_language_scanner.c" +#line 6463 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6499,7 +6498,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6482 "Zend/zend_language_scanner.c" +#line 6481 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6571,7 +6570,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 6554 "Zend/zend_language_scanner.c" +#line 6553 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6588,7 +6587,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 6571 "Zend/zend_language_scanner.c" +#line 6570 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6611,7 +6610,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 6594 "Zend/zend_language_scanner.c" +#line 6593 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6621,7 +6620,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6604 "Zend/zend_language_scanner.c" +#line 6603 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6674,7 +6673,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2360 "Zend/zend_language_scanner.l" +#line 2359 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6715,7 +6714,7 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6698 "Zend/zend_language_scanner.c" +#line 6697 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6739,12 +6738,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2304 "Zend/zend_language_scanner.l" +#line 2303 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6727 "Zend/zend_language_scanner.c" +#line 6726 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6770,7 +6769,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6753 "Zend/zend_language_scanner.c" +#line 6752 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6781,20 +6780,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6764 "Zend/zend_language_scanner.c" +#line 6763 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2291 "Zend/zend_language_scanner.l" +#line 2290 "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 6777 "Zend/zend_language_scanner.c" +#line 6776 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6815,7 +6814,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6798 "Zend/zend_language_scanner.c" +#line 6797 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6840,7 +6839,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6823 "Zend/zend_language_scanner.c" +#line 6822 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6893,7 +6892,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2310 "Zend/zend_language_scanner.l" +#line 2309 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6942,18 +6941,18 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 6925 "Zend/zend_language_scanner.c" +#line 6924 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2299 "Zend/zend_language_scanner.l" +#line 2298 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6936 "Zend/zend_language_scanner.c" +#line 6935 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -6997,7 +6996,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 6980 "Zend/zend_language_scanner.c" +#line 6979 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7008,20 +7007,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6991 "Zend/zend_language_scanner.c" +#line 6990 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2291 "Zend/zend_language_scanner.l" +#line 2290 "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 7004 "Zend/zend_language_scanner.c" +#line 7003 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7042,7 +7041,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7025 "Zend/zend_language_scanner.c" +#line 7024 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7067,7 +7066,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7050 "Zend/zend_language_scanner.c" +#line 7049 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7116,7 +7115,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2402 "Zend/zend_language_scanner.l" +#line 2401 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7174,6 +7173,8 @@ int start_line = CG(zend_lineno); SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); } else { CG(increment_lineno) = 1; + YYCURSOR -= indentation; + heredoc_label->length += indentation; } BEGIN(ST_END_HEREDOC); @@ -7221,7 +7222,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7204 "Zend/zend_language_scanner.c" +#line 7205 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7265,7 +7266,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7248 "Zend/zend_language_scanner.c" +#line 7249 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7276,20 +7277,20 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7259 "Zend/zend_language_scanner.c" +#line 7260 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2291 "Zend/zend_language_scanner.l" +#line 2290 "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 7272 "Zend/zend_language_scanner.c" +#line 7273 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7310,7 +7311,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7293 "Zend/zend_language_scanner.c" +#line 7294 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7335,7 +7336,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7318 "Zend/zend_language_scanner.c" +#line 7319 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7399,7 +7400,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7382 "Zend/zend_language_scanner.c" +#line 7383 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7454,7 +7455,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7437 "Zend/zend_language_scanner.c" +#line 7438 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7543,7 +7544,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2589 "Zend/zend_language_scanner.l" +#line 2591 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7552,7 +7553,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7535 "Zend/zend_language_scanner.c" +#line 7536 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7566,7 +7567,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7549 "Zend/zend_language_scanner.c" +#line 7550 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7578,7 +7579,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7561 "Zend/zend_language_scanner.c" +#line 7562 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7629,7 +7630,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7612 "Zend/zend_language_scanner.c" +#line 7613 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7656,7 +7657,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7639 "Zend/zend_language_scanner.c" +#line 7640 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7667,7 +7668,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7650 "Zend/zend_language_scanner.c" +#line 7651 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7697,7 +7698,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7680 "Zend/zend_language_scanner.c" +#line 7681 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7714,7 +7715,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7697 "Zend/zend_language_scanner.c" +#line 7698 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7809,7 +7810,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7792 "Zend/zend_language_scanner.c" +#line 7793 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7834,7 +7835,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7817 "Zend/zend_language_scanner.c" +#line 7818 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7845,7 +7846,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7828 "Zend/zend_language_scanner.c" +#line 7829 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7882,7 +7883,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7865 "Zend/zend_language_scanner.c" +#line 7866 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7897,7 +7898,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2276 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7910,7 +7911,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7893 "Zend/zend_language_scanner.c" +#line 7894 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7920,7 +7921,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2508 "Zend/zend_language_scanner.l" +#line 2509 "Zend/zend_language_scanner.l" { int newline = 0, indentation = 0, spacing = -1; zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); @@ -7974,9 +7975,10 @@ int start_line = CG(zend_lineno); newline = 1; } - if (!indentation) { - CG(increment_lineno) = 1; /* For newline before label */ - } + CG(increment_lineno) = 1; /* For newline before label */ + + YYCURSOR -= indentation; + heredoc_label->length += indentation; BEGIN(ST_END_HEREDOC); @@ -7992,7 +7994,7 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); if (spacing != -1 && !EG(exception)) { - zend_copy_value(zendlval, yytext, yyleng - indentation); + zend_copy_value(zendlval, yytext, yyleng <= indentation ? 1 : yyleng - indentation); strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); } @@ -8000,9 +8002,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7983 "Zend/zend_language_scanner.c" +#line 7985 "Zend/zend_language_scanner.c" } -#line 2598 "Zend/zend_language_scanner.l" +#line 2600 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 956f7b1d37d18..755ab3c19dda5 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2229,7 +2229,7 @@ skip_escape_conversion: b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} { char *s; unsigned char *saved_cursor; - int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 0; + 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; @@ -2269,6 +2269,7 @@ skip_escape_conversion: spacing |= HEREDOC_USING_SPACES; } ++YYCURSOR; + ++indentation; } if (YYCURSOR == YYLIMIT) { @@ -2279,23 +2280,21 @@ skip_escape_conversion: /* Check for ending label on the next line */ if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - YYCTYPE *end = YYCURSOR + heredoc_label->length; - - if (!IS_LABEL_START(*end)) { + if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } + YYCURSOR = saved_cursor; + heredoc_label->length += indentation; + BEGIN(ST_END_HEREDOC); RETURN_TOKEN(T_START_HEREDOC); - } else { - YYCURSOR = saved_cursor; } - } else { - YYCURSOR = saved_cursor; } + YYCURSOR = saved_cursor; + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { zend_lex_state current_state; int heredoc_nesting_level = 1; @@ -2538,6 +2537,8 @@ double_quotes_scan_done: SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); } else { CG(increment_lineno) = 1; + YYCURSOR -= indentation; + heredoc_label->length += indentation; } BEGIN(ST_END_HEREDOC); @@ -2640,9 +2641,10 @@ heredoc_scan_done: newline = 1; } - if (!indentation) { - CG(increment_lineno) = 1; /* For newline before label */ - } + CG(increment_lineno) = 1; /* For newline before label */ + + YYCURSOR -= indentation; + heredoc_label->length += indentation; BEGIN(ST_END_HEREDOC); @@ -2658,7 +2660,7 @@ nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); if (spacing != -1 && !EG(exception)) { - zend_copy_value(zendlval, yytext, yyleng - indentation); + zend_copy_value(zendlval, yytext, yyleng <= indentation ? 1 : yyleng - indentation); strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); } diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index 07f7381c63613..e67e7062c7ef2 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -14,64 +14,57 @@ function output(array $tokens) } } +echo 'Test case 1', PHP_EOL, PHP_EOL; + output(token_get_all(<<<'OUTER_END' - Date: Mon, 12 Mar 2018 19:59:18 +0000 Subject: [PATCH 34/54] Fix implementation (no idea what I was thinking...) --- Zend/zend_language_scanner.c | 2 +- Zend/zend_language_scanner.l | 2 +- ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 0e098abca8642..bf94ed1c0a473 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -7994,7 +7994,7 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); if (spacing != -1 && !EG(exception)) { - zend_copy_value(zendlval, yytext, yyleng <= indentation ? 1 : yyleng - indentation); + zend_copy_value(zendlval, yytext, yyleng); strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 755ab3c19dda5..d5b4dfe4ed6fb 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2660,7 +2660,7 @@ nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); if (spacing != -1 && !EG(exception)) { - zend_copy_value(zendlval, yytext, yyleng <= indentation ? 1 : yyleng - indentation); + zend_copy_value(zendlval, yytext, yyleng); strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); } diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index e67e7062c7ef2..d35262819e9b8 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -180,8 +180,9 @@ Line 2: T_END_HEREDOC (' INNER_END') Test case 5 Line 1: T_OPEN_TAG (' Date: Mon, 12 Mar 2018 20:02:40 +0000 Subject: [PATCH 35/54] Switch definitions around for parity with heredoc --- Zend/zend_language_scanner.c | 2 +- Zend/zend_language_scanner.l | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index bf94ed1c0a473..2759bdb74469b 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -7923,8 +7923,8 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); #line 2509 "Zend/zend_language_scanner.l" { - int newline = 0, indentation = 0, spacing = -1; 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); diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d5b4dfe4ed6fb..2dfd05d61ebcc 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2589,8 +2589,8 @@ heredoc_scan_done: {ANY_CHAR} { - int newline = 0, indentation = 0, spacing = -1; 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); From 23b7d406e4ab286ad5fb0ddc702d0cd5df2f08ae Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Sun, 18 Mar 2018 15:50:44 +0000 Subject: [PATCH 36/54] Redo newline calculation --- Zend/zend_language_scanner.c | 62 +++++++++++++++++++----------------- Zend/zend_language_scanner.l | 10 +++--- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 2759bdb74469b..37565d786ef35 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1414,7 +1414,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2591 "Zend/zend_language_scanner.l" +#line 2593 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7132,7 +7132,6 @@ int start_line = CG(zend_lineno); if (*YYCURSOR == '\n') { YYCURSOR++; } - newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -7164,7 +7163,9 @@ int start_line = CG(zend_lineno); /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (!newline) { + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { newline = 1; } @@ -7222,7 +7223,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7205 "Zend/zend_language_scanner.c" +#line 7206 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7266,7 +7267,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7249 "Zend/zend_language_scanner.c" +#line 7250 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7277,7 +7278,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7260 "Zend/zend_language_scanner.c" +#line 7261 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; @@ -7290,7 +7291,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7273 "Zend/zend_language_scanner.c" +#line 7274 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7311,7 +7312,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7294 "Zend/zend_language_scanner.c" +#line 7295 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7336,7 +7337,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7319 "Zend/zend_language_scanner.c" +#line 7320 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7400,7 +7401,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7383 "Zend/zend_language_scanner.c" +#line 7384 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7455,7 +7456,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7438 "Zend/zend_language_scanner.c" +#line 7439 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7544,7 +7545,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2591 "Zend/zend_language_scanner.l" +#line 2593 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7553,7 +7554,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7536 "Zend/zend_language_scanner.c" +#line 7537 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7567,7 +7568,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7550 "Zend/zend_language_scanner.c" +#line 7551 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7579,7 +7580,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7562 "Zend/zend_language_scanner.c" +#line 7563 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7630,7 +7631,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7613 "Zend/zend_language_scanner.c" +#line 7614 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7657,7 +7658,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7640 "Zend/zend_language_scanner.c" +#line 7641 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7668,7 +7669,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7651 "Zend/zend_language_scanner.c" +#line 7652 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7698,7 +7699,7 @@ int start_line = CG(zend_lineno); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7681 "Zend/zend_language_scanner.c" +#line 7682 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7715,7 +7716,7 @@ int start_line = CG(zend_lineno); ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7698 "Zend/zend_language_scanner.c" +#line 7699 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7810,7 +7811,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 7793 "Zend/zend_language_scanner.c" +#line 7794 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7835,7 +7836,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7818 "Zend/zend_language_scanner.c" +#line 7819 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7846,7 +7847,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7829 "Zend/zend_language_scanner.c" +#line 7830 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7883,7 +7884,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 7866 "Zend/zend_language_scanner.c" +#line 7867 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7911,7 +7912,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7894 "Zend/zend_language_scanner.c" +#line 7895 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7921,7 +7922,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2509 "Zend/zend_language_scanner.l" +#line 2510 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7938,7 +7939,6 @@ int start_line = CG(zend_lineno); if (*YYCURSOR == '\n') { YYCURSOR++; } - newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -7971,7 +7971,9 @@ int start_line = CG(zend_lineno); /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (!newline) { + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { newline = 1; } @@ -8002,9 +8004,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7985 "Zend/zend_language_scanner.c" +#line 7987 "Zend/zend_language_scanner.c" } -#line 2600 "Zend/zend_language_scanner.l" +#line 2602 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 2dfd05d61ebcc..a87f038686f51 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2496,7 +2496,6 @@ double_quotes_scan_done: if (*YYCURSOR == '\n') { YYCURSOR++; } - newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -2528,7 +2527,9 @@ double_quotes_scan_done: /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (!newline) { + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { newline = 1; } @@ -2604,7 +2605,6 @@ heredoc_scan_done: if (*YYCURSOR == '\n') { YYCURSOR++; } - newline = 2; /* Windows newline */ /* fall through */ case '\n': indentation = spacing = 0; @@ -2637,7 +2637,9 @@ heredoc_scan_done: /* newline before label will be subtracted from returned text, but * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (!newline) { + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { newline = 1; } From 482516a53719468479f7daecaabb477b65eb3c32 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 19 Mar 2018 21:21:28 +0000 Subject: [PATCH 37/54] Partially support latest lexer changes... --- Zend/zend_language_scanner.c | 962 +++++++++++++++++++---------------- Zend/zend_language_scanner.l | 71 ++- 2 files changed, 558 insertions(+), 475 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 37565d786ef35..68bac2041d6e5 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1117,6 +1117,22 @@ static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quot goto emit_token; \ } while (0) +#define RETURN_TOKEN_WITH_VAL(_token) do { \ + token = _token; \ + goto emit_token_with_val; \ + } while (0) + +#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ + token = _token; \ + offset = _offset; \ + goto emit_token_with_str; \ + } while (0) + +#define SKIP_TOKEN(_token) do { \ + token = _token; \ + goto skip_token; \ + } while (0) + #define HEREDOC_USING_SPACES 1 #define HEREDOC_USING_TABS 2 @@ -1182,19 +1198,6 @@ static void copy_heredoc_label_stack(void *void_heredoc_label) zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); } -#define RETURN_TOKEN(token) return emit_token(token, start_line); - -#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ - token = _token; \ - offset = _offset; \ - goto emit_token_with_str; \ - } while (0) - -#define SKIP_TOKEN(_token) do { \ - token = _token; \ - goto skip_token; \ - } while (0) - int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem) { int token; @@ -1206,7 +1209,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1188 "Zend/zend_language_scanner.c" +#line 1213 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1414,7 +1417,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2593 "Zend/zend_language_scanner.l" +#line 2692 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1423,7 +1426,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 1405 "Zend/zend_language_scanner.c" +#line 1430 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); ++YYCURSOR; @@ -1435,12 +1438,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_WHITESPACE); + goto return_whitespace; } -#line 1422 "Zend/zend_language_scanner.c" +#line 1446 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); yych = *++YYCURSOR; @@ -1448,17 +1450,17 @@ int start_line = CG(zend_lineno); yy9: YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" +#line 1675 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 1434 "Zend/zend_language_scanner.c" +#line 1458 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); ++YYCURSOR; YYDEBUG(11, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2112 "Zend/zend_language_scanner.l" +#line 2186 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -1466,8 +1468,12 @@ int start_line = CG(zend_lineno); switch (*YYCURSOR++) { case '"': yyleng = YYCURSOR - SCNG(yy_text); - zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"'); - RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); + if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) + || !PARSER_MODE()) { + RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); + } else { + RETURN_TOKEN(T_ERROR); + } case '$': if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { break; @@ -1499,13 +1505,13 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 1481 "Zend/zend_language_scanner.c" +#line 1509 "Zend/zend_language_scanner.c" yy12: YYDEBUG(12, *YYCURSOR); ++YYCURSOR; YYDEBUG(13, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 2013 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -1532,9 +1538,12 @@ int start_line = CG(zend_lineno); yyleng = YYCURSOR - SCNG(yy_text); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); + } RETURN_TOKEN(T_COMMENT); } -#line 1516 "Zend/zend_language_scanner.c" +#line 1547 "Zend/zend_language_scanner.c" yy14: YYDEBUG(14, *YYCURSOR); yych = *++YYCURSOR; @@ -1565,7 +1574,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2043 "Zend/zend_language_scanner.l" +#line 2096 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -1588,41 +1597,62 @@ int start_line = CG(zend_lineno); * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." * rule, which continued in ST_IN_SCRIPTING state after the quote */ ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } } + if (yyleng-bprefix-2 <= 1) { + if (yyleng-bprefix-2 < 1) { + ZVAL_EMPTY_STRING(zendlval); + } else { + zend_uchar c = (zend_uchar)*(yytext+bprefix+1); + if (c == '\n' || c == '\r') { + CG(zend_lineno)++; + } + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); + } + goto skip_escape_conversion; + } ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); /* convert escape sequences */ - s = t = Z_STRVAL_P(zendlval); + s = Z_STRVAL_P(zendlval); end = s+Z_STRLEN_P(zendlval); + while (1) { + if (UNEXPECTED(*s=='\\')) { + break; + } + if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { + CG(zend_lineno)++; + } + s++; + if (s == end) { + goto skip_escape_conversion; + } + } + + t = s; while (s') goto yy223; YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1587 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 2633 "Zend/zend_language_scanner.c" +#line 2697 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); ++YYCURSOR; @@ -2661,42 +2704,42 @@ int start_line = CG(zend_lineno); if (yych == '=') goto yy225; YYDEBUG(127, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1552 "Zend/zend_language_scanner.l" +#line 1575 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 2648 "Zend/zend_language_scanner.c" +#line 2712 "Zend/zend_language_scanner.c" yy128: YYDEBUG(128, *YYCURSOR); ++YYCURSOR; YYDEBUG(129, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" +#line 1543 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 2658 "Zend/zend_language_scanner.c" +#line 2722 "Zend/zend_language_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); ++YYCURSOR; YYDEBUG(131, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" +#line 1591 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 2668 "Zend/zend_language_scanner.c" +#line 2732 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; if (yych == '=') goto yy227; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1648 "Zend/zend_language_scanner.l" +#line 1671 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 2679 "Zend/zend_language_scanner.c" +#line 2743 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; @@ -2705,25 +2748,28 @@ int start_line = CG(zend_lineno); yy135: YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2034 "Zend/zend_language_scanner.l" +#line 2084 "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 2696 "Zend/zend_language_scanner.c" +#line 2763 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); ++YYCURSOR; YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" +#line 1423 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 2706 "Zend/zend_language_scanner.c" +#line 2773 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; @@ -2750,11 +2796,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(142, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1327 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 2737 "Zend/zend_language_scanner.c" +#line 2804 "Zend/zend_language_scanner.c" yy143: YYDEBUG(143, *YYCURSOR); yych = *++YYCURSOR; @@ -2840,11 +2886,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(151, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1295 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 2827 "Zend/zend_language_scanner.c" +#line 2894 "Zend/zend_language_scanner.c" yy152: YYDEBUG(152, *YYCURSOR); yych = *++YYCURSOR; @@ -2929,11 +2975,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(164, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1271 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 2916 "Zend/zend_language_scanner.c" +#line 2983 "Zend/zend_language_scanner.c" yy165: YYDEBUG(165, *YYCURSOR); yych = *++YYCURSOR; @@ -2994,11 +3040,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1632 "Zend/zend_language_scanner.l" +#line 1655 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 2981 "Zend/zend_language_scanner.c" +#line 3048 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3112,11 +3158,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 1643 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3099 "Zend/zend_language_scanner.c" +#line 3166 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); yych = *++YYCURSOR; @@ -3144,31 +3190,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" +#line 1639 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3131 "Zend/zend_language_scanner.c" +#line 3198 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); ++YYCURSOR; YYDEBUG(192, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1647 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3141 "Zend/zend_language_scanner.c" +#line 3208 "Zend/zend_language_scanner.c" yy193: YYDEBUG(193, *YYCURSOR); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3151 "Zend/zend_language_scanner.c" +#line 3218 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3234,21 +3280,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1611 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3221 "Zend/zend_language_scanner.c" +#line 3288 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1419 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 3231 "Zend/zend_language_scanner.c" +#line 3298 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3272,7 +3318,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1694 "Zend/zend_language_scanner.l" +#line 1716 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3292,15 +3338,15 @@ int start_line = CG(zend_lineno); ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); ZEND_ASSERT(!errno && end == yytext + yyleng); } - RETURN_TOKEN(T_LNUMBER); + RETURN_TOKEN_WITH_VAL(T_LNUMBER); } else { 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 3283 "Zend/zend_language_scanner.c" +#line 3350 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3326,7 +3372,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(218, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1765 "Zend/zend_language_scanner.l" +#line 1795 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3346,15 +3392,15 @@ int start_line = CG(zend_lineno); ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); ZEND_ASSERT(!errno && end == hex + len); } - RETURN_TOKEN(T_LNUMBER); + RETURN_TOKEN_WITH_VAL(T_LNUMBER); } else { 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 3337 "Zend/zend_language_scanner.c" +#line 3404 "Zend/zend_language_scanner.c" yy219: YYDEBUG(219, *YYCURSOR); ++YYCURSOR; @@ -3389,41 +3435,41 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(222, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" +#line 1627 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3376 "Zend/zend_language_scanner.c" +#line 3443 "Zend/zend_language_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); ++YYCURSOR; YYDEBUG(224, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" +#line 1583 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3386 "Zend/zend_language_scanner.c" +#line 3453 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3396 "Zend/zend_language_scanner.c" +#line 3463 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); ++YYCURSOR; YYDEBUG(228, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" +#line 1631 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3406 "Zend/zend_language_scanner.c" +#line 3473 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); ++YYCURSOR; @@ -3447,11 +3493,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(233, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" +#line 1659 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 3434 "Zend/zend_language_scanner.c" +#line 3501 "Zend/zend_language_scanner.c" yy234: YYDEBUG(234, *YYCURSOR); yych = *++YYCURSOR; @@ -3532,11 +3578,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1204 "Zend/zend_language_scanner.l" +#line 1229 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 3519 "Zend/zend_language_scanner.c" +#line 3586 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); yych = *++YYCURSOR; @@ -3618,11 +3664,11 @@ int start_line = CG(zend_lineno); yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1299 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 3605 "Zend/zend_language_scanner.c" +#line 3672 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -3691,11 +3737,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(268, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1404 "Zend/zend_language_scanner.l" +#line 1427 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 3678 "Zend/zend_language_scanner.c" +#line 3745 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; @@ -3768,11 +3814,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1255 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 3755 "Zend/zend_language_scanner.c" +#line 3822 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; @@ -3787,11 +3833,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(282, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" +#line 1491 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 3774 "Zend/zend_language_scanner.c" +#line 3841 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; @@ -3800,11 +3846,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(284, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1412 "Zend/zend_language_scanner.l" +#line 1435 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 3787 "Zend/zend_language_scanner.c" +#line 3854 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; @@ -3819,11 +3865,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(287, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3806 "Zend/zend_language_scanner.c" +#line 3873 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; @@ -4037,11 +4083,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1339 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 4024 "Zend/zend_language_scanner.c" +#line 4091 "Zend/zend_language_scanner.c" yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; @@ -4092,11 +4138,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(327, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1359 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 4079 "Zend/zend_language_scanner.c" +#line 4146 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; @@ -4120,11 +4166,11 @@ int start_line = CG(zend_lineno); yy329: YYDEBUG(329, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1283 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 4107 "Zend/zend_language_scanner.c" +#line 4174 "Zend/zend_language_scanner.c" yy330: YYDEBUG(330, *YYCURSOR); yych = *++YYCURSOR; @@ -4169,11 +4215,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(337, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1444 "Zend/zend_language_scanner.l" +#line 1467 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 4156 "Zend/zend_language_scanner.c" +#line 4223 "Zend/zend_language_scanner.c" yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; @@ -4182,11 +4228,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1200 "Zend/zend_language_scanner.l" +#line 1225 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 4169 "Zend/zend_language_scanner.c" +#line 4236 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4225,11 +4271,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(346, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" +#line 1355 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 4212 "Zend/zend_language_scanner.c" +#line 4279 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; @@ -4278,11 +4324,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(353, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" +#line 1547 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 4265 "Zend/zend_language_scanner.c" +#line 4332 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; @@ -4469,11 +4515,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(385, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1416 "Zend/zend_language_scanner.l" +#line 1439 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4456 "Zend/zend_language_scanner.c" +#line 4523 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; @@ -4570,7 +4616,7 @@ int start_line = CG(zend_lineno); yy397: YYDEBUG(397, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2154 "Zend/zend_language_scanner.l" +#line 2232 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -4619,7 +4665,6 @@ int start_line = CG(zend_lineno); if (YYCURSOR == YYLIMIT) { YYCURSOR = saved_cursor; - ZVAL_NULL(zendlval); RETURN_TOKEN(T_START_HEREDOC); } @@ -4656,7 +4701,7 @@ int start_line = CG(zend_lineno); int retval; ZVAL_UNDEF(&zv); - retval = lex_scan(&zv); + retval = lex_scan(&zv, NULL); zval_dtor(&zv); if (EG(exception)) { @@ -4685,7 +4730,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4668 "Zend/zend_language_scanner.c" +#line 4734 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4705,11 +4750,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(401, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 4692 "Zend/zend_language_scanner.c" +#line 4758 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4718,11 +4763,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(403, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" +#line 1347 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 4705 "Zend/zend_language_scanner.c" +#line 4771 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4737,11 +4782,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(406, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1259 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 4724 "Zend/zend_language_scanner.c" +#line 4790 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4750,11 +4795,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1342 "Zend/zend_language_scanner.l" +#line 1367 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 4737 "Zend/zend_language_scanner.c" +#line 4803 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4763,11 +4808,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(410, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1408 "Zend/zend_language_scanner.l" +#line 1431 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 4750 "Zend/zend_language_scanner.c" +#line 4816 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4776,11 +4821,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(412, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1212 "Zend/zend_language_scanner.l" +#line 1237 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 4763 "Zend/zend_language_scanner.c" +#line 4829 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4813,11 +4858,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(418, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" +#line 1507 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 4800 "Zend/zend_language_scanner.c" +#line 4866 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4838,11 +4883,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(422, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1279 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 4825 "Zend/zend_language_scanner.c" +#line 4891 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4884,11 +4929,11 @@ int start_line = CG(zend_lineno); yy427: YYDEBUG(427, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" +#line 1523 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 4871 "Zend/zend_language_scanner.c" +#line 4937 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -4945,11 +4990,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1503 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 4932 "Zend/zend_language_scanner.c" +#line 4998 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -4964,11 +5009,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(440, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1363 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 4951 "Zend/zend_language_scanner.c" +#line 5017 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5019,11 +5064,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(449, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1267 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5006 "Zend/zend_language_scanner.c" +#line 5072 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5032,11 +5077,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(451, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1375 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5019 "Zend/zend_language_scanner.c" +#line 5085 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5045,11 +5090,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(453, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1539 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 5032 "Zend/zend_language_scanner.c" +#line 5098 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5058,11 +5103,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(455, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1287 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5045 "Zend/zend_language_scanner.c" +#line 5111 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5080,11 +5125,11 @@ int start_line = CG(zend_lineno); yy457: YYDEBUG(457, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1251 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5067 "Zend/zend_language_scanner.c" +#line 5133 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5176,11 +5221,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 5163 "Zend/zend_language_scanner.c" +#line 5229 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5210,11 +5255,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(479, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" +#line 1443 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5197 "Zend/zend_language_scanner.c" +#line 5263 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5279,11 +5324,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1275 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 5266 "Zend/zend_language_scanner.c" +#line 5332 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5313,11 +5358,11 @@ int start_line = CG(zend_lineno); yy493: YYDEBUG(493, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1303 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 5300 "Zend/zend_language_scanner.c" +#line 5366 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5362,11 +5407,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(501, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5349 "Zend/zend_language_scanner.c" +#line 5415 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5423,11 +5468,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" +#line 1535 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5410 "Zend/zend_language_scanner.c" +#line 5476 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5442,11 +5487,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" +#line 1241 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 5429 "Zend/zend_language_scanner.c" +#line 5495 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5455,11 +5500,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(516, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" +#line 1515 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5442 "Zend/zend_language_scanner.c" +#line 5508 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5468,11 +5513,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1331 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5455 "Zend/zend_language_scanner.c" +#line 5521 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5552,11 +5597,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(531, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1428 "Zend/zend_language_scanner.l" +#line 1451 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5539 "Zend/zend_language_scanner.c" +#line 5605 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5602,11 +5647,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1440 "Zend/zend_language_scanner.l" +#line 1463 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 5589 "Zend/zend_language_scanner.c" +#line 5655 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5633,11 +5678,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(544, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1315 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 5620 "Zend/zend_language_scanner.c" +#line 5686 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5646,11 +5691,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1343 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 5633 "Zend/zend_language_scanner.c" +#line 5699 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5683,11 +5728,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(552, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" +#line 1379 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 5670 "Zend/zend_language_scanner.c" +#line 5736 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5696,11 +5741,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(554, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1263 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 5683 "Zend/zend_language_scanner.c" +#line 5749 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5709,11 +5754,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(556, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1307 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 5696 "Zend/zend_language_scanner.c" +#line 5762 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5747,11 +5792,11 @@ int start_line = CG(zend_lineno); yy560: YYDEBUG(560, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" +#line 1471 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5734 "Zend/zend_language_scanner.c" +#line 5800 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5784,11 +5829,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(566, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" +#line 1527 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5771 "Zend/zend_language_scanner.c" +#line 5837 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5816,11 +5861,11 @@ int start_line = CG(zend_lineno); yy569: YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" +#line 1479 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 5803 "Zend/zend_language_scanner.c" +#line 5869 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5840,11 +5885,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(573, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1847 "Zend/zend_language_scanner.l" +#line 1881 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 5827 "Zend/zend_language_scanner.c" +#line 5893 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5889,21 +5934,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(582, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1424 "Zend/zend_language_scanner.l" +#line 1447 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 5876 "Zend/zend_language_scanner.c" +#line 5942 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1455 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5886 "Zend/zend_language_scanner.c" +#line 5952 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5912,11 +5957,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5899 "Zend/zend_language_scanner.c" +#line 5965 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5925,11 +5970,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(588, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" +#line 1555 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 5912 "Zend/zend_language_scanner.c" +#line 5978 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -5938,11 +5983,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(590, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" +#line 1351 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 5925 "Zend/zend_language_scanner.c" +#line 5991 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -5969,11 +6014,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1291 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 5956 "Zend/zend_language_scanner.c" +#line 6022 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5982,11 +6027,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1208 "Zend/zend_language_scanner.l" +#line 1233 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 5969 "Zend/zend_language_scanner.c" +#line 6035 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6054,11 +6099,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(609, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1843 "Zend/zend_language_scanner.l" +#line 1877 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 6041 "Zend/zend_language_scanner.c" +#line 6107 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6079,11 +6124,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1873 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 6066 "Zend/zend_language_scanner.c" +#line 6132 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6120,11 +6165,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(620, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1335 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6107 "Zend/zend_language_scanner.c" +#line 6173 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6151,11 +6196,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(625, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 6138 "Zend/zend_language_scanner.c" +#line 6204 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6164,11 +6209,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(627, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1371 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 6151 "Zend/zend_language_scanner.c" +#line 6217 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6177,11 +6222,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(629, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" +#line 1487 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 6164 "Zend/zend_language_scanner.c" +#line 6230 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6190,11 +6235,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(631, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1531 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 6177 "Zend/zend_language_scanner.c" +#line 6243 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6215,11 +6260,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(635, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 1857 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 6202 "Zend/zend_language_scanner.c" +#line 6268 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6251,11 +6296,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1827 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 6238 "Zend/zend_language_scanner.c" +#line 6304 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6264,11 +6309,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(643, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1319 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 6251 "Zend/zend_language_scanner.c" +#line 6317 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6277,11 +6322,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1311 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6264 "Zend/zend_language_scanner.c" +#line 6330 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6290,11 +6335,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1383 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6277 "Zend/zend_language_scanner.c" +#line 6343 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6309,11 +6354,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1323 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 6296 "Zend/zend_language_scanner.c" +#line 6362 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6361,11 +6406,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1835 "Zend/zend_language_scanner.l" +#line 1869 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 6348 "Zend/zend_language_scanner.c" +#line 6414 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6389,13 +6434,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" +#line 1245 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6378 "Zend/zend_language_scanner.c" +#line 6444 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6420,11 +6465,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(666, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" +#line 1475 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6407 "Zend/zend_language_scanner.c" +#line 6473 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6433,11 +6478,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" +#line 1483 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6420 "Zend/zend_language_scanner.c" +#line 6486 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6446,11 +6491,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1831 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 6433 "Zend/zend_language_scanner.c" +#line 6499 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6476,11 +6521,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1851 "Zend/zend_language_scanner.l" +#line 1885 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 6463 "Zend/zend_language_scanner.c" +#line 6529 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6494,11 +6539,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" +#line 1511 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6481 "Zend/zend_language_scanner.c" +#line 6547 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6564,13 +6609,13 @@ int start_line = CG(zend_lineno); yy682: YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 6553 "Zend/zend_language_scanner.c" +#line 6619 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6582,12 +6627,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(685, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_WHITESPACE); + goto return_whitespace; } -#line 6570 "Zend/zend_language_scanner.c" +#line 6635 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6604,23 +6648,22 @@ int start_line = CG(zend_lineno); } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" +#line 1400 "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 6593 "Zend/zend_language_scanner.c" +#line 6657 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6603 "Zend/zend_language_scanner.c" +#line 6667 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6673,7 +6716,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2359 "Zend/zend_language_scanner.l" +#line 2439 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6711,10 +6754,14 @@ int start_line = CG(zend_lineno); 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 6697 "Zend/zend_language_scanner.c" +#line 6765 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6738,12 +6785,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2303 "Zend/zend_language_scanner.l" +#line 2379 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6726 "Zend/zend_language_scanner.c" +#line 6794 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6764,36 +6811,34 @@ int start_line = CG(zend_lineno); yy702: YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1986 "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 6752 "Zend/zend_language_scanner.c" +#line 6819 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1686 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6763 "Zend/zend_language_scanner.c" +#line 6830 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2290 "Zend/zend_language_scanner.l" +#line 2367 "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 6776 "Zend/zend_language_scanner.c" +#line 6842 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6807,14 +6852,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(710, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1936 "Zend/zend_language_scanner.l" +#line 1980 "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 6797 "Zend/zend_language_scanner.c" +#line 6862 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6832,14 +6876,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" +#line 1972 "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 6822 "Zend/zend_language_scanner.c" +#line 6886 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6892,7 +6935,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2309 "Zend/zend_language_scanner.l" +#line 2385 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -6938,21 +6981,25 @@ int start_line = CG(zend_lineno); 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 6924 "Zend/zend_language_scanner.c" +#line 6992 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2298 "Zend/zend_language_scanner.l" +#line 2374 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 6935 "Zend/zend_language_scanner.c" +#line 7003 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -6991,36 +7038,34 @@ int start_line = CG(zend_lineno); yy724: YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1986 "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 6979 "Zend/zend_language_scanner.c" +#line 7046 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; YYDEBUG(726, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1686 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6990 "Zend/zend_language_scanner.c" +#line 7057 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2290 "Zend/zend_language_scanner.l" +#line 2367 "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 7003 "Zend/zend_language_scanner.c" +#line 7069 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7034,14 +7079,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1936 "Zend/zend_language_scanner.l" +#line 1980 "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 7024 "Zend/zend_language_scanner.c" +#line 7089 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7059,14 +7103,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" +#line 1972 "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 7049 "Zend/zend_language_scanner.c" +#line 7113 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7115,7 +7158,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2401 "Zend/zend_language_scanner.l" +#line 2485 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7208,22 +7251,32 @@ int start_line = CG(zend_lineno); heredoc_scan_done: - if (!EG(exception)) { - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); + if (EG(exception)) { + RETURN_TOKEN(T_ERROR); + } + + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + if (!SCNG(heredoc_scan_ahead)) { + zend_string *copy = Z_STR_P(zendlval); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); + if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + RETURN_TOKEN(T_ERROR); } + + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) + && PARSER_MODE()) { + zend_string_free(copy); + RETURN_TOKEN(T_ERROR); + } + + zend_string_free(copy); } - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7206 "Zend/zend_language_scanner.c" +#line 7280 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7262,36 +7315,34 @@ int start_line = CG(zend_lineno); yy744: YYDEBUG(744, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1986 "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 7250 "Zend/zend_language_scanner.c" +#line 7323 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1686 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7261 "Zend/zend_language_scanner.c" +#line 7334 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2290 "Zend/zend_language_scanner.l" +#line 2367 "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 7274 "Zend/zend_language_scanner.c" +#line 7346 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7305,14 +7356,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1936 "Zend/zend_language_scanner.l" +#line 1980 "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 7295 "Zend/zend_language_scanner.c" +#line 7366 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7330,14 +7380,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" +#line 1972 "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 7320 "Zend/zend_language_scanner.c" +#line 7390 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7394,14 +7443,14 @@ int start_line = CG(zend_lineno); yy759: YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1687 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7384 "Zend/zend_language_scanner.c" +#line 7454 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7448,15 +7497,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1678 "Zend/zend_language_scanner.l" +#line 1701 "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 7439 "Zend/zend_language_scanner.c" +#line 7508 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7545,7 +7593,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2593 "Zend/zend_language_scanner.l" +#line 2692 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7554,33 +7602,33 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7537 "Zend/zend_language_scanner.c" +#line 7606 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1958 "Zend/zend_language_scanner.l" +#line 2000 "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 7551 "Zend/zend_language_scanner.c" +#line 7620 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; yy773: YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1953 "Zend/zend_language_scanner.l" +#line 1995 "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 7563 "Zend/zend_language_scanner.c" +#line 7632 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7615,7 +7663,7 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1793 "Zend/zend_language_scanner.l" +#line 1823 "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; @@ -7629,9 +7677,9 @@ int start_line = CG(zend_lineno); string: ZVAL_STRINGL(zendlval, yytext, yyleng); } - RETURN_TOKEN(T_NUM_STRING); + RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7614 "Zend/zend_language_scanner.c" +#line 7683 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7653,23 +7701,22 @@ int start_line = CG(zend_lineno); } YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1966 "Zend/zend_language_scanner.l" +#line 2008 "Zend/zend_language_scanner.l" { - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7641 "Zend/zend_language_scanner.c" +#line 7709 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1948 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7652 "Zend/zend_language_scanner.c" +#line 7720 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7694,12 +7741,11 @@ int start_line = CG(zend_lineno); yy786: YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1986 "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 7682 "Zend/zend_language_scanner.c" +#line 7749 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7711,12 +7757,16 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1809 "Zend/zend_language_scanner.l" +#line 1839 "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 7699 "Zend/zend_language_scanner.c" +#line 7770 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7766,7 +7816,7 @@ int start_line = CG(zend_lineno); yy800: YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1878 "Zend/zend_language_scanner.l" +#line 1921 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7805,13 +7855,15 @@ int start_line = CG(zend_lineno); 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 7794 "Zend/zend_language_scanner.c" +#line 7867 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7827,27 +7879,33 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1869 "Zend/zend_language_scanner.l" +#line 1909 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); + } RETURN_TOKEN(T_OPEN_TAG); } else { goto inline_char_handler; } } -#line 7819 "Zend/zend_language_scanner.c" +#line 7895 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1856 "Zend/zend_language_scanner.l" +#line 1890 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ECHO); + } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7830 "Zend/zend_language_scanner.c" +#line 7909 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7878,13 +7936,16 @@ int start_line = CG(zend_lineno); yy811: YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1862 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); + } RETURN_TOKEN(T_OPEN_TAG); } -#line 7867 "Zend/zend_language_scanner.c" +#line 7949 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7899,7 +7960,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2276 "Zend/zend_language_scanner.l" +#line 2353 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7912,7 +7973,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7895 "Zend/zend_language_scanner.c" +#line 7977 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7922,7 +7983,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2510 "Zend/zend_language_scanner.l" +#line 2604 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7995,18 +8056,23 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - if (spacing != -1 && !EG(exception)) { - zend_copy_value(zendlval, yytext, yyleng); + if (EG(exception)) { + RETURN_TOKEN(T_ERROR); + } + + zend_copy_value(zendlval, yytext, yyleng); - strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + if (spacing != -1 + && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { + RETURN_TOKEN(T_ERROR); } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7987 "Zend/zend_language_scanner.c" +#line 8074 "Zend/zend_language_scanner.c" } -#line 2602 "Zend/zend_language_scanner.l" +#line 2701 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index a87f038686f51..d2ab0054c2e9a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1114,6 +1114,22 @@ skip_escape_conversion: goto emit_token; \ } while (0) +#define RETURN_TOKEN_WITH_VAL(_token) do { \ + token = _token; \ + goto emit_token_with_val; \ + } while (0) + +#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ + token = _token; \ + offset = _offset; \ + goto emit_token_with_str; \ + } while (0) + +#define SKIP_TOKEN(_token) do { \ + token = _token; \ + goto skip_token; \ + } while (0) + #define HEREDOC_USING_SPACES 1 #define HEREDOC_USING_TABS 2 @@ -1179,19 +1195,6 @@ static void copy_heredoc_label_stack(void *void_heredoc_label) zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); } -#define RETURN_TOKEN(token) return emit_token(token, start_line); - -#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ - token = _token; \ - offset = _offset; \ - goto emit_token_with_str; \ - } while (0) - -#define SKIP_TOKEN(_token) do { \ - token = _token; \ - goto skip_token; \ - } while (0) - int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem) { int token; @@ -2274,7 +2277,6 @@ skip_escape_conversion: if (YYCURSOR == YYLIMIT) { YYCURSOR = saved_cursor; - ZVAL_NULL(zendlval); RETURN_TOKEN(T_START_HEREDOC); } @@ -2311,7 +2313,7 @@ skip_escape_conversion: int retval; ZVAL_UNDEF(&zv); - retval = lex_scan(&zv); + retval = lex_scan(&zv, NULL); zval_dtor(&zv); if (EG(exception)) { @@ -2572,20 +2574,30 @@ double_quotes_scan_done: heredoc_scan_done: - if (!EG(exception)) { - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); + if (EG(exception)) { + RETURN_TOKEN(T_ERROR); + } - if (!SCNG(heredoc_scan_ahead) - && strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - zend_string *copy = Z_STR_P(zendlval); + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); - zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0); - zend_string_release(copy); + if (!SCNG(heredoc_scan_ahead)) { + zend_string *copy = Z_STR_P(zendlval); + + if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + RETURN_TOKEN(T_ERROR); + } + + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) + && PARSER_MODE()) { + zend_string_free(copy); + RETURN_TOKEN(T_ERROR); } + + zend_string_free(copy); } - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } @@ -2661,10 +2673,15 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - if (spacing != -1 && !EG(exception)) { - zend_copy_value(zendlval, yytext, yyleng); + if (EG(exception)) { + RETURN_TOKEN(T_ERROR); + } - strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES); + zend_copy_value(zendlval, yytext, yyleng); + + if (spacing != -1 + && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { + RETURN_TOKEN(T_ERROR); } HANDLE_NEWLINES(yytext, yyleng - newline); From 24a8b9118b4ef4e902187193520da39088947a16 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Tue, 20 Mar 2018 12:50:12 +0000 Subject: [PATCH 38/54] Finish tokenizer updates with latest master changes --- Zend/zend_language_scanner.c | 70 ++++++++++++++++-------------------- Zend/zend_language_scanner.l | 18 +++------- 2 files changed, 36 insertions(+), 52 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 68bac2041d6e5..5e872c427f706 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1417,7 +1417,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2692 "Zend/zend_language_scanner.l" +#line 2684 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7251,18 +7251,15 @@ int start_line = CG(zend_lineno); heredoc_scan_done: - if (EG(exception)) { - RETURN_TOKEN(T_ERROR); - } - yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead)) { + if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { zend_string *copy = Z_STR_P(zendlval); if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - RETURN_TOKEN(T_ERROR); + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) @@ -7276,7 +7273,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7280 "Zend/zend_language_scanner.c" +#line 7277 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7319,7 +7316,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7323 "Zend/zend_language_scanner.c" +#line 7320 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7330,7 +7327,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7334 "Zend/zend_language_scanner.c" +#line 7331 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; @@ -7342,7 +7339,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7346 "Zend/zend_language_scanner.c" +#line 7343 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7362,7 +7359,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7366 "Zend/zend_language_scanner.c" +#line 7363 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7386,7 +7383,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7390 "Zend/zend_language_scanner.c" +#line 7387 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7450,7 +7447,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7454 "Zend/zend_language_scanner.c" +#line 7451 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7504,7 +7501,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7508 "Zend/zend_language_scanner.c" +#line 7505 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7593,7 +7590,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2692 "Zend/zend_language_scanner.l" +#line 2684 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7602,7 +7599,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7606 "Zend/zend_language_scanner.c" +#line 7603 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7616,7 +7613,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7620 "Zend/zend_language_scanner.c" +#line 7617 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7628,7 +7625,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7632 "Zend/zend_language_scanner.c" +#line 7629 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7679,7 +7676,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7683 "Zend/zend_language_scanner.c" +#line 7680 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7705,7 +7702,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7709 "Zend/zend_language_scanner.c" +#line 7706 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7716,7 +7713,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7720 "Zend/zend_language_scanner.c" +#line 7717 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7745,7 +7742,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7749 "Zend/zend_language_scanner.c" +#line 7746 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7766,7 +7763,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7770 "Zend/zend_language_scanner.c" +#line 7767 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7863,7 +7860,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 7867 "Zend/zend_language_scanner.c" +#line 7864 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7891,7 +7888,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7895 "Zend/zend_language_scanner.c" +#line 7892 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7905,7 +7902,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7909 "Zend/zend_language_scanner.c" +#line 7906 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7945,7 +7942,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 7949 "Zend/zend_language_scanner.c" +#line 7946 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7973,7 +7970,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7977 "Zend/zend_language_scanner.c" +#line 7974 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -7983,7 +7980,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2604 "Zend/zend_language_scanner.l" +#line 2601 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -8055,24 +8052,19 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - - if (EG(exception)) { - RETURN_TOKEN(T_ERROR); - } - zend_copy_value(zendlval, yytext, yyleng); - if (spacing != -1 + if (!EG(exception) && spacing != -1 && PARSER_MODE() && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - RETURN_TOKEN(T_ERROR); + zend_copy_value(zendlval, yytext, yyleng); } HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 8074 "Zend/zend_language_scanner.c" +#line 8066 "Zend/zend_language_scanner.c" } -#line 2701 "Zend/zend_language_scanner.l" +#line 2693 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d2ab0054c2e9a..4ac2e3420fa0b 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2574,18 +2574,15 @@ double_quotes_scan_done: heredoc_scan_done: - if (EG(exception)) { - RETURN_TOKEN(T_ERROR); - } - yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead)) { + if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { zend_string *copy = Z_STR_P(zendlval); if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - RETURN_TOKEN(T_ERROR); + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) @@ -2672,16 +2669,11 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - - if (EG(exception)) { - RETURN_TOKEN(T_ERROR); - } - zend_copy_value(zendlval, yytext, yyleng); - if (spacing != -1 + if (!EG(exception) && spacing != -1 && PARSER_MODE() && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - RETURN_TOKEN(T_ERROR); + zend_copy_value(zendlval, yytext, yyleng); } HANDLE_NEWLINES(yytext, yyleng - newline); From 4a12f447207628e1e5f90adcef741db57fa018e2 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 20 Mar 2018 23:16:23 +0100 Subject: [PATCH 39/54] Use the right macro Fixes segfaults in two error tests --- Zend/zend_language_scanner.c | 9760 +++++++++++++++-------------- Zend/zend_language_scanner.l | 4 +- Zend/zend_language_scanner_defs.h | 2 +- 3 files changed, 4885 insertions(+), 4881 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 5e872c427f706..78f0eb07bf37d 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 */ +/* Generated by re2c 0.16 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -75,7 +75,6 @@ /* perform sanity check. If this message is triggered you should increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ #define YYMAXFILL 16 - #if ZEND_MMAP_AHEAD < YYMAXFILL # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL #endif @@ -1209,7 +1208,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1213 "Zend/zend_language_scanner.c" +#line 1212 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1251,1054 +1250,818 @@ int start_line = CG(zend_lineno); } } /* *********************************** */ -yyc_ST_IN_SCRIPTING: +yyc_INITIAL: + YYDEBUG(1, *YYCURSOR); + YYFILL(7); + yych = *YYCURSOR; + if (yych == '<') goto yy5; + YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; +yy4: + YYDEBUG(4, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1921 "Zend/zend_language_scanner.l" { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 4, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 216, 216, 152, 152, 152, 152, 152, 152, - 152, 152, 0, 0, 0, 0, 0, 0, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - }; - YYDEBUG(1, *YYCURSOR); - YYFILL(16); - yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy5; - } - switch (yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: goto yy3; - case ' ': - case '!': goto yy8; - case '"': goto yy10; - case '#': goto yy12; - case '$': goto yy14; - case '%': goto yy15; - case '&': goto yy16; - case '\'': goto yy17; - case '(': goto yy19; - case ')': - case ',': - case ';': - case '@': - case '[': - case ']': - case '~': goto yy20; - case '*': goto yy21; - case '+': goto yy22; - case '-': goto yy23; - case '.': goto yy24; - case '/': goto yy25; - case '0': goto yy26; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy28; - case ':': goto yy30; - case '<': goto yy31; - case '=': goto yy32; - case '>': goto yy33; - case '?': goto yy34; - case 'A': - case 'a': goto yy35; - case 'B': - case 'b': goto yy37; - case 'C': - case 'c': goto yy38; - case 'D': - case 'd': goto yy39; - case 'E': - case 'e': goto yy40; - case 'F': - case 'f': goto yy41; - case 'G': - case 'g': goto yy42; - case 'I': - case 'i': goto yy45; - case 'L': - case 'l': goto yy46; - case 'N': - case 'n': goto yy47; - case 'O': - case 'o': goto yy48; - case 'P': - case 'p': goto yy49; - case 'R': - case 'r': goto yy50; - case 'S': - case 's': goto yy51; - case 'T': - case 't': goto yy52; - case 'U': - case 'u': goto yy53; - case 'V': - case 'v': goto yy54; - case 'W': - case 'w': goto yy55; - case 'X': - case 'x': goto yy56; - case 'Y': - case 'y': goto yy57; - case '\\': goto yy58; - case '^': goto yy60; - case '_': goto yy61; - case '`': goto yy62; - case '{': goto yy64; - case '|': goto yy66; - case '}': goto yy67; - default: goto yy43; - } -yy3: - YYDEBUG(3, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(4, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2684 "Zend/zend_language_scanner.l" - { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); } - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 1430 "Zend/zend_language_scanner.c" -yy5: - YYDEBUG(5, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(6, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy5; - } - YYDEBUG(7, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 1446 "Zend/zend_language_scanner.c" -yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy69; -yy9: - YYDEBUG(9, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1675 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(yytext[0]); -} -#line 1458 "Zend/zend_language_scanner.c" -yy10: - YYDEBUG(10, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(11, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2186 "Zend/zend_language_scanner.l" - { - int bprefix = (yytext[0] != '"') ? 1 : 0; +inline_char_handler: - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); - } else { - RETURN_TOKEN(T_ERROR); - } - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } + while (1) { + YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); - YYCURSOR--; - break; - } + YYCURSOR = ptr ? ptr + 1 : YYLIMIT; - /* Remember how much was scanned to save rescanning */ - SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); + if (YYCURSOR >= YYLIMIT) { + break; + } - YYCURSOR = SCNG(yy_text) + yyleng; + if (*YYCURSOR == '?') { + if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ - BEGIN(ST_DOUBLE_QUOTES); - RETURN_TOKEN('"'); -} -#line 1509 "Zend/zend_language_scanner.c" -yy12: - YYDEBUG(12, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(13, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2013 "Zend/zend_language_scanner.l" - { - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - CG(zend_lineno)++; + YYCURSOR--; break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; + } } - - break; } yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); + if (SCNG(output_filter)) { + size_t readsize; + char *s = NULL; + size_t sz = 0; + // TODO: avoid reallocation ??? + readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); + ZVAL_STRINGL(zendlval, s, sz); + efree(s); + if (readsize < yyleng) { + yyless(readsize); + } + } else if (yyleng == 1) { + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); + } else { + ZVAL_STRINGL(zendlval, yytext, yyleng); } - RETURN_TOKEN(T_COMMENT); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1547 "Zend/zend_language_scanner.c" -yy14: - YYDEBUG(14, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy9; - if (yych <= 'Z') goto yy71; - if (yych <= '^') goto yy9; - goto yy71; - } else { - if (yych <= '`') goto yy9; - if (yych <= 'z') goto yy71; - if (yych <= 0x7F) goto yy9; - goto yy71; - } -yy15: - YYDEBUG(15, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy74; - goto yy9; -yy16: - YYDEBUG(16, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy76; - if (yych == '=') goto yy78; - goto yy9; -yy17: - YYDEBUG(17, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(18, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2096 "Zend/zend_language_scanner.l" - { - register char *s, *t; - char *end; - int bprefix = (yytext[0] != '\'') ? 1 : 0; - - while (1) { - if (YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\'') { - YYCURSOR++; - yyleng = YYCURSOR - SCNG(yy_text); - - break; - } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - } else { - yyleng = YYLIMIT - SCNG(yy_text); - - /* Unclosed single quotes; treat similar to double quotes, but without a separate token - * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." - * rule, which continued in ST_IN_SCRIPTING state after the quote */ - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); +#line 1311 "Zend/zend_language_scanner.c" +yy5: + YYDEBUG(5, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '?') goto yy4; + YYDEBUG(6, *YYCURSOR); + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych == '=') goto yy8; + } else { + if (yych <= 'P') goto yy10; + if (yych == 'p') goto yy10; + } +yy7: + YYDEBUG(7, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1909 "Zend/zend_language_scanner.l" + { + if (CG(short_tags)) { + BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); } + RETURN_TOKEN(T_OPEN_TAG); + } else { + goto inline_char_handler; } - - if (yyleng-bprefix-2 <= 1) { - if (yyleng-bprefix-2 < 1) { - ZVAL_EMPTY_STRING(zendlval); +} +#line 1339 "Zend/zend_language_scanner.c" +yy8: + YYDEBUG(8, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(9, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1890 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ECHO); + } + RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); +} +#line 1353 "Zend/zend_language_scanner.c" +yy10: + YYDEBUG(10, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy12; + if (yych == 'h') goto yy12; +yy11: + YYDEBUG(11, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy7; +yy12: + YYDEBUG(12, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy13; + if (yych != 'p') goto yy11; +yy13: + YYDEBUG(13, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy11; + if (yych >= '\v') goto yy11; + } else { + if (yych <= '\r') goto yy16; + if (yych != ' ') goto yy11; + } +yy14: + YYDEBUG(14, *YYCURSOR); + ++YYCURSOR; +yy15: + YYDEBUG(15, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1899 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINE(yytext[yyleng-1]); + BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); + } + RETURN_TOKEN(T_OPEN_TAG); +} +#line 1393 "Zend/zend_language_scanner.c" +yy16: + YYDEBUG(16, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy14; + goto yy15; +/* *********************************** */ +yyc_ST_BACKQUOTE: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(17, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '_') { + if (yych == '$') goto yy21; } else { - zend_uchar c = (zend_uchar)*(yytext+bprefix+1); - if (c == '\n' || c == '\r') { - CG(zend_lineno)++; - } - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); + if (yych <= '`') goto yy22; + if (yych == '{') goto yy24; } - goto skip_escape_conversion; + YYDEBUG(19, *YYCURSOR); + ++YYCURSOR; +yy20: + YYDEBUG(20, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2439 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); } - ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - - /* convert escape sequences */ - s = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (1) { - if (UNEXPECTED(*s=='\\')) { - break; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - if (s == end) { - goto skip_escape_conversion; - } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; } - t = s; - while (s') goto yy36; yy33: YYDEBUG(33, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy9; - if (yych <= '=') goto yy130; - if (yych <= '>') goto yy132; - goto yy9; + YYCURSOR = YYMARKER; + goto yy27; yy34: YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '=') goto yy9; - if (yych <= '>') goto yy134; - if (yych <= '?') goto yy136; - goto yy9; -yy35: + ++YYCURSOR; YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'M') { - if (yych == 'B') goto yy138; - goto yy44; - } else { - if (yych <= 'N') goto yy139; - if (yych <= 'Q') goto yy44; - if (yych <= 'R') goto yy140; - goto yy141; - } - } else { - if (yych <= 'n') { - if (yych == 'b') goto yy138; - if (yych <= 'm') goto yy44; - goto yy139; - } else { - if (yych <= 'q') goto yy44; - if (yych <= 'r') goto yy140; - if (yych <= 's') goto yy141; - goto yy44; - } - } -yy36: - YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2008 "Zend/zend_language_scanner.l" +#line 1980 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_STRING, 0); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1928 "Zend/zend_language_scanner.c" -yy37: - YYDEBUG(37, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') { - if (yych <= '"') { - if (yych <= '!') goto yy44; - goto yy10; - } else { - if (yych == '\'') goto yy17; - goto yy44; - } - } else { - if (yych <= 'R') { - if (yych <= '<') goto yy143; - if (yych <= 'Q') goto yy44; - goto yy144; - } else { - if (yych == 'r') goto yy144; - goto yy44; - } - } -yy38: - YYDEBUG(38, *YYCURSOR); +#line 1592 "Zend/zend_language_scanner.c" +yy36: + YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy145; - goto yy44; - } else { - if (yych <= 'L') goto yy146; - if (yych <= 'N') goto yy44; - goto yy147; - } + if (yych <= '_') { + if (yych <= '@') goto yy33; + if (yych <= 'Z') goto yy37; + if (yych <= '^') goto yy33; } else { - if (yych <= 'k') { - if (yych == 'a') goto yy145; - goto yy44; - } else { - if (yych <= 'l') goto yy146; - if (yych == 'o') goto yy147; - goto yy44; - } + if (yych <= '`') goto yy33; + if (yych <= 'z') goto yy37; + if (yych <= 0x7F) goto yy33; } -yy39: +yy37: + YYDEBUG(37, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(38, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1972 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 1616 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_DOUBLE_QUOTES: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'E') goto yy148; - goto yy44; - } else { - if (yych <= 'I') goto yy149; - if (yych <= 'N') goto yy44; - goto yy150; - } + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '#') { + if (yych == '"') goto yy43; } else { - if (yych <= 'h') { - if (yych == 'e') goto yy148; - goto yy44; - } else { - if (yych <= 'i') goto yy149; - if (yych == 'o') goto yy150; - goto yy44; - } - } -yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy152; - case 'L': - case 'l': goto yy153; - case 'M': - case 'm': goto yy154; - case 'N': - case 'n': goto yy155; - case 'V': - case 'v': goto yy156; - case 'X': - case 'x': goto yy157; - default: goto yy44; + if (yych <= '$') goto yy45; + if (yych == '{') goto yy46; } -yy41: YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'N') { - if (yych == 'I') goto yy158; - goto yy44; - } else { - if (yych <= 'O') goto yy159; - if (yych <= 'T') goto yy44; - goto yy160; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy158; - goto yy44; - } else { - if (yych <= 'o') goto yy159; - if (yych == 'u') goto yy160; - goto yy44; - } - } + ++YYCURSOR; yy42: YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'L') goto yy161; - if (yych <= 'N') goto yy44; - goto yy162; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy44; - goto yy161; - } else { - if (yych == 'o') goto yy162; - goto yy44; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2385 "Zend/zend_language_scanner.l" + { + if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { + YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; + SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); + + goto double_quotes_scan_done; + } + + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; } + + YYCURSOR--; + break; + } + +double_quotes_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + + 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 1722 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy44: YYDEBUG(44, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy43; - } - goto yy36; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2374 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('"'); +} +#line 1733 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'L') { - if (yych == 'F') goto yy163; - goto yy44; - } else { - if (yych <= 'M') goto yy165; - if (yych <= 'N') goto yy166; - if (yych <= 'R') goto yy44; - goto yy167; - } + if (yych <= '_') { + if (yych <= '@') goto yy42; + if (yych <= 'Z') goto yy47; + if (yych <= '^') goto yy42; + goto yy47; } else { - if (yych <= 'm') { - if (yych == 'f') goto yy163; - if (yych <= 'l') goto yy44; - goto yy165; + if (yych <= 'z') { + if (yych <= '`') goto yy42; + goto yy47; } else { - if (yych <= 'n') goto yy166; - if (yych == 's') goto yy167; - goto yy44; + if (yych <= '{') goto yy50; + if (yych <= 0x7F) goto yy42; + goto yy47; } } yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy168; - if (yych == 'i') goto yy168; - goto yy44; + if (yych == '$') goto yy52; + goto yy42; yy47: YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy169; - if (yych <= 'D') goto yy44; - goto yy170; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy169; - } else { - if (yych == 'e') goto yy170; - goto yy44; - } - } -yy48: + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy171; - if (yych == 'r') goto yy171; - goto yy44; + if (yybm[0+yych] & 128) { + goto yy47; + } + if (yych == '-') goto yy54; + if (yych <= '@') goto yy49; + if (yych <= '[') goto yy56; yy49: YYDEBUG(49, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'R') goto yy173; - if (yych <= 'T') goto yy44; - goto yy174; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy44; - goto yy173; - } else { - if (yych == 'u') goto yy174; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1986 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 1776 "Zend/zend_language_scanner.c" yy50: YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy175; - if (yych == 'e') goto yy175; - goto yy44; -yy51: + ++YYCURSOR; YYDEBUG(51, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych == 'T') goto yy176; - if (yych <= 'V') goto yy44; - goto yy177; - } else { - if (yych <= 't') { - if (yych <= 's') goto yy44; - goto yy176; - } else { - if (yych == 'w') goto yy177; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1686 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 1787 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy178; - if (yych <= 'Q') goto yy44; - goto yy179; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy44; - goto yy178; - } else { - if (yych == 'r') goto yy179; - goto yy44; - } - } -yy53: + ++YYCURSOR; YYDEBUG(53, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy180; - if (yych <= 'R') goto yy44; - goto yy181; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy44; - goto yy180; - } else { - if (yych == 's') goto yy181; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2367 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); +} +#line 1799 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy182; - if (yych == 'a') goto yy182; - goto yy44; + if (yych == '>') goto yy58; yy55: YYDEBUG(55, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy183; - if (yych == 'h') goto yy183; - goto yy44; + YYCURSOR = YYMARKER; + goto yy49; yy56: YYDEBUG(56, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy184; - if (yych == 'o') goto yy184; - goto yy44; -yy57: - YYDEBUG(57, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy185; - if (yych == 'i') goto yy185; - goto yy44; -yy58: - YYDEBUG(58, *YYCURSOR); ++YYCURSOR; - YYDEBUG(59, *YYCURSOR); + YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1980 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2217 "Zend/zend_language_scanner.c" -yy60: - YYDEBUG(60, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy186; - goto yy9; -yy61: - YYDEBUG(61, *YYCURSOR); +#line 1819 "Zend/zend_language_scanner.c" +yy58: + YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy188; - goto yy44; -yy62: - YYDEBUG(62, *YYCURSOR); + if (yych <= '_') { + if (yych <= '@') goto yy55; + if (yych <= 'Z') goto yy59; + if (yych <= '^') goto yy55; + } else { + if (yych <= '`') goto yy55; + if (yych <= 'z') goto yy59; + if (yych <= 0x7F) goto yy55; + } +yy59: + YYDEBUG(59, *YYCURSOR); ++YYCURSOR; - YYDEBUG(63, *YYCURSOR); + YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2347 "Zend/zend_language_scanner.l" +#line 1972 "Zend/zend_language_scanner.l" { - BEGIN(ST_BACKQUOTE); - RETURN_TOKEN('`'); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2238 "Zend/zend_language_scanner.c" -yy64: - YYDEBUG(64, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(65, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); +#line 1843 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_END_HEREDOC: + YYDEBUG(61, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(63, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(64, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2353 "Zend/zend_language_scanner.l" + { + zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); + + YYCURSOR += heredoc_label->length - 1; + yyleng = heredoc_label->length; + + heredoc_label_dtor(heredoc_label); + efree(heredoc_label); + + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_END_HEREDOC); } -#line 2249 "Zend/zend_language_scanner.c" -yy66: - YYDEBUG(66, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy189; - if (yych == '|') goto yy191; - goto yy9; -yy67: +#line 1867 "Zend/zend_language_scanner.c" +/* *********************************** */ +yyc_ST_HEREDOC: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(65, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych == '$') goto yy69; + if (yych == '{') goto yy70; YYDEBUG(67, *YYCURSOR); ++YYCURSOR; +yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" +#line 2485 "Zend/zend_language_scanner.l" { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + if (SCNG(heredoc_scan_ahead)) { + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + } else { + CG(increment_lineno) = 1; + YYCURSOR -= indentation; + heredoc_label->length += indentation; + } + + BEGIN(ST_END_HEREDOC); + + goto heredoc_scan_done; + } + continue; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + +heredoc_scan_done: + + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { + zend_string *copy = Z_STR_P(zendlval); + + if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) + && PARSER_MODE()) { + zend_string_free(copy); + RETURN_TOKEN(T_ERROR); + } + + zend_string_free(copy); } - RETURN_TOKEN('}'); + + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 2269 "Zend/zend_language_scanner.c" +#line 2030 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy193; + if (yych <= '_') { + if (yych <= '@') goto yy68; + if (yych <= 'Z') goto yy71; + if (yych <= '^') goto yy68; + goto yy71; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy68; + goto yy71; + } else { + if (yych <= '{') goto yy74; + if (yych <= 0x7F) goto yy68; + goto yy71; + } + } yy70: YYDEBUG(70, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 2281 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '$') goto yy76; + goto yy68; yy71: YYDEBUG(71, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); + YYMARKER = ++YYCURSOR; + YYFILL(3); yych = *YYCURSOR; YYDEBUG(72, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy71; - } else { - if (yych <= '@') goto yy73; - if (yych <= 'Z') goto yy71; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy71; - } else { - if (yych <= 'z') goto yy71; - if (yych >= 0x80) goto yy71; - } + if (yybm[0+yych] & 128) { + goto yy71; } + if (yych == '-') goto yy78; + if (yych <= '@') goto yy73; + if (yych <= '[') goto yy80; yy73: YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); @@ -2306,5084 +2069,5494 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2310 "Zend/zend_language_scanner.c" +#line 2073 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1623 "Zend/zend_language_scanner.l" +#line 1686 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MOD_EQUAL); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2320 "Zend/zend_language_scanner.c" +#line 2084 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1651 "Zend/zend_language_scanner.l" +#line 2367 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOLEAN_AND); + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 2330 "Zend/zend_language_scanner.c" +#line 2096 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '>') goto yy82; +yy79: YYDEBUG(79, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy73; +yy80: + YYDEBUG(80, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1635 "Zend/zend_language_scanner.l" +#line 1980 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AND_EQUAL); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2340 "Zend/zend_language_scanner.c" -yy80: - YYDEBUG(80, *YYCURSOR); +#line 2116 "Zend/zend_language_scanner.c" +yy82: + YYDEBUG(82, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy79; + if (yych <= 'Z') goto yy83; + if (yych <= '^') goto yy79; + } else { + if (yych <= '`') goto yy79; + if (yych <= 'z') goto yy83; + if (yych <= 0x7F) goto yy79; + } +yy83: + YYDEBUG(83, *YYCURSOR); ++YYCURSOR; - YYFILL(7); + YYDEBUG(84, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1972 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 2140 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_IN_SCRIPTING: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 4, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 216, 216, 152, 152, 152, 152, 152, 152, + 152, 152, 0, 0, 0, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 16, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + }; + YYDEBUG(85, *YYCURSOR); + YYFILL(16); yych = *YYCURSOR; -yy81: - YYDEBUG(81, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy80; + if (yybm[0+yych] & 4) { + goto yy89; } switch (yych) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case '\t': + case '\n': + case '\v': + case '\f': + case '\r': + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x7F: goto yy87; + case ' ': + case '!': goto yy92; + case '"': goto yy94; + case '#': goto yy96; + case '$': goto yy98; + case '%': goto yy99; + case '&': goto yy100; + case '\'': goto yy101; + case '(': goto yy103; + case ')': + case ',': + case ';': + case '@': + case '[': + case ']': + case '~': goto yy104; + case '*': goto yy105; + case '+': goto yy106; + case '-': goto yy107; + case '.': goto yy108; + case '/': goto yy109; + case '0': goto yy110; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy112; + case ':': goto yy114; + case '<': goto yy115; + case '=': goto yy116; + case '>': goto yy117; + case '?': goto yy118; case 'A': - case 'a': goto yy83; + case 'a': goto yy119; case 'B': - case 'b': goto yy84; + case 'b': goto yy121; + case 'C': + case 'c': goto yy122; case 'D': - case 'd': goto yy85; + case 'd': goto yy123; + case 'E': + case 'e': goto yy124; case 'F': - case 'f': goto yy86; + case 'f': goto yy125; + case 'G': + case 'g': goto yy126; case 'I': - case 'i': goto yy87; + case 'i': goto yy129; + case 'L': + case 'l': goto yy130; + case 'N': + case 'n': goto yy131; case 'O': - case 'o': goto yy88; + case 'o': goto yy132; + case 'P': + case 'p': goto yy133; case 'R': - case 'r': goto yy89; + case 'r': goto yy134; case 'S': - case 's': goto yy90; + case 's': goto yy135; + case 'T': + case 't': goto yy136; case 'U': - case 'u': goto yy91; - default: goto yy82; - } -yy82: - YYDEBUG(82, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy9; - } else { - goto yy27; - } - } else { - if (yyaccept == 2) { - goto yy36; - } else { - goto yy109; - } - } - } else { - if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy113; - } else { - goto yy122; - } - } else { - goto yy457; - } - } -yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy195; - if (yych == 'r') goto yy195; - goto yy82; -yy84: - YYDEBUG(84, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy196; - if (yych <= 'N') goto yy82; - goto yy197; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy82; - goto yy196; - } else { - if (yych == 'o') goto yy197; - goto yy82; - } + case 'u': goto yy137; + case 'V': + case 'v': goto yy138; + case 'W': + case 'w': goto yy139; + case 'X': + case 'x': goto yy140; + case 'Y': + case 'y': goto yy141; + case '\\': goto yy142; + case '^': goto yy144; + case '_': goto yy145; + case '`': goto yy146; + case '{': goto yy148; + case '|': goto yy150; + case '}': goto yy151; + default: goto yy127; } -yy85: - YYDEBUG(85, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy198; - if (yych == 'o') goto yy198; - goto yy82; -yy86: - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy199; - if (yych == 'l') goto yy199; - goto yy82; yy87: YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy200; - if (yych == 'n') goto yy200; - goto yy82; -yy88: + ++YYCURSOR; YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy201; - if (yych == 'b') goto yy201; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2684 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} +#line 2318 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy202; - if (yych == 'e') goto yy202; - goto yy82; -yy90: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy203; - if (yych == 't') goto yy203; - goto yy82; -yy91: + if (yybm[0+yych] & 4) { + goto yy89; + } YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy204; - if (yych == 'n') goto yy204; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1392 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 2334 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy205; + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy153; +yy93: YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1607 "Zend/zend_language_scanner.l" +#line 1675 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_POW); + RETURN_TOKEN(yytext[0]); } -#line 2474 "Zend/zend_language_scanner.c" +#line 2346 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 2186 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MUL_EQUAL); + int bprefix = (yytext[0] != '"') ? 1 : 0; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + yyleng = YYCURSOR - SCNG(yy_text); + if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) + || !PARSER_MODE()) { + RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); + } else { + RETURN_TOKEN(T_ERROR); + } + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + + /* Remember how much was scanned to save rescanning */ + SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); + + YYCURSOR = SCNG(yy_text) + yyleng; + + BEGIN(ST_DOUBLE_QUOTES); + RETURN_TOKEN('"'); } -#line 2484 "Zend/zend_language_scanner.c" +#line 2397 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" +#line 2013 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INC); + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + CG(zend_lineno)++; + break; + case '?': + if (*YYCURSOR == '>') { + YYCURSOR--; + break; + } + /* fall through */ + default: + continue; + } + + break; + } + + yyleng = YYCURSOR - SCNG(yy_text); + + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); + } + RETURN_TOKEN(T_COMMENT); } -#line 2494 "Zend/zend_language_scanner.c" +#line 2435 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy93; + if (yych <= 'Z') goto yy155; + if (yych <= '^') goto yy93; + goto yy155; + } else { + if (yych <= '`') goto yy93; + if (yych <= 'z') goto yy155; + if (yych <= 0x7F) goto yy93; + goto yy155; + } +yy99: YYDEBUG(99, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1595 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 2504 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '=') goto yy158; + goto yy93; yy100: YYDEBUG(100, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '&') goto yy160; + if (yych == '=') goto yy162; + goto yy93; +yy101: YYDEBUG(101, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEC); -} -#line 2514 "Zend/zend_language_scanner.c" -yy102: - YYDEBUG(102, *YYCURSOR); ++YYCURSOR; - YYDEBUG(103, *YYCURSOR); + YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1599 "Zend/zend_language_scanner.l" +#line 2096 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MINUS_EQUAL); + register char *s, *t; + char *end; + int bprefix = (yytext[0] != '\'') ? 1 : 0; + + while (1) { + if (YYCURSOR < YYLIMIT) { + if (*YYCURSOR == '\'') { + YYCURSOR++; + yyleng = YYCURSOR - SCNG(yy_text); + + break; + } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + } else { + yyleng = YYLIMIT - SCNG(yy_text); + + /* Unclosed single quotes; treat similar to double quotes, but without a separate token + * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." + * rule, which continued in ST_IN_SCRIPTING state after the quote */ + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + } + + if (yyleng-bprefix-2 <= 1) { + if (yyleng-bprefix-2 < 1) { + ZVAL_EMPTY_STRING(zendlval); + } else { + zend_uchar c = (zend_uchar)*(yytext+bprefix+1); + if (c == '\n' || c == '\r') { + CG(zend_lineno)++; + } + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); + } + goto skip_escape_conversion; + } + ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); + + /* convert escape sequences */ + s = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (1) { + if (UNEXPECTED(*s=='\\')) { + break; + } + if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { + CG(zend_lineno)++; + } + s++; + if (s == end) { + goto skip_escape_conversion; + } + } + + t = s; + while (s 2) { - doc_com = 1; - RESET_DOC_COMMENT(); - } else { - doc_com = 0; - } - - while (YYCURSOR < YYLIMIT) { - if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { - break; + char *end; + if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + /* This isn't an assert, we need to ensure 019 isn't valid octal + * Because the lexing itself doesn't do that for us + */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ERROR); + } + RETURN_TOKEN_WITH_VAL(T_LNUMBER); } - } - - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; } else { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - - if (doc_com) { - CG(doc_comment) = zend_string_init(yytext, yyleng, 0); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_DOC_COMMENT); + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + if (errno == ERANGE) { /* Overflow */ + errno = 0; + if (yytext[0] == '0') { /* octal overflow */ + ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); + } else { + ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, + "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ERROR); + } + } + RETURN_TOKEN_WITH_VAL(T_DNUMBER); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ERROR); + } + RETURN_TOKEN_WITH_VAL(T_DNUMBER); } - RETURN_TOKEN(T_DOC_COMMENT); - } - - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); } - RETURN_TOKEN(T_COMMENT); + ZEND_ASSERT(!errno); + RETURN_TOKEN_WITH_VAL(T_LNUMBER); } -#line 2625 "Zend/zend_language_scanner.c" +#line 2736 "Zend/zend_language_scanner.c" +yy112: + YYDEBUG(112, *YYCURSOR); + yyaccept = 1; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(113, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy112; + } + if (yych <= 'D') { + if (yych == '.') goto yy191; + goto yy111; + } else { + if (yych <= 'E') goto yy201; + if (yych == 'e') goto yy201; + goto yy111; + } yy114: YYDEBUG(114, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == ':') goto yy203; + goto yy93; +yy115: YYDEBUG(115, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIV_EQUAL); -} -#line 2635 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= ';') goto yy93; + if (yych <= '<') goto yy205; + if (yych <= '=') goto yy207; + if (yych <= '>') goto yy209; + goto yy93; yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy210; - } - goto yy82; + if (yych <= '<') goto yy93; + if (yych <= '=') goto yy210; + if (yych <= '>') goto yy212; + goto yy93; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy213; - goto yy82; - } else { - if (yych <= '-') goto yy213; - if (yych <= '/') goto yy82; - if (yych <= '9') goto yy214; - goto yy82; - } + if (yych <= '<') goto yy93; + if (yych <= '=') goto yy214; + if (yych <= '>') goto yy216; + goto yy93; yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy216; - } - goto yy82; + if (yych <= '=') goto yy93; + if (yych <= '>') goto yy218; + if (yych <= '?') goto yy220; + goto yy93; yy119: YYDEBUG(119, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'S') { + if (yych <= 'M') { + if (yych == 'B') goto yy222; + goto yy128; + } else { + if (yych <= 'N') goto yy223; + if (yych <= 'Q') goto yy128; + if (yych <= 'R') goto yy224; + goto yy225; + } + } else { + if (yych <= 'n') { + if (yych == 'b') goto yy222; + if (yych <= 'm') goto yy128; + goto yy223; + } else { + if (yych <= 'q') goto yy128; + if (yych <= 'r') goto yy224; + if (yych <= 's') goto yy225; + goto yy128; + } + } +yy120: YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1411 "Zend/zend_language_scanner.l" +#line 2008 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 2671 "Zend/zend_language_scanner.c" +#line 2821 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); - yyaccept = 5; + yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy122; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy221; + if (yych <= ';') { + if (yych <= '"') { + if (yych <= '!') goto yy128; + goto yy94; + } else { + if (yych == '\'') goto yy101; + goto yy128; + } + } else { + if (yych <= 'R') { + if (yych <= '<') goto yy227; + if (yych <= 'Q') goto yy128; + goto yy228; + } else { + if (yych == 'r') goto yy228; + goto yy128; + } + } yy122: YYDEBUG(122, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1667 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SL); -} -#line 2686 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') goto yy229; + goto yy128; + } else { + if (yych <= 'L') goto yy230; + if (yych <= 'N') goto yy128; + goto yy231; + } + } else { + if (yych <= 'k') { + if (yych == 'a') goto yy229; + goto yy128; + } else { + if (yych <= 'l') goto yy230; + if (yych == 'o') goto yy231; + goto yy128; + } + } yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy223; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'E') goto yy232; + goto yy128; + } else { + if (yych <= 'I') goto yy233; + if (yych <= 'N') goto yy128; + goto yy234; + } + } else { + if (yych <= 'h') { + if (yych == 'e') goto yy232; + goto yy128; + } else { + if (yych <= 'i') goto yy233; + if (yych == 'o') goto yy234; + goto yy128; + } + } +yy124: YYDEBUG(124, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); -} -#line 2697 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy236; + case 'L': + case 'l': goto yy237; + case 'M': + case 'm': goto yy238; + case 'N': + case 'n': goto yy239; + case 'V': + case 'v': goto yy240; + case 'X': + case 'x': goto yy241; + default: goto yy128; + } yy125: YYDEBUG(125, *YYCURSOR); - ++YYCURSOR; - goto yy70; + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'I') goto yy242; + goto yy128; + } else { + if (yych <= 'O') goto yy243; + if (yych <= 'T') goto yy128; + goto yy244; + } + } else { + if (yych <= 'n') { + if (yych == 'i') goto yy242; + goto yy128; + } else { + if (yych <= 'o') goto yy243; + if (yych == 'u') goto yy244; + goto yy128; + } + } yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy225; + if (yych <= 'O') { + if (yych == 'L') goto yy245; + if (yych <= 'N') goto yy128; + goto yy246; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy128; + goto yy245; + } else { + if (yych == 'o') goto yy246; + goto yy128; + } + } +yy127: YYDEBUG(127, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_EQUAL); -} -#line 2712 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy128: YYDEBUG(128, *YYCURSOR); - ++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy127; + } + goto yy120; +yy129: YYDEBUG(129, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_ARROW); -} -#line 2722 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'L') { + if (yych == 'F') goto yy247; + goto yy128; + } else { + if (yych <= 'M') goto yy249; + if (yych <= 'N') goto yy250; + if (yych <= 'R') goto yy128; + goto yy251; + } + } else { + if (yych <= 'm') { + if (yych == 'f') goto yy247; + if (yych <= 'l') goto yy128; + goto yy249; + } else { + if (yych <= 'n') goto yy250; + if (yych == 's') goto yy251; + goto yy128; + } + } yy130: YYDEBUG(130, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy252; + if (yych == 'i') goto yy252; + goto yy128; +yy131: YYDEBUG(131, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); -} -#line 2732 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy253; + if (yych <= 'D') goto yy128; + goto yy254; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy253; + } else { + if (yych == 'e') goto yy254; + goto yy128; + } + } yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy227; + if (yych == 'R') goto yy255; + if (yych == 'r') goto yy255; + goto yy128; +yy133: YYDEBUG(133, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1671 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR); -} -#line 2743 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'R') goto yy257; + if (yych <= 'T') goto yy128; + goto yy258; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy128; + goto yy257; + } else { + if (yych == 'u') goto yy258; + goto yy128; + } + } yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - if (yych == '\r') goto yy230; + if (yych == 'E') goto yy259; + if (yych == 'e') goto yy259; + goto yy128; yy135: YYDEBUG(135, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2084 "Zend/zend_language_scanner.l" - { - BEGIN(INITIAL); - if (yytext[yyleng-1] != '>') { - CG(increment_lineno) = 1; - } - if (PARSER_MODE()) { - RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ - } - RETURN_TOKEN(T_CLOSE_TAG); -} -#line 2763 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'W') { + if (yych == 'T') goto yy260; + if (yych <= 'V') goto yy128; + goto yy261; + } else { + if (yych <= 't') { + if (yych <= 's') goto yy128; + goto yy260; + } else { + if (yych == 'w') goto yy261; + goto yy128; + } + } yy136: YYDEBUG(136, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'H') goto yy262; + if (yych <= 'Q') goto yy128; + goto yy263; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy128; + goto yy262; + } else { + if (yych == 'r') goto yy263; + goto yy128; + } + } +yy137: YYDEBUG(137, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1423 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_COALESCE); -} -#line 2773 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == 'N') goto yy264; + if (yych <= 'R') goto yy128; + goto yy265; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy128; + goto yy264; + } else { + if (yych == 's') goto yy265; + goto yy128; + } + } yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy231; - if (yych == 's') goto yy231; - goto yy44; + if (yych == 'A') goto yy266; + if (yych == 'a') goto yy266; + goto yy128; yy139: YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy232; - if (yych == 'd') goto yy232; - goto yy44; + if (yych == 'H') goto yy267; + if (yych == 'h') goto yy267; + goto yy128; yy140: YYDEBUG(140, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy234; - if (yych == 'r') goto yy234; - goto yy44; + if (yych == 'O') goto yy268; + if (yych == 'o') goto yy268; + goto yy128; yy141: YYDEBUG(141, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy269; + if (yych == 'i') goto yy269; + goto yy128; +yy142: YYDEBUG(142, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1327 "Zend/zend_language_scanner.l" +#line 1415 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AS); + RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2804 "Zend/zend_language_scanner.c" -yy143: - YYDEBUG(143, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy235; - goto yy82; +#line 3110 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy236; - if (yych == 'e') goto yy236; - goto yy44; + if (yych == '=') goto yy270; + goto yy93; yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy44; - goto yy237; - } else { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy238; - goto yy239; - } - } else { - if (yych <= 'r') { - if (yych == 'l') goto yy237; - goto yy44; - } else { - if (yych <= 's') goto yy238; - if (yych <= 't') goto yy239; - goto yy44; - } - } + if (yych == '_') goto yy272; + goto yy128; yy146: YYDEBUG(146, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy240; - if (yych <= 'N') goto yy44; - goto yy241; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy240; - } else { - if (yych == 'o') goto yy241; - goto yy44; - } - } -yy147: + ++YYCURSOR; YYDEBUG(147, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy242; - if (yych == 'n') goto yy242; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2347 "Zend/zend_language_scanner.l" + { + BEGIN(ST_BACKQUOTE); + RETURN_TOKEN('`'); +} +#line 3131 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy243; - if (yych <= 'E') goto yy44; - goto yy244; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy44; - goto yy243; - } else { - if (yych == 'f') goto yy244; - goto yy44; - } - } -yy149: + ++YYCURSOR; YYDEBUG(149, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy245; - if (yych == 'e') goto yy245; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1680 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN('{'); +} +#line 3142 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == '=') goto yy273; + if (yych == '|') goto yy275; + goto yy93; +yy151: YYDEBUG(151, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(152, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1295 "Zend/zend_language_scanner.l" +#line 1692 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DO); + RESET_DOC_COMMENT(); + if (!zend_stack_is_empty(&SCNG(state_stack))) { + yy_pop_state(); + } + RETURN_TOKEN('}'); } -#line 2894 "Zend/zend_language_scanner.c" -yy152: - YYDEBUG(152, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy247; - if (yych == 'h') goto yy247; - goto yy44; +#line 3162 "Zend/zend_language_scanner.c" yy153: YYDEBUG(153, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy248; - if (yych == 's') goto yy248; - goto yy44; + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy277; yy154: YYDEBUG(154, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy249; - if (yych == 'p') goto yy249; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1579 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_NOT_EQUAL); +} +#line 3174 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy250; - if (yych == 'd') goto yy250; - goto yy44; -yy156: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy251; - if (yych == 'a') goto yy251; - goto yy44; -yy157: - YYDEBUG(157, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy252; - if (yych <= 'S') goto yy44; - goto yy253; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy155; + } else { + if (yych <= '@') goto yy157; + if (yych <= 'Z') goto yy155; + } } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy252; + if (yych <= '`') { + if (yych <= '_') goto yy155; } else { - if (yych == 't') goto yy253; - goto yy44; + if (yych <= 'z') goto yy155; + if (yych >= 0x80) goto yy155; } } +yy157: + YYDEBUG(157, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1986 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 3203 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy254; - if (yych == 'n') goto yy254; - goto yy44; -yy159: + ++YYCURSOR; YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy255; - if (yych == 'r') goto yy255; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1623 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MOD_EQUAL); +} +#line 3213 "Zend/zend_language_scanner.c" yy160: YYDEBUG(160, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy257; - if (yych == 'n') goto yy257; - goto yy44; -yy161: + ++YYCURSOR; YYDEBUG(161, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy258; - if (yych == 'o') goto yy258; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1651 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_AND); +} +#line 3223 "Zend/zend_language_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy259; - if (yych == 't') goto yy259; - goto yy44; -yy163: + ++YYCURSOR; YYDEBUG(163, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(164, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1271 "Zend/zend_language_scanner.l" +#line 1635 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IF); + RETURN_TOKEN(T_AND_EQUAL); } -#line 2983 "Zend/zend_language_scanner.c" +#line 3233 "Zend/zend_language_scanner.c" +yy164: + YYDEBUG(164, *YYCURSOR); + ++YYCURSOR; + YYFILL(7); + yych = *YYCURSOR; yy165: YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy260; - if (yych == 'p') goto yy260; - goto yy44; + if (yybm[0+yych] & 32) { + goto yy164; + } + switch (yych) { + case 'A': + case 'a': goto yy167; + case 'B': + case 'b': goto yy168; + case 'D': + case 'd': goto yy169; + case 'F': + case 'f': goto yy170; + case 'I': + case 'i': goto yy171; + case 'O': + case 'o': goto yy172; + case 'R': + case 'r': goto yy173; + case 'S': + case 's': goto yy174; + case 'U': + case 'u': goto yy175; + default: goto yy166; + } yy166: YYDEBUG(166, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy44; - goto yy261; + YYCURSOR = YYMARKER; + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy93; + } else { + goto yy111; + } } else { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy262; - goto yy263; + if (yyaccept == 2) { + goto yy120; + } else { + goto yy193; + } } } else { - if (yych <= 'r') { - if (yych == 'c') goto yy261; - goto yy44; + if (yyaccept <= 5) { + if (yyaccept == 4) { + goto yy197; + } else { + goto yy206; + } } else { - if (yych <= 's') goto yy262; - if (yych <= 't') goto yy263; - goto yy44; + goto yy541; } } yy167: YYDEBUG(167, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy264; - if (yych == 's') goto yy264; - goto yy44; + if (yych == 'R') goto yy279; + if (yych == 'r') goto yy279; + goto yy166; yy168: YYDEBUG(168, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy265; - if (yych == 's') goto yy265; - goto yy44; + if (yych <= 'O') { + if (yych == 'I') goto yy280; + if (yych <= 'N') goto yy166; + goto yy281; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy166; + goto yy280; + } else { + if (yych == 'o') goto yy281; + goto yy166; + } + } yy169: YYDEBUG(169, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy266; - if (yych == 'm') goto yy266; - goto yy44; + if (yych == 'O') goto yy282; + if (yych == 'o') goto yy282; + goto yy166; yy170: YYDEBUG(170, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy267; - if (yych == 'w') goto yy267; - goto yy44; + if (yych == 'L') goto yy283; + if (yych == 'l') goto yy283; + goto yy166; yy171: YYDEBUG(171, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'N') goto yy284; + if (yych == 'n') goto yy284; + goto yy166; +yy172: YYDEBUG(172, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1655 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_OR); -} -#line 3048 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'B') goto yy285; + if (yych == 'b') goto yy285; + goto yy166; yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy269; - if (yych <= 'N') goto yy44; - goto yy270; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy269; - } else { - if (yych == 'o') goto yy270; - goto yy44; - } - } + if (yych == 'E') goto yy286; + if (yych == 'e') goto yy286; + goto yy166; yy174: YYDEBUG(174, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy271; - if (yych == 'b') goto yy271; - goto yy44; + if (yych == 'T') goto yy287; + if (yych == 't') goto yy287; + goto yy166; yy175: YYDEBUG(175, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy272; - if (yych <= 'S') goto yy44; - goto yy273; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy44; - goto yy272; - } else { - if (yych == 't') goto yy273; - goto yy44; - } - } + if (yych == 'N') goto yy288; + if (yych == 'n') goto yy288; + goto yy166; yy176: YYDEBUG(176, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy274; - if (yych == 'a') goto yy274; - goto yy44; -yy177: + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy289; YYDEBUG(177, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy275; - if (yych == 'i') goto yy275; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1607 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW); +} +#line 3367 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy276; - if (yych == 'r') goto yy276; - goto yy44; -yy179: + ++YYCURSOR; YYDEBUG(179, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy277; - if (yych <= 'X') goto yy44; - goto yy278; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy277; - } else { - if (yych == 'y') goto yy278; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1603 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MUL_EQUAL); +} +#line 3377 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy280; - if (yych == 's') goto yy280; - goto yy44; -yy181: + ++YYCURSOR; YYDEBUG(181, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy281; - if (yych == 'e') goto yy281; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1559 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INC); +} +#line 3387 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy283; - if (yych == 'r') goto yy283; - goto yy44; -yy183: + ++YYCURSOR; YYDEBUG(183, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy285; - if (yych == 'i') goto yy285; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1595 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PLUS_EQUAL); +} +#line 3397 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy286; - if (yych == 'r') goto yy286; - goto yy44; -yy185: + ++YYCURSOR; YYDEBUG(185, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy288; - if (yych == 'e') goto yy288; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1563 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEC); +} +#line 3407 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1599 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_XOR_EQUAL); + RETURN_TOKEN(T_MINUS_EQUAL); } -#line 3166 "Zend/zend_language_scanner.c" +#line 3417 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy289; - case 'D': - case 'd': goto yy290; - case 'F': - case 'f': goto yy291; - case 'H': - case 'h': goto yy292; - case 'L': - case 'l': goto yy293; - case 'M': - case 'm': goto yy294; - case 'N': - case 'n': goto yy295; - case 'T': - case 't': goto yy296; - default: goto yy44; - } -yy189: - YYDEBUG(189, *YYCURSOR); ++YYCURSOR; - YYDEBUG(190, *YYCURSOR); + YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1387 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OR_EQUAL); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 3198 "Zend/zend_language_scanner.c" +#line 3428 "Zend/zend_language_scanner.c" +yy190: + YYDEBUG(190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy291; + goto yy166; yy191: YYDEBUG(191, *YYCURSOR); - ++YYCURSOR; + yyaccept = 3; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(192, *YYCURSOR); + if (yych <= 'D') { + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy191; + } else { + if (yych <= 'E') goto yy201; + if (yych == 'e') goto yy201; + } +yy193: + YYDEBUG(193, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1647 "Zend/zend_language_scanner.l" +#line 1848 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOLEAN_OR); + 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_WITH_VAL(T_DNUMBER); } -#line 3208 "Zend/zend_language_scanner.c" -yy193: - YYDEBUG(193, *YYCURSOR); - ++YYCURSOR; +#line 3460 "Zend/zend_language_scanner.c" +yy194: YYDEBUG(194, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(195, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); + RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3218 "Zend/zend_language_scanner.c" -yy195: - YYDEBUG(195, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy297; - if (yych == 'r') goto yy297; - goto yy82; +#line 3470 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy298; - if (yych == 'n') goto yy298; - goto yy82; + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '*') goto yy293; yy197: YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy299; - if (yych == 'o') goto yy299; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2045 "Zend/zend_language_scanner.l" + { + int doc_com; + + if (yyleng > 2) { + doc_com = 1; + RESET_DOC_COMMENT(); + } else { + doc_com = 0; + } + + while (YYCURSOR < YYLIMIT) { + if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { + break; + } + } + + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } else { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + } + + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + + if (doc_com) { + CG(doc_comment) = zend_string_init(yytext, yyleng, 0); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_DOC_COMMENT); + } + RETURN_TOKEN(T_DOC_COMMENT); + } + + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); + } + RETURN_TOKEN(T_COMMENT); +} +#line 3518 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy300; - if (yych == 'u') goto yy300; - goto yy82; -yy199: + ++YYCURSOR; YYDEBUG(199, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy301; - if (yych == 'o') goto yy301; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1615 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIV_EQUAL); +} +#line 3528 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy302; - if (yych == 't') goto yy302; - goto yy82; + if (yybm[0+yych] & 64) { + goto yy294; + } + goto yy166; yy201: YYDEBUG(201, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy303; - if (yych == 'j') goto yy303; - goto yy82; + if (yych <= ',') { + if (yych == '+') goto yy297; + goto yy166; + } else { + if (yych <= '-') goto yy297; + if (yych <= '/') goto yy166; + if (yych <= '9') goto yy298; + goto yy166; + } yy202: YYDEBUG(202, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy304; - if (yych == 'a') goto yy304; - goto yy82; + if (yybm[0+yych] & 128) { + goto yy300; + } + goto yy166; yy203: YYDEBUG(203, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy305; - if (yych == 'r') goto yy305; - goto yy82; -yy204: + ++YYCURSOR; YYDEBUG(204, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy306; - if (yych == 's') goto yy306; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1411 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); +} +#line 3564 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); - ++YYCURSOR; + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy206; + if (yych <= '<') goto yy303; + if (yych <= '=') goto yy305; +yy206: YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1611 "Zend/zend_language_scanner.l" +#line 1667 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_POW_EQUAL); + RETURN_TOKEN(T_SL); } -#line 3288 "Zend/zend_language_scanner.c" +#line 3579 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy307; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1419 "Zend/zend_language_scanner.l" +#line 1587 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELLIPSIS); + RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3298 "Zend/zend_language_scanner.c" +#line 3590 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy82; - if (yych <= '\n') goto yy307; - goto yy82; - } else { - if (yych <= '\r') goto yy307; - if (yych == ' ') goto yy307; - goto yy82; - } + goto yy154; yy210: YYDEBUG(210, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy309; YYDEBUG(211, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy210; - } - YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1716 "Zend/zend_language_scanner.l" +#line 1575 "Zend/zend_language_scanner.l" { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); - } + RETURN_TOKEN(T_IS_EQUAL); } -#line 3350 "Zend/zend_language_scanner.c" -yy213: +#line 3605 "Zend/zend_language_scanner.c" +yy212: + YYDEBUG(212, *YYCURSOR); + ++YYCURSOR; YYDEBUG(213, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy82; - if (yych >= ':') goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1543 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_ARROW); +} +#line 3615 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; YYDEBUG(215, *YYCURSOR); - if (yych <= '/') goto yy109; - if (yych <= '9') goto yy214; - goto yy109; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1591 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); +} +#line 3625 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy311; YYDEBUG(217, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy216; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1671 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR); +} +#line 3636 "Zend/zend_language_scanner.c" +yy218: YYDEBUG(218, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy313; + if (yych == '\r') goto yy314; +yy219: + YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1795 "Zend/zend_language_scanner.l" +#line 2084 "Zend/zend_language_scanner.l" { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; + BEGIN(INITIAL); + if (yytext[yyleng-1] != '>') { + CG(increment_lineno) = 1; } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); + if (PARSER_MODE()) { + RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ } + RETURN_TOKEN(T_CLOSE_TAG); } -#line 3404 "Zend/zend_language_scanner.c" -yy219: - YYDEBUG(219, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; +#line 3656 "Zend/zend_language_scanner.c" +yy220: YYDEBUG(220, *YYCURSOR); - if (yych <= '\'') { - if (yych <= ' ') { - if (yych == '\t') goto yy219; - if (yych <= 0x1F) goto yy82; - goto yy219; - } else { - if (yych == '"') goto yy309; - if (yych <= '&') goto yy82; - goto yy310; - } - } else { - if (yych <= '_') { - if (yych <= '@') goto yy82; - if (yych <= 'Z') goto yy311; - if (yych <= '^') goto yy82; - goto yy311; - } else { - if (yych <= '`') goto yy82; - if (yych <= 'z') goto yy311; - if (yych <= 0x7F) goto yy82; - goto yy311; - } - } -yy221: - YYDEBUG(221, *YYCURSOR); ++YYCURSOR; - YYDEBUG(222, *YYCURSOR); + YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" +#line 1423 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL_EQUAL); + RETURN_TOKEN(T_COALESCE); } -#line 3443 "Zend/zend_language_scanner.c" +#line 3666 "Zend/zend_language_scanner.c" +yy222: + YYDEBUG(222, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy315; + if (yych == 's') goto yy315; + goto yy128; yy223: YYDEBUG(223, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'D') goto yy316; + if (yych == 'd') goto yy316; + goto yy128; +yy224: YYDEBUG(224, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1583 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 3453 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy318; + if (yych == 'r') goto yy318; + goto yy128; yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" +#line 1327 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_IDENTICAL); + RETURN_TOKEN(T_AS); } -#line 3463 "Zend/zend_language_scanner.c" +#line 3697 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '<') goto yy319; + goto yy166; +yy228: YYDEBUG(228, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR_EQUAL); -} -#line 3473 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy320; + if (yych == 'e') goto yy320; + goto yy128; yy229: YYDEBUG(229, *YYCURSOR); - ++YYCURSOR; - goto yy135; + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych <= 'K') goto yy128; + goto yy321; + } else { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy322; + goto yy323; + } + } else { + if (yych <= 'r') { + if (yych == 'l') goto yy321; + goto yy128; + } else { + if (yych <= 's') goto yy322; + if (yych <= 't') goto yy323; + goto yy128; + } + } yy230: YYDEBUG(230, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - goto yy135; + if (yych <= 'O') { + if (yych == 'A') goto yy324; + if (yych <= 'N') goto yy128; + goto yy325; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy324; + } else { + if (yych == 'o') goto yy325; + goto yy128; + } + } yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy313; - if (yych == 't') goto yy313; - goto yy44; + if (yych == 'N') goto yy326; + if (yych == 'n') goto yy326; + goto yy128; yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych <= 'F') { + if (yych == 'C') goto yy327; + if (yych <= 'E') goto yy128; + goto yy328; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy128; + goto yy327; + } else { + if (yych == 'f') goto yy328; + goto yy128; + } } +yy233: YYDEBUG(233, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_AND); -} -#line 3501 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy329; + if (yych == 'e') goto yy329; + goto yy128; yy234: YYDEBUG(234, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy314; - if (yych == 'a') goto yy314; - goto yy44; -yy235: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(235, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy219; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1295 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DO); +} +#line 3787 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy315; - if (yych == 'a') goto yy315; - goto yy44; + if (yych == 'H') goto yy331; + if (yych == 'h') goto yy331; + goto yy128; yy237: YYDEBUG(237, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy316; - if (yych == 'l') goto yy316; - goto yy44; + if (yych == 'S') goto yy332; + if (yych == 's') goto yy332; + goto yy128; yy238: YYDEBUG(238, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy317; - if (yych == 'e') goto yy317; - goto yy44; + if (yych == 'P') goto yy333; + if (yych == 'p') goto yy333; + goto yy128; yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy319; - if (yych == 'c') goto yy319; - goto yy44; + if (yych == 'D') goto yy334; + if (yych == 'd') goto yy334; + goto yy128; yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy320; - if (yych == 's') goto yy320; - goto yy44; + if (yych == 'A') goto yy335; + if (yych == 'a') goto yy335; + goto yy128; yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy321; - if (yych == 'n') goto yy321; - goto yy44; -yy242: - YYDEBUG(242, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'T') { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy322; - goto yy323; + if (yych == 'I') goto yy336; + if (yych <= 'S') goto yy128; + goto yy337; } else { - if (yych <= 'r') goto yy44; - if (yych <= 's') goto yy322; - if (yych <= 't') goto yy323; - goto yy44; + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy336; + } else { + if (yych == 't') goto yy337; + goto yy128; + } } +yy242: + YYDEBUG(242, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy338; + if (yych == 'n') goto yy338; + goto yy128; yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy324; - if (yych == 'l') goto yy324; - goto yy44; + if (yych == 'R') goto yy339; + if (yych == 'r') goto yy339; + goto yy128; yy244: YYDEBUG(244, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy325; - if (yych == 'a') goto yy325; - goto yy44; + if (yych == 'N') goto yy341; + if (yych == 'n') goto yy341; + goto yy128; yy245: YYDEBUG(245, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy342; + if (yych == 'o') goto yy342; + goto yy128; +yy246: YYDEBUG(246, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1229 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXIT); -} -#line 3586 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy343; + if (yych == 't') goto yy343; + goto yy128; yy247: YYDEBUG(247, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy326; - if (yych == 'o') goto yy326; - goto yy44; -yy248: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(248, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy328; - if (yych == 'e') goto yy328; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1271 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IF); +} +#line 3876 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy330; - if (yych == 't') goto yy330; - goto yy44; + if (yych == 'P') goto yy344; + if (yych == 'p') goto yy344; + goto yy128; yy250: YYDEBUG(250, *YYCURSOR); yych = *++YYCURSOR; - switch (yych) { - case 'D': - case 'd': goto yy331; - case 'F': - case 'f': goto yy332; - case 'I': - case 'i': goto yy333; - case 'S': - case 's': goto yy334; - case 'W': - case 'w': goto yy335; - default: goto yy44; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy128; + goto yy345; + } else { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy346; + goto yy347; + } + } else { + if (yych <= 'r') { + if (yych == 'c') goto yy345; + goto yy128; + } else { + if (yych <= 's') goto yy346; + if (yych <= 't') goto yy347; + goto yy128; + } } yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy336; - if (yych == 'l') goto yy336; - goto yy44; + if (yych == 'S') goto yy348; + if (yych == 's') goto yy348; + goto yy128; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy338; - if (yych == 't') goto yy338; - goto yy44; + if (yych == 'S') goto yy349; + if (yych == 's') goto yy349; + goto yy128; yy253: YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy340; - if (yych == 'e') goto yy340; - goto yy44; + if (yych == 'M') goto yy350; + if (yych == 'm') goto yy350; + goto yy128; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy341; - if (yych == 'a') goto yy341; - goto yy44; + if (yych == 'W') goto yy351; + if (yych == 'w') goto yy351; + goto yy128; yy255: YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy256; - if (yych <= '9') goto yy43; - } else { - if (yych == 'E') goto yy342; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'e') goto yy342; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1299 "Zend/zend_language_scanner.l" +#line 1655 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOR); + RETURN_TOKEN(T_LOGICAL_OR); } -#line 3672 "Zend/zend_language_scanner.c" +#line 3941 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy343; - if (yych == 'c') goto yy343; - goto yy44; + if (yych <= 'O') { + if (yych == 'I') goto yy353; + if (yych <= 'N') goto yy128; + goto yy354; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy353; + } else { + if (yych == 'o') goto yy354; + goto yy128; + } + } yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy344; - if (yych == 'b') goto yy344; - goto yy44; + if (yych == 'B') goto yy355; + if (yych == 'b') goto yy355; + goto yy128; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy345; - if (yych == 'o') goto yy345; - goto yy44; + if (yych <= 'T') { + if (yych == 'Q') goto yy356; + if (yych <= 'S') goto yy128; + goto yy357; + } else { + if (yych <= 'q') { + if (yych <= 'p') goto yy128; + goto yy356; + } else { + if (yych == 't') goto yy357; + goto yy128; + } + } yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy347; - if (yych == 'l') goto yy347; - goto yy44; + if (yych == 'A') goto yy358; + if (yych == 'a') goto yy358; + goto yy128; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy348; - if (yych == 'l') goto yy348; - goto yy44; + if (yych == 'I') goto yy359; + if (yych == 'i') goto yy359; + goto yy128; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy349; - if (yych == 't') goto yy349; - goto yy44; + if (yych == 'R') goto yy360; + if (yych == 'r') goto yy360; + goto yy128; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy350; - if (yych == 'e') goto yy350; - goto yy44; + if (yych <= 'Y') { + if (yych == 'A') goto yy361; + if (yych <= 'X') goto yy128; + goto yy362; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy361; + } else { + if (yych == 'y') goto yy362; + goto yy128; + } + } yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy351; - if (yych == 'e') goto yy351; - goto yy44; + if (yych == 'S') goto yy364; + if (yych == 's') goto yy364; + goto yy128; yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy352; - if (yych == 't') goto yy352; - goto yy44; + if (yych == 'E') goto yy365; + if (yych == 'e') goto yy365; + goto yy128; yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy354; - if (yych == 'e') goto yy354; - goto yy44; + if (yych == 'R') goto yy367; + if (yych == 'r') goto yy367; + goto yy128; yy267: YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy369; + if (yych == 'i') goto yy369; + goto yy128; +yy268: YYDEBUG(268, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1427 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NEW); -} -#line 3745 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy370; + if (yych == 'r') goto yy370; + goto yy128; yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy355; - if (yych <= 'U') goto yy44; - goto yy356; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy44; - goto yy355; - } else { - if (yych == 'v') goto yy356; - goto yy44; - } - } + if (yych == 'E') goto yy372; + if (yych == 'e') goto yy372; + goto yy128; yy270: YYDEBUG(270, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy357; - if (yych == 't') goto yy357; - goto yy44; -yy271: + ++YYCURSOR; YYDEBUG(271, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy358; - if (yych == 'l') goto yy358; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1643 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_XOR_EQUAL); +} +#line 4059 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy359; - if (yych == 'u') goto yy359; - goto yy44; + switch (yych) { + case 'C': + case 'c': goto yy373; + case 'D': + case 'd': goto yy374; + case 'F': + case 'f': goto yy375; + case 'H': + case 'h': goto yy376; + case 'L': + case 'l': goto yy377; + case 'M': + case 'm': goto yy378; + case 'N': + case 'n': goto yy379; + case 'T': + case 't': goto yy380; + default: goto yy128; + } yy273: YYDEBUG(273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy360; - if (yych == 'u') goto yy360; - goto yy44; -yy274: + ++YYCURSOR; YYDEBUG(274, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy361; - if (yych == 't') goto yy361; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1639 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OR_EQUAL); +} +#line 4091 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy362; - if (yych == 't') goto yy362; - goto yy44; -yy276: + ++YYCURSOR; YYDEBUG(276, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy363; - if (yych == 'o') goto yy363; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1647 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_OR); +} +#line 4101 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy364; - if (yych == 'i') goto yy364; - goto yy44; -yy278: + ++YYCURSOR; YYDEBUG(278, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1255 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRY); + RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3822 "Zend/zend_language_scanner.c" +#line 4111 "Zend/zend_language_scanner.c" +yy279: + YYDEBUG(279, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy381; + if (yych == 'r') goto yy381; + goto yy166; yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy365; - if (yych == 'e') goto yy365; - goto yy44; + if (yych == 'N') goto yy382; + if (yych == 'n') goto yy382; + goto yy166; yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy383; + if (yych == 'o') goto yy383; + goto yy166; +yy282: YYDEBUG(282, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 3841 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'U') goto yy384; + if (yych == 'u') goto yy384; + goto yy166; yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy385; + if (yych == 'o') goto yy385; + goto yy166; +yy284: YYDEBUG(284, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_VAR); -} -#line 3854 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy386; + if (yych == 't') goto yy386; + goto yy166; yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy366; - if (yych == 'l') goto yy366; - goto yy44; + if (yych == 'J') goto yy387; + if (yych == 'j') goto yy387; + goto yy166; yy286: YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy388; + if (yych == 'a') goto yy388; + goto yy166; +yy287: YYDEBUG(287, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 3873 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy389; + if (yych == 'r') goto yy389; + goto yy166; yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy367; - if (yych == 'l') goto yy367; - goto yy44; + if (yych == 'S') goto yy390; + if (yych == 's') goto yy390; + goto yy166; yy289: YYDEBUG(289, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy368; - if (yych == 'l') goto yy368; - goto yy44; -yy290: + ++YYCURSOR; YYDEBUG(290, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy369; - if (yych == 'i') goto yy369; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1611 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW_EQUAL); +} +#line 4181 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(292, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1419 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELLIPSIS); +} +#line 4191 "Zend/zend_language_scanner.c" +yy293: + YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy370; - if (yych <= 'T') goto yy44; - goto yy371; + if (yych <= '\f') { + if (yych <= 0x08) goto yy166; + if (yych <= '\n') goto yy391; + goto yy166; + } else { + if (yych <= '\r') goto yy391; + if (yych == ' ') goto yy391; + goto yy166; + } +yy294: + YYDEBUG(294, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(295, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy294; + } + YYDEBUG(296, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1716 "Zend/zend_language_scanner.l" + { + char *bin = yytext + 2; /* Skip "0b" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*bin == '0') { + ++bin; + --len; + } + + if (len < SIZEOF_ZEND_LONG * 8) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy370; - } else { - if (yych == 'u') goto yy371; - goto yy44; - } + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); + ZEND_ASSERT(!errno && end == yytext + yyleng); } -yy292: - YYDEBUG(292, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy372; - if (yych == 'a') goto yy372; - goto yy44; -yy293: - YYDEBUG(293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy373; - if (yych == 'i') goto yy373; - goto yy44; -yy294: - YYDEBUG(294, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy374; - if (yych == 'e') goto yy374; - goto yy44; -yy295: - YYDEBUG(295, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy375; - if (yych == 'a') goto yy375; - goto yy44; -yy296: - YYDEBUG(296, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy376; - if (yych == 'r') goto yy376; - goto yy44; + RETURN_TOKEN_WITH_VAL(T_LNUMBER); + } else { + 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_WITH_VAL(T_DNUMBER); + } +} +#line 4243 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy377; - if (yych == 'a') goto yy377; - goto yy82; + if (yych <= '/') goto yy166; + if (yych >= ':') goto yy166; yy298: YYDEBUG(298, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy378; - if (yych == 'a') goto yy378; - goto yy82; -yy299: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(299, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy379; - if (yych == 'l') goto yy379; - goto yy82; + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy298; + goto yy193; yy300: YYDEBUG(300, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy380; - if (yych == 'b') goto yy380; - goto yy82; -yy301: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy381; - if (yych == 'a') goto yy381; - goto yy82; -yy302: + if (yybm[0+yych] & 128) { + goto yy300; + } YYDEBUG(302, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy386; - if (yych == 'e') goto yy386; - goto yy383; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1795 "Zend/zend_language_scanner.l" + { + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; + } + + if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); + ZEND_ASSERT(!errno && end == hex + len); + } + RETURN_TOKEN_WITH_VAL(T_LNUMBER); + } else { + 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_WITH_VAL(T_DNUMBER); + } +} +#line 4297 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy387; - if (yych == 'e') goto yy387; - goto yy82; -yy304: + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; YYDEBUG(304, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy388; - if (yych == 'l') goto yy388; - goto yy82; + if (yych <= '\'') { + if (yych <= ' ') { + if (yych == '\t') goto yy303; + if (yych <= 0x1F) goto yy166; + goto yy303; + } else { + if (yych == '"') goto yy393; + if (yych <= '&') goto yy166; + goto yy394; + } + } else { + if (yych <= '_') { + if (yych <= '@') goto yy166; + if (yych <= 'Z') goto yy395; + if (yych <= '^') goto yy166; + goto yy395; + } else { + if (yych <= '`') goto yy166; + if (yych <= 'z') goto yy395; + if (yych <= 0x7F) goto yy166; + goto yy395; + } + } yy305: YYDEBUG(305, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy390; - if (yych == 'i') goto yy390; - goto yy82; -yy306: + ++YYCURSOR; YYDEBUG(306, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy391; - if (yych == 'e') goto yy391; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1627 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL_EQUAL); +} +#line 4336 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; YYDEBUG(308, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy113; - if (yych <= '\n') goto yy307; - goto yy113; - } else { - if (yych <= '\r') goto yy307; - if (yych == ' ') goto yy307; - goto yy113; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1583 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SPACESHIP); +} +#line 4346 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy82; - if (yych <= '/') goto yy393; - if (yych <= '9') goto yy82; - goto yy393; -yy310: + ++YYCURSOR; YYDEBUG(310, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy82; - if (yych <= '/') goto yy395; - if (yych <= '9') goto yy82; - goto yy395; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1567 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_IDENTICAL); +} +#line 4356 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; YYDEBUG(312, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy396; - goto yy82; - } else { - if (yych <= '\r') goto yy398; - if (yych <= '/') goto yy82; - if (yych <= '9') goto yy311; - goto yy82; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy311; - if (yych <= '^') goto yy82; - goto yy311; - } else { - if (yych <= '`') goto yy82; - if (yych <= 'z') goto yy311; - if (yych <= 0x7F) goto yy82; - goto yy311; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1631 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR_EQUAL); +} +#line 4366 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy399; - if (yych == 'r') goto yy399; - goto yy44; + goto yy219; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy400; - if (yych == 'y') goto yy400; - goto yy44; + if (yych == '\n') goto yy313; + goto yy219; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy402; - if (yych == 'k') goto yy402; - goto yy44; + if (yych == 'T') goto yy397; + if (yych == 't') goto yy397; + goto yy128; yy316: YYDEBUG(316, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy404; - if (yych == 'a') goto yy404; - goto yy44; -yy317: - YYDEBUG(317, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(318, *YYCURSOR); + YYDEBUG(317, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1339 "Zend/zend_language_scanner.l" +#line 1659 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CASE); + RETURN_TOKEN(T_LOGICAL_AND); } -#line 4091 "Zend/zend_language_scanner.c" +#line 4394 "Zend/zend_language_scanner.c" +yy318: + YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy398; + if (yych == 'a') goto yy398; + goto yy128; yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy405; - if (yych == 'h') goto yy405; - goto yy44; + if (yych == '<') goto yy303; + goto yy166; yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy407; - if (yych == 's') goto yy407; - goto yy44; + if (yych == 'A') goto yy399; + if (yych == 'a') goto yy399; + goto yy128; yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy409; - if (yych == 'e') goto yy409; - goto yy44; + if (yych == 'L') goto yy400; + if (yych == 'l') goto yy400; + goto yy128; yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy411; - if (yych == 't') goto yy411; - goto yy44; + if (yych == 'E') goto yy401; + if (yych == 'e') goto yy401; + goto yy128; yy323: YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy413; - if (yych == 'i') goto yy413; - goto yy44; + if (yych == 'C') goto yy403; + if (yych == 'c') goto yy403; + goto yy128; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy414; - if (yych == 'a') goto yy414; - goto yy44; + if (yych == 'S') goto yy404; + if (yych == 's') goto yy404; + goto yy128; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy415; - if (yych == 'u') goto yy415; - goto yy44; + if (yych == 'N') goto yy405; + if (yych == 'n') goto yy405; + goto yy128; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych <= 'T') { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy406; + goto yy407; + } else { + if (yych <= 'r') goto yy128; + if (yych <= 's') goto yy406; + if (yych <= 't') goto yy407; + goto yy128; } +yy327: YYDEBUG(327, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1359 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ECHO); -} -#line 4146 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy408; + if (yych == 'l') goto yy408; + goto yy128; yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy329; - if (yych <= '9') goto yy43; - } else { - if (yych == 'I') goto yy416; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'h') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'i') goto yy416; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'A') goto yy409; + if (yych == 'a') goto yy409; + goto yy128; yy329: YYDEBUG(329, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(330, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1283 "Zend/zend_language_scanner.l" +#line 1229 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + RETURN_TOKEN(T_EXIT); } -#line 4174 "Zend/zend_language_scanner.c" -yy330: - YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy417; - if (yych == 'y') goto yy417; - goto yy44; +#line 4479 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy419; - if (yych == 'e') goto yy419; - goto yy44; + if (yych == 'O') goto yy410; + if (yych == 'o') goto yy410; + goto yy128; yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy420; - if (yych == 'o') goto yy420; - goto yy44; + if (yych == 'E') goto yy412; + if (yych == 'e') goto yy412; + goto yy128; yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy421; - if (yych == 'f') goto yy421; - goto yy44; + if (yych == 'T') goto yy414; + if (yych == 't') goto yy414; + goto yy128; yy334: YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy423; - if (yych == 'w') goto yy423; - goto yy44; + switch (yych) { + case 'D': + case 'd': goto yy415; + case 'F': + case 'f': goto yy416; + case 'I': + case 'i': goto yy417; + case 'S': + case 's': goto yy418; + case 'W': + case 'w': goto yy419; + default: goto yy128; + } yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy424; - if (yych == 'h') goto yy424; - goto yy44; + if (yych == 'L') goto yy420; + if (yych == 'l') goto yy420; + goto yy128; yy336: YYDEBUG(336, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy422; + if (yych == 't') goto yy422; + goto yy128; +yy337: YYDEBUG(337, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1467 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EVAL); -} -#line 4223 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy424; + if (yych == 'e') goto yy424; + goto yy128; yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy425; + if (yych == 'a') goto yy425; + goto yy128; +yy339: YYDEBUG(339, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy340; + if (yych <= '9') goto yy127; + } else { + if (yych == 'E') goto yy426; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'e') goto yy426; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy340: + YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1225 "Zend/zend_language_scanner.l" +#line 1299 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_FOR); } -#line 4236 "Zend/zend_language_scanner.c" -yy340: - YYDEBUG(340, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy425; - if (yych == 'n') goto yy425; - goto yy44; +#line 4565 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy426; - if (yych == 'l') goto yy426; - goto yy44; + if (yych == 'C') goto yy427; + if (yych == 'c') goto yy427; + goto yy128; yy342: YYDEBUG(342, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy428; - if (yych == 'a') goto yy428; - goto yy44; + if (yych == 'B') goto yy428; + if (yych == 'b') goto yy428; + goto yy128; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy429; - if (yych == 't') goto yy429; - goto yy44; + if (yych == 'O') goto yy429; + if (yych == 'o') goto yy429; + goto yy128; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy430; - if (yych == 'a') goto yy430; - goto yy44; + if (yych == 'L') goto yy431; + if (yych == 'l') goto yy431; + goto yy128; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'L') goto yy432; + if (yych == 'l') goto yy432; + goto yy128; +yy346: YYDEBUG(346, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1355 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 4279 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy433; + if (yych == 't') goto yy433; + goto yy128; yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy431; - if (yych == 'e') goto yy431; - goto yy44; + if (yych == 'E') goto yy434; + if (yych == 'e') goto yy434; + goto yy128; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy432; - if (yych == 'u') goto yy432; - goto yy44; + if (yych == 'E') goto yy435; + if (yych == 'e') goto yy435; + goto yy128; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy433; - if (yych <= 'D') goto yy44; - goto yy434; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy433; - } else { - if (yych == 'e') goto yy434; - goto yy44; - } - } + if (yych == 'T') goto yy436; + if (yych == 't') goto yy436; + goto yy128; yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy435; - if (yych == 'r') goto yy435; - goto yy44; + if (yych == 'E') goto yy438; + if (yych == 'e') goto yy438; + goto yy128; yy351: YYDEBUG(351, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy436; - if (yych == 't') goto yy436; - goto yy44; -yy352: - YYDEBUG(352, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(353, *YYCURSOR); + YYDEBUG(352, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1547 "Zend/zend_language_scanner.l" +#line 1427 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LIST); + RETURN_TOKEN(T_NEW); } -#line 4332 "Zend/zend_language_scanner.c" +#line 4638 "Zend/zend_language_scanner.c" +yy353: + YYDEBUG(353, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych == 'N') goto yy439; + if (yych <= 'U') goto yy128; + goto yy440; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy128; + goto yy439; + } else { + if (yych == 'v') goto yy440; + goto yy128; + } + } yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy438; - if (yych == 's') goto yy438; - goto yy44; + if (yych == 'T') goto yy441; + if (yych == 't') goto yy441; + goto yy128; yy355: YYDEBUG(355, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy439; - if (yych == 't') goto yy439; - goto yy44; + if (yych == 'L') goto yy442; + if (yych == 'l') goto yy442; + goto yy128; yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy441; - if (yych == 'a') goto yy441; - goto yy44; + if (yych == 'U') goto yy443; + if (yych == 'u') goto yy443; + goto yy128; yy357: YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy442; - if (yych == 'e') goto yy442; - goto yy44; + if (yych == 'U') goto yy444; + if (yych == 'u') goto yy444; + goto yy128; yy358: YYDEBUG(358, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy443; - if (yych == 'i') goto yy443; - goto yy44; + if (yych == 'T') goto yy445; + if (yych == 't') goto yy445; + goto yy128; yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy444; - if (yych == 'i') goto yy444; - goto yy44; + if (yych == 'T') goto yy446; + if (yych == 't') goto yy446; + goto yy128; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy445; - if (yych == 'r') goto yy445; - goto yy44; + if (yych == 'O') goto yy447; + if (yych == 'o') goto yy447; + goto yy128; yy361: YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy446; - if (yych == 'i') goto yy446; - goto yy44; + if (yych == 'I') goto yy448; + if (yych == 'i') goto yy448; + goto yy128; yy362: YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy447; - if (yych == 'c') goto yy447; - goto yy44; -yy363: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy448; - if (yych == 'w') goto yy448; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1255 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRY); +} +#line 4715 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy450; - if (yych == 't') goto yy450; - goto yy44; + if (yych == 'E') goto yy449; + if (yych == 'e') goto yy449; + goto yy128; yy365: YYDEBUG(365, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy452; - if (yych == 't') goto yy452; - goto yy44; -yy366: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(366, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy454; - if (yych == 'e') goto yy454; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1491 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_USE); +} +#line 4734 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy456; - if (yych == 'd') goto yy456; - goto yy44; -yy368: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(368, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy458; - if (yych == 'a') goto yy458; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1435 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_VAR); +} +#line 4747 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy459; - if (yych == 'r') goto yy459; - goto yy44; + if (yych == 'L') goto yy450; + if (yych == 'l') goto yy450; + goto yy128; yy370: YYDEBUG(370, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy460; - if (yych == 'l') goto yy460; - goto yy44; -yy371: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(371, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy461; - if (yych == 'n') goto yy461; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1663 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_XOR); +} +#line 4766 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy462; - if (yych == 'l') goto yy462; - goto yy44; + if (yych == 'L') goto yy451; + if (yych == 'l') goto yy451; + goto yy128; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy463; - if (yych == 'n') goto yy463; - goto yy44; + if (yych == 'L') goto yy452; + if (yych == 'l') goto yy452; + goto yy128; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy464; - if (yych == 't') goto yy464; - goto yy44; + if (yych == 'I') goto yy453; + if (yych == 'i') goto yy453; + goto yy128; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy465; - if (yych == 'm') goto yy465; - goto yy44; + if (yych <= 'U') { + if (yych == 'I') goto yy454; + if (yych <= 'T') goto yy128; + goto yy455; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy454; + } else { + if (yych == 'u') goto yy455; + goto yy128; + } + } yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy466; - if (yych == 'a') goto yy466; - goto yy44; + if (yych == 'A') goto yy456; + if (yych == 'a') goto yy456; + goto yy128; yy377: YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy467; - if (yych == 'y') goto yy467; - goto yy82; + if (yych == 'I') goto yy457; + if (yych == 'i') goto yy457; + goto yy128; yy378: YYDEBUG(378, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy469; - if (yych == 'r') goto yy469; - goto yy82; + if (yych == 'E') goto yy458; + if (yych == 'e') goto yy458; + goto yy128; yy379: YYDEBUG(379, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy474; - if (yych == 'e') goto yy474; - goto yy471; + if (yych == 'A') goto yy459; + if (yych == 'a') goto yy459; + goto yy128; yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy475; - if (yych == 'l') goto yy475; - goto yy82; + if (yych == 'R') goto yy460; + if (yych == 'r') goto yy460; + goto yy128; yy381: YYDEBUG(381, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy388; - if (yych == 't') goto yy388; - goto yy82; + if (yych == 'A') goto yy461; + if (yych == 'a') goto yy461; + goto yy166; yy382: YYDEBUG(382, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'A') goto yy462; + if (yych == 'a') goto yy462; + goto yy166; yy383: YYDEBUG(383, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy382; - goto yy82; - } else { - if (yych <= ' ') goto yy382; - if (yych != ')') goto yy82; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy463; + if (yych == 'l') goto yy463; + goto yy166; +yy384: YYDEBUG(384, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'B') goto yy464; + if (yych == 'b') goto yy464; + goto yy166; +yy385: YYDEBUG(385, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 4523 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy465; + if (yych == 'a') goto yy465; + goto yy166; yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy476; - if (yych == 'g') goto yy476; - goto yy82; + if (yych == 'E') goto yy470; + if (yych == 'e') goto yy470; + goto yy467; yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy477; - if (yych == 'c') goto yy477; - goto yy82; + if (yych == 'E') goto yy471; + if (yych == 'e') goto yy471; + goto yy166; yy388: YYDEBUG(388, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy472; + if (yych == 'l') goto yy472; + goto yy166; +yy389: YYDEBUG(389, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy388; - goto yy82; - } else { - if (yych <= ' ') goto yy388; - if (yych == ')') goto yy478; - goto yy82; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy474; + if (yych == 'i') goto yy474; + goto yy166; yy390: YYDEBUG(390, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy480; - if (yych == 'n') goto yy480; - goto yy82; + if (yych == 'E') goto yy475; + if (yych == 'e') goto yy475; + goto yy166; yy391: YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy481; - if (yych == 't') goto yy481; - goto yy82; -yy392: - YYDEBUG(392, *YYCURSOR); ++YYCURSOR; - YYFILL(3); + YYFILL(1); yych = *YYCURSOR; -yy393: - YYDEBUG(393, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '"') goto yy483; - goto yy82; - } else { - if (yych <= '9') goto yy392; - if (yych <= '@') goto yy82; - goto yy392; - } + YYDEBUG(392, *YYCURSOR); + if (yych <= '\f') { + if (yych <= 0x08) goto yy197; + if (yych <= '\n') goto yy391; + goto yy197; } else { - if (yych <= '`') { - if (yych == '_') goto yy392; - goto yy82; - } else { - if (yych <= 'z') goto yy392; - if (yych <= 0x7F) goto yy82; - goto yy392; - } + if (yych <= '\r') goto yy391; + if (yych == ' ') goto yy391; + goto yy197; } +yy393: + YYDEBUG(393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '"') goto yy166; + if (yych <= '/') goto yy477; + if (yych <= '9') goto yy166; + goto yy477; yy394: YYDEBUG(394, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '\'') goto yy166; + if (yych <= '/') goto yy479; + if (yych <= '9') goto yy166; + goto yy479; yy395: YYDEBUG(395, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy483; - goto yy82; + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; + YYDEBUG(396, *YYCURSOR); + if (yych <= '@') { + if (yych <= '\f') { + if (yych == '\n') goto yy480; + goto yy166; } else { - if (yych <= '9') goto yy394; - if (yych <= '@') goto yy82; - goto yy394; + if (yych <= '\r') goto yy482; + if (yych <= '/') goto yy166; + if (yych <= '9') goto yy395; + goto yy166; } } else { - if (yych <= '`') { - if (yych == '_') goto yy394; - goto yy82; + if (yych <= '_') { + if (yych <= 'Z') goto yy395; + if (yych <= '^') goto yy166; + goto yy395; } else { - if (yych <= 'z') goto yy394; - if (yych <= 0x7F) goto yy82; - goto yy394; + if (yych <= '`') goto yy166; + if (yych <= 'z') goto yy395; + if (yych <= 0x7F) goto yy166; + goto yy395; } } -yy396: - YYDEBUG(396, *YYCURSOR); - ++YYCURSOR; yy397: YYDEBUG(397, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2232 "Zend/zend_language_scanner.l" - { - char *s; - 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); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - heredoc_label->length--; - } - - if (*s == '\'') { - s++; - heredoc_label->length -= 2; - is_heredoc = 0; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - heredoc_label->length -= 2; - } - - BEGIN(ST_HEREDOC); - } - - heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = 0; - saved_cursor = YYCURSOR; - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } - - /* Check for ending label on the next line */ - if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - YYCURSOR = saved_cursor; - heredoc_label->length += indentation; - - BEGIN(ST_END_HEREDOC); - RETURN_TOKEN(T_START_HEREDOC); - } - } - - YYCURSOR = saved_cursor; - - if (is_heredoc && !SCNG(heredoc_scan_ahead)) { - zend_lex_state current_state; - int heredoc_nesting_level = 1; - - zend_save_lexical_state(¤t_state); - - SCNG(heredoc_scan_ahead) = 1; - LANG_SCNG(on_event) = NULL; - - zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - - while (heredoc_nesting_level) { - zval zv; - int retval; - - ZVAL_UNDEF(&zv); - retval = lex_scan(&zv, NULL); - zval_dtor(&zv); - - if (EG(exception)) { - zend_clear_exception(); - break; - } - - switch (retval) { - case T_START_HEREDOC: - ++heredoc_nesting_level; - break; - case T_END_HEREDOC: - --heredoc_nesting_level; - break; - case END: - heredoc_nesting_level = 0; - } - } - - heredoc_label->indentation = SCNG(heredoc_indentation); - heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); - - zend_restore_lexical_state(¤t_state); - SCNG(heredoc_scan_ahead) = 0; - } - - RETURN_TOKEN(T_START_HEREDOC); -} -#line 4734 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy483; + if (yych == 'r') goto yy483; + goto yy128; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy396; - goto yy397; + if (yych == 'Y') goto yy484; + if (yych == 'y') goto yy484; + goto yy128; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy484; - if (yych == 'a') goto yy484; - goto yy44; + if (yych == 'K') goto yy486; + if (yych == 'k') goto yy486; + goto yy128; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy488; + if (yych == 'a') goto yy488; + goto yy128; +yy401: YYDEBUG(401, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY); -} -#line 4758 "Zend/zend_language_scanner.c" -yy402: - YYDEBUG(402, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(403, *YYCURSOR); + YYDEBUG(402, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1347 "Zend/zend_language_scanner.l" +#line 1339 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BREAK); + RETURN_TOKEN(T_CASE); } -#line 4771 "Zend/zend_language_scanner.c" +#line 4984 "Zend/zend_language_scanner.c" +yy403: + YYDEBUG(403, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy489; + if (yych == 'h') goto yy489; + goto yy128; yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy485; - if (yych == 'b') goto yy485; - goto yy44; + if (yych == 'S') goto yy491; + if (yych == 's') goto yy491; + goto yy128; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy493; + if (yych == 'e') goto yy493; + goto yy128; +yy406: YYDEBUG(406, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1259 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CATCH); -} -#line 4790 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy495; + if (yych == 't') goto yy495; + goto yy128; yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy497; + if (yych == 'i') goto yy497; + goto yy128; +yy408: YYDEBUG(408, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS); -} -#line 4803 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy498; + if (yych == 'a') goto yy498; + goto yy128; yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(410, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLONE); -} -#line 4816 "Zend/zend_language_scanner.c" -yy411: - YYDEBUG(411, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych == 'U') goto yy499; + if (yych == 'u') goto yy499; + goto yy128; +yy410: + YYDEBUG(410, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(412, *YYCURSOR); + YYDEBUG(411, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1237 "Zend/zend_language_scanner.l" +#line 1359 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONST); + RETURN_TOKEN(T_ECHO); } -#line 4829 "Zend/zend_language_scanner.c" +#line 5039 "Zend/zend_language_scanner.c" +yy412: + YYDEBUG(412, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy413; + if (yych <= '9') goto yy127; + } else { + if (yych == 'I') goto yy500; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'h') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'i') goto yy500; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } yy413: YYDEBUG(413, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy486; - if (yych == 'n') goto yy486; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1283 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELSE); +} +#line 5067 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy487; - if (yych == 'r') goto yy487; - goto yy44; + if (yych == 'Y') goto yy501; + if (yych == 'y') goto yy501; + goto yy128; yy415: YYDEBUG(415, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy488; - if (yych == 'l') goto yy488; - goto yy44; + if (yych == 'E') goto yy503; + if (yych == 'e') goto yy503; + goto yy128; yy416: YYDEBUG(416, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy489; - if (yych == 'f') goto yy489; - goto yy44; + if (yych == 'O') goto yy504; + if (yych == 'o') goto yy504; + goto yy128; yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'F') goto yy505; + if (yych == 'f') goto yy505; + goto yy128; +yy418: YYDEBUG(418, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1507 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EMPTY); -} -#line 4866 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'W') goto yy507; + if (yych == 'w') goto yy507; + goto yy128; yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy491; - if (yych == 'c') goto yy491; - goto yy44; + if (yych == 'H') goto yy508; + if (yych == 'h') goto yy508; + goto yy128; yy420: YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy492; - if (yych == 'r') goto yy492; - goto yy44; -yy421: - YYDEBUG(421, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(422, *YYCURSOR); + YYDEBUG(421, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1279 "Zend/zend_language_scanner.l" +#line 1467 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDIF); + RETURN_TOKEN(T_EVAL); } -#line 4891 "Zend/zend_language_scanner.c" -yy423: +#line 5116 "Zend/zend_language_scanner.c" +yy422: + YYDEBUG(422, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(423, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy494; - if (yych == 'i') goto yy494; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1225 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXIT); +} +#line 5129 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy495; - if (yych == 'i') goto yy495; - goto yy44; + if (yych == 'N') goto yy509; + if (yych == 'n') goto yy509; + goto yy128; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy496; - if (yych == 'd') goto yy496; - goto yy44; + if (yych == 'L') goto yy510; + if (yych == 'l') goto yy510; + goto yy128; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy427; - if (yych <= '9') goto yy43; - } else { - if (yych == 'L') goto yy497; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'k') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'l') goto yy497; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'A') goto yy512; + if (yych == 'a') goto yy512; + goto yy128; yy427: YYDEBUG(427, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1523 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINAL); -} -#line 4937 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy513; + if (yych == 't') goto yy513; + goto yy128; yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy498; - if (yych == 'c') goto yy498; - goto yy44; + if (yych == 'A') goto yy514; + if (yych == 'a') goto yy514; + goto yy128; yy429: YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy499; - if (yych == 'i') goto yy499; - goto yy44; -yy430: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(430, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy500; - if (yych == 'l') goto yy500; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1355 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GOTO); +} +#line 5172 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy502; - if (yych == 'm') goto yy502; - goto yy44; + if (yych == 'E') goto yy515; + if (yych == 'e') goto yy515; + goto yy128; yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy503; - if (yych == 'd') goto yy503; - goto yy44; + if (yych == 'U') goto yy516; + if (yych == 'u') goto yy516; + goto yy128; yy433: YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy504; - if (yych == 'n') goto yy504; - goto yy44; + if (yych <= 'E') { + if (yych == 'A') goto yy517; + if (yych <= 'D') goto yy128; + goto yy518; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy517; + } else { + if (yych == 'e') goto yy518; + goto yy128; + } + } yy434: YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy505; - if (yych == 'a') goto yy505; - goto yy44; + if (yych == 'R') goto yy519; + if (yych == 'r') goto yy519; + goto yy128; yy435: YYDEBUG(435, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy506; - if (yych == 'f') goto yy506; - goto yy44; + if (yych == 'T') goto yy520; + if (yych == 't') goto yy520; + goto yy128; yy436: YYDEBUG(436, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1503 "Zend/zend_language_scanner.l" +#line 1547 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ISSET); + RETURN_TOKEN(T_LIST); } -#line 4998 "Zend/zend_language_scanner.c" +#line 5225 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy507; - if (yych == 'p') goto yy507; - goto yy44; + if (yych == 'S') goto yy522; + if (yych == 's') goto yy522; + goto yy128; yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy523; + if (yych == 't') goto yy523; + goto yy128; +yy440: YYDEBUG(440, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1363 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5017 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy525; + if (yych == 'a') goto yy525; + goto yy128; yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy508; - if (yych == 't') goto yy508; - goto yy44; + if (yych == 'E') goto yy526; + if (yych == 'e') goto yy526; + goto yy128; yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy509; - if (yych == 'c') goto yy509; - goto yy44; + if (yych == 'I') goto yy527; + if (yych == 'i') goto yy527; + goto yy128; yy443: YYDEBUG(443, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy510; - if (yych == 'c') goto yy510; - goto yy44; + if (yych == 'I') goto yy528; + if (yych == 'i') goto yy528; + goto yy128; yy444: YYDEBUG(444, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy512; - if (yych == 'r') goto yy512; - goto yy44; + if (yych == 'R') goto yy529; + if (yych == 'r') goto yy529; + goto yy128; yy445: YYDEBUG(445, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy513; - if (yych == 'n') goto yy513; - goto yy44; + if (yych == 'I') goto yy530; + if (yych == 'i') goto yy530; + goto yy128; yy446: YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy515; - if (yych == 'c') goto yy515; - goto yy44; + if (yych == 'C') goto yy531; + if (yych == 'c') goto yy531; + goto yy128; yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy517; - if (yych == 'h') goto yy517; - goto yy44; + if (yych == 'W') goto yy532; + if (yych == 'w') goto yy532; + goto yy128; yy448: YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy534; + if (yych == 't') goto yy534; + goto yy128; +yy449: YYDEBUG(449, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1267 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_THROW); -} -#line 5072 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy536; + if (yych == 't') goto yy536; + goto yy128; yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy538; + if (yych == 'e') goto yy538; + goto yy128; +yy451: YYDEBUG(451, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1375 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT); -} -#line 5085 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy540; + if (yych == 'd') goto yy540; + goto yy128; yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy542; + if (yych == 'a') goto yy542; + goto yy128; +yy453: YYDEBUG(453, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1539 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 5098 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy543; + if (yych == 'r') goto yy543; + goto yy128; yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'L') goto yy544; + if (yych == 'l') goto yy544; + goto yy128; +yy455: YYDEBUG(455, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1287 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_WHILE); -} -#line 5111 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy545; + if (yych == 'n') goto yy545; + goto yy128; yy456: YYDEBUG(456, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy43; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy457; - if (yych <= '\n') goto yy519; - } else { - if (yych <= '\r') goto yy519; - if (yych == ' ') goto yy519; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy546; + if (yych == 'l') goto yy546; + goto yy128; yy457: YYDEBUG(457, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1251 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_YIELD); -} -#line 5133 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy547; + if (yych == 'n') goto yy547; + goto yy128; yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy521; - if (yych == 's') goto yy521; - goto yy44; + if (yych == 'T') goto yy548; + if (yych == 't') goto yy548; + goto yy128; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy522; - goto yy44; + if (yych == 'M') goto yy549; + if (yych == 'm') goto yy549; + goto yy128; yy460: YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy523; - if (yych == 'e') goto yy523; - goto yy44; + if (yych == 'A') goto yy550; + if (yych == 'a') goto yy550; + goto yy128; yy461: YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy524; - if (yych == 'c') goto yy524; - goto yy44; + if (yych == 'Y') goto yy551; + if (yych == 'y') goto yy551; + goto yy166; yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy525; - if (yych == 't') goto yy525; - goto yy44; + if (yych == 'R') goto yy553; + if (yych == 'r') goto yy553; + goto yy166; yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy526; - if (yych == 'e') goto yy526; - goto yy44; + if (yych == 'E') goto yy558; + if (yych == 'e') goto yy558; + goto yy555; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy527; - if (yych == 'h') goto yy527; - goto yy44; + if (yych == 'L') goto yy559; + if (yych == 'l') goto yy559; + goto yy166; yy465: YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy528; - if (yych == 'e') goto yy528; - goto yy44; + if (yych == 'T') goto yy472; + if (yych == 't') goto yy472; + goto yy166; yy466: YYDEBUG(466, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy529; - if (yych == 'i') goto yy529; - goto yy44; -yy467: - YYDEBUG(467, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(468, *YYCURSOR); +yy467: + YYDEBUG(467, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy467; - goto yy82; + if (yych == '\t') goto yy466; + goto yy166; } else { - if (yych <= ' ') goto yy467; - if (yych == ')') goto yy530; - goto yy82; + if (yych <= ' ') goto yy466; + if (yych != ')') goto yy166; } -yy469: + YYDEBUG(468, *YYCURSOR); + ++YYCURSOR; YYDEBUG(469, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy532; - if (yych == 'y') goto yy532; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1439 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INT_CAST); +} +#line 5416 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy560; + if (yych == 'g') goto yy560; + goto yy166; +yy471: + YYDEBUG(471, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy561; + if (yych == 'c') goto yy561; + goto yy166; +yy472: + YYDEBUG(472, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy471: - YYDEBUG(471, *YYCURSOR); + YYDEBUG(473, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy470; - goto yy82; + if (yych == '\t') goto yy472; + goto yy166; + } else { + if (yych <= ' ') goto yy472; + if (yych == ')') goto yy562; + goto yy166; + } +yy474: + YYDEBUG(474, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy564; + if (yych == 'n') goto yy564; + goto yy166; +yy475: + YYDEBUG(475, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy565; + if (yych == 't') goto yy565; + goto yy166; +yy476: + YYDEBUG(476, *YYCURSOR); + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy477: + YYDEBUG(477, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '"') goto yy567; + goto yy166; + } else { + if (yych <= '9') goto yy476; + if (yych <= '@') goto yy166; + goto yy476; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy476; + goto yy166; + } else { + if (yych <= 'z') goto yy476; + if (yych <= 0x7F) goto yy166; + goto yy476; + } + } +yy478: + YYDEBUG(478, *YYCURSOR); + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy479: + YYDEBUG(479, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '\'') goto yy567; + goto yy166; + } else { + if (yych <= '9') goto yy478; + if (yych <= '@') goto yy166; + goto yy478; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy478; + goto yy166; + } else { + if (yych <= 'z') goto yy478; + if (yych <= 0x7F) goto yy166; + goto yy478; + } + } +yy480: + YYDEBUG(480, *YYCURSOR); + ++YYCURSOR; +yy481: + YYDEBUG(481, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2232 "Zend/zend_language_scanner.l" + { + char *s; + 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); + s = yytext+bprefix+3; + while ((*s == ' ') || (*s == '\t')) { + s++; + heredoc_label->length--; + } + + if (*s == '\'') { + s++; + heredoc_label->length -= 2; + is_heredoc = 0; + + BEGIN(ST_NOWDOC); + } else { + if (*s == '"') { + s++; + heredoc_label->length -= 2; + } + + BEGIN(ST_HEREDOC); + } + + heredoc_label->label = estrndup(s, heredoc_label->length); + heredoc_label->indentation = 0; + saved_cursor = YYCURSOR; + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; } else { - if (yych <= ' ') goto yy470; - if (yych != ')') goto yy82; + spacing |= HEREDOC_USING_SPACES; } - YYDEBUG(472, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(473, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOL_CAST); -} -#line 5229 "Zend/zend_language_scanner.c" -yy474: - YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy534; - if (yych == 'a') goto yy534; - goto yy82; -yy475: - YYDEBUG(475, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy388; - if (yych == 'e') goto yy388; - goto yy82; -yy476: - YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy535; - if (yych == 'e') goto yy535; - goto yy82; -yy477: - YYDEBUG(477, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy536; - if (yych == 't') goto yy536; - goto yy82; -yy478: - YYDEBUG(478, *YYCURSOR); ++YYCURSOR; - YYDEBUG(479, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + /* Check for ending label on the next line */ + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + YYCURSOR = saved_cursor; + heredoc_label->length += indentation; + + BEGIN(ST_END_HEREDOC); + RETURN_TOKEN(T_START_HEREDOC); + } + } + + YYCURSOR = saved_cursor; + + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { + zend_lex_state current_state; + int heredoc_nesting_level = 1; + + zend_save_lexical_state(¤t_state); + + SCNG(heredoc_scan_ahead) = 1; + LANG_SCNG(on_event) = NULL; + + zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + + while (heredoc_nesting_level) { + zval zv; + int retval; + + ZVAL_UNDEF(&zv); + retval = lex_scan(&zv, NULL); + zval_dtor(&zv); + + if (EG(exception)) { + zend_clear_exception(); + break; + } + + switch (retval) { + case T_START_HEREDOC: + ++heredoc_nesting_level; + break; + case T_END_HEREDOC: + --heredoc_nesting_level; + break; + case END: + heredoc_nesting_level = 0; + } + } + + heredoc_label->indentation = SCNG(heredoc_indentation); + heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); + + zend_restore_lexical_state(¤t_state); + SCNG(heredoc_scan_ahead) = 0; + } + + RETURN_TOKEN(T_START_HEREDOC); } -#line 5263 "Zend/zend_language_scanner.c" -yy480: - YYDEBUG(480, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy532; - if (yych == 'g') goto yy532; - goto yy82; -yy481: - YYDEBUG(481, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; +#line 5627 "Zend/zend_language_scanner.c" +yy482: YYDEBUG(482, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy481; - goto yy82; - } else { - if (yych <= ' ') goto yy481; - if (yych == ')') goto yy538; - goto yy82; - } + yych = *++YYCURSOR; + if (yych == '\n') goto yy480; + goto yy481; yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy396; - if (yych == '\r') goto yy398; - goto yy82; + if (yych == 'A') goto yy568; + if (yych == 'a') goto yy568; + goto yy128; yy484: YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy540; - if (yych == 'c') goto yy540; - goto yy44; -yy485: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(485, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy541; - if (yych == 'l') goto yy541; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1551 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY); +} +#line 5651 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy542; - if (yych == 'u') goto yy542; - goto yy44; -yy487: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(487, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy543; - if (yych == 'e') goto yy543; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1347 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BREAK); +} +#line 5664 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy545; - if (yych == 't') goto yy545; - goto yy44; + if (yych == 'B') goto yy569; + if (yych == 'b') goto yy569; + goto yy128; yy489: YYDEBUG(489, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1275 "Zend/zend_language_scanner.l" +#line 1259 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSEIF); + RETURN_TOKEN(T_CATCH); } -#line 5332 "Zend/zend_language_scanner.c" +#line 5683 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy547; - if (yych == 'l') goto yy547; - goto yy44; -yy492: - YYDEBUG(492, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy493; - if (yych <= '9') goto yy43; - } else { - if (yych == 'E') goto yy548; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'e') goto yy548; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(492, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1367 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS); +} +#line 5696 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(494, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1303 "Zend/zend_language_scanner.l" +#line 1431 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOR); + RETURN_TOKEN(T_CLONE); } -#line 5366 "Zend/zend_language_scanner.c" -yy494: - YYDEBUG(494, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy549; - if (yych == 't') goto yy549; - goto yy44; +#line 5709 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy550; - if (yych == 'l') goto yy550; - goto yy44; -yy496: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(496, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy551; - if (yych == 's') goto yy551; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1237 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONST); +} +#line 5722 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy553; - if (yych == 'y') goto yy553; - goto yy44; + if (yych == 'N') goto yy570; + if (yych == 'n') goto yy570; + goto yy128; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy555; - if (yych == 'h') goto yy555; - goto yy44; + if (yych == 'R') goto yy571; + if (yych == 'r') goto yy571; + goto yy128; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy557; - if (yych == 'o') goto yy557; - goto yy44; + if (yych == 'L') goto yy572; + if (yych == 'l') goto yy572; + goto yy128; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'F') goto yy573; + if (yych == 'f') goto yy573; + goto yy128; +yy501: YYDEBUG(501, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(502, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1499 "Zend/zend_language_scanner.l" +#line 1507 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_GLOBAL); + RETURN_TOKEN(T_EMPTY); } -#line 5415 "Zend/zend_language_scanner.c" -yy502: - YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy558; - if (yych == 'e') goto yy558; - goto yy44; +#line 5759 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy559; - if (yych == 'e') goto yy559; - goto yy44; + if (yych == 'C') goto yy575; + if (yych == 'c') goto yy575; + goto yy128; yy504: YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy561; - if (yych == 'c') goto yy561; - goto yy44; + if (yych == 'R') goto yy576; + if (yych == 'r') goto yy576; + goto yy128; yy505: YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy562; - if (yych == 'd') goto yy562; - goto yy44; -yy506: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy563; - if (yych == 'a') goto yy563; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1279 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDIF); +} +#line 5784 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy564; - if (yych == 'a') goto yy564; - goto yy44; + if (yych == 'I') goto yy578; + if (yych == 'i') goto yy578; + goto yy128; yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy565; - if (yych == 'e') goto yy565; - goto yy44; + if (yych == 'I') goto yy579; + if (yych == 'i') goto yy579; + goto yy128; yy509: YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy567; - if (yych == 't') goto yy567; - goto yy44; + if (yych == 'D') goto yy580; + if (yych == 'd') goto yy580; + goto yy128; yy510: YYDEBUG(510, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy511; + if (yych <= '9') goto yy127; + } else { + if (yych == 'L') goto yy581; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'l') goto yy581; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } } +yy511: YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1535 "Zend/zend_language_scanner.l" +#line 1523 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PUBLIC); + RETURN_TOKEN(T_FINAL); } -#line 5476 "Zend/zend_language_scanner.c" +#line 5830 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy568; - if (yych == 'e') goto yy568; - goto yy44; + if (yych == 'C') goto yy582; + if (yych == 'c') goto yy582; + goto yy128; yy513: YYDEBUG(513, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy583; + if (yych == 'i') goto yy583; + goto yy128; +yy514: YYDEBUG(514, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1241 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_RETURN); -} -#line 5495 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy584; + if (yych == 'l') goto yy584; + goto yy128; yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'M') goto yy586; + if (yych == 'm') goto yy586; + goto yy128; +yy516: YYDEBUG(516, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1515 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 5508 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy587; + if (yych == 'd') goto yy587; + goto yy128; yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'N') goto yy588; + if (yych == 'n') goto yy588; + goto yy128; +yy518: YYDEBUG(518, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1331 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 5521 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy589; + if (yych == 'a') goto yy589; + goto yy128; yy519: YYDEBUG(519, *YYCURSOR); - ++YYCURSOR; - YYFILL(5); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'F') goto yy590; + if (yych == 'f') goto yy590; + goto yy128; +yy520: YYDEBUG(520, *YYCURSOR); - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy82; - goto yy519; - } else { - if (yych == '\r') goto yy519; - goto yy82; - } - } else { - if (yych <= 'F') { - if (yych <= ' ') goto yy519; - if (yych <= 'E') goto yy82; - goto yy570; - } else { - if (yych == 'f') goto yy570; - goto yy82; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy521: YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy571; - if (yych == 's') goto yy571; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1503 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ISSET); +} +#line 5891 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy572; - goto yy44; + if (yych == 'P') goto yy591; + if (yych == 'p') goto yy591; + goto yy128; yy523: YYDEBUG(523, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy574; - goto yy44; -yy524: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(524, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy575; - if (yych == 't') goto yy575; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1363 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRINT); +} +#line 5910 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy576; - goto yy44; + if (yych == 'T') goto yy592; + if (yych == 't') goto yy592; + goto yy128; yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy577; - goto yy44; + if (yych == 'C') goto yy593; + if (yych == 'c') goto yy593; + goto yy128; yy527: YYDEBUG(527, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy578; - if (yych == 'o') goto yy578; - goto yy44; + if (yych == 'C') goto yy594; + if (yych == 'c') goto yy594; + goto yy128; yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy579; - if (yych == 's') goto yy579; - goto yy44; + if (yych == 'R') goto yy596; + if (yych == 'r') goto yy596; + goto yy128; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy580; - if (yych == 't') goto yy580; - goto yy44; + if (yych == 'N') goto yy597; + if (yych == 'n') goto yy597; + goto yy128; yy530: YYDEBUG(530, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'C') goto yy599; + if (yych == 'c') goto yy599; + goto yy128; +yy531: YYDEBUG(531, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY_CAST); -} -#line 5605 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy601; + if (yych == 'h') goto yy601; + goto yy128; yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(533, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy82; - } else { - if (yych <= ' ') goto yy532; - if (yych == ')') goto yy581; - goto yy82; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(533, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1267 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_THROW); +} +#line 5965 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy470; - if (yych == 'n') goto yy470; - goto yy82; -yy535: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(535, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy382; - if (yych == 'r') goto yy382; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1375 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT); +} +#line 5978 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(537, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy536; - goto yy82; - } else { - if (yych <= ' ') goto yy536; - if (yych == ')') goto yy583; - goto yy82; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(537, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1539 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET); +} +#line 5991 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" +#line 1287 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_UNSET_CAST); + RETURN_TOKEN(T_WHILE); } -#line 5655 "Zend/zend_language_scanner.c" +#line 6004 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy585; - if (yych == 't') goto yy585; - goto yy44; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy127; + } + if (yych <= '\f') { + if (yych <= 0x08) goto yy541; + if (yych <= '\n') goto yy603; + } else { + if (yych <= '\r') goto yy603; + if (yych == ' ') goto yy603; + } yy541: YYDEBUG(541, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy587; - if (yych == 'e') goto yy587; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1251 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_YIELD); +} +#line 6026 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy589; - if (yych == 'e') goto yy589; - goto yy44; + if (yych == 'S') goto yy605; + if (yych == 's') goto yy605; + goto yy128; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == '_') goto yy606; + goto yy128; +yy544: YYDEBUG(544, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1315 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DECLARE); -} -#line 5686 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy607; + if (yych == 'e') goto yy607; + goto yy128; yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'C') goto yy608; + if (yych == 'c') goto yy608; + goto yy128; +yy546: YYDEBUG(546, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1343 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEFAULT); -} -#line 5699 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy609; + if (yych == 't') goto yy609; + goto yy128; yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy591; - if (yych == 'a') goto yy591; - goto yy44; + if (yych == 'E') goto yy610; + if (yych == 'e') goto yy610; + goto yy128; yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy592; - if (yych == 'a') goto yy592; - goto yy44; + if (yych == 'H') goto yy611; + if (yych == 'h') goto yy611; + goto yy128; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy593; - if (yych == 'c') goto yy593; - goto yy44; + if (yych == 'E') goto yy612; + if (yych == 'e') goto yy612; + goto yy128; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy594; - if (yych == 'e') goto yy594; - goto yy44; + if (yych == 'I') goto yy613; + if (yych == 'i') goto yy613; + goto yy128; yy551: YYDEBUG(551, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(552, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1379 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXTENDS); -} -#line 5736 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych == '\t') goto yy551; + goto yy166; + } else { + if (yych <= ' ') goto yy551; + if (yych == ')') goto yy614; + goto yy166; + } yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'Y') goto yy616; + if (yych == 'y') goto yy616; + goto yy166; +yy554: YYDEBUG(554, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1263 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINALLY); -} -#line 5749 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy555: YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych <= 0x1F) { + if (yych == '\t') goto yy554; + goto yy166; + } else { + if (yych <= ' ') goto yy554; + if (yych != ')') goto yy166; } YYDEBUG(556, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1307 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOREACH); + RETURN_TOKEN(T_BOOL_CAST); } -#line 5762 "Zend/zend_language_scanner.c" -yy557: - YYDEBUG(557, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy596; - if (yych == 'n') goto yy596; - goto yy44; +#line 6122 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy598; - if (yych == 'n') goto yy598; - goto yy44; + if (yych == 'A') goto yy618; + if (yych == 'a') goto yy618; + goto yy166; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy43; - } else { - if (yych <= '@') goto yy560; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy599; - } else { - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'E') goto yy472; + if (yych == 'e') goto yy472; + goto yy166; yy560: YYDEBUG(560, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE); -} -#line 5800 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy619; + if (yych == 'e') goto yy619; + goto yy166; yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy600; - if (yych == 'e') goto yy600; - goto yy44; + if (yych == 'T') goto yy620; + if (yych == 't') goto yy620; + goto yy166; yy562: YYDEBUG(562, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy601; - if (yych == 'o') goto yy601; - goto yy44; -yy563: + ++YYCURSOR; YYDEBUG(563, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy602; - if (yych == 'c') goto yy602; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1443 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_CAST); +} +#line 6156 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy603; - if (yych == 'c') goto yy603; - goto yy44; + if (yych == 'G') goto yy616; + if (yych == 'g') goto yy616; + goto yy166; yy565: YYDEBUG(565, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(566, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1527 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRIVATE); -} -#line 5837 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych == '\t') goto yy565; + goto yy166; + } else { + if (yych <= ' ') goto yy565; + if (yych == ')') goto yy622; + goto yy166; + } yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy604; - if (yych == 'e') goto yy604; - goto yy44; + if (yych == '\n') goto yy480; + if (yych == '\r') goto yy482; + goto yy166; yy568: YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy43; - } else { - if (yych <= '@') goto yy569; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy605; - } else { - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'C') goto yy624; + if (yych == 'c') goto yy624; + goto yy128; yy569: YYDEBUG(569, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 5869 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy625; + if (yych == 'l') goto yy625; + goto yy128; yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy606; - if (yych == 'r') goto yy606; - goto yy82; + if (yych == 'U') goto yy626; + if (yych == 'u') goto yy626; + goto yy128; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy607; - goto yy44; + if (yych == 'E') goto yy627; + if (yych == 'e') goto yy627; + goto yy128; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy629; + if (yych == 't') goto yy629; + goto yy128; +yy573: YYDEBUG(573, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(574, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1881 "Zend/zend_language_scanner.l" +#line 1275 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DIR); + RETURN_TOKEN(T_ELSEIF); } -#line 5893 "Zend/zend_language_scanner.c" -yy574: - YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy608; - goto yy44; +#line 6225 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy610; - if (yych == 'i') goto yy610; - goto yy44; + if (yych == 'L') goto yy631; + if (yych == 'l') goto yy631; + goto yy128; yy576: YYDEBUG(576, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy611; - if (yych == 'c') goto yy611; - goto yy44; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy577; + if (yych <= '9') goto yy127; + } else { + if (yych == 'E') goto yy632; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'e') goto yy632; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } yy577: YYDEBUG(577, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy612; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1303 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDFOR); +} +#line 6259 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy614; - if (yych == 'd') goto yy614; - goto yy44; + if (yych == 'T') goto yy633; + if (yych == 't') goto yy633; + goto yy128; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy615; - if (yych == 'p') goto yy615; - goto yy44; + if (yych == 'L') goto yy634; + if (yych == 'l') goto yy634; + goto yy128; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy616; - goto yy44; + if (yych == 'S') goto yy635; + if (yych == 's') goto yy635; + goto yy128; yy581: YYDEBUG(581, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'Y') goto yy637; + if (yych == 'y') goto yy637; + goto yy128; +yy582: YYDEBUG(582, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1447 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STRING_CAST); -} -#line 5942 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy639; + if (yych == 'h') goto yy639; + goto yy128; yy583: YYDEBUG(583, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(584, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_CAST); -} -#line 5952 "Zend/zend_language_scanner.c" -yy585: - YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych == 'O') goto yy641; + if (yych == 'o') goto yy641; + goto yy128; +yy584: + YYDEBUG(584, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(586, *YYCURSOR); + YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1519 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ABSTRACT); + RETURN_TOKEN(T_GLOBAL); } -#line 5965 "Zend/zend_language_scanner.c" +#line 6308 "Zend/zend_language_scanner.c" +yy586: + YYDEBUG(586, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy642; + if (yych == 'e') goto yy642; + goto yy128; yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy643; + if (yych == 'e') goto yy643; + goto yy128; +yy588: YYDEBUG(588, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CALLABLE); -} -#line 5978 "Zend/zend_language_scanner.c" -yy589: - YYDEBUG(589, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(590, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1351 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONTINUE); -} -#line 5991 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy645; + if (yych == 'c') goto yy645; + goto yy128; +yy589: + YYDEBUG(589, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy646; + if (yych == 'd') goto yy646; + goto yy128; +yy590: + YYDEBUG(590, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy647; + if (yych == 'a') goto yy647; + goto yy128; yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy617; - if (yych == 'r') goto yy617; - goto yy44; + if (yych == 'A') goto yy648; + if (yych == 'a') goto yy648; + goto yy128; yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy618; - if (yych == 'c') goto yy618; - goto yy44; + if (yych == 'E') goto yy649; + if (yych == 'e') goto yy649; + goto yy128; yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy619; - if (yych == 'h') goto yy619; - goto yy44; + if (yych == 'T') goto yy651; + if (yych == 't') goto yy651; + goto yy128; yy594: YYDEBUG(594, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1291 "Zend/zend_language_scanner.l" +#line 1535 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDWHILE); + RETURN_TOKEN(T_PUBLIC); } -#line 6022 "Zend/zend_language_scanner.c" +#line 6369 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy652; + if (yych == 'e') goto yy652; + goto yy128; +yy597: YYDEBUG(597, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(598, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1233 "Zend/zend_language_scanner.l" +#line 1241 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNCTION); + RETURN_TOKEN(T_RETURN); } -#line 6035 "Zend/zend_language_scanner.c" -yy598: - YYDEBUG(598, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy621; - if (yych == 't') goto yy621; - goto yy44; +#line 6388 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy622; - if (yych == 'o') goto yy622; - goto yy44; -yy600: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(600, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy623; - if (yych == 'o') goto yy623; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1515 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STATIC); +} +#line 6401 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy624; - if (yych == 'f') goto yy624; - goto yy44; -yy602: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(602, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy626; - if (yych == 'e') goto yy626; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1331 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SWITCH); +} +#line 6414 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy628; - if (yych == 'e') goto yy628; - goto yy44; -yy604: + ++YYCURSOR; + YYFILL(5); + yych = *YYCURSOR; YYDEBUG(604, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy630; - if (yych == 'd') goto yy630; - goto yy44; + if (yych <= 0x1F) { + if (yych <= '\n') { + if (yych <= 0x08) goto yy166; + goto yy603; + } else { + if (yych == '\r') goto yy603; + goto yy166; + } + } else { + if (yych <= 'F') { + if (yych <= ' ') goto yy603; + if (yych <= 'E') goto yy166; + goto yy654; + } else { + if (yych == 'f') goto yy654; + goto yy166; + } + } yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy632; - if (yych == 'o') goto yy632; - goto yy44; + if (yych == 'S') goto yy655; + if (yych == 's') goto yy655; + goto yy128; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy633; - if (yych == 'o') goto yy633; - goto yy82; + if (yych == '_') goto yy656; + goto yy128; yy607: YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy634; - goto yy44; + if (yych == '_') goto yy658; + goto yy128; yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy659; + if (yych == 't') goto yy659; + goto yy128; +yy609: YYDEBUG(609, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1877 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FILE); -} -#line 6107 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy660; + goto yy128; yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy636; - if (yych == 'o') goto yy636; - goto yy44; + if (yych == '_') goto yy661; + goto yy128; yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy637; - if (yych == 'o') goto yy637; - goto yy44; + if (yych == 'O') goto yy662; + if (yych == 'o') goto yy662; + goto yy128; yy612: YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'S') goto yy663; + if (yych == 's') goto yy663; + goto yy128; +yy613: YYDEBUG(613, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1873 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LINE); -} -#line 6132 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy664; + if (yych == 't') goto yy664; + goto yy128; yy614: YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy638; - goto yy44; -yy615: + ++YYCURSOR; YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy639; - if (yych == 'a') goto yy639; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1451 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY_CAST); +} +#line 6498 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy640; - goto yy44; -yy617: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(617, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy642; - if (yych == 'e') goto yy642; - goto yy44; + if (yych <= 0x1F) { + if (yych == '\t') goto yy616; + goto yy166; + } else { + if (yych <= ' ') goto yy616; + if (yych == ')') goto yy665; + goto yy166; + } yy618: YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy644; - if (yych == 'h') goto yy644; - goto yy44; + if (yych == 'N') goto yy554; + if (yych == 'n') goto yy554; + goto yy166; yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'R') goto yy466; + if (yych == 'r') goto yy466; + goto yy166; +yy620: YYDEBUG(620, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1335 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDSWITCH); -} -#line 6173 "Zend/zend_language_scanner.c" -yy621: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(621, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy646; - if (yych == 's') goto yy646; - goto yy44; + if (yych <= 0x1F) { + if (yych == '\t') goto yy620; + goto yy166; + } else { + if (yych <= ' ') goto yy620; + if (yych == ')') goto yy667; + goto yy166; + } yy622: YYDEBUG(622, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy648; - if (yych == 'n') goto yy648; - goto yy44; -yy623: + ++YYCURSOR; YYDEBUG(623, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy649; - if (yych == 'f') goto yy649; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1463 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET_CAST); +} +#line 6548 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy669; + if (yych == 't') goto yy669; + goto yy128; +yy625: YYDEBUG(625, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1495 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTEADOF); -} -#line 6204 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy671; + if (yych == 'e') goto yy671; + goto yy128; yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy673; + if (yych == 'e') goto yy673; + goto yy128; +yy627: YYDEBUG(627, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1371 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INTERFACE); -} -#line 6217 "Zend/zend_language_scanner.c" -yy628: - YYDEBUG(628, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(629, *YYCURSOR); + YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1487 "Zend/zend_language_scanner.l" +#line 1315 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NAMESPACE); + RETURN_TOKEN(T_DECLARE); } -#line 6230 "Zend/zend_language_scanner.c" -yy630: - YYDEBUG(630, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; +#line 6579 "Zend/zend_language_scanner.c" +yy629: + YYDEBUG(629, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(631, *YYCURSOR); + YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1531 "Zend/zend_language_scanner.l" +#line 1343 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PROTECTED); + RETURN_TOKEN(T_DEFAULT); } -#line 6243 "Zend/zend_language_scanner.c" +#line 6592 "Zend/zend_language_scanner.c" +yy631: + YYDEBUG(631, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy675; + if (yych == 'a') goto yy675; + goto yy128; yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy651; - if (yych == 'n') goto yy651; - goto yy44; + if (yych == 'A') goto yy676; + if (yych == 'a') goto yy676; + goto yy128; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy652; - if (yych == 'm') goto yy652; - goto yy82; + if (yych == 'C') goto yy677; + if (yych == 'c') goto yy677; + goto yy128; yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy678; + if (yych == 'e') goto yy678; + goto yy128; +yy635: YYDEBUG(635, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(636, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1379 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS_C); + RETURN_TOKEN(T_EXTENDS); } -#line 6268 "Zend/zend_language_scanner.c" -yy636: - YYDEBUG(636, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy653; - if (yych == 'n') goto yy653; - goto yy44; +#line 6629 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy654; - if (yych == 'm') goto yy654; - goto yy44; -yy638: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(638, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy655; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1263 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINALLY); +} +#line 6642 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy657; - if (yych == 'c') goto yy657; - goto yy44; -yy640: - YYDEBUG(640, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(641, *YYCURSOR); + YYDEBUG(640, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1861 "Zend/zend_language_scanner.l" +#line 1307 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRAIT_C); + RETURN_TOKEN(T_FOREACH); } -#line 6304 "Zend/zend_language_scanner.c" +#line 6655 "Zend/zend_language_scanner.c" +yy641: + YYDEBUG(641, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy680; + if (yych == 'n') goto yy680; + goto yy128; yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'N') goto yy682; + if (yych == 'n') goto yy682; + goto yy128; +yy643: YYDEBUG(643, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1319 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 6317 "Zend/zend_language_scanner.c" + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy127; + } else { + if (yych <= '@') goto yy644; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy683; + } else { + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } yy644: YYDEBUG(644, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1311 "Zend/zend_language_scanner.l" +#line 1471 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOREACH); + RETURN_TOKEN(T_INCLUDE); } -#line 6330 "Zend/zend_language_scanner.c" +#line 6693 "Zend/zend_language_scanner.c" +yy645: + YYDEBUG(645, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy684; + if (yych == 'e') goto yy684; + goto yy128; yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy685; + if (yych == 'o') goto yy685; + goto yy128; +yy647: YYDEBUG(647, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1383 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 6343 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy686; + if (yych == 'c') goto yy686; + goto yy128; yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy658; - if (yych == 'c') goto yy658; - goto yy44; + if (yych == 'C') goto yy687; + if (yych == 'c') goto yy687; + goto yy128; yy649: YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1323 "Zend/zend_language_scanner.l" +#line 1527 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INSTANCEOF); + RETURN_TOKEN(T_PRIVATE); } -#line 6362 "Zend/zend_language_scanner.c" +#line 6730 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy659; - if (yych == 'c') goto yy659; - goto yy44; + if (yych == 'E') goto yy688; + if (yych == 'e') goto yy688; + goto yy128; yy652: YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych <= '/') goto yy660; - goto yy82; + if (yych >= '0') goto yy127; } else { - if (yych <= '@') goto yy660; - if (yych <= 'Z') goto yy82; - goto yy660; + if (yych <= '@') goto yy653; + if (yych <= 'Z') goto yy127; } } else { if (yych <= '`') { - if (yych <= '_') goto yy82; - goto yy660; + if (yych <= '_') goto yy689; } else { - if (yych <= 'z') goto yy82; - if (yych <= 0x7F) goto yy660; - goto yy82; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; } } yy653: YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy662; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1479 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE); +} +#line 6762 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy663; - if (yych == 'p') goto yy663; - goto yy44; + if (yych == 'R') goto yy690; + if (yych == 'r') goto yy690; + goto yy166; yy655: YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == '_') goto yy691; + goto yy128; +yy656: YYDEBUG(656, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1869 "Zend/zend_language_scanner.l" +#line 1881 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_METHOD_C); + RETURN_TOKEN(T_DIR); } -#line 6414 "Zend/zend_language_scanner.c" -yy657: - YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy664; - if (yych == 'e') goto yy664; - goto yy44; +#line 6786 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy665; - if (yych == 'e') goto yy665; - goto yy44; + if (yych == '_') goto yy692; + goto yy128; yy659: YYDEBUG(659, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy667; - if (yych == 'e') goto yy667; - goto yy44; + if (yych == 'I') goto yy694; + if (yych == 'i') goto yy694; + goto yy128; yy660: YYDEBUG(660, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(661, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1245 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_YIELD_FROM); -} -#line 6444 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy695; + if (yych == 'c') goto yy695; + goto yy128; +yy661: + YYDEBUG(661, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy696; + goto yy128; yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy669; - goto yy44; + if (yych == 'D') goto yy698; + if (yych == 'd') goto yy698; + goto yy128; yy663: YYDEBUG(663, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy671; - if (yych == 'i') goto yy671; - goto yy44; + if (yych == 'P') goto yy699; + if (yych == 'p') goto yy699; + goto yy128; yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy672; - goto yy44; + if (yych == '_') goto yy700; + goto yy128; yy665: YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; YYDEBUG(666, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1475 "Zend/zend_language_scanner.l" +#line 1447 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE_ONCE); + RETURN_TOKEN(T_STRING_CAST); } -#line 6473 "Zend/zend_language_scanner.c" +#line 6835 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1483 "Zend/zend_language_scanner.l" +#line 1455 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_REQUIRE_ONCE); + RETURN_TOKEN(T_OBJECT_CAST); } -#line 6486 "Zend/zend_language_scanner.c" +#line 6845 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1865 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNC_C); + RETURN_TOKEN(T_ABSTRACT); } -#line 6499 "Zend/zend_language_scanner.c" +#line 6858 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy673; - if (yych == 'l') goto yy673; - goto yy44; -yy672: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy674; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1555 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CALLABLE); +} +#line 6871 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy676; - if (yych == 'e') goto yy676; - goto yy44; -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(675, *YYCURSOR); + YYDEBUG(674, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1885 "Zend/zend_language_scanner.l" +#line 1351 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_C); + RETURN_TOKEN(T_CONTINUE); } -#line 6529 "Zend/zend_language_scanner.c" +#line 6884 "Zend/zend_language_scanner.c" +yy675: + YYDEBUG(675, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy701; + if (yych == 'r') goto yy701; + goto yy128; yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy677; - if (yych != 'r') goto yy44; + if (yych == 'C') goto yy702; + if (yych == 'c') goto yy702; + goto yy128; yy677: YYDEBUG(677, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'H') goto yy703; + if (yych == 'h') goto yy703; + goto yy128; +yy678: YYDEBUG(678, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(679, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1511 "Zend/zend_language_scanner.l" +#line 1291 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_HALT_COMPILER); + RETURN_TOKEN(T_ENDWHILE); } -#line 6547 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_LOOKING_FOR_PROPERTY: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(679, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy683; - } - if (yych <= '^') { - if (yych <= '-') { - if (yych >= '-') goto yy686; - } else { - if (yych <= '@') goto yy681; - if (yych <= 'Z') goto yy687; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy687; - } else { - if (yych <= 'z') goto yy687; - if (yych >= 0x80) goto yy687; - } +#line 6915 "Zend/zend_language_scanner.c" +yy680: + YYDEBUG(680, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy681: YYDEBUG(681, *YYCURSOR); - ++YYCURSOR; -yy682: - YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1405 "Zend/zend_language_scanner.l" +#line 1233 "Zend/zend_language_scanner.l" { - yyless(0); - yy_pop_state(); - goto restart; + RETURN_TOKEN(T_FUNCTION); } -#line 6619 "Zend/zend_language_scanner.c" +#line 6928 "Zend/zend_language_scanner.c" +yy682: + YYDEBUG(682, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy705; + if (yych == 't') goto yy705; + goto yy128; yy683: YYDEBUG(683, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy706; + if (yych == 'o') goto yy706; + goto yy128; +yy684: YYDEBUG(684, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy683; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy707; + if (yych == 'o') goto yy707; + goto yy128; +yy685: YYDEBUG(685, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 6635 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy708; + if (yych == 'f') goto yy708; + goto yy128; yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy690; - goto yy682; + if (yych == 'E') goto yy710; + if (yych == 'e') goto yy710; + goto yy128; yy687: YYDEBUG(687, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy712; + if (yych == 'e') goto yy712; + goto yy128; +yy688: YYDEBUG(688, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy687; - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy714; + if (yych == 'd') goto yy714; + goto yy128; +yy689: YYDEBUG(689, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 6657 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy716; + if (yych == 'o') goto yy716; + goto yy128; yy690: YYDEBUG(690, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy717; + if (yych == 'o') goto yy717; + goto yy166; +yy691: YYDEBUG(691, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy718; + goto yy128; +yy692: + YYDEBUG(692, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(693, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1877 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OBJECT_OPERATOR); + RETURN_TOKEN(T_FILE); } -#line 6667 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_BACKQUOTE: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(692, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych == '$') goto yy696; - } else { - if (yych <= '`') goto yy697; - if (yych == '{') goto yy699; - } +#line 7000 "Zend/zend_language_scanner.c" +yy694: YYDEBUG(694, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy720; + if (yych == 'o') goto yy720; + goto yy128; yy695: YYDEBUG(695, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2439 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '`': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - 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 6765 "Zend/zend_language_scanner.c" -yy696: - YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy695; - if (yych <= 'Z') goto yy700; - if (yych <= '^') goto yy695; - goto yy700; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy695; - goto yy700; - } else { - if (yych <= '{') goto yy703; - if (yych <= 0x7F) goto yy695; - goto yy700; - } + if (yych == 'O') goto yy721; + if (yych == 'o') goto yy721; + goto yy128; +yy696: + YYDEBUG(696, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy697: YYDEBUG(697, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2379 "Zend/zend_language_scanner.l" +#line 1873 "Zend/zend_language_scanner.l" { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('`'); + RETURN_TOKEN(T_LINE); } -#line 6794 "Zend/zend_language_scanner.c" +#line 7025 "Zend/zend_language_scanner.c" +yy698: + YYDEBUG(698, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy722; + goto yy128; yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy705; - goto yy695; + if (yych == 'A') goto yy723; + if (yych == 'a') goto yy723; + goto yy128; yy700: YYDEBUG(700, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy724; + goto yy128; +yy701: YYDEBUG(701, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy700; - } - if (yych == '-') goto yy707; - if (yych <= '@') goto yy702; - if (yych <= '[') goto yy709; + yych = *++YYCURSOR; + if (yych == 'E') goto yy726; + if (yych == 'e') goto yy726; + goto yy128; yy702: YYDEBUG(702, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 6819 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy728; + if (yych == 'h') goto yy728; + goto yy128; yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1686 "Zend/zend_language_scanner.l" +#line 1335 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_ENDSWITCH); } -#line 6830 "Zend/zend_language_scanner.c" +#line 7066 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'S') goto yy730; + if (yych == 's') goto yy730; + goto yy128; +yy706: YYDEBUG(706, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2367 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); -} -#line 6842 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy732; + if (yych == 'n') goto yy732; + goto yy128; yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy711; + if (yych == 'F') goto yy733; + if (yych == 'f') goto yy733; + goto yy128; yy708: YYDEBUG(708, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy702; -yy709: - YYDEBUG(709, *YYCURSOR); ++YYCURSOR; - YYDEBUG(710, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_INSTEADOF); } -#line 6862 "Zend/zend_language_scanner.c" -yy711: - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy708; - if (yych <= 'Z') goto yy712; - if (yych <= '^') goto yy708; - } else { - if (yych <= '`') goto yy708; - if (yych <= 'z') goto yy712; - if (yych <= 0x7F) goto yy708; +#line 7097 "Zend/zend_language_scanner.c" +yy710: + YYDEBUG(710, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(711, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1371 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INTERFACE); +} +#line 7110 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 1487 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_NAMESPACE); } -#line 6886 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_DOUBLE_QUOTES: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; +#line 7123 "Zend/zend_language_scanner.c" +yy714: YYDEBUG(714, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '#') { - if (yych == '"') goto yy718; - } else { - if (yych <= '$') goto yy720; - if (yych == '{') goto yy721; - } - YYDEBUG(716, *YYCURSOR); ++YYCURSOR; -yy717: - YYDEBUG(717, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(715, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2385 "Zend/zend_language_scanner.l" +#line 1531 "Zend/zend_language_scanner.l" { - if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { - YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; - SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); - - goto double_quotes_scan_done; - } - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -double_quotes_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - - 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); - } + RETURN_TOKEN(T_PROTECTED); } -#line 6992 "Zend/zend_language_scanner.c" +#line 7136 "Zend/zend_language_scanner.c" +yy716: + YYDEBUG(716, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy735; + if (yych == 'n') goto yy735; + goto yy128; +yy717: + YYDEBUG(717, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy736; + if (yych == 'm') goto yy736; + goto yy166; yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2374 "Zend/zend_language_scanner.l" +#line 1857 "Zend/zend_language_scanner.l" { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('"'); + RETURN_TOKEN(T_CLASS_C); } -#line 7003 "Zend/zend_language_scanner.c" +#line 7161 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy717; - if (yych <= 'Z') goto yy722; - if (yych <= '^') goto yy717; - goto yy722; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy717; - goto yy722; - } else { - if (yych <= '{') goto yy725; - if (yych <= 0x7F) goto yy717; - goto yy722; - } - } + if (yych == 'N') goto yy737; + if (yych == 'n') goto yy737; + goto yy128; yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy727; - goto yy717; + if (yych == 'M') goto yy738; + if (yych == 'm') goto yy738; + goto yy128; yy722: YYDEBUG(722, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy739; + goto yy128; +yy723: YYDEBUG(723, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy722; + yych = *++YYCURSOR; + if (yych == 'C') goto yy741; + if (yych == 'c') goto yy741; + goto yy128; +yy724: + YYDEBUG(724, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(725, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1861 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT_C); +} +#line 7197 "Zend/zend_language_scanner.c" +yy726: + YYDEBUG(726, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(727, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1319 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDDECLARE); +} +#line 7210 "Zend/zend_language_scanner.c" +yy728: + YYDEBUG(728, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(729, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1311 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDFOREACH); +} +#line 7223 "Zend/zend_language_scanner.c" +yy730: + YYDEBUG(730, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(731, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1383 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IMPLEMENTS); +} +#line 7236 "Zend/zend_language_scanner.c" +yy732: + YYDEBUG(732, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy742; + if (yych == 'c') goto yy742; + goto yy128; +yy733: + YYDEBUG(733, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(734, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1323 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INSTANCEOF); +} +#line 7255 "Zend/zend_language_scanner.c" +yy735: + YYDEBUG(735, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy743; + if (yych == 'c') goto yy743; + goto yy128; +yy736: + YYDEBUG(736, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '^') { + if (yych <= '9') { + if (yych <= '/') goto yy744; + goto yy166; + } else { + if (yych <= '@') goto yy744; + if (yych <= 'Z') goto yy166; + goto yy744; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy166; + goto yy744; + } else { + if (yych <= 'z') goto yy166; + if (yych <= 0x7F) goto yy744; + goto yy166; + } } - if (yych == '-') goto yy729; - if (yych <= '@') goto yy724; - if (yych <= '[') goto yy731; -yy724: - YYDEBUG(724, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7046 "Zend/zend_language_scanner.c" -yy725: - YYDEBUG(725, *YYCURSOR); +yy737: + YYDEBUG(737, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy746; + goto yy128; +yy738: + YYDEBUG(738, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy747; + if (yych == 'p') goto yy747; + goto yy128; +yy739: + YYDEBUG(739, *YYCURSOR); ++YYCURSOR; - YYDEBUG(726, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1686 "Zend/zend_language_scanner.l" +#line 1869 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_METHOD_C); } -#line 7057 "Zend/zend_language_scanner.c" -yy727: - YYDEBUG(727, *YYCURSOR); +#line 7307 "Zend/zend_language_scanner.c" +yy741: + YYDEBUG(741, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy748; + if (yych == 'e') goto yy748; + goto yy128; +yy742: + YYDEBUG(742, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy749; + if (yych == 'e') goto yy749; + goto yy128; +yy743: + YYDEBUG(743, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy751; + if (yych == 'e') goto yy751; + goto yy128; +yy744: + YYDEBUG(744, *YYCURSOR); ++YYCURSOR; - YYDEBUG(728, *YYCURSOR); + YYDEBUG(745, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2367 "Zend/zend_language_scanner.l" +#line 1245 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + yyless(yyleng - 1); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_YIELD_FROM); } -#line 7069 "Zend/zend_language_scanner.c" -yy729: - YYDEBUG(729, *YYCURSOR); +#line 7337 "Zend/zend_language_scanner.c" +yy746: + YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy733; -yy730: - YYDEBUG(730, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy724; -yy731: - YYDEBUG(731, *YYCURSOR); + if (yych == '_') goto yy753; + goto yy128; +yy747: + YYDEBUG(747, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy755; + if (yych == 'i') goto yy755; + goto yy128; +yy748: + YYDEBUG(748, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy756; + goto yy128; +yy749: + YYDEBUG(749, *YYCURSOR); ++YYCURSOR; - YYDEBUG(732, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" +#line 1475 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7089 "Zend/zend_language_scanner.c" -yy733: - YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy730; - if (yych <= 'Z') goto yy734; - if (yych <= '^') goto yy730; - } else { - if (yych <= '`') goto yy730; - if (yych <= 'z') goto yy734; - if (yych <= 0x7F) goto yy730; - } -yy734: - YYDEBUG(734, *YYCURSOR); +#line 7366 "Zend/zend_language_scanner.c" +yy751: + YYDEBUG(751, *YYCURSOR); ++YYCURSOR; - YYDEBUG(735, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 1483 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7113 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_HEREDOC: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(736, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych == '$') goto yy740; - if (yych == '{') goto yy741; - YYDEBUG(738, *YYCURSOR); +#line 7379 "Zend/zend_language_scanner.c" +yy753: + YYDEBUG(753, *YYCURSOR); ++YYCURSOR; -yy739: - YYDEBUG(739, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(754, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2485 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { - 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); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - if (SCNG(heredoc_scan_ahead)) { - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { - CG(increment_lineno) = 1; - YYCURSOR -= indentation; - heredoc_label->length += indentation; - } - - BEGIN(ST_END_HEREDOC); - - goto heredoc_scan_done; - } - continue; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -heredoc_scan_done: - - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - - if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { - zend_string *copy = Z_STR_P(zendlval); - - if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) - && PARSER_MODE()) { - zend_string_free(copy); - RETURN_TOKEN(T_ERROR); - } - - zend_string_free(copy); - } - - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN(T_FUNC_C); } -#line 7277 "Zend/zend_language_scanner.c" -yy740: - YYDEBUG(740, *YYCURSOR); +#line 7392 "Zend/zend_language_scanner.c" +yy755: + YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy739; - if (yych <= 'Z') goto yy742; - if (yych <= '^') goto yy739; - goto yy742; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy739; - goto yy742; - } else { - if (yych <= '{') goto yy745; - if (yych <= 0x7F) goto yy739; - goto yy742; - } + if (yych == 'L') goto yy757; + if (yych == 'l') goto yy757; + goto yy128; +yy756: + YYDEBUG(756, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy758; + goto yy128; +yy757: + YYDEBUG(757, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy760; + if (yych == 'e') goto yy760; + goto yy128; +yy758: + YYDEBUG(758, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy741: - YYDEBUG(741, *YYCURSOR); + YYDEBUG(759, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1885 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NS_C); +} +#line 7422 "Zend/zend_language_scanner.c" +yy760: + YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy747; - goto yy739; -yy742: - YYDEBUG(742, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(743, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy742; + if (yych == 'R') goto yy761; + if (yych != 'r') goto yy128; +yy761: + YYDEBUG(761, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - if (yych == '-') goto yy749; - if (yych <= '@') goto yy744; - if (yych <= '[') goto yy751; -yy744: - YYDEBUG(744, *YYCURSOR); + YYDEBUG(762, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" +#line 1511 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 7320 "Zend/zend_language_scanner.c" -yy745: - YYDEBUG(745, *YYCURSOR); +#line 7440 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_LOOKING_FOR_PROPERTY: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 64, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(763, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yybm[0+yych] & 64) { + goto yy767; + } + if (yych <= '^') { + if (yych <= '-') { + if (yych >= '-') goto yy770; + } else { + if (yych <= '@') goto yy765; + if (yych <= 'Z') goto yy771; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy771; + } else { + if (yych <= 'z') goto yy771; + if (yych >= 0x80) goto yy771; + } + } +yy765: + YYDEBUG(765, *YYCURSOR); ++YYCURSOR; - YYDEBUG(746, *YYCURSOR); +yy766: + YYDEBUG(766, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1686 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + yyless(0); + yy_pop_state(); + goto restart; } -#line 7331 "Zend/zend_language_scanner.c" -yy747: - YYDEBUG(747, *YYCURSOR); +#line 7512 "Zend/zend_language_scanner.c" +yy767: + YYDEBUG(767, *YYCURSOR); ++YYCURSOR; - YYDEBUG(748, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(768, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy767; + } + YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2367 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + goto return_whitespace; } -#line 7343 "Zend/zend_language_scanner.c" -yy749: - YYDEBUG(749, *YYCURSOR); +#line 7528 "Zend/zend_language_scanner.c" +yy770: + YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy753; -yy750: - YYDEBUG(750, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy744; -yy751: - YYDEBUG(751, *YYCURSOR); + if (yych == '>') goto yy774; + goto yy766; +yy771: + YYDEBUG(771, *YYCURSOR); ++YYCURSOR; - YYDEBUG(752, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(772, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy771; + } + YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + yy_pop_state(); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7363 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy750; - if (yych <= 'Z') goto yy754; - if (yych <= '^') goto yy750; - } else { - if (yych <= '`') goto yy750; - if (yych <= 'z') goto yy754; - if (yych <= 0x7F) goto yy750; - } -yy754: - YYDEBUG(754, *YYCURSOR); +#line 7550 "Zend/zend_language_scanner.c" +yy774: + YYDEBUG(774, *YYCURSOR); ++YYCURSOR; - YYDEBUG(755, *YYCURSOR); + YYDEBUG(775, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7387 "Zend/zend_language_scanner.c" +#line 7560 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7422,23 +7595,23 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(756, *YYCURSOR); + YYDEBUG(776, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy758; - if (yych <= 'Z') goto yy760; - if (yych >= '_') goto yy760; + if (yych <= '@') goto yy778; + if (yych <= 'Z') goto yy780; + if (yych >= '_') goto yy780; } else { - if (yych <= '`') goto yy758; - if (yych <= 'z') goto yy760; - if (yych >= 0x80) goto yy760; + if (yych <= '`') goto yy778; + if (yych <= 'z') goto yy780; + if (yych >= 0x80) goto yy780; } -yy758: - YYDEBUG(758, *YYCURSOR); +yy778: + YYDEBUG(778, *YYCURSOR); ++YYCURSOR; -yy759: - YYDEBUG(759, *YYCURSOR); +yy779: + YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1709 "Zend/zend_language_scanner.l" { @@ -7447,52 +7620,52 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7451 "Zend/zend_language_scanner.c" -yy760: - YYDEBUG(760, *YYCURSOR); +#line 7624 "Zend/zend_language_scanner.c" +yy780: + YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy759; - if (yych <= '9') goto yy762; - goto yy759; + if (yych <= '/') goto yy779; + if (yych <= '9') goto yy782; + goto yy779; } else { - if (yych <= '[') goto yy762; - if (yych <= '^') goto yy759; - goto yy762; + if (yych <= '[') goto yy782; + if (yych <= '^') goto yy779; + goto yy782; } } else { if (yych <= '|') { - if (yych <= '`') goto yy759; - if (yych <= 'z') goto yy762; - goto yy759; + if (yych <= '`') goto yy779; + if (yych <= 'z') goto yy782; + goto yy779; } else { - if (yych <= '}') goto yy762; - if (yych <= 0x7F) goto yy759; - goto yy762; + if (yych <= '}') goto yy782; + if (yych <= 0x7F) goto yy779; + goto yy782; } } -yy761: - YYDEBUG(761, *YYCURSOR); +yy781: + YYDEBUG(781, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy762: - YYDEBUG(762, *YYCURSOR); +yy782: + YYDEBUG(782, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy761; + goto yy781; } - if (yych <= '@') goto yy763; - if (yych <= '[') goto yy764; - if (yych == '}') goto yy764; -yy763: - YYDEBUG(763, *YYCURSOR); + if (yych <= '@') goto yy783; + if (yych <= '[') goto yy784; + if (yych == '}') goto yy784; +yy783: + YYDEBUG(783, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy759; -yy764: - YYDEBUG(764, *YYCURSOR); + goto yy779; +yy784: + YYDEBUG(784, *YYCURSOR); ++YYCURSOR; - YYDEBUG(765, *YYCURSOR); + YYDEBUG(785, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1701 "Zend/zend_language_scanner.l" { @@ -7501,8 +7674,100 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7505 "Zend/zend_language_scanner.c" +#line 7678 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_NOWDOC: + YYDEBUG(786, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(788, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(789, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2601 "Zend/zend_language_scanner.l" + { + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + CG(increment_lineno) = 1; + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + CG(increment_lineno) = 1; /* For newline before label */ + + YYCURSOR -= indentation; + heredoc_label->length += indentation; + + BEGIN(ST_END_HEREDOC); + + goto nowdoc_scan_done; + } + /* fall through */ + default: + continue; + } + } + +nowdoc_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + zend_copy_value(zendlval, yytext, yyleng); + + if (!EG(exception) && spacing != -1 && PARSER_MODE() + && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { + zend_copy_value(zendlval, yytext, yyleng); } + + HANDLE_NEWLINES(yytext, yyleng - newline); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); +} +#line 7771 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7540,55 +7805,55 @@ int start_line = CG(zend_lineno); 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }; - YYDEBUG(766, *YYCURSOR); + YYDEBUG(790, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '0') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy768; - if (yych <= '\n') goto yy770; + if (yych <= 0x08) goto yy792; + if (yych <= '\n') goto yy794; } else { - if (yych <= '\r') goto yy770; - if (yych >= ' ') goto yy770; + if (yych <= '\r') goto yy794; + if (yych >= ' ') goto yy794; } } else { if (yych <= '$') { - if (yych <= '"') goto yy772; - if (yych <= '#') goto yy770; - goto yy774; + if (yych <= '"') goto yy796; + if (yych <= '#') goto yy794; + goto yy798; } else { - if (yych == '\'') goto yy770; - if (yych <= '/') goto yy772; - goto yy775; + if (yych == '\'') goto yy794; + if (yych <= '/') goto yy796; + goto yy799; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '9') goto yy777; - if (yych <= '@') goto yy772; - goto yy779; + if (yych <= '9') goto yy801; + if (yych <= '@') goto yy796; + goto yy803; } else { - if (yych <= '[') goto yy772; - if (yych <= '\\') goto yy770; - goto yy782; + if (yych <= '[') goto yy796; + if (yych <= '\\') goto yy794; + goto yy806; } } else { if (yych <= '`') { - if (yych == '_') goto yy779; - goto yy772; + if (yych == '_') goto yy803; + goto yy796; } else { - if (yych <= 'z') goto yy779; - if (yych <= '~') goto yy772; - if (yych >= 0x80) goto yy779; + if (yych <= 'z') goto yy803; + if (yych <= '~') goto yy796; + if (yych >= 0x80) goto yy803; } } } -yy768: - YYDEBUG(768, *YYCURSOR); +yy792: + YYDEBUG(792, *YYCURSOR); ++YYCURSOR; - YYDEBUG(769, *YYCURSOR); + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2684 "Zend/zend_language_scanner.l" { @@ -7599,11 +7864,11 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7603 "Zend/zend_language_scanner.c" -yy770: - YYDEBUG(770, *YYCURSOR); +#line 7868 "Zend/zend_language_scanner.c" +yy794: + YYDEBUG(794, *YYCURSOR); ++YYCURSOR; - YYDEBUG(771, *YYCURSOR); + YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2000 "Zend/zend_language_scanner.l" { @@ -7613,52 +7878,52 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7617 "Zend/zend_language_scanner.c" -yy772: - YYDEBUG(772, *YYCURSOR); +#line 7882 "Zend/zend_language_scanner.c" +yy796: + YYDEBUG(796, *YYCURSOR); ++YYCURSOR; -yy773: - YYDEBUG(773, *YYCURSOR); +yy797: + YYDEBUG(797, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1995 "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 7629 "Zend/zend_language_scanner.c" -yy774: - YYDEBUG(774, *YYCURSOR); +#line 7894 "Zend/zend_language_scanner.c" +yy798: + YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy773; - if (yych <= 'Z') goto yy784; - if (yych <= '^') goto yy773; - goto yy784; + if (yych <= '@') goto yy797; + if (yych <= 'Z') goto yy808; + if (yych <= '^') goto yy797; + goto yy808; } else { - if (yych <= '`') goto yy773; - if (yych <= 'z') goto yy784; - if (yych <= 0x7F) goto yy773; - goto yy784; + if (yych <= '`') goto yy797; + if (yych <= 'z') goto yy808; + if (yych <= 0x7F) goto yy797; + goto yy808; } -yy775: - YYDEBUG(775, *YYCURSOR); +yy799: + YYDEBUG(799, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy787; + if (yych >= '0') goto yy811; } else { - if (yych == 'B') goto yy790; + if (yych == 'B') goto yy814; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy792; - if (yych >= 'b') goto yy790; + if (yych <= 'X') goto yy816; + if (yych >= 'b') goto yy814; } else { - if (yych == 'x') goto yy792; + if (yych == 'x') goto yy816; } } -yy776: - YYDEBUG(776, *YYCURSOR); +yy800: + YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1823 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ @@ -7676,83 +7941,83 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7680 "Zend/zend_language_scanner.c" -yy777: - YYDEBUG(777, *YYCURSOR); +#line 7945 "Zend/zend_language_scanner.c" +yy801: + YYDEBUG(801, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(778, *YYCURSOR); + YYDEBUG(802, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy777; + goto yy801; } - goto yy776; -yy779: - YYDEBUG(779, *YYCURSOR); + goto yy800; +yy803: + YYDEBUG(803, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(780, *YYCURSOR); + YYDEBUG(804, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy779; + goto yy803; } - YYDEBUG(781, *YYCURSOR); + YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2008 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7706 "Zend/zend_language_scanner.c" -yy782: - YYDEBUG(782, *YYCURSOR); +#line 7971 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); ++YYCURSOR; - YYDEBUG(783, *YYCURSOR); + YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1990 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7717 "Zend/zend_language_scanner.c" -yy784: - YYDEBUG(784, *YYCURSOR); +#line 7982 "Zend/zend_language_scanner.c" +yy808: + YYDEBUG(808, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(785, *YYCURSOR); + YYDEBUG(809, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy784; + if (yych >= '0') goto yy808; } else { - if (yych <= '@') goto yy786; - if (yych <= 'Z') goto yy784; + if (yych <= '@') goto yy810; + if (yych <= 'Z') goto yy808; } } else { if (yych <= '`') { - if (yych <= '_') goto yy784; + if (yych <= '_') goto yy808; } else { - if (yych <= 'z') goto yy784; - if (yych >= 0x80) goto yy784; + if (yych <= 'z') goto yy808; + if (yych >= 0x80) goto yy808; } } -yy786: - YYDEBUG(786, *YYCURSOR); +yy810: + YYDEBUG(810, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1986 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7746 "Zend/zend_language_scanner.c" -yy787: - YYDEBUG(787, *YYCURSOR); +#line 8011 "Zend/zend_language_scanner.c" +yy811: + YYDEBUG(811, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(788, *YYCURSOR); - if (yych <= '/') goto yy789; - if (yych <= '9') goto yy787; -yy789: - YYDEBUG(789, *YYCURSOR); + YYDEBUG(812, *YYCURSOR); + if (yych <= '/') goto yy813; + if (yych <= '9') goto yy811; +yy813: + YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1839 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ @@ -7763,306 +8028,45 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7767 "Zend/zend_language_scanner.c" -yy790: - YYDEBUG(790, *YYCURSOR); +#line 8032 "Zend/zend_language_scanner.c" +yy814: + YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy793; + goto yy817; } -yy791: - YYDEBUG(791, *YYCURSOR); +yy815: + YYDEBUG(815, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy776; -yy792: - YYDEBUG(792, *YYCURSOR); + goto yy800; +yy816: + YYDEBUG(816, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy795; + goto yy819; } - goto yy791; -yy793: - YYDEBUG(793, *YYCURSOR); + goto yy815; +yy817: + YYDEBUG(817, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(794, *YYCURSOR); + YYDEBUG(818, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy793; + goto yy817; } - goto yy789; -yy795: - YYDEBUG(795, *YYCURSOR); + goto yy813; +yy819: + YYDEBUG(819, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(796, *YYCURSOR); + YYDEBUG(820, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy795; - } - goto yy789; - } -/* *********************************** */ -yyc_INITIAL: - YYDEBUG(797, *YYCURSOR); - YYFILL(7); - yych = *YYCURSOR; - if (yych == '<') goto yy801; - YYDEBUG(799, *YYCURSOR); - ++YYCURSOR; -yy800: - YYDEBUG(800, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1921 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - -inline_char_handler: - - while (1) { - YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); - - YYCURSOR = ptr ? ptr + 1 : YYLIMIT; - - if (YYCURSOR >= YYLIMIT) { - break; - } - - if (*YYCURSOR == '?') { - if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ - - YYCURSOR--; - break; - } - } - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (SCNG(output_filter)) { - size_t readsize; - char *s = NULL; - size_t sz = 0; - // TODO: avoid reallocation ??? - readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); - ZVAL_STRINGL(zendlval, s, sz); - efree(s); - if (readsize < yyleng) { - yyless(readsize); - } - } else if (yyleng == 1) { - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); - } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); -} -#line 7864 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '?') goto yy800; - YYDEBUG(802, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'O') { - if (yych == '=') goto yy804; - } else { - if (yych <= 'P') goto yy806; - if (yych == 'p') goto yy806; - } -yy803: - YYDEBUG(803, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1909 "Zend/zend_language_scanner.l" - { - if (CG(short_tags)) { - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); - } else { - goto inline_char_handler; - } -} -#line 7892 "Zend/zend_language_scanner.c" -yy804: - YYDEBUG(804, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(805, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1890 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ECHO); - } - RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); -} -#line 7906 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy808; - if (yych == 'h') goto yy808; -yy807: - YYDEBUG(807, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy803; -yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy809; - if (yych != 'p') goto yy807; -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy807; - if (yych >= '\v') goto yy807; - } else { - if (yych <= '\r') goto yy812; - if (yych != ' ') goto yy807; - } -yy810: - YYDEBUG(810, *YYCURSOR); - ++YYCURSOR; -yy811: - YYDEBUG(811, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" - { - HANDLE_NEWLINE(yytext[yyleng-1]); - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); -} -#line 7946 "Zend/zend_language_scanner.c" -yy812: - YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy810; - goto yy811; -/* *********************************** */ -yyc_ST_END_HEREDOC: - YYDEBUG(813, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(815, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(816, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2353 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - - YYCURSOR += heredoc_label->length - 1; - yyleng = heredoc_label->length; - - heredoc_label_dtor(heredoc_label); - efree(heredoc_label); - - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN(T_END_HEREDOC); -} -#line 7974 "Zend/zend_language_scanner.c" -/* *********************************** */ -yyc_ST_NOWDOC: - YYDEBUG(817, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(819, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(820, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2601 "Zend/zend_language_scanner.l" - { - 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); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - CG(increment_lineno) = 1; - ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - YYCURSOR -= indentation; - heredoc_label->length += indentation; - - BEGIN(ST_END_HEREDOC); - - goto nowdoc_scan_done; - } - /* fall through */ - default: - continue; + goto yy819; } + goto yy813; } - -nowdoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - zend_copy_value(zendlval, yytext, yyleng); - - if (!EG(exception) && spacing != -1 && PARSER_MODE() - && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - zend_copy_value(zendlval, yytext, yyleng); - } - - HANDLE_NEWLINES(yytext, yyleng - newline); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 8066 "Zend/zend_language_scanner.c" } #line 2693 "Zend/zend_language_scanner.l" diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 4ac2e3420fa0b..2c88bfd206414 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2514,7 +2514,7 @@ double_quotes_scan_done: if (YYCURSOR == YYLIMIT) { ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } /* Check for ending label on the next line */ @@ -2631,7 +2631,7 @@ heredoc_scan_done: if (YYCURSOR == YYLIMIT) { CG(increment_lineno) = 1; ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } /* Check for ending label on the next line */ diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 81299aa44ffab..c89b1bba457d0 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 */ +/* Generated by re2c 0.16 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From 6e565362f8343e43f2ffbe891795cdea9ac8572c Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 24 Mar 2018 13:31:34 +0100 Subject: [PATCH 40/54] Don't adjust heredoc label length Instead also use indentation in ST_END_HEREDOC. --- Zend/zend_language_scanner.c | 325 +++++++++++++++++------------------ Zend/zend_language_scanner.l | 9 +- 2 files changed, 166 insertions(+), 168 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 78f0eb07bf37d..f52bfae2de6f3 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1854,8 +1854,8 @@ int start_line = CG(zend_lineno); { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - YYCURSOR += heredoc_label->length - 1; - yyleng = heredoc_label->length; + yyleng = heredoc_label->indentation + heredoc_label->length; + YYCURSOR += yyleng - 1; heredoc_label_dtor(heredoc_label); efree(heredoc_label); @@ -1971,7 +1971,6 @@ int start_line = CG(zend_lineno); } else { CG(increment_lineno) = 1; YYCURSOR -= indentation; - heredoc_label->length += indentation; } BEGIN(ST_END_HEREDOC); @@ -2026,7 +2025,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 2030 "Zend/zend_language_scanner.c" +#line 2029 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2069,7 +2068,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2073 "Zend/zend_language_scanner.c" +#line 2072 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; @@ -2080,7 +2079,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2084 "Zend/zend_language_scanner.c" +#line 2083 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2092,7 +2091,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 2096 "Zend/zend_language_scanner.c" +#line 2095 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2112,7 +2111,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2116 "Zend/zend_language_scanner.c" +#line 2115 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2136,7 +2135,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2140 "Zend/zend_language_scanner.c" +#line 2139 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2305,7 +2304,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2684 "Zend/zend_language_scanner.l" +#line 2683 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2314,7 +2313,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 2318 "Zend/zend_language_scanner.c" +#line 2317 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); ++YYCURSOR; @@ -2330,7 +2329,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 2334 "Zend/zend_language_scanner.c" +#line 2333 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; @@ -2342,7 +2341,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2346 "Zend/zend_language_scanner.c" +#line 2345 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; @@ -2393,7 +2392,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2397 "Zend/zend_language_scanner.c" +#line 2396 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; @@ -2431,7 +2430,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 2435 "Zend/zend_language_scanner.c" +#line 2434 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; @@ -2551,7 +2550,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); } -#line 2555 "Zend/zend_language_scanner.c" +#line 2554 "Zend/zend_language_scanner.c" yy103: YYDEBUG(103, *YYCURSOR); yyaccept = 0; @@ -2732,7 +2731,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN_WITH_VAL(T_LNUMBER); } -#line 2736 "Zend/zend_language_scanner.c" +#line 2735 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 1; @@ -2817,7 +2816,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 2821 "Zend/zend_language_scanner.c" +#line 2820 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 2; @@ -3106,7 +3105,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 3110 "Zend/zend_language_scanner.c" +#line 3109 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; @@ -3127,7 +3126,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3131 "Zend/zend_language_scanner.c" +#line 3130 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; @@ -3138,7 +3137,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 3142 "Zend/zend_language_scanner.c" +#line 3141 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; @@ -3158,7 +3157,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 3162 "Zend/zend_language_scanner.c" +#line 3161 "Zend/zend_language_scanner.c" yy153: YYDEBUG(153, *YYCURSOR); ++YYCURSOR; @@ -3170,7 +3169,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3174 "Zend/zend_language_scanner.c" +#line 3173 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); ++YYCURSOR; @@ -3199,7 +3198,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 3203 "Zend/zend_language_scanner.c" +#line 3202 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); ++YYCURSOR; @@ -3209,7 +3208,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3213 "Zend/zend_language_scanner.c" +#line 3212 "Zend/zend_language_scanner.c" yy160: YYDEBUG(160, *YYCURSOR); ++YYCURSOR; @@ -3219,7 +3218,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3223 "Zend/zend_language_scanner.c" +#line 3222 "Zend/zend_language_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); ++YYCURSOR; @@ -3229,7 +3228,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3233 "Zend/zend_language_scanner.c" +#line 3232 "Zend/zend_language_scanner.c" yy164: YYDEBUG(164, *YYCURSOR); ++YYCURSOR; @@ -3363,7 +3362,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3367 "Zend/zend_language_scanner.c" +#line 3366 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3373,7 +3372,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3377 "Zend/zend_language_scanner.c" +#line 3376 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3383,7 +3382,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3387 "Zend/zend_language_scanner.c" +#line 3386 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3393,7 +3392,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3397 "Zend/zend_language_scanner.c" +#line 3396 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3403,7 +3402,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 3407 "Zend/zend_language_scanner.c" +#line 3406 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3413,7 +3412,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 3417 "Zend/zend_language_scanner.c" +#line 3416 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3424,7 +3423,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 3428 "Zend/zend_language_scanner.c" +#line 3427 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yych = *++YYCURSOR; @@ -3456,7 +3455,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } -#line 3460 "Zend/zend_language_scanner.c" +#line 3459 "Zend/zend_language_scanner.c" yy194: YYDEBUG(194, *YYCURSOR); ++YYCURSOR; @@ -3466,7 +3465,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3470 "Zend/zend_language_scanner.c" +#line 3469 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); yyaccept = 4; @@ -3514,7 +3513,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3518 "Zend/zend_language_scanner.c" +#line 3517 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); ++YYCURSOR; @@ -3524,7 +3523,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3528 "Zend/zend_language_scanner.c" +#line 3527 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; @@ -3560,7 +3559,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 3564 "Zend/zend_language_scanner.c" +#line 3563 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); yyaccept = 5; @@ -3575,7 +3574,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3579 "Zend/zend_language_scanner.c" +#line 3578 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; @@ -3586,7 +3585,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3590 "Zend/zend_language_scanner.c" +#line 3589 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3601,7 +3600,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3605 "Zend/zend_language_scanner.c" +#line 3604 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3611,7 +3610,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3615 "Zend/zend_language_scanner.c" +#line 3614 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3621,7 +3620,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3625 "Zend/zend_language_scanner.c" +#line 3624 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3632,7 +3631,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3636 "Zend/zend_language_scanner.c" +#line 3635 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3652,7 +3651,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); } -#line 3656 "Zend/zend_language_scanner.c" +#line 3655 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3662,7 +3661,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 3666 "Zend/zend_language_scanner.c" +#line 3665 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; @@ -3693,7 +3692,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 3697 "Zend/zend_language_scanner.c" +#line 3696 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; @@ -3783,7 +3782,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 3787 "Zend/zend_language_scanner.c" +#line 3786 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3872,7 +3871,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 3876 "Zend/zend_language_scanner.c" +#line 3875 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; @@ -3937,7 +3936,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3941 "Zend/zend_language_scanner.c" +#line 3940 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -4055,7 +4054,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 4059 "Zend/zend_language_scanner.c" +#line 4058 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; @@ -4087,7 +4086,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 4091 "Zend/zend_language_scanner.c" +#line 4090 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); ++YYCURSOR; @@ -4097,7 +4096,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 4101 "Zend/zend_language_scanner.c" +#line 4100 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); ++YYCURSOR; @@ -4107,7 +4106,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 4111 "Zend/zend_language_scanner.c" +#line 4110 "Zend/zend_language_scanner.c" yy279: YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; @@ -4177,7 +4176,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 4181 "Zend/zend_language_scanner.c" +#line 4180 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); ++YYCURSOR; @@ -4187,7 +4186,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 4191 "Zend/zend_language_scanner.c" +#line 4190 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; @@ -4239,7 +4238,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4243 "Zend/zend_language_scanner.c" +#line 4242 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; @@ -4293,7 +4292,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4297 "Zend/zend_language_scanner.c" +#line 4296 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); ++YYCURSOR; @@ -4332,7 +4331,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 4336 "Zend/zend_language_scanner.c" +#line 4335 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; @@ -4342,7 +4341,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 4346 "Zend/zend_language_scanner.c" +#line 4345 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); ++YYCURSOR; @@ -4352,7 +4351,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 4356 "Zend/zend_language_scanner.c" +#line 4355 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; @@ -4362,7 +4361,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 4366 "Zend/zend_language_scanner.c" +#line 4365 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4390,7 +4389,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 4394 "Zend/zend_language_scanner.c" +#line 4393 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; @@ -4475,7 +4474,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 4479 "Zend/zend_language_scanner.c" +#line 4478 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4561,7 +4560,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 4565 "Zend/zend_language_scanner.c" +#line 4564 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; @@ -4634,7 +4633,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4638 "Zend/zend_language_scanner.c" +#line 4637 "Zend/zend_language_scanner.c" yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; @@ -4711,7 +4710,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 4715 "Zend/zend_language_scanner.c" +#line 4714 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; @@ -4730,7 +4729,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4734 "Zend/zend_language_scanner.c" +#line 4733 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); ++YYCURSOR; @@ -4743,7 +4742,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4747 "Zend/zend_language_scanner.c" +#line 4746 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; @@ -4762,7 +4761,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 4766 "Zend/zend_language_scanner.c" +#line 4765 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; @@ -4980,7 +4979,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 4984 "Zend/zend_language_scanner.c" +#line 4983 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; @@ -5035,7 +5034,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 5039 "Zend/zend_language_scanner.c" +#line 5038 "Zend/zend_language_scanner.c" yy412: YYDEBUG(412, *YYCURSOR); ++YYCURSOR; @@ -5063,7 +5062,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 5067 "Zend/zend_language_scanner.c" +#line 5066 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; @@ -5112,7 +5111,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 5116 "Zend/zend_language_scanner.c" +#line 5115 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); ++YYCURSOR; @@ -5125,7 +5124,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 5129 "Zend/zend_language_scanner.c" +#line 5128 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -5168,7 +5167,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5172 "Zend/zend_language_scanner.c" +#line 5171 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; @@ -5221,7 +5220,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 5225 "Zend/zend_language_scanner.c" +#line 5224 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5412,7 +5411,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 5416 "Zend/zend_language_scanner.c" +#line 5415 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5569,7 +5568,7 @@ int start_line = CG(zend_lineno); } YYCURSOR = saved_cursor; - heredoc_label->length += indentation; + heredoc_label->indentation = indentation; BEGIN(ST_END_HEREDOC); RETURN_TOKEN(T_START_HEREDOC); @@ -5623,7 +5622,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 5627 "Zend/zend_language_scanner.c" +#line 5626 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5647,7 +5646,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5651 "Zend/zend_language_scanner.c" +#line 5650 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); ++YYCURSOR; @@ -5660,7 +5659,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5664 "Zend/zend_language_scanner.c" +#line 5663 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; @@ -5679,7 +5678,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 5683 "Zend/zend_language_scanner.c" +#line 5682 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; @@ -5692,7 +5691,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 5696 "Zend/zend_language_scanner.c" +#line 5695 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5705,7 +5704,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 5709 "Zend/zend_language_scanner.c" +#line 5708 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; @@ -5718,7 +5717,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 5722 "Zend/zend_language_scanner.c" +#line 5721 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5755,7 +5754,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 5759 "Zend/zend_language_scanner.c" +#line 5758 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5780,7 +5779,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 5784 "Zend/zend_language_scanner.c" +#line 5783 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5826,7 +5825,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 5830 "Zend/zend_language_scanner.c" +#line 5829 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5887,7 +5886,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5891 "Zend/zend_language_scanner.c" +#line 5890 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; @@ -5906,7 +5905,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5910 "Zend/zend_language_scanner.c" +#line 5909 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5961,7 +5960,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5965 "Zend/zend_language_scanner.c" +#line 5964 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; @@ -5974,7 +5973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5978 "Zend/zend_language_scanner.c" +#line 5977 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; @@ -5987,7 +5986,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5991 "Zend/zend_language_scanner.c" +#line 5990 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; @@ -6000,7 +5999,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 6004 "Zend/zend_language_scanner.c" +#line 6003 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yyaccept = 6; @@ -6022,7 +6021,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 6026 "Zend/zend_language_scanner.c" +#line 6025 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -6118,7 +6117,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 6122 "Zend/zend_language_scanner.c" +#line 6121 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -6152,7 +6151,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 6156 "Zend/zend_language_scanner.c" +#line 6155 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -6221,7 +6220,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 6225 "Zend/zend_language_scanner.c" +#line 6224 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -6255,7 +6254,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6259 "Zend/zend_language_scanner.c" +#line 6258 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -6304,7 +6303,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 6308 "Zend/zend_language_scanner.c" +#line 6307 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -6365,7 +6364,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 6369 "Zend/zend_language_scanner.c" +#line 6368 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6384,7 +6383,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6388 "Zend/zend_language_scanner.c" +#line 6387 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); ++YYCURSOR; @@ -6397,7 +6396,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 6401 "Zend/zend_language_scanner.c" +#line 6400 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; @@ -6410,7 +6409,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 6414 "Zend/zend_language_scanner.c" +#line 6413 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6494,7 +6493,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 6498 "Zend/zend_language_scanner.c" +#line 6497 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); ++YYCURSOR; @@ -6544,7 +6543,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 6548 "Zend/zend_language_scanner.c" +#line 6547 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; @@ -6575,7 +6574,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6579 "Zend/zend_language_scanner.c" +#line 6578 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); ++YYCURSOR; @@ -6588,7 +6587,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6592 "Zend/zend_language_scanner.c" +#line 6591 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6625,7 +6624,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6629 "Zend/zend_language_scanner.c" +#line 6628 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); ++YYCURSOR; @@ -6638,7 +6637,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6642 "Zend/zend_language_scanner.c" +#line 6641 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); ++YYCURSOR; @@ -6651,7 +6650,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6655 "Zend/zend_language_scanner.c" +#line 6654 "Zend/zend_language_scanner.c" yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; @@ -6689,7 +6688,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 6693 "Zend/zend_language_scanner.c" +#line 6692 "Zend/zend_language_scanner.c" yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; @@ -6726,7 +6725,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 6730 "Zend/zend_language_scanner.c" +#line 6729 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6758,7 +6757,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6762 "Zend/zend_language_scanner.c" +#line 6761 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6782,7 +6781,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 6786 "Zend/zend_language_scanner.c" +#line 6785 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6831,7 +6830,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 6835 "Zend/zend_language_scanner.c" +#line 6834 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); ++YYCURSOR; @@ -6841,7 +6840,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6845 "Zend/zend_language_scanner.c" +#line 6844 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6854,7 +6853,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 6858 "Zend/zend_language_scanner.c" +#line 6857 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); ++YYCURSOR; @@ -6867,7 +6866,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6871 "Zend/zend_language_scanner.c" +#line 6870 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); ++YYCURSOR; @@ -6880,7 +6879,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6884 "Zend/zend_language_scanner.c" +#line 6883 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6911,7 +6910,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6915 "Zend/zend_language_scanner.c" +#line 6914 "Zend/zend_language_scanner.c" yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; @@ -6924,7 +6923,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6928 "Zend/zend_language_scanner.c" +#line 6927 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -6996,7 +6995,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 7000 "Zend/zend_language_scanner.c" +#line 6999 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -7021,7 +7020,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 7025 "Zend/zend_language_scanner.c" +#line 7024 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -7062,7 +7061,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 7066 "Zend/zend_language_scanner.c" +#line 7065 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -7093,7 +7092,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 7097 "Zend/zend_language_scanner.c" +#line 7096 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); ++YYCURSOR; @@ -7106,7 +7105,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 7110 "Zend/zend_language_scanner.c" +#line 7109 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -7119,7 +7118,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 7123 "Zend/zend_language_scanner.c" +#line 7122 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); ++YYCURSOR; @@ -7132,7 +7131,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 7136 "Zend/zend_language_scanner.c" +#line 7135 "Zend/zend_language_scanner.c" yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; @@ -7157,7 +7156,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 7161 "Zend/zend_language_scanner.c" +#line 7160 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7193,7 +7192,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 7197 "Zend/zend_language_scanner.c" +#line 7196 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); ++YYCURSOR; @@ -7206,7 +7205,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7210 "Zend/zend_language_scanner.c" +#line 7209 "Zend/zend_language_scanner.c" yy728: YYDEBUG(728, *YYCURSOR); ++YYCURSOR; @@ -7219,7 +7218,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 7223 "Zend/zend_language_scanner.c" +#line 7222 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); ++YYCURSOR; @@ -7232,7 +7231,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 7236 "Zend/zend_language_scanner.c" +#line 7235 "Zend/zend_language_scanner.c" yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; @@ -7251,7 +7250,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 7255 "Zend/zend_language_scanner.c" +#line 7254 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7303,7 +7302,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 7307 "Zend/zend_language_scanner.c" +#line 7306 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -7333,7 +7332,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 7337 "Zend/zend_language_scanner.c" +#line 7336 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7362,7 +7361,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7366 "Zend/zend_language_scanner.c" +#line 7365 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); ++YYCURSOR; @@ -7375,7 +7374,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7379 "Zend/zend_language_scanner.c" +#line 7378 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); ++YYCURSOR; @@ -7388,7 +7387,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 7392 "Zend/zend_language_scanner.c" +#line 7391 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -7418,7 +7417,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 7422 "Zend/zend_language_scanner.c" +#line 7421 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; @@ -7436,7 +7435,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 7440 "Zend/zend_language_scanner.c" +#line 7439 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7508,7 +7507,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7512 "Zend/zend_language_scanner.c" +#line 7511 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); ++YYCURSOR; @@ -7524,7 +7523,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7528 "Zend/zend_language_scanner.c" +#line 7527 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; @@ -7546,7 +7545,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7550 "Zend/zend_language_scanner.c" +#line 7549 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); ++YYCURSOR; @@ -7556,7 +7555,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7560 "Zend/zend_language_scanner.c" +#line 7559 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7620,7 +7619,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7624 "Zend/zend_language_scanner.c" +#line 7623 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7674,7 +7673,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7678 "Zend/zend_language_scanner.c" +#line 7677 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7685,7 +7684,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2601 "Zend/zend_language_scanner.l" +#line 2600 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7743,7 +7742,7 @@ int start_line = CG(zend_lineno); CG(increment_lineno) = 1; /* For newline before label */ YYCURSOR -= indentation; - heredoc_label->length += indentation; + heredoc_label->indentation = indentation; BEGIN(ST_END_HEREDOC); @@ -7767,7 +7766,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7771 "Zend/zend_language_scanner.c" +#line 7770 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7855,7 +7854,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2684 "Zend/zend_language_scanner.l" +#line 2683 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7864,7 +7863,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7868 "Zend/zend_language_scanner.c" +#line 7867 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); ++YYCURSOR; @@ -7878,7 +7877,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7882 "Zend/zend_language_scanner.c" +#line 7881 "Zend/zend_language_scanner.c" yy796: YYDEBUG(796, *YYCURSOR); ++YYCURSOR; @@ -7890,7 +7889,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7894 "Zend/zend_language_scanner.c" +#line 7893 "Zend/zend_language_scanner.c" yy798: YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; @@ -7941,7 +7940,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7945 "Zend/zend_language_scanner.c" +#line 7944 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); ++YYCURSOR; @@ -7967,7 +7966,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7971 "Zend/zend_language_scanner.c" +#line 7970 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7978,7 +7977,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7982 "Zend/zend_language_scanner.c" +#line 7981 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); ++YYCURSOR; @@ -8007,7 +8006,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8011 "Zend/zend_language_scanner.c" +#line 8010 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); ++YYCURSOR; @@ -8028,7 +8027,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8032 "Zend/zend_language_scanner.c" +#line 8031 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; @@ -8068,7 +8067,7 @@ int start_line = CG(zend_lineno); goto yy813; } } -#line 2693 "Zend/zend_language_scanner.l" +#line 2692 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 2c88bfd206414..0998498aa12cd 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2288,7 +2288,7 @@ skip_escape_conversion: } YYCURSOR = saved_cursor; - heredoc_label->length += indentation; + heredoc_label->indentation = indentation; BEGIN(ST_END_HEREDOC); RETURN_TOKEN(T_START_HEREDOC); @@ -2353,8 +2353,8 @@ skip_escape_conversion: {ANY_CHAR} { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - YYCURSOR += heredoc_label->length - 1; - yyleng = heredoc_label->length; + yyleng = heredoc_label->indentation + heredoc_label->length; + YYCURSOR += yyleng - 1; heredoc_label_dtor(heredoc_label); efree(heredoc_label); @@ -2541,7 +2541,6 @@ double_quotes_scan_done: } else { CG(increment_lineno) = 1; YYCURSOR -= indentation; - heredoc_label->length += indentation; } BEGIN(ST_END_HEREDOC); @@ -2655,7 +2654,7 @@ heredoc_scan_done: CG(increment_lineno) = 1; /* For newline before label */ YYCURSOR -= indentation; - heredoc_label->length += indentation; + heredoc_label->indentation = indentation; BEGIN(ST_END_HEREDOC); From 6d680f369ca110c2c3158d6b4a1d87ffb22ae989 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 24 Mar 2018 16:31:28 +0100 Subject: [PATCH 41/54] Add one more test case --- Zend/tests/flexible-heredoc-nowdoc.phpt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Zend/tests/flexible-heredoc-nowdoc.phpt b/Zend/tests/flexible-heredoc-nowdoc.phpt index 64b931113dd86..ef317898e78c3 100644 --- a/Zend/tests/flexible-heredoc-nowdoc.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc.phpt @@ -12,6 +12,12 @@ var_dump(<< --EXPECT-- string(0) "" +string(0) "" string(0) "" a b @@ -103,4 +111,4 @@ e b c d -e \ No newline at end of file +e From ab0229134bb65d8bd647aa79bc3fa0f871df71a0 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 24 Mar 2018 16:32:26 +0100 Subject: [PATCH 42/54] Move function defs above macros --- Zend/zend_language_scanner.c | 48 ++++++++++++++++++------------------ Zend/zend_language_scanner.l | 48 ++++++++++++++++++------------------ 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index f52bfae2de6f3..9b106c2ca8c73 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1108,30 +1108,6 @@ static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quot return SUCCESS; } -#define PARSER_MODE() \ - EXPECTED(elem != NULL) - -#define RETURN_TOKEN(_token) do { \ - token = _token; \ - goto emit_token; \ - } while (0) - -#define RETURN_TOKEN_WITH_VAL(_token) do { \ - token = _token; \ - goto emit_token_with_val; \ - } while (0) - -#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ - token = _token; \ - offset = _offset; \ - goto emit_token_with_str; \ - } while (0) - -#define SKIP_TOKEN(_token) do { \ - token = _token; \ - goto skip_token; \ - } while (0) - #define HEREDOC_USING_SPACES 1 #define HEREDOC_USING_TABS 2 @@ -1197,6 +1173,30 @@ static void copy_heredoc_label_stack(void *void_heredoc_label) zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); } +#define PARSER_MODE() \ + EXPECTED(elem != NULL) + +#define RETURN_TOKEN(_token) do { \ + token = _token; \ + goto emit_token; \ + } while (0) + +#define RETURN_TOKEN_WITH_VAL(_token) do { \ + token = _token; \ + goto emit_token_with_val; \ + } while (0) + +#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ + token = _token; \ + offset = _offset; \ + goto emit_token_with_str; \ + } while (0) + +#define SKIP_TOKEN(_token) do { \ + token = _token; \ + goto skip_token; \ + } while (0) + int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem) { int token; diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 0998498aa12cd..1ca8c565ae495 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1106,30 +1106,6 @@ skip_escape_conversion: return SUCCESS; } -#define PARSER_MODE() \ - EXPECTED(elem != NULL) - -#define RETURN_TOKEN(_token) do { \ - token = _token; \ - goto emit_token; \ - } while (0) - -#define RETURN_TOKEN_WITH_VAL(_token) do { \ - token = _token; \ - goto emit_token_with_val; \ - } while (0) - -#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ - token = _token; \ - offset = _offset; \ - goto emit_token_with_str; \ - } while (0) - -#define SKIP_TOKEN(_token) do { \ - token = _token; \ - goto skip_token; \ - } while (0) - #define HEREDOC_USING_SPACES 1 #define HEREDOC_USING_TABS 2 @@ -1195,6 +1171,30 @@ static void copy_heredoc_label_stack(void *void_heredoc_label) zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); } +#define PARSER_MODE() \ + EXPECTED(elem != NULL) + +#define RETURN_TOKEN(_token) do { \ + token = _token; \ + goto emit_token; \ + } while (0) + +#define RETURN_TOKEN_WITH_VAL(_token) do { \ + token = _token; \ + goto emit_token_with_val; \ + } while (0) + +#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ + token = _token; \ + offset = _offset; \ + goto emit_token_with_str; \ + } while (0) + +#define SKIP_TOKEN(_token) do { \ + token = _token; \ + goto skip_token; \ + } while (0) + int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem) { int token; From 16939add1e46542645bc13b54cc0d517c6aff607 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 25 Mar 2018 16:14:22 +0200 Subject: [PATCH 43/54] Run all tokenizer tests w/ and w/o TOKEN_PARSE --- .../tests/token_get_all_heredoc_nowdoc.phpt | 240 ++++++++++++------ 1 file changed, 163 insertions(+), 77 deletions(-) diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index d35262819e9b8..04ae9c57353bb 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -5,150 +5,128 @@ Flexible heredoc and nowdoc testing with token_get_all --FILE-- getMessage()} on line {$e->getLine()}\n"; } } -echo 'Test case 1', PHP_EOL, PHP_EOL; +$tests = []; -output(token_get_all(<<<'OUTER_END' +$tests[1] = <<<'OUTER_END' $test) { + echo "\nTest case $i\n\n"; + test($test, 0); +} -$code = << $test) { + echo "\nTest case $i\n\n"; + test($test, TOKEN_PARSE); +} --EXPECT-- +Without TOKEN_PARSE: + Test case 1 Line 1: T_OPEN_TAG (' Date: Sun, 25 Mar 2018 16:33:54 +0200 Subject: [PATCH 44/54] Make sure to reset lookahead state So we don't get nonesense in the case where there is no ending heredoc marker. --- Zend/zend_language_scanner.c | 188 +++++++++--------- Zend/zend_language_scanner.l | 2 + .../tests/token_get_all_heredoc_nowdoc.phpt | 4 +- 3 files changed, 99 insertions(+), 95 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 9b106c2ca8c73..e7f89a2966299 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1446,7 +1446,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2439 "Zend/zend_language_scanner.l" +#line 2441 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1515,7 +1515,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2379 "Zend/zend_language_scanner.l" +#line 2381 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); @@ -1562,7 +1562,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2367 "Zend/zend_language_scanner.l" +#line 2369 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); @@ -1665,7 +1665,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2385 "Zend/zend_language_scanner.l" +#line 2387 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1724,7 +1724,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2374 "Zend/zend_language_scanner.l" +#line 2376 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); @@ -1789,7 +1789,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2367 "Zend/zend_language_scanner.l" +#line 2369 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); @@ -1850,7 +1850,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2353 "Zend/zend_language_scanner.l" +#line 2355 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1911,7 +1911,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2485 "Zend/zend_language_scanner.l" +#line 2487 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -2085,7 +2085,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2367 "Zend/zend_language_scanner.l" +#line 2369 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); @@ -2304,7 +2304,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2683 "Zend/zend_language_scanner.l" +#line 2685 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -3121,7 +3121,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2347 "Zend/zend_language_scanner.l" +#line 2349 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -5584,6 +5584,8 @@ int start_line = CG(zend_lineno); zend_save_lexical_state(¤t_state); SCNG(heredoc_scan_ahead) = 1; + SCNG(heredoc_indentation) = 0; + SCNG(heredoc_indentation_uses_spaces) = 0; LANG_SCNG(on_event) = NULL; zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); @@ -5622,7 +5624,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 5626 "Zend/zend_language_scanner.c" +#line 5628 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5646,7 +5648,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5650 "Zend/zend_language_scanner.c" +#line 5652 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); ++YYCURSOR; @@ -5659,7 +5661,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5663 "Zend/zend_language_scanner.c" +#line 5665 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; @@ -5678,7 +5680,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 5682 "Zend/zend_language_scanner.c" +#line 5684 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; @@ -5691,7 +5693,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 5695 "Zend/zend_language_scanner.c" +#line 5697 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5704,7 +5706,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 5708 "Zend/zend_language_scanner.c" +#line 5710 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; @@ -5717,7 +5719,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 5721 "Zend/zend_language_scanner.c" +#line 5723 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5754,7 +5756,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 5758 "Zend/zend_language_scanner.c" +#line 5760 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5779,7 +5781,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 5783 "Zend/zend_language_scanner.c" +#line 5785 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5825,7 +5827,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 5829 "Zend/zend_language_scanner.c" +#line 5831 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5886,7 +5888,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5890 "Zend/zend_language_scanner.c" +#line 5892 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; @@ -5905,7 +5907,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5909 "Zend/zend_language_scanner.c" +#line 5911 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5960,7 +5962,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5964 "Zend/zend_language_scanner.c" +#line 5966 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; @@ -5973,7 +5975,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5977 "Zend/zend_language_scanner.c" +#line 5979 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; @@ -5986,7 +5988,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5990 "Zend/zend_language_scanner.c" +#line 5992 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; @@ -5999,7 +6001,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 6003 "Zend/zend_language_scanner.c" +#line 6005 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yyaccept = 6; @@ -6021,7 +6023,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 6025 "Zend/zend_language_scanner.c" +#line 6027 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -6117,7 +6119,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 6121 "Zend/zend_language_scanner.c" +#line 6123 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -6151,7 +6153,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 6155 "Zend/zend_language_scanner.c" +#line 6157 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -6220,7 +6222,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 6224 "Zend/zend_language_scanner.c" +#line 6226 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -6254,7 +6256,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6258 "Zend/zend_language_scanner.c" +#line 6260 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -6303,7 +6305,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 6307 "Zend/zend_language_scanner.c" +#line 6309 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -6364,7 +6366,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 6368 "Zend/zend_language_scanner.c" +#line 6370 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6383,7 +6385,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6387 "Zend/zend_language_scanner.c" +#line 6389 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); ++YYCURSOR; @@ -6396,7 +6398,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 6400 "Zend/zend_language_scanner.c" +#line 6402 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; @@ -6409,7 +6411,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 6413 "Zend/zend_language_scanner.c" +#line 6415 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6493,7 +6495,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 6497 "Zend/zend_language_scanner.c" +#line 6499 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); ++YYCURSOR; @@ -6543,7 +6545,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 6547 "Zend/zend_language_scanner.c" +#line 6549 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; @@ -6574,7 +6576,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6578 "Zend/zend_language_scanner.c" +#line 6580 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); ++YYCURSOR; @@ -6587,7 +6589,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6591 "Zend/zend_language_scanner.c" +#line 6593 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6624,7 +6626,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6628 "Zend/zend_language_scanner.c" +#line 6630 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); ++YYCURSOR; @@ -6637,7 +6639,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6641 "Zend/zend_language_scanner.c" +#line 6643 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); ++YYCURSOR; @@ -6650,7 +6652,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6654 "Zend/zend_language_scanner.c" +#line 6656 "Zend/zend_language_scanner.c" yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; @@ -6688,7 +6690,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 6692 "Zend/zend_language_scanner.c" +#line 6694 "Zend/zend_language_scanner.c" yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; @@ -6725,7 +6727,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 6729 "Zend/zend_language_scanner.c" +#line 6731 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6757,7 +6759,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6761 "Zend/zend_language_scanner.c" +#line 6763 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6781,7 +6783,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 6785 "Zend/zend_language_scanner.c" +#line 6787 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6830,7 +6832,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 6834 "Zend/zend_language_scanner.c" +#line 6836 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); ++YYCURSOR; @@ -6840,7 +6842,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6844 "Zend/zend_language_scanner.c" +#line 6846 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6853,7 +6855,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 6857 "Zend/zend_language_scanner.c" +#line 6859 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); ++YYCURSOR; @@ -6866,7 +6868,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6870 "Zend/zend_language_scanner.c" +#line 6872 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); ++YYCURSOR; @@ -6879,7 +6881,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6883 "Zend/zend_language_scanner.c" +#line 6885 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6910,7 +6912,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6914 "Zend/zend_language_scanner.c" +#line 6916 "Zend/zend_language_scanner.c" yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; @@ -6923,7 +6925,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6927 "Zend/zend_language_scanner.c" +#line 6929 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -6995,7 +6997,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6999 "Zend/zend_language_scanner.c" +#line 7001 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -7020,7 +7022,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 7024 "Zend/zend_language_scanner.c" +#line 7026 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -7061,7 +7063,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 7065 "Zend/zend_language_scanner.c" +#line 7067 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -7092,7 +7094,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 7096 "Zend/zend_language_scanner.c" +#line 7098 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); ++YYCURSOR; @@ -7105,7 +7107,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 7109 "Zend/zend_language_scanner.c" +#line 7111 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -7118,7 +7120,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 7122 "Zend/zend_language_scanner.c" +#line 7124 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); ++YYCURSOR; @@ -7131,7 +7133,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 7135 "Zend/zend_language_scanner.c" +#line 7137 "Zend/zend_language_scanner.c" yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; @@ -7156,7 +7158,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 7160 "Zend/zend_language_scanner.c" +#line 7162 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7192,7 +7194,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 7196 "Zend/zend_language_scanner.c" +#line 7198 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); ++YYCURSOR; @@ -7205,7 +7207,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7209 "Zend/zend_language_scanner.c" +#line 7211 "Zend/zend_language_scanner.c" yy728: YYDEBUG(728, *YYCURSOR); ++YYCURSOR; @@ -7218,7 +7220,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 7222 "Zend/zend_language_scanner.c" +#line 7224 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); ++YYCURSOR; @@ -7231,7 +7233,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 7235 "Zend/zend_language_scanner.c" +#line 7237 "Zend/zend_language_scanner.c" yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; @@ -7250,7 +7252,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 7254 "Zend/zend_language_scanner.c" +#line 7256 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7302,7 +7304,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 7306 "Zend/zend_language_scanner.c" +#line 7308 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -7332,7 +7334,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 7336 "Zend/zend_language_scanner.c" +#line 7338 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7361,7 +7363,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7365 "Zend/zend_language_scanner.c" +#line 7367 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); ++YYCURSOR; @@ -7374,7 +7376,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7378 "Zend/zend_language_scanner.c" +#line 7380 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); ++YYCURSOR; @@ -7387,7 +7389,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 7391 "Zend/zend_language_scanner.c" +#line 7393 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -7417,7 +7419,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 7421 "Zend/zend_language_scanner.c" +#line 7423 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; @@ -7435,7 +7437,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 7439 "Zend/zend_language_scanner.c" +#line 7441 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7507,7 +7509,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7511 "Zend/zend_language_scanner.c" +#line 7513 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); ++YYCURSOR; @@ -7523,7 +7525,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7527 "Zend/zend_language_scanner.c" +#line 7529 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; @@ -7545,7 +7547,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7549 "Zend/zend_language_scanner.c" +#line 7551 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); ++YYCURSOR; @@ -7555,7 +7557,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7559 "Zend/zend_language_scanner.c" +#line 7561 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7619,7 +7621,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7623 "Zend/zend_language_scanner.c" +#line 7625 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7673,7 +7675,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7677 "Zend/zend_language_scanner.c" +#line 7679 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7684,7 +7686,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2600 "Zend/zend_language_scanner.l" +#line 2602 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7766,7 +7768,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7770 "Zend/zend_language_scanner.c" +#line 7772 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7854,7 +7856,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2683 "Zend/zend_language_scanner.l" +#line 2685 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7863,7 +7865,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7867 "Zend/zend_language_scanner.c" +#line 7869 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); ++YYCURSOR; @@ -7877,7 +7879,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7881 "Zend/zend_language_scanner.c" +#line 7883 "Zend/zend_language_scanner.c" yy796: YYDEBUG(796, *YYCURSOR); ++YYCURSOR; @@ -7889,7 +7891,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7893 "Zend/zend_language_scanner.c" +#line 7895 "Zend/zend_language_scanner.c" yy798: YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; @@ -7940,7 +7942,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7944 "Zend/zend_language_scanner.c" +#line 7946 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); ++YYCURSOR; @@ -7966,7 +7968,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7970 "Zend/zend_language_scanner.c" +#line 7972 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7977,7 +7979,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7981 "Zend/zend_language_scanner.c" +#line 7983 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); ++YYCURSOR; @@ -8006,7 +8008,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8010 "Zend/zend_language_scanner.c" +#line 8012 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); ++YYCURSOR; @@ -8027,7 +8029,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8031 "Zend/zend_language_scanner.c" +#line 8033 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; @@ -8067,7 +8069,7 @@ int start_line = CG(zend_lineno); goto yy813; } } -#line 2692 "Zend/zend_language_scanner.l" +#line 2694 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 1ca8c565ae495..695e7f0c7ca4a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2304,6 +2304,8 @@ skip_escape_conversion: zend_save_lexical_state(¤t_state); SCNG(heredoc_scan_ahead) = 1; + SCNG(heredoc_indentation) = 0; + SCNG(heredoc_indentation_uses_spaces) = 0; LANG_SCNG(on_event) = NULL; zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index 04ae9c57353bb..d20bf56d60644 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -293,11 +293,11 @@ Line 2: T_END_HEREDOC (' INNER_END') Test case 5 -Parse error: Invalid body indentation level (expecting an indentation level of at least 3) on line 2 +Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) on line 2 Test case 6 -Parse error: Invalid body indentation level (expecting an indentation level of at least 3) on line 2 +Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) on line 2 Test case 7 From 1990cb276f51c90351f833c2eec74a310c4ea9aa Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 25 Mar 2018 16:40:19 +0200 Subject: [PATCH 45/54] Always reset increment_lineno after scan ahead It's not enough to avoid setting it for heredocs in particular. There are also other tokens that might set increment_lineno, and it would remain set after scan ahead completes. --- Zend/zend_language_scanner.c | 340 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 4 +- 2 files changed, 174 insertions(+), 170 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index e7f89a2966299..b14cae86cd182 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1446,7 +1446,7 @@ int start_line = CG(zend_lineno); yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2441 "Zend/zend_language_scanner.l" +#line 2442 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1515,7 +1515,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2381 "Zend/zend_language_scanner.l" +#line 2382 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); @@ -1562,7 +1562,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2369 "Zend/zend_language_scanner.l" +#line 2370 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); @@ -1665,7 +1665,7 @@ int start_line = CG(zend_lineno); yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2387 "Zend/zend_language_scanner.l" +#line 2388 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1724,7 +1724,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2376 "Zend/zend_language_scanner.l" +#line 2377 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); @@ -1789,7 +1789,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2369 "Zend/zend_language_scanner.l" +#line 2370 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); @@ -1850,7 +1850,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2355 "Zend/zend_language_scanner.l" +#line 2356 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1911,7 +1911,7 @@ int start_line = CG(zend_lineno); yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2487 "Zend/zend_language_scanner.l" +#line 2488 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -1965,11 +1965,12 @@ int start_line = CG(zend_lineno); newline = 1; } + CG(increment_lineno) = 1; /* For newline before label */ + if (SCNG(heredoc_scan_ahead)) { SCNG(heredoc_indentation) = indentation; SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); } else { - CG(increment_lineno) = 1; YYCURSOR -= indentation; } @@ -2025,7 +2026,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 2029 "Zend/zend_language_scanner.c" +#line 2030 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2068,7 +2069,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2072 "Zend/zend_language_scanner.c" +#line 2073 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; @@ -2079,19 +2080,19 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2083 "Zend/zend_language_scanner.c" +#line 2084 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2369 "Zend/zend_language_scanner.l" +#line 2370 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 2095 "Zend/zend_language_scanner.c" +#line 2096 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2111,7 +2112,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2115 "Zend/zend_language_scanner.c" +#line 2116 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2135,7 +2136,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2139 "Zend/zend_language_scanner.c" +#line 2140 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2304,7 +2305,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2685 "Zend/zend_language_scanner.l" +#line 2687 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2313,7 +2314,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 2317 "Zend/zend_language_scanner.c" +#line 2318 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); ++YYCURSOR; @@ -2329,7 +2330,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 2333 "Zend/zend_language_scanner.c" +#line 2334 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; @@ -2341,7 +2342,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2345 "Zend/zend_language_scanner.c" +#line 2346 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; @@ -2392,7 +2393,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2396 "Zend/zend_language_scanner.c" +#line 2397 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; @@ -2430,7 +2431,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 2434 "Zend/zend_language_scanner.c" +#line 2435 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; @@ -2550,7 +2551,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); } -#line 2554 "Zend/zend_language_scanner.c" +#line 2555 "Zend/zend_language_scanner.c" yy103: YYDEBUG(103, *YYCURSOR); yyaccept = 0; @@ -2731,7 +2732,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN_WITH_VAL(T_LNUMBER); } -#line 2735 "Zend/zend_language_scanner.c" +#line 2736 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 1; @@ -2816,7 +2817,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 2820 "Zend/zend_language_scanner.c" +#line 2821 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 2; @@ -3105,7 +3106,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 3109 "Zend/zend_language_scanner.c" +#line 3110 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; @@ -3121,12 +3122,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2349 "Zend/zend_language_scanner.l" +#line 2350 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3130 "Zend/zend_language_scanner.c" +#line 3131 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; @@ -3137,7 +3138,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 3141 "Zend/zend_language_scanner.c" +#line 3142 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; @@ -3157,7 +3158,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 3161 "Zend/zend_language_scanner.c" +#line 3162 "Zend/zend_language_scanner.c" yy153: YYDEBUG(153, *YYCURSOR); ++YYCURSOR; @@ -3169,7 +3170,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3173 "Zend/zend_language_scanner.c" +#line 3174 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); ++YYCURSOR; @@ -3198,7 +3199,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 3202 "Zend/zend_language_scanner.c" +#line 3203 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); ++YYCURSOR; @@ -3208,7 +3209,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3212 "Zend/zend_language_scanner.c" +#line 3213 "Zend/zend_language_scanner.c" yy160: YYDEBUG(160, *YYCURSOR); ++YYCURSOR; @@ -3218,7 +3219,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3222 "Zend/zend_language_scanner.c" +#line 3223 "Zend/zend_language_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); ++YYCURSOR; @@ -3228,7 +3229,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3232 "Zend/zend_language_scanner.c" +#line 3233 "Zend/zend_language_scanner.c" yy164: YYDEBUG(164, *YYCURSOR); ++YYCURSOR; @@ -3362,7 +3363,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3366 "Zend/zend_language_scanner.c" +#line 3367 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3372,7 +3373,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3376 "Zend/zend_language_scanner.c" +#line 3377 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3382,7 +3383,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3386 "Zend/zend_language_scanner.c" +#line 3387 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3392,7 +3393,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3396 "Zend/zend_language_scanner.c" +#line 3397 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3402,7 +3403,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 3406 "Zend/zend_language_scanner.c" +#line 3407 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3412,7 +3413,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 3416 "Zend/zend_language_scanner.c" +#line 3417 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3423,7 +3424,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 3427 "Zend/zend_language_scanner.c" +#line 3428 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yych = *++YYCURSOR; @@ -3455,7 +3456,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } -#line 3459 "Zend/zend_language_scanner.c" +#line 3460 "Zend/zend_language_scanner.c" yy194: YYDEBUG(194, *YYCURSOR); ++YYCURSOR; @@ -3465,7 +3466,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3469 "Zend/zend_language_scanner.c" +#line 3470 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); yyaccept = 4; @@ -3513,7 +3514,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3517 "Zend/zend_language_scanner.c" +#line 3518 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); ++YYCURSOR; @@ -3523,7 +3524,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3527 "Zend/zend_language_scanner.c" +#line 3528 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; @@ -3559,7 +3560,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 3563 "Zend/zend_language_scanner.c" +#line 3564 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); yyaccept = 5; @@ -3574,7 +3575,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3578 "Zend/zend_language_scanner.c" +#line 3579 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; @@ -3585,7 +3586,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3589 "Zend/zend_language_scanner.c" +#line 3590 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3600,7 +3601,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3604 "Zend/zend_language_scanner.c" +#line 3605 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3610,7 +3611,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3614 "Zend/zend_language_scanner.c" +#line 3615 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3620,7 +3621,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3624 "Zend/zend_language_scanner.c" +#line 3625 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3631,7 +3632,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3635 "Zend/zend_language_scanner.c" +#line 3636 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3651,7 +3652,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); } -#line 3655 "Zend/zend_language_scanner.c" +#line 3656 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3661,7 +3662,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 3665 "Zend/zend_language_scanner.c" +#line 3666 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; @@ -3692,7 +3693,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 3696 "Zend/zend_language_scanner.c" +#line 3697 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; @@ -3782,7 +3783,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 3786 "Zend/zend_language_scanner.c" +#line 3787 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3871,7 +3872,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 3875 "Zend/zend_language_scanner.c" +#line 3876 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; @@ -3936,7 +3937,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3940 "Zend/zend_language_scanner.c" +#line 3941 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -4054,7 +4055,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 4058 "Zend/zend_language_scanner.c" +#line 4059 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; @@ -4086,7 +4087,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 4090 "Zend/zend_language_scanner.c" +#line 4091 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); ++YYCURSOR; @@ -4096,7 +4097,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 4100 "Zend/zend_language_scanner.c" +#line 4101 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); ++YYCURSOR; @@ -4106,7 +4107,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 4110 "Zend/zend_language_scanner.c" +#line 4111 "Zend/zend_language_scanner.c" yy279: YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; @@ -4176,7 +4177,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 4180 "Zend/zend_language_scanner.c" +#line 4181 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); ++YYCURSOR; @@ -4186,7 +4187,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 4190 "Zend/zend_language_scanner.c" +#line 4191 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; @@ -4238,7 +4239,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4242 "Zend/zend_language_scanner.c" +#line 4243 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; @@ -4292,7 +4293,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4296 "Zend/zend_language_scanner.c" +#line 4297 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); ++YYCURSOR; @@ -4331,7 +4332,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 4335 "Zend/zend_language_scanner.c" +#line 4336 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; @@ -4341,7 +4342,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 4345 "Zend/zend_language_scanner.c" +#line 4346 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); ++YYCURSOR; @@ -4351,7 +4352,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 4355 "Zend/zend_language_scanner.c" +#line 4356 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; @@ -4361,7 +4362,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 4365 "Zend/zend_language_scanner.c" +#line 4366 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4389,7 +4390,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 4393 "Zend/zend_language_scanner.c" +#line 4394 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; @@ -4474,7 +4475,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 4478 "Zend/zend_language_scanner.c" +#line 4479 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4560,7 +4561,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 4564 "Zend/zend_language_scanner.c" +#line 4565 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; @@ -4633,7 +4634,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4637 "Zend/zend_language_scanner.c" +#line 4638 "Zend/zend_language_scanner.c" yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; @@ -4710,7 +4711,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 4714 "Zend/zend_language_scanner.c" +#line 4715 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; @@ -4729,7 +4730,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4733 "Zend/zend_language_scanner.c" +#line 4734 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); ++YYCURSOR; @@ -4742,7 +4743,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4746 "Zend/zend_language_scanner.c" +#line 4747 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; @@ -4761,7 +4762,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 4765 "Zend/zend_language_scanner.c" +#line 4766 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; @@ -4979,7 +4980,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 4983 "Zend/zend_language_scanner.c" +#line 4984 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; @@ -5034,7 +5035,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 5038 "Zend/zend_language_scanner.c" +#line 5039 "Zend/zend_language_scanner.c" yy412: YYDEBUG(412, *YYCURSOR); ++YYCURSOR; @@ -5062,7 +5063,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 5066 "Zend/zend_language_scanner.c" +#line 5067 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; @@ -5111,7 +5112,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 5115 "Zend/zend_language_scanner.c" +#line 5116 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); ++YYCURSOR; @@ -5124,7 +5125,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 5128 "Zend/zend_language_scanner.c" +#line 5129 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -5167,7 +5168,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5171 "Zend/zend_language_scanner.c" +#line 5172 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; @@ -5220,7 +5221,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 5224 "Zend/zend_language_scanner.c" +#line 5225 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5411,7 +5412,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 5415 "Zend/zend_language_scanner.c" +#line 5416 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5620,11 +5621,12 @@ int start_line = CG(zend_lineno); zend_restore_lexical_state(¤t_state); SCNG(heredoc_scan_ahead) = 0; + CG(increment_lineno) = 0; } RETURN_TOKEN(T_START_HEREDOC); } -#line 5628 "Zend/zend_language_scanner.c" +#line 5630 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5648,7 +5650,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5652 "Zend/zend_language_scanner.c" +#line 5654 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); ++YYCURSOR; @@ -5661,7 +5663,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5665 "Zend/zend_language_scanner.c" +#line 5667 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; @@ -5680,7 +5682,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 5684 "Zend/zend_language_scanner.c" +#line 5686 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; @@ -5693,7 +5695,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 5697 "Zend/zend_language_scanner.c" +#line 5699 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5706,7 +5708,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 5710 "Zend/zend_language_scanner.c" +#line 5712 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; @@ -5719,7 +5721,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 5723 "Zend/zend_language_scanner.c" +#line 5725 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5756,7 +5758,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 5760 "Zend/zend_language_scanner.c" +#line 5762 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5781,7 +5783,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 5785 "Zend/zend_language_scanner.c" +#line 5787 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5827,7 +5829,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 5831 "Zend/zend_language_scanner.c" +#line 5833 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5888,7 +5890,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5892 "Zend/zend_language_scanner.c" +#line 5894 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; @@ -5907,7 +5909,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5911 "Zend/zend_language_scanner.c" +#line 5913 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5962,7 +5964,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5966 "Zend/zend_language_scanner.c" +#line 5968 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; @@ -5975,7 +5977,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5979 "Zend/zend_language_scanner.c" +#line 5981 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; @@ -5988,7 +5990,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5992 "Zend/zend_language_scanner.c" +#line 5994 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; @@ -6001,7 +6003,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 6005 "Zend/zend_language_scanner.c" +#line 6007 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yyaccept = 6; @@ -6023,7 +6025,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 6027 "Zend/zend_language_scanner.c" +#line 6029 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -6119,7 +6121,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 6123 "Zend/zend_language_scanner.c" +#line 6125 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -6153,7 +6155,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 6157 "Zend/zend_language_scanner.c" +#line 6159 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -6222,7 +6224,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 6226 "Zend/zend_language_scanner.c" +#line 6228 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -6256,7 +6258,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6260 "Zend/zend_language_scanner.c" +#line 6262 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -6305,7 +6307,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 6309 "Zend/zend_language_scanner.c" +#line 6311 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -6366,7 +6368,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 6370 "Zend/zend_language_scanner.c" +#line 6372 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6385,7 +6387,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6389 "Zend/zend_language_scanner.c" +#line 6391 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); ++YYCURSOR; @@ -6398,7 +6400,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 6402 "Zend/zend_language_scanner.c" +#line 6404 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; @@ -6411,7 +6413,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 6415 "Zend/zend_language_scanner.c" +#line 6417 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6495,7 +6497,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 6499 "Zend/zend_language_scanner.c" +#line 6501 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); ++YYCURSOR; @@ -6545,7 +6547,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 6549 "Zend/zend_language_scanner.c" +#line 6551 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; @@ -6576,7 +6578,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6580 "Zend/zend_language_scanner.c" +#line 6582 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); ++YYCURSOR; @@ -6589,7 +6591,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6593 "Zend/zend_language_scanner.c" +#line 6595 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6626,7 +6628,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6630 "Zend/zend_language_scanner.c" +#line 6632 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); ++YYCURSOR; @@ -6639,7 +6641,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6643 "Zend/zend_language_scanner.c" +#line 6645 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); ++YYCURSOR; @@ -6652,7 +6654,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6656 "Zend/zend_language_scanner.c" +#line 6658 "Zend/zend_language_scanner.c" yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; @@ -6690,7 +6692,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 6694 "Zend/zend_language_scanner.c" +#line 6696 "Zend/zend_language_scanner.c" yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; @@ -6727,7 +6729,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 6731 "Zend/zend_language_scanner.c" +#line 6733 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6759,7 +6761,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6763 "Zend/zend_language_scanner.c" +#line 6765 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6783,7 +6785,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 6787 "Zend/zend_language_scanner.c" +#line 6789 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6832,7 +6834,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 6836 "Zend/zend_language_scanner.c" +#line 6838 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); ++YYCURSOR; @@ -6842,7 +6844,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6846 "Zend/zend_language_scanner.c" +#line 6848 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6855,7 +6857,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 6859 "Zend/zend_language_scanner.c" +#line 6861 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); ++YYCURSOR; @@ -6868,7 +6870,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6872 "Zend/zend_language_scanner.c" +#line 6874 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); ++YYCURSOR; @@ -6881,7 +6883,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6885 "Zend/zend_language_scanner.c" +#line 6887 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6912,7 +6914,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6916 "Zend/zend_language_scanner.c" +#line 6918 "Zend/zend_language_scanner.c" yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; @@ -6925,7 +6927,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6929 "Zend/zend_language_scanner.c" +#line 6931 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -6997,7 +6999,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 7001 "Zend/zend_language_scanner.c" +#line 7003 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -7022,7 +7024,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 7026 "Zend/zend_language_scanner.c" +#line 7028 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -7063,7 +7065,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 7067 "Zend/zend_language_scanner.c" +#line 7069 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -7094,7 +7096,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 7098 "Zend/zend_language_scanner.c" +#line 7100 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); ++YYCURSOR; @@ -7107,7 +7109,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 7111 "Zend/zend_language_scanner.c" +#line 7113 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -7120,7 +7122,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 7124 "Zend/zend_language_scanner.c" +#line 7126 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); ++YYCURSOR; @@ -7133,7 +7135,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 7137 "Zend/zend_language_scanner.c" +#line 7139 "Zend/zend_language_scanner.c" yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; @@ -7158,7 +7160,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 7162 "Zend/zend_language_scanner.c" +#line 7164 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7194,7 +7196,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 7198 "Zend/zend_language_scanner.c" +#line 7200 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); ++YYCURSOR; @@ -7207,7 +7209,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7211 "Zend/zend_language_scanner.c" +#line 7213 "Zend/zend_language_scanner.c" yy728: YYDEBUG(728, *YYCURSOR); ++YYCURSOR; @@ -7220,7 +7222,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 7224 "Zend/zend_language_scanner.c" +#line 7226 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); ++YYCURSOR; @@ -7233,7 +7235,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 7237 "Zend/zend_language_scanner.c" +#line 7239 "Zend/zend_language_scanner.c" yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; @@ -7252,7 +7254,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 7256 "Zend/zend_language_scanner.c" +#line 7258 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7304,7 +7306,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 7308 "Zend/zend_language_scanner.c" +#line 7310 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -7334,7 +7336,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 7338 "Zend/zend_language_scanner.c" +#line 7340 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7363,7 +7365,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7367 "Zend/zend_language_scanner.c" +#line 7369 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); ++YYCURSOR; @@ -7376,7 +7378,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7380 "Zend/zend_language_scanner.c" +#line 7382 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); ++YYCURSOR; @@ -7389,7 +7391,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 7393 "Zend/zend_language_scanner.c" +#line 7395 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -7419,7 +7421,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 7423 "Zend/zend_language_scanner.c" +#line 7425 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; @@ -7437,7 +7439,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 7441 "Zend/zend_language_scanner.c" +#line 7443 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7509,7 +7511,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7513 "Zend/zend_language_scanner.c" +#line 7515 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); ++YYCURSOR; @@ -7525,7 +7527,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7529 "Zend/zend_language_scanner.c" +#line 7531 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; @@ -7547,7 +7549,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7551 "Zend/zend_language_scanner.c" +#line 7553 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); ++YYCURSOR; @@ -7557,7 +7559,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7561 "Zend/zend_language_scanner.c" +#line 7563 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7621,7 +7623,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7625 "Zend/zend_language_scanner.c" +#line 7627 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7675,7 +7677,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7679 "Zend/zend_language_scanner.c" +#line 7681 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7686,7 +7688,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2602 "Zend/zend_language_scanner.l" +#line 2604 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7768,7 +7770,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7772 "Zend/zend_language_scanner.c" +#line 7774 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7856,7 +7858,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2685 "Zend/zend_language_scanner.l" +#line 2687 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7865,7 +7867,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7869 "Zend/zend_language_scanner.c" +#line 7871 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); ++YYCURSOR; @@ -7879,7 +7881,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7883 "Zend/zend_language_scanner.c" +#line 7885 "Zend/zend_language_scanner.c" yy796: YYDEBUG(796, *YYCURSOR); ++YYCURSOR; @@ -7891,7 +7893,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7895 "Zend/zend_language_scanner.c" +#line 7897 "Zend/zend_language_scanner.c" yy798: YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; @@ -7942,7 +7944,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7946 "Zend/zend_language_scanner.c" +#line 7948 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); ++YYCURSOR; @@ -7968,7 +7970,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7972 "Zend/zend_language_scanner.c" +#line 7974 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7979,7 +7981,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7983 "Zend/zend_language_scanner.c" +#line 7985 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); ++YYCURSOR; @@ -8008,7 +8010,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8012 "Zend/zend_language_scanner.c" +#line 8014 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); ++YYCURSOR; @@ -8029,7 +8031,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8033 "Zend/zend_language_scanner.c" +#line 8035 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; @@ -8069,7 +8071,7 @@ int start_line = CG(zend_lineno); goto yy813; } } -#line 2694 "Zend/zend_language_scanner.l" +#line 2696 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 695e7f0c7ca4a..b9bafa16788ed 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2340,6 +2340,7 @@ skip_escape_conversion: zend_restore_lexical_state(¤t_state); SCNG(heredoc_scan_ahead) = 0; + CG(increment_lineno) = 0; } RETURN_TOKEN(T_START_HEREDOC); @@ -2537,11 +2538,12 @@ double_quotes_scan_done: newline = 1; } + CG(increment_lineno) = 1; /* For newline before label */ + if (SCNG(heredoc_scan_ahead)) { SCNG(heredoc_indentation) = indentation; SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); } else { - CG(increment_lineno) = 1; YYCURSOR -= indentation; } From 82c156cf8a5190a5357aa298049efaced56fd185 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 25 Mar 2018 17:01:13 +0200 Subject: [PATCH 46/54] Correctly handle unterminated heredoc with trailing WS --- Zend/zend_language_scanner.c | 321 +++++++++--------- Zend/zend_language_scanner.l | 5 +- .../tests/token_get_all_heredoc_nowdoc.phpt | 39 +++ 3 files changed, 205 insertions(+), 160 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index b14cae86cd182..d90eb03b52bbd 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1943,6 +1943,8 @@ int start_line = CG(zend_lineno); } if (YYCURSOR == YYLIMIT) { + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } @@ -2026,7 +2028,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 2030 "Zend/zend_language_scanner.c" +#line 2032 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2069,7 +2071,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2073 "Zend/zend_language_scanner.c" +#line 2075 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; @@ -2080,7 +2082,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2084 "Zend/zend_language_scanner.c" +#line 2086 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2092,7 +2094,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 2096 "Zend/zend_language_scanner.c" +#line 2098 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2112,7 +2114,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2116 "Zend/zend_language_scanner.c" +#line 2118 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2136,7 +2138,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2140 "Zend/zend_language_scanner.c" +#line 2142 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2305,7 +2307,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2687 "Zend/zend_language_scanner.l" +#line 2690 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2314,7 +2316,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 2318 "Zend/zend_language_scanner.c" +#line 2320 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); ++YYCURSOR; @@ -2330,7 +2332,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 2334 "Zend/zend_language_scanner.c" +#line 2336 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; @@ -2342,7 +2344,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2346 "Zend/zend_language_scanner.c" +#line 2348 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; @@ -2393,7 +2395,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2397 "Zend/zend_language_scanner.c" +#line 2399 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; @@ -2431,7 +2433,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 2435 "Zend/zend_language_scanner.c" +#line 2437 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; @@ -2551,7 +2553,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); } -#line 2555 "Zend/zend_language_scanner.c" +#line 2557 "Zend/zend_language_scanner.c" yy103: YYDEBUG(103, *YYCURSOR); yyaccept = 0; @@ -2732,7 +2734,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN_WITH_VAL(T_LNUMBER); } -#line 2736 "Zend/zend_language_scanner.c" +#line 2738 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 1; @@ -2817,7 +2819,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 2821 "Zend/zend_language_scanner.c" +#line 2823 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 2; @@ -3106,7 +3108,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 3110 "Zend/zend_language_scanner.c" +#line 3112 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; @@ -3127,7 +3129,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3131 "Zend/zend_language_scanner.c" +#line 3133 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; @@ -3138,7 +3140,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 3142 "Zend/zend_language_scanner.c" +#line 3144 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; @@ -3158,7 +3160,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 3162 "Zend/zend_language_scanner.c" +#line 3164 "Zend/zend_language_scanner.c" yy153: YYDEBUG(153, *YYCURSOR); ++YYCURSOR; @@ -3170,7 +3172,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3174 "Zend/zend_language_scanner.c" +#line 3176 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); ++YYCURSOR; @@ -3199,7 +3201,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 3203 "Zend/zend_language_scanner.c" +#line 3205 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); ++YYCURSOR; @@ -3209,7 +3211,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3213 "Zend/zend_language_scanner.c" +#line 3215 "Zend/zend_language_scanner.c" yy160: YYDEBUG(160, *YYCURSOR); ++YYCURSOR; @@ -3219,7 +3221,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3223 "Zend/zend_language_scanner.c" +#line 3225 "Zend/zend_language_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); ++YYCURSOR; @@ -3229,7 +3231,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3233 "Zend/zend_language_scanner.c" +#line 3235 "Zend/zend_language_scanner.c" yy164: YYDEBUG(164, *YYCURSOR); ++YYCURSOR; @@ -3363,7 +3365,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3367 "Zend/zend_language_scanner.c" +#line 3369 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3373,7 +3375,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3377 "Zend/zend_language_scanner.c" +#line 3379 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3383,7 +3385,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3387 "Zend/zend_language_scanner.c" +#line 3389 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3393,7 +3395,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3397 "Zend/zend_language_scanner.c" +#line 3399 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3403,7 +3405,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 3407 "Zend/zend_language_scanner.c" +#line 3409 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3413,7 +3415,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 3417 "Zend/zend_language_scanner.c" +#line 3419 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3424,7 +3426,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 3428 "Zend/zend_language_scanner.c" +#line 3430 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yych = *++YYCURSOR; @@ -3456,7 +3458,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } -#line 3460 "Zend/zend_language_scanner.c" +#line 3462 "Zend/zend_language_scanner.c" yy194: YYDEBUG(194, *YYCURSOR); ++YYCURSOR; @@ -3466,7 +3468,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3470 "Zend/zend_language_scanner.c" +#line 3472 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); yyaccept = 4; @@ -3514,7 +3516,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3518 "Zend/zend_language_scanner.c" +#line 3520 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); ++YYCURSOR; @@ -3524,7 +3526,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3528 "Zend/zend_language_scanner.c" +#line 3530 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; @@ -3560,7 +3562,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 3564 "Zend/zend_language_scanner.c" +#line 3566 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); yyaccept = 5; @@ -3575,7 +3577,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3579 "Zend/zend_language_scanner.c" +#line 3581 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; @@ -3586,7 +3588,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3590 "Zend/zend_language_scanner.c" +#line 3592 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3601,7 +3603,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3605 "Zend/zend_language_scanner.c" +#line 3607 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3611,7 +3613,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3615 "Zend/zend_language_scanner.c" +#line 3617 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3621,7 +3623,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3625 "Zend/zend_language_scanner.c" +#line 3627 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3632,7 +3634,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3636 "Zend/zend_language_scanner.c" +#line 3638 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3652,7 +3654,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); } -#line 3656 "Zend/zend_language_scanner.c" +#line 3658 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3662,7 +3664,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 3666 "Zend/zend_language_scanner.c" +#line 3668 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; @@ -3693,7 +3695,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 3697 "Zend/zend_language_scanner.c" +#line 3699 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; @@ -3783,7 +3785,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 3787 "Zend/zend_language_scanner.c" +#line 3789 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3872,7 +3874,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 3876 "Zend/zend_language_scanner.c" +#line 3878 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; @@ -3937,7 +3939,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3941 "Zend/zend_language_scanner.c" +#line 3943 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -4055,7 +4057,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 4059 "Zend/zend_language_scanner.c" +#line 4061 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; @@ -4087,7 +4089,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 4091 "Zend/zend_language_scanner.c" +#line 4093 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); ++YYCURSOR; @@ -4097,7 +4099,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 4101 "Zend/zend_language_scanner.c" +#line 4103 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); ++YYCURSOR; @@ -4107,7 +4109,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 4111 "Zend/zend_language_scanner.c" +#line 4113 "Zend/zend_language_scanner.c" yy279: YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; @@ -4177,7 +4179,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 4181 "Zend/zend_language_scanner.c" +#line 4183 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); ++YYCURSOR; @@ -4187,7 +4189,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 4191 "Zend/zend_language_scanner.c" +#line 4193 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; @@ -4239,7 +4241,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4243 "Zend/zend_language_scanner.c" +#line 4245 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; @@ -4293,7 +4295,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4297 "Zend/zend_language_scanner.c" +#line 4299 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); ++YYCURSOR; @@ -4332,7 +4334,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 4336 "Zend/zend_language_scanner.c" +#line 4338 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; @@ -4342,7 +4344,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 4346 "Zend/zend_language_scanner.c" +#line 4348 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); ++YYCURSOR; @@ -4352,7 +4354,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 4356 "Zend/zend_language_scanner.c" +#line 4358 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; @@ -4362,7 +4364,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 4366 "Zend/zend_language_scanner.c" +#line 4368 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4390,7 +4392,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 4394 "Zend/zend_language_scanner.c" +#line 4396 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; @@ -4475,7 +4477,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 4479 "Zend/zend_language_scanner.c" +#line 4481 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4561,7 +4563,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 4565 "Zend/zend_language_scanner.c" +#line 4567 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; @@ -4634,7 +4636,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4638 "Zend/zend_language_scanner.c" +#line 4640 "Zend/zend_language_scanner.c" yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; @@ -4711,7 +4713,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 4715 "Zend/zend_language_scanner.c" +#line 4717 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; @@ -4730,7 +4732,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4734 "Zend/zend_language_scanner.c" +#line 4736 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); ++YYCURSOR; @@ -4743,7 +4745,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4747 "Zend/zend_language_scanner.c" +#line 4749 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; @@ -4762,7 +4764,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 4766 "Zend/zend_language_scanner.c" +#line 4768 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; @@ -4980,7 +4982,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 4984 "Zend/zend_language_scanner.c" +#line 4986 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; @@ -5035,7 +5037,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 5039 "Zend/zend_language_scanner.c" +#line 5041 "Zend/zend_language_scanner.c" yy412: YYDEBUG(412, *YYCURSOR); ++YYCURSOR; @@ -5063,7 +5065,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 5067 "Zend/zend_language_scanner.c" +#line 5069 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; @@ -5112,7 +5114,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 5116 "Zend/zend_language_scanner.c" +#line 5118 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); ++YYCURSOR; @@ -5125,7 +5127,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 5129 "Zend/zend_language_scanner.c" +#line 5131 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -5168,7 +5170,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5172 "Zend/zend_language_scanner.c" +#line 5174 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; @@ -5221,7 +5223,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 5225 "Zend/zend_language_scanner.c" +#line 5227 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5412,7 +5414,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 5416 "Zend/zend_language_scanner.c" +#line 5418 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5626,7 +5628,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 5630 "Zend/zend_language_scanner.c" +#line 5632 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5650,7 +5652,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5654 "Zend/zend_language_scanner.c" +#line 5656 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); ++YYCURSOR; @@ -5663,7 +5665,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5667 "Zend/zend_language_scanner.c" +#line 5669 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; @@ -5682,7 +5684,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 5686 "Zend/zend_language_scanner.c" +#line 5688 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; @@ -5695,7 +5697,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 5699 "Zend/zend_language_scanner.c" +#line 5701 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5708,7 +5710,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 5712 "Zend/zend_language_scanner.c" +#line 5714 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; @@ -5721,7 +5723,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 5725 "Zend/zend_language_scanner.c" +#line 5727 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5758,7 +5760,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 5762 "Zend/zend_language_scanner.c" +#line 5764 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5783,7 +5785,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 5787 "Zend/zend_language_scanner.c" +#line 5789 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5829,7 +5831,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 5833 "Zend/zend_language_scanner.c" +#line 5835 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5890,7 +5892,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5894 "Zend/zend_language_scanner.c" +#line 5896 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; @@ -5909,7 +5911,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5913 "Zend/zend_language_scanner.c" +#line 5915 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5964,7 +5966,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5968 "Zend/zend_language_scanner.c" +#line 5970 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; @@ -5977,7 +5979,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5981 "Zend/zend_language_scanner.c" +#line 5983 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; @@ -5990,7 +5992,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5994 "Zend/zend_language_scanner.c" +#line 5996 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; @@ -6003,7 +6005,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 6007 "Zend/zend_language_scanner.c" +#line 6009 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yyaccept = 6; @@ -6025,7 +6027,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 6029 "Zend/zend_language_scanner.c" +#line 6031 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -6121,7 +6123,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 6125 "Zend/zend_language_scanner.c" +#line 6127 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -6155,7 +6157,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 6159 "Zend/zend_language_scanner.c" +#line 6161 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -6224,7 +6226,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 6228 "Zend/zend_language_scanner.c" +#line 6230 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -6258,7 +6260,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6262 "Zend/zend_language_scanner.c" +#line 6264 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -6307,7 +6309,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 6311 "Zend/zend_language_scanner.c" +#line 6313 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -6368,7 +6370,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 6372 "Zend/zend_language_scanner.c" +#line 6374 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6387,7 +6389,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6391 "Zend/zend_language_scanner.c" +#line 6393 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); ++YYCURSOR; @@ -6400,7 +6402,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 6404 "Zend/zend_language_scanner.c" +#line 6406 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; @@ -6413,7 +6415,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 6417 "Zend/zend_language_scanner.c" +#line 6419 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6497,7 +6499,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 6501 "Zend/zend_language_scanner.c" +#line 6503 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); ++YYCURSOR; @@ -6547,7 +6549,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 6551 "Zend/zend_language_scanner.c" +#line 6553 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; @@ -6578,7 +6580,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6582 "Zend/zend_language_scanner.c" +#line 6584 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); ++YYCURSOR; @@ -6591,7 +6593,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6595 "Zend/zend_language_scanner.c" +#line 6597 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6628,7 +6630,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6632 "Zend/zend_language_scanner.c" +#line 6634 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); ++YYCURSOR; @@ -6641,7 +6643,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6645 "Zend/zend_language_scanner.c" +#line 6647 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); ++YYCURSOR; @@ -6654,7 +6656,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6658 "Zend/zend_language_scanner.c" +#line 6660 "Zend/zend_language_scanner.c" yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; @@ -6692,7 +6694,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 6696 "Zend/zend_language_scanner.c" +#line 6698 "Zend/zend_language_scanner.c" yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; @@ -6729,7 +6731,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 6733 "Zend/zend_language_scanner.c" +#line 6735 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6761,7 +6763,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6765 "Zend/zend_language_scanner.c" +#line 6767 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6785,7 +6787,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 6789 "Zend/zend_language_scanner.c" +#line 6791 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6834,7 +6836,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 6838 "Zend/zend_language_scanner.c" +#line 6840 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); ++YYCURSOR; @@ -6844,7 +6846,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6848 "Zend/zend_language_scanner.c" +#line 6850 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6857,7 +6859,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 6861 "Zend/zend_language_scanner.c" +#line 6863 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); ++YYCURSOR; @@ -6870,7 +6872,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6874 "Zend/zend_language_scanner.c" +#line 6876 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); ++YYCURSOR; @@ -6883,7 +6885,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6887 "Zend/zend_language_scanner.c" +#line 6889 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6914,7 +6916,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6918 "Zend/zend_language_scanner.c" +#line 6920 "Zend/zend_language_scanner.c" yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; @@ -6927,7 +6929,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6931 "Zend/zend_language_scanner.c" +#line 6933 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -6999,7 +7001,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 7003 "Zend/zend_language_scanner.c" +#line 7005 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -7024,7 +7026,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 7028 "Zend/zend_language_scanner.c" +#line 7030 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -7065,7 +7067,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 7069 "Zend/zend_language_scanner.c" +#line 7071 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -7096,7 +7098,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 7100 "Zend/zend_language_scanner.c" +#line 7102 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); ++YYCURSOR; @@ -7109,7 +7111,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 7113 "Zend/zend_language_scanner.c" +#line 7115 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -7122,7 +7124,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 7126 "Zend/zend_language_scanner.c" +#line 7128 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); ++YYCURSOR; @@ -7135,7 +7137,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 7139 "Zend/zend_language_scanner.c" +#line 7141 "Zend/zend_language_scanner.c" yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; @@ -7160,7 +7162,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 7164 "Zend/zend_language_scanner.c" +#line 7166 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7196,7 +7198,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 7200 "Zend/zend_language_scanner.c" +#line 7202 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); ++YYCURSOR; @@ -7209,7 +7211,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7213 "Zend/zend_language_scanner.c" +#line 7215 "Zend/zend_language_scanner.c" yy728: YYDEBUG(728, *YYCURSOR); ++YYCURSOR; @@ -7222,7 +7224,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 7226 "Zend/zend_language_scanner.c" +#line 7228 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); ++YYCURSOR; @@ -7235,7 +7237,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 7239 "Zend/zend_language_scanner.c" +#line 7241 "Zend/zend_language_scanner.c" yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; @@ -7254,7 +7256,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 7258 "Zend/zend_language_scanner.c" +#line 7260 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7306,7 +7308,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 7310 "Zend/zend_language_scanner.c" +#line 7312 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -7336,7 +7338,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 7340 "Zend/zend_language_scanner.c" +#line 7342 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7365,7 +7367,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7369 "Zend/zend_language_scanner.c" +#line 7371 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); ++YYCURSOR; @@ -7378,7 +7380,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7382 "Zend/zend_language_scanner.c" +#line 7384 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); ++YYCURSOR; @@ -7391,7 +7393,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 7395 "Zend/zend_language_scanner.c" +#line 7397 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -7421,7 +7423,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 7425 "Zend/zend_language_scanner.c" +#line 7427 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; @@ -7439,7 +7441,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 7443 "Zend/zend_language_scanner.c" +#line 7445 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7511,7 +7513,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7515 "Zend/zend_language_scanner.c" +#line 7517 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); ++YYCURSOR; @@ -7527,7 +7529,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7531 "Zend/zend_language_scanner.c" +#line 7533 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; @@ -7549,7 +7551,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7553 "Zend/zend_language_scanner.c" +#line 7555 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); ++YYCURSOR; @@ -7559,7 +7561,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7563 "Zend/zend_language_scanner.c" +#line 7565 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7623,7 +7625,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7627 "Zend/zend_language_scanner.c" +#line 7629 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7677,7 +7679,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7681 "Zend/zend_language_scanner.c" +#line 7683 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7688,7 +7690,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2604 "Zend/zend_language_scanner.l" +#line 2606 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7720,7 +7722,8 @@ int start_line = CG(zend_lineno); } if (YYCURSOR == YYLIMIT) { - CG(increment_lineno) = 1; + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } @@ -7770,7 +7773,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7774 "Zend/zend_language_scanner.c" +#line 7777 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7858,7 +7861,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2687 "Zend/zend_language_scanner.l" +#line 2690 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7867,7 +7870,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7871 "Zend/zend_language_scanner.c" +#line 7874 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); ++YYCURSOR; @@ -7881,7 +7884,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7885 "Zend/zend_language_scanner.c" +#line 7888 "Zend/zend_language_scanner.c" yy796: YYDEBUG(796, *YYCURSOR); ++YYCURSOR; @@ -7893,7 +7896,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7897 "Zend/zend_language_scanner.c" +#line 7900 "Zend/zend_language_scanner.c" yy798: YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; @@ -7944,7 +7947,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7948 "Zend/zend_language_scanner.c" +#line 7951 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); ++YYCURSOR; @@ -7970,7 +7973,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7974 "Zend/zend_language_scanner.c" +#line 7977 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7981,7 +7984,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7985 "Zend/zend_language_scanner.c" +#line 7988 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); ++YYCURSOR; @@ -8010,7 +8013,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8014 "Zend/zend_language_scanner.c" +#line 8017 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); ++YYCURSOR; @@ -8031,7 +8034,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8035 "Zend/zend_language_scanner.c" +#line 8038 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; @@ -8071,7 +8074,7 @@ int start_line = CG(zend_lineno); goto yy813; } } -#line 2696 "Zend/zend_language_scanner.l" +#line 2699 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index b9bafa16788ed..08e5725f4fa98 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2516,6 +2516,8 @@ double_quotes_scan_done: } if (YYCURSOR == YYLIMIT) { + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } @@ -2632,7 +2634,8 @@ heredoc_scan_done: } if (YYCURSOR == YYLIMIT) { - CG(increment_lineno) = 1; + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index d20bf56d60644..87ec6a91c0cc6 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -112,6 +112,20 @@ $tests[16] = <<<'OUTER_END' INNER_END; OUTER_END; +$tests[17] = << $test) { echo "\nTest case $i\n\n"; @@ -261,6 +275,24 @@ Line 2: T_ENCAPSED_AND_WHITESPACE (' ') Line 3: T_END_HEREDOC (' INNER_END') +Test case 17 + +Line 1: T_OPEN_TAG (' Date: Mon, 26 Mar 2018 22:02:20 +0100 Subject: [PATCH 47/54] Fix unindented interpolated variable problem --- Zend/tests/flexible-heredoc-error10.phpt | 12 + Zend/tests/flexible-heredoc-error9.phpt | 13 + Zend/zend_language_scanner.c | 9871 +++++++++++----------- Zend/zend_language_scanner.l | 19 + Zend/zend_language_scanner_defs.h | 2 +- 5 files changed, 4988 insertions(+), 4929 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-error10.phpt create mode 100644 Zend/tests/flexible-heredoc-error9.phpt diff --git a/Zend/tests/flexible-heredoc-error10.phpt b/Zend/tests/flexible-heredoc-error10.phpt new file mode 100644 index 0000000000000..fe3fcea06dbd4 --- /dev/null +++ b/Zend/tests/flexible-heredoc-error10.phpt @@ -0,0 +1,12 @@ +--TEST-- +Flexible heredoc syntax error 10: unindented variable interpolation (as first value) +--FILE-- +': goto yy33; + case '?': goto yy34; + case 'A': + case 'a': goto yy35; + case 'B': + case 'b': goto yy37; + case 'C': + case 'c': goto yy38; + case 'D': + case 'd': goto yy39; + case 'E': + case 'e': goto yy40; + case 'F': + case 'f': goto yy41; + case 'G': + case 'g': goto yy42; + case 'I': + case 'i': goto yy45; + case 'L': + case 'l': goto yy46; + case 'N': + case 'n': goto yy47; + case 'O': + case 'o': goto yy48; + case 'P': + case 'p': goto yy49; + case 'R': + case 'r': goto yy50; + case 'S': + case 's': goto yy51; + case 'T': + case 't': goto yy52; + case 'U': + case 'u': goto yy53; + case 'V': + case 'v': goto yy54; + case 'W': + case 'w': goto yy55; + case 'X': + case 'x': goto yy56; + case 'Y': + case 'y': goto yy57; + case '\\': goto yy58; + case '^': goto yy60; + case '_': goto yy61; + case '`': goto yy62; + case '{': goto yy64; + case '|': goto yy66; + case '}': goto yy67; + default: goto yy43; + } +yy3: + YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(4, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2709 "Zend/zend_language_scanner.l" + { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); } -inline_char_handler: + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} +#line 1440 "Zend/zend_language_scanner.c" +yy5: + YYDEBUG(5, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(6, *YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy5; + } + YYDEBUG(7, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1402 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 1456 "Zend/zend_language_scanner.c" +yy8: + YYDEBUG(8, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy69; +yy9: + YYDEBUG(9, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1685 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(yytext[0]); +} +#line 1468 "Zend/zend_language_scanner.c" +yy10: + YYDEBUG(10, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(11, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2196 "Zend/zend_language_scanner.l" + { + int bprefix = (yytext[0] != '"') ? 1 : 0; - while (1) { - YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + yyleng = YYCURSOR - SCNG(yy_text); + if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) + || !PARSER_MODE()) { + RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); + } else { + RETURN_TOKEN(T_ERROR); + } + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } - YYCURSOR = ptr ? ptr + 1 : YYLIMIT; + YYCURSOR--; + break; + } - if (YYCURSOR >= YYLIMIT) { - break; - } + /* Remember how much was scanned to save rescanning */ + SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); - if (*YYCURSOR == '?') { - if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ + YYCURSOR = SCNG(yy_text) + yyleng; - YYCURSOR--; + BEGIN(ST_DOUBLE_QUOTES); + RETURN_TOKEN('"'); +} +#line 1519 "Zend/zend_language_scanner.c" +yy12: + YYDEBUG(12, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(13, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2023 "Zend/zend_language_scanner.l" + { + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + CG(zend_lineno)++; break; - } + case '?': + if (*YYCURSOR == '>') { + YYCURSOR--; + break; + } + /* fall through */ + default: + continue; } + + break; } yyleng = YYCURSOR - SCNG(yy_text); - if (SCNG(output_filter)) { - size_t readsize; - char *s = NULL; - size_t sz = 0; - // TODO: avoid reallocation ??? - readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); - ZVAL_STRINGL(zendlval, s, sz); - efree(s); - if (readsize < yyleng) { - yyless(readsize); - } - } else if (yyleng == 1) { - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); - } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); } - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); + RETURN_TOKEN(T_COMMENT); } -#line 1311 "Zend/zend_language_scanner.c" -yy5: - YYDEBUG(5, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '?') goto yy4; - YYDEBUG(6, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'O') { - if (yych == '=') goto yy8; - } else { - if (yych <= 'P') goto yy10; - if (yych == 'p') goto yy10; - } -yy7: - YYDEBUG(7, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1909 "Zend/zend_language_scanner.l" - { - if (CG(short_tags)) { - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); +#line 1557 "Zend/zend_language_scanner.c" +yy14: + YYDEBUG(14, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy9; + if (yych <= 'Z') goto yy71; + if (yych <= '^') goto yy9; + goto yy71; + } else { + if (yych <= '`') goto yy9; + if (yych <= 'z') goto yy71; + if (yych <= 0x7F) goto yy9; + goto yy71; } - RETURN_TOKEN(T_OPEN_TAG); - } else { - goto inline_char_handler; - } -} -#line 1339 "Zend/zend_language_scanner.c" -yy8: - YYDEBUG(8, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(9, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1890 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ECHO); - } - RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); -} -#line 1353 "Zend/zend_language_scanner.c" -yy10: - YYDEBUG(10, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy12; - if (yych == 'h') goto yy12; -yy11: - YYDEBUG(11, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy7; -yy12: - YYDEBUG(12, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy13; - if (yych != 'p') goto yy11; -yy13: - YYDEBUG(13, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy11; - if (yych >= '\v') goto yy11; - } else { - if (yych <= '\r') goto yy16; - if (yych != ' ') goto yy11; - } -yy14: - YYDEBUG(14, *YYCURSOR); - ++YYCURSOR; yy15: - YYDEBUG(15, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1899 "Zend/zend_language_scanner.l" - { - HANDLE_NEWLINE(yytext[yyleng-1]); - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); -} -#line 1393 "Zend/zend_language_scanner.c" + YYDEBUG(15, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy74; + goto yy9; yy16: - YYDEBUG(16, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy14; - goto yy15; -/* *********************************** */ -yyc_ST_BACKQUOTE: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; + YYDEBUG(16, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '&') goto yy76; + if (yych == '=') goto yy78; + goto yy9; +yy17: YYDEBUG(17, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych == '$') goto yy21; - } else { - if (yych <= '`') goto yy22; - if (yych == '{') goto yy24; - } - YYDEBUG(19, *YYCURSOR); ++YYCURSOR; -yy20: - YYDEBUG(20, *YYCURSOR); + YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2442 "Zend/zend_language_scanner.l" +#line 2106 "Zend/zend_language_scanner.l" { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } + register char *s, *t; + char *end; + int bprefix = (yytext[0] != '\'') ? 1 : 0; + + while (1) { + if (YYCURSOR < YYLIMIT) { + if (*YYCURSOR == '\'') { + YYCURSOR++; + yyleng = YYCURSOR - SCNG(yy_text); - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '`': break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; + } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + } else { + yyleng = YYLIMIT - SCNG(yy_text); + + /* Unclosed single quotes; treat similar to double quotes, but without a separate token + * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." + * rule, which continued in ST_IN_SCRIPTING state after the quote */ + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } + } - YYCURSOR--; - break; + if (yyleng-bprefix-2 <= 1) { + if (yyleng-bprefix-2 < 1) { + ZVAL_EMPTY_STRING(zendlval); + } else { + zend_uchar c = (zend_uchar)*(yytext+bprefix+1); + if (c == '\n' || c == '\r') { + CG(zend_lineno)++; + } + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); + } + goto skip_escape_conversion; } + ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - yyleng = YYCURSOR - SCNG(yy_text); + /* convert escape sequences */ + s = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (1) { + if (UNEXPECTED(*s=='\\')) { + break; + } + if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { + CG(zend_lineno)++; + } + s++; + if (s == end) { + goto skip_escape_conversion; + } + } - 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); + t = s; + while (s') goto yy36; + if (yych <= '<') goto yy9; + if (yych <= '=') goto yy126; + if (yych <= '>') goto yy128; + goto yy9; yy33: YYDEBUG(33, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy27; + yych = *++YYCURSOR; + if (yych <= '<') goto yy9; + if (yych <= '=') goto yy130; + if (yych <= '>') goto yy132; + goto yy9; yy34: YYDEBUG(34, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '=') goto yy9; + if (yych <= '>') goto yy134; + if (yych <= '?') goto yy136; + goto yy9; +yy35: YYDEBUG(35, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1592 "Zend/zend_language_scanner.c" -yy36: - YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy33; - if (yych <= 'Z') goto yy37; - if (yych <= '^') goto yy33; + if (yych <= 'S') { + if (yych <= 'M') { + if (yych == 'B') goto yy138; + goto yy44; + } else { + if (yych <= 'N') goto yy139; + if (yych <= 'Q') goto yy44; + if (yych <= 'R') goto yy140; + goto yy141; + } } else { - if (yych <= '`') goto yy33; - if (yych <= 'z') goto yy37; - if (yych <= 0x7F) goto yy33; + if (yych <= 'n') { + if (yych == 'b') goto yy138; + if (yych <= 'm') goto yy44; + goto yy139; + } else { + if (yych <= 'q') goto yy44; + if (yych <= 'r') goto yy140; + if (yych <= 's') goto yy141; + goto yy44; + } } -yy37: - YYDEBUG(37, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(38, *YYCURSOR); +yy36: + YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 2018 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 1616 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_DOUBLE_QUOTES: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(39, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '#') { - if (yych == '"') goto yy43; +#line 1938 "Zend/zend_language_scanner.c" +yy37: + YYDEBUG(37, *YYCURSOR); + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') { + if (yych <= '"') { + if (yych <= '!') goto yy44; + goto yy10; + } else { + if (yych == '\'') goto yy17; + goto yy44; + } } else { - if (yych <= '$') goto yy45; - if (yych == '{') goto yy46; + if (yych <= 'R') { + if (yych <= '<') goto yy143; + if (yych <= 'Q') goto yy44; + goto yy144; + } else { + if (yych == 'r') goto yy144; + goto yy44; + } } - YYDEBUG(41, *YYCURSOR); - ++YYCURSOR; -yy42: - YYDEBUG(42, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2388 "Zend/zend_language_scanner.l" - { - if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { - YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; - SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); - - goto double_quotes_scan_done; - } - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; +yy38: + YYDEBUG(38, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') goto yy145; + goto yy44; + } else { + if (yych <= 'L') goto yy146; + if (yych <= 'N') goto yy44; + goto yy147; + } + } else { + if (yych <= 'k') { + if (yych == 'a') goto yy145; + goto yy44; + } else { + if (yych <= 'l') goto yy146; + if (yych == 'o') goto yy147; + goto yy44; + } } - - YYCURSOR--; - break; - } - -double_quotes_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - - 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 1722 "Zend/zend_language_scanner.c" -yy43: - YYDEBUG(43, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(44, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2377 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('"'); -} -#line 1733 "Zend/zend_language_scanner.c" -yy45: - YYDEBUG(45, *YYCURSOR); +yy39: + YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy42; - if (yych <= 'Z') goto yy47; - if (yych <= '^') goto yy42; - goto yy47; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'E') goto yy148; + goto yy44; + } else { + if (yych <= 'I') goto yy149; + if (yych <= 'N') goto yy44; + goto yy150; + } } else { - if (yych <= 'z') { - if (yych <= '`') goto yy42; - goto yy47; + if (yych <= 'h') { + if (yych == 'e') goto yy148; + goto yy44; } else { - if (yych <= '{') goto yy50; - if (yych <= 0x7F) goto yy42; - goto yy47; + if (yych <= 'i') goto yy149; + if (yych == 'o') goto yy150; + goto yy44; } } -yy46: - YYDEBUG(46, *YYCURSOR); +yy40: + YYDEBUG(40, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy52; - goto yy42; -yy47: - YYDEBUG(47, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); + switch (yych) { + case 'C': + case 'c': goto yy152; + case 'L': + case 'l': goto yy153; + case 'M': + case 'm': goto yy154; + case 'N': + case 'n': goto yy155; + case 'V': + case 'v': goto yy156; + case 'X': + case 'x': goto yy157; + default: goto yy44; + } +yy41: + YYDEBUG(41, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'I') goto yy158; + goto yy44; + } else { + if (yych <= 'O') goto yy159; + if (yych <= 'T') goto yy44; + goto yy160; + } + } else { + if (yych <= 'n') { + if (yych == 'i') goto yy158; + goto yy44; + } else { + if (yych <= 'o') goto yy159; + if (yych == 'u') goto yy160; + goto yy44; + } + } +yy42: + YYDEBUG(42, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'L') goto yy161; + if (yych <= 'N') goto yy44; + goto yy162; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy44; + goto yy161; + } else { + if (yych == 'o') goto yy162; + goto yy44; + } + } +yy43: + YYDEBUG(43, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); yych = *YYCURSOR; - YYDEBUG(48, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy47; +yy44: + YYDEBUG(44, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy43; + } + goto yy36; +yy45: + YYDEBUG(45, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'L') { + if (yych == 'F') goto yy163; + goto yy44; + } else { + if (yych <= 'M') goto yy165; + if (yych <= 'N') goto yy166; + if (yych <= 'R') goto yy44; + goto yy167; + } + } else { + if (yych <= 'm') { + if (yych == 'f') goto yy163; + if (yych <= 'l') goto yy44; + goto yy165; + } else { + if (yych <= 'n') goto yy166; + if (yych == 's') goto yy167; + goto yy44; + } + } +yy46: + YYDEBUG(46, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy168; + if (yych == 'i') goto yy168; + goto yy44; +yy47: + YYDEBUG(47, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy169; + if (yych <= 'D') goto yy44; + goto yy170; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy169; + } else { + if (yych == 'e') goto yy170; + goto yy44; + } } - if (yych == '-') goto yy54; - if (yych <= '@') goto yy49; - if (yych <= '[') goto yy56; +yy48: + YYDEBUG(48, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy171; + if (yych == 'r') goto yy171; + goto yy44; yy49: YYDEBUG(49, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1776 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'R') goto yy173; + if (yych <= 'T') goto yy44; + goto yy174; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy44; + goto yy173; + } else { + if (yych == 'u') goto yy174; + goto yy44; + } + } yy50: YYDEBUG(50, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy175; + if (yych == 'e') goto yy175; + goto yy44; +yy51: YYDEBUG(51, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1686 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 1787 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'W') { + if (yych == 'T') goto yy176; + if (yych <= 'V') goto yy44; + goto yy177; + } else { + if (yych <= 't') { + if (yych <= 's') goto yy44; + goto yy176; + } else { + if (yych == 'w') goto yy177; + goto yy44; + } + } yy52: YYDEBUG(52, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'H') goto yy178; + if (yych <= 'Q') goto yy44; + goto yy179; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy44; + goto yy178; + } else { + if (yych == 'r') goto yy179; + goto yy44; + } + } +yy53: YYDEBUG(53, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2370 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); -} -#line 1799 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == 'N') goto yy180; + if (yych <= 'R') goto yy44; + goto yy181; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy44; + goto yy180; + } else { + if (yych == 's') goto yy181; + goto yy44; + } + } yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy58; + if (yych == 'A') goto yy182; + if (yych == 'a') goto yy182; + goto yy44; yy55: YYDEBUG(55, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy49; + yych = *++YYCURSOR; + if (yych == 'H') goto yy183; + if (yych == 'h') goto yy183; + goto yy44; yy56: YYDEBUG(56, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy184; + if (yych == 'o') goto yy184; + goto yy44; +yy57: YYDEBUG(57, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy185; + if (yych == 'i') goto yy185; + goto yy44; +yy58: + YYDEBUG(58, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" +#line 1425 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_NS_SEPARATOR); } -#line 1819 "Zend/zend_language_scanner.c" -yy58: - YYDEBUG(58, *YYCURSOR); +#line 2227 "Zend/zend_language_scanner.c" +yy60: + YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy55; - if (yych <= 'Z') goto yy59; - if (yych <= '^') goto yy55; - } else { - if (yych <= '`') goto yy55; - if (yych <= 'z') goto yy59; - if (yych <= 0x7F) goto yy55; - } -yy59: - YYDEBUG(59, *YYCURSOR); + if (yych == '=') goto yy186; + goto yy9; +yy61: + YYDEBUG(61, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy188; + goto yy44; +yy62: + YYDEBUG(62, *YYCURSOR); ++YYCURSOR; - YYDEBUG(60, *YYCURSOR); + YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 2369 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1843 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_END_HEREDOC: - YYDEBUG(61, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(63, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(64, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2356 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - - yyleng = heredoc_label->indentation + heredoc_label->length; - YYCURSOR += yyleng - 1; - - heredoc_label_dtor(heredoc_label); - efree(heredoc_label); - - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN(T_END_HEREDOC); + BEGIN(ST_BACKQUOTE); + RETURN_TOKEN('`'); } -#line 1867 "Zend/zend_language_scanner.c" -/* *********************************** */ -yyc_ST_HEREDOC: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; +#line 2248 "Zend/zend_language_scanner.c" +yy64: + YYDEBUG(64, *YYCURSOR); + ++YYCURSOR; YYDEBUG(65, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych == '$') goto yy69; - if (yych == '{') goto yy70; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1690 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN('{'); +} +#line 2259 "Zend/zend_language_scanner.c" +yy66: + YYDEBUG(66, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy189; + if (yych == '|') goto yy191; + goto yy9; +yy67: YYDEBUG(67, *YYCURSOR); ++YYCURSOR; -yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2488 "Zend/zend_language_scanner.l" +#line 1702 "Zend/zend_language_scanner.l" { - 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); + RESET_DOC_COMMENT(); + if (!zend_stack_is_empty(&SCNG(state_stack))) { + yy_pop_state(); } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - if (SCNG(heredoc_scan_ahead)) { - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { - YYCURSOR -= indentation; - } - - BEGIN(ST_END_HEREDOC); - - goto heredoc_scan_done; - } - continue; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -heredoc_scan_done: - - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - - if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { - zend_string *copy = Z_STR_P(zendlval); - - if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) - && PARSER_MODE()) { - zend_string_free(copy); - RETURN_TOKEN(T_ERROR); - } - - zend_string_free(copy); - } - - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN('}'); } -#line 2032 "Zend/zend_language_scanner.c" +#line 2279 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy68; - if (yych <= 'Z') goto yy71; - if (yych <= '^') goto yy68; - goto yy71; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy68; - goto yy71; - } else { - if (yych <= '{') goto yy74; - if (yych <= 0x7F) goto yy68; - goto yy71; - } - } + if (yych == '=') goto yy193; yy70: YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy76; - goto yy68; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1589 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_NOT_EQUAL); +} +#line 2291 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); + ++YYCURSOR; + YYFILL(1); yych = *YYCURSOR; YYDEBUG(72, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy71; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy71; + } else { + if (yych <= '@') goto yy73; + if (yych <= 'Z') goto yy71; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy71; + } else { + if (yych <= 'z') goto yy71; + if (yych >= 0x80) goto yy71; + } } - if (yych == '-') goto yy78; - if (yych <= '@') goto yy73; - if (yych <= '[') goto yy80; yy73: YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" +#line 1996 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2075 "Zend/zend_language_scanner.c" +#line 2320 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1686 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_MOD_EQUAL); } -#line 2086 "Zend/zend_language_scanner.c" +#line 2330 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2370 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + RETURN_TOKEN(T_BOOLEAN_AND); } -#line 2098 "Zend/zend_language_scanner.c" +#line 2340 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy82; -yy79: - YYDEBUG(79, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy73; -yy80: - YYDEBUG(80, *YYCURSOR); ++YYCURSOR; - YYDEBUG(81, *YYCURSOR); + YYDEBUG(79, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1980 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_AND_EQUAL); } -#line 2118 "Zend/zend_language_scanner.c" -yy82: - YYDEBUG(82, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy79; - if (yych <= 'Z') goto yy83; - if (yych <= '^') goto yy79; - } else { - if (yych <= '`') goto yy79; - if (yych <= 'z') goto yy83; - if (yych <= 0x7F) goto yy79; - } -yy83: - YYDEBUG(83, *YYCURSOR); +#line 2350 "Zend/zend_language_scanner.c" +yy80: + YYDEBUG(80, *YYCURSOR); ++YYCURSOR; - YYDEBUG(84, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 2142 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_IN_SCRIPTING: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 4, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 216, 216, 152, 152, 152, 152, 152, 152, - 152, 152, 0, 0, 0, 0, 0, 0, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - }; - YYDEBUG(85, *YYCURSOR); - YYFILL(16); + YYFILL(7); yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy89; +yy81: + YYDEBUG(81, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy80; } switch (yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: goto yy87; - case ' ': - case '!': goto yy92; - case '"': goto yy94; - case '#': goto yy96; - case '$': goto yy98; - case '%': goto yy99; - case '&': goto yy100; - case '\'': goto yy101; - case '(': goto yy103; - case ')': - case ',': - case ';': - case '@': - case '[': - case ']': - case '~': goto yy104; - case '*': goto yy105; - case '+': goto yy106; - case '-': goto yy107; - case '.': goto yy108; - case '/': goto yy109; - case '0': goto yy110; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy112; - case ':': goto yy114; - case '<': goto yy115; - case '=': goto yy116; - case '>': goto yy117; - case '?': goto yy118; case 'A': - case 'a': goto yy119; + case 'a': goto yy83; case 'B': - case 'b': goto yy121; - case 'C': - case 'c': goto yy122; + case 'b': goto yy84; case 'D': - case 'd': goto yy123; - case 'E': - case 'e': goto yy124; + case 'd': goto yy85; case 'F': - case 'f': goto yy125; - case 'G': - case 'g': goto yy126; + case 'f': goto yy86; case 'I': - case 'i': goto yy129; - case 'L': - case 'l': goto yy130; - case 'N': - case 'n': goto yy131; + case 'i': goto yy87; case 'O': - case 'o': goto yy132; - case 'P': - case 'p': goto yy133; + case 'o': goto yy88; case 'R': - case 'r': goto yy134; + case 'r': goto yy89; case 'S': - case 's': goto yy135; - case 'T': - case 't': goto yy136; + case 's': goto yy90; case 'U': - case 'u': goto yy137; - case 'V': - case 'v': goto yy138; - case 'W': - case 'w': goto yy139; - case 'X': - case 'x': goto yy140; - case 'Y': - case 'y': goto yy141; - case '\\': goto yy142; - case '^': goto yy144; - case '_': goto yy145; - case '`': goto yy146; - case '{': goto yy148; - case '|': goto yy150; - case '}': goto yy151; - default: goto yy127; - } -yy87: - YYDEBUG(87, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(88, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2690 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 2320 "Zend/zend_language_scanner.c" -yy89: - YYDEBUG(89, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(90, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy89; + case 'u': goto yy91; + default: goto yy82; } - YYDEBUG(91, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 2336 "Zend/zend_language_scanner.c" -yy92: +yy82: + YYDEBUG(82, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy9; + } else { + goto yy27; + } + } else { + if (yyaccept == 2) { + goto yy36; + } else { + goto yy109; + } + } + } else { + if (yyaccept <= 5) { + if (yyaccept == 4) { + goto yy113; + } else { + goto yy122; + } + } else { + goto yy457; + } + } +yy83: + YYDEBUG(83, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy195; + if (yych == 'r') goto yy195; + goto yy82; +yy84: + YYDEBUG(84, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy196; + if (yych <= 'N') goto yy82; + goto yy197; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy82; + goto yy196; + } else { + if (yych == 'o') goto yy197; + goto yy82; + } + } +yy85: + YYDEBUG(85, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy198; + if (yych == 'o') goto yy198; + goto yy82; +yy86: + YYDEBUG(86, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy199; + if (yych == 'l') goto yy199; + goto yy82; +yy87: + YYDEBUG(87, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy200; + if (yych == 'n') goto yy200; + goto yy82; +yy88: + YYDEBUG(88, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy201; + if (yych == 'b') goto yy201; + goto yy82; +yy89: + YYDEBUG(89, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy202; + if (yych == 'e') goto yy202; + goto yy82; +yy90: + YYDEBUG(90, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy203; + if (yych == 't') goto yy203; + goto yy82; +yy91: + YYDEBUG(91, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy204; + if (yych == 'n') goto yy204; + goto yy82; +yy92: YYDEBUG(92, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy153; -yy93: + yych = *++YYCURSOR; + if (yych == '=') goto yy205; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1675 "Zend/zend_language_scanner.l" +#line 1617 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(yytext[0]); + RETURN_TOKEN(T_POW); } -#line 2348 "Zend/zend_language_scanner.c" +#line 2484 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2186 "Zend/zend_language_scanner.l" +#line 1613 "Zend/zend_language_scanner.l" { - int bprefix = (yytext[0] != '"') ? 1 : 0; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); - } else { - RETURN_TOKEN(T_ERROR); - } - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - - /* Remember how much was scanned to save rescanning */ - SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); - - YYCURSOR = SCNG(yy_text) + yyleng; - - BEGIN(ST_DOUBLE_QUOTES); - RETURN_TOKEN('"'); + RETURN_TOKEN(T_MUL_EQUAL); } -#line 2399 "Zend/zend_language_scanner.c" +#line 2494 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2013 "Zend/zend_language_scanner.l" +#line 1569 "Zend/zend_language_scanner.l" { - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - CG(zend_lineno)++; - break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; - } - - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); + RETURN_TOKEN(T_INC); } -#line 2437 "Zend/zend_language_scanner.c" +#line 2504 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy93; - if (yych <= 'Z') goto yy155; - if (yych <= '^') goto yy93; - goto yy155; - } else { - if (yych <= '`') goto yy93; - if (yych <= 'z') goto yy155; - if (yych <= 0x7F) goto yy93; - goto yy155; - } -yy99: - YYDEBUG(99, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy158; - goto yy93; -yy100: - YYDEBUG(100, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy160; - if (yych == '=') goto yy162; - goto yy93; -yy101: - YYDEBUG(101, *YYCURSOR); ++YYCURSOR; - YYDEBUG(102, *YYCURSOR); + YYDEBUG(99, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2096 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { - register char *s, *t; - char *end; - int bprefix = (yytext[0] != '\'') ? 1 : 0; - - while (1) { - if (YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\'') { - YYCURSOR++; - yyleng = YYCURSOR - SCNG(yy_text); - - break; - } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - } else { - yyleng = YYLIMIT - SCNG(yy_text); - - /* Unclosed single quotes; treat similar to double quotes, but without a separate token - * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." - * rule, which continued in ST_IN_SCRIPTING state after the quote */ - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - } - - if (yyleng-bprefix-2 <= 1) { - if (yyleng-bprefix-2 < 1) { - ZVAL_EMPTY_STRING(zendlval); - } else { - zend_uchar c = (zend_uchar)*(yytext+bprefix+1); - if (c == '\n' || c == '\r') { - CG(zend_lineno)++; - } - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); - } - goto skip_escape_conversion; - } - ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - - /* convert escape sequences */ - s = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (1) { - if (UNEXPECTED(*s=='\\')) { - break; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - if (s == end) { - goto skip_escape_conversion; - } - } - - t = s; - while (s 2) { + doc_com = 1; + RESET_DOC_COMMENT(); + } else { + doc_com = 0; + } + + while (YYCURSOR < YYLIMIT) { + if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { + break; + } + } + + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } else { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + } + + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + + if (doc_com) { + CG(doc_comment) = zend_string_init(yytext, yyleng, 0); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_DOC_COMMENT); } + RETURN_TOKEN(T_DOC_COMMENT); + } + + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); + } + RETURN_TOKEN(T_COMMENT); +} +#line 2635 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy203; - goto yy93; -yy115: + ++YYCURSOR; YYDEBUG(115, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ';') goto yy93; - if (yych <= '<') goto yy205; - if (yych <= '=') goto yy207; - if (yych <= '>') goto yy209; - goto yy93; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1625 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIV_EQUAL); +} +#line 2645 "Zend/zend_language_scanner.c" yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy93; - if (yych <= '=') goto yy210; - if (yych <= '>') goto yy212; - goto yy93; + if (yybm[0+yych] & 64) { + goto yy210; + } + goto yy82; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy93; - if (yych <= '=') goto yy214; - if (yych <= '>') goto yy216; - goto yy93; + if (yych <= ',') { + if (yych == '+') goto yy213; + goto yy82; + } else { + if (yych <= '-') goto yy213; + if (yych <= '/') goto yy82; + if (yych <= '9') goto yy214; + goto yy82; + } yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '=') goto yy93; - if (yych <= '>') goto yy218; - if (yych <= '?') goto yy220; - goto yy93; + if (yybm[0+yych] & 128) { + goto yy216; + } + goto yy82; yy119: YYDEBUG(119, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= 'S') { - if (yych <= 'M') { - if (yych == 'B') goto yy222; - goto yy128; - } else { - if (yych <= 'N') goto yy223; - if (yych <= 'Q') goto yy128; - if (yych <= 'R') goto yy224; - goto yy225; - } - } else { - if (yych <= 'n') { - if (yych == 'b') goto yy222; - if (yych <= 'm') goto yy128; - goto yy223; - } else { - if (yych <= 'q') goto yy128; - if (yych <= 'r') goto yy224; - if (yych <= 's') goto yy225; - goto yy128; - } - } -yy120: YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2008 "Zend/zend_language_scanner.l" +#line 1421 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_STRING, 0); + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 2823 "Zend/zend_language_scanner.c" +#line 2681 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); - yyaccept = 2; + yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') { - if (yych <= '"') { - if (yych <= '!') goto yy128; - goto yy94; - } else { - if (yych == '\'') goto yy101; - goto yy128; - } - } else { - if (yych <= 'R') { - if (yych <= '<') goto yy227; - if (yych <= 'Q') goto yy128; - goto yy228; - } else { - if (yych == 'r') goto yy228; - goto yy128; - } - } + if (yych <= ';') goto yy122; + if (yych <= '<') goto yy219; + if (yych <= '=') goto yy221; yy122: YYDEBUG(122, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy229; - goto yy128; - } else { - if (yych <= 'L') goto yy230; - if (yych <= 'N') goto yy128; - goto yy231; - } - } else { - if (yych <= 'k') { - if (yych == 'a') goto yy229; - goto yy128; - } else { - if (yych <= 'l') goto yy230; - if (yych == 'o') goto yy231; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1677 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL); +} +#line 2696 "Zend/zend_language_scanner.c" yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'E') goto yy232; - goto yy128; - } else { - if (yych <= 'I') goto yy233; - if (yych <= 'N') goto yy128; - goto yy234; - } - } else { - if (yych <= 'h') { - if (yych == 'e') goto yy232; - goto yy128; - } else { - if (yych <= 'i') goto yy233; - if (yych == 'o') goto yy234; - goto yy128; - } - } -yy124: + if (yych == '>') goto yy223; YYDEBUG(124, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy236; - case 'L': - case 'l': goto yy237; - case 'M': - case 'm': goto yy238; - case 'N': - case 'n': goto yy239; - case 'V': - case 'v': goto yy240; - case 'X': - case 'x': goto yy241; - default: goto yy128; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1597 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); +} +#line 2707 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'N') { - if (yych == 'I') goto yy242; - goto yy128; - } else { - if (yych <= 'O') goto yy243; - if (yych <= 'T') goto yy128; - goto yy244; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy242; - goto yy128; - } else { - if (yych <= 'o') goto yy243; - if (yych == 'u') goto yy244; - goto yy128; - } - } + ++YYCURSOR; + goto yy70; yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'L') goto yy245; - if (yych <= 'N') goto yy128; - goto yy246; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy128; - goto yy245; - } else { - if (yych == 'o') goto yy246; - goto yy128; - } - } -yy127: + if (yych == '=') goto yy225; YYDEBUG(127, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1585 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_EQUAL); +} +#line 2722 "Zend/zend_language_scanner.c" yy128: YYDEBUG(128, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy127; - } - goto yy120; -yy129: + ++YYCURSOR; YYDEBUG(129, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'L') { - if (yych == 'F') goto yy247; - goto yy128; - } else { - if (yych <= 'M') goto yy249; - if (yych <= 'N') goto yy250; - if (yych <= 'R') goto yy128; - goto yy251; - } - } else { - if (yych <= 'm') { - if (yych == 'f') goto yy247; - if (yych <= 'l') goto yy128; - goto yy249; - } else { - if (yych <= 'n') goto yy250; - if (yych == 's') goto yy251; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1553 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_ARROW); +} +#line 2732 "Zend/zend_language_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy252; - if (yych == 'i') goto yy252; - goto yy128; -yy131: + ++YYCURSOR; YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy253; - if (yych <= 'D') goto yy128; - goto yy254; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy253; - } else { - if (yych == 'e') goto yy254; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1601 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); +} +#line 2742 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy255; - if (yych == 'r') goto yy255; - goto yy128; -yy133: + if (yych == '=') goto yy227; YYDEBUG(133, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'R') goto yy257; - if (yych <= 'T') goto yy128; - goto yy258; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy128; - goto yy257; - } else { - if (yych == 'u') goto yy258; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1681 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR); +} +#line 2753 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy259; - if (yych == 'e') goto yy259; - goto yy128; + if (yych == '\n') goto yy229; + if (yych == '\r') goto yy230; yy135: YYDEBUG(135, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych == 'T') goto yy260; - if (yych <= 'V') goto yy128; - goto yy261; - } else { - if (yych <= 't') { - if (yych <= 's') goto yy128; - goto yy260; - } else { - if (yych == 'w') goto yy261; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2094 "Zend/zend_language_scanner.l" + { + BEGIN(INITIAL); + if (yytext[yyleng-1] != '>') { + CG(increment_lineno) = 1; + } + if (PARSER_MODE()) { + RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ + } + RETURN_TOKEN(T_CLOSE_TAG); +} +#line 2773 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy262; - if (yych <= 'Q') goto yy128; - goto yy263; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy128; - goto yy262; - } else { - if (yych == 'r') goto yy263; - goto yy128; - } - } -yy137: + ++YYCURSOR; YYDEBUG(137, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy264; - if (yych <= 'R') goto yy128; - goto yy265; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy128; - goto yy264; - } else { - if (yych == 's') goto yy265; - goto yy128; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1433 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_COALESCE); +} +#line 2783 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy266; - if (yych == 'a') goto yy266; - goto yy128; + if (yych == 'S') goto yy231; + if (yych == 's') goto yy231; + goto yy44; yy139: YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy267; - if (yych == 'h') goto yy267; - goto yy128; + if (yych == 'D') goto yy232; + if (yych == 'd') goto yy232; + goto yy44; yy140: YYDEBUG(140, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy268; - if (yych == 'o') goto yy268; - goto yy128; + if (yych == 'R') goto yy234; + if (yych == 'r') goto yy234; + goto yy44; yy141: YYDEBUG(141, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy269; - if (yych == 'i') goto yy269; - goto yy128; -yy142: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(142, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1337 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + RETURN_TOKEN(T_AS); } -#line 3112 "Zend/zend_language_scanner.c" +#line 2814 "Zend/zend_language_scanner.c" +yy143: + YYDEBUG(143, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '<') goto yy235; + goto yy82; yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy270; - goto yy93; + if (yych == 'E') goto yy236; + if (yych == 'e') goto yy236; + goto yy44; yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy272; - goto yy128; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych <= 'K') goto yy44; + goto yy237; + } else { + if (yych <= 'R') goto yy44; + if (yych <= 'S') goto yy238; + goto yy239; + } + } else { + if (yych <= 'r') { + if (yych == 'l') goto yy237; + goto yy44; + } else { + if (yych <= 's') goto yy238; + if (yych <= 't') goto yy239; + goto yy44; + } + } yy146: YYDEBUG(146, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'A') goto yy240; + if (yych <= 'N') goto yy44; + goto yy241; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy240; + } else { + if (yych == 'o') goto yy241; + goto yy44; + } + } +yy147: YYDEBUG(147, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2350 "Zend/zend_language_scanner.l" - { - BEGIN(ST_BACKQUOTE); - RETURN_TOKEN('`'); -} -#line 3133 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy242; + if (yych == 'n') goto yy242; + goto yy44; yy148: YYDEBUG(148, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'F') { + if (yych == 'C') goto yy243; + if (yych <= 'E') goto yy44; + goto yy244; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy44; + goto yy243; + } else { + if (yych == 'f') goto yy244; + goto yy44; + } + } +yy149: YYDEBUG(149, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); -} -#line 3144 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy245; + if (yych == 'e') goto yy245; + goto yy44; yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy273; - if (yych == '|') goto yy275; - goto yy93; -yy151: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(151, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(152, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" +#line 1305 "Zend/zend_language_scanner.l" { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); - } - RETURN_TOKEN('}'); + RETURN_TOKEN(T_DO); } -#line 3164 "Zend/zend_language_scanner.c" +#line 2904 "Zend/zend_language_scanner.c" +yy152: + YYDEBUG(152, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy247; + if (yych == 'h') goto yy247; + goto yy44; yy153: YYDEBUG(153, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy277; + yych = *++YYCURSOR; + if (yych == 'S') goto yy248; + if (yych == 's') goto yy248; + goto yy44; yy154: YYDEBUG(154, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 3176 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'P') goto yy249; + if (yych == 'p') goto yy249; + goto yy44; yy155: YYDEBUG(155, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'D') goto yy250; + if (yych == 'd') goto yy250; + goto yy44; +yy156: YYDEBUG(156, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy155; - } else { - if (yych <= '@') goto yy157; - if (yych <= 'Z') goto yy155; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy251; + if (yych == 'a') goto yy251; + goto yy44; +yy157: + YYDEBUG(157, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'I') goto yy252; + if (yych <= 'S') goto yy44; + goto yy253; } else { - if (yych <= '`') { - if (yych <= '_') goto yy155; + if (yych <= 'i') { + if (yych <= 'h') goto yy44; + goto yy252; } else { - if (yych <= 'z') goto yy155; - if (yych >= 0x80) goto yy155; + if (yych == 't') goto yy253; + goto yy44; } } -yy157: - YYDEBUG(157, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 3205 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy254; + if (yych == 'n') goto yy254; + goto yy44; +yy159: YYDEBUG(159, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1623 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MOD_EQUAL); -} -#line 3215 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy255; + if (yych == 'r') goto yy255; + goto yy44; yy160: YYDEBUG(160, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy257; + if (yych == 'n') goto yy257; + goto yy44; +yy161: YYDEBUG(161, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1651 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_AND); -} -#line 3225 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy258; + if (yych == 'o') goto yy258; + goto yy44; yy162: YYDEBUG(162, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy259; + if (yych == 't') goto yy259; + goto yy44; +yy163: YYDEBUG(163, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(164, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1635 "Zend/zend_language_scanner.l" +#line 1281 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AND_EQUAL); + RETURN_TOKEN(T_IF); } -#line 3235 "Zend/zend_language_scanner.c" -yy164: - YYDEBUG(164, *YYCURSOR); - ++YYCURSOR; - YYFILL(7); - yych = *YYCURSOR; +#line 2993 "Zend/zend_language_scanner.c" yy165: YYDEBUG(165, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy164; - } - switch (yych) { - case 'A': - case 'a': goto yy167; - case 'B': - case 'b': goto yy168; - case 'D': - case 'd': goto yy169; - case 'F': - case 'f': goto yy170; - case 'I': - case 'i': goto yy171; - case 'O': - case 'o': goto yy172; - case 'R': - case 'r': goto yy173; - case 'S': - case 's': goto yy174; - case 'U': - case 'u': goto yy175; - default: goto yy166; - } + yych = *++YYCURSOR; + if (yych == 'P') goto yy260; + if (yych == 'p') goto yy260; + goto yy44; yy166: YYDEBUG(166, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy93; - } else { - goto yy111; - } + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy44; + goto yy261; } else { - if (yyaccept == 2) { - goto yy120; - } else { - goto yy193; - } + if (yych <= 'R') goto yy44; + if (yych <= 'S') goto yy262; + goto yy263; } } else { - if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy197; - } else { - goto yy206; - } + if (yych <= 'r') { + if (yych == 'c') goto yy261; + goto yy44; } else { - goto yy541; + if (yych <= 's') goto yy262; + if (yych <= 't') goto yy263; + goto yy44; } } yy167: YYDEBUG(167, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy279; - if (yych == 'r') goto yy279; - goto yy166; + if (yych == 'S') goto yy264; + if (yych == 's') goto yy264; + goto yy44; yy168: YYDEBUG(168, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy280; - if (yych <= 'N') goto yy166; - goto yy281; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy166; - goto yy280; - } else { - if (yych == 'o') goto yy281; - goto yy166; - } - } + if (yych == 'S') goto yy265; + if (yych == 's') goto yy265; + goto yy44; yy169: YYDEBUG(169, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy282; - if (yych == 'o') goto yy282; - goto yy166; + if (yych == 'M') goto yy266; + if (yych == 'm') goto yy266; + goto yy44; yy170: YYDEBUG(170, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy283; - if (yych == 'l') goto yy283; - goto yy166; + if (yych == 'W') goto yy267; + if (yych == 'w') goto yy267; + goto yy44; yy171: YYDEBUG(171, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy284; - if (yych == 'n') goto yy284; - goto yy166; -yy172: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy285; - if (yych == 'b') goto yy285; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1665 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_OR); +} +#line 3058 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy286; - if (yych == 'e') goto yy286; - goto yy166; + if (yych <= 'O') { + if (yych == 'I') goto yy269; + if (yych <= 'N') goto yy44; + goto yy270; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy44; + goto yy269; + } else { + if (yych == 'o') goto yy270; + goto yy44; + } + } yy174: YYDEBUG(174, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy287; - if (yych == 't') goto yy287; - goto yy166; + if (yych == 'B') goto yy271; + if (yych == 'b') goto yy271; + goto yy44; yy175: YYDEBUG(175, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy288; - if (yych == 'n') goto yy288; - goto yy166; + if (yych <= 'T') { + if (yych == 'Q') goto yy272; + if (yych <= 'S') goto yy44; + goto yy273; + } else { + if (yych <= 'q') { + if (yych <= 'p') goto yy44; + goto yy272; + } else { + if (yych == 't') goto yy273; + goto yy44; + } + } yy176: YYDEBUG(176, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy289; + yych = *++YYCURSOR; + if (yych == 'A') goto yy274; + if (yych == 'a') goto yy274; + goto yy44; +yy177: YYDEBUG(177, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1607 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW); -} -#line 3369 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy275; + if (yych == 'i') goto yy275; + goto yy44; yy178: YYDEBUG(178, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy276; + if (yych == 'r') goto yy276; + goto yy44; +yy179: YYDEBUG(179, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MUL_EQUAL); -} -#line 3379 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'A') goto yy277; + if (yych <= 'X') goto yy44; + goto yy278; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy277; + } else { + if (yych == 'y') goto yy278; + goto yy44; + } + } yy180: YYDEBUG(180, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'S') goto yy280; + if (yych == 's') goto yy280; + goto yy44; +yy181: YYDEBUG(181, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INC); -} -#line 3389 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy281; + if (yych == 'e') goto yy281; + goto yy44; yy182: YYDEBUG(182, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy283; + if (yych == 'r') goto yy283; + goto yy44; +yy183: YYDEBUG(183, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1595 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 3399 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy285; + if (yych == 'i') goto yy285; + goto yy44; yy184: YYDEBUG(184, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy286; + if (yych == 'r') goto yy286; + goto yy44; +yy185: YYDEBUG(185, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEC); -} -#line 3409 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy288; + if (yych == 'e') goto yy288; + goto yy44; yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1599 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MINUS_EQUAL); + RETURN_TOKEN(T_XOR_EQUAL); } -#line 3419 "Zend/zend_language_scanner.c" +#line 3176 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy289; + case 'D': + case 'd': goto yy290; + case 'F': + case 'f': goto yy291; + case 'H': + case 'h': goto yy292; + case 'L': + case 'l': goto yy293; + case 'M': + case 'm': goto yy294; + case 'N': + case 'n': goto yy295; + case 'T': + case 't': goto yy296; + default: goto yy44; + } +yy189: YYDEBUG(189, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1387 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN(T_OBJECT_OPERATOR); + RETURN_TOKEN(T_OR_EQUAL); } -#line 3430 "Zend/zend_language_scanner.c" -yy190: - YYDEBUG(190, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy291; - goto yy166; +#line 3208 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(192, *YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy191; - } else { - if (yych <= 'E') goto yy201; - if (yych == 'e') goto yy201; - } -yy193: - YYDEBUG(193, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(192, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1848 "Zend/zend_language_scanner.l" +#line 1657 "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_WITH_VAL(T_DNUMBER); + RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3462 "Zend/zend_language_scanner.c" -yy194: - YYDEBUG(194, *YYCURSOR); +#line 3218 "Zend/zend_language_scanner.c" +yy193: + YYDEBUG(193, *YYCURSOR); ++YYCURSOR; - YYDEBUG(195, *YYCURSOR); + YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1581 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONCAT_EQUAL); + RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3472 "Zend/zend_language_scanner.c" +#line 3228 "Zend/zend_language_scanner.c" +yy195: + YYDEBUG(195, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy297; + if (yych == 'r') goto yy297; + goto yy82; yy196: YYDEBUG(196, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy293; + yych = *++YYCURSOR; + if (yych == 'N') goto yy298; + if (yych == 'n') goto yy298; + goto yy82; yy197: YYDEBUG(197, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2045 "Zend/zend_language_scanner.l" - { - int doc_com; - - if (yyleng > 2) { - doc_com = 1; - RESET_DOC_COMMENT(); - } else { - doc_com = 0; - } - - while (YYCURSOR < YYLIMIT) { - if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { - break; - } - } - - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } else { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - - if (doc_com) { - CG(doc_comment) = zend_string_init(yytext, yyleng, 0); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_DOC_COMMENT); - } - RETURN_TOKEN(T_DOC_COMMENT); - } - - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 3520 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy299; + if (yych == 'o') goto yy299; + goto yy82; yy198: YYDEBUG(198, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'U') goto yy300; + if (yych == 'u') goto yy300; + goto yy82; +yy199: YYDEBUG(199, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIV_EQUAL); -} -#line 3530 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy301; + if (yych == 'o') goto yy301; + goto yy82; yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy294; - } - goto yy166; + if (yych == 'T') goto yy302; + if (yych == 't') goto yy302; + goto yy82; yy201: YYDEBUG(201, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy297; - goto yy166; - } else { - if (yych <= '-') goto yy297; - if (yych <= '/') goto yy166; - if (yych <= '9') goto yy298; - goto yy166; - } + if (yych == 'J') goto yy303; + if (yych == 'j') goto yy303; + goto yy82; yy202: YYDEBUG(202, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy300; - } - goto yy166; + if (yych == 'A') goto yy304; + if (yych == 'a') goto yy304; + goto yy82; yy203: YYDEBUG(203, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'R') goto yy305; + if (yych == 'r') goto yy305; + goto yy82; +yy204: YYDEBUG(204, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1411 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); -} -#line 3566 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy306; + if (yych == 's') goto yy306; + goto yy82; yy205: YYDEBUG(205, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy206; - if (yych <= '<') goto yy303; - if (yych <= '=') goto yy305; -yy206: + ++YYCURSOR; YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1667 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL); + RETURN_TOKEN(T_POW_EQUAL); } -#line 3581 "Zend/zend_language_scanner.c" +#line 3298 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy307; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1429 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); + RETURN_TOKEN(T_ELLIPSIS); } -#line 3592 "Zend/zend_language_scanner.c" +#line 3308 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; - goto yy154; + if (yych <= '\f') { + if (yych <= 0x08) goto yy82; + if (yych <= '\n') goto yy307; + goto yy82; + } else { + if (yych <= '\r') goto yy307; + if (yych == ' ') goto yy307; + goto yy82; + } yy210: YYDEBUG(210, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy309; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(211, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_EQUAL); -} -#line 3607 "Zend/zend_language_scanner.c" -yy212: + if (yybm[0+yych] & 64) { + goto yy210; + } YYDEBUG(212, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" +#line 1726 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DOUBLE_ARROW); + char *bin = yytext + 2; /* Skip "0b" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*bin == '0') { + ++bin; + --len; + } + + if (len < SIZEOF_ZEND_LONG * 8) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); + ZEND_ASSERT(!errno && end == yytext + yyleng); + } + RETURN_TOKEN_WITH_VAL(T_LNUMBER); + } else { + 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_WITH_VAL(T_DNUMBER); + } } -#line 3617 "Zend/zend_language_scanner.c" +#line 3360 "Zend/zend_language_scanner.c" +yy213: + YYDEBUG(213, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy82; + if (yych >= ':') goto yy82; yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(215, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); -} -#line 3627 "Zend/zend_language_scanner.c" + if (yych <= '/') goto yy109; + if (yych <= '9') goto yy214; + goto yy109; yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy311; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(217, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1671 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR); -} -#line 3638 "Zend/zend_language_scanner.c" -yy218: + if (yybm[0+yych] & 128) { + goto yy216; + } YYDEBUG(218, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy313; - if (yych == '\r') goto yy314; -yy219: - YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2084 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { - BEGIN(INITIAL); - if (yytext[yyleng-1] != '>') { - CG(increment_lineno) = 1; + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; } - if (PARSER_MODE()) { - RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ + + if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); + ZEND_ASSERT(!errno && end == hex + len); + } + RETURN_TOKEN_WITH_VAL(T_LNUMBER); + } else { + 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_WITH_VAL(T_DNUMBER); } - RETURN_TOKEN(T_CLOSE_TAG); } -#line 3658 "Zend/zend_language_scanner.c" -yy220: - YYDEBUG(220, *YYCURSOR); +#line 3414 "Zend/zend_language_scanner.c" +yy219: + YYDEBUG(219, *YYCURSOR); ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; + YYDEBUG(220, *YYCURSOR); + if (yych <= '\'') { + if (yych <= ' ') { + if (yych == '\t') goto yy219; + if (yych <= 0x1F) goto yy82; + goto yy219; + } else { + if (yych == '"') goto yy309; + if (yych <= '&') goto yy82; + goto yy310; + } + } else { + if (yych <= '_') { + if (yych <= '@') goto yy82; + if (yych <= 'Z') goto yy311; + if (yych <= '^') goto yy82; + goto yy311; + } else { + if (yych <= '`') goto yy82; + if (yych <= 'z') goto yy311; + if (yych <= 0x7F) goto yy82; + goto yy311; + } + } +yy221: YYDEBUG(221, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(222, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1423 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_COALESCE); + RETURN_TOKEN(T_SL_EQUAL); } -#line 3668 "Zend/zend_language_scanner.c" -yy222: - YYDEBUG(222, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy315; - if (yych == 's') goto yy315; - goto yy128; +#line 3453 "Zend/zend_language_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy316; - if (yych == 'd') goto yy316; - goto yy128; -yy224: + ++YYCURSOR; YYDEBUG(224, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy318; - if (yych == 'r') goto yy318; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1593 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SPACESHIP); +} +#line 3463 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1327 "Zend/zend_language_scanner.l" +#line 1577 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AS); + RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3699 "Zend/zend_language_scanner.c" +#line 3473 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy319; - goto yy166; -yy228: + ++YYCURSOR; YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy320; - if (yych == 'e') goto yy320; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1641 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR_EQUAL); +} +#line 3483 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy128; - goto yy321; - } else { - if (yych <= 'R') goto yy128; - if (yych <= 'S') goto yy322; - goto yy323; - } - } else { - if (yych <= 'r') { - if (yych == 'l') goto yy321; - goto yy128; - } else { - if (yych <= 's') goto yy322; - if (yych <= 't') goto yy323; - goto yy128; - } - } + ++YYCURSOR; + goto yy135; yy230: YYDEBUG(230, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy324; - if (yych <= 'N') goto yy128; - goto yy325; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy324; - } else { - if (yych == 'o') goto yy325; - goto yy128; - } - } + if (yych == '\n') goto yy229; + goto yy135; yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy326; - if (yych == 'n') goto yy326; - goto yy128; + if (yych == 'T') goto yy313; + if (yych == 't') goto yy313; + goto yy44; yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy327; - if (yych <= 'E') goto yy128; - goto yy328; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy128; - goto yy327; - } else { - if (yych == 'f') goto yy328; - goto yy128; - } + if (yybm[0+yych] & 16) { + goto yy43; } -yy233: YYDEBUG(233, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy329; - if (yych == 'e') goto yy329; - goto yy128; -yy234: - YYDEBUG(234, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1295 "Zend/zend_language_scanner.l" +#line 1669 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DO); + RETURN_TOKEN(T_LOGICAL_AND); } -#line 3789 "Zend/zend_language_scanner.c" +#line 3511 "Zend/zend_language_scanner.c" +yy234: + YYDEBUG(234, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy314; + if (yych == 'a') goto yy314; + goto yy44; +yy235: + YYDEBUG(235, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '<') goto yy219; + goto yy82; yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy331; - if (yych == 'h') goto yy331; - goto yy128; + if (yych == 'A') goto yy315; + if (yych == 'a') goto yy315; + goto yy44; yy237: YYDEBUG(237, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy332; - if (yych == 's') goto yy332; - goto yy128; + if (yych == 'L') goto yy316; + if (yych == 'l') goto yy316; + goto yy44; yy238: YYDEBUG(238, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy333; - if (yych == 'p') goto yy333; - goto yy128; + if (yych == 'E') goto yy317; + if (yych == 'e') goto yy317; + goto yy44; yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy334; - if (yych == 'd') goto yy334; - goto yy128; + if (yych == 'C') goto yy319; + if (yych == 'c') goto yy319; + goto yy44; yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy335; - if (yych == 'a') goto yy335; - goto yy128; + if (yych == 'S') goto yy320; + if (yych == 's') goto yy320; + goto yy44; yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy336; - if (yych <= 'S') goto yy128; - goto yy337; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy128; - goto yy336; - } else { - if (yych == 't') goto yy337; - goto yy128; - } - } + if (yych == 'N') goto yy321; + if (yych == 'n') goto yy321; + goto yy44; yy242: YYDEBUG(242, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy338; - if (yych == 'n') goto yy338; - goto yy128; + if (yych <= 'T') { + if (yych <= 'R') goto yy44; + if (yych <= 'S') goto yy322; + goto yy323; + } else { + if (yych <= 'r') goto yy44; + if (yych <= 's') goto yy322; + if (yych <= 't') goto yy323; + goto yy44; + } yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy339; - if (yych == 'r') goto yy339; - goto yy128; + if (yych == 'L') goto yy324; + if (yych == 'l') goto yy324; + goto yy44; yy244: YYDEBUG(244, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy341; - if (yych == 'n') goto yy341; - goto yy128; + if (yych == 'A') goto yy325; + if (yych == 'a') goto yy325; + goto yy44; yy245: YYDEBUG(245, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy342; - if (yych == 'o') goto yy342; - goto yy128; -yy246: - YYDEBUG(246, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy343; - if (yych == 't') goto yy343; - goto yy128; -yy247: - YYDEBUG(247, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(248, *YYCURSOR); + YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1271 "Zend/zend_language_scanner.l" +#line 1239 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IF); + RETURN_TOKEN(T_EXIT); } -#line 3878 "Zend/zend_language_scanner.c" +#line 3596 "Zend/zend_language_scanner.c" +yy247: + YYDEBUG(247, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy326; + if (yych == 'o') goto yy326; + goto yy44; +yy248: + YYDEBUG(248, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy328; + if (yych == 'e') goto yy328; + goto yy44; yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy344; - if (yych == 'p') goto yy344; - goto yy128; + if (yych == 'T') goto yy330; + if (yych == 't') goto yy330; + goto yy44; yy250: YYDEBUG(250, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy128; - goto yy345; - } else { - if (yych <= 'R') goto yy128; - if (yych <= 'S') goto yy346; - goto yy347; - } - } else { - if (yych <= 'r') { - if (yych == 'c') goto yy345; - goto yy128; - } else { - if (yych <= 's') goto yy346; - if (yych <= 't') goto yy347; - goto yy128; - } + switch (yych) { + case 'D': + case 'd': goto yy331; + case 'F': + case 'f': goto yy332; + case 'I': + case 'i': goto yy333; + case 'S': + case 's': goto yy334; + case 'W': + case 'w': goto yy335; + default: goto yy44; } yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy348; - if (yych == 's') goto yy348; - goto yy128; + if (yych == 'L') goto yy336; + if (yych == 'l') goto yy336; + goto yy44; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy349; - if (yych == 's') goto yy349; - goto yy128; + if (yych == 'T') goto yy338; + if (yych == 't') goto yy338; + goto yy44; yy253: YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy350; - if (yych == 'm') goto yy350; - goto yy128; + if (yych == 'E') goto yy340; + if (yych == 'e') goto yy340; + goto yy44; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy351; - if (yych == 'w') goto yy351; - goto yy128; + if (yych == 'A') goto yy341; + if (yych == 'a') goto yy341; + goto yy44; yy255: YYDEBUG(255, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy256; + if (yych <= '9') goto yy43; + } else { + if (yych == 'E') goto yy342; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'e') goto yy342; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } } +yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1655 "Zend/zend_language_scanner.l" +#line 1309 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LOGICAL_OR); + RETURN_TOKEN(T_FOR); } -#line 3943 "Zend/zend_language_scanner.c" +#line 3682 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy353; - if (yych <= 'N') goto yy128; - goto yy354; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy128; - goto yy353; - } else { - if (yych == 'o') goto yy354; - goto yy128; - } - } + if (yych == 'C') goto yy343; + if (yych == 'c') goto yy343; + goto yy44; yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy355; - if (yych == 'b') goto yy355; - goto yy128; + if (yych == 'B') goto yy344; + if (yych == 'b') goto yy344; + goto yy44; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy356; - if (yych <= 'S') goto yy128; - goto yy357; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy128; - goto yy356; - } else { - if (yych == 't') goto yy357; - goto yy128; - } - } + if (yych == 'O') goto yy345; + if (yych == 'o') goto yy345; + goto yy44; yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy358; - if (yych == 'a') goto yy358; - goto yy128; + if (yych == 'L') goto yy347; + if (yych == 'l') goto yy347; + goto yy44; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy359; - if (yych == 'i') goto yy359; - goto yy128; + if (yych == 'L') goto yy348; + if (yych == 'l') goto yy348; + goto yy44; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy360; - if (yych == 'r') goto yy360; - goto yy128; + if (yych == 'T') goto yy349; + if (yych == 't') goto yy349; + goto yy44; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy361; - if (yych <= 'X') goto yy128; - goto yy362; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy361; - } else { - if (yych == 'y') goto yy362; - goto yy128; - } - } + if (yych == 'E') goto yy350; + if (yych == 'e') goto yy350; + goto yy44; yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy364; - if (yych == 's') goto yy364; - goto yy128; + if (yych == 'E') goto yy351; + if (yych == 'e') goto yy351; + goto yy44; yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy365; - if (yych == 'e') goto yy365; - goto yy128; + if (yych == 'T') goto yy352; + if (yych == 't') goto yy352; + goto yy44; yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy367; - if (yych == 'r') goto yy367; - goto yy128; + if (yych == 'E') goto yy354; + if (yych == 'e') goto yy354; + goto yy44; yy267: YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy369; - if (yych == 'i') goto yy369; - goto yy128; -yy268: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(268, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy370; - if (yych == 'r') goto yy370; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1437 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NEW); +} +#line 3755 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy372; - if (yych == 'e') goto yy372; - goto yy128; + if (yych <= 'V') { + if (yych == 'N') goto yy355; + if (yych <= 'U') goto yy44; + goto yy356; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy44; + goto yy355; + } else { + if (yych == 'v') goto yy356; + goto yy44; + } + } yy270: YYDEBUG(270, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy357; + if (yych == 't') goto yy357; + goto yy44; +yy271: YYDEBUG(271, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_XOR_EQUAL); -} -#line 4061 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy358; + if (yych == 'l') goto yy358; + goto yy44; yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy373; - case 'D': - case 'd': goto yy374; - case 'F': - case 'f': goto yy375; - case 'H': - case 'h': goto yy376; - case 'L': - case 'l': goto yy377; - case 'M': - case 'm': goto yy378; - case 'N': - case 'n': goto yy379; - case 'T': - case 't': goto yy380; - default: goto yy128; - } + if (yych == 'U') goto yy359; + if (yych == 'u') goto yy359; + goto yy44; yy273: YYDEBUG(273, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'U') goto yy360; + if (yych == 'u') goto yy360; + goto yy44; +yy274: YYDEBUG(274, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OR_EQUAL); -} -#line 4093 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy361; + if (yych == 't') goto yy361; + goto yy44; yy275: YYDEBUG(275, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy362; + if (yych == 't') goto yy362; + goto yy44; +yy276: YYDEBUG(276, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1647 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_OR); -} -#line 4103 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy363; + if (yych == 'o') goto yy363; + goto yy44; yy277: YYDEBUG(277, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy364; + if (yych == 'i') goto yy364; + goto yy44; +yy278: YYDEBUG(278, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1265 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); + RETURN_TOKEN(T_TRY); } -#line 4113 "Zend/zend_language_scanner.c" -yy279: - YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy381; - if (yych == 'r') goto yy381; - goto yy166; +#line 3832 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy382; - if (yych == 'n') goto yy382; - goto yy166; + if (yych == 'E') goto yy365; + if (yych == 'e') goto yy365; + goto yy44; yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy383; - if (yych == 'o') goto yy383; - goto yy166; -yy282: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(282, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy384; - if (yych == 'u') goto yy384; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1501 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_USE); +} +#line 3851 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy385; - if (yych == 'o') goto yy385; - goto yy166; -yy284: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(284, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy386; - if (yych == 't') goto yy386; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1445 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_VAR); +} +#line 3864 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy387; - if (yych == 'j') goto yy387; - goto yy166; + if (yych == 'L') goto yy366; + if (yych == 'l') goto yy366; + goto yy44; yy286: YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy388; - if (yych == 'a') goto yy388; - goto yy166; -yy287: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(287, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy389; - if (yych == 'r') goto yy389; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1673 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_XOR); +} +#line 3883 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy390; - if (yych == 's') goto yy390; - goto yy166; + if (yych == 'L') goto yy367; + if (yych == 'l') goto yy367; + goto yy44; yy289: YYDEBUG(289, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(290, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1611 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW_EQUAL); -} -#line 4183 "Zend/zend_language_scanner.c" -yy291: - YYDEBUG(291, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(292, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1419 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELLIPSIS); -} -#line 4193 "Zend/zend_language_scanner.c" -yy293: - YYDEBUG(293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy166; - if (yych <= '\n') goto yy391; - goto yy166; - } else { - if (yych <= '\r') goto yy391; - if (yych == ' ') goto yy391; - goto yy166; - } -yy294: - YYDEBUG(294, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(295, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy294; - } - YYDEBUG(296, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1716 "Zend/zend_language_scanner.l" - { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); - } -} -#line 4245 "Zend/zend_language_scanner.c" -yy297: - YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy166; - if (yych >= ':') goto yy166; -yy298: - YYDEBUG(298, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(299, *YYCURSOR); - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy298; - goto yy193; -yy300: - YYDEBUG(300, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(301, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy300; - } - YYDEBUG(302, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1795 "Zend/zend_language_scanner.l" - { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); - } -} -#line 4299 "Zend/zend_language_scanner.c" -yy303: - YYDEBUG(303, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(304, *YYCURSOR); - if (yych <= '\'') { - if (yych <= ' ') { - if (yych == '\t') goto yy303; - if (yych <= 0x1F) goto yy166; - goto yy303; - } else { - if (yych == '"') goto yy393; - if (yych <= '&') goto yy166; - goto yy394; - } + if (yych == 'L') goto yy368; + if (yych == 'l') goto yy368; + goto yy44; +yy290: + YYDEBUG(290, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy369; + if (yych == 'i') goto yy369; + goto yy44; +yy291: + YYDEBUG(291, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'I') goto yy370; + if (yych <= 'T') goto yy44; + goto yy371; } else { - if (yych <= '_') { - if (yych <= '@') goto yy166; - if (yych <= 'Z') goto yy395; - if (yych <= '^') goto yy166; - goto yy395; + if (yych <= 'i') { + if (yych <= 'h') goto yy44; + goto yy370; } else { - if (yych <= '`') goto yy166; - if (yych <= 'z') goto yy395; - if (yych <= 0x7F) goto yy166; - goto yy395; + if (yych == 'u') goto yy371; + goto yy44; } } +yy292: + YYDEBUG(292, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy372; + if (yych == 'a') goto yy372; + goto yy44; +yy293: + YYDEBUG(293, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy373; + if (yych == 'i') goto yy373; + goto yy44; +yy294: + YYDEBUG(294, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy374; + if (yych == 'e') goto yy374; + goto yy44; +yy295: + YYDEBUG(295, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy375; + if (yych == 'a') goto yy375; + goto yy44; +yy296: + YYDEBUG(296, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy376; + if (yych == 'r') goto yy376; + goto yy44; +yy297: + YYDEBUG(297, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy377; + if (yych == 'a') goto yy377; + goto yy82; +yy298: + YYDEBUG(298, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy378; + if (yych == 'a') goto yy378; + goto yy82; +yy299: + YYDEBUG(299, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy379; + if (yych == 'l') goto yy379; + goto yy82; +yy300: + YYDEBUG(300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy380; + if (yych == 'b') goto yy380; + goto yy82; +yy301: + YYDEBUG(301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy381; + if (yych == 'a') goto yy381; + goto yy82; +yy302: + YYDEBUG(302, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy386; + if (yych == 'e') goto yy386; + goto yy383; +yy303: + YYDEBUG(303, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy387; + if (yych == 'e') goto yy387; + goto yy82; +yy304: + YYDEBUG(304, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy388; + if (yych == 'l') goto yy388; + goto yy82; yy305: YYDEBUG(305, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy390; + if (yych == 'i') goto yy390; + goto yy82; +yy306: YYDEBUG(306, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SL_EQUAL); -} -#line 4338 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy391; + if (yych == 'e') goto yy391; + goto yy82; yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(308, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1583 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 4348 "Zend/zend_language_scanner.c" + if (yych <= '\f') { + if (yych <= 0x08) goto yy113; + if (yych <= '\n') goto yy307; + goto yy113; + } else { + if (yych <= '\r') goto yy307; + if (yych == ' ') goto yy307; + goto yy113; + } yy309: YYDEBUG(309, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '"') goto yy82; + if (yych <= '/') goto yy393; + if (yych <= '9') goto yy82; + goto yy393; +yy310: YYDEBUG(310, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_IDENTICAL); -} -#line 4358 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '\'') goto yy82; + if (yych <= '/') goto yy395; + if (yych <= '9') goto yy82; + goto yy395; yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; YYDEBUG(312, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR_EQUAL); -} -#line 4368 "Zend/zend_language_scanner.c" + if (yych <= '@') { + if (yych <= '\f') { + if (yych == '\n') goto yy396; + goto yy82; + } else { + if (yych <= '\r') goto yy398; + if (yych <= '/') goto yy82; + if (yych <= '9') goto yy311; + goto yy82; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy311; + if (yych <= '^') goto yy82; + goto yy311; + } else { + if (yych <= '`') goto yy82; + if (yych <= 'z') goto yy311; + if (yych <= 0x7F) goto yy82; + goto yy311; + } + } yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - goto yy219; + if (yych == 'R') goto yy399; + if (yych == 'r') goto yy399; + goto yy44; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy313; - goto yy219; + if (yych == 'Y') goto yy400; + if (yych == 'y') goto yy400; + goto yy44; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy397; - if (yych == 't') goto yy397; - goto yy128; + if (yych == 'K') goto yy402; + if (yych == 'k') goto yy402; + goto yy44; yy316: YYDEBUG(316, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy404; + if (yych == 'a') goto yy404; + goto yy44; +yy317: YYDEBUG(317, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LOGICAL_AND); + RETURN_TOKEN(T_CASE); } -#line 4396 "Zend/zend_language_scanner.c" -yy318: - YYDEBUG(318, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy398; - if (yych == 'a') goto yy398; - goto yy128; +#line 4101 "Zend/zend_language_scanner.c" yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy303; - goto yy166; + if (yych == 'H') goto yy405; + if (yych == 'h') goto yy405; + goto yy44; yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy399; - if (yych == 'a') goto yy399; - goto yy128; + if (yych == 'S') goto yy407; + if (yych == 's') goto yy407; + goto yy44; yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy400; - if (yych == 'l') goto yy400; - goto yy128; + if (yych == 'E') goto yy409; + if (yych == 'e') goto yy409; + goto yy44; yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy401; - if (yych == 'e') goto yy401; - goto yy128; + if (yych == 'T') goto yy411; + if (yych == 't') goto yy411; + goto yy44; yy323: YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy403; - if (yych == 'c') goto yy403; - goto yy128; + if (yych == 'I') goto yy413; + if (yych == 'i') goto yy413; + goto yy44; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy404; - if (yych == 's') goto yy404; - goto yy128; + if (yych == 'A') goto yy414; + if (yych == 'a') goto yy414; + goto yy44; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy405; - if (yych == 'n') goto yy405; - goto yy128; + if (yych == 'U') goto yy415; + if (yych == 'u') goto yy415; + goto yy44; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy128; - if (yych <= 'S') goto yy406; - goto yy407; - } else { - if (yych <= 'r') goto yy128; - if (yych <= 's') goto yy406; - if (yych <= 't') goto yy407; - goto yy128; + if (yybm[0+yych] & 16) { + goto yy43; } -yy327: YYDEBUG(327, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy408; - if (yych == 'l') goto yy408; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1369 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ECHO); +} +#line 4156 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy409; - if (yych == 'a') goto yy409; - goto yy128; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy329; + if (yych <= '9') goto yy43; + } else { + if (yych == 'I') goto yy416; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'h') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'i') goto yy416; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy329: YYDEBUG(329, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(330, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1229 "Zend/zend_language_scanner.l" +#line 1293 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_ELSE); } -#line 4481 "Zend/zend_language_scanner.c" +#line 4184 "Zend/zend_language_scanner.c" +yy330: + YYDEBUG(330, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy417; + if (yych == 'y') goto yy417; + goto yy44; yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy410; - if (yych == 'o') goto yy410; - goto yy128; + if (yych == 'E') goto yy419; + if (yych == 'e') goto yy419; + goto yy44; yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy412; - if (yych == 'e') goto yy412; - goto yy128; + if (yych == 'O') goto yy420; + if (yych == 'o') goto yy420; + goto yy44; yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy414; - if (yych == 't') goto yy414; - goto yy128; + if (yych == 'F') goto yy421; + if (yych == 'f') goto yy421; + goto yy44; yy334: YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - switch (yych) { - case 'D': - case 'd': goto yy415; - case 'F': - case 'f': goto yy416; - case 'I': - case 'i': goto yy417; - case 'S': - case 's': goto yy418; - case 'W': - case 'w': goto yy419; - default: goto yy128; - } + if (yych == 'W') goto yy423; + if (yych == 'w') goto yy423; + goto yy44; yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy420; - if (yych == 'l') goto yy420; - goto yy128; + if (yych == 'H') goto yy424; + if (yych == 'h') goto yy424; + goto yy44; yy336: YYDEBUG(336, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy422; - if (yych == 't') goto yy422; - goto yy128; -yy337: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(337, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy424; - if (yych == 'e') goto yy424; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1477 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EVAL); +} +#line 4233 "Zend/zend_language_scanner.c" yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy425; - if (yych == 'a') goto yy425; - goto yy128; -yy339: - YYDEBUG(339, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy340; - if (yych <= '9') goto yy127; - } else { - if (yych == 'E') goto yy426; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'e') goto yy426; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + if (yybm[0+yych] & 16) { + goto yy43; } -yy340: - YYDEBUG(340, *YYCURSOR); + YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1299 "Zend/zend_language_scanner.l" +#line 1235 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOR); + RETURN_TOKEN(T_EXIT); } -#line 4567 "Zend/zend_language_scanner.c" +#line 4246 "Zend/zend_language_scanner.c" +yy340: + YYDEBUG(340, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy425; + if (yych == 'n') goto yy425; + goto yy44; yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy427; - if (yych == 'c') goto yy427; - goto yy128; + if (yych == 'L') goto yy426; + if (yych == 'l') goto yy426; + goto yy44; yy342: YYDEBUG(342, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy428; - if (yych == 'b') goto yy428; - goto yy128; + if (yych == 'A') goto yy428; + if (yych == 'a') goto yy428; + goto yy44; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy429; - if (yych == 'o') goto yy429; - goto yy128; + if (yych == 'T') goto yy429; + if (yych == 't') goto yy429; + goto yy44; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy431; - if (yych == 'l') goto yy431; - goto yy128; + if (yych == 'A') goto yy430; + if (yych == 'a') goto yy430; + goto yy44; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy432; - if (yych == 'l') goto yy432; - goto yy128; -yy346: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(346, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy433; - if (yych == 't') goto yy433; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1365 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GOTO); +} +#line 4289 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy434; - if (yych == 'e') goto yy434; - goto yy128; + if (yych == 'E') goto yy431; + if (yych == 'e') goto yy431; + goto yy44; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy435; - if (yych == 'e') goto yy435; - goto yy128; + if (yych == 'U') goto yy432; + if (yych == 'u') goto yy432; + goto yy44; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy436; - if (yych == 't') goto yy436; - goto yy128; + if (yych <= 'E') { + if (yych == 'A') goto yy433; + if (yych <= 'D') goto yy44; + goto yy434; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy44; + goto yy433; + } else { + if (yych == 'e') goto yy434; + goto yy44; + } + } yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy438; - if (yych == 'e') goto yy438; - goto yy128; + if (yych == 'R') goto yy435; + if (yych == 'r') goto yy435; + goto yy44; yy351: YYDEBUG(351, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy436; + if (yych == 't') goto yy436; + goto yy44; +yy352: YYDEBUG(352, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(353, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1427 "Zend/zend_language_scanner.l" +#line 1557 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NEW); + RETURN_TOKEN(T_LIST); } -#line 4640 "Zend/zend_language_scanner.c" -yy353: - YYDEBUG(353, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy439; - if (yych <= 'U') goto yy128; - goto yy440; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy128; - goto yy439; - } else { - if (yych == 'v') goto yy440; - goto yy128; - } - } +#line 4342 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy441; - if (yych == 't') goto yy441; - goto yy128; + if (yych == 'S') goto yy438; + if (yych == 's') goto yy438; + goto yy44; yy355: YYDEBUG(355, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy442; - if (yych == 'l') goto yy442; - goto yy128; + if (yych == 'T') goto yy439; + if (yych == 't') goto yy439; + goto yy44; yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy443; - if (yych == 'u') goto yy443; - goto yy128; + if (yych == 'A') goto yy441; + if (yych == 'a') goto yy441; + goto yy44; yy357: YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy444; - if (yych == 'u') goto yy444; - goto yy128; + if (yych == 'E') goto yy442; + if (yych == 'e') goto yy442; + goto yy44; yy358: YYDEBUG(358, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy445; - if (yych == 't') goto yy445; - goto yy128; + if (yych == 'I') goto yy443; + if (yych == 'i') goto yy443; + goto yy44; yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy446; - if (yych == 't') goto yy446; - goto yy128; + if (yych == 'I') goto yy444; + if (yych == 'i') goto yy444; + goto yy44; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy447; - if (yych == 'o') goto yy447; - goto yy128; + if (yych == 'R') goto yy445; + if (yych == 'r') goto yy445; + goto yy44; yy361: YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy448; - if (yych == 'i') goto yy448; - goto yy128; + if (yych == 'I') goto yy446; + if (yych == 'i') goto yy446; + goto yy44; yy362: YYDEBUG(362, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy447; + if (yych == 'c') goto yy447; + goto yy44; +yy363: YYDEBUG(363, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1255 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRY); -} -#line 4717 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'W') goto yy448; + if (yych == 'w') goto yy448; + goto yy44; yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy449; - if (yych == 'e') goto yy449; - goto yy128; + if (yych == 'T') goto yy450; + if (yych == 't') goto yy450; + goto yy44; yy365: YYDEBUG(365, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy452; + if (yych == 't') goto yy452; + goto yy44; +yy366: YYDEBUG(366, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 4736 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy454; + if (yych == 'e') goto yy454; + goto yy44; yy367: YYDEBUG(367, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy456; + if (yych == 'd') goto yy456; + goto yy44; +yy368: YYDEBUG(368, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_VAR); -} -#line 4749 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy458; + if (yych == 'a') goto yy458; + goto yy44; yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy450; - if (yych == 'l') goto yy450; - goto yy128; + if (yych == 'R') goto yy459; + if (yych == 'r') goto yy459; + goto yy44; yy370: YYDEBUG(370, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy460; + if (yych == 'l') goto yy460; + goto yy44; +yy371: YYDEBUG(371, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 4768 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy461; + if (yych == 'n') goto yy461; + goto yy44; yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy451; - if (yych == 'l') goto yy451; - goto yy128; + if (yych == 'L') goto yy462; + if (yych == 'l') goto yy462; + goto yy44; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy452; - if (yych == 'l') goto yy452; - goto yy128; + if (yych == 'N') goto yy463; + if (yych == 'n') goto yy463; + goto yy44; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy453; - if (yych == 'i') goto yy453; - goto yy128; + if (yych == 'T') goto yy464; + if (yych == 't') goto yy464; + goto yy44; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy454; - if (yych <= 'T') goto yy128; - goto yy455; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy128; - goto yy454; - } else { - if (yych == 'u') goto yy455; - goto yy128; - } - } + if (yych == 'M') goto yy465; + if (yych == 'm') goto yy465; + goto yy44; yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy456; - if (yych == 'a') goto yy456; - goto yy128; + if (yych == 'A') goto yy466; + if (yych == 'a') goto yy466; + goto yy44; yy377: YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy457; - if (yych == 'i') goto yy457; - goto yy128; + if (yych == 'Y') goto yy467; + if (yych == 'y') goto yy467; + goto yy82; yy378: YYDEBUG(378, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy458; - if (yych == 'e') goto yy458; - goto yy128; + if (yych == 'R') goto yy469; + if (yych == 'r') goto yy469; + goto yy82; yy379: YYDEBUG(379, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy459; - if (yych == 'a') goto yy459; - goto yy128; + if (yych == 'E') goto yy474; + if (yych == 'e') goto yy474; + goto yy471; yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy460; - if (yych == 'r') goto yy460; - goto yy128; + if (yych == 'L') goto yy475; + if (yych == 'l') goto yy475; + goto yy82; yy381: YYDEBUG(381, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy461; - if (yych == 'a') goto yy461; - goto yy166; + if (yych == 'T') goto yy388; + if (yych == 't') goto yy388; + goto yy82; yy382: YYDEBUG(382, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy462; - if (yych == 'a') goto yy462; - goto yy166; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy383: YYDEBUG(383, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy463; - if (yych == 'l') goto yy463; - goto yy166; -yy384: + if (yych <= 0x1F) { + if (yych == '\t') goto yy382; + goto yy82; + } else { + if (yych <= ' ') goto yy382; + if (yych != ')') goto yy82; + } YYDEBUG(384, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy464; - if (yych == 'b') goto yy464; - goto yy166; -yy385: + ++YYCURSOR; YYDEBUG(385, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy465; - if (yych == 'a') goto yy465; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1449 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INT_CAST); +} +#line 4533 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy470; - if (yych == 'e') goto yy470; - goto yy467; + if (yych == 'G') goto yy476; + if (yych == 'g') goto yy476; + goto yy82; yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy471; - if (yych == 'e') goto yy471; - goto yy166; + if (yych == 'C') goto yy477; + if (yych == 'c') goto yy477; + goto yy82; yy388: YYDEBUG(388, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy472; - if (yych == 'l') goto yy472; - goto yy166; -yy389: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(389, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy474; - if (yych == 'i') goto yy474; - goto yy166; + if (yych <= 0x1F) { + if (yych == '\t') goto yy388; + goto yy82; + } else { + if (yych <= ' ') goto yy388; + if (yych == ')') goto yy478; + goto yy82; + } yy390: YYDEBUG(390, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy475; - if (yych == 'e') goto yy475; - goto yy166; + if (yych == 'N') goto yy480; + if (yych == 'n') goto yy480; + goto yy82; yy391: YYDEBUG(391, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy481; + if (yych == 't') goto yy481; + goto yy82; +yy392: + YYDEBUG(392, *YYCURSOR); ++YYCURSOR; - YYFILL(1); + YYFILL(3); yych = *YYCURSOR; - YYDEBUG(392, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy197; - if (yych <= '\n') goto yy391; - goto yy197; +yy393: + YYDEBUG(393, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '"') goto yy483; + goto yy82; + } else { + if (yych <= '9') goto yy392; + if (yych <= '@') goto yy82; + goto yy392; + } } else { - if (yych <= '\r') goto yy391; - if (yych == ' ') goto yy391; - goto yy197; + if (yych <= '`') { + if (yych == '_') goto yy392; + goto yy82; + } else { + if (yych <= 'z') goto yy392; + if (yych <= 0x7F) goto yy82; + goto yy392; + } } -yy393: - YYDEBUG(393, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy166; - if (yych <= '/') goto yy477; - if (yych <= '9') goto yy166; - goto yy477; yy394: YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy166; - if (yych <= '/') goto yy479; - if (yych <= '9') goto yy166; - goto yy479; -yy395: - YYDEBUG(395, *YYCURSOR); ++YYCURSOR; - YYFILL(2); + YYFILL(3); yych = *YYCURSOR; - YYDEBUG(396, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy480; - goto yy166; +yy395: + YYDEBUG(395, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '\'') goto yy483; + goto yy82; } else { - if (yych <= '\r') goto yy482; - if (yych <= '/') goto yy166; - if (yych <= '9') goto yy395; - goto yy166; + if (yych <= '9') goto yy394; + if (yych <= '@') goto yy82; + goto yy394; } } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy395; - if (yych <= '^') goto yy166; - goto yy395; + if (yych <= '`') { + if (yych == '_') goto yy394; + goto yy82; } else { - if (yych <= '`') goto yy166; - if (yych <= 'z') goto yy395; - if (yych <= 0x7F) goto yy166; - goto yy395; + if (yych <= 'z') goto yy394; + if (yych <= 0x7F) goto yy82; + goto yy394; } } +yy396: + YYDEBUG(396, *YYCURSOR); + ++YYCURSOR; yy397: YYDEBUG(397, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy483; - if (yych == 'r') goto yy483; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2242 "Zend/zend_language_scanner.l" + { + char *s; + 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); + s = yytext+bprefix+3; + while ((*s == ' ') || (*s == '\t')) { + s++; + heredoc_label->length--; + } + + if (*s == '\'') { + s++; + heredoc_label->length -= 2; + is_heredoc = 0; + + BEGIN(ST_NOWDOC); + } else { + if (*s == '"') { + s++; + heredoc_label->length -= 2; + } + + BEGIN(ST_HEREDOC); + } + + heredoc_label->label = estrndup(s, heredoc_label->length); + heredoc_label->indentation = 0; + saved_cursor = YYCURSOR; + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + /* Check for ending label on the next line */ + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + YYCURSOR = saved_cursor; + heredoc_label->indentation = indentation; + + BEGIN(ST_END_HEREDOC); + RETURN_TOKEN(T_START_HEREDOC); + } + } + + YYCURSOR = saved_cursor; + + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { + zend_lex_state current_state; + int heredoc_nesting_level = 1; + int first_token = 0; + + zend_save_lexical_state(¤t_state); + + SCNG(heredoc_scan_ahead) = 1; + SCNG(heredoc_indentation) = 0; + SCNG(heredoc_indentation_uses_spaces) = 0; + LANG_SCNG(on_event) = NULL; + + zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + + while (heredoc_nesting_level) { + zval zv; + int retval; + + ZVAL_UNDEF(&zv); + retval = lex_scan(&zv, NULL); + zval_dtor(&zv); + + if (EG(exception)) { + zend_clear_exception(); + break; + } + + if (!first_token) { + first_token = retval; + } + + switch (retval) { + case T_START_HEREDOC: + ++heredoc_nesting_level; + break; + case T_END_HEREDOC: + --heredoc_nesting_level; + break; + case END: + heredoc_nesting_level = 0; + } + } + + if (first_token == T_VARIABLE && SCNG(heredoc_indentation)) { + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); + } + + heredoc_label->indentation = SCNG(heredoc_indentation); + heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); + + zend_restore_lexical_state(¤t_state); + SCNG(heredoc_scan_ahead) = 0; + CG(increment_lineno) = 0; + } + + RETURN_TOKEN(T_START_HEREDOC); +} +#line 4756 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy484; - if (yych == 'y') goto yy484; - goto yy128; + if (yych == '\n') goto yy396; + goto yy397; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy486; - if (yych == 'k') goto yy486; - goto yy128; + if (yych == 'A') goto yy484; + if (yych == 'a') goto yy484; + goto yy44; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy488; - if (yych == 'a') goto yy488; - goto yy128; -yy401: - YYDEBUG(401, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(402, *YYCURSOR); + YYDEBUG(401, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1339 "Zend/zend_language_scanner.l" +#line 1561 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CASE); + RETURN_TOKEN(T_ARRAY); } -#line 4986 "Zend/zend_language_scanner.c" -yy403: - YYDEBUG(403, *YYCURSOR); +#line 4780 "Zend/zend_language_scanner.c" +yy402: + YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy489; - if (yych == 'h') goto yy489; - goto yy128; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(403, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1357 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BREAK); +} +#line 4793 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy491; - if (yych == 's') goto yy491; - goto yy128; + if (yych == 'B') goto yy485; + if (yych == 'b') goto yy485; + goto yy44; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy493; - if (yych == 'e') goto yy493; - goto yy128; -yy406: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(406, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy495; - if (yych == 't') goto yy495; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1269 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CATCH); +} +#line 4812 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy497; - if (yych == 'i') goto yy497; - goto yy128; -yy408: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(408, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy498; - if (yych == 'a') goto yy498; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1377 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS); +} +#line 4825 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy499; - if (yych == 'u') goto yy499; - goto yy128; -yy410: - YYDEBUG(410, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(411, *YYCURSOR); + YYDEBUG(410, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1359 "Zend/zend_language_scanner.l" +#line 1441 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ECHO); + RETURN_TOKEN(T_CLONE); } -#line 5041 "Zend/zend_language_scanner.c" -yy412: - YYDEBUG(412, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy413; - if (yych <= '9') goto yy127; - } else { - if (yych == 'I') goto yy500; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'h') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'i') goto yy500; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } +#line 4838 "Zend/zend_language_scanner.c" +yy411: + YYDEBUG(411, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } -yy413: - YYDEBUG(413, *YYCURSOR); + YYDEBUG(412, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1283 "Zend/zend_language_scanner.l" +#line 1247 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + RETURN_TOKEN(T_CONST); } -#line 5069 "Zend/zend_language_scanner.c" +#line 4851 "Zend/zend_language_scanner.c" +yy413: + YYDEBUG(413, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy486; + if (yych == 'n') goto yy486; + goto yy44; yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy501; - if (yych == 'y') goto yy501; - goto yy128; + if (yych == 'R') goto yy487; + if (yych == 'r') goto yy487; + goto yy44; yy415: YYDEBUG(415, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy503; - if (yych == 'e') goto yy503; - goto yy128; + if (yych == 'L') goto yy488; + if (yych == 'l') goto yy488; + goto yy44; yy416: YYDEBUG(416, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy504; - if (yych == 'o') goto yy504; - goto yy128; + if (yych == 'F') goto yy489; + if (yych == 'f') goto yy489; + goto yy44; yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy505; - if (yych == 'f') goto yy505; - goto yy128; -yy418: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(418, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy507; - if (yych == 'w') goto yy507; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1517 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EMPTY); +} +#line 4888 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy508; - if (yych == 'h') goto yy508; - goto yy128; + if (yych == 'C') goto yy491; + if (yych == 'c') goto yy491; + goto yy44; yy420: YYDEBUG(420, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'R') goto yy492; + if (yych == 'r') goto yy492; + goto yy44; +yy421: YYDEBUG(421, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1467 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EVAL); -} -#line 5118 "Zend/zend_language_scanner.c" -yy422: - YYDEBUG(422, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(423, *YYCURSOR); + YYDEBUG(422, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1225 "Zend/zend_language_scanner.l" +#line 1289 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_ENDIF); } -#line 5131 "Zend/zend_language_scanner.c" +#line 4913 "Zend/zend_language_scanner.c" +yy423: + YYDEBUG(423, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy494; + if (yych == 'i') goto yy494; + goto yy44; yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy509; - if (yych == 'n') goto yy509; - goto yy128; + if (yych == 'I') goto yy495; + if (yych == 'i') goto yy495; + goto yy44; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy510; - if (yych == 'l') goto yy510; - goto yy128; + if (yych == 'D') goto yy496; + if (yych == 'd') goto yy496; + goto yy44; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy512; - if (yych == 'a') goto yy512; - goto yy128; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy427; + if (yych <= '9') goto yy43; + } else { + if (yych == 'L') goto yy497; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'l') goto yy497; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy427: YYDEBUG(427, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy513; - if (yych == 't') goto yy513; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1533 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINAL); +} +#line 4959 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy514; - if (yych == 'a') goto yy514; - goto yy128; + if (yych == 'C') goto yy498; + if (yych == 'c') goto yy498; + goto yy44; yy429: YYDEBUG(429, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy499; + if (yych == 'i') goto yy499; + goto yy44; +yy430: YYDEBUG(430, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1355 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 5174 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy500; + if (yych == 'l') goto yy500; + goto yy44; yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy515; - if (yych == 'e') goto yy515; - goto yy128; + if (yych == 'M') goto yy502; + if (yych == 'm') goto yy502; + goto yy44; yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy516; - if (yych == 'u') goto yy516; - goto yy128; + if (yych == 'D') goto yy503; + if (yych == 'd') goto yy503; + goto yy44; yy433: YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy517; - if (yych <= 'D') goto yy128; - goto yy518; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy128; - goto yy517; - } else { - if (yych == 'e') goto yy518; - goto yy128; - } - } + if (yych == 'N') goto yy504; + if (yych == 'n') goto yy504; + goto yy44; yy434: YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy519; - if (yych == 'r') goto yy519; - goto yy128; + if (yych == 'A') goto yy505; + if (yych == 'a') goto yy505; + goto yy44; yy435: YYDEBUG(435, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy520; - if (yych == 't') goto yy520; - goto yy128; + if (yych == 'F') goto yy506; + if (yych == 'f') goto yy506; + goto yy44; yy436: YYDEBUG(436, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1547 "Zend/zend_language_scanner.l" +#line 1513 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LIST); + RETURN_TOKEN(T_ISSET); } -#line 5227 "Zend/zend_language_scanner.c" +#line 5020 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy522; - if (yych == 's') goto yy522; - goto yy128; + if (yych == 'P') goto yy507; + if (yych == 'p') goto yy507; + goto yy44; yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy523; - if (yych == 't') goto yy523; - goto yy128; -yy440: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(440, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy525; - if (yych == 'a') goto yy525; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1373 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRINT); +} +#line 5039 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy526; - if (yych == 'e') goto yy526; - goto yy128; + if (yych == 'T') goto yy508; + if (yych == 't') goto yy508; + goto yy44; yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy527; - if (yych == 'i') goto yy527; - goto yy128; + if (yych == 'C') goto yy509; + if (yych == 'c') goto yy509; + goto yy44; yy443: YYDEBUG(443, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy528; - if (yych == 'i') goto yy528; - goto yy128; + if (yych == 'C') goto yy510; + if (yych == 'c') goto yy510; + goto yy44; yy444: YYDEBUG(444, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy529; - if (yych == 'r') goto yy529; - goto yy128; + if (yych == 'R') goto yy512; + if (yych == 'r') goto yy512; + goto yy44; yy445: YYDEBUG(445, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy530; - if (yych == 'i') goto yy530; - goto yy128; + if (yych == 'N') goto yy513; + if (yych == 'n') goto yy513; + goto yy44; yy446: YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy531; - if (yych == 'c') goto yy531; - goto yy128; + if (yych == 'C') goto yy515; + if (yych == 'c') goto yy515; + goto yy44; yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy532; - if (yych == 'w') goto yy532; - goto yy128; + if (yych == 'H') goto yy517; + if (yych == 'h') goto yy517; + goto yy44; yy448: YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy534; - if (yych == 't') goto yy534; - goto yy128; -yy449: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(449, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy536; - if (yych == 't') goto yy536; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1277 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_THROW); +} +#line 5094 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy538; - if (yych == 'e') goto yy538; - goto yy128; -yy451: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(451, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy540; - if (yych == 'd') goto yy540; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1385 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT); +} +#line 5107 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy542; - if (yych == 'a') goto yy542; - goto yy128; -yy453: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(453, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy543; - if (yych == 'r') goto yy543; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1549 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET); +} +#line 5120 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy544; - if (yych == 'l') goto yy544; - goto yy128; -yy455: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(455, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy545; - if (yych == 'n') goto yy545; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1297 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_WHILE); +} +#line 5133 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy546; - if (yych == 'l') goto yy546; - goto yy128; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy43; + } + if (yych <= '\f') { + if (yych <= 0x08) goto yy457; + if (yych <= '\n') goto yy519; + } else { + if (yych <= '\r') goto yy519; + if (yych == ' ') goto yy519; + } yy457: YYDEBUG(457, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy547; - if (yych == 'n') goto yy547; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1261 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_YIELD); +} +#line 5155 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy548; - if (yych == 't') goto yy548; - goto yy128; + if (yych == 'S') goto yy521; + if (yych == 's') goto yy521; + goto yy44; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy549; - if (yych == 'm') goto yy549; - goto yy128; + if (yych == '_') goto yy522; + goto yy44; yy460: YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy550; - if (yych == 'a') goto yy550; - goto yy128; + if (yych == 'E') goto yy523; + if (yych == 'e') goto yy523; + goto yy44; yy461: YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy551; - if (yych == 'y') goto yy551; - goto yy166; + if (yych == 'C') goto yy524; + if (yych == 'c') goto yy524; + goto yy44; yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy553; - if (yych == 'r') goto yy553; - goto yy166; + if (yych == 'T') goto yy525; + if (yych == 't') goto yy525; + goto yy44; yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy558; - if (yych == 'e') goto yy558; - goto yy555; + if (yych == 'E') goto yy526; + if (yych == 'e') goto yy526; + goto yy44; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy559; - if (yych == 'l') goto yy559; - goto yy166; + if (yych == 'H') goto yy527; + if (yych == 'h') goto yy527; + goto yy44; yy465: YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy472; - if (yych == 't') goto yy472; - goto yy166; + if (yych == 'E') goto yy528; + if (yych == 'e') goto yy528; + goto yy44; yy466: YYDEBUG(466, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy529; + if (yych == 'i') goto yy529; + goto yy44; +yy467: + YYDEBUG(467, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy467: - YYDEBUG(467, *YYCURSOR); + YYDEBUG(468, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy466; - goto yy166; + if (yych == '\t') goto yy467; + goto yy82; } else { - if (yych <= ' ') goto yy466; - if (yych != ')') goto yy166; + if (yych <= ' ') goto yy467; + if (yych == ')') goto yy530; + goto yy82; } - YYDEBUG(468, *YYCURSOR); - ++YYCURSOR; +yy469: YYDEBUG(469, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 5418 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'Y') goto yy532; + if (yych == 'y') goto yy532; + goto yy82; yy470: YYDEBUG(470, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy560; - if (yych == 'g') goto yy560; - goto yy166; -yy471: - YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy561; - if (yych == 'c') goto yy561; - goto yy166; -yy472: - YYDEBUG(472, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(473, *YYCURSOR); +yy471: + YYDEBUG(471, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy472; - goto yy166; + if (yych == '\t') goto yy470; + goto yy82; } else { - if (yych <= ' ') goto yy472; - if (yych == ')') goto yy562; - goto yy166; + if (yych <= ' ') goto yy470; + if (yych != ')') goto yy82; } + YYDEBUG(472, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(473, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1469 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOL_CAST); +} +#line 5251 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy564; - if (yych == 'n') goto yy564; - goto yy166; + if (yych == 'A') goto yy534; + if (yych == 'a') goto yy534; + goto yy82; yy475: YYDEBUG(475, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy565; - if (yych == 't') goto yy565; - goto yy166; + if (yych == 'E') goto yy388; + if (yych == 'e') goto yy388; + goto yy82; yy476: YYDEBUG(476, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy535; + if (yych == 'e') goto yy535; + goto yy82; yy477: YYDEBUG(477, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '"') goto yy567; - goto yy166; - } else { - if (yych <= '9') goto yy476; - if (yych <= '@') goto yy166; - goto yy476; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy476; - goto yy166; - } else { - if (yych <= 'z') goto yy476; - if (yych <= 0x7F) goto yy166; - goto yy476; - } - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy536; + if (yych == 't') goto yy536; + goto yy82; yy478: YYDEBUG(478, *YYCURSOR); ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy479: YYDEBUG(479, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy567; - goto yy166; - } else { - if (yych <= '9') goto yy478; - if (yych <= '@') goto yy166; - goto yy478; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy478; - goto yy166; - } else { - if (yych <= 'z') goto yy478; - if (yych <= 0x7F) goto yy166; - goto yy478; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1453 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_CAST); +} +#line 5285 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'G') goto yy532; + if (yych == 'g') goto yy532; + goto yy82; yy481: YYDEBUG(481, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2232 "Zend/zend_language_scanner.l" - { - char *s; - 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); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - heredoc_label->length--; - } - - if (*s == '\'') { - s++; - heredoc_label->length -= 2; - is_heredoc = 0; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - heredoc_label->length -= 2; - } - - BEGIN(ST_HEREDOC); - } - - heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = 0; - saved_cursor = YYCURSOR; - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } - - /* Check for ending label on the next line */ - if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - YYCURSOR = saved_cursor; - heredoc_label->indentation = indentation; - - BEGIN(ST_END_HEREDOC); - RETURN_TOKEN(T_START_HEREDOC); - } - } - - YYCURSOR = saved_cursor; - - if (is_heredoc && !SCNG(heredoc_scan_ahead)) { - zend_lex_state current_state; - int heredoc_nesting_level = 1; - - zend_save_lexical_state(¤t_state); - - SCNG(heredoc_scan_ahead) = 1; - SCNG(heredoc_indentation) = 0; - SCNG(heredoc_indentation_uses_spaces) = 0; - LANG_SCNG(on_event) = NULL; - - zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - - while (heredoc_nesting_level) { - zval zv; - int retval; - - ZVAL_UNDEF(&zv); - retval = lex_scan(&zv, NULL); - zval_dtor(&zv); - - if (EG(exception)) { - zend_clear_exception(); - break; - } - - switch (retval) { - case T_START_HEREDOC: - ++heredoc_nesting_level; - break; - case T_END_HEREDOC: - --heredoc_nesting_level; - break; - case END: - heredoc_nesting_level = 0; - } - } - - heredoc_label->indentation = SCNG(heredoc_indentation); - heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); - - zend_restore_lexical_state(¤t_state); - SCNG(heredoc_scan_ahead) = 0; - CG(increment_lineno) = 0; - } - - RETURN_TOKEN(T_START_HEREDOC); -} -#line 5632 "Zend/zend_language_scanner.c" -yy482: + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(482, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy480; - goto yy481; + if (yych <= 0x1F) { + if (yych == '\t') goto yy481; + goto yy82; + } else { + if (yych <= ' ') goto yy481; + if (yych == ')') goto yy538; + goto yy82; + } yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy568; - if (yych == 'a') goto yy568; - goto yy128; + if (yych == '\n') goto yy396; + if (yych == '\r') goto yy398; + goto yy82; yy484: YYDEBUG(484, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy540; + if (yych == 'c') goto yy540; + goto yy44; +yy485: YYDEBUG(485, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY); -} -#line 5656 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy541; + if (yych == 'l') goto yy541; + goto yy44; yy486: YYDEBUG(486, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'U') goto yy542; + if (yych == 'u') goto yy542; + goto yy44; +yy487: YYDEBUG(487, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1347 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BREAK); -} -#line 5669 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy543; + if (yych == 'e') goto yy543; + goto yy44; yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy569; - if (yych == 'b') goto yy569; - goto yy128; + if (yych == 'T') goto yy545; + if (yych == 't') goto yy545; + goto yy44; yy489: YYDEBUG(489, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1259 "Zend/zend_language_scanner.l" +#line 1285 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CATCH); + RETURN_TOKEN(T_ELSEIF); } -#line 5688 "Zend/zend_language_scanner.c" +#line 5354 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy547; + if (yych == 'l') goto yy547; + goto yy44; +yy492: YYDEBUG(492, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS); -} -#line 5701 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy493; + if (yych <= '9') goto yy43; + } else { + if (yych == 'E') goto yy548; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy43; + } else { + if (yych <= 'e') goto yy548; + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy493: YYDEBUG(493, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(494, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" +#line 1313 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLONE); + RETURN_TOKEN(T_ENDFOR); } -#line 5714 "Zend/zend_language_scanner.c" +#line 5388 "Zend/zend_language_scanner.c" +yy494: + YYDEBUG(494, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy549; + if (yych == 't') goto yy549; + goto yy44; yy495: YYDEBUG(495, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy550; + if (yych == 'l') goto yy550; + goto yy44; +yy496: YYDEBUG(496, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1237 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONST); -} -#line 5727 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy551; + if (yych == 's') goto yy551; + goto yy44; yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy570; - if (yych == 'n') goto yy570; - goto yy128; + if (yych == 'Y') goto yy553; + if (yych == 'y') goto yy553; + goto yy44; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy571; - if (yych == 'r') goto yy571; - goto yy128; + if (yych == 'H') goto yy555; + if (yych == 'h') goto yy555; + goto yy44; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy572; - if (yych == 'l') goto yy572; - goto yy128; + if (yych == 'O') goto yy557; + if (yych == 'o') goto yy557; + goto yy44; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy573; - if (yych == 'f') goto yy573; - goto yy128; -yy501: - YYDEBUG(501, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(502, *YYCURSOR); + YYDEBUG(501, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1507 "Zend/zend_language_scanner.l" +#line 1509 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EMPTY); + RETURN_TOKEN(T_GLOBAL); } -#line 5764 "Zend/zend_language_scanner.c" +#line 5437 "Zend/zend_language_scanner.c" +yy502: + YYDEBUG(502, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy558; + if (yych == 'e') goto yy558; + goto yy44; yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy575; - if (yych == 'c') goto yy575; - goto yy128; + if (yych == 'E') goto yy559; + if (yych == 'e') goto yy559; + goto yy44; yy504: YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy576; - if (yych == 'r') goto yy576; - goto yy128; + if (yych == 'C') goto yy561; + if (yych == 'c') goto yy561; + goto yy44; yy505: YYDEBUG(505, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy562; + if (yych == 'd') goto yy562; + goto yy44; +yy506: YYDEBUG(506, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1279 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDIF); -} -#line 5789 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy563; + if (yych == 'a') goto yy563; + goto yy44; yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy578; - if (yych == 'i') goto yy578; - goto yy128; + if (yych == 'A') goto yy564; + if (yych == 'a') goto yy564; + goto yy44; yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy579; - if (yych == 'i') goto yy579; - goto yy128; + if (yych == 'E') goto yy565; + if (yych == 'e') goto yy565; + goto yy44; yy509: YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy580; - if (yych == 'd') goto yy580; - goto yy128; + if (yych == 'T') goto yy567; + if (yych == 't') goto yy567; + goto yy44; yy510: YYDEBUG(510, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy511; - if (yych <= '9') goto yy127; - } else { - if (yych == 'L') goto yy581; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'k') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'l') goto yy581; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } -yy511: YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1523 "Zend/zend_language_scanner.l" +#line 1545 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FINAL); + RETURN_TOKEN(T_PUBLIC); } -#line 5835 "Zend/zend_language_scanner.c" +#line 5498 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy582; - if (yych == 'c') goto yy582; - goto yy128; + if (yych == 'E') goto yy568; + if (yych == 'e') goto yy568; + goto yy44; yy513: YYDEBUG(513, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy583; - if (yych == 'i') goto yy583; - goto yy128; -yy514: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(514, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy584; - if (yych == 'l') goto yy584; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1251 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_RETURN); +} +#line 5517 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy586; - if (yych == 'm') goto yy586; - goto yy128; -yy516: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(516, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy587; - if (yych == 'd') goto yy587; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1525 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STATIC); +} +#line 5530 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy588; - if (yych == 'n') goto yy588; - goto yy128; -yy518: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(518, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy589; - if (yych == 'a') goto yy589; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1341 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SWITCH); +} +#line 5543 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy590; - if (yych == 'f') goto yy590; - goto yy128; -yy520: - YYDEBUG(520, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(520, *YYCURSOR); + if (yych <= 0x1F) { + if (yych <= '\n') { + if (yych <= 0x08) goto yy82; + goto yy519; + } else { + if (yych == '\r') goto yy519; + goto yy82; + } + } else { + if (yych <= 'F') { + if (yych <= ' ') goto yy519; + if (yych <= 'E') goto yy82; + goto yy570; + } else { + if (yych == 'f') goto yy570; + goto yy82; + } } +yy521: YYDEBUG(521, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1503 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ISSET); -} -#line 5896 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy571; + if (yych == 's') goto yy571; + goto yy44; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy591; - if (yych == 'p') goto yy591; - goto yy128; + if (yych == '_') goto yy572; + goto yy44; yy523: YYDEBUG(523, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == '_') goto yy574; + goto yy44; +yy524: YYDEBUG(524, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1363 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5915 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy575; + if (yych == 't') goto yy575; + goto yy44; yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy592; - if (yych == 't') goto yy592; - goto yy128; + if (yych == '_') goto yy576; + goto yy44; yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy593; - if (yych == 'c') goto yy593; - goto yy128; + if (yych == '_') goto yy577; + goto yy44; yy527: YYDEBUG(527, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy594; - if (yych == 'c') goto yy594; - goto yy128; + if (yych == 'O') goto yy578; + if (yych == 'o') goto yy578; + goto yy44; yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy596; - if (yych == 'r') goto yy596; - goto yy128; + if (yych == 'S') goto yy579; + if (yych == 's') goto yy579; + goto yy44; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy597; - if (yych == 'n') goto yy597; - goto yy128; + if (yych == 'T') goto yy580; + if (yych == 't') goto yy580; + goto yy44; yy530: YYDEBUG(530, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy599; - if (yych == 'c') goto yy599; - goto yy128; -yy531: + ++YYCURSOR; YYDEBUG(531, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy601; - if (yych == 'h') goto yy601; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1461 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY_CAST); +} +#line 5627 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(533, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1267 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_THROW); -} -#line 5970 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych == '\t') goto yy532; + goto yy82; + } else { + if (yych <= ' ') goto yy532; + if (yych == ')') goto yy581; + goto yy82; + } yy534: YYDEBUG(534, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'N') goto yy470; + if (yych == 'n') goto yy470; + goto yy82; +yy535: YYDEBUG(535, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1375 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT); -} -#line 5983 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy382; + if (yych == 'r') goto yy382; + goto yy82; yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(537, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1539 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 5996 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych == '\t') goto yy536; + goto yy82; + } else { + if (yych <= ' ') goto yy536; + if (yych == ')') goto yy583; + goto yy82; + } yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1287 "Zend/zend_language_scanner.l" +#line 1473 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_WHILE); + RETURN_TOKEN(T_UNSET_CAST); } -#line 6009 "Zend/zend_language_scanner.c" +#line 5677 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy127; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy541; - if (yych <= '\n') goto yy603; - } else { - if (yych <= '\r') goto yy603; - if (yych == ' ') goto yy603; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy585; + if (yych == 't') goto yy585; + goto yy44; yy541: YYDEBUG(541, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1251 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_YIELD); -} -#line 6031 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy587; + if (yych == 'e') goto yy587; + goto yy44; yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy605; - if (yych == 's') goto yy605; - goto yy128; + if (yych == 'E') goto yy589; + if (yych == 'e') goto yy589; + goto yy44; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy606; - goto yy128; -yy544: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(544, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy607; - if (yych == 'e') goto yy607; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1325 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DECLARE); +} +#line 5708 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy608; - if (yych == 'c') goto yy608; - goto yy128; -yy546: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(546, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy609; - if (yych == 't') goto yy609; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1353 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEFAULT); +} +#line 5721 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy610; - if (yych == 'e') goto yy610; - goto yy128; + if (yych == 'A') goto yy591; + if (yych == 'a') goto yy591; + goto yy44; yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy611; - if (yych == 'h') goto yy611; - goto yy128; + if (yych == 'A') goto yy592; + if (yych == 'a') goto yy592; + goto yy44; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy612; - if (yych == 'e') goto yy612; - goto yy128; + if (yych == 'C') goto yy593; + if (yych == 'c') goto yy593; + goto yy44; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy613; - if (yych == 'i') goto yy613; - goto yy128; + if (yych == 'E') goto yy594; + if (yych == 'e') goto yy594; + goto yy44; yy551: YYDEBUG(551, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(552, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy551; - goto yy166; - } else { - if (yych <= ' ') goto yy551; - if (yych == ')') goto yy614; - goto yy166; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(552, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1389 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXTENDS); +} +#line 5758 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy616; - if (yych == 'y') goto yy616; - goto yy166; -yy554: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(554, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1273 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINALLY); +} +#line 5771 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy554; - goto yy166; - } else { - if (yych <= ' ') goto yy554; - if (yych != ')') goto yy166; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(556, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1317 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOL_CAST); + RETURN_TOKEN(T_FOREACH); } -#line 6127 "Zend/zend_language_scanner.c" +#line 5784 "Zend/zend_language_scanner.c" +yy557: + YYDEBUG(557, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy596; + if (yych == 'n') goto yy596; + goto yy44; yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy618; - if (yych == 'a') goto yy618; - goto yy166; + if (yych == 'N') goto yy598; + if (yych == 'n') goto yy598; + goto yy44; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy472; - if (yych == 'e') goto yy472; - goto yy166; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy43; + } else { + if (yych <= '@') goto yy560; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy599; + } else { + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy560: YYDEBUG(560, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy619; - if (yych == 'e') goto yy619; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1481 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE); +} +#line 5822 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy620; - if (yych == 't') goto yy620; - goto yy166; + if (yych == 'E') goto yy600; + if (yych == 'e') goto yy600; + goto yy44; yy562: YYDEBUG(562, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy601; + if (yych == 'o') goto yy601; + goto yy44; +yy563: YYDEBUG(563, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); -} -#line 6161 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy602; + if (yych == 'c') goto yy602; + goto yy44; yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy616; - if (yych == 'g') goto yy616; - goto yy166; + if (yych == 'C') goto yy603; + if (yych == 'c') goto yy603; + goto yy44; yy565: YYDEBUG(565, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(566, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy565; - goto yy166; - } else { - if (yych <= ' ') goto yy565; - if (yych == ')') goto yy622; - goto yy166; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(566, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1537 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRIVATE); +} +#line 5859 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy480; - if (yych == '\r') goto yy482; - goto yy166; + if (yych == 'E') goto yy604; + if (yych == 'e') goto yy604; + goto yy44; yy568: YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy624; - if (yych == 'c') goto yy624; - goto yy128; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy43; + } else { + if (yych <= '@') goto yy569; + if (yych <= 'Z') goto yy43; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy605; + } else { + if (yych <= 'z') goto yy43; + if (yych >= 0x80) goto yy43; + } + } yy569: YYDEBUG(569, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy625; - if (yych == 'l') goto yy625; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1489 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE); +} +#line 5891 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy626; - if (yych == 'u') goto yy626; - goto yy128; + if (yych == 'R') goto yy606; + if (yych == 'r') goto yy606; + goto yy82; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy627; - if (yych == 'e') goto yy627; - goto yy128; + if (yych == '_') goto yy607; + goto yy44; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy629; - if (yych == 't') goto yy629; - goto yy128; -yy573: - YYDEBUG(573, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(574, *YYCURSOR); + YYDEBUG(573, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1275 "Zend/zend_language_scanner.l" +#line 1891 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSEIF); + RETURN_TOKEN(T_DIR); } -#line 6230 "Zend/zend_language_scanner.c" +#line 5915 "Zend/zend_language_scanner.c" +yy574: + YYDEBUG(574, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy608; + goto yy44; yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy631; - if (yych == 'l') goto yy631; - goto yy128; + if (yych == 'I') goto yy610; + if (yych == 'i') goto yy610; + goto yy44; yy576: YYDEBUG(576, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy577; - if (yych <= '9') goto yy127; - } else { - if (yych == 'E') goto yy632; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy127; - } else { - if (yych <= 'e') goto yy632; - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy611; + if (yych == 'c') goto yy611; + goto yy44; yy577: YYDEBUG(577, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1303 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOR); -} -#line 6264 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy612; + goto yy44; yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy633; - if (yych == 't') goto yy633; - goto yy128; + if (yych == 'D') goto yy614; + if (yych == 'd') goto yy614; + goto yy44; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy634; - if (yych == 'l') goto yy634; - goto yy128; + if (yych == 'P') goto yy615; + if (yych == 'p') goto yy615; + goto yy44; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy635; - if (yych == 's') goto yy635; - goto yy128; + if (yych == '_') goto yy616; + goto yy44; yy581: YYDEBUG(581, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy637; - if (yych == 'y') goto yy637; - goto yy128; -yy582: + ++YYCURSOR; YYDEBUG(582, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy639; - if (yych == 'h') goto yy639; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1457 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STRING_CAST); +} +#line 5964 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy641; - if (yych == 'o') goto yy641; - goto yy128; -yy584: - YYDEBUG(584, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(585, *YYCURSOR); + YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1499 "Zend/zend_language_scanner.l" +#line 1465 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_GLOBAL); + RETURN_TOKEN(T_OBJECT_CAST); } -#line 6313 "Zend/zend_language_scanner.c" -yy586: - YYDEBUG(586, *YYCURSOR); +#line 5974 "Zend/zend_language_scanner.c" +yy585: + YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy642; - if (yych == 'e') goto yy642; - goto yy128; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(586, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1529 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ABSTRACT); +} +#line 5987 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy643; - if (yych == 'e') goto yy643; - goto yy128; -yy588: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(588, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy645; - if (yych == 'c') goto yy645; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1565 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CALLABLE); +} +#line 6000 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy646; - if (yych == 'd') goto yy646; - goto yy128; -yy590: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(590, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy647; - if (yych == 'a') goto yy647; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1361 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONTINUE); +} +#line 6013 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy648; - if (yych == 'a') goto yy648; - goto yy128; + if (yych == 'R') goto yy617; + if (yych == 'r') goto yy617; + goto yy44; yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy649; - if (yych == 'e') goto yy649; - goto yy128; + if (yych == 'C') goto yy618; + if (yych == 'c') goto yy618; + goto yy44; yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy651; - if (yych == 't') goto yy651; - goto yy128; + if (yych == 'H') goto yy619; + if (yych == 'h') goto yy619; + goto yy44; yy594: YYDEBUG(594, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1535 "Zend/zend_language_scanner.l" +#line 1301 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PUBLIC); + RETURN_TOKEN(T_ENDWHILE); } -#line 6374 "Zend/zend_language_scanner.c" +#line 6044 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy652; - if (yych == 'e') goto yy652; - goto yy128; -yy597: - YYDEBUG(597, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(598, *YYCURSOR); + YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1241 "Zend/zend_language_scanner.l" +#line 1243 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_RETURN); + RETURN_TOKEN(T_FUNCTION); } -#line 6393 "Zend/zend_language_scanner.c" +#line 6057 "Zend/zend_language_scanner.c" +yy598: + YYDEBUG(598, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy621; + if (yych == 't') goto yy621; + goto yy44; yy599: YYDEBUG(599, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy622; + if (yych == 'o') goto yy622; + goto yy44; +yy600: YYDEBUG(600, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1515 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 6406 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy623; + if (yych == 'o') goto yy623; + goto yy44; yy601: YYDEBUG(601, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'F') goto yy624; + if (yych == 'f') goto yy624; + goto yy44; +yy602: YYDEBUG(602, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1331 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 6419 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy626; + if (yych == 'e') goto yy626; + goto yy44; yy603: YYDEBUG(603, *YYCURSOR); - ++YYCURSOR; - YYFILL(5); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy628; + if (yych == 'e') goto yy628; + goto yy44; +yy604: YYDEBUG(604, *YYCURSOR); - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy166; - goto yy603; - } else { - if (yych == '\r') goto yy603; - goto yy166; - } - } else { - if (yych <= 'F') { - if (yych <= ' ') goto yy603; - if (yych <= 'E') goto yy166; - goto yy654; - } else { - if (yych == 'f') goto yy654; - goto yy166; - } - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy630; + if (yych == 'd') goto yy630; + goto yy44; yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy655; - if (yych == 's') goto yy655; - goto yy128; + if (yych == 'O') goto yy632; + if (yych == 'o') goto yy632; + goto yy44; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy656; - goto yy128; + if (yych == 'O') goto yy633; + if (yych == 'o') goto yy633; + goto yy82; yy607: YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy658; - goto yy128; + if (yych == '_') goto yy634; + goto yy44; yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy659; - if (yych == 't') goto yy659; - goto yy128; -yy609: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(609, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy660; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1887 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FILE); +} +#line 6129 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy661; - goto yy128; + if (yych == 'O') goto yy636; + if (yych == 'o') goto yy636; + goto yy44; yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy662; - if (yych == 'o') goto yy662; - goto yy128; + if (yych == 'O') goto yy637; + if (yych == 'o') goto yy637; + goto yy44; yy612: YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy663; - if (yych == 's') goto yy663; - goto yy128; -yy613: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(613, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy664; - if (yych == 't') goto yy664; - goto yy128; -yy614: - YYDEBUG(614, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(615, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ARRAY_CAST); + RETURN_TOKEN(T_LINE); } -#line 6503 "Zend/zend_language_scanner.c" +#line 6154 "Zend/zend_language_scanner.c" +yy614: + YYDEBUG(614, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy638; + goto yy44; +yy615: + YYDEBUG(615, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy639; + if (yych == 'a') goto yy639; + goto yy44; yy616: YYDEBUG(616, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy640; + goto yy44; +yy617: YYDEBUG(617, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy616; - goto yy166; - } else { - if (yych <= ' ') goto yy616; - if (yych == ')') goto yy665; - goto yy166; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy642; + if (yych == 'e') goto yy642; + goto yy44; yy618: YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy554; - if (yych == 'n') goto yy554; - goto yy166; + if (yych == 'H') goto yy644; + if (yych == 'h') goto yy644; + goto yy44; yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy466; - if (yych == 'r') goto yy466; - goto yy166; -yy620: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(620, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1345 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDSWITCH); +} +#line 6195 "Zend/zend_language_scanner.c" +yy621: YYDEBUG(621, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy620; - goto yy166; - } else { - if (yych <= ' ') goto yy620; - if (yych == ')') goto yy667; - goto yy166; - } + yych = *++YYCURSOR; + if (yych == 'S') goto yy646; + if (yych == 's') goto yy646; + goto yy44; yy622: YYDEBUG(622, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'N') goto yy648; + if (yych == 'n') goto yy648; + goto yy44; +yy623: YYDEBUG(623, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET_CAST); -} -#line 6553 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy649; + if (yych == 'f') goto yy649; + goto yy44; yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy669; - if (yych == 't') goto yy669; - goto yy128; -yy625: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(625, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy671; - if (yych == 'e') goto yy671; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1505 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INSTEADOF); +} +#line 6226 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy673; - if (yych == 'e') goto yy673; - goto yy128; -yy627: - YYDEBUG(627, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(628, *YYCURSOR); + YYDEBUG(627, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1315 "Zend/zend_language_scanner.l" +#line 1381 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DECLARE); + RETURN_TOKEN(T_INTERFACE); } -#line 6584 "Zend/zend_language_scanner.c" -yy629: - YYDEBUG(629, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +#line 6239 "Zend/zend_language_scanner.c" +yy628: + YYDEBUG(628, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(630, *YYCURSOR); + YYDEBUG(629, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1343 "Zend/zend_language_scanner.l" +#line 1497 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DEFAULT); + RETURN_TOKEN(T_NAMESPACE); } -#line 6597 "Zend/zend_language_scanner.c" -yy631: - YYDEBUG(631, *YYCURSOR); +#line 6252 "Zend/zend_language_scanner.c" +yy630: + YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy675; - if (yych == 'a') goto yy675; - goto yy128; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(631, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1541 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PROTECTED); +} +#line 6265 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy676; - if (yych == 'a') goto yy676; - goto yy128; + if (yych == 'N') goto yy651; + if (yych == 'n') goto yy651; + goto yy44; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy677; - if (yych == 'c') goto yy677; - goto yy128; + if (yych == 'M') goto yy652; + if (yych == 'm') goto yy652; + goto yy82; yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy678; - if (yych == 'e') goto yy678; - goto yy128; -yy635: - YYDEBUG(635, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(636, *YYCURSOR); + YYDEBUG(635, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1379 "Zend/zend_language_scanner.l" +#line 1867 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXTENDS); + RETURN_TOKEN(T_CLASS_C); } -#line 6634 "Zend/zend_language_scanner.c" +#line 6290 "Zend/zend_language_scanner.c" +yy636: + YYDEBUG(636, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy653; + if (yych == 'n') goto yy653; + goto yy44; yy637: YYDEBUG(637, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'M') goto yy654; + if (yych == 'm') goto yy654; + goto yy44; +yy638: YYDEBUG(638, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1263 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINALLY); -} -#line 6647 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy655; + goto yy44; yy639: YYDEBUG(639, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy657; + if (yych == 'c') goto yy657; + goto yy44; +yy640: YYDEBUG(640, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1307 "Zend/zend_language_scanner.l" +#line 1871 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOREACH); + RETURN_TOKEN(T_TRAIT_C); } -#line 6660 "Zend/zend_language_scanner.c" -yy641: - YYDEBUG(641, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy680; - if (yych == 'n') goto yy680; - goto yy128; +#line 6326 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy682; - if (yych == 'n') goto yy682; - goto yy128; -yy643: - YYDEBUG(643, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy127; - } else { - if (yych <= '@') goto yy644; - if (yych <= 'Z') goto yy127; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy683; - } else { - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; - } + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(643, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1329 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDDECLARE); +} +#line 6339 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" +#line 1321 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE); + RETURN_TOKEN(T_ENDFOREACH); } -#line 6698 "Zend/zend_language_scanner.c" -yy645: - YYDEBUG(645, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy684; - if (yych == 'e') goto yy684; - goto yy128; +#line 6352 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy685; - if (yych == 'o') goto yy685; - goto yy128; -yy647: + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(647, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy686; - if (yych == 'c') goto yy686; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1393 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IMPLEMENTS); +} +#line 6365 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy687; - if (yych == 'c') goto yy687; - goto yy128; + if (yych == 'C') goto yy658; + if (yych == 'c') goto yy658; + goto yy44; yy649: YYDEBUG(649, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1527 "Zend/zend_language_scanner.l" +#line 1333 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PRIVATE); + RETURN_TOKEN(T_INSTANCEOF); } -#line 6735 "Zend/zend_language_scanner.c" +#line 6384 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy688; - if (yych == 'e') goto yy688; - goto yy128; + if (yych == 'C') goto yy659; + if (yych == 'c') goto yy659; + goto yy44; yy652: YYDEBUG(652, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { + yych = *++YYCURSOR; + if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy127; + if (yych <= '/') goto yy660; + goto yy82; } else { - if (yych <= '@') goto yy653; - if (yych <= 'Z') goto yy127; + if (yych <= '@') goto yy660; + if (yych <= 'Z') goto yy82; + goto yy660; } } else { if (yych <= '`') { - if (yych <= '_') goto yy689; + if (yych <= '_') goto yy82; + goto yy660; } else { - if (yych <= 'z') goto yy127; - if (yych >= 0x80) goto yy127; + if (yych <= 'z') goto yy82; + if (yych <= 0x7F) goto yy660; + goto yy82; } } yy653: YYDEBUG(653, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 6767 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy662; + goto yy44; yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy690; - if (yych == 'r') goto yy690; - goto yy166; + if (yych == 'P') goto yy663; + if (yych == 'p') goto yy663; + goto yy44; yy655: YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy691; - goto yy128; -yy656: - YYDEBUG(656, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(657, *YYCURSOR); + YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1881 "Zend/zend_language_scanner.l" +#line 1879 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DIR); + RETURN_TOKEN(T_METHOD_C); } -#line 6791 "Zend/zend_language_scanner.c" +#line 6436 "Zend/zend_language_scanner.c" +yy657: + YYDEBUG(657, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy664; + if (yych == 'e') goto yy664; + goto yy44; yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy692; - goto yy128; + if (yych == 'E') goto yy665; + if (yych == 'e') goto yy665; + goto yy44; yy659: YYDEBUG(659, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy694; - if (yych == 'i') goto yy694; - goto yy128; + if (yych == 'E') goto yy667; + if (yych == 'e') goto yy667; + goto yy44; yy660: YYDEBUG(660, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy695; - if (yych == 'c') goto yy695; - goto yy128; -yy661: + ++YYCURSOR; YYDEBUG(661, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy696; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1255 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 1); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_YIELD_FROM); +} +#line 6466 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy698; - if (yych == 'd') goto yy698; - goto yy128; + if (yych == '_') goto yy669; + goto yy44; yy663: YYDEBUG(663, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy699; - if (yych == 'p') goto yy699; - goto yy128; + if (yych == 'I') goto yy671; + if (yych == 'i') goto yy671; + goto yy44; yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy700; - goto yy128; + if (yych == '_') goto yy672; + goto yy44; yy665: YYDEBUG(665, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(666, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1447 "Zend/zend_language_scanner.l" +#line 1485 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_STRING_CAST); + RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6840 "Zend/zend_language_scanner.c" +#line 6495 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" +#line 1493 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OBJECT_CAST); + RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6850 "Zend/zend_language_scanner.c" +#line 6508 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1519 "Zend/zend_language_scanner.l" +#line 1875 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ABSTRACT); + RETURN_TOKEN(T_FUNC_C); } -#line 6863 "Zend/zend_language_scanner.c" +#line 6521 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy673; + if (yych == 'l') goto yy673; + goto yy44; +yy672: YYDEBUG(672, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CALLABLE); -} -#line 6876 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy674; + goto yy44; yy673: YYDEBUG(673, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy676; + if (yych == 'e') goto yy676; + goto yy44; +yy674: YYDEBUG(674, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; + } + YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1351 "Zend/zend_language_scanner.l" +#line 1895 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONTINUE); + RETURN_TOKEN(T_NS_C); } -#line 6889 "Zend/zend_language_scanner.c" -yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy701; - if (yych == 'r') goto yy701; - goto yy128; +#line 6551 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy702; - if (yych == 'c') goto yy702; - goto yy128; + if (yych == 'R') goto yy677; + if (yych != 'r') goto yy44; yy677: YYDEBUG(677, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy703; - if (yych == 'h') goto yy703; - goto yy128; -yy678: - YYDEBUG(678, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yybm[0+yych] & 16) { + goto yy43; } - YYDEBUG(679, *YYCURSOR); + YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1291 "Zend/zend_language_scanner.l" +#line 1521 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDWHILE); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 6920 "Zend/zend_language_scanner.c" -yy680: - YYDEBUG(680, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +#line 6569 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_LOOKING_FOR_PROPERTY: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 64, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(679, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yybm[0+yych] & 64) { + goto yy683; + } + if (yych <= '^') { + if (yych <= '-') { + if (yych >= '-') goto yy686; + } else { + if (yych <= '@') goto yy681; + if (yych <= 'Z') goto yy687; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy687; + } else { + if (yych <= 'z') goto yy687; + if (yych >= 0x80) goto yy687; + } } +yy681: YYDEBUG(681, *YYCURSOR); + ++YYCURSOR; +yy682: + YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1233 "Zend/zend_language_scanner.l" +#line 1415 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNCTION); + yyless(0); + yy_pop_state(); + goto restart; } -#line 6933 "Zend/zend_language_scanner.c" -yy682: - YYDEBUG(682, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy705; - if (yych == 't') goto yy705; - goto yy128; +#line 6641 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy706; - if (yych == 'o') goto yy706; - goto yy128; -yy684: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(684, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy707; - if (yych == 'o') goto yy707; - goto yy128; -yy685: + if (yybm[0+yych] & 64) { + goto yy683; + } YYDEBUG(685, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy708; - if (yych == 'f') goto yy708; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1402 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 6657 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy710; - if (yych == 'e') goto yy710; - goto yy128; + if (yych == '>') goto yy690; + goto yy682; yy687: YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy712; - if (yych == 'e') goto yy712; - goto yy128; -yy688: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy714; - if (yych == 'd') goto yy714; - goto yy128; -yy689: + if (yybm[0+yych] & 128) { + goto yy687; + } YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy716; - if (yych == 'o') goto yy716; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1410 "Zend/zend_language_scanner.l" + { + yy_pop_state(); + RETURN_TOKEN_WITH_STR(T_STRING, 0); +} +#line 6679 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy717; - if (yych == 'o') goto yy717; - goto yy166; -yy691: + ++YYCURSOR; YYDEBUG(691, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy718; - goto yy128; -yy692: + yyleng = YYCURSOR - SCNG(yy_text); +#line 1406 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OBJECT_OPERATOR); +} +#line 6689 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_BACKQUOTE: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; YYDEBUG(692, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '_') { + if (yych == '$') goto yy696; + } else { + if (yych <= '`') goto yy697; + if (yych == '{') goto yy699; + } + YYDEBUG(694, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +yy695: + YYDEBUG(695, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2461 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '`': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; } - YYDEBUG(693, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1877 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FILE); + + YYCURSOR--; + break; + } + + yyleng = YYCURSOR - SCNG(yy_text); + + 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 7005 "Zend/zend_language_scanner.c" -yy694: - YYDEBUG(694, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy720; - if (yych == 'o') goto yy720; - goto yy128; -yy695: - YYDEBUG(695, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy721; - if (yych == 'o') goto yy721; - goto yy128; +#line 6787 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy695; + if (yych <= 'Z') goto yy700; + if (yych <= '^') goto yy695; + goto yy700; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy695; + goto yy700; + } else { + if (yych <= '{') goto yy703; + if (yych <= 0x7F) goto yy695; + goto yy700; + } } +yy697: YYDEBUG(697, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1873 "Zend/zend_language_scanner.l" +#line 2401 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LINE); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('`'); } -#line 7030 "Zend/zend_language_scanner.c" -yy698: - YYDEBUG(698, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy722; - goto yy128; +#line 6816 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy723; - if (yych == 'a') goto yy723; - goto yy128; + if (yych == '$') goto yy705; + goto yy695; yy700: YYDEBUG(700, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy724; - goto yy128; -yy701: + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy726; - if (yych == 'e') goto yy726; - goto yy128; + if (yybm[0+yych] & 128) { + goto yy700; + } + if (yych == '-') goto yy707; + if (yych <= '@') goto yy702; + if (yych <= '[') goto yy709; yy702: YYDEBUG(702, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy728; - if (yych == 'h') goto yy728; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1996 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 6841 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1335 "Zend/zend_language_scanner.l" +#line 1696 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDSWITCH); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7071 "Zend/zend_language_scanner.c" +#line 6852 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy730; - if (yych == 's') goto yy730; - goto yy128; -yy706: + ++YYCURSOR; YYDEBUG(706, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy732; - if (yych == 'n') goto yy732; - goto yy128; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2389 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); +} +#line 6864 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy733; - if (yych == 'f') goto yy733; - goto yy128; + if (yych == '>') goto yy711; yy708: YYDEBUG(708, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } + YYCURSOR = YYMARKER; + goto yy702; +yy709: YYDEBUG(709, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1495 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTEADOF); -} -#line 7102 "Zend/zend_language_scanner.c" -yy710: - YYDEBUG(710, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(711, *YYCURSOR); + YYDEBUG(710, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1371 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INTERFACE); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7115 "Zend/zend_language_scanner.c" +#line 6884 "Zend/zend_language_scanner.c" +yy711: + YYDEBUG(711, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy708; + if (yych <= 'Z') goto yy712; + if (yych <= '^') goto yy708; + } else { + if (yych <= '`') goto yy708; + if (yych <= 'z') goto yy712; + if (yych <= 0x7F) goto yy708; + } yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1487 "Zend/zend_language_scanner.l" +#line 1982 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NAMESPACE); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7128 "Zend/zend_language_scanner.c" -yy714: +#line 6908 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_DOUBLE_QUOTES: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; YYDEBUG(714, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '#') { + if (yych == '"') goto yy718; + } else { + if (yych <= '$') goto yy720; + if (yych == '{') goto yy721; } - YYDEBUG(715, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1531 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PROTECTED); -} -#line 7141 "Zend/zend_language_scanner.c" -yy716: YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy735; - if (yych == 'n') goto yy735; - goto yy128; + ++YYCURSOR; yy717: YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy736; - if (yych == 'm') goto yy736; - goto yy166; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2407 "Zend/zend_language_scanner.l" + { + if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { + YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; + SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); + + goto double_quotes_scan_done; + } + + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + +double_quotes_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + + 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 7014 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 2396 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS_C); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('"'); } -#line 7166 "Zend/zend_language_scanner.c" +#line 7025 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy737; - if (yych == 'n') goto yy737; - goto yy128; -yy721: - YYDEBUG(721, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy738; - if (yych == 'm') goto yy738; - goto yy128; -yy722: - YYDEBUG(722, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy739; - goto yy128; -yy723: - YYDEBUG(723, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy741; - if (yych == 'c') goto yy741; - goto yy128; -yy724: - YYDEBUG(724, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(725, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1861 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT_C); -} -#line 7202 "Zend/zend_language_scanner.c" -yy726: - YYDEBUG(726, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(727, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1319 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 7215 "Zend/zend_language_scanner.c" -yy728: - YYDEBUG(728, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(729, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1311 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOREACH); -} -#line 7228 "Zend/zend_language_scanner.c" -yy730: - YYDEBUG(730, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(731, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1383 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 7241 "Zend/zend_language_scanner.c" -yy732: - YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy742; - if (yych == 'c') goto yy742; - goto yy128; -yy733: - YYDEBUG(733, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(734, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1323 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTANCEOF); -} -#line 7260 "Zend/zend_language_scanner.c" -yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy743; - if (yych == 'c') goto yy743; - goto yy128; -yy736: - YYDEBUG(736, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych <= '/') goto yy744; - goto yy166; - } else { - if (yych <= '@') goto yy744; - if (yych <= 'Z') goto yy166; - goto yy744; - } + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy717; + if (yych <= 'Z') goto yy722; + if (yych <= '^') goto yy717; + goto yy722; } else { - if (yych <= '`') { - if (yych <= '_') goto yy166; - goto yy744; + if (yych <= 'z') { + if (yych <= '`') goto yy717; + goto yy722; } else { - if (yych <= 'z') goto yy166; - if (yych <= 0x7F) goto yy744; - goto yy166; + if (yych <= '{') goto yy725; + if (yych <= 0x7F) goto yy717; + goto yy722; } } -yy737: - YYDEBUG(737, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy746; - goto yy128; -yy738: - YYDEBUG(738, *YYCURSOR); +yy721: + YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy747; - if (yych == 'p') goto yy747; - goto yy128; -yy739: - YYDEBUG(739, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + if (yych == '$') goto yy727; + goto yy717; +yy722: + YYDEBUG(722, *YYCURSOR); + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(723, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy722; } - YYDEBUG(740, *YYCURSOR); + if (yych == '-') goto yy729; + if (yych <= '@') goto yy724; + if (yych <= '[') goto yy731; +yy724: + YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1869 "Zend/zend_language_scanner.l" +#line 1996 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_METHOD_C); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7312 "Zend/zend_language_scanner.c" -yy741: - YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy748; - if (yych == 'e') goto yy748; - goto yy128; -yy742: - YYDEBUG(742, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy749; - if (yych == 'e') goto yy749; - goto yy128; -yy743: - YYDEBUG(743, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy751; - if (yych == 'e') goto yy751; - goto yy128; -yy744: - YYDEBUG(744, *YYCURSOR); +#line 7068 "Zend/zend_language_scanner.c" +yy725: + YYDEBUG(725, *YYCURSOR); ++YYCURSOR; - YYDEBUG(745, *YYCURSOR); + YYDEBUG(726, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1245 "Zend/zend_language_scanner.l" +#line 1696 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_YIELD_FROM); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7342 "Zend/zend_language_scanner.c" -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy753; - goto yy128; -yy747: - YYDEBUG(747, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy755; - if (yych == 'i') goto yy755; - goto yy128; -yy748: - YYDEBUG(748, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy756; - goto yy128; -yy749: - YYDEBUG(749, *YYCURSOR); +#line 7079 "Zend/zend_language_scanner.c" +yy727: + YYDEBUG(727, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(750, *YYCURSOR); + YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1475 "Zend/zend_language_scanner.l" +#line 2389 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE_ONCE); + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 7371 "Zend/zend_language_scanner.c" -yy751: - YYDEBUG(751, *YYCURSOR); +#line 7091 "Zend/zend_language_scanner.c" +yy729: + YYDEBUG(729, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy733; +yy730: + YYDEBUG(730, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy724; +yy731: + YYDEBUG(731, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(752, *YYCURSOR); + YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1483 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_REQUIRE_ONCE); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7384 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +#line 7111 "Zend/zend_language_scanner.c" +yy733: + YYDEBUG(733, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy730; + if (yych <= 'Z') goto yy734; + if (yych <= '^') goto yy730; + } else { + if (yych <= '`') goto yy730; + if (yych <= 'z') goto yy734; + if (yych <= 0x7F) goto yy730; } - YYDEBUG(754, *YYCURSOR); +yy734: + YYDEBUG(734, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1865 "Zend/zend_language_scanner.l" +#line 1982 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNC_C); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7397 "Zend/zend_language_scanner.c" -yy755: - YYDEBUG(755, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy757; - if (yych == 'l') goto yy757; - goto yy128; -yy756: - YYDEBUG(756, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy758; - goto yy128; -yy757: - YYDEBUG(757, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy760; - if (yych == 'e') goto yy760; - goto yy128; -yy758: - YYDEBUG(758, *YYCURSOR); +#line 7135 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_HEREDOC: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(736, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych == '$') goto yy740; + if (yych == '{') goto yy741; + YYDEBUG(738, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; - } - YYDEBUG(759, *YYCURSOR); +yy739: + YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1885 "Zend/zend_language_scanner.l" +#line 2507 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_C); -} -#line 7427 "Zend/zend_language_scanner.c" -yy760: - YYDEBUG(760, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy761; - if (yych != 'r') goto yy128; -yy761: - YYDEBUG(761, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + CG(increment_lineno) = 1; /* For newline before label */ + + if (SCNG(heredoc_scan_ahead)) { + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + } else { + YYCURSOR -= indentation; + } + + BEGIN(ST_END_HEREDOC); + + goto heredoc_scan_done; + } + continue; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + +heredoc_scan_done: + + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { + zend_string *copy = Z_STR_P(zendlval); + + if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) + && PARSER_MODE()) { + zend_string_free(copy); + RETURN_TOKEN(T_ERROR); } - YYDEBUG(762, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1511 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_HALT_COMPILER); -} -#line 7445 "Zend/zend_language_scanner.c" + + zend_string_free(copy); } -/* *********************************** */ -yyc_ST_LOOKING_FOR_PROPERTY: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(763, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy767; - } - if (yych <= '^') { - if (yych <= '-') { - if (yych >= '-') goto yy770; - } else { - if (yych <= '@') goto yy765; - if (yych <= 'Z') goto yy771; - } + + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); +} +#line 7301 "Zend/zend_language_scanner.c" +yy740: + YYDEBUG(740, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy739; + if (yych <= 'Z') goto yy742; + if (yych <= '^') goto yy739; + goto yy742; } else { - if (yych <= '`') { - if (yych <= '_') goto yy771; + if (yych <= 'z') { + if (yych <= '`') goto yy739; + goto yy742; } else { - if (yych <= 'z') goto yy771; - if (yych >= 0x80) goto yy771; + if (yych <= '{') goto yy745; + if (yych <= 0x7F) goto yy739; + goto yy742; } } -yy765: - YYDEBUG(765, *YYCURSOR); +yy741: + YYDEBUG(741, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '$') goto yy747; + goto yy739; +yy742: + YYDEBUG(742, *YYCURSOR); + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(743, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy742; + } + if (yych == '-') goto yy749; + if (yych <= '@') goto yy744; + if (yych <= '[') goto yy751; +yy744: + YYDEBUG(744, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1996 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 7344 "Zend/zend_language_scanner.c" +yy745: + YYDEBUG(745, *YYCURSOR); ++YYCURSOR; -yy766: - YYDEBUG(766, *YYCURSOR); + YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1405 "Zend/zend_language_scanner.l" +#line 1696 "Zend/zend_language_scanner.l" { - yyless(0); - yy_pop_state(); - goto restart; + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7517 "Zend/zend_language_scanner.c" -yy767: - YYDEBUG(767, *YYCURSOR); +#line 7355 "Zend/zend_language_scanner.c" +yy747: + YYDEBUG(747, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(768, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy767; - } - YYDEBUG(769, *YYCURSOR); + YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" +#line 2389 "Zend/zend_language_scanner.l" { - goto return_whitespace; + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 7533 "Zend/zend_language_scanner.c" -yy770: - YYDEBUG(770, *YYCURSOR); +#line 7367 "Zend/zend_language_scanner.c" +yy749: + YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy774; - goto yy766; -yy771: - YYDEBUG(771, *YYCURSOR); + if (yych == '>') goto yy753; +yy750: + YYDEBUG(750, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy744; +yy751: + YYDEBUG(751, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(772, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy771; - } - YYDEBUG(773, *YYCURSOR); + YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { - yy_pop_state(); - RETURN_TOKEN_WITH_STR(T_STRING, 0); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7555 "Zend/zend_language_scanner.c" -yy774: - YYDEBUG(774, *YYCURSOR); +#line 7387 "Zend/zend_language_scanner.c" +yy753: + YYDEBUG(753, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy750; + if (yych <= 'Z') goto yy754; + if (yych <= '^') goto yy750; + } else { + if (yych <= '`') goto yy750; + if (yych <= 'z') goto yy754; + if (yych <= 0x7F) goto yy750; + } +yy754: + YYDEBUG(754, *YYCURSOR); ++YYCURSOR; - YYDEBUG(775, *YYCURSOR); + YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1982 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OBJECT_OPERATOR); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7565 "Zend/zend_language_scanner.c" +#line 7411 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7600,180 +7446,87 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(776, *YYCURSOR); + YYDEBUG(756, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy778; - if (yych <= 'Z') goto yy780; - if (yych >= '_') goto yy780; + if (yych <= '@') goto yy758; + if (yych <= 'Z') goto yy760; + if (yych >= '_') goto yy760; } else { - if (yych <= '`') goto yy778; - if (yych <= 'z') goto yy780; - if (yych >= 0x80) goto yy780; + if (yych <= '`') goto yy758; + if (yych <= 'z') goto yy760; + if (yych >= 0x80) goto yy760; } -yy778: - YYDEBUG(778, *YYCURSOR); +yy758: + YYDEBUG(758, *YYCURSOR); ++YYCURSOR; -yy779: - YYDEBUG(779, *YYCURSOR); +yy759: + YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" +#line 1719 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7629 "Zend/zend_language_scanner.c" -yy780: - YYDEBUG(780, *YYCURSOR); +#line 7475 "Zend/zend_language_scanner.c" +yy760: + YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy779; - if (yych <= '9') goto yy782; - goto yy779; + if (yych <= '/') goto yy759; + if (yych <= '9') goto yy762; + goto yy759; } else { - if (yych <= '[') goto yy782; - if (yych <= '^') goto yy779; - goto yy782; + if (yych <= '[') goto yy762; + if (yych <= '^') goto yy759; + goto yy762; } } else { if (yych <= '|') { - if (yych <= '`') goto yy779; - if (yych <= 'z') goto yy782; - goto yy779; + if (yych <= '`') goto yy759; + if (yych <= 'z') goto yy762; + goto yy759; } else { - if (yych <= '}') goto yy782; - if (yych <= 0x7F) goto yy779; - goto yy782; + if (yych <= '}') goto yy762; + if (yych <= 0x7F) goto yy759; + goto yy762; } } -yy781: - YYDEBUG(781, *YYCURSOR); +yy761: + YYDEBUG(761, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy782: - YYDEBUG(782, *YYCURSOR); +yy762: + YYDEBUG(762, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy781; + goto yy761; } - if (yych <= '@') goto yy783; - if (yych <= '[') goto yy784; - if (yych == '}') goto yy784; -yy783: - YYDEBUG(783, *YYCURSOR); + if (yych <= '@') goto yy763; + if (yych <= '[') goto yy764; + if (yych == '}') goto yy764; +yy763: + YYDEBUG(763, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy779; -yy784: - YYDEBUG(784, *YYCURSOR); + goto yy759; +yy764: + YYDEBUG(764, *YYCURSOR); ++YYCURSOR; - YYDEBUG(785, *YYCURSOR); + YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1701 "Zend/zend_language_scanner.l" +#line 1711 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7683 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_NOWDOC: - YYDEBUG(786, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(788, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(789, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2606 "Zend/zend_language_scanner.l" - { - 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); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - YYCURSOR -= indentation; - heredoc_label->indentation = indentation; - - BEGIN(ST_END_HEREDOC); - - goto nowdoc_scan_done; - } - /* fall through */ - default: - continue; - } - } - -nowdoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - zend_copy_value(zendlval, yytext, yyleng); - - if (!EG(exception) && spacing != -1 && PARSER_MODE() - && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - zend_copy_value(zendlval, yytext, yyleng); +#line 7529 "Zend/zend_language_scanner.c" } - - HANDLE_NEWLINES(yytext, yyleng - newline); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 7777 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7811,57 +7564,57 @@ int start_line = CG(zend_lineno); 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }; - YYDEBUG(790, *YYCURSOR); + YYDEBUG(766, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '0') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy792; - if (yych <= '\n') goto yy794; + if (yych <= 0x08) goto yy768; + if (yych <= '\n') goto yy770; } else { - if (yych <= '\r') goto yy794; - if (yych >= ' ') goto yy794; + if (yych <= '\r') goto yy770; + if (yych >= ' ') goto yy770; } } else { if (yych <= '$') { - if (yych <= '"') goto yy796; - if (yych <= '#') goto yy794; - goto yy798; + if (yych <= '"') goto yy772; + if (yych <= '#') goto yy770; + goto yy774; } else { - if (yych == '\'') goto yy794; - if (yych <= '/') goto yy796; - goto yy799; + if (yych == '\'') goto yy770; + if (yych <= '/') goto yy772; + goto yy775; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '9') goto yy801; - if (yych <= '@') goto yy796; - goto yy803; + if (yych <= '9') goto yy777; + if (yych <= '@') goto yy772; + goto yy779; } else { - if (yych <= '[') goto yy796; - if (yych <= '\\') goto yy794; - goto yy806; + if (yych <= '[') goto yy772; + if (yych <= '\\') goto yy770; + goto yy782; } } else { if (yych <= '`') { - if (yych == '_') goto yy803; - goto yy796; + if (yych == '_') goto yy779; + goto yy772; } else { - if (yych <= 'z') goto yy803; - if (yych <= '~') goto yy796; - if (yych >= 0x80) goto yy803; + if (yych <= 'z') goto yy779; + if (yych <= '~') goto yy772; + if (yych >= 0x80) goto yy779; } } - } -yy792: - YYDEBUG(792, *YYCURSOR); + } +yy768: + YYDEBUG(768, *YYCURSOR); ++YYCURSOR; - YYDEBUG(793, *YYCURSOR); + YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2690 "Zend/zend_language_scanner.l" +#line 2709 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7870,13 +7623,13 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7874 "Zend/zend_language_scanner.c" -yy794: - YYDEBUG(794, *YYCURSOR); +#line 7627 "Zend/zend_language_scanner.c" +yy770: + YYDEBUG(770, *YYCURSOR); ++YYCURSOR; - YYDEBUG(795, *YYCURSOR); + YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2000 "Zend/zend_language_scanner.l" +#line 2010 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7884,54 +7637,54 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7888 "Zend/zend_language_scanner.c" -yy796: - YYDEBUG(796, *YYCURSOR); +#line 7641 "Zend/zend_language_scanner.c" +yy772: + YYDEBUG(772, *YYCURSOR); ++YYCURSOR; -yy797: - YYDEBUG(797, *YYCURSOR); +yy773: + YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1995 "Zend/zend_language_scanner.l" +#line 2005 "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 7900 "Zend/zend_language_scanner.c" -yy798: - YYDEBUG(798, *YYCURSOR); +#line 7653 "Zend/zend_language_scanner.c" +yy774: + YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy797; - if (yych <= 'Z') goto yy808; - if (yych <= '^') goto yy797; - goto yy808; + if (yych <= '@') goto yy773; + if (yych <= 'Z') goto yy784; + if (yych <= '^') goto yy773; + goto yy784; } else { - if (yych <= '`') goto yy797; - if (yych <= 'z') goto yy808; - if (yych <= 0x7F) goto yy797; - goto yy808; + if (yych <= '`') goto yy773; + if (yych <= 'z') goto yy784; + if (yych <= 0x7F) goto yy773; + goto yy784; } -yy799: - YYDEBUG(799, *YYCURSOR); +yy775: + YYDEBUG(775, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy811; + if (yych >= '0') goto yy787; } else { - if (yych == 'B') goto yy814; + if (yych == 'B') goto yy790; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy816; - if (yych >= 'b') goto yy814; + if (yych <= 'X') goto yy792; + if (yych >= 'b') goto yy790; } else { - if (yych == 'x') goto yy816; + if (yych == 'x') goto yy792; } } -yy800: - YYDEBUG(800, *YYCURSOR); +yy776: + YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 1833 "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; @@ -7947,85 +7700,85 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7951 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); +#line 7704 "Zend/zend_language_scanner.c" +yy777: + YYDEBUG(777, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(802, *YYCURSOR); + YYDEBUG(778, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy801; + goto yy777; } - goto yy800; -yy803: - YYDEBUG(803, *YYCURSOR); + goto yy776; +yy779: + YYDEBUG(779, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(804, *YYCURSOR); + YYDEBUG(780, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy803; + goto yy779; } - YYDEBUG(805, *YYCURSOR); + YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2008 "Zend/zend_language_scanner.l" +#line 2018 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7977 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); +#line 7730 "Zend/zend_language_scanner.c" +yy782: + YYDEBUG(782, *YYCURSOR); ++YYCURSOR; - YYDEBUG(807, *YYCURSOR); + YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1990 "Zend/zend_language_scanner.l" +#line 2000 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7988 "Zend/zend_language_scanner.c" -yy808: - YYDEBUG(808, *YYCURSOR); +#line 7741 "Zend/zend_language_scanner.c" +yy784: + YYDEBUG(784, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(809, *YYCURSOR); + YYDEBUG(785, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy808; + if (yych >= '0') goto yy784; } else { - if (yych <= '@') goto yy810; - if (yych <= 'Z') goto yy808; + if (yych <= '@') goto yy786; + if (yych <= 'Z') goto yy784; } } else { if (yych <= '`') { - if (yych <= '_') goto yy808; + if (yych <= '_') goto yy784; } else { - if (yych <= 'z') goto yy808; - if (yych >= 0x80) goto yy808; + if (yych <= 'z') goto yy784; + if (yych >= 0x80) goto yy784; } } -yy810: - YYDEBUG(810, *YYCURSOR); +yy786: + YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" +#line 1996 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8017 "Zend/zend_language_scanner.c" -yy811: - YYDEBUG(811, *YYCURSOR); +#line 7770 "Zend/zend_language_scanner.c" +yy787: + YYDEBUG(787, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(812, *YYCURSOR); - if (yych <= '/') goto yy813; - if (yych <= '9') goto yy811; -yy813: - YYDEBUG(813, *YYCURSOR); + YYDEBUG(788, *YYCURSOR); + if (yych <= '/') goto yy789; + if (yych <= '9') goto yy787; +yy789: + YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1849 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ if (yyleng == 1) { ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); @@ -8034,47 +7787,309 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8038 "Zend/zend_language_scanner.c" -yy814: - YYDEBUG(814, *YYCURSOR); +#line 7791 "Zend/zend_language_scanner.c" +yy790: + YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy817; + goto yy793; } -yy815: - YYDEBUG(815, *YYCURSOR); +yy791: + YYDEBUG(791, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy800; -yy816: - YYDEBUG(816, *YYCURSOR); + goto yy776; +yy792: + YYDEBUG(792, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy819; + goto yy795; } - goto yy815; -yy817: - YYDEBUG(817, *YYCURSOR); + goto yy791; +yy793: + YYDEBUG(793, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(818, *YYCURSOR); + YYDEBUG(794, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy817; + goto yy793; } - goto yy813; -yy819: - YYDEBUG(819, *YYCURSOR); + goto yy789; +yy795: + YYDEBUG(795, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(820, *YYCURSOR); + YYDEBUG(796, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy819; + goto yy795; + } + goto yy789; + } +/* *********************************** */ +yyc_INITIAL: + YYDEBUG(797, *YYCURSOR); + YYFILL(7); + yych = *YYCURSOR; + if (yych == '<') goto yy801; + YYDEBUG(799, *YYCURSOR); + ++YYCURSOR; +yy800: + YYDEBUG(800, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1931 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + +inline_char_handler: + + while (1) { + YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); + + YYCURSOR = ptr ? ptr + 1 : YYLIMIT; + + if (YYCURSOR >= YYLIMIT) { + break; + } + + if (*YYCURSOR == '?') { + if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ + + YYCURSOR--; + break; + } + } + } + + yyleng = YYCURSOR - SCNG(yy_text); + + if (SCNG(output_filter)) { + size_t readsize; + char *s = NULL; + size_t sz = 0; + // TODO: avoid reallocation ??? + readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); + ZVAL_STRINGL(zendlval, s, sz); + efree(s); + if (readsize < yyleng) { + yyless(readsize); + } + } else if (yyleng == 1) { + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); + } else { + ZVAL_STRINGL(zendlval, yytext, yyleng); + } + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); +} +#line 7888 "Zend/zend_language_scanner.c" +yy801: + YYDEBUG(801, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '?') goto yy800; + YYDEBUG(802, *YYCURSOR); + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych == '=') goto yy804; + } else { + if (yych <= 'P') goto yy806; + if (yych == 'p') goto yy806; + } +yy803: + YYDEBUG(803, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1919 "Zend/zend_language_scanner.l" + { + if (CG(short_tags)) { + BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); + } + RETURN_TOKEN(T_OPEN_TAG); + } else { + goto inline_char_handler; + } +} +#line 7916 "Zend/zend_language_scanner.c" +yy804: + YYDEBUG(804, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(805, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1900 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ECHO); + } + RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); +} +#line 7930 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy808; + if (yych == 'h') goto yy808; +yy807: + YYDEBUG(807, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy803; +yy808: + YYDEBUG(808, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy809; + if (yych != 'p') goto yy807; +yy809: + YYDEBUG(809, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy807; + if (yych >= '\v') goto yy807; + } else { + if (yych <= '\r') goto yy812; + if (yych != ' ') goto yy807; + } +yy810: + YYDEBUG(810, *YYCURSOR); + ++YYCURSOR; +yy811: + YYDEBUG(811, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1909 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINE(yytext[yyleng-1]); + BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); + } + RETURN_TOKEN(T_OPEN_TAG); +} +#line 7970 "Zend/zend_language_scanner.c" +yy812: + YYDEBUG(812, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy810; + goto yy811; +/* *********************************** */ +yyc_ST_END_HEREDOC: + YYDEBUG(813, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(815, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(816, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2375 "Zend/zend_language_scanner.l" + { + zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); + + yyleng = heredoc_label->indentation + heredoc_label->length; + YYCURSOR += yyleng - 1; + + heredoc_label_dtor(heredoc_label); + efree(heredoc_label); + + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_END_HEREDOC); +} +#line 7998 "Zend/zend_language_scanner.c" +/* *********************************** */ +yyc_ST_NOWDOC: + YYDEBUG(817, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(819, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(820, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2625 "Zend/zend_language_scanner.l" + { + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + CG(increment_lineno) = 1; /* For newline before label */ + + YYCURSOR -= indentation; + heredoc_label->indentation = indentation; + + BEGIN(ST_END_HEREDOC); + + goto nowdoc_scan_done; + } + /* fall through */ + default: + continue; } - goto yy813; } + +nowdoc_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + zend_copy_value(zendlval, yytext, yyleng); + + if (!EG(exception) && spacing != -1 && PARSER_MODE() + && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { + zend_copy_value(zendlval, yytext, yyleng); + } + + HANDLE_NEWLINES(yytext, yyleng - newline); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); +} +#line 8091 "Zend/zend_language_scanner.c" } -#line 2699 "Zend/zend_language_scanner.l" +#line 2718 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 08e5725f4fa98..5bfc71e778b38 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1113,8 +1113,11 @@ static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, { int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip; char *copy = Z_STRVAL_P(zendlval); + zend_bool trailing_newline = 0; while (j < len) { + trailing_newline = 0; + for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { if (copy[j] == '\r' || copy[j] == '\n') { goto skip; @@ -1141,13 +1144,20 @@ static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, skip: if (copy[j] == '\r') { copy[i++] = copy[j++]; + trailing_newline = 1; } if (copy[j] == '\n') { copy[i++] = copy[j++]; + trailing_newline = 1; } } + if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline) { + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); + goto error; + } + Z_STRVAL_P(zendlval)[new_len - newline] = '\0'; Z_STRLEN_P(zendlval) = new_len - newline; @@ -2300,6 +2310,7 @@ skip_escape_conversion: if (is_heredoc && !SCNG(heredoc_scan_ahead)) { zend_lex_state current_state; int heredoc_nesting_level = 1; + int first_token = 0; zend_save_lexical_state(¤t_state); @@ -2323,6 +2334,10 @@ skip_escape_conversion: break; } + if (!first_token) { + first_token = retval; + } + switch (retval) { case T_START_HEREDOC: ++heredoc_nesting_level; @@ -2335,6 +2350,10 @@ skip_escape_conversion: } } + if (first_token == T_VARIABLE && SCNG(heredoc_indentation)) { + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); + } + heredoc_label->indentation = SCNG(heredoc_indentation); heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index c89b1bba457d0..81299aa44ffab 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.16 */ +/* Generated by re2c 1.0.3 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From 6ad9bf6e2fa259bb235fa14cc8536da3c43cf95f Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 26 Mar 2018 22:16:55 +0100 Subject: [PATCH 48/54] Unindented interpolated variables are only invalid when there is indentation... --- Zend/tests/flexible-heredoc-nowdoc.phpt | 14 ++++++++++++++ Zend/zend_language_scanner.c | 2 +- Zend/zend_language_scanner.l | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Zend/tests/flexible-heredoc-nowdoc.phpt b/Zend/tests/flexible-heredoc-nowdoc.phpt index ef317898e78c3..175b9c6734487 100644 --- a/Zend/tests/flexible-heredoc-nowdoc.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc.phpt @@ -67,6 +67,17 @@ echo <<<'END' e END, PHP_EOL; +$var = 'Bar'; +var_dump(<< --EXPECT-- string(0) "" @@ -112,3 +123,6 @@ e c d e +string(3) "Bar" +string(4) " +Bar" \ No newline at end of file diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index d3fcf075aa392..cd3c56f52af37 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1156,7 +1156,7 @@ static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, } } - if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline) { + if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline && indentation) { zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); goto error; } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 5bfc71e778b38..9c775bfa9201b 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1153,7 +1153,7 @@ skip: } } - if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline) { + if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline && indentation) { zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); goto error; } From 2cb45317dcfaacb2c3699d2979c827754af8e72b Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 9 Apr 2018 16:20:12 +0100 Subject: [PATCH 49/54] Cater for other variable interpolation types --- Zend/zend_language_scanner.c | 242 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 6 +- 2 files changed, 128 insertions(+), 120 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index cd3c56f52af37..5f507a1f75efc 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1427,7 +1427,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2709 "Zend/zend_language_scanner.l" +#line 2713 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2239,7 +2239,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2369 "Zend/zend_language_scanner.l" +#line 2373 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4738,7 +4738,11 @@ int start_line = CG(zend_lineno); } } - if (first_token == T_VARIABLE && SCNG(heredoc_indentation)) { + if ( + (first_token == T_VARIABLE + || first_token == T_DOLLAR_OPEN_CURLY_BRACES + || first_token == T_CURLY_OPEN + ) && SCNG(heredoc_indentation)) { zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); } @@ -4752,7 +4756,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4756 "Zend/zend_language_scanner.c" +#line 4760 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4776,7 +4780,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 4780 "Zend/zend_language_scanner.c" +#line 4784 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4789,7 +4793,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 4793 "Zend/zend_language_scanner.c" +#line 4797 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4808,7 +4812,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 4812 "Zend/zend_language_scanner.c" +#line 4816 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4821,7 +4825,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 4825 "Zend/zend_language_scanner.c" +#line 4829 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4834,7 +4838,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 4838 "Zend/zend_language_scanner.c" +#line 4842 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4847,7 +4851,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 4851 "Zend/zend_language_scanner.c" +#line 4855 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4884,7 +4888,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 4888 "Zend/zend_language_scanner.c" +#line 4892 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4909,7 +4913,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 4913 "Zend/zend_language_scanner.c" +#line 4917 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4955,7 +4959,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 4959 "Zend/zend_language_scanner.c" +#line 4963 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -5016,7 +5020,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5020 "Zend/zend_language_scanner.c" +#line 5024 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5035,7 +5039,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5039 "Zend/zend_language_scanner.c" +#line 5043 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5090,7 +5094,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5094 "Zend/zend_language_scanner.c" +#line 5098 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5103,7 +5107,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 5107 "Zend/zend_language_scanner.c" +#line 5111 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5116,7 +5120,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 5120 "Zend/zend_language_scanner.c" +#line 5124 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5129,7 +5133,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 5133 "Zend/zend_language_scanner.c" +#line 5137 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5151,7 +5155,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 5155 "Zend/zend_language_scanner.c" +#line 5159 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5247,7 +5251,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 5251 "Zend/zend_language_scanner.c" +#line 5255 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5281,7 +5285,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5285 "Zend/zend_language_scanner.c" +#line 5289 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5350,7 +5354,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 5354 "Zend/zend_language_scanner.c" +#line 5358 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5384,7 +5388,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 5388 "Zend/zend_language_scanner.c" +#line 5392 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5433,7 +5437,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 5437 "Zend/zend_language_scanner.c" +#line 5441 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5494,7 +5498,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 5498 "Zend/zend_language_scanner.c" +#line 5502 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5513,7 +5517,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 5517 "Zend/zend_language_scanner.c" +#line 5521 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5526,7 +5530,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 5530 "Zend/zend_language_scanner.c" +#line 5534 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5539,7 +5543,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 5543 "Zend/zend_language_scanner.c" +#line 5547 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5623,7 +5627,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5627 "Zend/zend_language_scanner.c" +#line 5631 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5673,7 +5677,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 5677 "Zend/zend_language_scanner.c" +#line 5681 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5704,7 +5708,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 5708 "Zend/zend_language_scanner.c" +#line 5712 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5717,7 +5721,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 5721 "Zend/zend_language_scanner.c" +#line 5725 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5754,7 +5758,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 5758 "Zend/zend_language_scanner.c" +#line 5762 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5767,7 +5771,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 5771 "Zend/zend_language_scanner.c" +#line 5775 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5780,7 +5784,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 5784 "Zend/zend_language_scanner.c" +#line 5788 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5818,7 +5822,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 5822 "Zend/zend_language_scanner.c" +#line 5826 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5855,7 +5859,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 5859 "Zend/zend_language_scanner.c" +#line 5863 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5887,7 +5891,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 5891 "Zend/zend_language_scanner.c" +#line 5895 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5911,7 +5915,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 5915 "Zend/zend_language_scanner.c" +#line 5919 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5960,7 +5964,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 5964 "Zend/zend_language_scanner.c" +#line 5968 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -5970,7 +5974,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5974 "Zend/zend_language_scanner.c" +#line 5978 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5983,7 +5987,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 5987 "Zend/zend_language_scanner.c" +#line 5991 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5996,7 +6000,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6000 "Zend/zend_language_scanner.c" +#line 6004 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -6009,7 +6013,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6013 "Zend/zend_language_scanner.c" +#line 6017 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -6040,7 +6044,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6044 "Zend/zend_language_scanner.c" +#line 6048 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6053,7 +6057,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6057 "Zend/zend_language_scanner.c" +#line 6061 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6125,7 +6129,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 6129 "Zend/zend_language_scanner.c" +#line 6133 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6150,7 +6154,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 6154 "Zend/zend_language_scanner.c" +#line 6158 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6191,7 +6195,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 6195 "Zend/zend_language_scanner.c" +#line 6199 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6222,7 +6226,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 6226 "Zend/zend_language_scanner.c" +#line 6230 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6235,7 +6239,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 6239 "Zend/zend_language_scanner.c" +#line 6243 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6248,7 +6252,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 6252 "Zend/zend_language_scanner.c" +#line 6256 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6261,7 +6265,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 6265 "Zend/zend_language_scanner.c" +#line 6269 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6286,7 +6290,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 6290 "Zend/zend_language_scanner.c" +#line 6294 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6322,7 +6326,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 6326 "Zend/zend_language_scanner.c" +#line 6330 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6335,7 +6339,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 6339 "Zend/zend_language_scanner.c" +#line 6343 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6348,7 +6352,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 6352 "Zend/zend_language_scanner.c" +#line 6356 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6361,7 +6365,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6365 "Zend/zend_language_scanner.c" +#line 6369 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6380,7 +6384,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 6384 "Zend/zend_language_scanner.c" +#line 6388 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6432,7 +6436,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 6436 "Zend/zend_language_scanner.c" +#line 6440 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6462,7 +6466,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6466 "Zend/zend_language_scanner.c" +#line 6470 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6491,7 +6495,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6495 "Zend/zend_language_scanner.c" +#line 6499 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6504,7 +6508,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6508 "Zend/zend_language_scanner.c" +#line 6512 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6517,7 +6521,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 6521 "Zend/zend_language_scanner.c" +#line 6525 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6547,7 +6551,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 6551 "Zend/zend_language_scanner.c" +#line 6555 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6565,7 +6569,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6569 "Zend/zend_language_scanner.c" +#line 6573 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6637,7 +6641,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 6641 "Zend/zend_language_scanner.c" +#line 6645 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6653,7 +6657,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 6657 "Zend/zend_language_scanner.c" +#line 6661 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6675,7 +6679,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 6679 "Zend/zend_language_scanner.c" +#line 6683 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6685,7 +6689,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6689 "Zend/zend_language_scanner.c" +#line 6693 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6738,7 +6742,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2461 "Zend/zend_language_scanner.l" +#line 2465 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6783,7 +6787,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 6787 "Zend/zend_language_scanner.c" +#line 6791 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6807,12 +6811,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2401 "Zend/zend_language_scanner.l" +#line 2405 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6816 "Zend/zend_language_scanner.c" +#line 6820 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6837,7 +6841,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6841 "Zend/zend_language_scanner.c" +#line 6845 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6848,19 +6852,19 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6852 "Zend/zend_language_scanner.c" +#line 6856 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2389 "Zend/zend_language_scanner.l" +#line 2393 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 6864 "Zend/zend_language_scanner.c" +#line 6868 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6880,7 +6884,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6884 "Zend/zend_language_scanner.c" +#line 6888 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6904,7 +6908,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6908 "Zend/zend_language_scanner.c" +#line 6912 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6957,7 +6961,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2407 "Zend/zend_language_scanner.l" +#line 2411 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -7010,18 +7014,18 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 7014 "Zend/zend_language_scanner.c" +#line 7018 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2396 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 7025 "Zend/zend_language_scanner.c" +#line 7029 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7064,7 +7068,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7068 "Zend/zend_language_scanner.c" +#line 7072 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7075,19 +7079,19 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7079 "Zend/zend_language_scanner.c" +#line 7083 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2389 "Zend/zend_language_scanner.l" +#line 2393 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7091 "Zend/zend_language_scanner.c" +#line 7095 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7107,7 +7111,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7111 "Zend/zend_language_scanner.c" +#line 7115 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7131,7 +7135,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7135 "Zend/zend_language_scanner.c" +#line 7139 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7180,7 +7184,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2507 "Zend/zend_language_scanner.l" +#line 2511 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7297,7 +7301,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7301 "Zend/zend_language_scanner.c" +#line 7305 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7340,7 +7344,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7344 "Zend/zend_language_scanner.c" +#line 7348 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7351,19 +7355,19 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7355 "Zend/zend_language_scanner.c" +#line 7359 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2389 "Zend/zend_language_scanner.l" +#line 2393 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7367 "Zend/zend_language_scanner.c" +#line 7371 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7383,7 +7387,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7387 "Zend/zend_language_scanner.c" +#line 7391 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7407,7 +7411,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7411 "Zend/zend_language_scanner.c" +#line 7415 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7471,7 +7475,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7475 "Zend/zend_language_scanner.c" +#line 7479 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7525,7 +7529,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7529 "Zend/zend_language_scanner.c" +#line 7533 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7614,7 +7618,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2709 "Zend/zend_language_scanner.l" +#line 2713 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7623,7 +7627,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7627 "Zend/zend_language_scanner.c" +#line 7631 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7637,7 +7641,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7641 "Zend/zend_language_scanner.c" +#line 7645 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7649,7 +7653,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7653 "Zend/zend_language_scanner.c" +#line 7657 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7700,7 +7704,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7704 "Zend/zend_language_scanner.c" +#line 7708 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7726,7 +7730,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7730 "Zend/zend_language_scanner.c" +#line 7734 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7737,7 +7741,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 7741 "Zend/zend_language_scanner.c" +#line 7745 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7766,7 +7770,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7770 "Zend/zend_language_scanner.c" +#line 7774 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7787,7 +7791,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7791 "Zend/zend_language_scanner.c" +#line 7795 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7884,7 +7888,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 7888 "Zend/zend_language_scanner.c" +#line 7892 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7912,7 +7916,7 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7916 "Zend/zend_language_scanner.c" +#line 7920 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7926,7 +7930,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7930 "Zend/zend_language_scanner.c" +#line 7934 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7966,7 +7970,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 7970 "Zend/zend_language_scanner.c" +#line 7974 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7981,7 +7985,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2375 "Zend/zend_language_scanner.l" +#line 2379 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7994,7 +7998,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 7998 "Zend/zend_language_scanner.c" +#line 8002 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -8004,7 +8008,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2625 "Zend/zend_language_scanner.l" +#line 2629 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -8087,9 +8091,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 8091 "Zend/zend_language_scanner.c" +#line 8095 "Zend/zend_language_scanner.c" } -#line 2718 "Zend/zend_language_scanner.l" +#line 2722 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 9c775bfa9201b..83ec7df45c93e 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2350,7 +2350,11 @@ skip_escape_conversion: } } - if (first_token == T_VARIABLE && SCNG(heredoc_indentation)) { + if ( + (first_token == T_VARIABLE + || first_token == T_DOLLAR_OPEN_CURLY_BRACES + || first_token == T_CURLY_OPEN + ) && SCNG(heredoc_indentation)) { zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); } From ea719d5614285c21be60e3f0585482950330bc44 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 9 Apr 2018 16:26:26 +0100 Subject: [PATCH 50/54] Terminate test scripts with ?> (where possible) --- Zend/tests/flexible-heredoc-complex-test1.phpt | 2 ++ Zend/tests/flexible-heredoc-complex-test2.phpt | 2 ++ Zend/tests/flexible-heredoc-complex-test3.phpt | 2 ++ Zend/tests/flexible-heredoc-complex-test4.phpt | 2 ++ Zend/tests/flexible-heredoc-error1.phpt | 2 ++ Zend/tests/flexible-heredoc-error10.phpt | 1 + Zend/tests/flexible-heredoc-error2.phpt | 2 ++ Zend/tests/flexible-heredoc-error3.phpt | 2 ++ Zend/tests/flexible-heredoc-error4.phpt | 2 ++ Zend/tests/flexible-heredoc-error5.phpt | 2 ++ Zend/tests/flexible-heredoc-error6.phpt | 2 ++ Zend/tests/flexible-heredoc-error7.phpt | 2 ++ Zend/tests/flexible-heredoc-error8.phpt | 2 ++ Zend/tests/flexible-heredoc-error9.phpt | 1 + Zend/tests/flexible-heredoc-nowdoc-lineno.phpt | 2 ++ Zend/tests/flexible-nowdoc-error1.phpt | 2 ++ Zend/tests/flexible-nowdoc-error2.phpt | 2 ++ Zend/tests/flexible-nowdoc-error3.phpt | 2 ++ Zend/tests/flexible-nowdoc-error4.phpt | 2 ++ Zend/tests/flexible-nowdoc-error5.phpt | 2 ++ Zend/tests/flexible-nowdoc-error6.phpt | 2 ++ Zend/tests/flexible-nowdoc-error7.phpt | 2 ++ Zend/tests/flexible-nowdoc-error8.phpt | 2 ++ ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt | 1 + 24 files changed, 45 insertions(+) diff --git a/Zend/tests/flexible-heredoc-complex-test1.phpt b/Zend/tests/flexible-heredoc-complex-test1.phpt index b040c9b569009..3e148d065243b 100644 --- a/Zend/tests/flexible-heredoc-complex-test1.phpt +++ b/Zend/tests/flexible-heredoc-complex-test1.phpt @@ -19,6 +19,8 @@ var_dump(<< --EXPECT-- string(5) "a b diff --git a/Zend/tests/flexible-heredoc-complex-test2.phpt b/Zend/tests/flexible-heredoc-complex-test2.phpt index 2ccf156edf2be..d585e4b476b48 100644 --- a/Zend/tests/flexible-heredoc-complex-test2.phpt +++ b/Zend/tests/flexible-heredoc-complex-test2.phpt @@ -19,6 +19,8 @@ var_dump(<< --EXPECT-- string(5) "a b diff --git a/Zend/tests/flexible-heredoc-complex-test3.phpt b/Zend/tests/flexible-heredoc-complex-test3.phpt index 73bfc124e6715..cf68f123163b2 100644 --- a/Zend/tests/flexible-heredoc-complex-test3.phpt +++ b/Zend/tests/flexible-heredoc-complex-test3.phpt @@ -19,6 +19,8 @@ var_dump(<< --EXPECT-- string(8) " a b diff --git a/Zend/tests/flexible-heredoc-complex-test4.phpt b/Zend/tests/flexible-heredoc-complex-test4.phpt index 99a5904eaa93a..5be0f442f62fe 100644 --- a/Zend/tests/flexible-heredoc-complex-test4.phpt +++ b/Zend/tests/flexible-heredoc-complex-test4.phpt @@ -26,6 +26,8 @@ the same delimiter name as the heredoc FOO; var_dump($b); } + +?> --EXPECT-- string(8) "Test FOO" diff --git a/Zend/tests/flexible-heredoc-error1.phpt b/Zend/tests/flexible-heredoc-error1.phpt index 61071ec6fd448..dc56d4f8ed40d 100644 --- a/Zend/tests/flexible-heredoc-error1.phpt +++ b/Zend/tests/flexible-heredoc-error1.phpt @@ -8,5 +8,7 @@ echo << --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error10.phpt b/Zend/tests/flexible-heredoc-error10.phpt index fe3fcea06dbd4..6b7fe9ee777d3 100644 --- a/Zend/tests/flexible-heredoc-error10.phpt +++ b/Zend/tests/flexible-heredoc-error10.phpt @@ -8,5 +8,6 @@ var_dump(<< --EXPECTF-- Parse error: Invalid body indentation level (expecting an indentation level of at least 1) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error2.phpt b/Zend/tests/flexible-heredoc-error2.phpt index f7f5fa61356bf..28e4d74a10302 100644 --- a/Zend/tests/flexible-heredoc-error2.phpt +++ b/Zend/tests/flexible-heredoc-error2.phpt @@ -8,5 +8,7 @@ echo << --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error3.phpt b/Zend/tests/flexible-heredoc-error3.phpt index 940f5f16f2005..751f6b7926abc 100644 --- a/Zend/tests/flexible-heredoc-error3.phpt +++ b/Zend/tests/flexible-heredoc-error3.phpt @@ -8,5 +8,7 @@ echo << --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error4.phpt b/Zend/tests/flexible-heredoc-error4.phpt index 710a1f9077718..4542b015b84c4 100644 --- a/Zend/tests/flexible-heredoc-error4.phpt +++ b/Zend/tests/flexible-heredoc-error4.phpt @@ -8,5 +8,7 @@ echo << --EXPECTF-- Parse error: Invalid body indentation level (expecting an indentation level of at least 5) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error5.phpt b/Zend/tests/flexible-heredoc-error5.phpt index 85b813c5399e0..fdd6e5c950a4f 100644 --- a/Zend/tests/flexible-heredoc-error5.phpt +++ b/Zend/tests/flexible-heredoc-error5.phpt @@ -5,5 +5,7 @@ Flexible heredoc syntax error 5: mixing spaces and tabs in ending marker for 0 l echo << --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error6.phpt b/Zend/tests/flexible-heredoc-error6.phpt index 0a6af3eec00ef..c2daa72207af3 100644 --- a/Zend/tests/flexible-heredoc-error6.phpt +++ b/Zend/tests/flexible-heredoc-error6.phpt @@ -1,5 +1,7 @@ --TEST-- Flexible heredoc syntax error 6: no ending token on 0 length body +--DESCRIPTION-- +Note: the closing ?> has been deliberately elided. --FILE-- has been deliberately elided. --FILE-- --EXPECTF-- Parse error: Invalid body indentation level (expecting an indentation level of at least 1) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error9.phpt b/Zend/tests/flexible-heredoc-error9.phpt index 30f7a9f3630da..70777f26d1cbc 100644 --- a/Zend/tests/flexible-heredoc-error9.phpt +++ b/Zend/tests/flexible-heredoc-error9.phpt @@ -9,5 +9,6 @@ var_dump(<< --EXPECTF-- Parse error: Invalid body indentation level (expecting an indentation level of at least 2) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-nowdoc-lineno.phpt b/Zend/tests/flexible-heredoc-nowdoc-lineno.phpt index 4f4b89100a436..8aeddbd10d07c 100644 --- a/Zend/tests/flexible-heredoc-nowdoc-lineno.phpt +++ b/Zend/tests/flexible-heredoc-nowdoc-lineno.phpt @@ -24,5 +24,7 @@ try { } catch (Exception $e) { var_dump($e->getLine()); } + +?> --EXPECT-- int(20) diff --git a/Zend/tests/flexible-nowdoc-error1.phpt b/Zend/tests/flexible-nowdoc-error1.phpt index 4200b9ddbcc0f..5c086d2abd647 100644 --- a/Zend/tests/flexible-nowdoc-error1.phpt +++ b/Zend/tests/flexible-nowdoc-error1.phpt @@ -8,5 +8,7 @@ echo <<<'END' b c END; + +?> --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error2.phpt b/Zend/tests/flexible-nowdoc-error2.phpt index 87887e1d60925..e6bd544341df7 100644 --- a/Zend/tests/flexible-nowdoc-error2.phpt +++ b/Zend/tests/flexible-nowdoc-error2.phpt @@ -8,5 +8,7 @@ echo <<<'END' b c END; + +?> --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error3.phpt b/Zend/tests/flexible-nowdoc-error3.phpt index 9fce19ebdfd15..c50dd4fa4a2dd 100644 --- a/Zend/tests/flexible-nowdoc-error3.phpt +++ b/Zend/tests/flexible-nowdoc-error3.phpt @@ -8,5 +8,7 @@ echo <<<'END' b c END; + +?> --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error4.phpt b/Zend/tests/flexible-nowdoc-error4.phpt index aa8b260c090df..650a9a94f72c8 100644 --- a/Zend/tests/flexible-nowdoc-error4.phpt +++ b/Zend/tests/flexible-nowdoc-error4.phpt @@ -8,5 +8,7 @@ echo <<<'END' b c END; + +?> --EXPECTF-- Parse error: Invalid body indentation level (expecting an indentation level of at least 5) in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error5.phpt b/Zend/tests/flexible-nowdoc-error5.phpt index 8dc3340e38029..7579c10b72970 100644 --- a/Zend/tests/flexible-nowdoc-error5.phpt +++ b/Zend/tests/flexible-nowdoc-error5.phpt @@ -5,5 +5,7 @@ Flexible nowdoc syntax error 5: mixing spaces and tabs in ending marker for 0 le echo <<<'END' END; + +?> --EXPECTF-- Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line %d \ No newline at end of file diff --git a/Zend/tests/flexible-nowdoc-error6.phpt b/Zend/tests/flexible-nowdoc-error6.phpt index 4501cb5841bb2..e4f9ded844a22 100644 --- a/Zend/tests/flexible-nowdoc-error6.phpt +++ b/Zend/tests/flexible-nowdoc-error6.phpt @@ -1,5 +1,7 @@ --TEST-- Flexible nowdoc syntax error 6: no ending token on 0 length body +--DESCRIPTION-- +Note: the closing ?> has been deliberately elided. --FILE-- has been deliberately elided. --FILE-- --EXPECTF-- Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in %s on line %d \ No newline at end of file diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index 87ec6a91c0cc6..0156f8f82597c 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -138,6 +138,7 @@ foreach ($tests as $i => $test) { test($test, TOKEN_PARSE); } +?> --EXPECT-- Without TOKEN_PARSE: From 0057e4bb89e883d4a25aa31cce81630c7cbf9949 Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 9 Apr 2018 16:57:57 +0100 Subject: [PATCH 51/54] use ZEND_STRINGL instead of zend_copy_value --- Zend/zend_language_scanner.c | 4 ++-- Zend/zend_language_scanner.l | 4 ++-- ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 5f507a1f75efc..ce288ec85c8f7 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -8081,11 +8081,11 @@ int start_line = CG(zend_lineno); nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - zend_copy_value(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng); if (!EG(exception) && spacing != -1 && PARSER_MODE() && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - zend_copy_value(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng); } HANDLE_NEWLINES(yytext, yyleng - newline); diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 83ec7df45c93e..2489aca91c7de 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2698,11 +2698,11 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - zend_copy_value(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng); if (!EG(exception) && spacing != -1 && PARSER_MODE() && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - zend_copy_value(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng); } HANDLE_NEWLINES(yytext, yyleng - newline); diff --git a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt index 0156f8f82597c..5f21c384d79c2 100644 --- a/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt +++ b/ext/tokenizer/tests/token_get_all_heredoc_nowdoc.phpt @@ -410,6 +410,7 @@ Line 3: T_END_HEREDOC (' INNER_END') Test case 17 Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) on line 4 + Test case 18 Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) on line 4 From 2e8826e3de000e147631b79d0a6eb225117a2a2d Mon Sep 17 00:00:00 2001 From: Thomas Punt Date: Mon, 9 Apr 2018 17:29:59 +0100 Subject: [PATCH 52/54] Show erroneous line in exception error message --- Zend/tests/flexible-heredoc-error11.phpt | 13 + Zend/tests/flexible-heredoc-error12.phpt | 13 + Zend/tests/flexible-heredoc-error13.phpt | 13 + Zend/zend_language_scanner.c | 705 ++++++++++++----------- Zend/zend_language_scanner.l | 9 +- 5 files changed, 403 insertions(+), 350 deletions(-) create mode 100644 Zend/tests/flexible-heredoc-error11.phpt create mode 100644 Zend/tests/flexible-heredoc-error12.phpt create mode 100644 Zend/tests/flexible-heredoc-error13.phpt diff --git a/Zend/tests/flexible-heredoc-error11.phpt b/Zend/tests/flexible-heredoc-error11.phpt new file mode 100644 index 0000000000000..3e71cbd684d26 --- /dev/null +++ b/Zend/tests/flexible-heredoc-error11.phpt @@ -0,0 +1,13 @@ +--TEST-- +Flexible heredoc syntax error 11: show erroneous line in error message (variable interpolation) +--FILE-- + +--EXPECTF-- +Parse error: Invalid body indentation level (expecting an indentation level of at least 1) in %s on line 5 \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error12.phpt b/Zend/tests/flexible-heredoc-error12.phpt new file mode 100644 index 0000000000000..022c0811aa3b0 --- /dev/null +++ b/Zend/tests/flexible-heredoc-error12.phpt @@ -0,0 +1,13 @@ +--TEST-- +Flexible heredoc syntax error 12: show erroneous line in error message (mixed indentation) +--FILE-- + +--EXPECTF-- +Parse error: Invalid indentation - tabs and spaces cannot be mixed in %s on line 5 \ No newline at end of file diff --git a/Zend/tests/flexible-heredoc-error13.phpt b/Zend/tests/flexible-heredoc-error13.phpt new file mode 100644 index 0000000000000..f26b04e4602ca --- /dev/null +++ b/Zend/tests/flexible-heredoc-error13.phpt @@ -0,0 +1,13 @@ +--TEST-- +Flexible heredoc syntax error 12: show erroneous line in error message (lacking indentation) +--FILE-- + +--EXPECTF-- +Parse error: Invalid body indentation level (expecting an indentation level of at least 1) in %s on line 5 \ No newline at end of file diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index ce288ec85c8f7..907c3e7e61cfb 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1114,7 +1114,7 @@ static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quot static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { - int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip; + int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip, newline_count = 0; char *copy = Z_STRVAL_P(zendlval); zend_bool trailing_newline = 0; @@ -1127,11 +1127,13 @@ static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, } if (copy[j] != ' ' && copy[j] != '\t') { + CG(zend_lineno) += newline_count; zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); goto error; } if ((!using_spaces && copy[j] == ' ') || (using_spaces && copy[j] == '\t')) { + CG(zend_lineno) += newline_count; zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); goto error; } @@ -1154,9 +1156,14 @@ static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, copy[i++] = copy[j++]; trailing_newline = 1; } + + if (trailing_newline) { + ++newline_count; + } } if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline && indentation) { + CG(zend_lineno) += newline_count; zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); goto error; } @@ -1219,7 +1226,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1223 "Zend/zend_language_scanner.c" +#line 1230 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1427,7 +1434,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2713 "Zend/zend_language_scanner.l" +#line 2720 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1436,7 +1443,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 1440 "Zend/zend_language_scanner.c" +#line 1447 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); ++YYCURSOR; @@ -1448,11 +1455,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 1456 "Zend/zend_language_scanner.c" +#line 1463 "Zend/zend_language_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); yych = *++YYCURSOR; @@ -1460,17 +1467,17 @@ int start_line = CG(zend_lineno); yy9: YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1685 "Zend/zend_language_scanner.l" +#line 1692 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 1468 "Zend/zend_language_scanner.c" +#line 1475 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); ++YYCURSOR; YYDEBUG(11, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2196 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -1515,13 +1522,13 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 1519 "Zend/zend_language_scanner.c" +#line 1526 "Zend/zend_language_scanner.c" yy12: YYDEBUG(12, *YYCURSOR); ++YYCURSOR; YYDEBUG(13, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" +#line 2030 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -1553,7 +1560,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 1557 "Zend/zend_language_scanner.c" +#line 1564 "Zend/zend_language_scanner.c" yy14: YYDEBUG(14, *YYCURSOR); yych = *++YYCURSOR; @@ -1584,7 +1591,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2106 "Zend/zend_language_scanner.l" +#line 2113 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -1673,7 +1680,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); } -#line 1677 "Zend/zend_language_scanner.c" +#line 1684 "Zend/zend_language_scanner.c" yy19: YYDEBUG(19, *YYCURSOR); yyaccept = 0; @@ -1797,7 +1804,7 @@ int start_line = CG(zend_lineno); yy27: YYDEBUG(27, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1754 "Zend/zend_language_scanner.l" +#line 1761 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -1848,7 +1855,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN_WITH_VAL(T_LNUMBER); } -#line 1852 "Zend/zend_language_scanner.c" +#line 1859 "Zend/zend_language_scanner.c" yy28: YYDEBUG(28, *YYCURSOR); yyaccept = 1; @@ -1930,11 +1937,11 @@ int start_line = CG(zend_lineno); yy36: YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2018 "Zend/zend_language_scanner.l" +#line 2025 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 1938 "Zend/zend_language_scanner.c" +#line 1945 "Zend/zend_language_scanner.c" yy37: YYDEBUG(37, *YYCURSOR); yyaccept = 2; @@ -2219,11 +2226,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1425 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2227 "Zend/zend_language_scanner.c" +#line 2234 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -2239,23 +2246,23 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2373 "Zend/zend_language_scanner.l" +#line 2380 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 2248 "Zend/zend_language_scanner.c" +#line 2255 "Zend/zend_language_scanner.c" yy64: YYDEBUG(64, *YYCURSOR); ++YYCURSOR; YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1697 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2259 "Zend/zend_language_scanner.c" +#line 2266 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); yych = *++YYCURSOR; @@ -2267,7 +2274,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1702 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2275,7 +2282,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2279 "Zend/zend_language_scanner.c" +#line 2286 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2283,11 +2290,11 @@ int start_line = CG(zend_lineno); yy70: YYDEBUG(70, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1589 "Zend/zend_language_scanner.l" +#line 1596 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 2291 "Zend/zend_language_scanner.c" +#line 2298 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); ++YYCURSOR; @@ -2312,41 +2319,41 @@ int start_line = CG(zend_lineno); yy73: YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 2003 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2320 "Zend/zend_language_scanner.c" +#line 2327 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1633 "Zend/zend_language_scanner.l" +#line 1640 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 2330 "Zend/zend_language_scanner.c" +#line 2337 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1668 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 2340 "Zend/zend_language_scanner.c" +#line 2347 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); ++YYCURSOR; YYDEBUG(79, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 2350 "Zend/zend_language_scanner.c" +#line 2357 "Zend/zend_language_scanner.c" yy80: YYDEBUG(80, *YYCURSOR); ++YYCURSOR; @@ -2476,72 +2483,72 @@ int start_line = CG(zend_lineno); if (yych == '=') goto yy205; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1617 "Zend/zend_language_scanner.l" +#line 1624 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 2484 "Zend/zend_language_scanner.c" +#line 2491 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1613 "Zend/zend_language_scanner.l" +#line 1620 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 2494 "Zend/zend_language_scanner.c" +#line 2501 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1569 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 2504 "Zend/zend_language_scanner.c" +#line 2511 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); ++YYCURSOR; YYDEBUG(99, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1605 "Zend/zend_language_scanner.l" +#line 1612 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 2514 "Zend/zend_language_scanner.c" +#line 2521 "Zend/zend_language_scanner.c" yy100: YYDEBUG(100, *YYCURSOR); ++YYCURSOR; YYDEBUG(101, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1573 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 2524 "Zend/zend_language_scanner.c" +#line 2531 "Zend/zend_language_scanner.c" yy102: YYDEBUG(102, *YYCURSOR); ++YYCURSOR; YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1609 "Zend/zend_language_scanner.l" +#line 1616 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 2534 "Zend/zend_language_scanner.c" +#line 2541 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1397 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 2545 "Zend/zend_language_scanner.c" +#line 2552 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2564,7 +2571,7 @@ int start_line = CG(zend_lineno); yy109: YYDEBUG(109, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1858 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { const char *end; @@ -2573,17 +2580,17 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } -#line 2577 "Zend/zend_language_scanner.c" +#line 2584 "Zend/zend_language_scanner.c" yy110: YYDEBUG(110, *YYCURSOR); ++YYCURSOR; YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1629 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 2587 "Zend/zend_language_scanner.c" +#line 2594 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 4; @@ -2592,7 +2599,7 @@ int start_line = CG(zend_lineno); yy113: YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2055 "Zend/zend_language_scanner.l" +#line 2062 "Zend/zend_language_scanner.l" { int doc_com; @@ -2631,17 +2638,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 2635 "Zend/zend_language_scanner.c" +#line 2642 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); ++YYCURSOR; YYDEBUG(115, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" +#line 1632 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 2645 "Zend/zend_language_scanner.c" +#line 2652 "Zend/zend_language_scanner.c" yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; @@ -2673,11 +2680,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1421 "Zend/zend_language_scanner.l" +#line 1428 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 2681 "Zend/zend_language_scanner.c" +#line 2688 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 5; @@ -2688,22 +2695,22 @@ int start_line = CG(zend_lineno); yy122: YYDEBUG(122, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" +#line 1684 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 2696 "Zend/zend_language_scanner.c" +#line 2703 "Zend/zend_language_scanner.c" yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; if (yych == '>') goto yy223; YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1597 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 2707 "Zend/zend_language_scanner.c" +#line 2714 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); ++YYCURSOR; @@ -2714,42 +2721,42 @@ int start_line = CG(zend_lineno); if (yych == '=') goto yy225; YYDEBUG(127, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 2722 "Zend/zend_language_scanner.c" +#line 2729 "Zend/zend_language_scanner.c" yy128: YYDEBUG(128, *YYCURSOR); ++YYCURSOR; YYDEBUG(129, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1553 "Zend/zend_language_scanner.l" +#line 1560 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 2732 "Zend/zend_language_scanner.c" +#line 2739 "Zend/zend_language_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); ++YYCURSOR; YYDEBUG(131, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1601 "Zend/zend_language_scanner.l" +#line 1608 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 2742 "Zend/zend_language_scanner.c" +#line 2749 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; if (yych == '=') goto yy227; YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1681 "Zend/zend_language_scanner.l" +#line 1688 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 2753 "Zend/zend_language_scanner.c" +#line 2760 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; @@ -2758,7 +2765,7 @@ int start_line = CG(zend_lineno); yy135: YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2094 "Zend/zend_language_scanner.l" +#line 2101 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); if (yytext[yyleng-1] != '>') { @@ -2769,17 +2776,17 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); } -#line 2773 "Zend/zend_language_scanner.c" +#line 2780 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); ++YYCURSOR; YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1433 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 2783 "Zend/zend_language_scanner.c" +#line 2790 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; @@ -2806,11 +2813,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(142, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1337 "Zend/zend_language_scanner.l" +#line 1344 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 2814 "Zend/zend_language_scanner.c" +#line 2821 "Zend/zend_language_scanner.c" yy143: YYDEBUG(143, *YYCURSOR); yych = *++YYCURSOR; @@ -2896,11 +2903,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(151, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1305 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 2904 "Zend/zend_language_scanner.c" +#line 2911 "Zend/zend_language_scanner.c" yy152: YYDEBUG(152, *YYCURSOR); yych = *++YYCURSOR; @@ -2985,11 +2992,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(164, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1281 "Zend/zend_language_scanner.l" +#line 1288 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 2993 "Zend/zend_language_scanner.c" +#line 3000 "Zend/zend_language_scanner.c" yy165: YYDEBUG(165, *YYCURSOR); yych = *++YYCURSOR; @@ -3050,11 +3057,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1665 "Zend/zend_language_scanner.l" +#line 1672 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3058 "Zend/zend_language_scanner.c" +#line 3065 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3168,11 +3175,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1660 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3176 "Zend/zend_language_scanner.c" +#line 3183 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); yych = *++YYCURSOR; @@ -3200,31 +3207,31 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1649 "Zend/zend_language_scanner.l" +#line 1656 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3208 "Zend/zend_language_scanner.c" +#line 3215 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); ++YYCURSOR; YYDEBUG(192, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1657 "Zend/zend_language_scanner.l" +#line 1664 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3218 "Zend/zend_language_scanner.c" +#line 3225 "Zend/zend_language_scanner.c" yy193: YYDEBUG(193, *YYCURSOR); ++YYCURSOR; YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1581 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3228 "Zend/zend_language_scanner.c" +#line 3235 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3290,21 +3297,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3298 "Zend/zend_language_scanner.c" +#line 3305 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 3308 "Zend/zend_language_scanner.c" +#line 3315 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3328,7 +3335,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1726 "Zend/zend_language_scanner.l" +#line 1733 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3356,7 +3363,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 3360 "Zend/zend_language_scanner.c" +#line 3367 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3382,7 +3389,7 @@ int start_line = CG(zend_lineno); } YYDEBUG(218, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 1812 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3410,7 +3417,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 3414 "Zend/zend_language_scanner.c" +#line 3421 "Zend/zend_language_scanner.c" yy219: YYDEBUG(219, *YYCURSOR); ++YYCURSOR; @@ -3445,41 +3452,41 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(222, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1644 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3453 "Zend/zend_language_scanner.c" +#line 3460 "Zend/zend_language_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); ++YYCURSOR; YYDEBUG(224, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1593 "Zend/zend_language_scanner.l" +#line 1600 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3463 "Zend/zend_language_scanner.c" +#line 3470 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1577 "Zend/zend_language_scanner.l" +#line 1584 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3473 "Zend/zend_language_scanner.c" +#line 3480 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); ++YYCURSOR; YYDEBUG(228, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1641 "Zend/zend_language_scanner.l" +#line 1648 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3483 "Zend/zend_language_scanner.c" +#line 3490 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); ++YYCURSOR; @@ -3503,11 +3510,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(233, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1669 "Zend/zend_language_scanner.l" +#line 1676 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 3511 "Zend/zend_language_scanner.c" +#line 3518 "Zend/zend_language_scanner.c" yy234: YYDEBUG(234, *YYCURSOR); yych = *++YYCURSOR; @@ -3588,11 +3595,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1239 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 3596 "Zend/zend_language_scanner.c" +#line 3603 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); yych = *++YYCURSOR; @@ -3674,11 +3681,11 @@ int start_line = CG(zend_lineno); yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1309 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 3682 "Zend/zend_language_scanner.c" +#line 3689 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -3747,11 +3754,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(268, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1437 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 3755 "Zend/zend_language_scanner.c" +#line 3762 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; @@ -3824,11 +3831,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1265 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 3832 "Zend/zend_language_scanner.c" +#line 3839 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; @@ -3843,11 +3850,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(282, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1501 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 3851 "Zend/zend_language_scanner.c" +#line 3858 "Zend/zend_language_scanner.c" yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; @@ -3856,11 +3863,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(284, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1445 "Zend/zend_language_scanner.l" +#line 1452 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 3864 "Zend/zend_language_scanner.c" +#line 3871 "Zend/zend_language_scanner.c" yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; @@ -3875,11 +3882,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(287, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1673 "Zend/zend_language_scanner.l" +#line 1680 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3883 "Zend/zend_language_scanner.c" +#line 3890 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; @@ -4093,11 +4100,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1349 "Zend/zend_language_scanner.l" +#line 1356 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 4101 "Zend/zend_language_scanner.c" +#line 4108 "Zend/zend_language_scanner.c" yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; @@ -4148,11 +4155,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(327, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1369 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 4156 "Zend/zend_language_scanner.c" +#line 4163 "Zend/zend_language_scanner.c" yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; @@ -4176,11 +4183,11 @@ int start_line = CG(zend_lineno); yy329: YYDEBUG(329, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1293 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 4184 "Zend/zend_language_scanner.c" +#line 4191 "Zend/zend_language_scanner.c" yy330: YYDEBUG(330, *YYCURSOR); yych = *++YYCURSOR; @@ -4225,11 +4232,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(337, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1477 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 4233 "Zend/zend_language_scanner.c" +#line 4240 "Zend/zend_language_scanner.c" yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; @@ -4238,11 +4245,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1235 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 4246 "Zend/zend_language_scanner.c" +#line 4253 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4281,11 +4288,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(346, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1365 "Zend/zend_language_scanner.l" +#line 1372 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 4289 "Zend/zend_language_scanner.c" +#line 4296 "Zend/zend_language_scanner.c" yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; @@ -4334,11 +4341,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(353, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1557 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 4342 "Zend/zend_language_scanner.c" +#line 4349 "Zend/zend_language_scanner.c" yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; @@ -4525,11 +4532,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(385, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1456 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4533 "Zend/zend_language_scanner.c" +#line 4540 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; @@ -4626,7 +4633,7 @@ int start_line = CG(zend_lineno); yy397: YYDEBUG(397, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2242 "Zend/zend_language_scanner.l" +#line 2249 "Zend/zend_language_scanner.l" { char *s; unsigned char *saved_cursor; @@ -4756,7 +4763,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 4760 "Zend/zend_language_scanner.c" +#line 4767 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4776,11 +4783,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(401, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1561 "Zend/zend_language_scanner.l" +#line 1568 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 4784 "Zend/zend_language_scanner.c" +#line 4791 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4789,11 +4796,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(403, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" +#line 1364 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 4797 "Zend/zend_language_scanner.c" +#line 4804 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4808,11 +4815,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(406, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1269 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 4816 "Zend/zend_language_scanner.c" +#line 4823 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4821,11 +4828,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1377 "Zend/zend_language_scanner.l" +#line 1384 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 4829 "Zend/zend_language_scanner.c" +#line 4836 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4834,11 +4841,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(410, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1441 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 4842 "Zend/zend_language_scanner.c" +#line 4849 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4847,11 +4854,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(412, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1247 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 4855 "Zend/zend_language_scanner.c" +#line 4862 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4884,11 +4891,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(418, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1517 "Zend/zend_language_scanner.l" +#line 1524 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 4892 "Zend/zend_language_scanner.c" +#line 4899 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4909,11 +4916,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(422, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1289 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 4917 "Zend/zend_language_scanner.c" +#line 4924 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4955,11 +4962,11 @@ int start_line = CG(zend_lineno); yy427: YYDEBUG(427, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1533 "Zend/zend_language_scanner.l" +#line 1540 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 4963 "Zend/zend_language_scanner.c" +#line 4970 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -5016,11 +5023,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1513 "Zend/zend_language_scanner.l" +#line 1520 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5024 "Zend/zend_language_scanner.c" +#line 5031 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5035,11 +5042,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(440, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1373 "Zend/zend_language_scanner.l" +#line 1380 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5043 "Zend/zend_language_scanner.c" +#line 5050 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5090,11 +5097,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(449, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1277 "Zend/zend_language_scanner.l" +#line 1284 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5098 "Zend/zend_language_scanner.c" +#line 5105 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5103,11 +5110,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(451, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1385 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5111 "Zend/zend_language_scanner.c" +#line 5118 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5116,11 +5123,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(453, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1549 "Zend/zend_language_scanner.l" +#line 1556 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 5124 "Zend/zend_language_scanner.c" +#line 5131 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5129,11 +5136,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(455, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1297 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5137 "Zend/zend_language_scanner.c" +#line 5144 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5151,11 +5158,11 @@ int start_line = CG(zend_lineno); yy457: YYDEBUG(457, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1261 "Zend/zend_language_scanner.l" +#line 1268 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5159 "Zend/zend_language_scanner.c" +#line 5166 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5247,11 +5254,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1469 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 5255 "Zend/zend_language_scanner.c" +#line 5262 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5281,11 +5288,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(479, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1453 "Zend/zend_language_scanner.l" +#line 1460 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5289 "Zend/zend_language_scanner.c" +#line 5296 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5350,11 +5357,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1285 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 5358 "Zend/zend_language_scanner.c" +#line 5365 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5384,11 +5391,11 @@ int start_line = CG(zend_lineno); yy493: YYDEBUG(493, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1313 "Zend/zend_language_scanner.l" +#line 1320 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 5392 "Zend/zend_language_scanner.c" +#line 5399 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5433,11 +5440,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(501, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1509 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5441 "Zend/zend_language_scanner.c" +#line 5448 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5494,11 +5501,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1545 "Zend/zend_language_scanner.l" +#line 1552 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 5502 "Zend/zend_language_scanner.c" +#line 5509 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5513,11 +5520,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1251 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 5521 "Zend/zend_language_scanner.c" +#line 5528 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5526,11 +5533,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(516, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1525 "Zend/zend_language_scanner.l" +#line 1532 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5534 "Zend/zend_language_scanner.c" +#line 5541 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5539,11 +5546,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1341 "Zend/zend_language_scanner.l" +#line 1348 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5547 "Zend/zend_language_scanner.c" +#line 5554 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5623,11 +5630,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(531, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1461 "Zend/zend_language_scanner.l" +#line 1468 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5631 "Zend/zend_language_scanner.c" +#line 5638 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5673,11 +5680,11 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1473 "Zend/zend_language_scanner.l" +#line 1480 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 5681 "Zend/zend_language_scanner.c" +#line 5688 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5704,11 +5711,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(544, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 5712 "Zend/zend_language_scanner.c" +#line 5719 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5717,11 +5724,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1353 "Zend/zend_language_scanner.l" +#line 1360 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 5725 "Zend/zend_language_scanner.c" +#line 5732 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5754,11 +5761,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(552, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1389 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 5762 "Zend/zend_language_scanner.c" +#line 5769 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5767,11 +5774,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(554, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1273 "Zend/zend_language_scanner.l" +#line 1280 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 5775 "Zend/zend_language_scanner.c" +#line 5782 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5780,11 +5787,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(556, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1317 "Zend/zend_language_scanner.l" +#line 1324 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 5788 "Zend/zend_language_scanner.c" +#line 5795 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5818,11 +5825,11 @@ int start_line = CG(zend_lineno); yy560: YYDEBUG(560, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1481 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5826 "Zend/zend_language_scanner.c" +#line 5833 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5855,11 +5862,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(566, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1537 "Zend/zend_language_scanner.l" +#line 1544 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5863 "Zend/zend_language_scanner.c" +#line 5870 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5887,11 +5894,11 @@ int start_line = CG(zend_lineno); yy569: YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1489 "Zend/zend_language_scanner.l" +#line 1496 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 5895 "Zend/zend_language_scanner.c" +#line 5902 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5911,11 +5918,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(573, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1891 "Zend/zend_language_scanner.l" +#line 1898 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 5919 "Zend/zend_language_scanner.c" +#line 5926 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5960,21 +5967,21 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(582, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 5968 "Zend/zend_language_scanner.c" +#line 5975 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 5978 "Zend/zend_language_scanner.c" +#line 5985 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -5983,11 +5990,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1529 "Zend/zend_language_scanner.l" +#line 1536 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5991 "Zend/zend_language_scanner.c" +#line 5998 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5996,11 +6003,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(588, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1565 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6004 "Zend/zend_language_scanner.c" +#line 6011 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -6009,11 +6016,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(590, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1361 "Zend/zend_language_scanner.l" +#line 1368 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6017 "Zend/zend_language_scanner.c" +#line 6024 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -6040,11 +6047,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1301 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6048 "Zend/zend_language_scanner.c" +#line 6055 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6053,11 +6060,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(597, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1243 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6061 "Zend/zend_language_scanner.c" +#line 6068 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6125,11 +6132,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(609, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1887 "Zend/zend_language_scanner.l" +#line 1894 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 6133 "Zend/zend_language_scanner.c" +#line 6140 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6150,11 +6157,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1883 "Zend/zend_language_scanner.l" +#line 1890 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 6158 "Zend/zend_language_scanner.c" +#line 6165 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6191,11 +6198,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(620, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1345 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6199 "Zend/zend_language_scanner.c" +#line 6206 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6222,11 +6229,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(625, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1505 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 6230 "Zend/zend_language_scanner.c" +#line 6237 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6235,11 +6242,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(627, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1381 "Zend/zend_language_scanner.l" +#line 1388 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 6243 "Zend/zend_language_scanner.c" +#line 6250 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6248,11 +6255,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(629, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1497 "Zend/zend_language_scanner.l" +#line 1504 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 6256 "Zend/zend_language_scanner.c" +#line 6263 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6261,11 +6268,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(631, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1541 "Zend/zend_language_scanner.l" +#line 1548 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 6269 "Zend/zend_language_scanner.c" +#line 6276 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6286,11 +6293,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(635, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" +#line 1874 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 6294 "Zend/zend_language_scanner.c" +#line 6301 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6322,11 +6329,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1871 "Zend/zend_language_scanner.l" +#line 1878 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 6330 "Zend/zend_language_scanner.c" +#line 6337 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6335,11 +6342,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(643, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1329 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 6343 "Zend/zend_language_scanner.c" +#line 6350 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6348,11 +6355,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1321 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6356 "Zend/zend_language_scanner.c" +#line 6363 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6361,11 +6368,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1393 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6369 "Zend/zend_language_scanner.c" +#line 6376 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6380,11 +6387,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1333 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 6388 "Zend/zend_language_scanner.c" +#line 6395 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6432,11 +6439,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1879 "Zend/zend_language_scanner.l" +#line 1886 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 6440 "Zend/zend_language_scanner.c" +#line 6447 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6460,13 +6467,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1255 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6470 "Zend/zend_language_scanner.c" +#line 6477 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6491,11 +6498,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(666, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1485 "Zend/zend_language_scanner.l" +#line 1492 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6499 "Zend/zend_language_scanner.c" +#line 6506 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6504,11 +6511,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1493 "Zend/zend_language_scanner.l" +#line 1500 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6512 "Zend/zend_language_scanner.c" +#line 6519 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6517,11 +6524,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1875 "Zend/zend_language_scanner.l" +#line 1882 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 6525 "Zend/zend_language_scanner.c" +#line 6532 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6547,11 +6554,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1895 "Zend/zend_language_scanner.l" +#line 1902 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 6555 "Zend/zend_language_scanner.c" +#line 6562 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6565,11 +6572,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1521 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6573 "Zend/zend_language_scanner.c" +#line 6580 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6635,13 +6642,13 @@ int start_line = CG(zend_lineno); yy682: YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 6645 "Zend/zend_language_scanner.c" +#line 6652 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6653,11 +6660,11 @@ int start_line = CG(zend_lineno); } YYDEBUG(685, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { goto return_whitespace; } -#line 6661 "Zend/zend_language_scanner.c" +#line 6668 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6674,22 +6681,22 @@ int start_line = CG(zend_lineno); } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1417 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 6683 "Zend/zend_language_scanner.c" +#line 6690 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6693 "Zend/zend_language_scanner.c" +#line 6700 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6742,7 +6749,7 @@ int start_line = CG(zend_lineno); yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2465 "Zend/zend_language_scanner.l" +#line 2472 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6787,7 +6794,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 6791 "Zend/zend_language_scanner.c" +#line 6798 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6811,12 +6818,12 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2405 "Zend/zend_language_scanner.l" +#line 2412 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6820 "Zend/zend_language_scanner.c" +#line 6827 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6837,34 +6844,34 @@ int start_line = CG(zend_lineno); yy702: YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 2003 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6845 "Zend/zend_language_scanner.c" +#line 6852 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1703 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6856 "Zend/zend_language_scanner.c" +#line 6863 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2393 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 6868 "Zend/zend_language_scanner.c" +#line 6875 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6878,13 +6885,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(710, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1990 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6888 "Zend/zend_language_scanner.c" +#line 6895 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6902,13 +6909,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1982 "Zend/zend_language_scanner.l" +#line 1989 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6912 "Zend/zend_language_scanner.c" +#line 6919 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6961,7 +6968,7 @@ int start_line = CG(zend_lineno); yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2411 "Zend/zend_language_scanner.l" +#line 2418 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -7014,18 +7021,18 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_ERROR); } } -#line 7018 "Zend/zend_language_scanner.c" +#line 7025 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2400 "Zend/zend_language_scanner.l" +#line 2407 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 7029 "Zend/zend_language_scanner.c" +#line 7036 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7064,34 +7071,34 @@ int start_line = CG(zend_lineno); yy724: YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 2003 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7072 "Zend/zend_language_scanner.c" +#line 7079 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; YYDEBUG(726, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1703 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7083 "Zend/zend_language_scanner.c" +#line 7090 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2393 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7095 "Zend/zend_language_scanner.c" +#line 7102 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7105,13 +7112,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1990 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7115 "Zend/zend_language_scanner.c" +#line 7122 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7129,13 +7136,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1982 "Zend/zend_language_scanner.l" +#line 1989 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7139 "Zend/zend_language_scanner.c" +#line 7146 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7184,7 +7191,7 @@ int start_line = CG(zend_lineno); yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2511 "Zend/zend_language_scanner.l" +#line 2518 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7301,7 +7308,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7305 "Zend/zend_language_scanner.c" +#line 7312 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7340,34 +7347,34 @@ int start_line = CG(zend_lineno); yy744: YYDEBUG(744, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 2003 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7348 "Zend/zend_language_scanner.c" +#line 7355 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1703 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7359 "Zend/zend_language_scanner.c" +#line 7366 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2393 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7371 "Zend/zend_language_scanner.c" +#line 7378 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7381,13 +7388,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1990 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7391 "Zend/zend_language_scanner.c" +#line 7398 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7405,13 +7412,13 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1982 "Zend/zend_language_scanner.l" +#line 1989 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7415 "Zend/zend_language_scanner.c" +#line 7422 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7468,14 +7475,14 @@ int start_line = CG(zend_lineno); yy759: YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1719 "Zend/zend_language_scanner.l" +#line 1726 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7479 "Zend/zend_language_scanner.c" +#line 7486 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7522,14 +7529,14 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1711 "Zend/zend_language_scanner.l" +#line 1718 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7533 "Zend/zend_language_scanner.c" +#line 7540 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7618,7 +7625,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2713 "Zend/zend_language_scanner.l" +#line 2720 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7627,13 +7634,13 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7631 "Zend/zend_language_scanner.c" +#line 7638 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2010 "Zend/zend_language_scanner.l" +#line 2017 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7641,19 +7648,19 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7645 "Zend/zend_language_scanner.c" +#line 7652 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; yy773: YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2005 "Zend/zend_language_scanner.l" +#line 2012 "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 7657 "Zend/zend_language_scanner.c" +#line 7664 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7688,7 +7695,7 @@ int start_line = CG(zend_lineno); yy776: YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1833 "Zend/zend_language_scanner.l" +#line 1840 "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; @@ -7704,7 +7711,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7708 "Zend/zend_language_scanner.c" +#line 7715 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7726,22 +7733,22 @@ int start_line = CG(zend_lineno); } YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2018 "Zend/zend_language_scanner.l" +#line 2025 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7734 "Zend/zend_language_scanner.c" +#line 7741 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2000 "Zend/zend_language_scanner.l" +#line 2007 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7745 "Zend/zend_language_scanner.c" +#line 7752 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7766,11 +7773,11 @@ int start_line = CG(zend_lineno); yy786: YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 2003 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7774 "Zend/zend_language_scanner.c" +#line 7781 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7782,7 +7789,7 @@ int start_line = CG(zend_lineno); yy789: YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1849 "Zend/zend_language_scanner.l" +#line 1856 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ if (yyleng == 1) { ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); @@ -7791,7 +7798,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7795 "Zend/zend_language_scanner.c" +#line 7802 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7841,7 +7848,7 @@ int start_line = CG(zend_lineno); yy800: YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1931 "Zend/zend_language_scanner.l" +#line 1938 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7888,7 +7895,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 7892 "Zend/zend_language_scanner.c" +#line 7899 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7904,7 +7911,7 @@ int start_line = CG(zend_lineno); yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1919 "Zend/zend_language_scanner.l" +#line 1926 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -7916,13 +7923,13 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 7920 "Zend/zend_language_scanner.c" +#line 7927 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1900 "Zend/zend_language_scanner.l" +#line 1907 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); if (PARSER_MODE()) { @@ -7930,7 +7937,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7934 "Zend/zend_language_scanner.c" +#line 7941 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -7961,7 +7968,7 @@ int start_line = CG(zend_lineno); yy811: YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1909 "Zend/zend_language_scanner.l" +#line 1916 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); @@ -7970,7 +7977,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_OPEN_TAG); } -#line 7974 "Zend/zend_language_scanner.c" +#line 7981 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -7985,7 +7992,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2379 "Zend/zend_language_scanner.l" +#line 2386 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -7998,7 +8005,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 8002 "Zend/zend_language_scanner.c" +#line 8009 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -8008,7 +8015,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2629 "Zend/zend_language_scanner.l" +#line 2636 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -8091,9 +8098,9 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 8095 "Zend/zend_language_scanner.c" +#line 8102 "Zend/zend_language_scanner.c" } -#line 2722 "Zend/zend_language_scanner.l" +#line 2729 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 2489aca91c7de..e7ea1b2a23113 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1111,7 +1111,7 @@ skip_escape_conversion: static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, int indentation, zend_bool using_spaces) { - int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip; + int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip, newline_count = 0; char *copy = Z_STRVAL_P(zendlval); zend_bool trailing_newline = 0; @@ -1124,11 +1124,13 @@ static zend_bool strip_multiline_string_indentation(zval *zendlval, int newline, } if (copy[j] != ' ' && copy[j] != '\t') { + CG(zend_lineno) += newline_count; zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); goto error; } if ((!using_spaces && copy[j] == ' ') || (using_spaces && copy[j] == '\t')) { + CG(zend_lineno) += newline_count; zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); goto error; } @@ -1151,9 +1153,14 @@ skip: copy[i++] = copy[j++]; trailing_newline = 1; } + + if (trailing_newline) { + ++newline_count; + } } if (YYSTATE != STATE(ST_END_HEREDOC) && trailing_newline && indentation) { + CG(zend_lineno) += newline_count; zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); goto error; } From 1c22f7337c1b50ce5c039a05ba962dfea4c35ecb Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 13 Apr 2018 19:42:07 +0200 Subject: [PATCH 53/54] Return T_ERROR on error in parser mode --- Zend/zend_language_scanner.c | 9742 +++++++++++++++-------------- Zend/zend_language_scanner.l | 10 +- Zend/zend_language_scanner_defs.h | 2 +- 3 files changed, 4877 insertions(+), 4877 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 907c3e7e61cfb..46e7055ccfa3b 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 */ +/* Generated by re2c 0.16 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -75,7 +75,6 @@ /* perform sanity check. If this message is triggered you should increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ #define YYMAXFILL 16 - #if ZEND_MMAP_AHEAD < YYMAXFILL # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL #endif @@ -1226,7 +1225,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1230 "Zend/zend_language_scanner.c" +#line 1229 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1268,1054 +1267,818 @@ int start_line = CG(zend_lineno); } } /* *********************************** */ -yyc_ST_IN_SCRIPTING: +yyc_INITIAL: + YYDEBUG(1, *YYCURSOR); + YYFILL(7); + yych = *YYCURSOR; + if (yych == '<') goto yy5; + YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; +yy4: + YYDEBUG(4, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1938 "Zend/zend_language_scanner.l" { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 4, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 216, 216, 152, 152, 152, 152, 152, 152, - 152, 152, 0, 0, 0, 0, 0, 0, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - }; - YYDEBUG(1, *YYCURSOR); - YYFILL(16); - yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy5; - } - switch (yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: goto yy3; - case ' ': - case '!': goto yy8; - case '"': goto yy10; - case '#': goto yy12; - case '$': goto yy14; - case '%': goto yy15; - case '&': goto yy16; - case '\'': goto yy17; - case '(': goto yy19; - case ')': - case ',': - case ';': - case '@': - case '[': - case ']': - case '~': goto yy20; - case '*': goto yy21; - case '+': goto yy22; - case '-': goto yy23; - case '.': goto yy24; - case '/': goto yy25; - case '0': goto yy26; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy28; - case ':': goto yy30; - case '<': goto yy31; - case '=': goto yy32; - case '>': goto yy33; - case '?': goto yy34; - case 'A': - case 'a': goto yy35; - case 'B': - case 'b': goto yy37; - case 'C': - case 'c': goto yy38; - case 'D': - case 'd': goto yy39; - case 'E': - case 'e': goto yy40; - case 'F': - case 'f': goto yy41; - case 'G': - case 'g': goto yy42; - case 'I': - case 'i': goto yy45; - case 'L': - case 'l': goto yy46; - case 'N': - case 'n': goto yy47; - case 'O': - case 'o': goto yy48; - case 'P': - case 'p': goto yy49; - case 'R': - case 'r': goto yy50; - case 'S': - case 's': goto yy51; - case 'T': - case 't': goto yy52; - case 'U': - case 'u': goto yy53; - case 'V': - case 'v': goto yy54; - case 'W': - case 'w': goto yy55; - case 'X': - case 'x': goto yy56; - case 'Y': - case 'y': goto yy57; - case '\\': goto yy58; - case '^': goto yy60; - case '_': goto yy61; - case '`': goto yy62; - case '{': goto yy64; - case '|': goto yy66; - case '}': goto yy67; - default: goto yy43; - } -yy3: - YYDEBUG(3, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(4, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2720 "Zend/zend_language_scanner.l" - { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); } - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 1447 "Zend/zend_language_scanner.c" -yy5: - YYDEBUG(5, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(6, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy5; - } - YYDEBUG(7, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 1463 "Zend/zend_language_scanner.c" -yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy69; -yy9: - YYDEBUG(9, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(yytext[0]); -} -#line 1475 "Zend/zend_language_scanner.c" -yy10: - YYDEBUG(10, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(11, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "Zend/zend_language_scanner.l" - { - int bprefix = (yytext[0] != '"') ? 1 : 0; +inline_char_handler: - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); - } else { - RETURN_TOKEN(T_ERROR); - } - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } + while (1) { + YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); - YYCURSOR--; - break; - } + YYCURSOR = ptr ? ptr + 1 : YYLIMIT; - /* Remember how much was scanned to save rescanning */ - SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); + if (YYCURSOR >= YYLIMIT) { + break; + } - YYCURSOR = SCNG(yy_text) + yyleng; + if (*YYCURSOR == '?') { + if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ - BEGIN(ST_DOUBLE_QUOTES); - RETURN_TOKEN('"'); -} -#line 1526 "Zend/zend_language_scanner.c" -yy12: - YYDEBUG(12, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(13, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2030 "Zend/zend_language_scanner.l" - { - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - CG(zend_lineno)++; + YYCURSOR--; break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; + } } - - break; } yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); + if (SCNG(output_filter)) { + size_t readsize; + char *s = NULL; + size_t sz = 0; + // TODO: avoid reallocation ??? + readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); + ZVAL_STRINGL(zendlval, s, sz); + efree(s); + if (readsize < yyleng) { + yyless(readsize); + } + } else if (yyleng == 1) { + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); + } else { + ZVAL_STRINGL(zendlval, yytext, yyleng); } - RETURN_TOKEN(T_COMMENT); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 1564 "Zend/zend_language_scanner.c" -yy14: - YYDEBUG(14, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy9; - if (yych <= 'Z') goto yy71; - if (yych <= '^') goto yy9; - goto yy71; - } else { - if (yych <= '`') goto yy9; - if (yych <= 'z') goto yy71; - if (yych <= 0x7F) goto yy9; - goto yy71; - } -yy15: - YYDEBUG(15, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy74; - goto yy9; -yy16: - YYDEBUG(16, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy76; - if (yych == '=') goto yy78; - goto yy9; -yy17: - YYDEBUG(17, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(18, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2113 "Zend/zend_language_scanner.l" - { - register char *s, *t; - char *end; - int bprefix = (yytext[0] != '\'') ? 1 : 0; - - while (1) { - if (YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\'') { - YYCURSOR++; - yyleng = YYCURSOR - SCNG(yy_text); - - break; - } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - } else { - yyleng = YYLIMIT - SCNG(yy_text); - - /* Unclosed single quotes; treat similar to double quotes, but without a separate token - * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." - * rule, which continued in ST_IN_SCRIPTING state after the quote */ - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } +#line 1328 "Zend/zend_language_scanner.c" +yy5: + YYDEBUG(5, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '?') goto yy4; + YYDEBUG(6, *YYCURSOR); + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych == '=') goto yy8; + } else { + if (yych <= 'P') goto yy10; + if (yych == 'p') goto yy10; } - - if (yyleng-bprefix-2 <= 1) { - if (yyleng-bprefix-2 < 1) { - ZVAL_EMPTY_STRING(zendlval); - } else { - zend_uchar c = (zend_uchar)*(yytext+bprefix+1); - if (c == '\n' || c == '\r') { - CG(zend_lineno)++; - } - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); +yy7: + YYDEBUG(7, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1926 "Zend/zend_language_scanner.l" + { + if (CG(short_tags)) { + BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); } - goto skip_escape_conversion; + RETURN_TOKEN(T_OPEN_TAG); + } else { + goto inline_char_handler; } - ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - - /* convert escape sequences */ - s = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (1) { - if (UNEXPECTED(*s=='\\')) { - break; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - if (s == end) { - goto skip_escape_conversion; - } +} +#line 1356 "Zend/zend_language_scanner.c" +yy8: + YYDEBUG(8, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(9, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1907 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ECHO); } - - t = s; - while (s= '\v') goto yy11; + } else { + if (yych <= '\r') goto yy16; + if (yych != ' ') goto yy11; } - *t = 0; - Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval); - -skip_escape_conversion: - if (SCNG(output_filter)) { - size_t sz = 0; - char *str = NULL; - s = Z_STRVAL_P(zendlval); - // TODO: avoid reallocation ??? - SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval)); - ZVAL_STRINGL(zendlval, str, sz); +yy14: + YYDEBUG(14, *YYCURSOR); + ++YYCURSOR; +yy15: + YYDEBUG(15, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1916 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINE(yytext[yyleng-1]); + BEGIN(ST_IN_SCRIPTING); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_OPEN_TAG); } - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); + RETURN_TOKEN(T_OPEN_TAG); } -#line 1684 "Zend/zend_language_scanner.c" -yy19: +#line 1410 "Zend/zend_language_scanner.c" +yy16: + YYDEBUG(16, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy14; + goto yy15; +/* *********************************** */ +yyc_ST_BACKQUOTE: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(17, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '_') { + if (yych == '$') goto yy21; + } else { + if (yych <= '`') goto yy22; + if (yych == '{') goto yy24; + } YYDEBUG(19, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy81; - if (yych <= 0x1F) goto yy9; - goto yy81; - } else { - if (yych <= '@') goto yy9; - if (yych == 'C') goto yy9; - goto yy81; - } - } else { - if (yych <= 'I') { - if (yych == 'F') goto yy81; - if (yych <= 'H') goto yy9; - goto yy81; - } else { - if (yych == 'O') goto yy81; - if (yych <= 'Q') goto yy9; - goto yy81; + ++YYCURSOR; +yy20: + YYDEBUG(20, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2472 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '`': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; } - } - } else { - if (yych <= 'f') { - if (yych <= 'b') { - if (yych == 'U') goto yy81; - if (yych <= '`') goto yy9; - goto yy81; - } else { - if (yych == 'd') goto yy81; - if (yych <= 'e') goto yy9; - goto yy81; + continue; + case '{': + if (*YYCURSOR == '$') { + break; } - } else { - if (yych <= 'o') { - if (yych == 'i') goto yy81; - if (yych <= 'n') goto yy9; - goto yy81; - } else { - if (yych <= 's') { - if (yych <= 'q') goto yy9; - goto yy81; - } else { - if (yych == 'u') goto yy81; - goto yy9; - } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; } - } + /* fall through */ + default: + continue; } -yy20: - YYDEBUG(20, *YYCURSOR); - ++YYCURSOR; - goto yy9; + + YYCURSOR--; + break; + } + + yyleng = YYCURSOR - SCNG(yy_text); + + 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 1512 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '*') goto yy92; - if (yych == '=') goto yy94; - goto yy9; -yy22: - YYDEBUG(22, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '+') goto yy96; - if (yych == '=') goto yy98; - goto yy9; -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') { - if (yych == '-') goto yy100; - goto yy9; - } else { - if (yych <= '=') goto yy102; - if (yych <= '>') goto yy104; - goto yy9; - } -yy24: - YYDEBUG(24, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy106; - goto yy9; - } else { - if (yych <= '9') goto yy107; - if (yych == '=') goto yy110; - goto yy9; - } -yy25: - YYDEBUG(25, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy112; - goto yy9; - } else { - if (yych <= '/') goto yy12; - if (yych == '=') goto yy114; - goto yy9; - } -yy26: - YYDEBUG(26, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych == 'B') goto yy116; - if (yych <= 'W') goto yy29; - goto yy118; + if (yych <= '_') { + if (yych <= '@') goto yy20; + if (yych <= 'Z') goto yy25; + if (yych <= '^') goto yy20; + goto yy25; } else { - if (yych <= 'b') { - if (yych <= 'a') goto yy29; - goto yy116; - } else { - if (yych == 'x') goto yy118; - goto yy29; - } - } -yy27: - YYDEBUG(27, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1761 "Zend/zend_language_scanner.l" - { - char *end; - if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - /* This isn't an assert, we need to ensure 019 isn't valid octal - * Because the lexing itself doesn't do that for us - */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ERROR); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - if (errno == ERANGE) { /* Overflow */ - errno = 0; - if (yytext[0] == '0') { /* octal overflow */ - ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); + if (yych <= 'z') { + if (yych <= '`') goto yy20; + goto yy25; } else { - ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, - "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ERROR); - } - } - RETURN_TOKEN_WITH_VAL(T_DNUMBER); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ERROR); + if (yych <= '{') goto yy28; + if (yych <= 0x7F) goto yy20; + goto yy25; } - RETURN_TOKEN_WITH_VAL(T_DNUMBER); } - } - ZEND_ASSERT(!errno); - RETURN_TOKEN_WITH_VAL(T_LNUMBER); +yy22: + YYDEBUG(22, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(23, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2412 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('`'); } -#line 1859 "Zend/zend_language_scanner.c" -yy28: - YYDEBUG(28, *YYCURSOR); - yyaccept = 1; +#line 1541 "Zend/zend_language_scanner.c" +yy24: + YYDEBUG(24, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '$') goto yy30; + goto yy20; +yy25: + YYDEBUG(25, *YYCURSOR); YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy29: - YYDEBUG(29, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy28; - } - if (yych <= 'D') { - if (yych == '.') goto yy107; - goto yy27; - } else { - if (yych <= 'E') goto yy117; - if (yych == 'e') goto yy117; - goto yy27; + YYDEBUG(26, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy25; } + if (yych == '-') goto yy32; + if (yych <= '@') goto yy27; + if (yych <= '[') goto yy34; +yy27: + YYDEBUG(27, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2003 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 1566 "Zend/zend_language_scanner.c" +yy28: + YYDEBUG(28, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(29, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1703 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 1577 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy119; - goto yy9; -yy31: + ++YYCURSOR; YYDEBUG(31, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ';') goto yy9; - if (yych <= '<') goto yy121; - if (yych <= '=') goto yy123; - if (yych <= '>') goto yy125; - goto yy9; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2400 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); +} +#line 1589 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy9; - if (yych <= '=') goto yy126; - if (yych <= '>') goto yy128; - goto yy9; + if (yych == '>') goto yy36; yy33: YYDEBUG(33, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy9; - if (yych <= '=') goto yy130; - if (yych <= '>') goto yy132; - goto yy9; + YYCURSOR = YYMARKER; + goto yy27; yy34: YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '=') goto yy9; - if (yych <= '>') goto yy134; - if (yych <= '?') goto yy136; - goto yy9; -yy35: + ++YYCURSOR; YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'M') { - if (yych == 'B') goto yy138; - goto yy44; - } else { - if (yych <= 'N') goto yy139; - if (yych <= 'Q') goto yy44; - if (yych <= 'R') goto yy140; - goto yy141; - } - } else { - if (yych <= 'n') { - if (yych == 'b') goto yy138; - if (yych <= 'm') goto yy44; - goto yy139; - } else { - if (yych <= 'q') goto yy44; - if (yych <= 'r') goto yy140; - if (yych <= 's') goto yy141; - goto yy44; - } - } -yy36: - YYDEBUG(36, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2025 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_STRING, 0); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 1945 "Zend/zend_language_scanner.c" -yy37: - YYDEBUG(37, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') { - if (yych <= '"') { - if (yych <= '!') goto yy44; - goto yy10; - } else { - if (yych == '\'') goto yy17; - goto yy44; - } - } else { - if (yych <= 'R') { - if (yych <= '<') goto yy143; - if (yych <= 'Q') goto yy44; - goto yy144; - } else { - if (yych == 'r') goto yy144; - goto yy44; - } - } -yy38: - YYDEBUG(38, *YYCURSOR); +#line 1609 "Zend/zend_language_scanner.c" +yy36: + YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy145; - goto yy44; - } else { - if (yych <= 'L') goto yy146; - if (yych <= 'N') goto yy44; - goto yy147; - } + if (yych <= '_') { + if (yych <= '@') goto yy33; + if (yych <= 'Z') goto yy37; + if (yych <= '^') goto yy33; } else { - if (yych <= 'k') { - if (yych == 'a') goto yy145; - goto yy44; - } else { - if (yych <= 'l') goto yy146; - if (yych == 'o') goto yy147; - goto yy44; - } + if (yych <= '`') goto yy33; + if (yych <= 'z') goto yy37; + if (yych <= 0x7F) goto yy33; } -yy39: +yy37: + YYDEBUG(37, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(38, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1989 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 1633 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_DOUBLE_QUOTES: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'E') goto yy148; - goto yy44; - } else { - if (yych <= 'I') goto yy149; - if (yych <= 'N') goto yy44; - goto yy150; - } + YYFILL(2); + yych = *YYCURSOR; + if (yych <= '#') { + if (yych == '"') goto yy43; } else { - if (yych <= 'h') { - if (yych == 'e') goto yy148; - goto yy44; - } else { - if (yych <= 'i') goto yy149; - if (yych == 'o') goto yy150; - goto yy44; - } - } -yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy152; - case 'L': - case 'l': goto yy153; - case 'M': - case 'm': goto yy154; - case 'N': - case 'n': goto yy155; - case 'V': - case 'v': goto yy156; - case 'X': - case 'x': goto yy157; - default: goto yy44; + if (yych <= '$') goto yy45; + if (yych == '{') goto yy46; } -yy41: YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'N') { - if (yych == 'I') goto yy158; - goto yy44; - } else { - if (yych <= 'O') goto yy159; - if (yych <= 'T') goto yy44; - goto yy160; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy158; - goto yy44; - } else { - if (yych <= 'o') goto yy159; - if (yych == 'u') goto yy160; - goto yy44; - } - } + ++YYCURSOR; yy42: YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'L') goto yy161; - if (yych <= 'N') goto yy44; - goto yy162; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy44; - goto yy161; - } else { - if (yych == 'o') goto yy162; - goto yy44; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2418 "Zend/zend_language_scanner.l" + { + if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { + YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; + SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); + + goto double_quotes_scan_done; + } + + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + break; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; } + + YYCURSOR--; + break; + } + +double_quotes_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + + 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 1739 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy44: YYDEBUG(44, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy43; - } - goto yy36; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2407 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('"'); +} +#line 1750 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'L') { - if (yych == 'F') goto yy163; - goto yy44; - } else { - if (yych <= 'M') goto yy165; - if (yych <= 'N') goto yy166; - if (yych <= 'R') goto yy44; - goto yy167; - } + if (yych <= '_') { + if (yych <= '@') goto yy42; + if (yych <= 'Z') goto yy47; + if (yych <= '^') goto yy42; + goto yy47; } else { - if (yych <= 'm') { - if (yych == 'f') goto yy163; - if (yych <= 'l') goto yy44; - goto yy165; + if (yych <= 'z') { + if (yych <= '`') goto yy42; + goto yy47; } else { - if (yych <= 'n') goto yy166; - if (yych == 's') goto yy167; - goto yy44; + if (yych <= '{') goto yy50; + if (yych <= 0x7F) goto yy42; + goto yy47; } } yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy168; - if (yych == 'i') goto yy168; - goto yy44; + if (yych == '$') goto yy52; + goto yy42; yy47: YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy169; - if (yych <= 'D') goto yy44; - goto yy170; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy169; - } else { - if (yych == 'e') goto yy170; - goto yy44; - } - } -yy48: + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy171; - if (yych == 'r') goto yy171; - goto yy44; + if (yybm[0+yych] & 128) { + goto yy47; + } + if (yych == '-') goto yy54; + if (yych <= '@') goto yy49; + if (yych <= '[') goto yy56; yy49: YYDEBUG(49, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'R') goto yy173; - if (yych <= 'T') goto yy44; - goto yy174; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy44; - goto yy173; - } else { - if (yych == 'u') goto yy174; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2003 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 1793 "Zend/zend_language_scanner.c" yy50: YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy175; - if (yych == 'e') goto yy175; - goto yy44; -yy51: + ++YYCURSOR; YYDEBUG(51, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych == 'T') goto yy176; - if (yych <= 'V') goto yy44; - goto yy177; - } else { - if (yych <= 't') { - if (yych <= 's') goto yy44; - goto yy176; - } else { - if (yych == 'w') goto yy177; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1703 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 1804 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy178; - if (yych <= 'Q') goto yy44; - goto yy179; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy44; - goto yy178; - } else { - if (yych == 'r') goto yy179; - goto yy44; - } - } -yy53: + ++YYCURSOR; YYDEBUG(53, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy180; - if (yych <= 'R') goto yy44; - goto yy181; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy44; - goto yy180; - } else { - if (yych == 's') goto yy181; - goto yy44; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2400 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); +} +#line 1816 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy182; - if (yych == 'a') goto yy182; - goto yy44; + if (yych == '>') goto yy58; yy55: YYDEBUG(55, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy183; - if (yych == 'h') goto yy183; - goto yy44; + YYCURSOR = YYMARKER; + goto yy49; yy56: YYDEBUG(56, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy184; - if (yych == 'o') goto yy184; - goto yy44; -yy57: - YYDEBUG(57, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy185; - if (yych == 'i') goto yy185; - goto yy44; -yy58: - YYDEBUG(58, *YYCURSOR); ++YYCURSOR; - YYDEBUG(59, *YYCURSOR); + YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2234 "Zend/zend_language_scanner.c" -yy60: - YYDEBUG(60, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy186; - goto yy9; -yy61: - YYDEBUG(61, *YYCURSOR); +#line 1836 "Zend/zend_language_scanner.c" +yy58: + YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy188; - goto yy44; -yy62: - YYDEBUG(62, *YYCURSOR); + if (yych <= '_') { + if (yych <= '@') goto yy55; + if (yych <= 'Z') goto yy59; + if (yych <= '^') goto yy55; + } else { + if (yych <= '`') goto yy55; + if (yych <= 'z') goto yy59; + if (yych <= 0x7F) goto yy55; + } +yy59: + YYDEBUG(59, *YYCURSOR); ++YYCURSOR; - YYDEBUG(63, *YYCURSOR); + YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2380 "Zend/zend_language_scanner.l" +#line 1989 "Zend/zend_language_scanner.l" { - BEGIN(ST_BACKQUOTE); - RETURN_TOKEN('`'); + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2255 "Zend/zend_language_scanner.c" -yy64: - YYDEBUG(64, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(65, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1697 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); +#line 1860 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_END_HEREDOC: + YYDEBUG(61, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(63, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(64, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2386 "Zend/zend_language_scanner.l" + { + zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); + + yyleng = heredoc_label->indentation + heredoc_label->length; + YYCURSOR += yyleng - 1; + + heredoc_label_dtor(heredoc_label); + efree(heredoc_label); + + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN(T_END_HEREDOC); } -#line 2266 "Zend/zend_language_scanner.c" -yy66: - YYDEBUG(66, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy189; - if (yych == '|') goto yy191; - goto yy9; -yy67: +#line 1884 "Zend/zend_language_scanner.c" +/* *********************************** */ +yyc_ST_HEREDOC: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(65, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yych == '$') goto yy69; + if (yych == '{') goto yy70; YYDEBUG(67, *YYCURSOR); ++YYCURSOR; +yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" +#line 2518 "Zend/zend_language_scanner.l" { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + CG(increment_lineno) = 1; /* For newline before label */ + + if (SCNG(heredoc_scan_ahead)) { + SCNG(heredoc_indentation) = indentation; + SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); + } else { + YYCURSOR -= indentation; + } + + BEGIN(ST_END_HEREDOC); + + goto heredoc_scan_done; + } + continue; + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; } - RETURN_TOKEN('}'); + +heredoc_scan_done: + + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) { + zend_string *copy = Z_STR_P(zendlval); + + if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + RETURN_TOKEN(T_ERROR); + } + + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS)) { + zend_string_free(copy); + RETURN_TOKEN(T_ERROR); + } + + zend_string_free(copy); + } + + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 2286 "Zend/zend_language_scanner.c" +#line 2047 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy193; + if (yych <= '_') { + if (yych <= '@') goto yy68; + if (yych <= 'Z') goto yy71; + if (yych <= '^') goto yy68; + goto yy71; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy68; + goto yy71; + } else { + if (yych <= '{') goto yy74; + if (yych <= 0x7F) goto yy68; + goto yy71; + } + } yy70: YYDEBUG(70, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 2298 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '$') goto yy76; + goto yy68; yy71: YYDEBUG(71, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); + YYMARKER = ++YYCURSOR; + YYFILL(3); yych = *YYCURSOR; YYDEBUG(72, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy71; - } else { - if (yych <= '@') goto yy73; - if (yych <= 'Z') goto yy71; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy71; - } else { - if (yych <= 'z') goto yy71; - if (yych >= 0x80) goto yy71; - } + if (yybm[0+yych] & 128) { + goto yy71; } + if (yych == '-') goto yy78; + if (yych <= '@') goto yy73; + if (yych <= '[') goto yy80; yy73: YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); @@ -2323,5102 +2086,5510 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2327 "Zend/zend_language_scanner.c" +#line 2090 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" +#line 1703 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MOD_EQUAL); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2337 "Zend/zend_language_scanner.c" +#line 2101 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOLEAN_AND); + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 2347 "Zend/zend_language_scanner.c" +#line 2113 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '>') goto yy82; +yy79: YYDEBUG(79, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy73; +yy80: + YYDEBUG(80, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AND_EQUAL); + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2357 "Zend/zend_language_scanner.c" -yy80: - YYDEBUG(80, *YYCURSOR); +#line 2133 "Zend/zend_language_scanner.c" +yy82: + YYDEBUG(82, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy79; + if (yych <= 'Z') goto yy83; + if (yych <= '^') goto yy79; + } else { + if (yych <= '`') goto yy79; + if (yych <= 'z') goto yy83; + if (yych <= 0x7F) goto yy79; + } +yy83: + YYDEBUG(83, *YYCURSOR); ++YYCURSOR; - YYFILL(7); + YYDEBUG(84, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1989 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 2157 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_IN_SCRIPTING: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 4, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 216, 216, 152, 152, 152, 152, 152, 152, + 152, 152, 0, 0, 0, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 16, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + }; + YYDEBUG(85, *YYCURSOR); + YYFILL(16); yych = *YYCURSOR; -yy81: - YYDEBUG(81, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy80; + if (yybm[0+yych] & 4) { + goto yy89; } switch (yych) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case '\t': + case '\n': + case '\v': + case '\f': + case '\r': + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x7F: goto yy87; + case ' ': + case '!': goto yy92; + case '"': goto yy94; + case '#': goto yy96; + case '$': goto yy98; + case '%': goto yy99; + case '&': goto yy100; + case '\'': goto yy101; + case '(': goto yy103; + case ')': + case ',': + case ';': + case '@': + case '[': + case ']': + case '~': goto yy104; + case '*': goto yy105; + case '+': goto yy106; + case '-': goto yy107; + case '.': goto yy108; + case '/': goto yy109; + case '0': goto yy110; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy112; + case ':': goto yy114; + case '<': goto yy115; + case '=': goto yy116; + case '>': goto yy117; + case '?': goto yy118; case 'A': - case 'a': goto yy83; + case 'a': goto yy119; case 'B': - case 'b': goto yy84; + case 'b': goto yy121; + case 'C': + case 'c': goto yy122; case 'D': - case 'd': goto yy85; + case 'd': goto yy123; + case 'E': + case 'e': goto yy124; case 'F': - case 'f': goto yy86; + case 'f': goto yy125; + case 'G': + case 'g': goto yy126; case 'I': - case 'i': goto yy87; + case 'i': goto yy129; + case 'L': + case 'l': goto yy130; + case 'N': + case 'n': goto yy131; case 'O': - case 'o': goto yy88; + case 'o': goto yy132; + case 'P': + case 'p': goto yy133; case 'R': - case 'r': goto yy89; + case 'r': goto yy134; case 'S': - case 's': goto yy90; + case 's': goto yy135; + case 'T': + case 't': goto yy136; case 'U': - case 'u': goto yy91; - default: goto yy82; - } -yy82: - YYDEBUG(82, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy9; - } else { - goto yy27; - } - } else { - if (yyaccept == 2) { - goto yy36; - } else { - goto yy109; - } - } - } else { - if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy113; - } else { - goto yy122; - } - } else { - goto yy457; - } - } -yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy195; - if (yych == 'r') goto yy195; - goto yy82; -yy84: - YYDEBUG(84, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy196; - if (yych <= 'N') goto yy82; - goto yy197; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy82; - goto yy196; - } else { - if (yych == 'o') goto yy197; - goto yy82; - } + case 'u': goto yy137; + case 'V': + case 'v': goto yy138; + case 'W': + case 'w': goto yy139; + case 'X': + case 'x': goto yy140; + case 'Y': + case 'y': goto yy141; + case '\\': goto yy142; + case '^': goto yy144; + case '_': goto yy145; + case '`': goto yy146; + case '{': goto yy148; + case '|': goto yy150; + case '}': goto yy151; + default: goto yy127; } -yy85: - YYDEBUG(85, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy198; - if (yych == 'o') goto yy198; - goto yy82; -yy86: - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy199; - if (yych == 'l') goto yy199; - goto yy82; yy87: YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy200; - if (yych == 'n') goto yy200; - goto yy82; -yy88: + ++YYCURSOR; YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy201; - if (yych == 'b') goto yy201; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2718 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} +#line 2335 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy202; - if (yych == 'e') goto yy202; - goto yy82; -yy90: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy203; - if (yych == 't') goto yy203; - goto yy82; -yy91: + if (yybm[0+yych] & 4) { + goto yy89; + } YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy204; - if (yych == 'n') goto yy204; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1409 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 2351 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy205; + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy153; +yy93: YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1692 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_POW); + RETURN_TOKEN(yytext[0]); } -#line 2491 "Zend/zend_language_scanner.c" +#line 2363 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MUL_EQUAL); + int bprefix = (yytext[0] != '"') ? 1 : 0; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + yyleng = YYCURSOR - SCNG(yy_text); + if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) + || !PARSER_MODE()) { + RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); + } else { + RETURN_TOKEN(T_ERROR); + } + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; + } + + /* Remember how much was scanned to save rescanning */ + SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); + + YYCURSOR = SCNG(yy_text) + yyleng; + + BEGIN(ST_DOUBLE_QUOTES); + RETURN_TOKEN('"'); } -#line 2501 "Zend/zend_language_scanner.c" +#line 2414 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 2030 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INC); + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + CG(zend_lineno)++; + break; + case '?': + if (*YYCURSOR == '>') { + YYCURSOR--; + break; + } + /* fall through */ + default: + continue; + } + + break; + } + + yyleng = YYCURSOR - SCNG(yy_text); + + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); + } + RETURN_TOKEN(T_COMMENT); } -#line 2511 "Zend/zend_language_scanner.c" +#line 2452 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy93; + if (yych <= 'Z') goto yy155; + if (yych <= '^') goto yy93; + goto yy155; + } else { + if (yych <= '`') goto yy93; + if (yych <= 'z') goto yy155; + if (yych <= 0x7F) goto yy93; + goto yy155; + } +yy99: YYDEBUG(99, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 2521 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '=') goto yy158; + goto yy93; yy100: YYDEBUG(100, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '&') goto yy160; + if (yych == '=') goto yy162; + goto yy93; +yy101: YYDEBUG(101, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEC); -} -#line 2531 "Zend/zend_language_scanner.c" -yy102: - YYDEBUG(102, *YYCURSOR); ++YYCURSOR; - YYDEBUG(103, *YYCURSOR); + YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" +#line 2113 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MINUS_EQUAL); + register char *s, *t; + char *end; + int bprefix = (yytext[0] != '\'') ? 1 : 0; + + while (1) { + if (YYCURSOR < YYLIMIT) { + if (*YYCURSOR == '\'') { + YYCURSOR++; + yyleng = YYCURSOR - SCNG(yy_text); + + break; + } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + } else { + yyleng = YYLIMIT - SCNG(yy_text); + + /* Unclosed single quotes; treat similar to double quotes, but without a separate token + * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." + * rule, which continued in ST_IN_SCRIPTING state after the quote */ + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + } + + if (yyleng-bprefix-2 <= 1) { + if (yyleng-bprefix-2 < 1) { + ZVAL_EMPTY_STRING(zendlval); + } else { + zend_uchar c = (zend_uchar)*(yytext+bprefix+1); + if (c == '\n' || c == '\r') { + CG(zend_lineno)++; + } + ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); + } + goto skip_escape_conversion; + } + ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); + + /* convert escape sequences */ + s = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (1) { + if (UNEXPECTED(*s=='\\')) { + break; + } + if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { + CG(zend_lineno)++; + } + s++; + if (s == end) { + goto skip_escape_conversion; + } + } + + t = s; + while (s 2) { - doc_com = 1; - RESET_DOC_COMMENT(); - } else { - doc_com = 0; - } - - while (YYCURSOR < YYLIMIT) { - if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { - break; + if (yybm[0+yych] & 8) { + goto yy112; } - } - - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } else { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - - if (doc_com) { - CG(doc_comment) = zend_string_init(yytext, yyleng, 0); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_DOC_COMMENT); + if (yych <= 'D') { + if (yych == '.') goto yy191; + goto yy111; + } else { + if (yych <= 'E') goto yy201; + if (yych == 'e') goto yy201; + goto yy111; } - RETURN_TOKEN(T_DOC_COMMENT); - } - - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 2642 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == ':') goto yy203; + goto yy93; +yy115: YYDEBUG(115, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1632 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIV_EQUAL); -} -#line 2652 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= ';') goto yy93; + if (yych <= '<') goto yy205; + if (yych <= '=') goto yy207; + if (yych <= '>') goto yy209; + goto yy93; yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy210; - } - goto yy82; + if (yych <= '<') goto yy93; + if (yych <= '=') goto yy210; + if (yych <= '>') goto yy212; + goto yy93; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy213; - goto yy82; - } else { - if (yych <= '-') goto yy213; - if (yych <= '/') goto yy82; - if (yych <= '9') goto yy214; - goto yy82; - } + if (yych <= '<') goto yy93; + if (yych <= '=') goto yy214; + if (yych <= '>') goto yy216; + goto yy93; yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy216; - } - goto yy82; + if (yych <= '=') goto yy93; + if (yych <= '>') goto yy218; + if (yych <= '?') goto yy220; + goto yy93; yy119: YYDEBUG(119, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'S') { + if (yych <= 'M') { + if (yych == 'B') goto yy222; + goto yy128; + } else { + if (yych <= 'N') goto yy223; + if (yych <= 'Q') goto yy128; + if (yych <= 'R') goto yy224; + goto yy225; + } + } else { + if (yych <= 'n') { + if (yych == 'b') goto yy222; + if (yych <= 'm') goto yy128; + goto yy223; + } else { + if (yych <= 'q') goto yy128; + if (yych <= 'r') goto yy224; + if (yych <= 's') goto yy225; + goto yy128; + } + } +yy120: YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1428 "Zend/zend_language_scanner.l" +#line 2025 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); + RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 2688 "Zend/zend_language_scanner.c" +#line 2838 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); - yyaccept = 5; + yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy122; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy221; + if (yych <= ';') { + if (yych <= '"') { + if (yych <= '!') goto yy128; + goto yy94; + } else { + if (yych == '\'') goto yy101; + goto yy128; + } + } else { + if (yych <= 'R') { + if (yych <= '<') goto yy227; + if (yych <= 'Q') goto yy128; + goto yy228; + } else { + if (yych == 'r') goto yy228; + goto yy128; + } + } yy122: YYDEBUG(122, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1684 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SL); -} -#line 2703 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') goto yy229; + goto yy128; + } else { + if (yych <= 'L') goto yy230; + if (yych <= 'N') goto yy128; + goto yy231; + } + } else { + if (yych <= 'k') { + if (yych == 'a') goto yy229; + goto yy128; + } else { + if (yych <= 'l') goto yy230; + if (yych == 'o') goto yy231; + goto yy128; + } + } yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy223; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'E') goto yy232; + goto yy128; + } else { + if (yych <= 'I') goto yy233; + if (yych <= 'N') goto yy128; + goto yy234; + } + } else { + if (yych <= 'h') { + if (yych == 'e') goto yy232; + goto yy128; + } else { + if (yych <= 'i') goto yy233; + if (yych == 'o') goto yy234; + goto yy128; + } + } +yy124: YYDEBUG(124, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); -} -#line 2714 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy236; + case 'L': + case 'l': goto yy237; + case 'M': + case 'm': goto yy238; + case 'N': + case 'n': goto yy239; + case 'V': + case 'v': goto yy240; + case 'X': + case 'x': goto yy241; + default: goto yy128; + } yy125: YYDEBUG(125, *YYCURSOR); - ++YYCURSOR; - goto yy70; + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'I') goto yy242; + goto yy128; + } else { + if (yych <= 'O') goto yy243; + if (yych <= 'T') goto yy128; + goto yy244; + } + } else { + if (yych <= 'n') { + if (yych == 'i') goto yy242; + goto yy128; + } else { + if (yych <= 'o') goto yy243; + if (yych == 'u') goto yy244; + goto yy128; + } + } yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy225; + if (yych <= 'O') { + if (yych == 'L') goto yy245; + if (yych <= 'N') goto yy128; + goto yy246; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy128; + goto yy245; + } else { + if (yych == 'o') goto yy246; + goto yy128; + } + } +yy127: YYDEBUG(127, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_EQUAL); -} -#line 2729 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy128: YYDEBUG(128, *YYCURSOR); - ++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy127; + } + goto yy120; +yy129: YYDEBUG(129, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_ARROW); -} -#line 2739 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'L') { + if (yych == 'F') goto yy247; + goto yy128; + } else { + if (yych <= 'M') goto yy249; + if (yych <= 'N') goto yy250; + if (yych <= 'R') goto yy128; + goto yy251; + } + } else { + if (yych <= 'm') { + if (yych == 'f') goto yy247; + if (yych <= 'l') goto yy128; + goto yy249; + } else { + if (yych <= 'n') goto yy250; + if (yych == 's') goto yy251; + goto yy128; + } + } yy130: YYDEBUG(130, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'I') goto yy252; + if (yych == 'i') goto yy252; + goto yy128; +yy131: YYDEBUG(131, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); -} -#line 2749 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy253; + if (yych <= 'D') goto yy128; + goto yy254; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy253; + } else { + if (yych == 'e') goto yy254; + goto yy128; + } + } yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy227; + if (yych == 'R') goto yy255; + if (yych == 'r') goto yy255; + goto yy128; +yy133: YYDEBUG(133, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1688 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR); -} -#line 2760 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'R') goto yy257; + if (yych <= 'T') goto yy128; + goto yy258; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy128; + goto yy257; + } else { + if (yych == 'u') goto yy258; + goto yy128; + } + } yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - if (yych == '\r') goto yy230; + if (yych == 'E') goto yy259; + if (yych == 'e') goto yy259; + goto yy128; yy135: YYDEBUG(135, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2101 "Zend/zend_language_scanner.l" - { - BEGIN(INITIAL); - if (yytext[yyleng-1] != '>') { - CG(increment_lineno) = 1; - } - if (PARSER_MODE()) { - RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ - } - RETURN_TOKEN(T_CLOSE_TAG); -} -#line 2780 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'W') { + if (yych == 'T') goto yy260; + if (yych <= 'V') goto yy128; + goto yy261; + } else { + if (yych <= 't') { + if (yych <= 's') goto yy128; + goto yy260; + } else { + if (yych == 'w') goto yy261; + goto yy128; + } + } yy136: YYDEBUG(136, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'H') goto yy262; + if (yych <= 'Q') goto yy128; + goto yy263; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy128; + goto yy262; + } else { + if (yych == 'r') goto yy263; + goto yy128; + } + } +yy137: YYDEBUG(137, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1440 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_COALESCE); -} -#line 2790 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == 'N') goto yy264; + if (yych <= 'R') goto yy128; + goto yy265; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy128; + goto yy264; + } else { + if (yych == 's') goto yy265; + goto yy128; + } + } yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy231; - if (yych == 's') goto yy231; - goto yy44; + if (yych == 'A') goto yy266; + if (yych == 'a') goto yy266; + goto yy128; yy139: YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy232; - if (yych == 'd') goto yy232; - goto yy44; + if (yych == 'H') goto yy267; + if (yych == 'h') goto yy267; + goto yy128; yy140: YYDEBUG(140, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy234; - if (yych == 'r') goto yy234; - goto yy44; + if (yych == 'O') goto yy268; + if (yych == 'o') goto yy268; + goto yy128; yy141: YYDEBUG(141, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy269; + if (yych == 'i') goto yy269; + goto yy128; +yy142: YYDEBUG(142, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AS); + RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2821 "Zend/zend_language_scanner.c" -yy143: - YYDEBUG(143, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy235; - goto yy82; +#line 3127 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy236; - if (yych == 'e') goto yy236; - goto yy44; + if (yych == '=') goto yy270; + goto yy93; yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy44; - goto yy237; - } else { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy238; - goto yy239; - } - } else { - if (yych <= 'r') { - if (yych == 'l') goto yy237; - goto yy44; - } else { - if (yych <= 's') goto yy238; - if (yych <= 't') goto yy239; - goto yy44; - } - } + if (yych == '_') goto yy272; + goto yy128; yy146: YYDEBUG(146, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy240; - if (yych <= 'N') goto yy44; - goto yy241; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy240; - } else { - if (yych == 'o') goto yy241; - goto yy44; - } - } -yy147: + ++YYCURSOR; YYDEBUG(147, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy242; - if (yych == 'n') goto yy242; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2380 "Zend/zend_language_scanner.l" + { + BEGIN(ST_BACKQUOTE); + RETURN_TOKEN('`'); +} +#line 3148 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy243; - if (yych <= 'E') goto yy44; - goto yy244; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy44; - goto yy243; - } else { - if (yych == 'f') goto yy244; - goto yy44; - } - } -yy149: + ++YYCURSOR; YYDEBUG(149, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy245; - if (yych == 'e') goto yy245; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1697 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN('{'); +} +#line 3159 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == '=') goto yy273; + if (yych == '|') goto yy275; + goto yy93; +yy151: YYDEBUG(151, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(152, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DO); + RESET_DOC_COMMENT(); + if (!zend_stack_is_empty(&SCNG(state_stack))) { + yy_pop_state(); + } + RETURN_TOKEN('}'); } -#line 2911 "Zend/zend_language_scanner.c" -yy152: - YYDEBUG(152, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy247; - if (yych == 'h') goto yy247; - goto yy44; +#line 3179 "Zend/zend_language_scanner.c" yy153: YYDEBUG(153, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy248; - if (yych == 's') goto yy248; - goto yy44; + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy277; yy154: YYDEBUG(154, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy249; - if (yych == 'p') goto yy249; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1596 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_NOT_EQUAL); +} +#line 3191 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy250; - if (yych == 'd') goto yy250; - goto yy44; -yy156: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy251; - if (yych == 'a') goto yy251; - goto yy44; -yy157: - YYDEBUG(157, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy252; - if (yych <= 'S') goto yy44; - goto yy253; + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy155; + } else { + if (yych <= '@') goto yy157; + if (yych <= 'Z') goto yy155; + } } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy252; + if (yych <= '`') { + if (yych <= '_') goto yy155; } else { - if (yych == 't') goto yy253; - goto yy44; + if (yych <= 'z') goto yy155; + if (yych >= 0x80) goto yy155; } } +yy157: + YYDEBUG(157, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2003 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 3220 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy254; - if (yych == 'n') goto yy254; - goto yy44; -yy159: + ++YYCURSOR; YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy255; - if (yych == 'r') goto yy255; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1640 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MOD_EQUAL); +} +#line 3230 "Zend/zend_language_scanner.c" yy160: YYDEBUG(160, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy257; - if (yych == 'n') goto yy257; - goto yy44; -yy161: + ++YYCURSOR; YYDEBUG(161, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy258; - if (yych == 'o') goto yy258; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1668 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_AND); +} +#line 3240 "Zend/zend_language_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy259; - if (yych == 't') goto yy259; - goto yy44; -yy163: + ++YYCURSOR; YYDEBUG(163, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(164, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IF); + RETURN_TOKEN(T_AND_EQUAL); } -#line 3000 "Zend/zend_language_scanner.c" +#line 3250 "Zend/zend_language_scanner.c" +yy164: + YYDEBUG(164, *YYCURSOR); + ++YYCURSOR; + YYFILL(7); + yych = *YYCURSOR; yy165: YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy260; - if (yych == 'p') goto yy260; - goto yy44; + if (yybm[0+yych] & 32) { + goto yy164; + } + switch (yych) { + case 'A': + case 'a': goto yy167; + case 'B': + case 'b': goto yy168; + case 'D': + case 'd': goto yy169; + case 'F': + case 'f': goto yy170; + case 'I': + case 'i': goto yy171; + case 'O': + case 'o': goto yy172; + case 'R': + case 'r': goto yy173; + case 'S': + case 's': goto yy174; + case 'U': + case 'u': goto yy175; + default: goto yy166; + } yy166: YYDEBUG(166, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy44; - goto yy261; + YYCURSOR = YYMARKER; + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy93; + } else { + goto yy111; + } } else { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy262; - goto yy263; + if (yyaccept == 2) { + goto yy120; + } else { + goto yy193; + } } } else { - if (yych <= 'r') { - if (yych == 'c') goto yy261; - goto yy44; + if (yyaccept <= 5) { + if (yyaccept == 4) { + goto yy197; + } else { + goto yy206; + } } else { - if (yych <= 's') goto yy262; - if (yych <= 't') goto yy263; - goto yy44; + goto yy541; } } yy167: YYDEBUG(167, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy264; - if (yych == 's') goto yy264; - goto yy44; + if (yych == 'R') goto yy279; + if (yych == 'r') goto yy279; + goto yy166; yy168: YYDEBUG(168, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy265; - if (yych == 's') goto yy265; - goto yy44; + if (yych <= 'O') { + if (yych == 'I') goto yy280; + if (yych <= 'N') goto yy166; + goto yy281; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy166; + goto yy280; + } else { + if (yych == 'o') goto yy281; + goto yy166; + } + } yy169: YYDEBUG(169, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy266; - if (yych == 'm') goto yy266; - goto yy44; + if (yych == 'O') goto yy282; + if (yych == 'o') goto yy282; + goto yy166; yy170: YYDEBUG(170, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy267; - if (yych == 'w') goto yy267; - goto yy44; + if (yych == 'L') goto yy283; + if (yych == 'l') goto yy283; + goto yy166; yy171: YYDEBUG(171, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'N') goto yy284; + if (yych == 'n') goto yy284; + goto yy166; +yy172: YYDEBUG(172, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_OR); -} -#line 3065 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'B') goto yy285; + if (yych == 'b') goto yy285; + goto yy166; yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy269; - if (yych <= 'N') goto yy44; - goto yy270; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy269; - } else { - if (yych == 'o') goto yy270; - goto yy44; - } - } + if (yych == 'E') goto yy286; + if (yych == 'e') goto yy286; + goto yy166; yy174: YYDEBUG(174, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy271; - if (yych == 'b') goto yy271; - goto yy44; + if (yych == 'T') goto yy287; + if (yych == 't') goto yy287; + goto yy166; yy175: YYDEBUG(175, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy272; - if (yych <= 'S') goto yy44; - goto yy273; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy44; - goto yy272; - } else { - if (yych == 't') goto yy273; - goto yy44; - } - } + if (yych == 'N') goto yy288; + if (yych == 'n') goto yy288; + goto yy166; yy176: YYDEBUG(176, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy274; - if (yych == 'a') goto yy274; - goto yy44; -yy177: + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy289; YYDEBUG(177, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy275; - if (yych == 'i') goto yy275; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1624 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW); +} +#line 3384 "Zend/zend_language_scanner.c" yy178: - YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy276; - if (yych == 'r') goto yy276; - goto yy44; -yy179: - YYDEBUG(179, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy277; - if (yych <= 'X') goto yy44; - goto yy278; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy277; - } else { - if (yych == 'y') goto yy278; - goto yy44; - } - } + YYDEBUG(178, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(179, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1620 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MUL_EQUAL); +} +#line 3394 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy280; - if (yych == 's') goto yy280; - goto yy44; -yy181: + ++YYCURSOR; YYDEBUG(181, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy281; - if (yych == 'e') goto yy281; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1576 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INC); +} +#line 3404 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy283; - if (yych == 'r') goto yy283; - goto yy44; -yy183: + ++YYCURSOR; YYDEBUG(183, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy285; - if (yych == 'i') goto yy285; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1612 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PLUS_EQUAL); +} +#line 3414 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy286; - if (yych == 'r') goto yy286; - goto yy44; -yy185: + ++YYCURSOR; YYDEBUG(185, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy288; - if (yych == 'e') goto yy288; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1580 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEC); +} +#line 3424 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1660 "Zend/zend_language_scanner.l" +#line 1616 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_XOR_EQUAL); + RETURN_TOKEN(T_MINUS_EQUAL); } -#line 3183 "Zend/zend_language_scanner.c" +#line 3434 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy289; - case 'D': - case 'd': goto yy290; - case 'F': - case 'f': goto yy291; - case 'H': - case 'h': goto yy292; - case 'L': - case 'l': goto yy293; - case 'M': - case 'm': goto yy294; - case 'N': - case 'n': goto yy295; - case 'T': - case 't': goto yy296; - default: goto yy44; - } -yy189: - YYDEBUG(189, *YYCURSOR); ++YYCURSOR; - YYDEBUG(190, *YYCURSOR); + YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1656 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OR_EQUAL); + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 3215 "Zend/zend_language_scanner.c" +#line 3445 "Zend/zend_language_scanner.c" +yy190: + YYDEBUG(190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy291; + goto yy166; yy191: YYDEBUG(191, *YYCURSOR); - ++YYCURSOR; + yyaccept = 3; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; YYDEBUG(192, *YYCURSOR); + if (yych <= 'D') { + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy191; + } else { + if (yych <= 'E') goto yy201; + if (yych == 'e') goto yy201; + } +yy193: + YYDEBUG(193, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1664 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOLEAN_OR); + 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_WITH_VAL(T_DNUMBER); } -#line 3225 "Zend/zend_language_scanner.c" -yy193: - YYDEBUG(193, *YYCURSOR); - ++YYCURSOR; +#line 3477 "Zend/zend_language_scanner.c" +yy194: YYDEBUG(194, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(195, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); + RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3235 "Zend/zend_language_scanner.c" -yy195: - YYDEBUG(195, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy297; - if (yych == 'r') goto yy297; - goto yy82; +#line 3487 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy298; - if (yych == 'n') goto yy298; - goto yy82; + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '*') goto yy293; yy197: YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy299; - if (yych == 'o') goto yy299; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2062 "Zend/zend_language_scanner.l" + { + int doc_com; + + if (yyleng > 2) { + doc_com = 1; + RESET_DOC_COMMENT(); + } else { + doc_com = 0; + } + + while (YYCURSOR < YYLIMIT) { + if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { + break; + } + } + + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } else { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + } + + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + + if (doc_com) { + CG(doc_comment) = zend_string_init(yytext, yyleng, 0); + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_DOC_COMMENT); + } + RETURN_TOKEN(T_DOC_COMMENT); + } + + if (EXPECTED(elem != NULL)) { + SKIP_TOKEN(T_COMMENT); + } + RETURN_TOKEN(T_COMMENT); +} +#line 3535 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy300; - if (yych == 'u') goto yy300; - goto yy82; -yy199: + ++YYCURSOR; YYDEBUG(199, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy301; - if (yych == 'o') goto yy301; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1632 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIV_EQUAL); +} +#line 3545 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy302; - if (yych == 't') goto yy302; - goto yy82; + if (yybm[0+yych] & 64) { + goto yy294; + } + goto yy166; yy201: YYDEBUG(201, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy303; - if (yych == 'j') goto yy303; - goto yy82; + if (yych <= ',') { + if (yych == '+') goto yy297; + goto yy166; + } else { + if (yych <= '-') goto yy297; + if (yych <= '/') goto yy166; + if (yych <= '9') goto yy298; + goto yy166; + } yy202: YYDEBUG(202, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy304; - if (yych == 'a') goto yy304; - goto yy82; + if (yybm[0+yych] & 128) { + goto yy300; + } + goto yy166; yy203: YYDEBUG(203, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy305; - if (yych == 'r') goto yy305; - goto yy82; -yy204: + ++YYCURSOR; YYDEBUG(204, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy306; - if (yych == 's') goto yy306; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1428 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); +} +#line 3581 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); - ++YYCURSOR; + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy206; + if (yych <= '<') goto yy303; + if (yych <= '=') goto yy305; +yy206: YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" +#line 1684 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_POW_EQUAL); + RETURN_TOKEN(T_SL); } -#line 3305 "Zend/zend_language_scanner.c" +#line 3596 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy307; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELLIPSIS); + RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3315 "Zend/zend_language_scanner.c" +#line 3607 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy82; - if (yych <= '\n') goto yy307; - goto yy82; - } else { - if (yych <= '\r') goto yy307; - if (yych == ' ') goto yy307; - goto yy82; - } + goto yy154; yy210: YYDEBUG(210, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy309; YYDEBUG(211, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy210; - } - YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1733 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); - } + RETURN_TOKEN(T_IS_EQUAL); } -#line 3367 "Zend/zend_language_scanner.c" -yy213: +#line 3622 "Zend/zend_language_scanner.c" +yy212: + YYDEBUG(212, *YYCURSOR); + ++YYCURSOR; YYDEBUG(213, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy82; - if (yych >= ':') goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1560 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_ARROW); +} +#line 3632 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; YYDEBUG(215, *YYCURSOR); - if (yych <= '/') goto yy109; - if (yych <= '9') goto yy214; - goto yy109; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1608 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); +} +#line 3642 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy311; YYDEBUG(217, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy216; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1688 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR); +} +#line 3653 "Zend/zend_language_scanner.c" +yy218: YYDEBUG(218, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy313; + if (yych == '\r') goto yy314; +yy219: + YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 2101 "Zend/zend_language_scanner.l" { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - 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_WITH_VAL(T_DNUMBER); + BEGIN(INITIAL); + if (yytext[yyleng-1] != '>') { + CG(increment_lineno) = 1; + } + if (PARSER_MODE()) { + RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ } + RETURN_TOKEN(T_CLOSE_TAG); } -#line 3421 "Zend/zend_language_scanner.c" -yy219: - YYDEBUG(219, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; +#line 3673 "Zend/zend_language_scanner.c" +yy220: YYDEBUG(220, *YYCURSOR); - if (yych <= '\'') { - if (yych <= ' ') { - if (yych == '\t') goto yy219; - if (yych <= 0x1F) goto yy82; - goto yy219; - } else { - if (yych == '"') goto yy309; - if (yych <= '&') goto yy82; - goto yy310; - } - } else { - if (yych <= '_') { - if (yych <= '@') goto yy82; - if (yych <= 'Z') goto yy311; - if (yych <= '^') goto yy82; - goto yy311; - } else { - if (yych <= '`') goto yy82; - if (yych <= 'z') goto yy311; - if (yych <= 0x7F) goto yy82; - goto yy311; - } - } -yy221: - YYDEBUG(221, *YYCURSOR); ++YYCURSOR; - YYDEBUG(222, *YYCURSOR); + YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1644 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL_EQUAL); + RETURN_TOKEN(T_COALESCE); } -#line 3460 "Zend/zend_language_scanner.c" +#line 3683 "Zend/zend_language_scanner.c" +yy222: + YYDEBUG(222, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy315; + if (yych == 's') goto yy315; + goto yy128; yy223: YYDEBUG(223, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'D') goto yy316; + if (yych == 'd') goto yy316; + goto yy128; +yy224: YYDEBUG(224, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 3470 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy318; + if (yych == 'r') goto yy318; + goto yy128; yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1584 "Zend/zend_language_scanner.l" +#line 1344 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_IDENTICAL); + RETURN_TOKEN(T_AS); } -#line 3480 "Zend/zend_language_scanner.c" +#line 3714 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '<') goto yy319; + goto yy166; +yy228: YYDEBUG(228, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1648 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR_EQUAL); -} -#line 3490 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy320; + if (yych == 'e') goto yy320; + goto yy128; yy229: YYDEBUG(229, *YYCURSOR); - ++YYCURSOR; - goto yy135; + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych <= 'K') goto yy128; + goto yy321; + } else { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy322; + goto yy323; + } + } else { + if (yych <= 'r') { + if (yych == 'l') goto yy321; + goto yy128; + } else { + if (yych <= 's') goto yy322; + if (yych <= 't') goto yy323; + goto yy128; + } + } yy230: YYDEBUG(230, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - goto yy135; + if (yych <= 'O') { + if (yych == 'A') goto yy324; + if (yych <= 'N') goto yy128; + goto yy325; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy324; + } else { + if (yych == 'o') goto yy325; + goto yy128; + } + } yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy313; - if (yych == 't') goto yy313; - goto yy44; + if (yych == 'N') goto yy326; + if (yych == 'n') goto yy326; + goto yy128; yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych <= 'F') { + if (yych == 'C') goto yy327; + if (yych <= 'E') goto yy128; + goto yy328; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy128; + goto yy327; + } else { + if (yych == 'f') goto yy328; + goto yy128; + } } +yy233: YYDEBUG(233, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1676 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_AND); -} -#line 3518 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy329; + if (yych == 'e') goto yy329; + goto yy128; yy234: YYDEBUG(234, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy314; - if (yych == 'a') goto yy314; - goto yy44; -yy235: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(235, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy219; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1312 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DO); +} +#line 3804 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy315; - if (yych == 'a') goto yy315; - goto yy44; + if (yych == 'H') goto yy331; + if (yych == 'h') goto yy331; + goto yy128; yy237: YYDEBUG(237, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy316; - if (yych == 'l') goto yy316; - goto yy44; + if (yych == 'S') goto yy332; + if (yych == 's') goto yy332; + goto yy128; yy238: YYDEBUG(238, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy317; - if (yych == 'e') goto yy317; - goto yy44; + if (yych == 'P') goto yy333; + if (yych == 'p') goto yy333; + goto yy128; yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy319; - if (yych == 'c') goto yy319; - goto yy44; + if (yych == 'D') goto yy334; + if (yych == 'd') goto yy334; + goto yy128; yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy320; - if (yych == 's') goto yy320; - goto yy44; + if (yych == 'A') goto yy335; + if (yych == 'a') goto yy335; + goto yy128; yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy321; - if (yych == 'n') goto yy321; - goto yy44; -yy242: - YYDEBUG(242, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'T') { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy322; - goto yy323; + if (yych == 'I') goto yy336; + if (yych <= 'S') goto yy128; + goto yy337; } else { - if (yych <= 'r') goto yy44; - if (yych <= 's') goto yy322; - if (yych <= 't') goto yy323; - goto yy44; + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy336; + } else { + if (yych == 't') goto yy337; + goto yy128; + } } +yy242: + YYDEBUG(242, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy338; + if (yych == 'n') goto yy338; + goto yy128; yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy324; - if (yych == 'l') goto yy324; - goto yy44; + if (yych == 'R') goto yy339; + if (yych == 'r') goto yy339; + goto yy128; yy244: YYDEBUG(244, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy325; - if (yych == 'a') goto yy325; - goto yy44; + if (yych == 'N') goto yy341; + if (yych == 'n') goto yy341; + goto yy128; yy245: YYDEBUG(245, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy342; + if (yych == 'o') goto yy342; + goto yy128; +yy246: YYDEBUG(246, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXIT); -} -#line 3603 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy343; + if (yych == 't') goto yy343; + goto yy128; yy247: YYDEBUG(247, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy326; - if (yych == 'o') goto yy326; - goto yy44; -yy248: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(248, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy328; - if (yych == 'e') goto yy328; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1288 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IF); +} +#line 3893 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy330; - if (yych == 't') goto yy330; - goto yy44; + if (yych == 'P') goto yy344; + if (yych == 'p') goto yy344; + goto yy128; yy250: YYDEBUG(250, *YYCURSOR); yych = *++YYCURSOR; - switch (yych) { - case 'D': - case 'd': goto yy331; - case 'F': - case 'f': goto yy332; - case 'I': - case 'i': goto yy333; - case 'S': - case 's': goto yy334; - case 'W': - case 'w': goto yy335; - default: goto yy44; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy128; + goto yy345; + } else { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy346; + goto yy347; + } + } else { + if (yych <= 'r') { + if (yych == 'c') goto yy345; + goto yy128; + } else { + if (yych <= 's') goto yy346; + if (yych <= 't') goto yy347; + goto yy128; + } } yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy336; - if (yych == 'l') goto yy336; - goto yy44; + if (yych == 'S') goto yy348; + if (yych == 's') goto yy348; + goto yy128; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy338; - if (yych == 't') goto yy338; - goto yy44; + if (yych == 'S') goto yy349; + if (yych == 's') goto yy349; + goto yy128; yy253: YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy340; - if (yych == 'e') goto yy340; - goto yy44; + if (yych == 'M') goto yy350; + if (yych == 'm') goto yy350; + goto yy128; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy341; - if (yych == 'a') goto yy341; - goto yy44; + if (yych == 'W') goto yy351; + if (yych == 'w') goto yy351; + goto yy128; yy255: YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy256; - if (yych <= '9') goto yy43; - } else { - if (yych == 'E') goto yy342; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'e') goto yy342; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy256: YYDEBUG(256, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" +#line 1672 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOR); + RETURN_TOKEN(T_LOGICAL_OR); } -#line 3689 "Zend/zend_language_scanner.c" +#line 3958 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy343; - if (yych == 'c') goto yy343; - goto yy44; + if (yych <= 'O') { + if (yych == 'I') goto yy353; + if (yych <= 'N') goto yy128; + goto yy354; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy353; + } else { + if (yych == 'o') goto yy354; + goto yy128; + } + } yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy344; - if (yych == 'b') goto yy344; - goto yy44; + if (yych == 'B') goto yy355; + if (yych == 'b') goto yy355; + goto yy128; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy345; - if (yych == 'o') goto yy345; - goto yy44; + if (yych <= 'T') { + if (yych == 'Q') goto yy356; + if (yych <= 'S') goto yy128; + goto yy357; + } else { + if (yych <= 'q') { + if (yych <= 'p') goto yy128; + goto yy356; + } else { + if (yych == 't') goto yy357; + goto yy128; + } + } yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy347; - if (yych == 'l') goto yy347; - goto yy44; + if (yych == 'A') goto yy358; + if (yych == 'a') goto yy358; + goto yy128; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy348; - if (yych == 'l') goto yy348; - goto yy44; + if (yych == 'I') goto yy359; + if (yych == 'i') goto yy359; + goto yy128; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy349; - if (yych == 't') goto yy349; - goto yy44; + if (yych == 'R') goto yy360; + if (yych == 'r') goto yy360; + goto yy128; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy350; - if (yych == 'e') goto yy350; - goto yy44; + if (yych <= 'Y') { + if (yych == 'A') goto yy361; + if (yych <= 'X') goto yy128; + goto yy362; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy361; + } else { + if (yych == 'y') goto yy362; + goto yy128; + } + } yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy351; - if (yych == 'e') goto yy351; - goto yy44; + if (yych == 'S') goto yy364; + if (yych == 's') goto yy364; + goto yy128; yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy352; - if (yych == 't') goto yy352; - goto yy44; + if (yych == 'E') goto yy365; + if (yych == 'e') goto yy365; + goto yy128; yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy354; - if (yych == 'e') goto yy354; - goto yy44; + if (yych == 'R') goto yy367; + if (yych == 'r') goto yy367; + goto yy128; yy267: YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy369; + if (yych == 'i') goto yy369; + goto yy128; +yy268: YYDEBUG(268, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1444 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NEW); -} -#line 3762 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy370; + if (yych == 'r') goto yy370; + goto yy128; yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy355; - if (yych <= 'U') goto yy44; - goto yy356; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy44; - goto yy355; - } else { - if (yych == 'v') goto yy356; - goto yy44; - } - } + if (yych == 'E') goto yy372; + if (yych == 'e') goto yy372; + goto yy128; yy270: YYDEBUG(270, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy357; - if (yych == 't') goto yy357; - goto yy44; -yy271: + ++YYCURSOR; YYDEBUG(271, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy358; - if (yych == 'l') goto yy358; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1660 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_XOR_EQUAL); +} +#line 4076 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy359; - if (yych == 'u') goto yy359; - goto yy44; + switch (yych) { + case 'C': + case 'c': goto yy373; + case 'D': + case 'd': goto yy374; + case 'F': + case 'f': goto yy375; + case 'H': + case 'h': goto yy376; + case 'L': + case 'l': goto yy377; + case 'M': + case 'm': goto yy378; + case 'N': + case 'n': goto yy379; + case 'T': + case 't': goto yy380; + default: goto yy128; + } yy273: YYDEBUG(273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy360; - if (yych == 'u') goto yy360; - goto yy44; -yy274: + ++YYCURSOR; YYDEBUG(274, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy361; - if (yych == 't') goto yy361; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1656 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OR_EQUAL); +} +#line 4108 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy362; - if (yych == 't') goto yy362; - goto yy44; -yy276: + ++YYCURSOR; YYDEBUG(276, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy363; - if (yych == 'o') goto yy363; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1664 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_OR); +} +#line 4118 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy364; - if (yych == 'i') goto yy364; - goto yy44; -yy278: + ++YYCURSOR; YYDEBUG(278, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRY); + RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3839 "Zend/zend_language_scanner.c" +#line 4128 "Zend/zend_language_scanner.c" +yy279: + YYDEBUG(279, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy381; + if (yych == 'r') goto yy381; + goto yy166; yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy365; - if (yych == 'e') goto yy365; - goto yy44; + if (yych == 'N') goto yy382; + if (yych == 'n') goto yy382; + goto yy166; yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy383; + if (yych == 'o') goto yy383; + goto yy166; +yy282: YYDEBUG(282, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 3858 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'U') goto yy384; + if (yych == 'u') goto yy384; + goto yy166; yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy385; + if (yych == 'o') goto yy385; + goto yy166; +yy284: YYDEBUG(284, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_VAR); -} -#line 3871 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy386; + if (yych == 't') goto yy386; + goto yy166; yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy366; - if (yych == 'l') goto yy366; - goto yy44; + if (yych == 'J') goto yy387; + if (yych == 'j') goto yy387; + goto yy166; yy286: YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy388; + if (yych == 'a') goto yy388; + goto yy166; +yy287: YYDEBUG(287, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 3890 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy389; + if (yych == 'r') goto yy389; + goto yy166; yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy367; - if (yych == 'l') goto yy367; - goto yy44; + if (yych == 'S') goto yy390; + if (yych == 's') goto yy390; + goto yy166; yy289: YYDEBUG(289, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy368; - if (yych == 'l') goto yy368; - goto yy44; -yy290: + ++YYCURSOR; YYDEBUG(290, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy369; - if (yych == 'i') goto yy369; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1628 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW_EQUAL); +} +#line 4198 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy370; - if (yych <= 'T') goto yy44; - goto yy371; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy370; - } else { - if (yych == 'u') goto yy371; - goto yy44; - } - } -yy292: + ++YYCURSOR; YYDEBUG(292, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy372; - if (yych == 'a') goto yy372; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1436 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELLIPSIS); +} +#line 4208 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy373; - if (yych == 'i') goto yy373; - goto yy44; + if (yych <= '\f') { + if (yych <= 0x08) goto yy166; + if (yych <= '\n') goto yy391; + goto yy166; + } else { + if (yych <= '\r') goto yy391; + if (yych == ' ') goto yy391; + goto yy166; + } yy294: YYDEBUG(294, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy374; - if (yych == 'e') goto yy374; - goto yy44; -yy295: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(295, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy375; - if (yych == 'a') goto yy375; - goto yy44; -yy296: + if (yybm[0+yych] & 64) { + goto yy294; + } YYDEBUG(296, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy376; - if (yych == 'r') goto yy376; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1733 "Zend/zend_language_scanner.l" + { + char *bin = yytext + 2; /* Skip "0b" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*bin == '0') { + ++bin; + --len; + } + + if (len < SIZEOF_ZEND_LONG * 8) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); + ZEND_ASSERT(!errno && end == yytext + yyleng); + } + RETURN_TOKEN_WITH_VAL(T_LNUMBER); + } else { + 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_WITH_VAL(T_DNUMBER); + } +} +#line 4260 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy377; - if (yych == 'a') goto yy377; - goto yy82; + if (yych <= '/') goto yy166; + if (yych >= ':') goto yy166; yy298: YYDEBUG(298, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy378; - if (yych == 'a') goto yy378; - goto yy82; -yy299: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(299, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy379; - if (yych == 'l') goto yy379; - goto yy82; + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy298; + goto yy193; yy300: YYDEBUG(300, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy380; - if (yych == 'b') goto yy380; - goto yy82; -yy301: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy381; - if (yych == 'a') goto yy381; - goto yy82; -yy302: + if (yybm[0+yych] & 128) { + goto yy300; + } YYDEBUG(302, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy386; - if (yych == 'e') goto yy386; - goto yy383; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1812 "Zend/zend_language_scanner.l" + { + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; + } + + if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); + ZEND_ASSERT(!errno && end == hex + len); + } + RETURN_TOKEN_WITH_VAL(T_LNUMBER); + } else { + 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_WITH_VAL(T_DNUMBER); + } +} +#line 4314 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy387; - if (yych == 'e') goto yy387; - goto yy82; -yy304: + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; YYDEBUG(304, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy388; - if (yych == 'l') goto yy388; - goto yy82; + if (yych <= '\'') { + if (yych <= ' ') { + if (yych == '\t') goto yy303; + if (yych <= 0x1F) goto yy166; + goto yy303; + } else { + if (yych == '"') goto yy393; + if (yych <= '&') goto yy166; + goto yy394; + } + } else { + if (yych <= '_') { + if (yych <= '@') goto yy166; + if (yych <= 'Z') goto yy395; + if (yych <= '^') goto yy166; + goto yy395; + } else { + if (yych <= '`') goto yy166; + if (yych <= 'z') goto yy395; + if (yych <= 0x7F) goto yy166; + goto yy395; + } + } yy305: YYDEBUG(305, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy390; - if (yych == 'i') goto yy390; - goto yy82; -yy306: + ++YYCURSOR; YYDEBUG(306, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy391; - if (yych == 'e') goto yy391; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1644 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL_EQUAL); +} +#line 4353 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; YYDEBUG(308, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy113; - if (yych <= '\n') goto yy307; - goto yy113; - } else { - if (yych <= '\r') goto yy307; - if (yych == ' ') goto yy307; - goto yy113; - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1600 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SPACESHIP); +} +#line 4363 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy82; - if (yych <= '/') goto yy393; - if (yych <= '9') goto yy82; - goto yy393; -yy310: + ++YYCURSOR; YYDEBUG(310, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy82; - if (yych <= '/') goto yy395; - if (yych <= '9') goto yy82; - goto yy395; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1584 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_IDENTICAL); +} +#line 4373 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; YYDEBUG(312, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy396; - goto yy82; - } else { - if (yych <= '\r') goto yy398; - if (yych <= '/') goto yy82; - if (yych <= '9') goto yy311; - goto yy82; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy311; - if (yych <= '^') goto yy82; - goto yy311; - } else { - if (yych <= '`') goto yy82; - if (yych <= 'z') goto yy311; - if (yych <= 0x7F) goto yy82; - goto yy311; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1648 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR_EQUAL); +} +#line 4383 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy399; - if (yych == 'r') goto yy399; - goto yy44; + goto yy219; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy400; - if (yych == 'y') goto yy400; - goto yy44; + if (yych == '\n') goto yy313; + goto yy219; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy402; - if (yych == 'k') goto yy402; - goto yy44; + if (yych == 'T') goto yy397; + if (yych == 't') goto yy397; + goto yy128; yy316: YYDEBUG(316, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy404; - if (yych == 'a') goto yy404; - goto yy44; -yy317: - YYDEBUG(317, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(318, *YYCURSOR); + YYDEBUG(317, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1356 "Zend/zend_language_scanner.l" +#line 1676 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CASE); + RETURN_TOKEN(T_LOGICAL_AND); } -#line 4108 "Zend/zend_language_scanner.c" +#line 4411 "Zend/zend_language_scanner.c" +yy318: + YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy398; + if (yych == 'a') goto yy398; + goto yy128; yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy405; - if (yych == 'h') goto yy405; - goto yy44; + if (yych == '<') goto yy303; + goto yy166; yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy407; - if (yych == 's') goto yy407; - goto yy44; + if (yych == 'A') goto yy399; + if (yych == 'a') goto yy399; + goto yy128; yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy409; - if (yych == 'e') goto yy409; - goto yy44; + if (yych == 'L') goto yy400; + if (yych == 'l') goto yy400; + goto yy128; yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy411; - if (yych == 't') goto yy411; - goto yy44; + if (yych == 'E') goto yy401; + if (yych == 'e') goto yy401; + goto yy128; yy323: YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy413; - if (yych == 'i') goto yy413; - goto yy44; + if (yych == 'C') goto yy403; + if (yych == 'c') goto yy403; + goto yy128; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy414; - if (yych == 'a') goto yy414; - goto yy44; + if (yych == 'S') goto yy404; + if (yych == 's') goto yy404; + goto yy128; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy415; - if (yych == 'u') goto yy415; - goto yy44; + if (yych == 'N') goto yy405; + if (yych == 'n') goto yy405; + goto yy128; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych <= 'T') { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy406; + goto yy407; + } else { + if (yych <= 'r') goto yy128; + if (yych <= 's') goto yy406; + if (yych <= 't') goto yy407; + goto yy128; } +yy327: YYDEBUG(327, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ECHO); -} -#line 4163 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy408; + if (yych == 'l') goto yy408; + goto yy128; yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy329; - if (yych <= '9') goto yy43; - } else { - if (yych == 'I') goto yy416; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'h') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'i') goto yy416; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'A') goto yy409; + if (yych == 'a') goto yy409; + goto yy128; yy329: YYDEBUG(329, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(330, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + RETURN_TOKEN(T_EXIT); } -#line 4191 "Zend/zend_language_scanner.c" -yy330: - YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy417; - if (yych == 'y') goto yy417; - goto yy44; +#line 4496 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy419; - if (yych == 'e') goto yy419; - goto yy44; + if (yych == 'O') goto yy410; + if (yych == 'o') goto yy410; + goto yy128; yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy420; - if (yych == 'o') goto yy420; - goto yy44; + if (yych == 'E') goto yy412; + if (yych == 'e') goto yy412; + goto yy128; yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy421; - if (yych == 'f') goto yy421; - goto yy44; + if (yych == 'T') goto yy414; + if (yych == 't') goto yy414; + goto yy128; yy334: YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy423; - if (yych == 'w') goto yy423; - goto yy44; + switch (yych) { + case 'D': + case 'd': goto yy415; + case 'F': + case 'f': goto yy416; + case 'I': + case 'i': goto yy417; + case 'S': + case 's': goto yy418; + case 'W': + case 'w': goto yy419; + default: goto yy128; + } yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy424; - if (yych == 'h') goto yy424; - goto yy44; + if (yych == 'L') goto yy420; + if (yych == 'l') goto yy420; + goto yy128; yy336: YYDEBUG(336, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy422; + if (yych == 't') goto yy422; + goto yy128; +yy337: YYDEBUG(337, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EVAL); -} -#line 4240 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy424; + if (yych == 'e') goto yy424; + goto yy128; yy338: YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy425; + if (yych == 'a') goto yy425; + goto yy128; +yy339: YYDEBUG(339, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy340; + if (yych <= '9') goto yy127; + } else { + if (yych == 'E') goto yy426; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'e') goto yy426; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy340: + YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1316 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_FOR); } -#line 4253 "Zend/zend_language_scanner.c" -yy340: - YYDEBUG(340, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy425; - if (yych == 'n') goto yy425; - goto yy44; +#line 4582 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy426; - if (yych == 'l') goto yy426; - goto yy44; + if (yych == 'C') goto yy427; + if (yych == 'c') goto yy427; + goto yy128; yy342: YYDEBUG(342, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy428; - if (yych == 'a') goto yy428; - goto yy44; + if (yych == 'B') goto yy428; + if (yych == 'b') goto yy428; + goto yy128; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy429; - if (yych == 't') goto yy429; - goto yy44; + if (yych == 'O') goto yy429; + if (yych == 'o') goto yy429; + goto yy128; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy430; - if (yych == 'a') goto yy430; - goto yy44; + if (yych == 'L') goto yy431; + if (yych == 'l') goto yy431; + goto yy128; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'L') goto yy432; + if (yych == 'l') goto yy432; + goto yy128; +yy346: YYDEBUG(346, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 4296 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy433; + if (yych == 't') goto yy433; + goto yy128; yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy431; - if (yych == 'e') goto yy431; - goto yy44; + if (yych == 'E') goto yy434; + if (yych == 'e') goto yy434; + goto yy128; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy432; - if (yych == 'u') goto yy432; - goto yy44; + if (yych == 'E') goto yy435; + if (yych == 'e') goto yy435; + goto yy128; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy433; - if (yych <= 'D') goto yy44; - goto yy434; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy433; - } else { - if (yych == 'e') goto yy434; - goto yy44; - } - } + if (yych == 'T') goto yy436; + if (yych == 't') goto yy436; + goto yy128; yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy435; - if (yych == 'r') goto yy435; - goto yy44; + if (yych == 'E') goto yy438; + if (yych == 'e') goto yy438; + goto yy128; yy351: - YYDEBUG(351, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy436; - if (yych == 't') goto yy436; - goto yy44; -yy352: - YYDEBUG(352, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + YYDEBUG(351, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(353, *YYCURSOR); + YYDEBUG(352, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LIST); + RETURN_TOKEN(T_NEW); } -#line 4349 "Zend/zend_language_scanner.c" +#line 4655 "Zend/zend_language_scanner.c" +yy353: + YYDEBUG(353, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych == 'N') goto yy439; + if (yych <= 'U') goto yy128; + goto yy440; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy128; + goto yy439; + } else { + if (yych == 'v') goto yy440; + goto yy128; + } + } yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy438; - if (yych == 's') goto yy438; - goto yy44; + if (yych == 'T') goto yy441; + if (yych == 't') goto yy441; + goto yy128; yy355: YYDEBUG(355, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy439; - if (yych == 't') goto yy439; - goto yy44; + if (yych == 'L') goto yy442; + if (yych == 'l') goto yy442; + goto yy128; yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy441; - if (yych == 'a') goto yy441; - goto yy44; + if (yych == 'U') goto yy443; + if (yych == 'u') goto yy443; + goto yy128; yy357: YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy442; - if (yych == 'e') goto yy442; - goto yy44; + if (yych == 'U') goto yy444; + if (yych == 'u') goto yy444; + goto yy128; yy358: YYDEBUG(358, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy443; - if (yych == 'i') goto yy443; - goto yy44; + if (yych == 'T') goto yy445; + if (yych == 't') goto yy445; + goto yy128; yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy444; - if (yych == 'i') goto yy444; - goto yy44; + if (yych == 'T') goto yy446; + if (yych == 't') goto yy446; + goto yy128; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy445; - if (yych == 'r') goto yy445; - goto yy44; + if (yych == 'O') goto yy447; + if (yych == 'o') goto yy447; + goto yy128; yy361: YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy446; - if (yych == 'i') goto yy446; - goto yy44; + if (yych == 'I') goto yy448; + if (yych == 'i') goto yy448; + goto yy128; yy362: YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy447; - if (yych == 'c') goto yy447; - goto yy44; -yy363: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy448; - if (yych == 'w') goto yy448; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1272 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRY); +} +#line 4732 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy450; - if (yych == 't') goto yy450; - goto yy44; + if (yych == 'E') goto yy449; + if (yych == 'e') goto yy449; + goto yy128; yy365: YYDEBUG(365, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy452; - if (yych == 't') goto yy452; - goto yy44; -yy366: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(366, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy454; - if (yych == 'e') goto yy454; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1508 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_USE); +} +#line 4751 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy456; - if (yych == 'd') goto yy456; - goto yy44; -yy368: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(368, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy458; - if (yych == 'a') goto yy458; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1452 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_VAR); +} +#line 4764 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy459; - if (yych == 'r') goto yy459; - goto yy44; + if (yych == 'L') goto yy450; + if (yych == 'l') goto yy450; + goto yy128; yy370: YYDEBUG(370, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy460; - if (yych == 'l') goto yy460; - goto yy44; -yy371: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(371, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy461; - if (yych == 'n') goto yy461; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1680 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_XOR); +} +#line 4783 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy462; - if (yych == 'l') goto yy462; - goto yy44; + if (yych == 'L') goto yy451; + if (yych == 'l') goto yy451; + goto yy128; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy463; - if (yych == 'n') goto yy463; - goto yy44; + if (yych == 'L') goto yy452; + if (yych == 'l') goto yy452; + goto yy128; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy464; - if (yych == 't') goto yy464; - goto yy44; + if (yych == 'I') goto yy453; + if (yych == 'i') goto yy453; + goto yy128; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy465; - if (yych == 'm') goto yy465; - goto yy44; + if (yych <= 'U') { + if (yych == 'I') goto yy454; + if (yych <= 'T') goto yy128; + goto yy455; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy454; + } else { + if (yych == 'u') goto yy455; + goto yy128; + } + } yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy466; - if (yych == 'a') goto yy466; - goto yy44; + if (yych == 'A') goto yy456; + if (yych == 'a') goto yy456; + goto yy128; yy377: YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy467; - if (yych == 'y') goto yy467; - goto yy82; + if (yych == 'I') goto yy457; + if (yych == 'i') goto yy457; + goto yy128; yy378: YYDEBUG(378, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy469; - if (yych == 'r') goto yy469; - goto yy82; + if (yych == 'E') goto yy458; + if (yych == 'e') goto yy458; + goto yy128; yy379: YYDEBUG(379, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy474; - if (yych == 'e') goto yy474; - goto yy471; + if (yych == 'A') goto yy459; + if (yych == 'a') goto yy459; + goto yy128; yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy475; - if (yych == 'l') goto yy475; - goto yy82; + if (yych == 'R') goto yy460; + if (yych == 'r') goto yy460; + goto yy128; yy381: YYDEBUG(381, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy388; - if (yych == 't') goto yy388; - goto yy82; + if (yych == 'A') goto yy461; + if (yych == 'a') goto yy461; + goto yy166; yy382: YYDEBUG(382, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'A') goto yy462; + if (yych == 'a') goto yy462; + goto yy166; yy383: YYDEBUG(383, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy382; - goto yy82; - } else { - if (yych <= ' ') goto yy382; - if (yych != ')') goto yy82; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy463; + if (yych == 'l') goto yy463; + goto yy166; +yy384: YYDEBUG(384, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'B') goto yy464; + if (yych == 'b') goto yy464; + goto yy166; +yy385: YYDEBUG(385, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 4540 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy465; + if (yych == 'a') goto yy465; + goto yy166; yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy476; - if (yych == 'g') goto yy476; - goto yy82; + if (yych == 'E') goto yy470; + if (yych == 'e') goto yy470; + goto yy467; yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy477; - if (yych == 'c') goto yy477; - goto yy82; + if (yych == 'E') goto yy471; + if (yych == 'e') goto yy471; + goto yy166; yy388: YYDEBUG(388, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy472; + if (yych == 'l') goto yy472; + goto yy166; +yy389: YYDEBUG(389, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy388; - goto yy82; - } else { - if (yych <= ' ') goto yy388; - if (yych == ')') goto yy478; - goto yy82; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy474; + if (yych == 'i') goto yy474; + goto yy166; yy390: YYDEBUG(390, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy480; - if (yych == 'n') goto yy480; - goto yy82; + if (yych == 'E') goto yy475; + if (yych == 'e') goto yy475; + goto yy166; yy391: YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy481; - if (yych == 't') goto yy481; - goto yy82; -yy392: - YYDEBUG(392, *YYCURSOR); ++YYCURSOR; - YYFILL(3); + YYFILL(1); yych = *YYCURSOR; -yy393: - YYDEBUG(393, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '"') goto yy483; - goto yy82; - } else { - if (yych <= '9') goto yy392; - if (yych <= '@') goto yy82; - goto yy392; - } + YYDEBUG(392, *YYCURSOR); + if (yych <= '\f') { + if (yych <= 0x08) goto yy197; + if (yych <= '\n') goto yy391; + goto yy197; } else { - if (yych <= '`') { - if (yych == '_') goto yy392; - goto yy82; - } else { - if (yych <= 'z') goto yy392; - if (yych <= 0x7F) goto yy82; - goto yy392; - } + if (yych <= '\r') goto yy391; + if (yych == ' ') goto yy391; + goto yy197; } +yy393: + YYDEBUG(393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '"') goto yy166; + if (yych <= '/') goto yy477; + if (yych <= '9') goto yy166; + goto yy477; yy394: YYDEBUG(394, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '\'') goto yy166; + if (yych <= '/') goto yy479; + if (yych <= '9') goto yy166; + goto yy479; yy395: YYDEBUG(395, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy483; - goto yy82; - } else { - if (yych <= '9') goto yy394; - if (yych <= '@') goto yy82; - goto yy394; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy394; - goto yy82; - } else { - if (yych <= 'z') goto yy394; - if (yych <= 0x7F) goto yy82; - goto yy394; - } - } -yy396: - YYDEBUG(396, *YYCURSOR); - ++YYCURSOR; -yy397: - YYDEBUG(397, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2249 "Zend/zend_language_scanner.l" - { - char *s; - 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); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - heredoc_label->length--; - } - - if (*s == '\'') { - s++; - heredoc_label->length -= 2; - is_heredoc = 0; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - heredoc_label->length -= 2; - } - - BEGIN(ST_HEREDOC); - } - - heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = 0; - saved_cursor = YYCURSOR; - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } - - /* Check for ending label on the next line */ - if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - YYCURSOR = saved_cursor; - heredoc_label->indentation = indentation; - - BEGIN(ST_END_HEREDOC); - RETURN_TOKEN(T_START_HEREDOC); - } - } - - YYCURSOR = saved_cursor; - - if (is_heredoc && !SCNG(heredoc_scan_ahead)) { - zend_lex_state current_state; - int heredoc_nesting_level = 1; - int first_token = 0; - - zend_save_lexical_state(¤t_state); - - SCNG(heredoc_scan_ahead) = 1; - SCNG(heredoc_indentation) = 0; - SCNG(heredoc_indentation_uses_spaces) = 0; - LANG_SCNG(on_event) = NULL; - - zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - - while (heredoc_nesting_level) { - zval zv; - int retval; - - ZVAL_UNDEF(&zv); - retval = lex_scan(&zv, NULL); - zval_dtor(&zv); - - if (EG(exception)) { - zend_clear_exception(); - break; - } - - if (!first_token) { - first_token = retval; - } - - switch (retval) { - case T_START_HEREDOC: - ++heredoc_nesting_level; - break; - case T_END_HEREDOC: - --heredoc_nesting_level; - break; - case END: - heredoc_nesting_level = 0; + YYFILL(2); + yych = *YYCURSOR; + YYDEBUG(396, *YYCURSOR); + if (yych <= '@') { + if (yych <= '\f') { + if (yych == '\n') goto yy480; + goto yy166; + } else { + if (yych <= '\r') goto yy482; + if (yych <= '/') goto yy166; + if (yych <= '9') goto yy395; + goto yy166; } - } - - if ( - (first_token == T_VARIABLE - || first_token == T_DOLLAR_OPEN_CURLY_BRACES - || first_token == T_CURLY_OPEN - ) && SCNG(heredoc_indentation)) { - zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); - } - - heredoc_label->indentation = SCNG(heredoc_indentation); - heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); - - zend_restore_lexical_state(¤t_state); - SCNG(heredoc_scan_ahead) = 0; - CG(increment_lineno) = 0; - } - - RETURN_TOKEN(T_START_HEREDOC); -} -#line 4767 "Zend/zend_language_scanner.c" + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy395; + if (yych <= '^') goto yy166; + goto yy395; + } else { + if (yych <= '`') goto yy166; + if (yych <= 'z') goto yy395; + if (yych <= 0x7F) goto yy166; + goto yy395; + } + } +yy397: + YYDEBUG(397, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy483; + if (yych == 'r') goto yy483; + goto yy128; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy396; - goto yy397; + if (yych == 'Y') goto yy484; + if (yych == 'y') goto yy484; + goto yy128; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy484; - if (yych == 'a') goto yy484; - goto yy44; + if (yych == 'K') goto yy486; + if (yych == 'k') goto yy486; + goto yy128; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy488; + if (yych == 'a') goto yy488; + goto yy128; +yy401: YYDEBUG(401, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY); -} -#line 4791 "Zend/zend_language_scanner.c" -yy402: - YYDEBUG(402, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(403, *YYCURSOR); + YYDEBUG(402, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1364 "Zend/zend_language_scanner.l" +#line 1356 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BREAK); + RETURN_TOKEN(T_CASE); } -#line 4804 "Zend/zend_language_scanner.c" +#line 5001 "Zend/zend_language_scanner.c" +yy403: + YYDEBUG(403, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy489; + if (yych == 'h') goto yy489; + goto yy128; yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy485; - if (yych == 'b') goto yy485; - goto yy44; + if (yych == 'S') goto yy491; + if (yych == 's') goto yy491; + goto yy128; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy493; + if (yych == 'e') goto yy493; + goto yy128; +yy406: YYDEBUG(406, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CATCH); -} -#line 4823 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy495; + if (yych == 't') goto yy495; + goto yy128; yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy497; + if (yych == 'i') goto yy497; + goto yy128; +yy408: YYDEBUG(408, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1384 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS); -} -#line 4836 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy498; + if (yych == 'a') goto yy498; + goto yy128; yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'U') goto yy499; + if (yych == 'u') goto yy499; + goto yy128; +yy410: YYDEBUG(410, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(411, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLONE); + RETURN_TOKEN(T_ECHO); } -#line 4849 "Zend/zend_language_scanner.c" -yy411: - YYDEBUG(411, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } +#line 5056 "Zend/zend_language_scanner.c" +yy412: YYDEBUG(412, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy413; + if (yych <= '9') goto yy127; + } else { + if (yych == 'I') goto yy500; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'h') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'i') goto yy500; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy413: + YYDEBUG(413, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1300 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONST); + RETURN_TOKEN(T_ELSE); } -#line 4862 "Zend/zend_language_scanner.c" -yy413: - YYDEBUG(413, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy486; - if (yych == 'n') goto yy486; - goto yy44; +#line 5084 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy487; - if (yych == 'r') goto yy487; - goto yy44; + if (yych == 'Y') goto yy501; + if (yych == 'y') goto yy501; + goto yy128; yy415: YYDEBUG(415, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy488; - if (yych == 'l') goto yy488; - goto yy44; + if (yych == 'E') goto yy503; + if (yych == 'e') goto yy503; + goto yy128; yy416: YYDEBUG(416, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy489; - if (yych == 'f') goto yy489; - goto yy44; + if (yych == 'O') goto yy504; + if (yych == 'o') goto yy504; + goto yy128; yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'F') goto yy505; + if (yych == 'f') goto yy505; + goto yy128; +yy418: YYDEBUG(418, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EMPTY); -} -#line 4899 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'W') goto yy507; + if (yych == 'w') goto yy507; + goto yy128; yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy491; - if (yych == 'c') goto yy491; - goto yy44; + if (yych == 'H') goto yy508; + if (yych == 'h') goto yy508; + goto yy128; yy420: YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy492; - if (yych == 'r') goto yy492; - goto yy44; -yy421: - YYDEBUG(421, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(422, *YYCURSOR); + YYDEBUG(421, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDIF); + RETURN_TOKEN(T_EVAL); } -#line 4924 "Zend/zend_language_scanner.c" -yy423: +#line 5133 "Zend/zend_language_scanner.c" +yy422: + YYDEBUG(422, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(423, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy494; - if (yych == 'i') goto yy494; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1242 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXIT); +} +#line 5146 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy495; - if (yych == 'i') goto yy495; - goto yy44; + if (yych == 'N') goto yy509; + if (yych == 'n') goto yy509; + goto yy128; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy496; - if (yych == 'd') goto yy496; - goto yy44; + if (yych == 'L') goto yy510; + if (yych == 'l') goto yy510; + goto yy128; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy427; - if (yych <= '9') goto yy43; - } else { - if (yych == 'L') goto yy497; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'k') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'l') goto yy497; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'A') goto yy512; + if (yych == 'a') goto yy512; + goto yy128; yy427: YYDEBUG(427, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1540 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINAL); -} -#line 4970 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy513; + if (yych == 't') goto yy513; + goto yy128; yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy498; - if (yych == 'c') goto yy498; - goto yy44; + if (yych == 'A') goto yy514; + if (yych == 'a') goto yy514; + goto yy128; yy429: YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy499; - if (yych == 'i') goto yy499; - goto yy44; -yy430: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(430, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy500; - if (yych == 'l') goto yy500; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1372 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GOTO); +} +#line 5189 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy502; - if (yych == 'm') goto yy502; - goto yy44; + if (yych == 'E') goto yy515; + if (yych == 'e') goto yy515; + goto yy128; yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy503; - if (yych == 'd') goto yy503; - goto yy44; + if (yych == 'U') goto yy516; + if (yych == 'u') goto yy516; + goto yy128; yy433: YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy504; - if (yych == 'n') goto yy504; - goto yy44; + if (yych <= 'E') { + if (yych == 'A') goto yy517; + if (yych <= 'D') goto yy128; + goto yy518; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy517; + } else { + if (yych == 'e') goto yy518; + goto yy128; + } + } yy434: YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy505; - if (yych == 'a') goto yy505; - goto yy44; + if (yych == 'R') goto yy519; + if (yych == 'r') goto yy519; + goto yy128; yy435: YYDEBUG(435, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy506; - if (yych == 'f') goto yy506; - goto yy44; + if (yych == 'T') goto yy520; + if (yych == 't') goto yy520; + goto yy128; yy436: YYDEBUG(436, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ISSET); + RETURN_TOKEN(T_LIST); } -#line 5031 "Zend/zend_language_scanner.c" +#line 5242 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy507; - if (yych == 'p') goto yy507; - goto yy44; + if (yych == 'S') goto yy522; + if (yych == 's') goto yy522; + goto yy128; yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy523; + if (yych == 't') goto yy523; + goto yy128; +yy440: YYDEBUG(440, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5050 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy525; + if (yych == 'a') goto yy525; + goto yy128; yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy508; - if (yych == 't') goto yy508; - goto yy44; + if (yych == 'E') goto yy526; + if (yych == 'e') goto yy526; + goto yy128; yy442: YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy509; - if (yych == 'c') goto yy509; - goto yy44; + if (yych == 'I') goto yy527; + if (yych == 'i') goto yy527; + goto yy128; yy443: YYDEBUG(443, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy510; - if (yych == 'c') goto yy510; - goto yy44; + if (yych == 'I') goto yy528; + if (yych == 'i') goto yy528; + goto yy128; yy444: YYDEBUG(444, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy512; - if (yych == 'r') goto yy512; - goto yy44; + if (yych == 'R') goto yy529; + if (yych == 'r') goto yy529; + goto yy128; yy445: YYDEBUG(445, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy513; - if (yych == 'n') goto yy513; - goto yy44; + if (yych == 'I') goto yy530; + if (yych == 'i') goto yy530; + goto yy128; yy446: YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy515; - if (yych == 'c') goto yy515; - goto yy44; + if (yych == 'C') goto yy531; + if (yych == 'c') goto yy531; + goto yy128; yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy517; - if (yych == 'h') goto yy517; - goto yy44; + if (yych == 'W') goto yy532; + if (yych == 'w') goto yy532; + goto yy128; yy448: YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy534; + if (yych == 't') goto yy534; + goto yy128; +yy449: YYDEBUG(449, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_THROW); -} -#line 5105 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy536; + if (yych == 't') goto yy536; + goto yy128; yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy538; + if (yych == 'e') goto yy538; + goto yy128; +yy451: YYDEBUG(451, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT); -} -#line 5118 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy540; + if (yych == 'd') goto yy540; + goto yy128; yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'A') goto yy542; + if (yych == 'a') goto yy542; + goto yy128; +yy453: YYDEBUG(453, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1556 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 5131 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy543; + if (yych == 'r') goto yy543; + goto yy128; yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'L') goto yy544; + if (yych == 'l') goto yy544; + goto yy128; +yy455: YYDEBUG(455, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_WHILE); -} -#line 5144 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy545; + if (yych == 'n') goto yy545; + goto yy128; yy456: YYDEBUG(456, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy43; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy457; - if (yych <= '\n') goto yy519; - } else { - if (yych <= '\r') goto yy519; - if (yych == ' ') goto yy519; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy546; + if (yych == 'l') goto yy546; + goto yy128; yy457: YYDEBUG(457, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_YIELD); -} -#line 5166 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy547; + if (yych == 'n') goto yy547; + goto yy128; yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy521; - if (yych == 's') goto yy521; - goto yy44; + if (yych == 'T') goto yy548; + if (yych == 't') goto yy548; + goto yy128; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy522; - goto yy44; + if (yych == 'M') goto yy549; + if (yych == 'm') goto yy549; + goto yy128; yy460: YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy523; - if (yych == 'e') goto yy523; - goto yy44; + if (yych == 'A') goto yy550; + if (yych == 'a') goto yy550; + goto yy128; yy461: YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy524; - if (yych == 'c') goto yy524; - goto yy44; + if (yych == 'Y') goto yy551; + if (yych == 'y') goto yy551; + goto yy166; yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy525; - if (yych == 't') goto yy525; - goto yy44; + if (yych == 'R') goto yy553; + if (yych == 'r') goto yy553; + goto yy166; yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy526; - if (yych == 'e') goto yy526; - goto yy44; + if (yych == 'E') goto yy558; + if (yych == 'e') goto yy558; + goto yy555; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy527; - if (yych == 'h') goto yy527; - goto yy44; + if (yych == 'L') goto yy559; + if (yych == 'l') goto yy559; + goto yy166; yy465: YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy528; - if (yych == 'e') goto yy528; - goto yy44; + if (yych == 'T') goto yy472; + if (yych == 't') goto yy472; + goto yy166; yy466: YYDEBUG(466, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy529; - if (yych == 'i') goto yy529; - goto yy44; -yy467: - YYDEBUG(467, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(468, *YYCURSOR); +yy467: + YYDEBUG(467, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy467; - goto yy82; + if (yych == '\t') goto yy466; + goto yy166; } else { - if (yych <= ' ') goto yy467; - if (yych == ')') goto yy530; - goto yy82; + if (yych <= ' ') goto yy466; + if (yych != ')') goto yy166; } -yy469: + YYDEBUG(468, *YYCURSOR); + ++YYCURSOR; YYDEBUG(469, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy532; - if (yych == 'y') goto yy532; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1456 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INT_CAST); +} +#line 5433 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy560; + if (yych == 'g') goto yy560; + goto yy166; +yy471: + YYDEBUG(471, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy561; + if (yych == 'c') goto yy561; + goto yy166; +yy472: + YYDEBUG(472, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy471: - YYDEBUG(471, *YYCURSOR); + YYDEBUG(473, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy470; - goto yy82; + if (yych == '\t') goto yy472; + goto yy166; } else { - if (yych <= ' ') goto yy470; - if (yych != ')') goto yy82; + if (yych <= ' ') goto yy472; + if (yych == ')') goto yy562; + goto yy166; } - YYDEBUG(472, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(473, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOL_CAST); -} -#line 5262 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy534; - if (yych == 'a') goto yy534; - goto yy82; + if (yych == 'N') goto yy564; + if (yych == 'n') goto yy564; + goto yy166; yy475: YYDEBUG(475, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy388; - if (yych == 'e') goto yy388; - goto yy82; + if (yych == 'T') goto yy565; + if (yych == 't') goto yy565; + goto yy166; yy476: YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy535; - if (yych == 'e') goto yy535; - goto yy82; + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; yy477: YYDEBUG(477, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy536; - if (yych == 't') goto yy536; - goto yy82; + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '"') goto yy567; + goto yy166; + } else { + if (yych <= '9') goto yy476; + if (yych <= '@') goto yy166; + goto yy476; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy476; + goto yy166; + } else { + if (yych <= 'z') goto yy476; + if (yych <= 0x7F) goto yy166; + goto yy476; + } + } yy478: YYDEBUG(478, *YYCURSOR); ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy479: YYDEBUG(479, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); -} -#line 5296 "Zend/zend_language_scanner.c" + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '\'') goto yy567; + goto yy166; + } else { + if (yych <= '9') goto yy478; + if (yych <= '@') goto yy166; + goto yy478; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy478; + goto yy166; + } else { + if (yych <= 'z') goto yy478; + if (yych <= 0x7F) goto yy166; + goto yy478; + } + } yy480: YYDEBUG(480, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy532; - if (yych == 'g') goto yy532; - goto yy82; + ++YYCURSOR; yy481: YYDEBUG(481, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(482, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy481; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2249 "Zend/zend_language_scanner.l" + { + char *s; + 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); + s = yytext+bprefix+3; + while ((*s == ' ') || (*s == '\t')) { + s++; + heredoc_label->length--; + } + + if (*s == '\'') { + s++; + heredoc_label->length -= 2; + is_heredoc = 0; + + BEGIN(ST_NOWDOC); + } else { + if (*s == '"') { + s++; + heredoc_label->length -= 2; + } + + BEGIN(ST_HEREDOC); + } + + heredoc_label->label = estrndup(s, heredoc_label->length); + heredoc_label->indentation = 0; + saved_cursor = YYCURSOR; + + zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; } else { - if (yych <= ' ') goto yy481; - if (yych == ')') goto yy538; - goto yy82; + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + YYCURSOR = saved_cursor; + RETURN_TOKEN(T_START_HEREDOC); + } + + /* Check for ending label on the next line */ + if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { + if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + YYCURSOR = saved_cursor; + heredoc_label->indentation = indentation; + + BEGIN(ST_END_HEREDOC); + RETURN_TOKEN(T_START_HEREDOC); + } + } + + YYCURSOR = saved_cursor; + + if (is_heredoc && !SCNG(heredoc_scan_ahead)) { + zend_lex_state current_state; + int heredoc_nesting_level = 1; + int first_token = 0; + + zend_save_lexical_state(¤t_state); + + SCNG(heredoc_scan_ahead) = 1; + SCNG(heredoc_indentation) = 0; + SCNG(heredoc_indentation_uses_spaces) = 0; + LANG_SCNG(on_event) = NULL; + + zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + + while (heredoc_nesting_level) { + zval zv; + int retval; + + ZVAL_UNDEF(&zv); + retval = lex_scan(&zv, NULL); + zval_dtor(&zv); + + if (EG(exception)) { + zend_clear_exception(); + break; + } + + if (!first_token) { + first_token = retval; + } + + switch (retval) { + case T_START_HEREDOC: + ++heredoc_nesting_level; + break; + case T_END_HEREDOC: + --heredoc_nesting_level; + break; + case END: + heredoc_nesting_level = 0; + } + } + + if ( + (first_token == T_VARIABLE + || first_token == T_DOLLAR_OPEN_CURLY_BRACES + || first_token == T_CURLY_OPEN + ) && SCNG(heredoc_indentation)) { + zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); } + + heredoc_label->indentation = SCNG(heredoc_indentation); + heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); + + zend_restore_lexical_state(¤t_state); + SCNG(heredoc_scan_ahead) = 0; + CG(increment_lineno) = 0; + } + + RETURN_TOKEN(T_START_HEREDOC); +} +#line 5660 "Zend/zend_language_scanner.c" +yy482: + YYDEBUG(482, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy480; + goto yy481; yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy396; - if (yych == '\r') goto yy398; - goto yy82; + if (yych == 'A') goto yy568; + if (yych == 'a') goto yy568; + goto yy128; yy484: YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy540; - if (yych == 'c') goto yy540; - goto yy44; -yy485: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(485, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy541; - if (yych == 'l') goto yy541; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1568 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY); +} +#line 5684 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy542; - if (yych == 'u') goto yy542; - goto yy44; -yy487: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(487, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy543; - if (yych == 'e') goto yy543; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1364 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BREAK); +} +#line 5697 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy545; - if (yych == 't') goto yy545; - goto yy44; + if (yych == 'B') goto yy569; + if (yych == 'b') goto yy569; + goto yy128; yy489: YYDEBUG(489, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" +#line 1276 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSEIF); + RETURN_TOKEN(T_CATCH); } -#line 5365 "Zend/zend_language_scanner.c" +#line 5716 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy547; - if (yych == 'l') goto yy547; - goto yy44; -yy492: - YYDEBUG(492, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy493; - if (yych <= '9') goto yy43; - } else { - if (yych == 'E') goto yy548; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'e') goto yy548; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(492, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1384 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS); +} +#line 5729 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(494, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOR); + RETURN_TOKEN(T_CLONE); } -#line 5399 "Zend/zend_language_scanner.c" -yy494: - YYDEBUG(494, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy549; - if (yych == 't') goto yy549; - goto yy44; +#line 5742 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy550; - if (yych == 'l') goto yy550; - goto yy44; -yy496: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(496, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy551; - if (yych == 's') goto yy551; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1254 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONST); +} +#line 5755 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy553; - if (yych == 'y') goto yy553; - goto yy44; + if (yych == 'N') goto yy570; + if (yych == 'n') goto yy570; + goto yy128; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy555; - if (yych == 'h') goto yy555; - goto yy44; + if (yych == 'R') goto yy571; + if (yych == 'r') goto yy571; + goto yy128; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy557; - if (yych == 'o') goto yy557; - goto yy44; + if (yych == 'L') goto yy572; + if (yych == 'l') goto yy572; + goto yy128; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'F') goto yy573; + if (yych == 'f') goto yy573; + goto yy128; +yy501: YYDEBUG(501, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(502, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1524 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_GLOBAL); + RETURN_TOKEN(T_EMPTY); } -#line 5448 "Zend/zend_language_scanner.c" -yy502: - YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy558; - if (yych == 'e') goto yy558; - goto yy44; +#line 5792 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy559; - if (yych == 'e') goto yy559; - goto yy44; + if (yych == 'C') goto yy575; + if (yych == 'c') goto yy575; + goto yy128; yy504: YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy561; - if (yych == 'c') goto yy561; - goto yy44; + if (yych == 'R') goto yy576; + if (yych == 'r') goto yy576; + goto yy128; yy505: YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy562; - if (yych == 'd') goto yy562; - goto yy44; -yy506: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy563; - if (yych == 'a') goto yy563; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1296 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDIF); +} +#line 5817 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy564; - if (yych == 'a') goto yy564; - goto yy44; + if (yych == 'I') goto yy578; + if (yych == 'i') goto yy578; + goto yy128; yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy565; - if (yych == 'e') goto yy565; - goto yy44; + if (yych == 'I') goto yy579; + if (yych == 'i') goto yy579; + goto yy128; yy509: YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy567; - if (yych == 't') goto yy567; - goto yy44; + if (yych == 'D') goto yy580; + if (yych == 'd') goto yy580; + goto yy128; yy510: YYDEBUG(510, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy511; + if (yych <= '9') goto yy127; + } else { + if (yych == 'L') goto yy581; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'l') goto yy581; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } } +yy511: YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1552 "Zend/zend_language_scanner.l" +#line 1540 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PUBLIC); + RETURN_TOKEN(T_FINAL); } -#line 5509 "Zend/zend_language_scanner.c" +#line 5863 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy568; - if (yych == 'e') goto yy568; - goto yy44; + if (yych == 'C') goto yy582; + if (yych == 'c') goto yy582; + goto yy128; yy513: YYDEBUG(513, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'I') goto yy583; + if (yych == 'i') goto yy583; + goto yy128; +yy514: YYDEBUG(514, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_RETURN); -} -#line 5528 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy584; + if (yych == 'l') goto yy584; + goto yy128; yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'M') goto yy586; + if (yych == 'm') goto yy586; + goto yy128; +yy516: YYDEBUG(516, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 5541 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy587; + if (yych == 'd') goto yy587; + goto yy128; yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'N') goto yy588; + if (yych == 'n') goto yy588; + goto yy128; +yy518: YYDEBUG(518, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 5554 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy589; + if (yych == 'a') goto yy589; + goto yy128; yy519: YYDEBUG(519, *YYCURSOR); - ++YYCURSOR; - YYFILL(5); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'F') goto yy590; + if (yych == 'f') goto yy590; + goto yy128; +yy520: YYDEBUG(520, *YYCURSOR); - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy82; - goto yy519; - } else { - if (yych == '\r') goto yy519; - goto yy82; - } - } else { - if (yych <= 'F') { - if (yych <= ' ') goto yy519; - if (yych <= 'E') goto yy82; - goto yy570; - } else { - if (yych == 'f') goto yy570; - goto yy82; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy521: YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy571; - if (yych == 's') goto yy571; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1520 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ISSET); +} +#line 5924 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy572; - goto yy44; + if (yych == 'P') goto yy591; + if (yych == 'p') goto yy591; + goto yy128; yy523: YYDEBUG(523, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy574; - goto yy44; -yy524: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(524, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy575; - if (yych == 't') goto yy575; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1380 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRINT); +} +#line 5943 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy576; - goto yy44; + if (yych == 'T') goto yy592; + if (yych == 't') goto yy592; + goto yy128; yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy577; - goto yy44; + if (yych == 'C') goto yy593; + if (yych == 'c') goto yy593; + goto yy128; yy527: YYDEBUG(527, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy578; - if (yych == 'o') goto yy578; - goto yy44; + if (yych == 'C') goto yy594; + if (yych == 'c') goto yy594; + goto yy128; yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy579; - if (yych == 's') goto yy579; - goto yy44; + if (yych == 'R') goto yy596; + if (yych == 'r') goto yy596; + goto yy128; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy580; - if (yych == 't') goto yy580; - goto yy44; + if (yych == 'N') goto yy597; + if (yych == 'n') goto yy597; + goto yy128; yy530: YYDEBUG(530, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'C') goto yy599; + if (yych == 'c') goto yy599; + goto yy128; +yy531: YYDEBUG(531, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY_CAST); -} -#line 5638 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy601; + if (yych == 'h') goto yy601; + goto yy128; yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(533, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy82; - } else { - if (yych <= ' ') goto yy532; - if (yych == ')') goto yy581; - goto yy82; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(533, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1284 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_THROW); +} +#line 5998 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy470; - if (yych == 'n') goto yy470; - goto yy82; -yy535: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(535, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy382; - if (yych == 'r') goto yy382; - goto yy82; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1392 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT); +} +#line 6011 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(537, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy536; - goto yy82; - } else { - if (yych <= ' ') goto yy536; - if (yych == ')') goto yy583; - goto yy82; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(537, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1556 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET); +} +#line 6024 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1304 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_UNSET_CAST); + RETURN_TOKEN(T_WHILE); } -#line 5688 "Zend/zend_language_scanner.c" +#line 6037 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy585; - if (yych == 't') goto yy585; - goto yy44; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy127; + } + if (yych <= '\f') { + if (yych <= 0x08) goto yy541; + if (yych <= '\n') goto yy603; + } else { + if (yych <= '\r') goto yy603; + if (yych == ' ') goto yy603; + } yy541: YYDEBUG(541, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy587; - if (yych == 'e') goto yy587; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1268 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_YIELD); +} +#line 6059 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy589; - if (yych == 'e') goto yy589; - goto yy44; + if (yych == 'S') goto yy605; + if (yych == 's') goto yy605; + goto yy128; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == '_') goto yy606; + goto yy128; +yy544: YYDEBUG(544, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DECLARE); -} -#line 5719 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy607; + if (yych == 'e') goto yy607; + goto yy128; yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'C') goto yy608; + if (yych == 'c') goto yy608; + goto yy128; +yy546: YYDEBUG(546, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1360 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEFAULT); -} -#line 5732 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy609; + if (yych == 't') goto yy609; + goto yy128; yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy591; - if (yych == 'a') goto yy591; - goto yy44; + if (yych == 'E') goto yy610; + if (yych == 'e') goto yy610; + goto yy128; yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy592; - if (yych == 'a') goto yy592; - goto yy44; + if (yych == 'H') goto yy611; + if (yych == 'h') goto yy611; + goto yy128; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy593; - if (yych == 'c') goto yy593; - goto yy44; + if (yych == 'E') goto yy612; + if (yych == 'e') goto yy612; + goto yy128; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy594; - if (yych == 'e') goto yy594; - goto yy44; + if (yych == 'I') goto yy613; + if (yych == 'i') goto yy613; + goto yy128; yy551: YYDEBUG(551, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(552, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXTENDS); -} -#line 5769 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych == '\t') goto yy551; + goto yy166; + } else { + if (yych <= ' ') goto yy551; + if (yych == ')') goto yy614; + goto yy166; + } yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'Y') goto yy616; + if (yych == 'y') goto yy616; + goto yy166; +yy554: YYDEBUG(554, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINALLY); -} -#line 5782 "Zend/zend_language_scanner.c" + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy555: YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych <= 0x1F) { + if (yych == '\t') goto yy554; + goto yy166; + } else { + if (yych <= ' ') goto yy554; + if (yych != ')') goto yy166; } YYDEBUG(556, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1324 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOREACH); + RETURN_TOKEN(T_BOOL_CAST); } -#line 5795 "Zend/zend_language_scanner.c" -yy557: - YYDEBUG(557, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy596; - if (yych == 'n') goto yy596; - goto yy44; +#line 6155 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy598; - if (yych == 'n') goto yy598; - goto yy44; + if (yych == 'A') goto yy618; + if (yych == 'a') goto yy618; + goto yy166; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy43; - } else { - if (yych <= '@') goto yy560; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy599; - } else { - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'E') goto yy472; + if (yych == 'e') goto yy472; + goto yy166; yy560: YYDEBUG(560, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE); -} -#line 5833 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy619; + if (yych == 'e') goto yy619; + goto yy166; yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy600; - if (yych == 'e') goto yy600; - goto yy44; + if (yych == 'T') goto yy620; + if (yych == 't') goto yy620; + goto yy166; yy562: YYDEBUG(562, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy601; - if (yych == 'o') goto yy601; - goto yy44; -yy563: + ++YYCURSOR; YYDEBUG(563, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy602; - if (yych == 'c') goto yy602; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1460 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_CAST); +} +#line 6189 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy603; - if (yych == 'c') goto yy603; - goto yy44; + if (yych == 'G') goto yy616; + if (yych == 'g') goto yy616; + goto yy166; yy565: YYDEBUG(565, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(566, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRIVATE); -} -#line 5870 "Zend/zend_language_scanner.c" + if (yych <= 0x1F) { + if (yych == '\t') goto yy565; + goto yy166; + } else { + if (yych <= ' ') goto yy565; + if (yych == ')') goto yy622; + goto yy166; + } yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy604; - if (yych == 'e') goto yy604; - goto yy44; + if (yych == '\n') goto yy480; + if (yych == '\r') goto yy482; + goto yy166; yy568: YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy43; - } else { - if (yych <= '@') goto yy569; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy605; - } else { - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } + if (yych == 'C') goto yy624; + if (yych == 'c') goto yy624; + goto yy128; yy569: YYDEBUG(569, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 5902 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy625; + if (yych == 'l') goto yy625; + goto yy128; yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy606; - if (yych == 'r') goto yy606; - goto yy82; + if (yych == 'U') goto yy626; + if (yych == 'u') goto yy626; + goto yy128; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy607; - goto yy44; + if (yych == 'E') goto yy627; + if (yych == 'e') goto yy627; + goto yy128; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy629; + if (yych == 't') goto yy629; + goto yy128; +yy573: YYDEBUG(573, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(574, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1898 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DIR); + RETURN_TOKEN(T_ELSEIF); } -#line 5926 "Zend/zend_language_scanner.c" -yy574: - YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy608; - goto yy44; +#line 6258 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy610; - if (yych == 'i') goto yy610; - goto yy44; + if (yych == 'L') goto yy631; + if (yych == 'l') goto yy631; + goto yy128; yy576: YYDEBUG(576, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy611; - if (yych == 'c') goto yy611; - goto yy44; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy577; + if (yych <= '9') goto yy127; + } else { + if (yych == 'E') goto yy632; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'e') goto yy632; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } yy577: YYDEBUG(577, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy612; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1320 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDFOR); +} +#line 6292 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy614; - if (yych == 'd') goto yy614; - goto yy44; + if (yych == 'T') goto yy633; + if (yych == 't') goto yy633; + goto yy128; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy615; - if (yych == 'p') goto yy615; - goto yy44; + if (yych == 'L') goto yy634; + if (yych == 'l') goto yy634; + goto yy128; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy616; - goto yy44; + if (yych == 'S') goto yy635; + if (yych == 's') goto yy635; + goto yy128; yy581: YYDEBUG(581, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'Y') goto yy637; + if (yych == 'y') goto yy637; + goto yy128; +yy582: YYDEBUG(582, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STRING_CAST); -} -#line 5975 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy639; + if (yych == 'h') goto yy639; + goto yy128; yy583: YYDEBUG(583, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(584, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_CAST); -} -#line 5985 "Zend/zend_language_scanner.c" -yy585: - YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + if (yych == 'O') goto yy641; + if (yych == 'o') goto yy641; + goto yy128; +yy584: + YYDEBUG(584, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(586, *YYCURSOR); + YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1536 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ABSTRACT); + RETURN_TOKEN(T_GLOBAL); } -#line 5998 "Zend/zend_language_scanner.c" +#line 6341 "Zend/zend_language_scanner.c" +yy586: + YYDEBUG(586, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy642; + if (yych == 'e') goto yy642; + goto yy128; yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy643; + if (yych == 'e') goto yy643; + goto yy128; +yy588: YYDEBUG(588, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CALLABLE); -} -#line 6011 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy645; + if (yych == 'c') goto yy645; + goto yy128; yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'D') goto yy646; + if (yych == 'd') goto yy646; + goto yy128; +yy590: YYDEBUG(590, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1368 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONTINUE); -} -#line 6024 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy647; + if (yych == 'a') goto yy647; + goto yy128; yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy617; - if (yych == 'r') goto yy617; - goto yy44; + if (yych == 'A') goto yy648; + if (yych == 'a') goto yy648; + goto yy128; yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy618; - if (yych == 'c') goto yy618; - goto yy44; + if (yych == 'E') goto yy649; + if (yych == 'e') goto yy649; + goto yy128; yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy619; - if (yych == 'h') goto yy619; - goto yy44; + if (yych == 'T') goto yy651; + if (yych == 't') goto yy651; + goto yy128; yy594: YYDEBUG(594, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" +#line 1552 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDWHILE); + RETURN_TOKEN(T_PUBLIC); } -#line 6055 "Zend/zend_language_scanner.c" +#line 6402 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy652; + if (yych == 'e') goto yy652; + goto yy128; +yy597: YYDEBUG(597, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(598, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNCTION); + RETURN_TOKEN(T_RETURN); } -#line 6068 "Zend/zend_language_scanner.c" -yy598: - YYDEBUG(598, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy621; - if (yych == 't') goto yy621; - goto yy44; +#line 6421 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy622; - if (yych == 'o') goto yy622; - goto yy44; -yy600: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(600, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy623; - if (yych == 'o') goto yy623; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1532 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STATIC); +} +#line 6434 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy624; - if (yych == 'f') goto yy624; - goto yy44; -yy602: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(602, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy626; - if (yych == 'e') goto yy626; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1348 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SWITCH); +} +#line 6447 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy628; - if (yych == 'e') goto yy628; - goto yy44; -yy604: + ++YYCURSOR; + YYFILL(5); + yych = *YYCURSOR; YYDEBUG(604, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy630; - if (yych == 'd') goto yy630; - goto yy44; + if (yych <= 0x1F) { + if (yych <= '\n') { + if (yych <= 0x08) goto yy166; + goto yy603; + } else { + if (yych == '\r') goto yy603; + goto yy166; + } + } else { + if (yych <= 'F') { + if (yych <= ' ') goto yy603; + if (yych <= 'E') goto yy166; + goto yy654; + } else { + if (yych == 'f') goto yy654; + goto yy166; + } + } yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy632; - if (yych == 'o') goto yy632; - goto yy44; + if (yych == 'S') goto yy655; + if (yych == 's') goto yy655; + goto yy128; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy633; - if (yych == 'o') goto yy633; - goto yy82; + if (yych == '_') goto yy656; + goto yy128; yy607: YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy634; - goto yy44; + if (yych == '_') goto yy658; + goto yy128; yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy659; + if (yych == 't') goto yy659; + goto yy128; +yy609: YYDEBUG(609, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1894 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FILE); -} -#line 6140 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy660; + goto yy128; yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy636; - if (yych == 'o') goto yy636; - goto yy44; + if (yych == '_') goto yy661; + goto yy128; yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy637; - if (yych == 'o') goto yy637; - goto yy44; + if (yych == 'O') goto yy662; + if (yych == 'o') goto yy662; + goto yy128; yy612: YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'S') goto yy663; + if (yych == 's') goto yy663; + goto yy128; +yy613: YYDEBUG(613, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1890 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LINE); -} -#line 6165 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy664; + if (yych == 't') goto yy664; + goto yy128; yy614: YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy638; - goto yy44; -yy615: + ++YYCURSOR; YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy639; - if (yych == 'a') goto yy639; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1468 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY_CAST); +} +#line 6531 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy640; - goto yy44; -yy617: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(617, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy642; - if (yych == 'e') goto yy642; - goto yy44; + if (yych <= 0x1F) { + if (yych == '\t') goto yy616; + goto yy166; + } else { + if (yych <= ' ') goto yy616; + if (yych == ')') goto yy665; + goto yy166; + } yy618: YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy644; - if (yych == 'h') goto yy644; - goto yy44; + if (yych == 'N') goto yy554; + if (yych == 'n') goto yy554; + goto yy166; yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'R') goto yy466; + if (yych == 'r') goto yy466; + goto yy166; +yy620: YYDEBUG(620, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDSWITCH); -} -#line 6206 "Zend/zend_language_scanner.c" -yy621: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(621, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy646; - if (yych == 's') goto yy646; - goto yy44; + if (yych <= 0x1F) { + if (yych == '\t') goto yy620; + goto yy166; + } else { + if (yych <= ' ') goto yy620; + if (yych == ')') goto yy667; + goto yy166; + } yy622: YYDEBUG(622, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy648; - if (yych == 'n') goto yy648; - goto yy44; -yy623: + ++YYCURSOR; YYDEBUG(623, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy649; - if (yych == 'f') goto yy649; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1480 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET_CAST); +} +#line 6581 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'T') goto yy669; + if (yych == 't') goto yy669; + goto yy128; +yy625: YYDEBUG(625, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTEADOF); -} -#line 6237 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy671; + if (yych == 'e') goto yy671; + goto yy128; yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy673; + if (yych == 'e') goto yy673; + goto yy128; +yy627: YYDEBUG(627, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1388 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INTERFACE); -} -#line 6250 "Zend/zend_language_scanner.c" -yy628: - YYDEBUG(628, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(629, *YYCURSOR); + YYDEBUG(628, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NAMESPACE); + RETURN_TOKEN(T_DECLARE); } -#line 6263 "Zend/zend_language_scanner.c" -yy630: - YYDEBUG(630, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; +#line 6612 "Zend/zend_language_scanner.c" +yy629: + YYDEBUG(629, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(631, *YYCURSOR); + YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1360 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PROTECTED); + RETURN_TOKEN(T_DEFAULT); } -#line 6276 "Zend/zend_language_scanner.c" +#line 6625 "Zend/zend_language_scanner.c" +yy631: + YYDEBUG(631, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy675; + if (yych == 'a') goto yy675; + goto yy128; yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy651; - if (yych == 'n') goto yy651; - goto yy44; + if (yych == 'A') goto yy676; + if (yych == 'a') goto yy676; + goto yy128; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy652; - if (yych == 'm') goto yy652; - goto yy82; + if (yych == 'C') goto yy677; + if (yych == 'c') goto yy677; + goto yy128; yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'E') goto yy678; + if (yych == 'e') goto yy678; + goto yy128; +yy635: YYDEBUG(635, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(636, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1874 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS_C); + RETURN_TOKEN(T_EXTENDS); } -#line 6301 "Zend/zend_language_scanner.c" -yy636: - YYDEBUG(636, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy653; - if (yych == 'n') goto yy653; - goto yy44; +#line 6662 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy654; - if (yych == 'm') goto yy654; - goto yy44; -yy638: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(638, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy655; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1280 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINALLY); +} +#line 6675 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy657; - if (yych == 'c') goto yy657; - goto yy44; -yy640: - YYDEBUG(640, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(641, *YYCURSOR); + YYDEBUG(640, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1878 "Zend/zend_language_scanner.l" +#line 1324 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRAIT_C); + RETURN_TOKEN(T_FOREACH); } -#line 6337 "Zend/zend_language_scanner.c" +#line 6688 "Zend/zend_language_scanner.c" +yy641: + YYDEBUG(641, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy680; + if (yych == 'n') goto yy680; + goto yy128; yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'N') goto yy682; + if (yych == 'n') goto yy682; + goto yy128; +yy643: YYDEBUG(643, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1336 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 6350 "Zend/zend_language_scanner.c" + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy127; + } else { + if (yych <= '@') goto yy644; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy683; + } else { + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } yy644: YYDEBUG(644, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(645, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDFOREACH); + RETURN_TOKEN(T_INCLUDE); } -#line 6363 "Zend/zend_language_scanner.c" +#line 6726 "Zend/zend_language_scanner.c" +yy645: + YYDEBUG(645, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy684; + if (yych == 'e') goto yy684; + goto yy128; yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'O') goto yy685; + if (yych == 'o') goto yy685; + goto yy128; +yy647: YYDEBUG(647, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 6376 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'C') goto yy686; + if (yych == 'c') goto yy686; + goto yy128; yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy658; - if (yych == 'c') goto yy658; - goto yy44; + if (yych == 'C') goto yy687; + if (yych == 'c') goto yy687; + goto yy128; yy649: YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" +#line 1544 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INSTANCEOF); + RETURN_TOKEN(T_PRIVATE); } -#line 6395 "Zend/zend_language_scanner.c" +#line 6763 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy659; - if (yych == 'c') goto yy659; - goto yy44; + if (yych == 'E') goto yy688; + if (yych == 'e') goto yy688; + goto yy128; yy652: YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych <= '/') goto yy660; - goto yy82; + if (yych >= '0') goto yy127; } else { - if (yych <= '@') goto yy660; - if (yych <= 'Z') goto yy82; - goto yy660; + if (yych <= '@') goto yy653; + if (yych <= 'Z') goto yy127; } } else { if (yych <= '`') { - if (yych <= '_') goto yy82; - goto yy660; + if (yych <= '_') goto yy689; } else { - if (yych <= 'z') goto yy82; - if (yych <= 0x7F) goto yy660; - goto yy82; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; } } yy653: YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy662; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1496 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE); +} +#line 6795 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy663; - if (yych == 'p') goto yy663; - goto yy44; + if (yych == 'R') goto yy690; + if (yych == 'r') goto yy690; + goto yy166; yy655: YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == '_') goto yy691; + goto yy128; +yy656: YYDEBUG(656, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1886 "Zend/zend_language_scanner.l" +#line 1898 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_METHOD_C); + RETURN_TOKEN(T_DIR); } -#line 6447 "Zend/zend_language_scanner.c" -yy657: - YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy664; - if (yych == 'e') goto yy664; - goto yy44; +#line 6819 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy665; - if (yych == 'e') goto yy665; - goto yy44; + if (yych == '_') goto yy692; + goto yy128; yy659: YYDEBUG(659, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy667; - if (yych == 'e') goto yy667; - goto yy44; + if (yych == 'I') goto yy694; + if (yych == 'i') goto yy694; + goto yy128; yy660: YYDEBUG(660, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'C') goto yy695; + if (yych == 'c') goto yy695; + goto yy128; +yy661: YYDEBUG(661, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_YIELD_FROM); -} -#line 6477 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy696; + goto yy128; yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy669; - goto yy44; + if (yych == 'D') goto yy698; + if (yych == 'd') goto yy698; + goto yy128; yy663: YYDEBUG(663, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy671; - if (yych == 'i') goto yy671; - goto yy44; + if (yych == 'P') goto yy699; + if (yych == 'p') goto yy699; + goto yy128; yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy672; - goto yy44; + if (yych == '_') goto yy700; + goto yy128; yy665: YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; YYDEBUG(666, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE_ONCE); + RETURN_TOKEN(T_STRING_CAST); } -#line 6506 "Zend/zend_language_scanner.c" +#line 6868 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + ++YYCURSOR; YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_REQUIRE_ONCE); + RETURN_TOKEN(T_OBJECT_CAST); } -#line 6519 "Zend/zend_language_scanner.c" +#line 6878 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1882 "Zend/zend_language_scanner.l" +#line 1536 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNC_C); + RETURN_TOKEN(T_ABSTRACT); } -#line 6532 "Zend/zend_language_scanner.c" +#line 6891 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy673; - if (yych == 'l') goto yy673; - goto yy44; -yy672: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy674; - goto yy44; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1572 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CALLABLE); +} +#line 6904 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy676; - if (yych == 'e') goto yy676; - goto yy44; -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(675, *YYCURSOR); + YYDEBUG(674, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1902 "Zend/zend_language_scanner.l" +#line 1368 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_C); + RETURN_TOKEN(T_CONTINUE); } -#line 6562 "Zend/zend_language_scanner.c" +#line 6917 "Zend/zend_language_scanner.c" +yy675: + YYDEBUG(675, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy701; + if (yych == 'r') goto yy701; + goto yy128; yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy677; - if (yych != 'r') goto yy44; + if (yych == 'C') goto yy702; + if (yych == 'c') goto yy702; + goto yy128; yy677: YYDEBUG(677, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } + if (yych == 'H') goto yy703; + if (yych == 'h') goto yy703; + goto yy128; +yy678: YYDEBUG(678, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(679, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1308 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_HALT_COMPILER); + RETURN_TOKEN(T_ENDWHILE); } -#line 6580 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_LOOKING_FOR_PROPERTY: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(679, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy683; - } - if (yych <= '^') { - if (yych <= '-') { - if (yych >= '-') goto yy686; - } else { - if (yych <= '@') goto yy681; - if (yych <= 'Z') goto yy687; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy687; - } else { - if (yych <= 'z') goto yy687; - if (yych >= 0x80) goto yy687; - } +#line 6948 "Zend/zend_language_scanner.c" +yy680: + YYDEBUG(680, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy681: YYDEBUG(681, *YYCURSOR); - ++YYCURSOR; -yy682: - YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l" { - yyless(0); - yy_pop_state(); - goto restart; + RETURN_TOKEN(T_FUNCTION); } -#line 6652 "Zend/zend_language_scanner.c" +#line 6961 "Zend/zend_language_scanner.c" +yy682: + YYDEBUG(682, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy705; + if (yych == 't') goto yy705; + goto yy128; yy683: YYDEBUG(683, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy706; + if (yych == 'o') goto yy706; + goto yy128; +yy684: YYDEBUG(684, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy683; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy707; + if (yych == 'o') goto yy707; + goto yy128; +yy685: YYDEBUG(685, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 6668 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'F') goto yy708; + if (yych == 'f') goto yy708; + goto yy128; yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy690; - goto yy682; + if (yych == 'E') goto yy710; + if (yych == 'e') goto yy710; + goto yy128; yy687: YYDEBUG(687, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy712; + if (yych == 'e') goto yy712; + goto yy128; +yy688: YYDEBUG(688, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy687; - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy714; + if (yych == 'd') goto yy714; + goto yy128; +yy689: YYDEBUG(689, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1417 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 6690 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy716; + if (yych == 'o') goto yy716; + goto yy128; yy690: YYDEBUG(690, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'O') goto yy717; + if (yych == 'o') goto yy717; + goto yy166; +yy691: YYDEBUG(691, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1413 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_OPERATOR); -} -#line 6700 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_BACKQUOTE: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(692, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych == '$') goto yy696; - } else { - if (yych <= '`') goto yy697; - if (yych == '{') goto yy699; - } - YYDEBUG(694, *YYCURSOR); - ++YYCURSOR; -yy695: - YYDEBUG(695, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2472 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '`': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; + yych = *++YYCURSOR; + if (yych == '_') goto yy718; + goto yy128; +yy692: + YYDEBUG(692, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - - YYCURSOR--; - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - 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); - } + YYDEBUG(693, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1894 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FILE); } -#line 6798 "Zend/zend_language_scanner.c" +#line 7033 "Zend/zend_language_scanner.c" +yy694: + YYDEBUG(694, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy720; + if (yych == 'o') goto yy720; + goto yy128; +yy695: + YYDEBUG(695, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy721; + if (yych == 'o') goto yy721; + goto yy128; yy696: YYDEBUG(696, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy695; - if (yych <= 'Z') goto yy700; - if (yych <= '^') goto yy695; - goto yy700; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy695; - goto yy700; - } else { - if (yych <= '{') goto yy703; - if (yych <= 0x7F) goto yy695; - goto yy700; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy697: YYDEBUG(697, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2412 "Zend/zend_language_scanner.l" +#line 1890 "Zend/zend_language_scanner.l" { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('`'); + RETURN_TOKEN(T_LINE); } -#line 6827 "Zend/zend_language_scanner.c" +#line 7058 "Zend/zend_language_scanner.c" +yy698: + YYDEBUG(698, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy722; + goto yy128; yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy705; - goto yy695; + if (yych == 'A') goto yy723; + if (yych == 'a') goto yy723; + goto yy128; yy700: YYDEBUG(700, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy724; + goto yy128; +yy701: YYDEBUG(701, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy700; - } - if (yych == '-') goto yy707; - if (yych <= '@') goto yy702; - if (yych <= '[') goto yy709; + yych = *++YYCURSOR; + if (yych == 'E') goto yy726; + if (yych == 'e') goto yy726; + goto yy128; yy702: YYDEBUG(702, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2003 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 6852 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy728; + if (yych == 'h') goto yy728; + goto yy128; yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1703 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_ENDSWITCH); } -#line 6863 "Zend/zend_language_scanner.c" +#line 7099 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'S') goto yy730; + if (yych == 's') goto yy730; + goto yy128; +yy706: YYDEBUG(706, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2400 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); -} -#line 6875 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy732; + if (yych == 'n') goto yy732; + goto yy128; yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy711; + if (yych == 'F') goto yy733; + if (yych == 'f') goto yy733; + goto yy128; yy708: YYDEBUG(708, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy702; -yy709: - YYDEBUG(709, *YYCURSOR); ++YYCURSOR; - YYDEBUG(710, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1997 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_INSTEADOF); } -#line 6895 "Zend/zend_language_scanner.c" -yy711: - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy708; - if (yych <= 'Z') goto yy712; - if (yych <= '^') goto yy708; - } else { - if (yych <= '`') goto yy708; - if (yych <= 'z') goto yy712; - if (yych <= 0x7F) goto yy708; +#line 7130 "Zend/zend_language_scanner.c" +yy710: + YYDEBUG(710, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(711, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1388 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INTERFACE); +} +#line 7143 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1989 "Zend/zend_language_scanner.l" +#line 1504 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_NAMESPACE); } -#line 6919 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_DOUBLE_QUOTES: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; +#line 7156 "Zend/zend_language_scanner.c" +yy714: YYDEBUG(714, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '#') { - if (yych == '"') goto yy718; - } else { - if (yych <= '$') goto yy720; - if (yych == '{') goto yy721; - } - YYDEBUG(716, *YYCURSOR); ++YYCURSOR; -yy717: - YYDEBUG(717, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(715, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2418 "Zend/zend_language_scanner.l" +#line 1548 "Zend/zend_language_scanner.l" { - if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { - YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; - SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); - - goto double_quotes_scan_done; - } - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -double_quotes_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - - 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); - } + RETURN_TOKEN(T_PROTECTED); } -#line 7025 "Zend/zend_language_scanner.c" +#line 7169 "Zend/zend_language_scanner.c" +yy716: + YYDEBUG(716, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy735; + if (yych == 'n') goto yy735; + goto yy128; +yy717: + YYDEBUG(717, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy736; + if (yych == 'm') goto yy736; + goto yy166; yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2407 "Zend/zend_language_scanner.l" +#line 1874 "Zend/zend_language_scanner.l" { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('"'); + RETURN_TOKEN(T_CLASS_C); } -#line 7036 "Zend/zend_language_scanner.c" +#line 7194 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy717; - if (yych <= 'Z') goto yy722; - if (yych <= '^') goto yy717; - goto yy722; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy717; - goto yy722; - } else { - if (yych <= '{') goto yy725; - if (yych <= 0x7F) goto yy717; - goto yy722; - } - } + if (yych == 'N') goto yy737; + if (yych == 'n') goto yy737; + goto yy128; yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy727; - goto yy717; + if (yych == 'M') goto yy738; + if (yych == 'm') goto yy738; + goto yy128; yy722: YYDEBUG(722, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy739; + goto yy128; +yy723: YYDEBUG(723, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy722; - } - if (yych == '-') goto yy729; - if (yych <= '@') goto yy724; - if (yych <= '[') goto yy731; + yych = *++YYCURSOR; + if (yych == 'C') goto yy741; + if (yych == 'c') goto yy741; + goto yy128; yy724: YYDEBUG(724, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(725, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2003 "Zend/zend_language_scanner.l" +#line 1878 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_TRAIT_C); } -#line 7079 "Zend/zend_language_scanner.c" -yy725: - YYDEBUG(725, *YYCURSOR); - ++YYCURSOR; +#line 7230 "Zend/zend_language_scanner.c" +yy726: YYDEBUG(726, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(727, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1703 "Zend/zend_language_scanner.l" +#line 1336 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_ENDDECLARE); } -#line 7090 "Zend/zend_language_scanner.c" -yy727: - YYDEBUG(727, *YYCURSOR); - ++YYCURSOR; +#line 7243 "Zend/zend_language_scanner.c" +yy728: YYDEBUG(728, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2400 "Zend/zend_language_scanner.l" +#line 1328 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + RETURN_TOKEN(T_ENDFOREACH); } -#line 7102 "Zend/zend_language_scanner.c" -yy729: - YYDEBUG(729, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy733; +#line 7256 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy724; -yy731: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(731, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1997 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_IMPLEMENTS); } -#line 7122 "Zend/zend_language_scanner.c" +#line 7269 "Zend/zend_language_scanner.c" +yy732: + YYDEBUG(732, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy742; + if (yych == 'c') goto yy742; + goto yy128; yy733: YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy730; - if (yych <= 'Z') goto yy734; - if (yych <= '^') goto yy730; - } else { - if (yych <= '`') goto yy730; - if (yych <= 'z') goto yy734; - if (yych <= 0x7F) goto yy730; + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } -yy734: YYDEBUG(734, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1989 "Zend/zend_language_scanner.l" +#line 1340 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_INSTANCEOF); } -#line 7146 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_HEREDOC: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; +#line 7288 "Zend/zend_language_scanner.c" +yy735: + YYDEBUG(735, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy743; + if (yych == 'c') goto yy743; + goto yy128; +yy736: YYDEBUG(736, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych == '$') goto yy740; - if (yych == '{') goto yy741; + yych = *++YYCURSOR; + if (yych <= '^') { + if (yych <= '9') { + if (yych <= '/') goto yy744; + goto yy166; + } else { + if (yych <= '@') goto yy744; + if (yych <= 'Z') goto yy166; + goto yy744; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy166; + goto yy744; + } else { + if (yych <= 'z') goto yy166; + if (yych <= 0x7F) goto yy744; + goto yy166; + } + } +yy737: + YYDEBUG(737, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy746; + goto yy128; +yy738: YYDEBUG(738, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'P') goto yy747; + if (yych == 'p') goto yy747; + goto yy128; yy739: YYDEBUG(739, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2518 "Zend/zend_language_scanner.l" +#line 1886 "Zend/zend_language_scanner.l" { - 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); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - if (SCNG(heredoc_scan_ahead)) { - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { - YYCURSOR -= indentation; - } - - BEGIN(ST_END_HEREDOC); - - goto heredoc_scan_done; - } - continue; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -heredoc_scan_done: - - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - - if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { - zend_string *copy = Z_STR_P(zendlval); - - if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) - && PARSER_MODE()) { - zend_string_free(copy); - RETURN_TOKEN(T_ERROR); - } - - zend_string_free(copy); - } - - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN(T_METHOD_C); } -#line 7312 "Zend/zend_language_scanner.c" -yy740: - YYDEBUG(740, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy739; - if (yych <= 'Z') goto yy742; - if (yych <= '^') goto yy739; - goto yy742; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy739; - goto yy742; - } else { - if (yych <= '{') goto yy745; - if (yych <= 0x7F) goto yy739; - goto yy742; - } - } +#line 7340 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy747; - goto yy739; + if (yych == 'E') goto yy748; + if (yych == 'e') goto yy748; + goto yy128; yy742: YYDEBUG(742, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy749; + if (yych == 'e') goto yy749; + goto yy128; +yy743: YYDEBUG(743, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy742; + yych = *++YYCURSOR; + if (yych == 'E') goto yy751; + if (yych == 'e') goto yy751; + goto yy128; +yy744: + YYDEBUG(744, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(745, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1262 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 1); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_YIELD_FROM); +} +#line 7370 "Zend/zend_language_scanner.c" +yy746: + YYDEBUG(746, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy753; + goto yy128; +yy747: + YYDEBUG(747, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy755; + if (yych == 'i') goto yy755; + goto yy128; +yy748: + YYDEBUG(748, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy756; + goto yy128; +yy749: + YYDEBUG(749, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(750, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1492 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE_ONCE); +} +#line 7399 "Zend/zend_language_scanner.c" +yy751: + YYDEBUG(751, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(752, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1500 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE_ONCE); +} +#line 7412 "Zend/zend_language_scanner.c" +yy753: + YYDEBUG(753, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(754, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1882 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FUNC_C); +} +#line 7425 "Zend/zend_language_scanner.c" +yy755: + YYDEBUG(755, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy757; + if (yych == 'l') goto yy757; + goto yy128; +yy756: + YYDEBUG(756, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy758; + goto yy128; +yy757: + YYDEBUG(757, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy760; + if (yych == 'e') goto yy760; + goto yy128; +yy758: + YYDEBUG(758, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - if (yych == '-') goto yy749; - if (yych <= '@') goto yy744; - if (yych <= '[') goto yy751; -yy744: - YYDEBUG(744, *YYCURSOR); + YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2003 "Zend/zend_language_scanner.l" +#line 1902 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_NS_C); } -#line 7355 "Zend/zend_language_scanner.c" -yy745: - YYDEBUG(745, *YYCURSOR); +#line 7455 "Zend/zend_language_scanner.c" +yy760: + YYDEBUG(760, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy761; + if (yych != 'r') goto yy128; +yy761: + YYDEBUG(761, *YYCURSOR); ++YYCURSOR; - YYDEBUG(746, *YYCURSOR); + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(762, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1703 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 7366 "Zend/zend_language_scanner.c" -yy747: - YYDEBUG(747, *YYCURSOR); +#line 7473 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_LOOKING_FOR_PROPERTY: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 64, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + }; + YYDEBUG(763, *YYCURSOR); + YYFILL(2); + yych = *YYCURSOR; + if (yybm[0+yych] & 64) { + goto yy767; + } + if (yych <= '^') { + if (yych <= '-') { + if (yych >= '-') goto yy770; + } else { + if (yych <= '@') goto yy765; + if (yych <= 'Z') goto yy771; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy771; + } else { + if (yych <= 'z') goto yy771; + if (yych >= 0x80) goto yy771; + } + } +yy765: + YYDEBUG(765, *YYCURSOR); ++YYCURSOR; - YYDEBUG(748, *YYCURSOR); +yy766: + YYDEBUG(766, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2400 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); + yyless(0); + yy_pop_state(); + goto restart; } -#line 7378 "Zend/zend_language_scanner.c" -yy749: - YYDEBUG(749, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy753; -yy750: - YYDEBUG(750, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy744; -yy751: - YYDEBUG(751, *YYCURSOR); +#line 7545 "Zend/zend_language_scanner.c" +yy767: + YYDEBUG(767, *YYCURSOR); ++YYCURSOR; - YYDEBUG(752, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(768, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy767; + } + YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1997 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + goto return_whitespace; } -#line 7398 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); +#line 7561 "Zend/zend_language_scanner.c" +yy770: + YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy750; - if (yych <= 'Z') goto yy754; - if (yych <= '^') goto yy750; - } else { - if (yych <= '`') goto yy750; - if (yych <= 'z') goto yy754; - if (yych <= 0x7F) goto yy750; + if (yych == '>') goto yy774; + goto yy766; +yy771: + YYDEBUG(771, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(772, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy771; } -yy754: - YYDEBUG(754, *YYCURSOR); + YYDEBUG(773, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1417 "Zend/zend_language_scanner.l" + { + yy_pop_state(); + RETURN_TOKEN_WITH_STR(T_STRING, 0); +} +#line 7583 "Zend/zend_language_scanner.c" +yy774: + YYDEBUG(774, *YYCURSOR); ++YYCURSOR; - YYDEBUG(755, *YYCURSOR); + YYDEBUG(775, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1989 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7422 "Zend/zend_language_scanner.c" +#line 7593 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7457,23 +7628,23 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(756, *YYCURSOR); + YYDEBUG(776, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy758; - if (yych <= 'Z') goto yy760; - if (yych >= '_') goto yy760; + if (yych <= '@') goto yy778; + if (yych <= 'Z') goto yy780; + if (yych >= '_') goto yy780; } else { - if (yych <= '`') goto yy758; - if (yych <= 'z') goto yy760; - if (yych >= 0x80) goto yy760; + if (yych <= '`') goto yy778; + if (yych <= 'z') goto yy780; + if (yych >= 0x80) goto yy780; } -yy758: - YYDEBUG(758, *YYCURSOR); +yy778: + YYDEBUG(778, *YYCURSOR); ++YYCURSOR; -yy759: - YYDEBUG(759, *YYCURSOR); +yy779: + YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1726 "Zend/zend_language_scanner.l" { @@ -7482,52 +7653,52 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7486 "Zend/zend_language_scanner.c" -yy760: - YYDEBUG(760, *YYCURSOR); +#line 7657 "Zend/zend_language_scanner.c" +yy780: + YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy759; - if (yych <= '9') goto yy762; - goto yy759; + if (yych <= '/') goto yy779; + if (yych <= '9') goto yy782; + goto yy779; } else { - if (yych <= '[') goto yy762; - if (yych <= '^') goto yy759; - goto yy762; + if (yych <= '[') goto yy782; + if (yych <= '^') goto yy779; + goto yy782; } } else { if (yych <= '|') { - if (yych <= '`') goto yy759; - if (yych <= 'z') goto yy762; - goto yy759; + if (yych <= '`') goto yy779; + if (yych <= 'z') goto yy782; + goto yy779; } else { - if (yych <= '}') goto yy762; - if (yych <= 0x7F) goto yy759; - goto yy762; + if (yych <= '}') goto yy782; + if (yych <= 0x7F) goto yy779; + goto yy782; } } -yy761: - YYDEBUG(761, *YYCURSOR); +yy781: + YYDEBUG(781, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy762: - YYDEBUG(762, *YYCURSOR); +yy782: + YYDEBUG(782, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy761; + goto yy781; } - if (yych <= '@') goto yy763; - if (yych <= '[') goto yy764; - if (yych == '}') goto yy764; -yy763: - YYDEBUG(763, *YYCURSOR); + if (yych <= '@') goto yy783; + if (yych <= '[') goto yy784; + if (yych == '}') goto yy784; +yy783: + YYDEBUG(783, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy759; -yy764: - YYDEBUG(764, *YYCURSOR); + goto yy779; +yy784: + YYDEBUG(784, *YYCURSOR); ++YYCURSOR; - YYDEBUG(765, *YYCURSOR); + YYDEBUG(785, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1718 "Zend/zend_language_scanner.l" { @@ -7536,8 +7707,101 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7540 "Zend/zend_language_scanner.c" +#line 7711 "Zend/zend_language_scanner.c" + } +/* *********************************** */ +yyc_ST_NOWDOC: + YYDEBUG(786, *YYCURSOR); + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(788, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(789, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2634 "Zend/zend_language_scanner.l" + { + 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); + } + + YYCURSOR--; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '\r': + if (*YYCURSOR == '\n') { + YYCURSOR++; + } + /* fall through */ + case '\n': + indentation = spacing = 0; + + while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { + if (*YYCURSOR == '\t') { + spacing |= HEREDOC_USING_TABS; + } else { + spacing |= HEREDOC_USING_SPACES; + } + ++YYCURSOR; + ++indentation; + } + + if (YYCURSOR == YYLIMIT) { + yyleng = YYCURSOR - SCNG(yy_text); + HANDLE_NEWLINES(yytext, yyleng); + ZVAL_NULL(zendlval); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + } + + /* Check for ending label on the next line */ + if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { + if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { + continue; + } + + if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { + zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + } + + /* newline before label will be subtracted from returned text, but + * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ + if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { + newline = 2; /* Windows newline */ + } else { + newline = 1; + } + + CG(increment_lineno) = 1; /* For newline before label */ + + YYCURSOR -= indentation; + heredoc_label->indentation = indentation; + + BEGIN(ST_END_HEREDOC); + + goto nowdoc_scan_done; + } + /* fall through */ + default: + continue; + } + } + +nowdoc_scan_done: + yyleng = YYCURSOR - SCNG(yy_text); + ZVAL_STRINGL(zendlval, yytext, yyleng); + + if (!EG(exception) && spacing != -1 && PARSER_MODE() + && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { + RETURN_TOKEN(T_ERROR); } + + HANDLE_NEWLINES(yytext, yyleng - newline); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); +} +#line 7805 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7575,57 +7839,57 @@ int start_line = CG(zend_lineno); 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }; - YYDEBUG(766, *YYCURSOR); + YYDEBUG(790, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '0') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy768; - if (yych <= '\n') goto yy770; + if (yych <= 0x08) goto yy792; + if (yych <= '\n') goto yy794; } else { - if (yych <= '\r') goto yy770; - if (yych >= ' ') goto yy770; + if (yych <= '\r') goto yy794; + if (yych >= ' ') goto yy794; } } else { if (yych <= '$') { - if (yych <= '"') goto yy772; - if (yych <= '#') goto yy770; - goto yy774; + if (yych <= '"') goto yy796; + if (yych <= '#') goto yy794; + goto yy798; } else { - if (yych == '\'') goto yy770; - if (yych <= '/') goto yy772; - goto yy775; + if (yych == '\'') goto yy794; + if (yych <= '/') goto yy796; + goto yy799; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '9') goto yy777; - if (yych <= '@') goto yy772; - goto yy779; + if (yych <= '9') goto yy801; + if (yych <= '@') goto yy796; + goto yy803; } else { - if (yych <= '[') goto yy772; - if (yych <= '\\') goto yy770; - goto yy782; + if (yych <= '[') goto yy796; + if (yych <= '\\') goto yy794; + goto yy806; } } else { if (yych <= '`') { - if (yych == '_') goto yy779; - goto yy772; + if (yych == '_') goto yy803; + goto yy796; } else { - if (yych <= 'z') goto yy779; - if (yych <= '~') goto yy772; - if (yych >= 0x80) goto yy779; + if (yych <= 'z') goto yy803; + if (yych <= '~') goto yy796; + if (yych >= 0x80) goto yy803; } } } -yy768: - YYDEBUG(768, *YYCURSOR); +yy792: + YYDEBUG(792, *YYCURSOR); ++YYCURSOR; - YYDEBUG(769, *YYCURSOR); + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2720 "Zend/zend_language_scanner.l" +#line 2718 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7634,11 +7898,11 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7638 "Zend/zend_language_scanner.c" -yy770: - YYDEBUG(770, *YYCURSOR); +#line 7902 "Zend/zend_language_scanner.c" +yy794: + YYDEBUG(794, *YYCURSOR); ++YYCURSOR; - YYDEBUG(771, *YYCURSOR); + YYDEBUG(795, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2017 "Zend/zend_language_scanner.l" { @@ -7648,52 +7912,52 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7652 "Zend/zend_language_scanner.c" -yy772: - YYDEBUG(772, *YYCURSOR); +#line 7916 "Zend/zend_language_scanner.c" +yy796: + YYDEBUG(796, *YYCURSOR); ++YYCURSOR; -yy773: - YYDEBUG(773, *YYCURSOR); +yy797: + YYDEBUG(797, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2012 "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 7664 "Zend/zend_language_scanner.c" -yy774: - YYDEBUG(774, *YYCURSOR); +#line 7928 "Zend/zend_language_scanner.c" +yy798: + YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy773; - if (yych <= 'Z') goto yy784; - if (yych <= '^') goto yy773; - goto yy784; + if (yych <= '@') goto yy797; + if (yych <= 'Z') goto yy808; + if (yych <= '^') goto yy797; + goto yy808; } else { - if (yych <= '`') goto yy773; - if (yych <= 'z') goto yy784; - if (yych <= 0x7F) goto yy773; - goto yy784; + if (yych <= '`') goto yy797; + if (yych <= 'z') goto yy808; + if (yych <= 0x7F) goto yy797; + goto yy808; } -yy775: - YYDEBUG(775, *YYCURSOR); +yy799: + YYDEBUG(799, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy787; + if (yych >= '0') goto yy811; } else { - if (yych == 'B') goto yy790; + if (yych == 'B') goto yy814; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy792; - if (yych >= 'b') goto yy790; + if (yych <= 'X') goto yy816; + if (yych >= 'b') goto yy814; } else { - if (yych == 'x') goto yy792; + if (yych == 'x') goto yy816; } } -yy776: - YYDEBUG(776, *YYCURSOR); +yy800: + YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1840 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ @@ -7711,83 +7975,83 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7715 "Zend/zend_language_scanner.c" -yy777: - YYDEBUG(777, *YYCURSOR); +#line 7979 "Zend/zend_language_scanner.c" +yy801: + YYDEBUG(801, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(778, *YYCURSOR); + YYDEBUG(802, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy777; + goto yy801; } - goto yy776; -yy779: - YYDEBUG(779, *YYCURSOR); + goto yy800; +yy803: + YYDEBUG(803, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(780, *YYCURSOR); + YYDEBUG(804, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy779; + goto yy803; } - YYDEBUG(781, *YYCURSOR); + YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2025 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7741 "Zend/zend_language_scanner.c" -yy782: - YYDEBUG(782, *YYCURSOR); +#line 8005 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); ++YYCURSOR; - YYDEBUG(783, *YYCURSOR); + YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2007 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7752 "Zend/zend_language_scanner.c" -yy784: - YYDEBUG(784, *YYCURSOR); +#line 8016 "Zend/zend_language_scanner.c" +yy808: + YYDEBUG(808, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(785, *YYCURSOR); + YYDEBUG(809, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy784; + if (yych >= '0') goto yy808; } else { - if (yych <= '@') goto yy786; - if (yych <= 'Z') goto yy784; + if (yych <= '@') goto yy810; + if (yych <= 'Z') goto yy808; } } else { if (yych <= '`') { - if (yych <= '_') goto yy784; + if (yych <= '_') goto yy808; } else { - if (yych <= 'z') goto yy784; - if (yych >= 0x80) goto yy784; + if (yych <= 'z') goto yy808; + if (yych >= 0x80) goto yy808; } } -yy786: - YYDEBUG(786, *YYCURSOR); +yy810: + YYDEBUG(810, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2003 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7781 "Zend/zend_language_scanner.c" -yy787: - YYDEBUG(787, *YYCURSOR); +#line 8045 "Zend/zend_language_scanner.c" +yy811: + YYDEBUG(811, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(788, *YYCURSOR); - if (yych <= '/') goto yy789; - if (yych <= '9') goto yy787; -yy789: - YYDEBUG(789, *YYCURSOR); + YYDEBUG(812, *YYCURSOR); + if (yych <= '/') goto yy813; + if (yych <= '9') goto yy811; +yy813: + YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1856 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ @@ -7798,309 +8062,47 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7802 "Zend/zend_language_scanner.c" -yy790: - YYDEBUG(790, *YYCURSOR); +#line 8066 "Zend/zend_language_scanner.c" +yy814: + YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy793; + goto yy817; } -yy791: - YYDEBUG(791, *YYCURSOR); +yy815: + YYDEBUG(815, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy776; -yy792: - YYDEBUG(792, *YYCURSOR); + goto yy800; +yy816: + YYDEBUG(816, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy795; + goto yy819; } - goto yy791; -yy793: - YYDEBUG(793, *YYCURSOR); + goto yy815; +yy817: + YYDEBUG(817, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(794, *YYCURSOR); + YYDEBUG(818, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy793; + goto yy817; } - goto yy789; -yy795: - YYDEBUG(795, *YYCURSOR); + goto yy813; +yy819: + YYDEBUG(819, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(796, *YYCURSOR); + YYDEBUG(820, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy795; - } - goto yy789; - } -/* *********************************** */ -yyc_INITIAL: - YYDEBUG(797, *YYCURSOR); - YYFILL(7); - yych = *YYCURSOR; - if (yych == '<') goto yy801; - YYDEBUG(799, *YYCURSOR); - ++YYCURSOR; -yy800: - YYDEBUG(800, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1938 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - -inline_char_handler: - - while (1) { - YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); - - YYCURSOR = ptr ? ptr + 1 : YYLIMIT; - - if (YYCURSOR >= YYLIMIT) { - break; - } - - if (*YYCURSOR == '?') { - if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ - - YYCURSOR--; - break; - } - } - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (SCNG(output_filter)) { - size_t readsize; - char *s = NULL; - size_t sz = 0; - // TODO: avoid reallocation ??? - readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); - ZVAL_STRINGL(zendlval, s, sz); - efree(s); - if (readsize < yyleng) { - yyless(readsize); - } - } else if (yyleng == 1) { - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); - } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); -} -#line 7899 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '?') goto yy800; - YYDEBUG(802, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'O') { - if (yych == '=') goto yy804; - } else { - if (yych <= 'P') goto yy806; - if (yych == 'p') goto yy806; - } -yy803: - YYDEBUG(803, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1926 "Zend/zend_language_scanner.l" - { - if (CG(short_tags)) { - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); - } else { - goto inline_char_handler; - } -} -#line 7927 "Zend/zend_language_scanner.c" -yy804: - YYDEBUG(804, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(805, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1907 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ECHO); - } - RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); -} -#line 7941 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy808; - if (yych == 'h') goto yy808; -yy807: - YYDEBUG(807, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy803; -yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy809; - if (yych != 'p') goto yy807; -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy807; - if (yych >= '\v') goto yy807; - } else { - if (yych <= '\r') goto yy812; - if (yych != ' ') goto yy807; - } -yy810: - YYDEBUG(810, *YYCURSOR); - ++YYCURSOR; -yy811: - YYDEBUG(811, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1916 "Zend/zend_language_scanner.l" - { - HANDLE_NEWLINE(yytext[yyleng-1]); - BEGIN(ST_IN_SCRIPTING); - if (EXPECTED(elem != NULL)) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); -} -#line 7981 "Zend/zend_language_scanner.c" -yy812: - YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy810; - goto yy811; -/* *********************************** */ -yyc_ST_END_HEREDOC: - YYDEBUG(813, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(815, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(816, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2386 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - - yyleng = heredoc_label->indentation + heredoc_label->length; - YYCURSOR += yyleng - 1; - - heredoc_label_dtor(heredoc_label); - efree(heredoc_label); - - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN(T_END_HEREDOC); -} -#line 8009 "Zend/zend_language_scanner.c" -/* *********************************** */ -yyc_ST_NOWDOC: - YYDEBUG(817, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(819, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(820, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2636 "Zend/zend_language_scanner.l" - { - 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); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - YYCURSOR -= indentation; - heredoc_label->indentation = indentation; - - BEGIN(ST_END_HEREDOC); - - goto nowdoc_scan_done; - } - /* fall through */ - default: - continue; + goto yy819; } + goto yy813; } - -nowdoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); - - if (!EG(exception) && spacing != -1 && PARSER_MODE() - && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - - HANDLE_NEWLINES(yytext, yyleng - newline); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 8102 "Zend/zend_language_scanner.c" } -#line 2729 "Zend/zend_language_scanner.l" +#line 2727 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index e7ea1b2a23113..c65fc5e35d2f1 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2612,16 +2612,14 @@ heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); ZVAL_STRINGL(zendlval, yytext, yyleng); - if (!SCNG(heredoc_scan_ahead) && !EG(exception)) { + if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) { zend_string *copy = Z_STR_P(zendlval); if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN(T_ERROR); } - if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS) - && PARSER_MODE()) { + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS)) { zend_string_free(copy); RETURN_TOKEN(T_ERROR); } @@ -2709,7 +2707,7 @@ nowdoc_scan_done: if (!EG(exception) && spacing != -1 && PARSER_MODE() && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN(T_ERROR); } HANDLE_NEWLINES(yytext, yyleng - newline); diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 81299aa44ffab..c89b1bba457d0 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 */ +/* Generated by re2c 0.16 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From 5aee65a265e6f8a75eb664dccddf40c93db321e0 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 13 Apr 2018 21:03:04 +0200 Subject: [PATCH 54/54] Fix newline counting in tokenizer Looks like this is now part of scan_escape_string, which I changed to no longer be called outside of parser mode, so this now has to happen explicitly. --- Zend/zend_language_scanner.c | 318 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 2 + 2 files changed, 162 insertions(+), 158 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 46e7055ccfa3b..42e209ab91bf9 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -2039,11 +2039,13 @@ int start_line = CG(zend_lineno); } zend_string_free(copy); + } else { + HANDLE_NEWLINES(yytext, yyleng - newline); } RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 2047 "Zend/zend_language_scanner.c" +#line 2049 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -2086,7 +2088,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2090 "Zend/zend_language_scanner.c" +#line 2092 "Zend/zend_language_scanner.c" yy74: YYDEBUG(74, *YYCURSOR); ++YYCURSOR; @@ -2097,7 +2099,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 2101 "Zend/zend_language_scanner.c" +#line 2103 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -2109,7 +2111,7 @@ int start_line = CG(zend_lineno); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 2113 "Zend/zend_language_scanner.c" +#line 2115 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -2129,7 +2131,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2133 "Zend/zend_language_scanner.c" +#line 2135 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2153,7 +2155,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2157 "Zend/zend_language_scanner.c" +#line 2159 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2322,7 +2324,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2718 "Zend/zend_language_scanner.l" +#line 2720 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2331,7 +2333,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 2335 "Zend/zend_language_scanner.c" +#line 2337 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); ++YYCURSOR; @@ -2347,7 +2349,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 2351 "Zend/zend_language_scanner.c" +#line 2353 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; @@ -2359,7 +2361,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(yytext[0]); } -#line 2363 "Zend/zend_language_scanner.c" +#line 2365 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); ++YYCURSOR; @@ -2410,7 +2412,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2414 "Zend/zend_language_scanner.c" +#line 2416 "Zend/zend_language_scanner.c" yy96: YYDEBUG(96, *YYCURSOR); ++YYCURSOR; @@ -2448,7 +2450,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 2452 "Zend/zend_language_scanner.c" +#line 2454 "Zend/zend_language_scanner.c" yy98: YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; @@ -2568,7 +2570,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); } -#line 2572 "Zend/zend_language_scanner.c" +#line 2574 "Zend/zend_language_scanner.c" yy103: YYDEBUG(103, *YYCURSOR); yyaccept = 0; @@ -2749,7 +2751,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN_WITH_VAL(T_LNUMBER); } -#line 2753 "Zend/zend_language_scanner.c" +#line 2755 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); yyaccept = 1; @@ -2834,7 +2836,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 2838 "Zend/zend_language_scanner.c" +#line 2840 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yyaccept = 2; @@ -3123,7 +3125,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 3127 "Zend/zend_language_scanner.c" +#line 3129 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; @@ -3144,7 +3146,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 3148 "Zend/zend_language_scanner.c" +#line 3150 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; @@ -3155,7 +3157,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 3159 "Zend/zend_language_scanner.c" +#line 3161 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; @@ -3175,7 +3177,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 3179 "Zend/zend_language_scanner.c" +#line 3181 "Zend/zend_language_scanner.c" yy153: YYDEBUG(153, *YYCURSOR); ++YYCURSOR; @@ -3187,7 +3189,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3191 "Zend/zend_language_scanner.c" +#line 3193 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); ++YYCURSOR; @@ -3216,7 +3218,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 3220 "Zend/zend_language_scanner.c" +#line 3222 "Zend/zend_language_scanner.c" yy158: YYDEBUG(158, *YYCURSOR); ++YYCURSOR; @@ -3226,7 +3228,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3230 "Zend/zend_language_scanner.c" +#line 3232 "Zend/zend_language_scanner.c" yy160: YYDEBUG(160, *YYCURSOR); ++YYCURSOR; @@ -3236,7 +3238,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3240 "Zend/zend_language_scanner.c" +#line 3242 "Zend/zend_language_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); ++YYCURSOR; @@ -3246,7 +3248,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AND_EQUAL); } -#line 3250 "Zend/zend_language_scanner.c" +#line 3252 "Zend/zend_language_scanner.c" yy164: YYDEBUG(164, *YYCURSOR); ++YYCURSOR; @@ -3380,7 +3382,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW); } -#line 3384 "Zend/zend_language_scanner.c" +#line 3386 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3390,7 +3392,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3394 "Zend/zend_language_scanner.c" +#line 3396 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3400,7 +3402,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INC); } -#line 3404 "Zend/zend_language_scanner.c" +#line 3406 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3410,7 +3412,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3414 "Zend/zend_language_scanner.c" +#line 3416 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3420,7 +3422,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEC); } -#line 3424 "Zend/zend_language_scanner.c" +#line 3426 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3430,7 +3432,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 3434 "Zend/zend_language_scanner.c" +#line 3436 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3441,7 +3443,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 3445 "Zend/zend_language_scanner.c" +#line 3447 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yych = *++YYCURSOR; @@ -3473,7 +3475,7 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } -#line 3477 "Zend/zend_language_scanner.c" +#line 3479 "Zend/zend_language_scanner.c" yy194: YYDEBUG(194, *YYCURSOR); ++YYCURSOR; @@ -3483,7 +3485,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3487 "Zend/zend_language_scanner.c" +#line 3489 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); yyaccept = 4; @@ -3531,7 +3533,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_COMMENT); } -#line 3535 "Zend/zend_language_scanner.c" +#line 3537 "Zend/zend_language_scanner.c" yy198: YYDEBUG(198, *YYCURSOR); ++YYCURSOR; @@ -3541,7 +3543,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3545 "Zend/zend_language_scanner.c" +#line 3547 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; @@ -3577,7 +3579,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 3581 "Zend/zend_language_scanner.c" +#line 3583 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); yyaccept = 5; @@ -3592,7 +3594,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL); } -#line 3596 "Zend/zend_language_scanner.c" +#line 3598 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; @@ -3603,7 +3605,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3607 "Zend/zend_language_scanner.c" +#line 3609 "Zend/zend_language_scanner.c" yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; @@ -3618,7 +3620,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_EQUAL); } -#line 3622 "Zend/zend_language_scanner.c" +#line 3624 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3628,7 +3630,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3632 "Zend/zend_language_scanner.c" +#line 3634 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3638,7 +3640,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3642 "Zend/zend_language_scanner.c" +#line 3644 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3649,7 +3651,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR); } -#line 3653 "Zend/zend_language_scanner.c" +#line 3655 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3669,7 +3671,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CLOSE_TAG); } -#line 3673 "Zend/zend_language_scanner.c" +#line 3675 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3679,7 +3681,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_COALESCE); } -#line 3683 "Zend/zend_language_scanner.c" +#line 3685 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; @@ -3710,7 +3712,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_AS); } -#line 3714 "Zend/zend_language_scanner.c" +#line 3716 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; @@ -3800,7 +3802,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DO); } -#line 3804 "Zend/zend_language_scanner.c" +#line 3806 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3889,7 +3891,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IF); } -#line 3893 "Zend/zend_language_scanner.c" +#line 3895 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; @@ -3954,7 +3956,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3958 "Zend/zend_language_scanner.c" +#line 3960 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -4072,7 +4074,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_XOR_EQUAL); } -#line 4076 "Zend/zend_language_scanner.c" +#line 4078 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; @@ -4104,7 +4106,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OR_EQUAL); } -#line 4108 "Zend/zend_language_scanner.c" +#line 4110 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); ++YYCURSOR; @@ -4114,7 +4116,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 4118 "Zend/zend_language_scanner.c" +#line 4120 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); ++YYCURSOR; @@ -4124,7 +4126,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 4128 "Zend/zend_language_scanner.c" +#line 4130 "Zend/zend_language_scanner.c" yy279: YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; @@ -4194,7 +4196,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_POW_EQUAL); } -#line 4198 "Zend/zend_language_scanner.c" +#line 4200 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); ++YYCURSOR; @@ -4204,7 +4206,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELLIPSIS); } -#line 4208 "Zend/zend_language_scanner.c" +#line 4210 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; @@ -4256,7 +4258,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4260 "Zend/zend_language_scanner.c" +#line 4262 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; @@ -4310,7 +4312,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN_WITH_VAL(T_DNUMBER); } } -#line 4314 "Zend/zend_language_scanner.c" +#line 4316 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); ++YYCURSOR; @@ -4349,7 +4351,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SL_EQUAL); } -#line 4353 "Zend/zend_language_scanner.c" +#line 4355 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; @@ -4359,7 +4361,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SPACESHIP); } -#line 4363 "Zend/zend_language_scanner.c" +#line 4365 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); ++YYCURSOR; @@ -4369,7 +4371,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 4373 "Zend/zend_language_scanner.c" +#line 4375 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; @@ -4379,7 +4381,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SR_EQUAL); } -#line 4383 "Zend/zend_language_scanner.c" +#line 4385 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4407,7 +4409,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_AND); } -#line 4411 "Zend/zend_language_scanner.c" +#line 4413 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; @@ -4492,7 +4494,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 4496 "Zend/zend_language_scanner.c" +#line 4498 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4578,7 +4580,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOR); } -#line 4582 "Zend/zend_language_scanner.c" +#line 4584 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; @@ -4651,7 +4653,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NEW); } -#line 4655 "Zend/zend_language_scanner.c" +#line 4657 "Zend/zend_language_scanner.c" yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; @@ -4728,7 +4730,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRY); } -#line 4732 "Zend/zend_language_scanner.c" +#line 4734 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; @@ -4747,7 +4749,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_USE); } -#line 4751 "Zend/zend_language_scanner.c" +#line 4753 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); ++YYCURSOR; @@ -4760,7 +4762,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_VAR); } -#line 4764 "Zend/zend_language_scanner.c" +#line 4766 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; @@ -4779,7 +4781,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 4783 "Zend/zend_language_scanner.c" +#line 4785 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; @@ -4997,7 +4999,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CASE); } -#line 5001 "Zend/zend_language_scanner.c" +#line 5003 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; @@ -5052,7 +5054,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ECHO); } -#line 5056 "Zend/zend_language_scanner.c" +#line 5058 "Zend/zend_language_scanner.c" yy412: YYDEBUG(412, *YYCURSOR); ++YYCURSOR; @@ -5080,7 +5082,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSE); } -#line 5084 "Zend/zend_language_scanner.c" +#line 5086 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; @@ -5129,7 +5131,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EVAL); } -#line 5133 "Zend/zend_language_scanner.c" +#line 5135 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); ++YYCURSOR; @@ -5142,7 +5144,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXIT); } -#line 5146 "Zend/zend_language_scanner.c" +#line 5148 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -5185,7 +5187,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GOTO); } -#line 5189 "Zend/zend_language_scanner.c" +#line 5191 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; @@ -5238,7 +5240,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LIST); } -#line 5242 "Zend/zend_language_scanner.c" +#line 5244 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5429,7 +5431,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INT_CAST); } -#line 5433 "Zend/zend_language_scanner.c" +#line 5435 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5656,7 +5658,7 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 5660 "Zend/zend_language_scanner.c" +#line 5662 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5680,7 +5682,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY); } -#line 5684 "Zend/zend_language_scanner.c" +#line 5686 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); ++YYCURSOR; @@ -5693,7 +5695,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BREAK); } -#line 5697 "Zend/zend_language_scanner.c" +#line 5699 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; @@ -5712,7 +5714,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CATCH); } -#line 5716 "Zend/zend_language_scanner.c" +#line 5718 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; @@ -5725,7 +5727,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS); } -#line 5729 "Zend/zend_language_scanner.c" +#line 5731 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5738,7 +5740,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLONE); } -#line 5742 "Zend/zend_language_scanner.c" +#line 5744 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; @@ -5751,7 +5753,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONST); } -#line 5755 "Zend/zend_language_scanner.c" +#line 5757 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5788,7 +5790,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EMPTY); } -#line 5792 "Zend/zend_language_scanner.c" +#line 5794 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5813,7 +5815,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDIF); } -#line 5817 "Zend/zend_language_scanner.c" +#line 5819 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5859,7 +5861,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINAL); } -#line 5863 "Zend/zend_language_scanner.c" +#line 5865 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5920,7 +5922,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ISSET); } -#line 5924 "Zend/zend_language_scanner.c" +#line 5926 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; @@ -5939,7 +5941,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRINT); } -#line 5943 "Zend/zend_language_scanner.c" +#line 5945 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5994,7 +5996,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_THROW); } -#line 5998 "Zend/zend_language_scanner.c" +#line 6000 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; @@ -6007,7 +6009,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT); } -#line 6011 "Zend/zend_language_scanner.c" +#line 6013 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; @@ -6020,7 +6022,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET); } -#line 6024 "Zend/zend_language_scanner.c" +#line 6026 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; @@ -6033,7 +6035,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_WHILE); } -#line 6037 "Zend/zend_language_scanner.c" +#line 6039 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yyaccept = 6; @@ -6055,7 +6057,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_YIELD); } -#line 6059 "Zend/zend_language_scanner.c" +#line 6061 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -6151,7 +6153,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_BOOL_CAST); } -#line 6155 "Zend/zend_language_scanner.c" +#line 6157 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -6185,7 +6187,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 6189 "Zend/zend_language_scanner.c" +#line 6191 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -6254,7 +6256,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ELSEIF); } -#line 6258 "Zend/zend_language_scanner.c" +#line 6260 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -6288,7 +6290,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOR); } -#line 6292 "Zend/zend_language_scanner.c" +#line 6294 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -6337,7 +6339,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_GLOBAL); } -#line 6341 "Zend/zend_language_scanner.c" +#line 6343 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -6398,7 +6400,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PUBLIC); } -#line 6402 "Zend/zend_language_scanner.c" +#line 6404 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6417,7 +6419,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_RETURN); } -#line 6421 "Zend/zend_language_scanner.c" +#line 6423 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); ++YYCURSOR; @@ -6430,7 +6432,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STATIC); } -#line 6434 "Zend/zend_language_scanner.c" +#line 6436 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; @@ -6443,7 +6445,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_SWITCH); } -#line 6447 "Zend/zend_language_scanner.c" +#line 6449 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6527,7 +6529,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ARRAY_CAST); } -#line 6531 "Zend/zend_language_scanner.c" +#line 6533 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); ++YYCURSOR; @@ -6577,7 +6579,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_UNSET_CAST); } -#line 6581 "Zend/zend_language_scanner.c" +#line 6583 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; @@ -6608,7 +6610,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DECLARE); } -#line 6612 "Zend/zend_language_scanner.c" +#line 6614 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); ++YYCURSOR; @@ -6621,7 +6623,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DEFAULT); } -#line 6625 "Zend/zend_language_scanner.c" +#line 6627 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6658,7 +6660,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_EXTENDS); } -#line 6662 "Zend/zend_language_scanner.c" +#line 6664 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); ++YYCURSOR; @@ -6671,7 +6673,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FINALLY); } -#line 6675 "Zend/zend_language_scanner.c" +#line 6677 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); ++YYCURSOR; @@ -6684,7 +6686,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FOREACH); } -#line 6688 "Zend/zend_language_scanner.c" +#line 6690 "Zend/zend_language_scanner.c" yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; @@ -6722,7 +6724,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE); } -#line 6726 "Zend/zend_language_scanner.c" +#line 6728 "Zend/zend_language_scanner.c" yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; @@ -6759,7 +6761,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PRIVATE); } -#line 6763 "Zend/zend_language_scanner.c" +#line 6765 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6791,7 +6793,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE); } -#line 6795 "Zend/zend_language_scanner.c" +#line 6797 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6815,7 +6817,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_DIR); } -#line 6819 "Zend/zend_language_scanner.c" +#line 6821 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6864,7 +6866,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_STRING_CAST); } -#line 6868 "Zend/zend_language_scanner.c" +#line 6870 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); ++YYCURSOR; @@ -6874,7 +6876,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6878 "Zend/zend_language_scanner.c" +#line 6880 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6887,7 +6889,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ABSTRACT); } -#line 6891 "Zend/zend_language_scanner.c" +#line 6893 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); ++YYCURSOR; @@ -6900,7 +6902,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CALLABLE); } -#line 6904 "Zend/zend_language_scanner.c" +#line 6906 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); ++YYCURSOR; @@ -6913,7 +6915,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CONTINUE); } -#line 6917 "Zend/zend_language_scanner.c" +#line 6919 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6944,7 +6946,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDWHILE); } -#line 6948 "Zend/zend_language_scanner.c" +#line 6950 "Zend/zend_language_scanner.c" yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; @@ -6957,7 +6959,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNCTION); } -#line 6961 "Zend/zend_language_scanner.c" +#line 6963 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -7029,7 +7031,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FILE); } -#line 7033 "Zend/zend_language_scanner.c" +#line 7035 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -7054,7 +7056,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_LINE); } -#line 7058 "Zend/zend_language_scanner.c" +#line 7060 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -7095,7 +7097,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDSWITCH); } -#line 7099 "Zend/zend_language_scanner.c" +#line 7101 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -7126,7 +7128,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTEADOF); } -#line 7130 "Zend/zend_language_scanner.c" +#line 7132 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); ++YYCURSOR; @@ -7139,7 +7141,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INTERFACE); } -#line 7143 "Zend/zend_language_scanner.c" +#line 7145 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -7152,7 +7154,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NAMESPACE); } -#line 7156 "Zend/zend_language_scanner.c" +#line 7158 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); ++YYCURSOR; @@ -7165,7 +7167,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_PROTECTED); } -#line 7169 "Zend/zend_language_scanner.c" +#line 7171 "Zend/zend_language_scanner.c" yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; @@ -7190,7 +7192,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_CLASS_C); } -#line 7194 "Zend/zend_language_scanner.c" +#line 7196 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7226,7 +7228,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_TRAIT_C); } -#line 7230 "Zend/zend_language_scanner.c" +#line 7232 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); ++YYCURSOR; @@ -7239,7 +7241,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDDECLARE); } -#line 7243 "Zend/zend_language_scanner.c" +#line 7245 "Zend/zend_language_scanner.c" yy728: YYDEBUG(728, *YYCURSOR); ++YYCURSOR; @@ -7252,7 +7254,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_ENDFOREACH); } -#line 7256 "Zend/zend_language_scanner.c" +#line 7258 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); ++YYCURSOR; @@ -7265,7 +7267,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_IMPLEMENTS); } -#line 7269 "Zend/zend_language_scanner.c" +#line 7271 "Zend/zend_language_scanner.c" yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; @@ -7284,7 +7286,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INSTANCEOF); } -#line 7288 "Zend/zend_language_scanner.c" +#line 7290 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7336,7 +7338,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_METHOD_C); } -#line 7340 "Zend/zend_language_scanner.c" +#line 7342 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -7366,7 +7368,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 7370 "Zend/zend_language_scanner.c" +#line 7372 "Zend/zend_language_scanner.c" yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; @@ -7395,7 +7397,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7399 "Zend/zend_language_scanner.c" +#line 7401 "Zend/zend_language_scanner.c" yy751: YYDEBUG(751, *YYCURSOR); ++YYCURSOR; @@ -7408,7 +7410,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7412 "Zend/zend_language_scanner.c" +#line 7414 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); ++YYCURSOR; @@ -7421,7 +7423,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_FUNC_C); } -#line 7425 "Zend/zend_language_scanner.c" +#line 7427 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -7451,7 +7453,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_NS_C); } -#line 7455 "Zend/zend_language_scanner.c" +#line 7457 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; @@ -7469,7 +7471,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_HALT_COMPILER); } -#line 7473 "Zend/zend_language_scanner.c" +#line 7475 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7541,7 +7543,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); goto restart; } -#line 7545 "Zend/zend_language_scanner.c" +#line 7547 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); ++YYCURSOR; @@ -7557,7 +7559,7 @@ int start_line = CG(zend_lineno); { goto return_whitespace; } -#line 7561 "Zend/zend_language_scanner.c" +#line 7563 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); yych = *++YYCURSOR; @@ -7579,7 +7581,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7583 "Zend/zend_language_scanner.c" +#line 7585 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); ++YYCURSOR; @@ -7589,7 +7591,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7593 "Zend/zend_language_scanner.c" +#line 7595 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7653,7 +7655,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7657 "Zend/zend_language_scanner.c" +#line 7659 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7707,7 +7709,7 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7711 "Zend/zend_language_scanner.c" +#line 7713 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7718,7 +7720,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2634 "Zend/zend_language_scanner.l" +#line 2636 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -7801,7 +7803,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7805 "Zend/zend_language_scanner.c" +#line 7807 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7889,7 +7891,7 @@ int start_line = CG(zend_lineno); ++YYCURSOR; YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2718 "Zend/zend_language_scanner.l" +#line 2720 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7898,7 +7900,7 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7902 "Zend/zend_language_scanner.c" +#line 7904 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); ++YYCURSOR; @@ -7912,7 +7914,7 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7916 "Zend/zend_language_scanner.c" +#line 7918 "Zend/zend_language_scanner.c" yy796: YYDEBUG(796, *YYCURSOR); ++YYCURSOR; @@ -7924,7 +7926,7 @@ int start_line = CG(zend_lineno); /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7928 "Zend/zend_language_scanner.c" +#line 7930 "Zend/zend_language_scanner.c" yy798: YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; @@ -7975,7 +7977,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7979 "Zend/zend_language_scanner.c" +#line 7981 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); ++YYCURSOR; @@ -8001,7 +8003,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 8005 "Zend/zend_language_scanner.c" +#line 8007 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -8012,7 +8014,7 @@ int start_line = CG(zend_lineno); yy_pop_state(); RETURN_TOKEN(']'); } -#line 8016 "Zend/zend_language_scanner.c" +#line 8018 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); ++YYCURSOR; @@ -8041,7 +8043,7 @@ int start_line = CG(zend_lineno); { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8045 "Zend/zend_language_scanner.c" +#line 8047 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); ++YYCURSOR; @@ -8062,7 +8064,7 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8066 "Zend/zend_language_scanner.c" +#line 8068 "Zend/zend_language_scanner.c" yy814: YYDEBUG(814, *YYCURSOR); yych = *++YYCURSOR; @@ -8102,7 +8104,7 @@ int start_line = CG(zend_lineno); goto yy813; } } -#line 2727 "Zend/zend_language_scanner.l" +#line 2729 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index c65fc5e35d2f1..15afc4388733a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2625,6 +2625,8 @@ heredoc_scan_done: } zend_string_free(copy); + } else { + HANDLE_NEWLINES(yytext, yyleng - newline); } RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);