From: Nikita Popov Date: Wed, 27 Jun 2018 12:06:03 +0000 (+0200) Subject: Fixed bug #76439 X-Git-Tag: php-7.3.0alpha3~52 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=17afe6430fffa6ca646f336dacf34fc5af865390;p=php Fixed bug #76439 --- diff --git a/NEWS b/NEWS index 07e5d1900b..a9f8ae656d 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,7 @@ PHP NEWS properly). (Nikita) . Fixed bug #76509 (Inherited static properties can be desynchronized from their parent by ref). (Nikita) + . Fixed bug #76439 (Changed behaviour in unclosed HereDoc). (Nikita, tpunt) - FPM: . Fixed bug #73342 (Vulnerability in php-fpm by changing stdin to diff --git a/Zend/tests/bug76439.phpt b/Zend/tests/bug76439.phpt new file mode 100644 index 0000000000..0572e9f5c2 --- /dev/null +++ b/Zend/tests/bug76439.phpt @@ -0,0 +1,68 @@ +--TEST-- +Bug #76439: Don't always strip leading whitespace from heredoc T_ENCAPSED_AND_WHITESPACE tokens +--FILE-- + +--EXPECT-- +string(2) "1-" +string(3) "2 -" +string(3) "3 -" +string(3) "4-4" +string(4) "5-5-" +string(5) "6-6-6" +string(3) "7 +-" +string(4) "8 + -" +string(1) "9" +string(1) "-" +string(2) " -" diff --git a/Zend/tests/bug76439_2.phpt b/Zend/tests/bug76439_2.phpt new file mode 100644 index 0000000000..c91303b392 --- /dev/null +++ b/Zend/tests/bug76439_2.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #76439: Don't always strip leading whitespace from heredoc T_ENCAPSED_AND_WHITESPACE tokens (error case) +--FILE-- + +--EXPECTF-- +Parse error: Invalid body indentation level (expecting an indentation level of at least 1) in %s on line 7 diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 8db317915d..db713464de 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 1.0.1 */ #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 @@ -1111,65 +1112,86 @@ skip_escape_conversion: #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) +static const char *next_newline(const char *str, const char *end, size_t *newline_len) { + for (; str < end; str++) { + if (*str == '\r') { + *newline_len = str + 1 < end && *(str + 1) == '\n' ? 2 : 1; + } else if (*str == '\n') { + *newline_len = 1; + return str; + } + } + *newline_len = 0; + return NULL; +} + +static zend_bool strip_multiline_string_indentation( + zval *zendlval, int indentation, zend_bool using_spaces, + zend_bool newline_at_start, zend_bool newline_at_end) { - int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip, newline_count = 0; + const char *str = Z_STRVAL_P(zendlval), *end = str + Z_STRLEN_P(zendlval); char *copy = Z_STRVAL_P(zendlval); - zend_bool trailing_newline = 0; - while (j < len) { - trailing_newline = 0; + int newline_count = 0; + size_t newline_len; + const char *nl; + + if (!newline_at_start) { + nl = next_newline(str, end, &newline_len); + if (!nl) { + return 1; + } + + str = nl + newline_len; + copy = (char *) nl + newline_len; + newline_count++; + } else { + nl = str; + } + + /* <= intentional */ + while (str <= end && nl) { + size_t skip; + nl = next_newline(str, end, &newline_len); + if (!nl && newline_at_end) { + nl = end; + } - for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { - if (copy[j] == '\r' || copy[j] == '\n') { - goto skip; + /* Try to skip indentation */ + for (skip = 0; skip < indentation; skip++, str++) { + if (str == nl) { + /* Don't require full indentation on whitespace-only lines */ + break; } - if (copy[j] != ' ' && copy[j] != '\t') { + if (str == end || (*str != ' ' && *str != '\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); + 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')) { + if ((!using_spaces && *str == ' ') || (using_spaces && *str == '\t')) { CG(zend_lineno) += newline_count; - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + zend_throw_exception(zend_ce_parse_error, + "Invalid indentation - tabs and spaces cannot be mixed", 0); goto error; } } - while (j < len && copy[j] != '\r' && copy[j] != '\n') { - copy[i++] = copy[j++]; - } - - if (j == len) { + if (str == end) { break; } -skip: - if (copy[j] == '\r') { - copy[i++] = copy[j++]; - trailing_newline = 1; - } - - if (copy[j] == '\n') { - 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; + size_t len = nl ? (nl - str + newline_len) : (end - str); + memmove(copy, str, len); + str += len; + copy += len; + newline_count++; } - Z_STRVAL_P(zendlval)[new_len - newline] = '\0'; - Z_STRLEN_P(zendlval) = new_len - newline; - + *copy = '\0'; + Z_STRLEN_P(zendlval) = copy - Z_STRVAL_P(zendlval); return 1; error: @@ -1225,7 +1247,7 @@ restart: SCNG(yy_text) = YYCURSOR; -#line 1229 "Zend/zend_language_scanner.c" +#line 1251 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1267,6331 +1289,6160 @@ restart: } } /* *********************************** */ -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" +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 2748 "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 1468 "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 1430 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 1484 "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 1713 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(yytext[0]); +} +#line 1496 "Zend/zend_language_scanner.c" +yy10: + YYDEBUG(10, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(11, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2224 "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 1547 "Zend/zend_language_scanner.c" +yy12: + YYDEBUG(12, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(13, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2051 "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 (PARSER_MODE()) { + SKIP_TOKEN(T_COMMENT); } - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); + RETURN_TOKEN(T_COMMENT); } -#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; - } -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 (PARSER_MODE()) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); - } else { - goto inline_char_handler; - } -} -#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); - } - RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); -} -#line 1370 "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; - } +#line 1585 "Zend/zend_language_scanner.c" 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 (PARSER_MODE()) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); -} -#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; + YYDEBUG(14, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= '_') { - if (yych == '$') goto yy21; + if (yych <= '@') goto yy9; + if (yych <= 'Z') goto yy71; + if (yych <= '^') goto yy9; + goto yy71; } else { - if (yych <= '`') goto yy22; - if (yych == '{') goto yy24; + if (yych <= '`') goto yy9; + if (yych <= 'z') goto yy71; + if (yych <= 0x7F) goto yy9; + goto yy71; } - YYDEBUG(19, *YYCURSOR); +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; -yy20: - YYDEBUG(20, *YYCURSOR); + YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2472 "Zend/zend_language_scanner.l" +#line 2134 "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 1997 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1609 "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 1989 "Zend/zend_language_scanner.l" +#line 2046 "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 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, - }; +#line 1966 "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 yy43; + 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 yy45; - if (yych == '{') 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; + 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); - 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; + 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 1739 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; +yy44: YYDEBUG(44, *YYCURSOR); - 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" + if (yybm[0+yych] & 16) { + goto yy43; + } + goto yy36; yy45: YYDEBUG(45, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy42; - if (yych <= 'Z') goto yy47; - if (yych <= '^') goto yy42; - goto yy47; + 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 <= 'z') { - if (yych <= '`') goto yy42; - goto yy47; + if (yych <= 'm') { + if (yych == 'f') goto yy163; + if (yych <= 'l') goto yy44; + goto yy165; } else { - if (yych <= '{') goto yy50; - if (yych <= 0x7F) goto yy42; - goto yy47; + if (yych <= 'n') goto yy166; + if (yych == 's') goto yy167; + goto yy44; } } yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy52; - goto yy42; + if (yych == 'I') goto yy168; + if (yych == 'i') goto yy168; + goto yy44; yy47: YYDEBUG(47, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(48, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy47; + 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 2003 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 1793 "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 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" + 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 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" + 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 1997 "Zend/zend_language_scanner.l" +#line 1453 "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 1836 "Zend/zend_language_scanner.c" -yy58: - YYDEBUG(58, *YYCURSOR); +#line 2255 "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 1989 "Zend/zend_language_scanner.l" +#line 2401 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#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); + BEGIN(ST_BACKQUOTE); + RETURN_TOKEN('`'); } -#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, - }; +#line 2276 "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 1718 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN('{'); +} +#line 2287 "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 2518 "Zend/zend_language_scanner.l" +#line 1730 "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) && 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_efree(copy); - RETURN_TOKEN(T_ERROR); - } - - zend_string_efree(copy); - } else { - HANDLE_NEWLINES(yytext, yyleng - newline); - } - - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); + RETURN_TOKEN('}'); } -#line 2049 "Zend/zend_language_scanner.c" +#line 2307 "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; -yy71: - YYDEBUG(71, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(72, *YYCURSOR); - 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); -#line 2003 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 2092 "Zend/zend_language_scanner.c" -yy74: - YYDEBUG(74, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(75, *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 2103 "Zend/zend_language_scanner.c" -yy76: - YYDEBUG(76, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(77, *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 2115 "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); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1997 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 2135 "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; - YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1989 "Zend/zend_language_scanner.l" +#line 1617 "Zend/zend_language_scanner.l" { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 2159 "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; - 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 yy119; - case 'B': - case 'b': goto yy121; - case 'C': - case 'c': goto yy122; - case 'D': - case 'd': goto yy123; - case 'E': - case 'e': goto yy124; - case 'F': - case 'f': goto yy125; - case 'G': - case 'g': goto yy126; - case 'I': - case 'i': goto yy129; - case 'L': - case 'l': goto yy130; - case 'N': - case 'n': goto yy131; - case 'O': - case 'o': goto yy132; - case 'P': - case 'p': goto yy133; - case 'R': - case 'r': goto yy134; - case 'S': - case 's': goto yy135; - case 'T': - case 't': goto yy136; - 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 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 2337 "Zend/zend_language_scanner.c" -yy89: - YYDEBUG(89, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(90, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy89; - } - YYDEBUG(91, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 2353 "Zend/zend_language_scanner.c" -yy92: - YYDEBUG(92, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy153; -yy93: - YYDEBUG(93, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(yytext[0]); -} -#line 2365 "Zend/zend_language_scanner.c" -yy94: - YYDEBUG(94, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(95, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "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('"'); -} -#line 2416 "Zend/zend_language_scanner.c" -yy96: - YYDEBUG(96, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(97, *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)++; - break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; - } - - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (PARSER_MODE()) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 2454 "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); - 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); - } - } - - 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= '0') goto yy71; } else { - *t++ = '\\'; - *t++ = *s; + if (yych <= '@') goto yy73; + if (yych <= 'Z') goto yy71; } } else { - *t++ = *s; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; + if (yych <= '`') { + if (yych <= '_') goto yy71; + } else { + if (yych <= 'z') goto yy71; + if (yych >= 0x80) goto yy71; + } } - s++; - } - *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); - } - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); +yy73: + YYDEBUG(73, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2024 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 2574 "Zend/zend_language_scanner.c" -yy103: - YYDEBUG(103, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy165; - if (yych <= 0x1F) goto yy93; - goto yy165; +#line 2348 "Zend/zend_language_scanner.c" +yy74: + YYDEBUG(74, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(75, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1661 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MOD_EQUAL); +} +#line 2358 "Zend/zend_language_scanner.c" +yy76: + YYDEBUG(76, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(77, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1689 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_AND); +} +#line 2368 "Zend/zend_language_scanner.c" +yy78: + YYDEBUG(78, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(79, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1673 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_AND_EQUAL); +} +#line 2378 "Zend/zend_language_scanner.c" +yy80: + YYDEBUG(80, *YYCURSOR); + ++YYCURSOR; + YYFILL(7); + yych = *YYCURSOR; +yy81: + YYDEBUG(81, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy80; + } + switch (yych) { + case 'A': + case 'a': goto yy83; + case 'B': + case 'b': goto yy84; + case 'D': + case 'd': goto yy85; + case 'F': + case 'f': goto yy86; + case 'I': + case 'i': goto yy87; + case 'O': + case 'o': goto yy88; + case 'R': + case 'r': goto yy89; + case 'S': + case 's': goto yy90; + 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 { - if (yych <= '@') goto yy93; - if (yych == 'C') goto yy93; - goto yy165; + goto yy27; } } else { - if (yych <= 'I') { - if (yych == 'F') goto yy165; - if (yych <= 'H') goto yy93; - goto yy165; + if (yyaccept == 2) { + goto yy36; } else { - if (yych == 'O') goto yy165; - if (yych <= 'Q') goto yy93; - goto yy165; + goto yy109; } } } else { - if (yych <= 'f') { - if (yych <= 'b') { - if (yych == 'U') goto yy165; - if (yych <= '`') goto yy93; - goto yy165; + if (yyaccept <= 5) { + if (yyaccept == 4) { + goto yy113; } else { - if (yych == 'd') goto yy165; - if (yych <= 'e') goto yy93; - goto yy165; + goto yy122; } } else { - if (yych <= 'o') { - if (yych == 'i') goto yy165; - if (yych <= 'n') goto yy93; - goto yy165; - } else { - if (yych <= 's') { - if (yych <= 'q') goto yy93; - goto yy165; - } else { - if (yych == 'u') goto yy165; - goto yy93; - } - } + goto yy457; } } -yy104: - YYDEBUG(104, *YYCURSOR); - yych = *++YYCURSOR; - goto yy93; -yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '*') goto yy176; - if (yych == '=') goto yy178; - goto yy93; -yy106: - YYDEBUG(106, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '+') goto yy180; - if (yych == '=') goto yy182; - goto yy93; -yy107: - YYDEBUG(107, *YYCURSOR); +yy83: + YYDEBUG(83, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') { - if (yych == '-') goto yy184; - goto yy93; - } else { - if (yych <= '=') goto yy186; - if (yych <= '>') goto yy188; - goto yy93; - } -yy108: - YYDEBUG(108, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy190; - goto yy93; - } else { - if (yych <= '9') goto yy191; - if (yych == '=') goto yy194; - goto yy93; - } -yy109: - YYDEBUG(109, *YYCURSOR); + if (yych == 'R') goto yy195; + if (yych == 'r') goto yy195; + goto yy82; +yy84: + YYDEBUG(84, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy196; - goto yy93; - } else { - if (yych <= '/') goto yy96; - if (yych == '=') goto yy198; - goto yy93; - } -yy110: - YYDEBUG(110, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy112; - } - if (yych <= 'W') { - if (yych <= 'A') { - if (yych == '.') goto yy191; - } else { - if (yych <= 'B') goto yy200; - if (yych == 'E') goto yy201; - } + if (yych <= 'O') { + if (yych == 'I') goto yy196; + if (yych <= 'N') goto yy82; + goto yy197; } else { - if (yych <= 'd') { - if (yych <= 'X') goto yy202; - if (yych == 'b') goto yy200; + if (yych <= 'i') { + if (yych <= 'h') goto yy82; + goto yy196; } else { - if (yych <= 'e') goto yy201; - if (yych == 'x') goto yy202; + if (yych == 'o') goto yy197; + goto yy82; } } -yy111: - YYDEBUG(111, *YYCURSOR); +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 == '=') goto yy205; + YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1761 "Zend/zend_language_scanner.l" +#line 1645 "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)); - } 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); - } - } - ZEND_ASSERT(!errno); - RETURN_TOKEN_WITH_VAL(T_LNUMBER); + RETURN_TOKEN(T_POW); +} +#line 2512 "Zend/zend_language_scanner.c" +yy94: + YYDEBUG(94, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(95, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1641 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MUL_EQUAL); +} +#line 2522 "Zend/zend_language_scanner.c" +yy96: + YYDEBUG(96, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(97, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1597 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INC); +} +#line 2532 "Zend/zend_language_scanner.c" +yy98: + YYDEBUG(98, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(99, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1633 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PLUS_EQUAL); +} +#line 2542 "Zend/zend_language_scanner.c" +yy100: + YYDEBUG(100, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(101, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1601 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEC); +} +#line 2552 "Zend/zend_language_scanner.c" +yy102: + YYDEBUG(102, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(103, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1637 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MINUS_EQUAL); +} +#line 2562 "Zend/zend_language_scanner.c" +yy104: + YYDEBUG(104, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(105, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1425 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 2755 "Zend/zend_language_scanner.c" -yy112: - YYDEBUG(112, *YYCURSOR); - yyaccept = 1; +#line 2573 "Zend/zend_language_scanner.c" +yy106: + YYDEBUG(106, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy207; + goto yy82; +yy107: + YYDEBUG(107, *YYCURSOR); + yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(113, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy112; - } + YYDEBUG(108, *YYCURSOR); if (yych <= 'D') { - if (yych == '.') goto yy191; - goto yy111; + if (yych <= '/') goto yy109; + if (yych <= '9') goto yy107; } else { - if (yych <= 'E') goto yy201; - if (yych == 'e') goto yy201; - goto yy111; + if (yych <= 'E') goto yy117; + if (yych == 'e') goto yy117; + } +yy109: + YYDEBUG(109, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1886 "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 2605 "Zend/zend_language_scanner.c" +yy110: + YYDEBUG(110, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(111, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1657 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONCAT_EQUAL); +} +#line 2615 "Zend/zend_language_scanner.c" +yy112: + YYDEBUG(112, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '*') goto yy209; +yy113: + YYDEBUG(113, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2083 "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 (PARSER_MODE()) { + SKIP_TOKEN(T_DOC_COMMENT); } + RETURN_TOKEN(T_DOC_COMMENT); + } + + if (PARSER_MODE()) { + SKIP_TOKEN(T_COMMENT); + } + RETURN_TOKEN(T_COMMENT); +} +#line 2663 "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 1653 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIV_EQUAL); +} +#line 2673 "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 2025 "Zend/zend_language_scanner.l" +#line 1449 "Zend/zend_language_scanner.l" { - RETURN_TOKEN_WITH_STR(T_STRING, 0); + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 2840 "Zend/zend_language_scanner.c" +#line 2709 "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 1705 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL); +} +#line 2724 "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 1625 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); +} +#line 2735 "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 1613 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_EQUAL); +} +#line 2750 "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 1581 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_ARROW); +} +#line 2760 "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 1629 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); +} +#line 2770 "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 1709 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR); +} +#line 2781 "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 2122 "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 2801 "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: - 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; - } - } + ++YYCURSOR; + YYDEBUG(137, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1461 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_COALESCE); +} +#line 2811 "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 1432 "Zend/zend_language_scanner.l" +#line 1365 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + RETURN_TOKEN(T_AS); } -#line 3129 "Zend/zend_language_scanner.c" +#line 2842 "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 2380 "Zend/zend_language_scanner.l" - { - BEGIN(ST_BACKQUOTE); - RETURN_TOKEN('`'); -} -#line 3150 "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 1697 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); -} -#line 3161 "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 1709 "Zend/zend_language_scanner.l" +#line 1333 "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 3181 "Zend/zend_language_scanner.c" +#line 2932 "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 1596 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 3193 "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 2003 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 3222 "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 1640 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MOD_EQUAL); -} -#line 3232 "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 1668 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_AND); -} -#line 3242 "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 1652 "Zend/zend_language_scanner.l" +#line 1309 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AND_EQUAL); + RETURN_TOKEN(T_IF); } -#line 3252 "Zend/zend_language_scanner.c" -yy164: - YYDEBUG(164, *YYCURSOR); - ++YYCURSOR; - YYFILL(7); - yych = *YYCURSOR; +#line 3021 "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 1693 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_OR); +} +#line 3086 "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 1624 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW); -} -#line 3386 "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 1620 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MUL_EQUAL); -} -#line 3396 "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 1576 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INC); -} -#line 3406 "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 1612 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 3416 "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 1580 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEC); -} -#line 3426 "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 1616 "Zend/zend_language_scanner.l" +#line 1681 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_MINUS_EQUAL); + RETURN_TOKEN(T_XOR_EQUAL); } -#line 3436 "Zend/zend_language_scanner.c" +#line 3204 "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 1404 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN(T_OBJECT_OPERATOR); + RETURN_TOKEN(T_OR_EQUAL); } -#line 3447 "Zend/zend_language_scanner.c" -yy190: - YYDEBUG(190, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy291; - goto yy166; +#line 3236 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; + ++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 1865 "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 1685 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3479 "Zend/zend_language_scanner.c" -yy194: - YYDEBUG(194, *YYCURSOR); +#line 3246 "Zend/zend_language_scanner.c" +yy193: + YYDEBUG(193, *YYCURSOR); ++YYCURSOR; - YYDEBUG(195, *YYCURSOR); + YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" +#line 1609 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONCAT_EQUAL); + RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3489 "Zend/zend_language_scanner.c" +#line 3256 "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 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 (PARSER_MODE()) { - SKIP_TOKEN(T_DOC_COMMENT); - } - RETURN_TOKEN(T_DOC_COMMENT); - } - - if (PARSER_MODE()) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 3537 "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 1632 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIV_EQUAL); -} -#line 3547 "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 1428 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); -} -#line 3583 "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 1684 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL); + RETURN_TOKEN(T_POW_EQUAL); } -#line 3598 "Zend/zend_language_scanner.c" +#line 3326 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy307; YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); + RETURN_TOKEN(T_ELLIPSIS); } -#line 3609 "Zend/zend_language_scanner.c" +#line 3336 "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 1592 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_EQUAL); -} -#line 3624 "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 1560 "Zend/zend_language_scanner.l" +#line 1754 "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 3634 "Zend/zend_language_scanner.c" +#line 3388 "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 1608 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); -} -#line 3644 "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 1688 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR); -} -#line 3655 "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 2101 "Zend/zend_language_scanner.l" +#line 1833 "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 3675 "Zend/zend_language_scanner.c" -yy220: - YYDEBUG(220, *YYCURSOR); +#line 3442 "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 1440 "Zend/zend_language_scanner.l" +#line 1665 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_COALESCE); + RETURN_TOKEN(T_SL_EQUAL); } -#line 3685 "Zend/zend_language_scanner.c" -yy222: - YYDEBUG(222, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy315; - if (yych == 's') goto yy315; - goto yy128; +#line 3481 "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 1621 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SPACESHIP); +} +#line 3491 "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 1344 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_AS); + RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3716 "Zend/zend_language_scanner.c" +#line 3501 "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 1669 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR_EQUAL); +} +#line 3511 "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 1312 "Zend/zend_language_scanner.l" +#line 1697 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DO); + RETURN_TOKEN(T_LOGICAL_AND); } -#line 3806 "Zend/zend_language_scanner.c" +#line 3539 "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 1288 "Zend/zend_language_scanner.l" +#line 1267 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IF); + RETURN_TOKEN(T_EXIT); } -#line 3895 "Zend/zend_language_scanner.c" +#line 3624 "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 1672 "Zend/zend_language_scanner.l" +#line 1337 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LOGICAL_OR); + RETURN_TOKEN(T_FOR); } -#line 3960 "Zend/zend_language_scanner.c" +#line 3710 "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 1465 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NEW); +} +#line 3783 "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 1660 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_XOR_EQUAL); -} -#line 4078 "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 1656 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OR_EQUAL); -} -#line 4110 "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 1664 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_OR); -} -#line 4120 "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 1588 "Zend/zend_language_scanner.l" +#line 1293 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); + RETURN_TOKEN(T_TRY); } -#line 4130 "Zend/zend_language_scanner.c" -yy279: - YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy381; - if (yych == 'r') goto yy381; - goto yy166; +#line 3860 "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 1529 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_USE); +} +#line 3879 "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 1473 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_VAR); +} +#line 3892 "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 1701 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_XOR); +} +#line 3911 "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; + yych = *++YYCURSOR; + if (yych == 'L') goto yy368; + if (yych == 'l') goto yy368; + goto yy44; +yy290: YYDEBUG(290, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW_EQUAL); -} -#line 4200 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'I') goto yy369; + if (yych == 'i') goto yy369; + goto yy44; yy291: YYDEBUG(291, *YYCURSOR); - ++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: YYDEBUG(292, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELLIPSIS); -} -#line 4210 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy372; + if (yych == 'a') goto yy372; + goto yy44; 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 == 'I') goto yy373; + if (yych == 'i') goto yy373; + goto yy44; yy294: YYDEBUG(294, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy374; + if (yych == 'e') goto yy374; + goto yy44; +yy295: YYDEBUG(295, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy294; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy375; + if (yych == 'a') goto yy375; + goto yy44; +yy296: YYDEBUG(296, *YYCURSOR); - 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 4262 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy376; + if (yych == 'r') goto yy376; + goto yy44; yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy166; - if (yych >= ':') goto yy166; + if (yych == 'A') goto yy377; + if (yych == 'a') goto yy377; + goto yy82; yy298: YYDEBUG(298, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'A') goto yy378; + if (yych == 'a') goto yy378; + goto yy82; +yy299: YYDEBUG(299, *YYCURSOR); - if (yych <= '/') goto yy193; - if (yych <= '9') goto yy298; - goto yy193; + yych = *++YYCURSOR; + if (yych == 'L') goto yy379; + if (yych == 'l') goto yy379; + goto yy82; yy300: YYDEBUG(300, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'B') goto yy380; + if (yych == 'b') goto yy380; + goto yy82; +yy301: YYDEBUG(301, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy300; - } + yych = *++YYCURSOR; + if (yych == 'A') goto yy381; + if (yych == 'a') goto yy381; + goto yy82; +yy302: YYDEBUG(302, *YYCURSOR); - 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 4316 "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; - } - } 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; - } - } + 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 1644 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SL_EQUAL); -} -#line 4355 "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 1600 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 4365 "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 1584 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_IDENTICAL); -} -#line 4375 "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 1648 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR_EQUAL); -} -#line 4385 "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 1676 "Zend/zend_language_scanner.l" +#line 1377 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LOGICAL_AND); + RETURN_TOKEN(T_CASE); } -#line 4413 "Zend/zend_language_scanner.c" -yy318: - YYDEBUG(318, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy398; - if (yych == 'a') goto yy398; - goto yy128; +#line 4129 "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 1397 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ECHO); +} +#line 4184 "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 1246 "Zend/zend_language_scanner.l" +#line 1321 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_ELSE); } -#line 4498 "Zend/zend_language_scanner.c" +#line 4212 "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 1505 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EVAL); +} +#line 4261 "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 1316 "Zend/zend_language_scanner.l" +#line 1263 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOR); + RETURN_TOKEN(T_EXIT); } -#line 4584 "Zend/zend_language_scanner.c" +#line 4274 "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 1393 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GOTO); +} +#line 4317 "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 1444 "Zend/zend_language_scanner.l" +#line 1585 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NEW); + RETURN_TOKEN(T_LIST); } -#line 4657 "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 4370 "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 1272 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRY); -} -#line 4734 "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 1508 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 4753 "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 1452 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_VAR); -} -#line 4766 "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 1680 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 4785 "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 1477 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INT_CAST); +} +#line 4561 "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 <= '`') { + 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 2270 "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 <= '\r') goto yy391; - if (yych == ' ') goto yy391; - goto yy197; + spacing |= HEREDOC_USING_SPACES; } -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; + ++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); } - } 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; + + 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; } } -yy397: - YYDEBUG(397, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy483; - if (yych == 'r') goto yy483; - goto yy128; + + 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 4788 "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 1356 "Zend/zend_language_scanner.l" +#line 1589 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CASE); + RETURN_TOKEN(T_ARRAY); } -#line 5003 "Zend/zend_language_scanner.c" -yy403: - YYDEBUG(403, *YYCURSOR); +#line 4812 "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 1385 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BREAK); +} +#line 4825 "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 1297 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CATCH); +} +#line 4844 "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 1405 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS); +} +#line 4857 "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 1376 "Zend/zend_language_scanner.l" +#line 1469 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ECHO); + RETURN_TOKEN(T_CLONE); } -#line 5058 "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 4870 "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 1300 "Zend/zend_language_scanner.l" +#line 1275 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + RETURN_TOKEN(T_CONST); } -#line 5086 "Zend/zend_language_scanner.c" +#line 4883 "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 1545 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EMPTY); +} +#line 4920 "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 1484 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EVAL); -} -#line 5135 "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 1242 "Zend/zend_language_scanner.l" +#line 1317 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXIT); + RETURN_TOKEN(T_ENDIF); } -#line 5148 "Zend/zend_language_scanner.c" +#line 4945 "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 1561 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINAL); +} +#line 4991 "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 1372 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 5191 "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 1564 "Zend/zend_language_scanner.l" +#line 1541 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LIST); + RETURN_TOKEN(T_ISSET); } -#line 5244 "Zend/zend_language_scanner.c" +#line 5052 "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 1401 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRINT); +} +#line 5071 "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 1305 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_THROW); +} +#line 5126 "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 1413 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT); +} +#line 5139 "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 1577 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET); +} +#line 5152 "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 1325 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_WHILE); +} +#line 5165 "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 1289 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_YIELD); +} +#line 5187 "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 1456 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 5435 "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 1497 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOL_CAST); +} +#line 5283 "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 1481 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_CAST); +} +#line 5317 "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 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; - } - } - - 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 5662 "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 1568 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY); -} -#line 5686 "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 1364 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BREAK); -} -#line 5699 "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 1276 "Zend/zend_language_scanner.l" +#line 1313 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CATCH); + RETURN_TOKEN(T_ELSEIF); } -#line 5718 "Zend/zend_language_scanner.c" +#line 5386 "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 1384 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS); -} -#line 5731 "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 1448 "Zend/zend_language_scanner.l" +#line 1341 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLONE); + RETURN_TOKEN(T_ENDFOR); } -#line 5744 "Zend/zend_language_scanner.c" +#line 5420 "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 1254 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONST); -} -#line 5757 "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 1524 "Zend/zend_language_scanner.l" +#line 1537 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EMPTY); + RETURN_TOKEN(T_GLOBAL); } -#line 5794 "Zend/zend_language_scanner.c" +#line 5469 "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 1296 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDIF); -} -#line 5819 "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 1540 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FINAL); + RETURN_TOKEN(T_PUBLIC); } -#line 5865 "Zend/zend_language_scanner.c" +#line 5530 "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 1279 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_RETURN); +} +#line 5549 "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 1553 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STATIC); +} +#line 5562 "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 1369 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SWITCH); +} +#line 5575 "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 1520 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ISSET); -} -#line 5926 "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 1380 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5945 "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 1489 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY_CAST); +} +#line 5659 "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 1284 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_THROW); -} -#line 6000 "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 1392 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT); -} -#line 6013 "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 1556 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 6026 "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 1304 "Zend/zend_language_scanner.l" +#line 1501 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_WHILE); + RETURN_TOKEN(T_UNSET_CAST); } -#line 6039 "Zend/zend_language_scanner.c" +#line 5709 "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 1268 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_YIELD); -} -#line 6061 "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 1353 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DECLARE); +} +#line 5740 "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 1381 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEFAULT); +} +#line 5753 "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 1417 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXTENDS); +} +#line 5790 "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 1301 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINALLY); +} +#line 5803 "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 1476 "Zend/zend_language_scanner.l" +#line 1345 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_BOOL_CAST); + RETURN_TOKEN(T_FOREACH); } -#line 6157 "Zend/zend_language_scanner.c" +#line 5816 "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 1509 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE); +} +#line 5854 "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 1460 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); -} -#line 6191 "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; -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; + if (yych == 'C') goto yy603; + if (yych == 'c') goto yy603; + goto yy44; +yy565: + YYDEBUG(565, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy43; } + YYDEBUG(566, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1565 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRIVATE); +} +#line 5891 "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 1517 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE); +} +#line 5923 "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 1292 "Zend/zend_language_scanner.l" +#line 1919 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSEIF); + RETURN_TOKEN(T_DIR); } -#line 6260 "Zend/zend_language_scanner.c" +#line 5947 "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 1320 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOR); -} -#line 6294 "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 1485 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STRING_CAST); +} +#line 5996 "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 1516 "Zend/zend_language_scanner.l" +#line 1493 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_GLOBAL); + RETURN_TOKEN(T_OBJECT_CAST); } -#line 6343 "Zend/zend_language_scanner.c" -yy586: - YYDEBUG(586, *YYCURSOR); +#line 6006 "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 1557 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ABSTRACT); +} +#line 6019 "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 1593 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CALLABLE); +} +#line 6032 "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 1389 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONTINUE); +} +#line 6045 "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 1552 "Zend/zend_language_scanner.l" +#line 1329 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PUBLIC); + RETURN_TOKEN(T_ENDWHILE); } -#line 6404 "Zend/zend_language_scanner.c" +#line 6076 "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 1258 "Zend/zend_language_scanner.l" +#line 1271 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_RETURN); + RETURN_TOKEN(T_FUNCTION); } -#line 6423 "Zend/zend_language_scanner.c" +#line 6089 "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 1532 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 6436 "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 1348 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 6449 "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 1915 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FILE); +} +#line 6161 "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 1468 "Zend/zend_language_scanner.l" +#line 1911 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ARRAY_CAST); + RETURN_TOKEN(T_LINE); } -#line 6533 "Zend/zend_language_scanner.c" +#line 6186 "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 1373 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDSWITCH); +} +#line 6227 "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 1480 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET_CAST); -} -#line 6583 "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 1533 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INSTEADOF); +} +#line 6258 "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 1332 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DECLARE); + RETURN_TOKEN(T_INTERFACE); } -#line 6614 "Zend/zend_language_scanner.c" -yy629: - YYDEBUG(629, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +#line 6271 "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 1360 "Zend/zend_language_scanner.l" +#line 1525 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DEFAULT); + RETURN_TOKEN(T_NAMESPACE); } -#line 6627 "Zend/zend_language_scanner.c" -yy631: - YYDEBUG(631, *YYCURSOR); +#line 6284 "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 1569 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PROTECTED); +} +#line 6297 "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 1396 "Zend/zend_language_scanner.l" +#line 1895 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EXTENDS); + RETURN_TOKEN(T_CLASS_C); } -#line 6664 "Zend/zend_language_scanner.c" +#line 6322 "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 1280 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINALLY); -} -#line 6677 "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 1324 "Zend/zend_language_scanner.l" +#line 1899 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FOREACH); + RETURN_TOKEN(T_TRAIT_C); } -#line 6690 "Zend/zend_language_scanner.c" -yy641: - YYDEBUG(641, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy680; - if (yych == 'n') goto yy680; - goto yy128; +#line 6358 "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 1357 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDDECLARE); +} +#line 6371 "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 1488 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE); + RETURN_TOKEN(T_ENDFOREACH); } -#line 6728 "Zend/zend_language_scanner.c" -yy645: - YYDEBUG(645, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy684; - if (yych == 'e') goto yy684; - goto yy128; +#line 6384 "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 1421 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IMPLEMENTS); +} +#line 6397 "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 1544 "Zend/zend_language_scanner.l" +#line 1361 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_PRIVATE); + RETURN_TOKEN(T_INSTANCEOF); } -#line 6765 "Zend/zend_language_scanner.c" +#line 6416 "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 1496 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 6797 "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 1898 "Zend/zend_language_scanner.l" +#line 1907 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_DIR); + RETURN_TOKEN(T_METHOD_C); } -#line 6821 "Zend/zend_language_scanner.c" +#line 6468 "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 1283 "Zend/zend_language_scanner.l" + { + yyless(yyleng - 1); + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_YIELD_FROM); +} +#line 6498 "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 1464 "Zend/zend_language_scanner.l" +#line 1513 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_STRING_CAST); + RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6870 "Zend/zend_language_scanner.c" +#line 6527 "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 1472 "Zend/zend_language_scanner.l" +#line 1521 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_OBJECT_CAST); + RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6880 "Zend/zend_language_scanner.c" +#line 6540 "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 1536 "Zend/zend_language_scanner.l" +#line 1903 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ABSTRACT); + RETURN_TOKEN(T_FUNC_C); } -#line 6893 "Zend/zend_language_scanner.c" +#line 6553 "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 1572 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CALLABLE); -} -#line 6906 "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 1368 "Zend/zend_language_scanner.l" +#line 1923 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CONTINUE); + RETURN_TOKEN(T_NS_C); } -#line 6919 "Zend/zend_language_scanner.c" -yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy701; - if (yych == 'r') goto yy701; - goto yy128; +#line 6583 "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 1308 "Zend/zend_language_scanner.l" +#line 1549 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDWHILE); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 6950 "Zend/zend_language_scanner.c" -yy680: - YYDEBUG(680, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +#line 6601 "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 1250 "Zend/zend_language_scanner.l" +#line 1443 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_FUNCTION); + yyless(0); + yy_pop_state(); + goto restart; } -#line 6963 "Zend/zend_language_scanner.c" -yy682: - YYDEBUG(682, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy705; - if (yych == 't') goto yy705; - goto yy128; +#line 6673 "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 1430 "Zend/zend_language_scanner.l" + { + goto return_whitespace; +} +#line 6689 "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 1438 "Zend/zend_language_scanner.l" + { + yy_pop_state(); + RETURN_TOKEN_WITH_STR(T_STRING, 0); +} +#line 6711 "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 1434 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OBJECT_OPERATOR); +} +#line 6721 "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 2493 "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 1894 "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 7035 "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 6819 "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 1890 "Zend/zend_language_scanner.l" +#line 2433 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LINE); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('`'); } -#line 7060 "Zend/zend_language_scanner.c" -yy698: - YYDEBUG(698, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy722; - goto yy128; +#line 6848 "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 2024 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 6873 "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 1352 "Zend/zend_language_scanner.l" +#line 1724 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ENDSWITCH); + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7101 "Zend/zend_language_scanner.c" +#line 6884 "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 2421 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); +} +#line 6896 "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 1512 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTEADOF); -} -#line 7132 "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 1388 "Zend/zend_language_scanner.l" +#line 2018 "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 7145 "Zend/zend_language_scanner.c" +#line 6916 "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 1504 "Zend/zend_language_scanner.l" +#line 2010 "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 7158 "Zend/zend_language_scanner.c" -yy714: +#line 6940 "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 1548 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PROTECTED); -} -#line 7171 "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 2439 "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 7046 "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 1874 "Zend/zend_language_scanner.l" +#line 2428 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_CLASS_C); + BEGIN(ST_IN_SCRIPTING); + RETURN_TOKEN('"'); } -#line 7196 "Zend/zend_language_scanner.c" +#line 7057 "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 1878 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT_C); -} -#line 7232 "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 1336 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 7245 "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 1328 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOREACH); -} -#line 7258 "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 1400 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 7271 "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 1340 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTANCEOF); -} -#line 7290 "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; - } + 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 1886 "Zend/zend_language_scanner.l" +#line 2024 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_METHOD_C); + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7342 "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 7100 "Zend/zend_language_scanner.c" +yy725: + YYDEBUG(725, *YYCURSOR); ++YYCURSOR; - YYDEBUG(745, *YYCURSOR); + YYDEBUG(726, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1724 "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 7372 "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 7111 "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 1492 "Zend/zend_language_scanner.l" +#line 2421 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INCLUDE_ONCE); + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 7401 "Zend/zend_language_scanner.c" -yy751: - YYDEBUG(751, *YYCURSOR); +#line 7123 "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 1500 "Zend/zend_language_scanner.l" +#line 2018 "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 7414 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 16) { - goto yy127; +#line 7143 "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 1882 "Zend/zend_language_scanner.l" +#line 2010 "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 7427 "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 7167 "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 1902 "Zend/zend_language_scanner.l" +#line 2539 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_C); -} -#line 7457 "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 - newline); + + if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) { + zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; + zend_string *copy = Z_STR_P(zendlval); + + if (!strip_multiline_string_indentation( + zendlval, heredoc_label->indentation, heredoc_label->indentation_uses_spaces, + newline_at_start, newline != 0)) { + RETURN_TOKEN(T_ERROR); + } + + if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS)) { + zend_string_efree(copy); + RETURN_TOKEN(T_ERROR); } - YYDEBUG(762, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_HALT_COMPILER); -} -#line 7475 "Zend/zend_language_scanner.c" + + zend_string_efree(copy); + } else { + HANDLE_NEWLINES(yytext, yyleng - newline); } -/* *********************************** */ -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 7336 "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 2024 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); +} +#line 7379 "Zend/zend_language_scanner.c" +yy745: + YYDEBUG(745, *YYCURSOR); ++YYCURSOR; -yy766: - YYDEBUG(766, *YYCURSOR); + YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1724 "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 7547 "Zend/zend_language_scanner.c" -yy767: - YYDEBUG(767, *YYCURSOR); +#line 7390 "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 1409 "Zend/zend_language_scanner.l" +#line 2421 "Zend/zend_language_scanner.l" { - goto return_whitespace; + yy_push_state(ST_IN_SCRIPTING); + yyless(1); + RETURN_TOKEN(T_CURLY_OPEN); } -#line 7563 "Zend/zend_language_scanner.c" -yy770: - YYDEBUG(770, *YYCURSOR); +#line 7402 "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 1417 "Zend/zend_language_scanner.l" +#line 2018 "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 7585 "Zend/zend_language_scanner.c" -yy774: - YYDEBUG(774, *YYCURSOR); +#line 7422 "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 1413 "Zend/zend_language_scanner.l" +#line 2010 "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 7595 "Zend/zend_language_scanner.c" +#line 7446 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7630,180 +7481,87 @@ yyc_ST_LOOKING_FOR_VARNAME: 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 1726 "Zend/zend_language_scanner.l" +#line 1747 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7659 "Zend/zend_language_scanner.c" -yy780: - YYDEBUG(780, *YYCURSOR); +#line 7510 "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 1718 "Zend/zend_language_scanner.l" +#line 1739 "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 7713 "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 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; - } - } - -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); + yy_pop_state(); + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7807 "Zend/zend_language_scanner.c" +#line 7564 "Zend/zend_language_scanner.c" + } /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7841,57 +7599,57 @@ yyc_ST_VAR_OFFSET: 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 2720 "Zend/zend_language_scanner.l" +#line 2748 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7900,13 +7658,13 @@ yy792: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7904 "Zend/zend_language_scanner.c" -yy794: - YYDEBUG(794, *YYCURSOR); +#line 7662 "Zend/zend_language_scanner.c" +yy770: + YYDEBUG(770, *YYCURSOR); ++YYCURSOR; - YYDEBUG(795, *YYCURSOR); + YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2017 "Zend/zend_language_scanner.l" +#line 2038 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7914,54 +7672,54 @@ yy794: ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7918 "Zend/zend_language_scanner.c" -yy796: - YYDEBUG(796, *YYCURSOR); +#line 7676 "Zend/zend_language_scanner.c" +yy772: + YYDEBUG(772, *YYCURSOR); ++YYCURSOR; -yy797: - YYDEBUG(797, *YYCURSOR); +yy773: + YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2012 "Zend/zend_language_scanner.l" +#line 2033 "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 7930 "Zend/zend_language_scanner.c" -yy798: - YYDEBUG(798, *YYCURSOR); +#line 7688 "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 1840 "Zend/zend_language_scanner.l" +#line 1861 "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; @@ -7977,85 +7735,85 @@ string: } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7981 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); +#line 7739 "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 2025 "Zend/zend_language_scanner.l" +#line 2046 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 8007 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); +#line 7765 "Zend/zend_language_scanner.c" +yy782: + YYDEBUG(782, *YYCURSOR); ++YYCURSOR; - YYDEBUG(807, *YYCURSOR); + YYDEBUG(783, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2007 "Zend/zend_language_scanner.l" +#line 2028 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 8018 "Zend/zend_language_scanner.c" -yy808: - YYDEBUG(808, *YYCURSOR); +#line 7776 "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 2003 "Zend/zend_language_scanner.l" +#line 2024 "Zend/zend_language_scanner.l" { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 8047 "Zend/zend_language_scanner.c" -yy811: - YYDEBUG(811, *YYCURSOR); +#line 7805 "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 1856 "Zend/zend_language_scanner.l" +#line 1877 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ if (yyleng == 1) { ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); @@ -8064,47 +7822,313 @@ yy813: } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 8068 "Zend/zend_language_scanner.c" -yy814: - YYDEBUG(814, *YYCURSOR); +#line 7826 "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 1959 "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 7923 "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 1947 "Zend/zend_language_scanner.l" + { + if (CG(short_tags)) { + BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + SKIP_TOKEN(T_OPEN_TAG); + } + RETURN_TOKEN(T_OPEN_TAG); + } else { + goto inline_char_handler; + } +} +#line 7951 "Zend/zend_language_scanner.c" +yy804: + YYDEBUG(804, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(805, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1928 "Zend/zend_language_scanner.l" + { + BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + RETURN_TOKEN(T_ECHO); + } + RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); +} +#line 7965 "Zend/zend_language_scanner.c" +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 1937 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINE(yytext[yyleng-1]); + BEGIN(ST_IN_SCRIPTING); + if (PARSER_MODE()) { + SKIP_TOKEN(T_OPEN_TAG); + } + RETURN_TOKEN(T_OPEN_TAG); +} +#line 8005 "Zend/zend_language_scanner.c" +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 2407 "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 8033 "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 2660 "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 - newline); + + if (!EG(exception) && spacing != -1 && PARSER_MODE()) { + zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; + if (!strip_multiline_string_indentation( + zendlval, indentation, spacing == HEREDOC_USING_SPACES, + newline_at_start, newline != 0)) { + RETURN_TOKEN(T_ERROR); } - goto yy813; } + + HANDLE_NEWLINES(yytext, yyleng - newline); + RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); +} +#line 8130 "Zend/zend_language_scanner.c" } -#line 2729 "Zend/zend_language_scanner.l" +#line 2757 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 78ae5f1d56..5005634dce 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1109,65 +1109,86 @@ skip_escape_conversion: #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) +static const char *next_newline(const char *str, const char *end, size_t *newline_len) { + for (; str < end; str++) { + if (*str == '\r') { + *newline_len = str + 1 < end && *(str + 1) == '\n' ? 2 : 1; + } else if (*str == '\n') { + *newline_len = 1; + return str; + } + } + *newline_len = 0; + return NULL; +} + +static zend_bool strip_multiline_string_indentation( + zval *zendlval, int indentation, zend_bool using_spaces, + zend_bool newline_at_start, zend_bool newline_at_end) { - int len = Z_STRLEN_P(zendlval), new_len = len, i = 0, j = 0, skip, newline_count = 0; + const char *str = Z_STRVAL_P(zendlval), *end = str + Z_STRLEN_P(zendlval); char *copy = Z_STRVAL_P(zendlval); - zend_bool trailing_newline = 0; - while (j < len) { - trailing_newline = 0; + int newline_count = 0; + size_t newline_len; + const char *nl; + + if (!newline_at_start) { + nl = next_newline(str, end, &newline_len); + if (!nl) { + return 1; + } + + str = nl + newline_len; + copy = (char *) nl + newline_len; + newline_count++; + } else { + nl = str; + } - for (skip = 0; skip < indentation; ++skip, ++j, --new_len) { - if (copy[j] == '\r' || copy[j] == '\n') { - goto skip; + /* <= intentional */ + while (str <= end && nl) { + size_t skip; + nl = next_newline(str, end, &newline_len); + if (!nl && newline_at_end) { + nl = end; + } + + /* Try to skip indentation */ + for (skip = 0; skip < indentation; skip++, str++) { + if (str == nl) { + /* Don't require full indentation on whitespace-only lines */ + break; } - if (copy[j] != ' ' && copy[j] != '\t') { + if (str == end || (*str != ' ' && *str != '\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); + 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')) { + if ((!using_spaces && *str == ' ') || (using_spaces && *str == '\t')) { CG(zend_lineno) += newline_count; - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); + zend_throw_exception(zend_ce_parse_error, + "Invalid indentation - tabs and spaces cannot be mixed", 0); goto error; } } - while (j < len && copy[j] != '\r' && copy[j] != '\n') { - copy[i++] = copy[j++]; - } - - if (j == len) { + if (str == end) { break; } -skip: - if (copy[j] == '\r') { - copy[i++] = copy[j++]; - trailing_newline = 1; - } - if (copy[j] == '\n') { - copy[i++] = copy[j++]; - trailing_newline = 1; - } - - if (trailing_newline) { - ++newline_count; - } + size_t len = nl ? (nl - str + newline_len) : (end - str); + memmove(copy, str, len); + str += len; + copy += len; + 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; - } - - Z_STRVAL_P(zendlval)[new_len - newline] = '\0'; - Z_STRLEN_P(zendlval) = new_len - newline; - + *copy = '\0'; + Z_STRLEN_P(zendlval) = copy - Z_STRVAL_P(zendlval); return 1; error: @@ -2610,12 +2631,15 @@ double_quotes_scan_done: heredoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng - newline); if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) { + zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; zend_string *copy = Z_STR_P(zendlval); - if (!strip_multiline_string_indentation(zendlval, newline, heredoc_label->indentation, heredoc_label->indentation_uses_spaces)) { + if (!strip_multiline_string_indentation( + zendlval, heredoc_label->indentation, heredoc_label->indentation_uses_spaces, + newline_at_start, newline != 0)) { RETURN_TOKEN(T_ERROR); } @@ -2705,11 +2729,15 @@ heredoc_scan_done: nowdoc_scan_done: yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng); + ZVAL_STRINGL(zendlval, yytext, yyleng - newline); - if (!EG(exception) && spacing != -1 && PARSER_MODE() - && !strip_multiline_string_indentation(zendlval, newline, indentation, spacing == HEREDOC_USING_SPACES)) { - RETURN_TOKEN(T_ERROR); + if (!EG(exception) && spacing != -1 && PARSER_MODE()) { + zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; + if (!strip_multiline_string_indentation( + zendlval, indentation, spacing == HEREDOC_USING_SPACES, + newline_at_start, newline != 0)) { + RETURN_TOKEN(T_ERROR); + } } HANDLE_NEWLINES(yytext, yyleng - newline); diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index c89b1bba45..3c01b5bc76 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.1 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE {