cvs: php-src /ext/standard/tests/strings highlight_file.phpt ZendEngine2 zend_language_scanner.c zend_language_scanner.l zend_language_scanner_defs.h
zend_stream.h

From: Date: Wed, 11 Mar 2009 22:11:41 +0000
Subject: cvs: php-src /ext/standard/tests/strings highlight_file.phpt ZendEngine2 zend_language_scanner.c zend_language_scanner.l zend_language_scanner_defs.h
zend_stream.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-56480@lists.php.net to get a copy of this message
shire Wed Mar 11 22:11:41 2009 UTC Modified files: /ZendEngine2 zend_language_scanner.c zend_language_scanner.l zend_language_scanner_defs.h zend_stream.h /php-src/ext/standard/tests/strings highlight_file.phpt Log: Add proper EOF handling for language scanner. Fixes bug #46817. Removes dos newlines from a previous commit.

http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.c?r1=1.21&r2=1.22&diff_format=u Index: ZendEngine2/zend_language_scanner.c diff -u ZendEngine2/zend_language_scanner.c:1.21 ZendEngine2/zend_language_scanner.c:1.22 --- ZendEngine2/zend_language_scanner.c:1.21 Fri Jan 9 17:20:57 2009 +++ ZendEngine2/zend_language_scanner.c Wed Mar 11 22:11:41 2009 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Tue Dec 2 17:02:51 2008 */ +/* Generated by re2c 0.13.5 on Wed Mar 11 14:39:25 2009 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -23,7 +23,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_language_scanner.c,v 1.21 2009/01/09 17:20:57 iliaa Exp $ */ +/* $Id: zend_language_scanner.c,v 1.22 2009/03/11 22:11:41 shire Exp $ */ #if 0 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) @@ -50,7 +50,7 @@ #include "tsrm_config_common.h" #define YYCTYPE unsigned char -#define YYFILL(n) { if (YYCURSOR >= YYLIMIT) return 0; } +#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { zend_error(E_COMPILE_ERROR, "Exceeded YYLIMIT bounds during scanning. Please report this."); return 0; } } #define YYCURSOR SCNG(yy_cursor) #define YYLIMIT SCNG(yy_limit) #define YYMARKER SCNG(yy_marker) @@ -1329,38 +1329,8 @@ yymore_restart: - /* detect EOF */ - if (YYCURSOR >= YYLIMIT) { - /* special case */ - if (YYSTATE == STATE(ST_COMMENT) || YYSTATE == STATE(ST_DOC_COMMENT)) { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - return 0; - } - - /* ignore first line when it's started with a #! */ - if (YYCURSOR == SCNG(yy_start) && *YYCURSOR == '#' && *(YYCURSOR + 1) == '!') { - while (++YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\n') { - ++YYCURSOR; - CG(zend_lineno)++; - goto restart; - } - - if (*YYCURSOR == '\r') { - if (++YYCURSOR < YYLIMIT && *YYCURSOR == '\n') { /* match \r\n as single newline */ - ++YYCURSOR; - } - CG(zend_lineno)++; - goto restart; - } - } - - return 0; /* EOF */ - } - -#line 1364 "Zend/zend_language_scanner.c" +#line 1334 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1454,24 +1424,35 @@ YYDEBUG(0, *YYCURSOR); YYFILL(8); yych = *YYCURSOR; - if (yych != '<') goto yy4; + if (yych <= 0x00) goto yy2; + if (yych == '<') goto yy4; + goto yy6; +yy2: YYDEBUG(2, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(3, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 1438 "Zend/zend_language_scanner.c" +yy4: + YYDEBUG(4, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '?') { - if (yych == '%') goto yy7; - if (yych >= '?') goto yy5; + if (yych == '%') goto yy9; + if (yych >= '?') goto yy7; } else { if (yych <= 'S') { - if (yych >= 'S') goto yy9; + if (yych >= 'S') goto yy11; } else { - if (yych == 's') goto yy9; + if (yych == 's') goto yy11; } } -yy3: - YYDEBUG(3, *YYCURSOR); +yy5: + YYDEBUG(5, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2169 "Zend/zend_language_scanner.l" +#line 2140 "Zend/zend_language_scanner.l" { inline_char_handler: @@ -1502,25 +1483,25 @@ HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1506 "Zend/zend_language_scanner.c" -yy4: - YYDEBUG(4, *YYCURSOR); +#line 1487 "Zend/zend_language_scanner.c" +yy6: + YYDEBUG(6, *YYCURSOR); yych = *++YYCURSOR; - goto yy3; -yy5: - YYDEBUG(5, *YYCURSOR); + goto yy5; +yy7: + YYDEBUG(7, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'O') { - if (yych == '=') goto yy45; + if (yych == '=') goto yy47; } else { - if (yych <= 'P') goto yy47; - if (yych == 'p') goto yy47; + if (yych <= 'P') goto yy49; + if (yych == 'p') goto yy49; } -yy6: - YYDEBUG(6, *YYCURSOR); +yy8: + YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2157 "Zend/zend_language_scanner.l" +#line 2128 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1532,14 +1513,14 @@ goto inline_char_handler; } } -#line 1536 "Zend/zend_language_scanner.c" -yy7: - YYDEBUG(7, *YYCURSOR); +#line 1517 "Zend/zend_language_scanner.c" +yy9: + YYDEBUG(9, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy43; - YYDEBUG(8, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy45; + YYDEBUG(10, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2134 "Zend/zend_language_scanner.l" +#line 2105 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1551,193 +1532,193 @@ goto inline_char_handler; } } -#line 1555 "Zend/zend_language_scanner.c" -yy9: - YYDEBUG(9, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy11; - if (yych == 'c') goto yy11; -yy10: - YYDEBUG(10, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 0) { - goto yy3; - } else { - goto yy6; - } +#line 1536 "Zend/zend_language_scanner.c" yy11: YYDEBUG(11, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy12; - if (yych != 'r') goto yy10; + if (yych == 'C') goto yy13; + if (yych == 'c') goto yy13; yy12: YYDEBUG(12, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy13; - if (yych != 'i') goto yy10; + YYCURSOR = YYMARKER; + if (yyaccept <= 0) { + goto yy5; + } else { + goto yy8; + } yy13: YYDEBUG(13, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy14; - if (yych != 'p') goto yy10; + if (yych == 'R') goto yy14; + if (yych != 'r') goto yy12; yy14: YYDEBUG(14, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy15; - if (yych != 't') goto yy10; + if (yych == 'I') goto yy15; + if (yych != 'i') goto yy12; yy15: YYDEBUG(15, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy10; - if (yych == 'l') goto yy10; - goto yy17; + if (yych == 'P') goto yy16; + if (yych != 'p') goto yy12; yy16: YYDEBUG(16, *YYCURSOR); - ++YYCURSOR; - YYFILL(8); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'T') goto yy17; + if (yych != 't') goto yy12; yy17: YYDEBUG(17, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy16; - } - if (yych == 'L') goto yy18; - if (yych != 'l') goto yy10; + yych = *++YYCURSOR; + if (yych == 'L') goto yy12; + if (yych == 'l') goto yy12; + goto yy19; yy18: YYDEBUG(18, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy19; - if (yych != 'a') goto yy10; + ++YYCURSOR; + YYFILL(8); + yych = *YYCURSOR; yy19: YYDEBUG(19, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy20; - if (yych != 'n') goto yy10; + if (yybm[0+yych] & 128) { + goto yy18; + } + if (yych == 'L') goto yy20; + if (yych != 'l') goto yy12; yy20: YYDEBUG(20, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy21; - if (yych != 'g') goto yy10; + if (yych == 'A') goto yy21; + if (yych != 'a') goto yy12; yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy22; - if (yych != 'u') goto yy10; + if (yych == 'N') goto yy22; + if (yych != 'n') goto yy12; yy22: YYDEBUG(22, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy23; - if (yych != 'a') goto yy10; + if (yych == 'G') goto yy23; + if (yych != 'g') goto yy12; yy23: YYDEBUG(23, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy24; - if (yych != 'g') goto yy10; + if (yych == 'U') goto yy24; + if (yych != 'u') goto yy12; yy24: YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy25; - if (yych != 'e') goto yy10; + if (yych == 'A') goto yy25; + if (yych != 'a') goto yy12; yy25: YYDEBUG(25, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy26; + if (yych != 'g') goto yy12; +yy26: + YYDEBUG(26, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy27; + if (yych != 'e') goto yy12; +yy27: + YYDEBUG(27, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(26, *YYCURSOR); + YYDEBUG(28, *YYCURSOR); if (yych <= '\r') { - if (yych <= 0x08) goto yy10; - if (yych <= '\n') goto yy25; - if (yych <= '\f') goto yy10; - goto yy25; + if (yych <= 0x08) goto yy12; + if (yych <= '\n') goto yy27; + if (yych <= '\f') goto yy12; + goto yy27; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy10; - goto yy25; + if (yych <= 0x1F) goto yy12; + goto yy27; } else { - if (yych != '=') goto yy10; + if (yych != '=') goto yy12; } } -yy27: - YYDEBUG(27, *YYCURSOR); +yy29: + YYDEBUG(29, *YYCURSOR); ++YYCURSOR; YYFILL(5); yych = *YYCURSOR; - YYDEBUG(28, *YYCURSOR); + YYDEBUG(30, *YYCURSOR); if (yych <= '!') { if (yych <= '\f') { - if (yych <= 0x08) goto yy10; - if (yych <= '\n') goto yy27; - goto yy10; - } else { - if (yych <= '\r') goto yy27; - if (yych == ' ') goto yy27; - goto yy10; + if (yych <= 0x08) goto yy12; + if (yych <= '\n') goto yy29; + goto yy12; + } else { + if (yych <= '\r') goto yy29; + if (yych == ' ') goto yy29; + goto yy12; } } else { if (yych <= 'O') { - if (yych <= '"') goto yy30; - if (yych == '\'') goto yy31; - goto yy10; + if (yych <= '"') goto yy32; + if (yych == '\'') goto yy33; + goto yy12; } else { - if (yych <= 'P') goto yy29; - if (yych != 'p') goto yy10; + if (yych <= 'P') goto yy31; + if (yych != 'p') goto yy12; } } -yy29: - YYDEBUG(29, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy42; - if (yych == 'h') goto yy42; - goto yy10; -yy30: - YYDEBUG(30, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy39; - if (yych == 'p') goto yy39; - goto yy10; yy31: YYDEBUG(31, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy32; - if (yych != 'p') goto yy10; + if (yych == 'H') goto yy44; + if (yych == 'h') goto yy44; + goto yy12; yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy33; - if (yych != 'h') goto yy10; + if (yych == 'P') goto yy41; + if (yych == 'p') goto yy41; + goto yy12; yy33: YYDEBUG(33, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'P') goto yy34; - if (yych != 'p') goto yy10; + if (yych != 'p') goto yy12; yy34: YYDEBUG(34, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '\'') goto yy10; + if (yych == 'H') goto yy35; + if (yych != 'h') goto yy12; yy35: YYDEBUG(35, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy36; + if (yych != 'p') goto yy12; +yy36: + YYDEBUG(36, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '\'') goto yy12; +yy37: + YYDEBUG(37, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(36, *YYCURSOR); + YYDEBUG(38, *YYCURSOR); if (yych <= '\r') { - if (yych <= 0x08) goto yy10; - if (yych <= '\n') goto yy35; - if (yych <= '\f') goto yy10; - goto yy35; + if (yych <= 0x08) goto yy12; + if (yych <= '\n') goto yy37; + if (yych <= '\f') goto yy12; + goto yy37; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy10; - goto yy35; + if (yych <= 0x1F) goto yy12; + goto yy37; } else { - if (yych != '>') goto yy10; + if (yych != '>') goto yy12; } } - YYDEBUG(37, *YYCURSOR); + YYDEBUG(39, *YYCURSOR); ++YYCURSOR; - YYDEBUG(38, *YYCURSOR); + YYDEBUG(40, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2099 "Zend/zend_language_scanner.l" +#line 2070 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1746,34 +1727,34 @@ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1750 "Zend/zend_language_scanner.c" -yy39: - YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy40; - if (yych != 'h') goto yy10; -yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy41; - if (yych != 'p') goto yy10; +#line 1731 "Zend/zend_language_scanner.c" yy41: YYDEBUG(41, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '"') goto yy35; - goto yy10; + if (yych == 'H') goto yy42; + if (yych != 'h') goto yy12; yy42: YYDEBUG(42, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy35; - if (yych == 'p') goto yy35; - goto yy10; + if (yych == 'P') goto yy43; + if (yych != 'p') goto yy12; yy43: YYDEBUG(43, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '"') goto yy37; + goto yy12; +yy44: YYDEBUG(44, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy37; + if (yych == 'p') goto yy37; + goto yy12; +yy45: + YYDEBUG(45, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2108 "Zend/zend_language_scanner.l" +#line 2079 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1785,13 +1766,13 @@ goto inline_char_handler; } } -#line 1789 "Zend/zend_language_scanner.c" -yy45: - YYDEBUG(45, *YYCURSOR); +#line 1770 "Zend/zend_language_scanner.c" +yy47: + YYDEBUG(47, *YYCURSOR); ++YYCURSOR; - YYDEBUG(46, *YYCURSOR); + YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2121 "Zend/zend_language_scanner.l" +#line 2092 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1803,34 +1784,34 @@ goto inline_char_handler; } } -#line 1807 "Zend/zend_language_scanner.c" -yy47: - YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy48; - if (yych != 'h') goto yy10; -yy48: - YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy49; - if (yych != 'p') goto yy10; +#line 1788 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy10; - if (yych >= '\v') goto yy10; - } else { - if (yych <= '\r') goto yy52; - if (yych != ' ') goto yy10; - } + if (yych == 'H') goto yy50; + if (yych != 'h') goto yy12; yy50: YYDEBUG(50, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'P') goto yy51; + if (yych != 'p') goto yy12; yy51: YYDEBUG(51, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy12; + if (yych >= '\v') goto yy12; + } else { + if (yych <= '\r') goto yy54; + if (yych != ' ') goto yy12; + } +yy52: + YYDEBUG(52, *YYCURSOR); + ++YYCURSOR; +yy53: + YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2147 "Zend/zend_language_scanner.l" +#line 2118 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -1839,18 +1820,18 @@ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1843 "Zend/zend_language_scanner.c" -yy52: - YYDEBUG(52, *YYCURSOR); +#line 1824 "Zend/zend_language_scanner.c" +yy54: + YYDEBUG(54, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy50; - goto yy51; + if ((yych = *YYCURSOR) == '\n') goto yy52; + goto yy53; } /* *********************************** */ yyc_ST_BACKQUOTE: { static const unsigned char yybm[] = { - 16, 16, 16, 16, 16, 16, 16, 16, + 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, @@ -1883,78 +1864,109 @@ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, }; - YYDEBUG(53, *YYCURSOR); + YYDEBUG(55, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy58; + goto yy63; } - if (yych <= '[') goto yy55; - if (yych <= '\\') goto yy61; - if (yych <= 'z') goto yy62; - goto yy56; -yy55: - YYDEBUG(55, *YYCURSOR); + if (yych <= 0x00) goto yy57; + if (yych <= '[') goto yy59; + if (yych <= '\\') goto yy66; + if (yych <= 'z') goto yy67; + goto yy61; +yy57: + YYDEBUG(57, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(58, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 1886 "Zend/zend_language_scanner.c" +yy59: + YYDEBUG(59, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 32) { - goto yy68; + goto yy72; } if (yych <= '^') { if (yych <= 'Z') { - if (yych <= '@') goto yy58; - goto yy74; + if (yych <= 0x00) goto yy60; + if (yych <= '@') goto yy63; + goto yy78; } else { - if (yych == '\\') goto yy67; - goto yy58; + if (yych == '\\') goto yy71; + goto yy63; } } else { if (yych <= 'z') { - if (yych == '`') goto yy71; - goto yy74; + if (yych == '`') goto yy75; + goto yy78; + } else { + if (yych <= '{') goto yy81; + if (yych <= '~') goto yy63; + goto yy78; + } + } +yy60: + YYDEBUG(60, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 1) { + if (yyaccept <= 0) { + goto yy62; } else { - if (yych <= '{') goto yy77; - if (yych <= '~') goto yy58; + goto yy65; + } + } else { + if (yyaccept <= 2) { goto yy74; + } else { + goto yy80; } } -yy56: - YYDEBUG(56, *YYCURSOR); +yy61: + YYDEBUG(61, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { - goto yy72; + goto yy76; } - if (yych == '$') goto yy57; - if (yych == '`') goto yy71; - goto yy59; -yy57: - YYDEBUG(57, *YYCURSOR); + if (yych <= '$') { + if (yych <= 0x00) goto yy62; + if (yych <= '#') goto yy64; + } else { + if (yych == '`') goto yy75; + goto yy64; + } +yy62: + YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2545 "Zend/zend_language_scanner.l" +#line 2521 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 1940 "Zend/zend_language_scanner.c" -yy58: - YYDEBUG(58, *YYCURSOR); +#line 1951 "Zend/zend_language_scanner.c" +yy63: + YYDEBUG(63, *YYCURSOR); yyaccept = 1; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy59: - YYDEBUG(59, *YYCURSOR); +yy64: + YYDEBUG(64, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy58; + goto yy63; } - if (yych <= '[') goto yy66; - if (yych <= '\\') goto yy61; - if (yych >= '{') goto yy64; -yy60: - YYDEBUG(60, *YYCURSOR); + if (yych <= 0x00) goto yy65; + if (yych <= '[') goto yy70; + if (yych <= '\\') goto yy66; + if (yych >= '{') goto yy69; +yy65: + YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2579 "Zend/zend_language_scanner.l" +#line 2555 "Zend/zend_language_scanner.l" { if (CG(literal_type) == IS_UNICODE) { return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); @@ -1963,112 +1975,102 @@ return T_ENCAPSED_AND_WHITESPACE; } } -#line 1967 "Zend/zend_language_scanner.c" -yy61: - YYDEBUG(61, *YYCURSOR); +#line 1979 "Zend/zend_language_scanner.c" +yy66: + YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy58; -yy62: - YYDEBUG(62, *YYCURSOR); + if (yych <= 0x00) goto yy60; + goto yy63; +yy67: + YYDEBUG(67, *YYCURSOR); ++YYCURSOR; - YYDEBUG(63, *YYCURSOR); + YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2676 "Zend/zend_language_scanner.l" +#line 2652 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1984 "Zend/zend_language_scanner.c" -yy64: - YYDEBUG(64, *YYCURSOR); +#line 1997 "Zend/zend_language_scanner.c" +yy69: + YYDEBUG(69, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy58; - } - if (yych <= '[') goto yy65; - if (yych <= '\\') goto yy61; - if (yych <= 'z') goto yy71; - goto yy72; -yy65: - YYDEBUG(65, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy57; - } else { - goto yy60; - } - } else { - if (yyaccept <= 2) { - goto yy70; - } else { - goto yy76; - } + goto yy63; } -yy66: - YYDEBUG(66, *YYCURSOR); + if (yych <= '[') goto yy60; + if (yych <= '\\') goto yy66; + if (yych <= 'z') goto yy75; + goto yy76; +yy70: + YYDEBUG(70, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { - goto yy68; + goto yy72; } - if (yych <= '^') { - if (yych <= 'Z') { - if (yych <= '@') goto yy58; - goto yy65; + if (yych <= '\\') { + if (yych <= '@') { + if (yych <= 0x00) goto yy60; + goto yy63; } else { - if (yych != '\\') goto yy58; + if (yych <= 'Z') goto yy60; + if (yych <= '[') goto yy63; } } else { if (yych <= '`') { - if (yych <= '_') goto yy65; - goto yy71; + if (yych <= '^') goto yy63; + if (yych <= '_') goto yy60; + goto yy75; } else { - if (yych <= '{') goto yy65; - if (yych <= '~') goto yy58; - goto yy65; + if (yych <= '{') goto yy60; + if (yych <= '~') goto yy63; + goto yy60; } } -yy67: - YYDEBUG(67, *YYCURSOR); +yy71: + YYDEBUG(71, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy58; -yy68: - YYDEBUG(68, *YYCURSOR); + if (yych <= 0x00) goto yy60; + goto yy63; +yy72: + YYDEBUG(72, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(69, *YYCURSOR); + YYDEBUG(73, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy68; + goto yy72; } - if (yych <= '^') { - if (yych <= 'Z') { - if (yych <= '@') goto yy58; + if (yych <= '\\') { + if (yych <= '@') { + if (yych >= 0x01) goto yy63; } else { - if (yych == '\\') goto yy67; - goto yy58; + if (yych <= 'Z') goto yy74; + if (yych <= '[') goto yy63; + goto yy71; } } else { if (yych <= '`') { - if (yych >= '`') goto yy71; + if (yych <= '^') goto yy63; + if (yych >= '`') goto yy75; } else { - if (yych <= '{') goto yy70; - if (yych <= '~') goto yy58; + if (yych <= '{') goto yy74; + if (yych <= '~') goto yy63; } } -yy70: - YYDEBUG(70, *YYCURSOR); +yy74: + YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2588 "Zend/zend_language_scanner.l" +#line 2564 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); @@ -2079,41 +2081,41 @@ return T_ENCAPSED_AND_WHITESPACE; } } -#line 2083 "Zend/zend_language_scanner.c" -yy71: - YYDEBUG(71, *YYCURSOR); +#line 2085 "Zend/zend_language_scanner.c" +yy75: + YYDEBUG(75, *YYCURSOR); yych = *++YYCURSOR; - goto yy70; -yy72: - YYDEBUG(72, *YYCURSOR); + goto yy74; +yy76: + YYDEBUG(76, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(73, *YYCURSOR); + YYDEBUG(77, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy58; + goto yy63; } - if (yych <= '[') goto yy70; - if (yych <= '\\') goto yy61; - if (yych <= 'z') goto yy71; - goto yy72; -yy74: - YYDEBUG(74, *YYCURSOR); + if (yych <= '[') goto yy74; + if (yych <= '\\') goto yy66; + if (yych <= 'z') goto yy75; + goto yy76; +yy78: + YYDEBUG(78, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(75, *YYCURSOR); + YYDEBUG(79, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy74; + goto yy78; } - if (yych == '-') goto yy79; - if (yych == '[') goto yy80; -yy76: - YYDEBUG(76, *YYCURSOR); + if (yych == '-') goto yy83; + if (yych == '[') goto yy84; +yy80: + YYDEBUG(80, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2231 "Zend/zend_language_scanner.l" +#line 2202 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -2123,29 +2125,29 @@ } return T_VARIABLE; } -#line 2127 "Zend/zend_language_scanner.c" -yy77: - YYDEBUG(77, *YYCURSOR); +#line 2129 "Zend/zend_language_scanner.c" +yy81: + YYDEBUG(81, *YYCURSOR); ++YYCURSOR; - YYDEBUG(78, *YYCURSOR); + YYDEBUG(82, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1835 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2138 "Zend/zend_language_scanner.c" -yy79: - YYDEBUG(79, *YYCURSOR); +#line 2140 "Zend/zend_language_scanner.c" +yy83: + YYDEBUG(83, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy82; - goto yy65; -yy80: - YYDEBUG(80, *YYCURSOR); + if (yych == '>') goto yy86; + goto yy60; +yy84: + YYDEBUG(84, *YYCURSOR); ++YYCURSOR; - YYDEBUG(81, *YYCURSOR); + YYDEBUG(85, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2218 "Zend/zend_language_scanner.l" +#line 2189 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2158,25 +2160,25 @@ } return T_VARIABLE; } -#line 2162 "Zend/zend_language_scanner.c" -yy82: - YYDEBUG(82, *YYCURSOR); +#line 2164 "Zend/zend_language_scanner.c" +yy86: + YYDEBUG(86, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy65; - if (yych <= 'Z') goto yy83; - if (yych <= '^') goto yy65; - } else { - if (yych <= '`') goto yy65; - if (yych <= 'z') goto yy83; - if (yych <= '~') goto yy65; + if (yych <= '@') goto yy60; + if (yych <= 'Z') goto yy87; + if (yych <= '^') goto yy60; + } else { + if (yych <= '`') goto yy60; + if (yych <= 'z') goto yy87; + if (yych <= '~') goto yy60; } -yy83: - YYDEBUG(83, *YYCURSOR); +yy87: + YYDEBUG(87, *YYCURSOR); ++YYCURSOR; - YYDEBUG(84, *YYCURSOR); + YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "Zend/zend_language_scanner.l" +#line 2174 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2189,13 +2191,13 @@ } return T_VARIABLE; } -#line 2193 "Zend/zend_language_scanner.c" +#line 2195 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_COMMENT: { static const unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 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, 128, 128, 128, 128, 128, @@ -2228,58 +2230,68 @@ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(85, *YYCURSOR); + YYDEBUG(89, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy87; + goto yy93; } - goto yy90; -yy87: - YYDEBUG(87, *YYCURSOR); + if (yych >= 0x01) goto yy96; + YYDEBUG(91, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(92, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2303 "Zend/zend_language_scanner.l" + { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + return 0; +} +#line 2250 "Zend/zend_language_scanner.c" +yy93: + YYDEBUG(93, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(88, *YYCURSOR); + YYDEBUG(94, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy87; + goto yy93; } - YYDEBUG(89, *YYCURSOR); + YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2338 "Zend/zend_language_scanner.l" +#line 2314 "Zend/zend_language_scanner.l" { yymore(); } -#line 2254 "Zend/zend_language_scanner.c" -yy90: - YYDEBUG(90, *YYCURSOR); +#line 2266 "Zend/zend_language_scanner.c" +yy96: + YYDEBUG(96, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '/') goto yy92; - YYDEBUG(91, *YYCURSOR); + if ((yych = *YYCURSOR) == '/') goto yy98; + YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2361 "Zend/zend_language_scanner.l" +#line 2337 "Zend/zend_language_scanner.l" { yymore(); } -#line 2265 "Zend/zend_language_scanner.c" -yy92: - YYDEBUG(92, *YYCURSOR); +#line 2277 "Zend/zend_language_scanner.c" +yy98: + YYDEBUG(98, *YYCURSOR); ++YYCURSOR; - YYDEBUG(93, *YYCURSOR); + YYDEBUG(99, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2355 "Zend/zend_language_scanner.l" +#line 2331 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); BEGIN(ST_IN_SCRIPTING); return T_COMMENT; } -#line 2277 "Zend/zend_language_scanner.c" +#line 2289 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOC_COMMENT: { static const unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 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, 128, 128, 128, 128, 128, @@ -2312,46 +2324,56 @@ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(94, *YYCURSOR); + YYDEBUG(100, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy96; + goto yy104; } - goto yy99; -yy96: - YYDEBUG(96, *YYCURSOR); + if (yych >= 0x01) goto yy107; + YYDEBUG(102, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(103, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2303 "Zend/zend_language_scanner.l" + { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + return 0; +} +#line 2344 "Zend/zend_language_scanner.c" +yy104: + YYDEBUG(104, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(97, *YYCURSOR); + YYDEBUG(105, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy96; + goto yy104; } - YYDEBUG(98, *YYCURSOR); + YYDEBUG(106, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2338 "Zend/zend_language_scanner.l" +#line 2314 "Zend/zend_language_scanner.l" { yymore(); } -#line 2338 "Zend/zend_language_scanner.c" -yy99: - YYDEBUG(99, *YYCURSOR); +#line 2360 "Zend/zend_language_scanner.c" +yy107: + YYDEBUG(107, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '/') goto yy101; - YYDEBUG(100, *YYCURSOR); + if ((yych = *YYCURSOR) == '/') goto yy109; + YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2361 "Zend/zend_language_scanner.l" +#line 2337 "Zend/zend_language_scanner.l" { yymore(); } -#line 2349 "Zend/zend_language_scanner.c" -yy101: - YYDEBUG(101, *YYCURSOR); +#line 2371 "Zend/zend_language_scanner.c" +yy109: + YYDEBUG(109, *YYCURSOR); ++YYCURSOR; - YYDEBUG(102, *YYCURSOR); + YYDEBUG(110, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2342 "Zend/zend_language_scanner.l" +#line 2318 "Zend/zend_language_scanner.l" { zval temp; @@ -2364,13 +2386,13 @@ BEGIN(ST_IN_SCRIPTING); return T_DOC_COMMENT; } -#line 2368 "Zend/zend_language_scanner.c" +#line 2390 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: { static const unsigned char yybm[] = { - 16, 16, 16, 16, 16, 16, 16, 16, + 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, @@ -2403,80 +2425,112 @@ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, }; - YYDEBUG(103, *YYCURSOR); + YYDEBUG(111, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy108; + goto yy119; } - if (yych <= '#') goto yy112; - if (yych <= '$') goto yy105; - if (yych <= 'z') goto yy111; - goto yy106; -yy105: - YYDEBUG(105, *YYCURSOR); + if (yych <= 0x00) goto yy113; + if (yych <= '#') goto yy123; + if (yych <= '$') goto yy115; + if (yych <= 'z') goto yy122; + goto yy117; +yy113: + YYDEBUG(113, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(114, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 2447 "Zend/zend_language_scanner.c" +yy115: + YYDEBUG(115, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 32) { - goto yy118; + goto yy128; } if (yych <= '\\') { - if (yych <= '@') { - if (yych == '"') goto yy121; - goto yy108; - } else { - if (yych <= 'Z') goto yy124; - if (yych <= '[') goto yy108; - goto yy117; + if (yych <= '"') { + if (yych <= 0x00) goto yy116; + if (yych <= '!') goto yy119; + goto yy131; + } else { + if (yych <= '@') goto yy119; + if (yych <= 'Z') goto yy134; + if (yych <= '[') goto yy119; + goto yy127; } } else { if (yych <= '`') { - if (yych == '_') goto yy124; - goto yy108; + if (yych == '_') goto yy134; + goto yy119; } else { - if (yych <= 'z') goto yy124; - if (yych <= '{') goto yy127; - if (yych <= '~') goto yy108; - goto yy124; + if (yych <= 'z') goto yy134; + if (yych <= '{') goto yy137; + if (yych <= '~') goto yy119; + goto yy134; } } -yy106: - YYDEBUG(106, *YYCURSOR); +yy116: + YYDEBUG(116, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 1) { + if (yyaccept <= 0) { + goto yy118; + } else { + goto yy121; + } + } else { + if (yyaccept <= 2) { + goto yy130; + } else { + goto yy136; + } + } +yy117: + YYDEBUG(117, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { - goto yy122; + goto yy132; } - if (yych == '"') goto yy121; - if (yych != '$') goto yy109; -yy107: - YYDEBUG(107, *YYCURSOR); + if (yych <= '"') { + if (yych <= 0x00) goto yy118; + if (yych <= '!') goto yy120; + goto yy131; + } else { + if (yych != '$') goto yy120; + } +yy118: + YYDEBUG(118, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2545 "Zend/zend_language_scanner.l" +#line 2521 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 2461 "Zend/zend_language_scanner.c" -yy108: - YYDEBUG(108, *YYCURSOR); +#line 2515 "Zend/zend_language_scanner.c" +yy119: + YYDEBUG(119, *YYCURSOR); yyaccept = 1; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy109: - YYDEBUG(109, *YYCURSOR); +yy120: + YYDEBUG(120, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy108; + goto yy119; } - if (yych <= '#') goto yy110; - if (yych <= '$') goto yy116; - if (yych <= 'z') goto yy111; - goto yy114; -yy110: - YYDEBUG(110, *YYCURSOR); + if (yych <= '#') goto yy121; + if (yych <= '$') goto yy126; + if (yych <= 'z') goto yy122; + goto yy125; +yy121: + YYDEBUG(121, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2552 "Zend/zend_language_scanner.l" +#line 2528 "Zend/zend_language_scanner.l" { if (CG(literal_type) == IS_UNICODE) { return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); @@ -2485,115 +2539,108 @@ return T_ENCAPSED_AND_WHITESPACE; } } -#line 2489 "Zend/zend_language_scanner.c" -yy111: - YYDEBUG(111, *YYCURSOR); +#line 2543 "Zend/zend_language_scanner.c" +yy122: + YYDEBUG(122, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy108; -yy112: - YYDEBUG(112, *YYCURSOR); + if (yych <= 0x00) goto yy116; + goto yy119; +yy123: + YYDEBUG(123, *YYCURSOR); ++YYCURSOR; - YYDEBUG(113, *YYCURSOR); + YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2670 "Zend/zend_language_scanner.l" +#line 2646 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2506 "Zend/zend_language_scanner.c" -yy114: - YYDEBUG(114, *YYCURSOR); +#line 2561 "Zend/zend_language_scanner.c" +yy125: + YYDEBUG(125, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy108; - } - if (yych <= '#') goto yy121; - if (yych <= '$') goto yy115; - if (yych <= 'z') goto yy111; - goto yy122; -yy115: - YYDEBUG(115, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy107; - } else { - goto yy110; - } - } else { - if (yyaccept <= 2) { - goto yy120; - } else { - goto yy126; - } + goto yy119; } -yy116: - YYDEBUG(116, *YYCURSOR); + if (yych <= 0x00) goto yy116; + if (yych <= '#') goto yy131; + if (yych <= '$') goto yy116; + if (yych <= 'z') goto yy122; + goto yy132; +yy126: + YYDEBUG(126, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { - goto yy118; + goto yy128; } - if (yych <= '\\') { - if (yych <= '@') { - if (yych == '"') goto yy121; - goto yy108; - } else { - if (yych <= 'Z') goto yy115; - if (yych <= '[') goto yy108; + if (yych <= '[') { + if (yych <= '"') { + if (yych <= 0x00) goto yy116; + if (yych <= '!') goto yy119; + goto yy131; + } else { + if (yych <= '@') goto yy119; + if (yych <= 'Z') goto yy116; + goto yy119; } } else { - if (yych <= '`') { - if (yych == '_') goto yy115; - goto yy108; - } else { - if (yych <= '{') goto yy115; - if (yych <= '~') goto yy108; - goto yy115; + if (yych <= '_') { + if (yych <= '\\') goto yy127; + if (yych <= '^') goto yy119; + goto yy116; + } else { + if (yych <= '`') goto yy119; + if (yych <= '{') goto yy116; + if (yych <= '~') goto yy119; + goto yy116; } } -yy117: - YYDEBUG(117, *YYCURSOR); +yy127: + YYDEBUG(127, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy108; -yy118: - YYDEBUG(118, *YYCURSOR); + if (yych <= 0x00) goto yy116; + goto yy119; +yy128: + YYDEBUG(128, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(119, *YYCURSOR); + YYDEBUG(129, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy118; + goto yy128; } - if (yych <= '\\') { - if (yych <= '@') { - if (yych == '"') goto yy121; - goto yy108; + if (yych <= '[') { + if (yych <= '"') { + if (yych <= 0x00) goto yy130; + if (yych <= '!') goto yy119; + goto yy131; } else { - if (yych <= 'Z') goto yy120; - if (yych <= '[') goto yy108; - goto yy117; + if (yych <= '@') goto yy119; + if (yych >= '[') goto yy119; } } else { - if (yych <= '`') { - if (yych != '_') goto yy108; + if (yych <= '_') { + if (yych <= '\\') goto yy127; + if (yych <= '^') goto yy119; } else { - if (yych <= '{') goto yy120; - if (yych <= '~') goto yy108; + if (yych <= '`') goto yy119; + if (yych <= '{') goto yy130; + if (yych <= '~') goto yy119; } } -yy120: - YYDEBUG(120, *YYCURSOR); +yy130: + YYDEBUG(130, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2567 "Zend/zend_language_scanner.l" +#line 2543 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); @@ -2604,41 +2651,42 @@ return T_ENCAPSED_AND_WHITESPACE; } } -#line 2608 "Zend/zend_language_scanner.c" -yy121: - YYDEBUG(121, *YYCURSOR); +#line 2655 "Zend/zend_language_scanner.c" +yy131: + YYDEBUG(131, *YYCURSOR); yych = *++YYCURSOR; - goto yy120; -yy122: - YYDEBUG(122, *YYCURSOR); + goto yy130; +yy132: + YYDEBUG(132, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(123, *YYCURSOR); + YYDEBUG(133, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy108; + goto yy119; } - if (yych <= '#') goto yy121; - if (yych <= '$') goto yy120; - if (yych <= 'z') goto yy111; - goto yy122; -yy124: - YYDEBUG(124, *YYCURSOR); + if (yych <= 0x00) goto yy130; + if (yych <= '#') goto yy131; + if (yych <= '$') goto yy130; + if (yych <= 'z') goto yy122; + goto yy132; +yy134: + YYDEBUG(134, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(125, *YYCURSOR); + YYDEBUG(135, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy124; + goto yy134; } - if (yych == '-') goto yy129; - if (yych == '[') goto yy130; -yy126: - YYDEBUG(126, *YYCURSOR); + if (yych == '-') goto yy139; + if (yych == '[') goto yy140; +yy136: + YYDEBUG(136, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2231 "Zend/zend_language_scanner.l" +#line 2202 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -2648,29 +2696,29 @@ } return T_VARIABLE; } -#line 2652 "Zend/zend_language_scanner.c" -yy127: - YYDEBUG(127, *YYCURSOR); +#line 2700 "Zend/zend_language_scanner.c" +yy137: + YYDEBUG(137, *YYCURSOR); ++YYCURSOR; - YYDEBUG(128, *YYCURSOR); + YYDEBUG(138, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1835 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2663 "Zend/zend_language_scanner.c" -yy129: - YYDEBUG(129, *YYCURSOR); +#line 2711 "Zend/zend_language_scanner.c" +yy139: + YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy132; - goto yy115; -yy130: - YYDEBUG(130, *YYCURSOR); + if (yych == '>') goto yy142; + goto yy116; +yy140: + YYDEBUG(140, *YYCURSOR); ++YYCURSOR; - YYDEBUG(131, *YYCURSOR); + YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2218 "Zend/zend_language_scanner.l" +#line 2189 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2683,25 +2731,25 @@ } return T_VARIABLE; } -#line 2687 "Zend/zend_language_scanner.c" -yy132: - YYDEBUG(132, *YYCURSOR); +#line 2735 "Zend/zend_language_scanner.c" +yy142: + YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy115; - if (yych <= 'Z') goto yy133; - if (yych <= '^') goto yy115; - } else { - if (yych <= '`') goto yy115; - if (yych <= 'z') goto yy133; - if (yych <= '~') goto yy115; + if (yych <= '@') goto yy116; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy116; + } else { + if (yych <= '`') goto yy116; + if (yych <= 'z') goto yy143; + if (yych <= '~') goto yy116; } -yy133: - YYDEBUG(133, *YYCURSOR); +yy143: + YYDEBUG(143, *YYCURSOR); ++YYCURSOR; - YYDEBUG(134, *YYCURSOR); + YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "Zend/zend_language_scanner.l" +#line 2174 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2714,18 +2762,27 @@ } return T_VARIABLE; } -#line 2718 "Zend/zend_language_scanner.c" +#line 2766 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: - YYDEBUG(135, *YYCURSOR); + YYDEBUG(145, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(137, *YYCURSOR); + if (yych >= 0x01) goto yy149; + YYDEBUG(147, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(148, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 2780 "Zend/zend_language_scanner.c" +yy149: + YYDEBUG(149, *YYCURSOR); ++YYCURSOR; - YYDEBUG(138, *YYCURSOR); + YYDEBUG(150, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2531 "Zend/zend_language_scanner.l" +#line 2507 "Zend/zend_language_scanner.l" { YYCURSOR += CG(heredoc_len) - 1; yyleng = CG(heredoc_len); @@ -2737,12 +2794,12 @@ BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2741 "Zend/zend_language_scanner.c" +#line 2798 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { static const unsigned char yybm[] = { - 4, 4, 4, 4, 4, 4, 4, 4, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 16, 4, 4, 32, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, @@ -2775,26 +2832,30 @@ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }; - YYDEBUG(139, *YYCURSOR); + YYDEBUG(151, *YYCURSOR); YYFILL(2); yych = *(YYMARKER = YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '[') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - if (yych <= '@') goto yy142; - goto yy147; - } else { - if (yych <= '\\') goto yy149; - if (yych == '{') goto yy143; - goto yy147; + if (yych <= '@') { + if (yych <= 0x00) goto yy154; + if (yych <= '\f') goto yy165; + if (yych <= '\r') goto yy167; + goto yy156; + } else { + if (yych <= '\\') { + if (yych <= '[') goto yy162; + goto yy164; + } else { + if (yych == '{') goto yy158; + goto yy162; + } } -yy141: - YYDEBUG(141, *YYCURSOR); +yy153: + YYDEBUG(153, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2607 "Zend/zend_language_scanner.l" +#line 2583 "Zend/zend_language_scanner.l" { if (CG(literal_type) == IS_UNICODE) { return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); @@ -2803,310 +2864,352 @@ return T_ENCAPSED_AND_WHITESPACE; } } -#line 2807 "Zend/zend_language_scanner.c" -yy142: - YYDEBUG(142, *YYCURSOR); +#line 2868 "Zend/zend_language_scanner.c" +yy154: + YYDEBUG(154, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(155, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 2876 "Zend/zend_language_scanner.c" +yy156: + YYDEBUG(156, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\\') { - if (yych <= '@') { - if (yych == '$') goto yy187; - goto yy146; - } else { - if (yych <= 'Z') goto yy191; - if (yych <= '[') goto yy146; - goto yy180; + if (yych <= '$') { + if (yych <= 0x00) goto yy157; + if (yych <= '#') goto yy161; + goto yy201; + } else { + if (yych <= '@') goto yy161; + if (yych <= 'Z') goto yy205; + if (yych <= '[') goto yy161; + goto yy194; } } else { if (yych <= '`') { - if (yych == '_') goto yy191; - goto yy146; + if (yych == '_') goto yy205; + goto yy161; } else { - if (yych <= 'z') goto yy191; - if (yych <= '{') goto yy194; - if (yych <= '~') goto yy146; - goto yy191; + if (yych <= 'z') goto yy205; + if (yych <= '{') goto yy208; + if (yych <= '~') goto yy161; + goto yy205; } } -yy143: - YYDEBUG(143, *YYCURSOR); +yy157: + YYDEBUG(157, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 1) { + if (yyaccept <= 0) { + goto yy153; + } else { + goto yy159; + } + } else { + if (yyaccept <= 2) { + goto yy177; + } else { + goto yy207; + } + } +yy158: + YYDEBUG(158, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; + if (yych <= '\f') { + if (yych >= 0x01) goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy149; + if (yych <= '[') goto yy160; + goto yy164; } else { - if (yych == '{') goto yy189; - goto yy145; + if (yych == '{') goto yy203; + goto yy160; } } -yy144: - YYDEBUG(144, *YYCURSOR); +yy159: + YYDEBUG(159, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2545 "Zend/zend_language_scanner.l" +#line 2521 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 2859 "Zend/zend_language_scanner.c" -yy145: - YYDEBUG(145, *YYCURSOR); +#line 2950 "Zend/zend_language_scanner.c" +yy160: + YYDEBUG(160, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy146: - YYDEBUG(146, *YYCURSOR); +yy161: + YYDEBUG(161, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '[') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - if (yych <= '@') goto yy186; + if (yych <= '@') { + if (yych <= 0x00) goto yy153; + if (yych <= '\f') goto yy165; + if (yych <= '\r') goto yy167; + goto yy200; } else { - if (yych <= '\\') goto yy149; - if (yych == '{') goto yy185; + if (yych <= '\\') { + if (yych >= '\\') goto yy164; + } else { + if (yych == '{') goto yy199; + } } -yy147: - YYDEBUG(147, *YYCURSOR); +yy162: + YYDEBUG(162, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(148, *YYCURSOR); + YYDEBUG(163, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '@') { if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy179; + if (yych <= '\f') { + if (yych <= 0x00) goto yy153; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy193; + } } else { if (yych <= '9') { - if (yych <= '/') goto yy145; - goto yy147; + if (yych <= '/') goto yy160; + goto yy162; } else { - if (yych == ';') goto yy177; - goto yy145; + if (yych == ';') goto yy191; + goto yy160; } } } else { if (yych <= '_') { if (yych <= '[') { - if (yych <= 'Z') goto yy147; - goto yy145; + if (yych <= 'Z') goto yy162; + goto yy160; } else { - if (yych <= '\\') goto yy149; - if (yych <= '^') goto yy145; - goto yy147; + if (yych <= '\\') goto yy164; + if (yych <= '^') goto yy160; + goto yy162; } } else { if (yych <= 'z') { - if (yych <= '`') goto yy145; - goto yy147; + if (yych <= '`') goto yy160; + goto yy162; } else { - if (yych <= '{') goto yy178; - if (yych <= '~') goto yy145; - goto yy147; + if (yych <= '{') goto yy192; + if (yych <= '~') goto yy160; + goto yy162; } } } -yy149: - YYDEBUG(149, *YYCURSOR); +yy164: + YYDEBUG(164, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } - if (yych == '\r') goto yy152; - goto yy145; -yy150: - YYDEBUG(150, *YYCURSOR); + if (yych <= 0x00) goto yy157; + if (yych == '\r') goto yy167; + goto yy160; +yy165: + YYDEBUG(165, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(151, *YYCURSOR); + YYDEBUG(166, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '[') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - if (yych <= '@') goto yy158; - goto yy154; - } else { - if (yych <= '\\') goto yy159; - if (yych == '{') goto yy156; - goto yy154; + if (yych <= '@') { + if (yych <= 0x00) goto yy153; + if (yych <= '\f') goto yy165; + if (yych >= 0x0E) goto yy172; + } else { + if (yych <= '\\') { + if (yych <= '[') goto yy169; + goto yy173; + } else { + if (yych == '{') goto yy171; + goto yy169; + } } -yy152: - YYDEBUG(152, *YYCURSOR); +yy167: + YYDEBUG(167, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(153, *YYCURSOR); + YYDEBUG(168, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '[') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - if (yych <= '@') goto yy158; + if (yych <= '@') { + if (yych <= 0x00) goto yy153; + if (yych <= '\f') goto yy165; + if (yych <= '\r') goto yy167; + goto yy172; } else { - if (yych <= '\\') goto yy159; - if (yych == '{') goto yy156; + if (yych <= '\\') { + if (yych >= '\\') goto yy173; + } else { + if (yych == '{') goto yy171; + } } -yy154: - YYDEBUG(154, *YYCURSOR); +yy169: + YYDEBUG(169, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(155, *YYCURSOR); + YYDEBUG(170, *YYCURSOR); if (yych <= ';') { - if (yych <= '#') { - if (yych <= '\n') { - if (yych <= '\t') goto yy145; - goto yy170; + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy153; + goto yy160; } else { - if (yych == '\r') goto yy170; - goto yy145; + if (yych <= '\n') goto yy184; + if (yych <= '\f') goto yy160; + goto yy184; } } else { if (yych <= '/') { - if (yych <= '$') goto yy169; - goto yy145; + if (yych == '$') goto yy183; + goto yy160; } else { - if (yych <= '9') goto yy154; - if (yych <= ':') goto yy145; - goto yy166; + if (yych <= '9') goto yy169; + if (yych <= ':') goto yy160; + goto yy180; } } } else { if (yych <= '^') { if (yych <= 'Z') { - if (yych <= '@') goto yy145; - goto yy154; + if (yych <= '@') goto yy160; + goto yy169; } else { - if (yych == '\\') goto yy167; - goto yy145; + if (yych == '\\') goto yy181; + goto yy160; } } else { if (yych <= 'z') { - if (yych == '`') goto yy145; - goto yy154; + if (yych == '`') goto yy160; + goto yy169; } else { - if (yych <= '{') goto yy168; - if (yych <= '~') goto yy145; - goto yy154; + if (yych <= '{') goto yy182; + if (yych <= '~') goto yy160; + goto yy169; } } } -yy156: - YYDEBUG(156, *YYCURSOR); +yy171: + YYDEBUG(171, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - } else { - if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy159; - } else { - if (yych == '{') goto yy164; - goto yy145; - } - } -yy157: - YYDEBUG(157, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy141; + if (yych <= '\f') { + if (yych <= 0x00) goto yy157; + goto yy160; } else { - goto yy144; + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy157; } } else { - if (yyaccept <= 2) { - goto yy163; + if (yych <= '\\') { + if (yych <= '[') goto yy160; + goto yy173; } else { - goto yy193; + if (yych == '{') goto yy178; + goto yy160; } } -yy158: - YYDEBUG(158, *YYCURSOR); +yy172: + YYDEBUG(172, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy161; + if (yych <= '\r') { + if (yych <= 0x00) goto yy157; + if (yych <= '\f') goto yy165; + goto yy167; } else { - if (yych == '\\') goto yy160; + if (yych <= '@') goto yy175; + if (yych == '\\') goto yy174; goto yy157; } -yy159: - YYDEBUG(159, *YYCURSOR); +yy173: + YYDEBUG(173, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } - if (yych == '\r') goto yy152; - goto yy145; -yy160: - YYDEBUG(160, *YYCURSOR); + if (yych <= 0x00) goto yy157; + if (yych == '\r') goto yy167; + goto yy160; +yy174: + YYDEBUG(174, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } - if (yych == '\r') goto yy152; - goto yy145; -yy161: - YYDEBUG(161, *YYCURSOR); + if (yych <= 0x00) goto yy157; + if (yych == '\r') goto yy167; + goto yy160; +yy175: + YYDEBUG(175, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(162, *YYCURSOR); + YYDEBUG(176, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy161; + if (yych <= '\r') { + if (yych <= 0x00) goto yy177; + if (yych <= '\f') goto yy165; + goto yy167; } else { - if (yych == '\\') goto yy160; + if (yych <= '@') goto yy175; + if (yych == '\\') goto yy174; } -yy163: - YYDEBUG(163, *YYCURSOR); +yy177: + YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2616 "Zend/zend_language_scanner.l" +#line 2592 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); @@ -3117,106 +3220,119 @@ return T_ENCAPSED_AND_WHITESPACE; } } -#line 3121 "Zend/zend_language_scanner.c" -yy164: - YYDEBUG(164, *YYCURSOR); +#line 3224 "Zend/zend_language_scanner.c" +yy178: + YYDEBUG(178, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(165, *YYCURSOR); + YYDEBUG(179, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy163; + if (yych <= '\f') { + if (yych <= 0x00) goto yy177; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy177; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy159; + if (yych <= '[') goto yy160; + goto yy173; } else { - if (yych == '{') goto yy164; - goto yy145; + if (yych == '{') goto yy178; + goto yy160; } } -yy166: - YYDEBUG(166, *YYCURSOR); +yy180: + YYDEBUG(180, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yych <= '#') { if (yych <= '\n') { - if (yych <= '\t') goto yy145; - goto yy170; + if (yych <= 0x00) goto yy153; + if (yych <= '\t') goto yy160; + goto yy184; } else { - if (yych == '\r') goto yy170; - goto yy145; + if (yych == '\r') goto yy184; + goto yy160; } } else { if (yych <= '\\') { - if (yych <= '$') goto yy169; - if (yych <= '[') goto yy145; + if (yych <= '$') goto yy183; + if (yych <= '[') goto yy160; } else { - if (yych == '{') goto yy168; - goto yy145; + if (yych == '{') goto yy182; + goto yy160; } } -yy167: - YYDEBUG(167, *YYCURSOR); +yy181: + YYDEBUG(181, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } - if (yych == '\r') goto yy152; - goto yy145; -yy168: - YYDEBUG(168, *YYCURSOR); + if (yych <= 0x00) goto yy157; + if (yych == '\r') goto yy167; + goto yy160; +yy182: + YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy157; + if (yych <= '\f') { + if (yych <= 0x00) goto yy157; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy157; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy167; + if (yych <= '[') goto yy160; + goto yy181; } else { - if (yych == '{') goto yy175; - goto yy145; + if (yych == '{') goto yy189; + goto yy160; } } -yy169: - YYDEBUG(169, *YYCURSOR); +yy183: + YYDEBUG(183, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy172; + if (yych <= '\r') { + if (yych <= 0x00) goto yy157; + if (yych <= '\f') goto yy165; + goto yy167; } else { - if (yych == '\\') goto yy174; + if (yych <= '@') goto yy186; + if (yych == '\\') goto yy188; goto yy157; } -yy170: - YYDEBUG(170, *YYCURSOR); +yy184: + YYDEBUG(184, *YYCURSOR); ++YYCURSOR; - YYDEBUG(171, *YYCURSOR); + YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2489 "Zend/zend_language_scanner.l" +#line 2465 "Zend/zend_language_scanner.l" { char *end = yytext + yyleng - 1; @@ -3258,267 +3374,304 @@ yymore(); } } -#line 3262 "Zend/zend_language_scanner.c" -yy172: - YYDEBUG(172, *YYCURSOR); +#line 3378 "Zend/zend_language_scanner.c" +yy186: + YYDEBUG(186, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(173, *YYCURSOR); + YYDEBUG(187, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy172; + if (yych <= '\r') { + if (yych <= 0x00) goto yy177; + if (yych <= '\f') goto yy165; + goto yy167; } else { - if (yych != '\\') goto yy163; + if (yych <= '@') goto yy186; + if (yych != '\\') goto yy177; } -yy174: - YYDEBUG(174, *YYCURSOR); +yy188: + YYDEBUG(188, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } - if (yych == '\r') goto yy152; - goto yy145; -yy175: - YYDEBUG(175, *YYCURSOR); + if (yych <= 0x00) goto yy157; + if (yych == '\r') goto yy167; + goto yy160; +yy189: + YYDEBUG(189, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(176, *YYCURSOR); + YYDEBUG(190, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy163; + if (yych <= '\f') { + if (yych <= 0x00) goto yy177; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy177; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy167; + if (yych <= '[') goto yy160; + goto yy181; } else { - if (yych == '{') goto yy175; - goto yy145; + if (yych == '{') goto yy189; + goto yy160; } } -yy177: - YYDEBUG(177, *YYCURSOR); +yy191: + YYDEBUG(191, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '[') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - if (yych <= '@') goto yy179; - goto yy147; + if (yych <= '@') { + if (yych <= 0x00) goto yy153; + if (yych <= '\f') goto yy165; + if (yych <= '\r') goto yy167; + goto yy193; } else { - if (yych <= '\\') goto yy149; - if (yych != '{') goto yy147; + if (yych <= '\\') { + if (yych <= '[') goto yy162; + goto yy164; + } else { + if (yych != '{') goto yy162; + } } -yy178: - YYDEBUG(178, *YYCURSOR); +yy192: + YYDEBUG(192, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy157; + if (yych <= '\f') { + if (yych <= 0x00) goto yy157; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy157; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy149; + if (yych <= '[') goto yy160; + goto yy164; } else { - if (yych == '{') goto yy183; - goto yy145; + if (yych == '{') goto yy197; + goto yy160; } } -yy179: - YYDEBUG(179, *YYCURSOR); +yy193: + YYDEBUG(193, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy181; + if (yych <= '\r') { + if (yych <= 0x00) goto yy157; + if (yych <= '\f') goto yy165; + goto yy167; } else { + if (yych <= '@') goto yy195; if (yych != '\\') goto yy157; } -yy180: - YYDEBUG(180, *YYCURSOR); +yy194: + YYDEBUG(194, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } - if (yych == '\r') goto yy152; - goto yy145; -yy181: - YYDEBUG(181, *YYCURSOR); + if (yych <= 0x00) goto yy157; + if (yych == '\r') goto yy167; + goto yy160; +yy195: + YYDEBUG(195, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(182, *YYCURSOR); + YYDEBUG(196, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy181; - } else { - if (yych == '\\') goto yy180; - goto yy163; + if (yych <= '\r') { + if (yych <= 0x00) goto yy177; + if (yych <= '\f') goto yy165; + goto yy167; + } else { + if (yych <= '@') goto yy195; + if (yych == '\\') goto yy194; + goto yy177; } -yy183: - YYDEBUG(183, *YYCURSOR); +yy197: + YYDEBUG(197, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(184, *YYCURSOR); + YYDEBUG(198, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy163; + if (yych <= '\f') { + if (yych <= 0x00) goto yy177; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy177; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy149; + if (yych <= '[') goto yy160; + goto yy164; } else { - if (yych == '{') goto yy183; - goto yy145; + if (yych == '{') goto yy197; + goto yy160; } } -yy185: - YYDEBUG(185, *YYCURSOR); +yy199: + YYDEBUG(199, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy157; + if (yych <= '\f') { + if (yych <= 0x00) goto yy157; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy157; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy149; + if (yych <= '[') goto yy160; + goto yy164; } else { - if (yych == '{') goto yy189; - goto yy145; + if (yych == '{') goto yy203; + goto yy160; } } -yy186: - YYDEBUG(186, *YYCURSOR); +yy200: + YYDEBUG(200, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; + if (yych <= '\r') { + if (yych <= 0x00) goto yy157; + if (yych <= '\f') goto yy165; + goto yy167; } else { - if (yych == '\\') goto yy180; + if (yych <= '@') goto yy201; + if (yych == '\\') goto yy194; goto yy157; } -yy187: - YYDEBUG(187, *YYCURSOR); +yy201: + YYDEBUG(201, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(188, *YYCURSOR); + YYDEBUG(202, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy145; + goto yy160; } - if (yych <= '@') { - if (yych <= '\f') goto yy150; - if (yych <= '\r') goto yy152; - goto yy187; - } else { - if (yych == '\\') goto yy180; - goto yy163; + if (yych <= '\r') { + if (yych <= 0x00) goto yy177; + if (yych <= '\f') goto yy165; + goto yy167; + } else { + if (yych <= '@') goto yy201; + if (yych == '\\') goto yy194; + goto yy177; } -yy189: - YYDEBUG(189, *YYCURSOR); +yy203: + YYDEBUG(203, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(190, *YYCURSOR); + YYDEBUG(204, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy150; + goto yy165; } if (yych <= '$') { - if (yych == '\r') goto yy152; - if (yych <= '#') goto yy145; - goto yy163; + if (yych <= '\f') { + if (yych <= 0x00) goto yy177; + goto yy160; + } else { + if (yych <= '\r') goto yy167; + if (yych <= '#') goto yy160; + goto yy177; + } } else { if (yych <= '\\') { - if (yych <= '[') goto yy145; - goto yy149; + if (yych <= '[') goto yy160; + goto yy164; } else { - if (yych == '{') goto yy189; - goto yy145; + if (yych == '{') goto yy203; + goto yy160; } } -yy191: - YYDEBUG(191, *YYCURSOR); +yy205: + YYDEBUG(205, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(192, *YYCURSOR); + YYDEBUG(206, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '-') goto yy196; + if (yych == '-') goto yy210; } else { - if (yych <= '9') goto yy191; - if (yych >= 'A') goto yy191; + if (yych <= '9') goto yy205; + if (yych >= 'A') goto yy205; } } else { if (yych <= '_') { - if (yych <= '[') goto yy197; - if (yych >= '_') goto yy191; + if (yych <= '[') goto yy211; + if (yych >= '_') goto yy205; } else { - if (yych <= '`') goto yy193; - if (yych <= 'z') goto yy191; - if (yych >= 0x7F) goto yy191; + if (yych <= '`') goto yy207; + if (yych <= 'z') goto yy205; + if (yych >= 0x7F) goto yy205; } } -yy193: - YYDEBUG(193, *YYCURSOR); +yy207: + YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2231 "Zend/zend_language_scanner.l" +#line 2202 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -3528,29 +3681,29 @@ } return T_VARIABLE; } -#line 3532 "Zend/zend_language_scanner.c" -yy194: - YYDEBUG(194, *YYCURSOR); +#line 3685 "Zend/zend_language_scanner.c" +yy208: + YYDEBUG(208, *YYCURSOR); ++YYCURSOR; - YYDEBUG(195, *YYCURSOR); + YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1835 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 3543 "Zend/zend_language_scanner.c" -yy196: - YYDEBUG(196, *YYCURSOR); +#line 3696 "Zend/zend_language_scanner.c" +yy210: + YYDEBUG(210, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy199; + if (yych == '>') goto yy213; goto yy157; -yy197: - YYDEBUG(197, *YYCURSOR); +yy211: + YYDEBUG(211, *YYCURSOR); ++YYCURSOR; - YYDEBUG(198, *YYCURSOR); + YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2218 "Zend/zend_language_scanner.l" +#line 2189 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -3563,25 +3716,25 @@ } return T_VARIABLE; } -#line 3567 "Zend/zend_language_scanner.c" -yy199: - YYDEBUG(199, *YYCURSOR); +#line 3720 "Zend/zend_language_scanner.c" +yy213: + YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { if (yych <= '@') goto yy157; - if (yych <= 'Z') goto yy200; + if (yych <= 'Z') goto yy214; if (yych <= '^') goto yy157; } else { if (yych <= '`') goto yy157; - if (yych <= 'z') goto yy200; + if (yych <= 'z') goto yy214; if (yych <= '~') goto yy157; } -yy200: - YYDEBUG(200, *YYCURSOR); +yy214: + YYDEBUG(214, *YYCURSOR); ++YYCURSOR; - YYDEBUG(201, *YYCURSOR); + YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "Zend/zend_language_scanner.l" +#line 2174 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -3594,14 +3747,14 @@ } return T_VARIABLE; } -#line 3598 "Zend/zend_language_scanner.c" +#line 3751 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: { static const unsigned char yybm[] = { /* table 1 .. 8: 0 */ - 2, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 194, 66, 2, 2, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -3667,12 +3820,12 @@ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(202, *YYCURSOR); + YYDEBUG(216, *YYCURSOR); YYFILL(16); yych = *YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case 0x00: + case 0x00: goto yy218; case 0x01: case 0x02: case 0x03: @@ -3700,32 +3853,32 @@ case 0x1C: case 0x1D: case 0x1E: - case 0x1F: goto yy264; + case 0x1F: goto yy280; case '\t': case '\n': case '\r': - case ' ': goto yy220; - case '!': goto yy233; - case '"': goto yy258; - case '#': goto yy256; - case '$': goto yy245; - case '%': goto yy239; - case '&': goto yy240; - case '\'': goto yy260; - case '(': goto yy227; + case ' ': goto yy236; + case '!': goto yy249; + case '"': goto yy274; + case '#': goto yy272; + case '$': goto yy261; + case '%': goto yy255; + case '&': goto yy256; + case '\'': goto yy276; + case '(': goto yy243; case ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy246; - case '*': goto yy236; - case '+': goto yy232; - case '-': goto yy218; - case '.': goto yy238; - case '/': goto yy237; - case '0': goto yy252; + case '~': goto yy262; + case '*': goto yy252; + case '+': goto yy248; + case '-': goto yy234; + case '.': goto yy254; + case '/': goto yy253; + case '0': goto yy268; case '1': case '2': case '3': @@ -3734,82 +3887,90 @@ case '6': case '7': case '8': - case '9': goto yy254; - case ':': goto yy222; - case '<': goto yy234; - case '=': goto yy230; - case '>': goto yy235; - case '?': goto yy247; + case '9': goto yy270; + case ':': goto yy238; + case '<': goto yy250; + case '=': goto yy246; + case '>': goto yy251; + case '?': goto yy263; case 'A': - case 'a': goto yy213; + case 'a': goto yy229; case 'B': - case 'b': goto yy215; + case 'b': goto yy231; case 'C': - case 'c': goto yy208; + case 'c': goto yy224; case 'D': - case 'd': goto yy206; + case 'd': goto yy222; case 'E': - case 'e': goto yy204; + case 'e': goto yy220; case 'F': - case 'f': goto yy207; + case 'f': goto yy223; case 'G': - case 'g': goto yy216; + case 'g': goto yy232; case 'I': - case 'i': goto yy211; + case 'i': goto yy227; case 'L': - case 'l': goto yy231; + case 'l': goto yy247; case 'N': - case 'n': goto yy225; + case 'n': goto yy241; case 'O': - case 'o': goto yy243; + case 'o': goto yy259; case 'P': - case 'p': goto yy217; + case 'p': goto yy233; case 'R': - case 'r': goto yy209; + case 'r': goto yy225; case 'S': - case 's': goto yy214; + case 's': goto yy230; case 'T': - case 't': goto yy210; + case 't': goto yy226; case 'U': - case 'u': goto yy228; + case 'u': goto yy244; case 'V': - case 'v': goto yy226; + case 'v': goto yy242; case 'W': - case 'w': goto yy212; + case 'w': goto yy228; case 'X': - case 'x': goto yy244; - case '\\': goto yy223; - case '^': goto yy242; - case '_': goto yy229; - case '`': goto yy262; - case '{': goto yy248; - case '|': goto yy241; - case '}': goto yy250; - default: goto yy255; + case 'x': goto yy260; + case '\\': goto yy239; + case '^': goto yy258; + case '_': goto yy245; + case '`': goto yy278; + case '{': goto yy264; + case '|': goto yy257; + case '}': goto yy266; + default: goto yy271; } -yy204: - YYDEBUG(204, *YYCURSOR); +yy218: + YYDEBUG(218, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(219, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 3951 "Zend/zend_language_scanner.c" +yy220: + YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { case 'C': - case 'c': goto yy820; + case 'c': goto yy836; case 'L': - case 'l': goto yy821; + case 'l': goto yy837; case 'M': - case 'm': goto yy822; + case 'm': goto yy838; case 'N': - case 'n': goto yy823; + case 'n': goto yy839; case 'V': - case 'v': goto yy824; + case 'v': goto yy840; case 'X': - case 'x': goto yy825; - default: goto yy282; + case 'x': goto yy841; + default: goto yy298; } -yy205: - YYDEBUG(205, *YYCURSOR); +yy221: + YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2259 "Zend/zend_language_scanner.l" +#line 2230 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -3819,267 +3980,267 @@ } return T_STRING; } -#line 3823 "Zend/zend_language_scanner.c" -yy206: - YYDEBUG(206, *YYCURSOR); +#line 3984 "Zend/zend_language_scanner.c" +yy222: + YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'E') goto yy802; - goto yy282; + if (yych == 'E') goto yy818; + goto yy298; } else { - if (yych <= 'I') goto yy803; - if (yych <= 'N') goto yy282; - goto yy804; + if (yych <= 'I') goto yy819; + if (yych <= 'N') goto yy298; + goto yy820; } } else { if (yych <= 'h') { - if (yych == 'e') goto yy802; - goto yy282; + if (yych == 'e') goto yy818; + goto yy298; } else { - if (yych <= 'i') goto yy803; - if (yych == 'o') goto yy804; - goto yy282; + if (yych <= 'i') goto yy819; + if (yych == 'o') goto yy820; + goto yy298; } } -yy207: - YYDEBUG(207, *YYCURSOR); +yy223: + YYDEBUG(223, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'N') { - if (yych == 'I') goto yy781; - goto yy282; + if (yych == 'I') goto yy797; + goto yy298; } else { - if (yych <= 'O') goto yy782; - if (yych <= 'T') goto yy282; - goto yy783; + if (yych <= 'O') goto yy798; + if (yych <= 'T') goto yy298; + goto yy799; } } else { if (yych <= 'n') { - if (yych == 'i') goto yy781; - goto yy282; + if (yych == 'i') goto yy797; + goto yy298; } else { - if (yych <= 'o') goto yy782; - if (yych == 'u') goto yy783; - goto yy282; + if (yych <= 'o') goto yy798; + if (yych == 'u') goto yy799; + goto yy298; } } -yy208: - YYDEBUG(208, *YYCURSOR); +yy224: + YYDEBUG(224, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'K') { - if (yych == 'A') goto yy753; - goto yy282; + if (yych == 'A') goto yy769; + goto yy298; } else { - if (yych <= 'L') goto yy754; - if (yych <= 'N') goto yy282; - goto yy755; + if (yych <= 'L') goto yy770; + if (yych <= 'N') goto yy298; + goto yy771; } } else { if (yych <= 'k') { - if (yych == 'a') goto yy753; - goto yy282; + if (yych == 'a') goto yy769; + goto yy298; } else { - if (yych <= 'l') goto yy754; - if (yych == 'o') goto yy755; - goto yy282; + if (yych <= 'l') goto yy770; + if (yych == 'o') goto yy771; + goto yy298; } } -yy209: - YYDEBUG(209, *YYCURSOR); +yy225: + YYDEBUG(225, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy735; - if (yych == 'e') goto yy735; - goto yy282; -yy210: - YYDEBUG(210, *YYCURSOR); + if (yych == 'E') goto yy751; + if (yych == 'e') goto yy751; + goto yy298; +yy226: + YYDEBUG(226, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'H') goto yy727; - if (yych <= 'Q') goto yy282; - goto yy728; + if (yych == 'H') goto yy743; + if (yych <= 'Q') goto yy298; + goto yy744; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy282; - goto yy727; + if (yych <= 'g') goto yy298; + goto yy743; } else { - if (yych == 'r') goto yy728; - goto yy282; + if (yych == 'r') goto yy744; + goto yy298; } } -yy211: - YYDEBUG(211, *YYCURSOR); +yy227: + YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'L') { - if (yych == 'F') goto yy680; - goto yy282; + if (yych == 'F') goto yy696; + goto yy298; } else { - if (yych <= 'M') goto yy682; - if (yych <= 'N') goto yy683; - if (yych <= 'R') goto yy282; - goto yy684; + if (yych <= 'M') goto yy698; + if (yych <= 'N') goto yy699; + if (yych <= 'R') goto yy298; + goto yy700; } } else { if (yych <= 'm') { - if (yych == 'f') goto yy680; - if (yych <= 'l') goto yy282; - goto yy682; - } else { - if (yych <= 'n') goto yy683; - if (yych == 's') goto yy684; - goto yy282; + if (yych == 'f') goto yy696; + if (yych <= 'l') goto yy298; + goto yy698; + } else { + if (yych <= 'n') goto yy699; + if (yych == 's') goto yy700; + goto yy298; } } -yy212: - YYDEBUG(212, *YYCURSOR); +yy228: + YYDEBUG(228, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy675; - if (yych == 'h') goto yy675; - goto yy282; -yy213: - YYDEBUG(213, *YYCURSOR); + if (yych == 'H') goto yy691; + if (yych == 'h') goto yy691; + goto yy298; +yy229: + YYDEBUG(229, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'M') { - if (yych == 'B') goto yy657; - goto yy282; + if (yych == 'B') goto yy673; + goto yy298; } else { - if (yych <= 'N') goto yy658; - if (yych <= 'Q') goto yy282; - if (yych <= 'R') goto yy659; - goto yy660; + if (yych <= 'N') goto yy674; + if (yych <= 'Q') goto yy298; + if (yych <= 'R') goto yy675; + goto yy676; } } else { if (yych <= 'n') { - if (yych == 'b') goto yy657; - if (yych <= 'm') goto yy282; - goto yy658; - } else { - if (yych <= 'q') goto yy282; - if (yych <= 'r') goto yy659; - if (yych <= 's') goto yy660; - goto yy282; + if (yych == 'b') goto yy673; + if (yych <= 'm') goto yy298; + goto yy674; + } else { + if (yych <= 'q') goto yy298; + if (yych <= 'r') goto yy675; + if (yych <= 's') goto yy676; + goto yy298; } } -yy214: - YYDEBUG(214, *YYCURSOR); +yy230: + YYDEBUG(230, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'W') { - if (yych == 'T') goto yy645; - if (yych <= 'V') goto yy282; - goto yy646; + if (yych == 'T') goto yy661; + if (yych <= 'V') goto yy298; + goto yy662; } else { if (yych <= 't') { - if (yych <= 's') goto yy282; - goto yy645; + if (yych <= 's') goto yy298; + goto yy661; } else { - if (yych == 'w') goto yy646; - goto yy282; + if (yych == 'w') goto yy662; + goto yy298; } } -yy215: - YYDEBUG(215, *YYCURSOR); +yy231: + YYDEBUG(231, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '/') { if (yych <= '"') { - if (yych <= '!') goto yy205; - goto yy622; + if (yych <= '!') goto yy221; + goto yy638; } else { - if (yych == '\'') goto yy624; - goto yy205; + if (yych == '\'') goto yy640; + goto yy221; } } else { if (yych <= ';') { - if (yych <= '9') goto yy281; - goto yy205; + if (yych <= '9') goto yy297; + goto yy221; } else { - if (yych <= '<') goto yy621; - if (yych <= '@') goto yy205; - goto yy281; + if (yych <= '<') goto yy637; + if (yych <= '@') goto yy221; + goto yy297; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'R') goto yy626; - goto yy281; + if (yych <= 'R') goto yy642; + goto yy297; } else { - if (yych == '_') goto yy281; - goto yy205; + if (yych == '_') goto yy297; + goto yy221; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy281; - goto yy626; + if (yych <= 'q') goto yy297; + goto yy642; } else { - if (yych <= 'z') goto yy281; - if (yych <= '~') goto yy205; - goto yy281; + if (yych <= 'z') goto yy297; + if (yych <= '~') goto yy221; + goto yy297; } } } -yy216: - YYDEBUG(216, *YYCURSOR); +yy232: + YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'L') goto yy611; - if (yych <= 'N') goto yy282; - goto yy612; + if (yych == 'L') goto yy627; + if (yych <= 'N') goto yy298; + goto yy628; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy282; - goto yy611; + if (yych <= 'k') goto yy298; + goto yy627; } else { - if (yych == 'o') goto yy612; - goto yy282; + if (yych == 'o') goto yy628; + goto yy298; } } -yy217: - YYDEBUG(217, *YYCURSOR); +yy233: + YYDEBUG(233, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'R') goto yy587; - if (yych <= 'T') goto yy282; - goto yy588; + if (yych == 'R') goto yy603; + if (yych <= 'T') goto yy298; + goto yy604; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy282; - goto yy587; + if (yych <= 'q') goto yy298; + goto yy603; } else { - if (yych == 'u') goto yy588; - goto yy282; + if (yych == 'u') goto yy604; + goto yy298; } } -yy218: - YYDEBUG(218, *YYCURSOR); +yy234: + YYDEBUG(234, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy583; + if (yych == '-') goto yy599; } else { - if (yych <= '=') goto yy581; - if (yych <= '>') goto yy585; + if (yych <= '=') goto yy597; + if (yych <= '>') goto yy601; } -yy219: - YYDEBUG(219, *YYCURSOR); +yy235: + YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1824 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 4074 "Zend/zend_language_scanner.c" -yy220: - YYDEBUG(220, *YYCURSOR); +#line 4235 "Zend/zend_language_scanner.c" +yy236: + YYDEBUG(236, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy580; -yy221: - YYDEBUG(221, *YYCURSOR); + goto yy596; +yy237: + YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -4087,261 +4248,261 @@ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 4091 "Zend/zend_language_scanner.c" -yy222: - YYDEBUG(222, *YYCURSOR); +#line 4252 "Zend/zend_language_scanner.c" +yy238: + YYDEBUG(238, *YYCURSOR); yych = *++YYCURSOR; - if (yych == ':') goto yy577; - goto yy219; -yy223: - YYDEBUG(223, *YYCURSOR); + if (yych == ':') goto yy593; + goto yy235; +yy239: + YYDEBUG(239, *YYCURSOR); ++YYCURSOR; - YYDEBUG(224, *YYCURSOR); + YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1613 "Zend/zend_language_scanner.l" +#line 1584 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 4106 "Zend/zend_language_scanner.c" -yy225: - YYDEBUG(225, *YYCURSOR); +#line 4267 "Zend/zend_language_scanner.c" +yy241: + YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy565; - if (yych <= 'D') goto yy282; - goto yy566; + if (yych == 'A') goto yy581; + if (yych <= 'D') goto yy298; + goto yy582; } else { if (yych <= 'a') { - if (yych <= '`') goto yy282; - goto yy565; + if (yych <= '`') goto yy298; + goto yy581; } else { - if (yych == 'e') goto yy566; - goto yy282; + if (yych == 'e') goto yy582; + goto yy298; } } -yy226: - YYDEBUG(226, *YYCURSOR); +yy242: + YYDEBUG(242, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy562; - if (yych == 'a') goto yy562; - goto yy282; -yy227: - YYDEBUG(227, *YYCURSOR); + if (yych == 'A') goto yy578; + if (yych == 'a') goto yy578; + goto yy298; +yy243: + YYDEBUG(243, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy475; - if (yych <= 0x1F) goto yy219; - goto yy475; + if (yych == '\t') goto yy491; + if (yych <= 0x1F) goto yy235; + goto yy491; } else { - if (yych <= '@') goto yy219; - if (yych == 'C') goto yy219; - goto yy475; + if (yych <= '@') goto yy235; + if (yych == 'C') goto yy235; + goto yy491; } } else { if (yych <= 'I') { - if (yych == 'F') goto yy475; - if (yych <= 'H') goto yy219; - goto yy475; + if (yych == 'F') goto yy491; + if (yych <= 'H') goto yy235; + goto yy491; } else { - if (yych == 'O') goto yy475; - if (yych <= 'Q') goto yy219; - goto yy475; + if (yych == 'O') goto yy491; + if (yych <= 'Q') goto yy235; + goto yy491; } } } else { if (yych <= 'f') { if (yych <= 'b') { - if (yych == 'U') goto yy475; - if (yych <= '`') goto yy219; - goto yy475; + if (yych == 'U') goto yy491; + if (yych <= '`') goto yy235; + goto yy491; } else { - if (yych == 'd') goto yy475; - if (yych <= 'e') goto yy219; - goto yy475; + if (yych == 'd') goto yy491; + if (yych <= 'e') goto yy235; + goto yy491; } } else { if (yych <= 'o') { - if (yych == 'i') goto yy475; - if (yych <= 'n') goto yy219; - goto yy475; + if (yych == 'i') goto yy491; + if (yych <= 'n') goto yy235; + goto yy491; } else { if (yych <= 's') { - if (yych <= 'q') goto yy219; - goto yy475; + if (yych <= 'q') goto yy235; + goto yy491; } else { - if (yych == 'u') goto yy475; - goto yy219; + if (yych == 'u') goto yy491; + goto yy235; } } } } -yy228: - YYDEBUG(228, *YYCURSOR); +yy244: + YYDEBUG(244, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'N') goto yy466; - if (yych <= 'R') goto yy282; - goto yy467; + if (yych == 'N') goto yy482; + if (yych <= 'R') goto yy298; + goto yy483; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy282; - goto yy466; + if (yych <= 'm') goto yy298; + goto yy482; } else { - if (yych == 's') goto yy467; - goto yy282; + if (yych == 's') goto yy483; + goto yy298; } } -yy229: - YYDEBUG(229, *YYCURSOR); +yy245: + YYDEBUG(245, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy392; - goto yy282; -yy230: - YYDEBUG(230, *YYCURSOR); + if (yych == '_') goto yy408; + goto yy298; +yy246: + YYDEBUG(246, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy386; - if (yych <= '>') goto yy388; - goto yy219; -yy231: - YYDEBUG(231, *YYCURSOR); + if (yych <= '<') goto yy235; + if (yych <= '=') goto yy402; + if (yych <= '>') goto yy404; + goto yy235; +yy247: + YYDEBUG(247, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy382; - if (yych == 'i') goto yy382; - goto yy282; -yy232: - YYDEBUG(232, *YYCURSOR); + if (yych == 'I') goto yy398; + if (yych == 'i') goto yy398; + goto yy298; +yy248: + YYDEBUG(248, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy380; - if (yych == '=') goto yy378; - goto yy219; -yy233: - YYDEBUG(233, *YYCURSOR); + if (yych == '+') goto yy396; + if (yych == '=') goto yy394; + goto yy235; +yy249: + YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy375; - goto yy219; -yy234: - YYDEBUG(234, *YYCURSOR); + if (yych == '=') goto yy391; + goto yy235; +yy250: + YYDEBUG(250, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { - if (yych == '/') goto yy347; - goto yy219; + if (yych == '/') goto yy363; + goto yy235; } else { - if (yych <= '<') goto yy345; - if (yych <= '=') goto yy348; - if (yych <= '>') goto yy350; - goto yy219; + if (yych <= '<') goto yy361; + if (yych <= '=') goto yy364; + if (yych <= '>') goto yy366; + goto yy235; } -yy235: - YYDEBUG(235, *YYCURSOR); +yy251: + YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy341; - if (yych <= '>') goto yy339; - goto yy219; -yy236: - YYDEBUG(236, *YYCURSOR); + if (yych <= '<') goto yy235; + if (yych <= '=') goto yy357; + if (yych <= '>') goto yy355; + goto yy235; +yy252: + YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy337; - goto yy219; -yy237: - YYDEBUG(237, *YYCURSOR); + if (yych == '=') goto yy353; + goto yy235; +yy253: + YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '.') { - if (yych == '*') goto yy328; - goto yy219; + if (yych == '*') goto yy344; + goto yy235; } else { - if (yych <= '/') goto yy330; - if (yych == '=') goto yy331; - goto yy219; + if (yych <= '/') goto yy346; + if (yych == '=') goto yy347; + goto yy235; } -yy238: - YYDEBUG(238, *YYCURSOR); +yy254: + YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy219; - if (yych <= '9') goto yy324; - if (yych == '=') goto yy326; - goto yy219; -yy239: - YYDEBUG(239, *YYCURSOR); + if (yych <= '/') goto yy235; + if (yych <= '9') goto yy340; + if (yych == '=') goto yy342; + goto yy235; +yy255: + YYDEBUG(255, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy320; - if (yych <= '>') goto yy318; - goto yy219; -yy240: - YYDEBUG(240, *YYCURSOR); + if (yych <= '<') goto yy235; + if (yych <= '=') goto yy336; + if (yych <= '>') goto yy334; + goto yy235; +yy256: + YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '&') goto yy314; - if (yych == '=') goto yy316; - goto yy219; -yy241: - YYDEBUG(241, *YYCURSOR); + if (yych == '&') goto yy330; + if (yych == '=') goto yy332; + goto yy235; +yy257: + YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy312; - if (yych == '|') goto yy310; - goto yy219; -yy242: - YYDEBUG(242, *YYCURSOR); + if (yych == '=') goto yy328; + if (yych == '|') goto yy326; + goto yy235; +yy258: + YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy308; - goto yy219; -yy243: - YYDEBUG(243, *YYCURSOR); + if (yych == '=') goto yy324; + goto yy235; +yy259: + YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy306; - if (yych == 'r') goto yy306; - goto yy282; -yy244: - YYDEBUG(244, *YYCURSOR); + if (yych == 'R') goto yy322; + if (yych == 'r') goto yy322; + goto yy298; +yy260: + YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy303; - if (yych == 'o') goto yy303; - goto yy282; -yy245: - YYDEBUG(245, *YYCURSOR); + if (yych == 'O') goto yy319; + if (yych == 'o') goto yy319; + goto yy298; +yy261: + YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy219; - if (yych <= 'Z') goto yy300; - if (yych <= '^') goto yy219; - goto yy300; - } else { - if (yych <= '`') goto yy219; - if (yych <= 'z') goto yy300; - if (yych <= '~') goto yy219; - goto yy300; + if (yych <= '@') goto yy235; + if (yych <= 'Z') goto yy316; + if (yych <= '^') goto yy235; + goto yy316; + } else { + if (yych <= '`') goto yy235; + if (yych <= 'z') goto yy316; + if (yych <= '~') goto yy235; + goto yy316; } -yy246: - YYDEBUG(246, *YYCURSOR); +yy262: + YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - goto yy219; -yy247: - YYDEBUG(247, *YYCURSOR); + goto yy235; +yy263: + YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy296; - goto yy219; -yy248: - YYDEBUG(248, *YYCURSOR); + if (yych == '>') goto yy312; + goto yy235; +yy264: + YYDEBUG(264, *YYCURSOR); ++YYCURSOR; - YYDEBUG(249, *YYCURSOR); + YYDEBUG(265, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1858 "Zend/zend_language_scanner.l" +#line 1829 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 4339 "Zend/zend_language_scanner.c" -yy250: - YYDEBUG(250, *YYCURSOR); +#line 4500 "Zend/zend_language_scanner.c" +yy266: + YYDEBUG(266, *YYCURSOR); ++YYCURSOR; - YYDEBUG(251, *YYCURSOR); + YYDEBUG(267, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1870 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -4349,30 +4510,30 @@ } return '}'; } -#line 4353 "Zend/zend_language_scanner.c" -yy252: - YYDEBUG(252, *YYCURSOR); +#line 4514 "Zend/zend_language_scanner.c" +yy268: + YYDEBUG(268, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { if (yych <= '/') { - if (yych == '.') goto yy283; + if (yych == '.') goto yy299; } else { - if (yych <= '9') goto yy286; - if (yych >= 'E') goto yy288; + if (yych <= '9') goto yy302; + if (yych >= 'E') goto yy304; } } else { if (yych <= 'd') { - if (yych == 'X') goto yy292; + if (yych == 'X') goto yy308; } else { - if (yych <= 'e') goto yy288; - if (yych == 'x') goto yy292; + if (yych <= 'e') goto yy304; + if (yych == 'x') goto yy308; } } -yy253: - YYDEBUG(253, *YYCURSOR); +yy269: + YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1900 "Zend/zend_language_scanner.l" +#line 1871 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -4393,215 +4554,221 @@ Z_TYPE_P(zendlval) = IS_LONG; return T_LNUMBER; } -#line 4397 "Zend/zend_language_scanner.c" -yy254: - YYDEBUG(254, *YYCURSOR); +#line 4558 "Zend/zend_language_scanner.c" +yy270: + YYDEBUG(270, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy283; - if (yych <= '/') goto yy253; - goto yy286; + if (yych == '.') goto yy299; + if (yych <= '/') goto yy269; + goto yy302; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy253; - goto yy288; + if (yych <= 'D') goto yy269; + goto yy304; } else { - if (yych == 'e') goto yy288; - goto yy253; + if (yych == 'e') goto yy304; + goto yy269; } } -yy255: - YYDEBUG(255, *YYCURSOR); +yy271: + YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; - goto yy282; -yy256: - YYDEBUG(256, *YYCURSOR); + goto yy298; +yy272: + YYDEBUG(272, *YYCURSOR); ++YYCURSOR; -yy257: - YYDEBUG(257, *YYCURSOR); +yy273: + YYDEBUG(273, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2248 "Zend/zend_language_scanner.l" { BEGIN(ST_ONE_LINE_COMMENT); yymore(); } -#line 4430 "Zend/zend_language_scanner.c" -yy258: - YYDEBUG(258, *YYCURSOR); +#line 4591 "Zend/zend_language_scanner.c" +yy274: + YYDEBUG(274, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - goto yy274; -yy259: - YYDEBUG(259, *YYCURSOR); + if (yych >= 0x01) goto yy290; +yy275: + YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2422 "Zend/zend_language_scanner.l" +#line 2398 "Zend/zend_language_scanner.l" { BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 4444 "Zend/zend_language_scanner.c" -yy260: - YYDEBUG(260, *YYCURSOR); +#line 4605 "Zend/zend_language_scanner.c" +yy276: + YYDEBUG(276, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - goto yy266; -yy261: - YYDEBUG(261, *YYCURSOR); + goto yy282; +yy277: + YYDEBUG(277, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2682 "Zend/zend_language_scanner.l" +#line 2659 "Zend/zend_language_scanner.l" { zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 4458 "Zend/zend_language_scanner.c" -yy262: - YYDEBUG(262, *YYCURSOR); +#line 4619 "Zend/zend_language_scanner.c" +yy278: + YYDEBUG(278, *YYCURSOR); ++YYCURSOR; - YYDEBUG(263, *YYCURSOR); + YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2477 "Zend/zend_language_scanner.l" +#line 2453 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 4469 "Zend/zend_language_scanner.c" -yy264: - YYDEBUG(264, *YYCURSOR); +#line 4630 "Zend/zend_language_scanner.c" +yy280: + YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; - goto yy261; -yy265: - YYDEBUG(265, *YYCURSOR); + goto yy277; +yy281: + YYDEBUG(281, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy266: - YYDEBUG(266, *YYCURSOR); +yy282: + YYDEBUG(282, *YYCURSOR); if (yybm[256+yych] & 128) { - goto yy265; + goto yy281; } - if (yych <= '[') goto yy268; - YYDEBUG(267, *YYCURSOR); + if (yych <= '[') goto yy285; + YYDEBUG(283, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy265; -yy268: - YYDEBUG(268, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(269, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2406 "Zend/zend_language_scanner.l" - { - if (UG(unicode)) { - return zend_scan_unicode_single_string(zendlval TSRMLS_CC); - } else { - zend_scan_binary_single_string(zendlval, yytext+1, yyleng-2 TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; - } -} -#line 4504 "Zend/zend_language_scanner.c" -yy270: - YYDEBUG(270, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(271, *YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy273; - } - if (yych <= '#') goto yy278; - if (yych <= '$') goto yy272; - if (yych <= 'z') goto yy275; - goto yy270; -yy272: - YYDEBUG(272, *YYCURSOR); + if (yych >= 0x01) goto yy281; +yy284: + YYDEBUG(284, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 4) { if (yyaccept <= 2) { if (yyaccept <= 1) { if (yyaccept <= 0) { - goto yy205; + goto yy221; } else { - goto yy219; + goto yy235; } } else { - goto yy253; + goto yy269; } } else { if (yyaccept <= 3) { - goto yy259; + goto yy275; } else { - goto yy261; + goto yy277; } } } else { if (yyaccept <= 6) { if (yyaccept <= 5) { - goto yy285; + goto yy301; } else { - goto yy329; + goto yy345; } } else { if (yyaccept <= 7) { - goto yy346; + goto yy362; } else { - goto yy623; + goto yy639; } } } -yy273: - YYDEBUG(273, *YYCURSOR); +yy285: + YYDEBUG(285, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(286, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2382 "Zend/zend_language_scanner.l" + { + if (UG(unicode)) { + return zend_scan_unicode_single_string(zendlval TSRMLS_CC); + } else { + zend_scan_binary_single_string(zendlval, yytext+1, yyleng-2 TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; + } +} +#line 4701 "Zend/zend_language_scanner.c" +yy287: + YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy274: - YYDEBUG(274, *YYCURSOR); + YYDEBUG(288, *YYCURSOR); if (yybm[0+yych] & 2) { - goto yy273; + goto yy289; } - if (yych <= '#') goto yy278; - if (yych <= '$') goto yy276; - if (yych >= '{') goto yy270; -yy275: - YYDEBUG(275, *YYCURSOR); + if (yych <= 0x00) goto yy284; + if (yych <= '#') goto yy294; + if (yych <= '$') goto yy284; + if (yych <= 'z') goto yy291; + goto yy287; +yy289: + YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy273; -yy276: - YYDEBUG(276, *YYCURSOR); +yy290: + YYDEBUG(290, *YYCURSOR); + if (yybm[0+yych] & 2) { + goto yy289; + } + if (yych <= 0x00) goto yy284; + if (yych <= '#') goto yy294; + if (yych <= '$') goto yy292; + if (yych >= '{') goto yy287; +yy291: + YYDEBUG(291, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(277, *YYCURSOR); + if (yych <= 0x00) goto yy284; + goto yy289; +yy292: + YYDEBUG(292, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(293, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy276; + goto yy292; } - if (yych <= '\\') { - if (yych <= '@') { - if (yych != '"') goto yy273; - } else { - if (yych <= 'Z') goto yy272; - if (yych <= '[') goto yy273; - goto yy280; + if (yych <= '[') { + if (yych <= '"') { + if (yych <= 0x00) goto yy284; + if (yych <= '!') goto yy289; + } else { + if (yych <= '@') goto yy289; + if (yych <= 'Z') goto yy284; + goto yy289; } } else { - if (yych <= '`') { - if (yych == '_') goto yy272; - goto yy273; + if (yych <= '_') { + if (yych <= '\\') goto yy296; + if (yych <= '^') goto yy289; + goto yy284; } else { - if (yych <= '{') goto yy272; - if (yych <= '~') goto yy273; - goto yy272; + if (yych <= '`') goto yy289; + if (yych <= '{') goto yy284; + if (yych <= '~') goto yy289; + goto yy284; } } -yy278: - YYDEBUG(278, *YYCURSOR); +yy294: + YYDEBUG(294, *YYCURSOR); ++YYCURSOR; - YYDEBUG(279, *YYCURSOR); + YYDEBUG(295, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2390 "Zend/zend_language_scanner.l" +#line 2366 "Zend/zend_language_scanner.l" { if (UG(unicode)) { return zend_scan_unicode_escape_string(zendlval, yytext+1, yyleng-2, 0x22 /*'"'*/, T_CONSTANT_ENCAPSED_STRING TSRMLS_CC); @@ -4610,108 +4777,109 @@ return T_CONSTANT_ENCAPSED_STRING; } } -#line 4614 "Zend/zend_language_scanner.c" -yy280: - YYDEBUG(280, *YYCURSOR); +#line 4781 "Zend/zend_language_scanner.c" +yy296: + YYDEBUG(296, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy273; -yy281: - YYDEBUG(281, *YYCURSOR); + if (yych <= 0x00) goto yy284; + goto yy289; +yy297: + YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy282: - YYDEBUG(282, *YYCURSOR); +yy298: + YYDEBUG(298, *YYCURSOR); if (yybm[0+yych] & 8) { - goto yy281; + goto yy297; } - goto yy205; -yy283: - YYDEBUG(283, *YYCURSOR); + goto yy221; +yy299: + YYDEBUG(299, *YYCURSOR); yyaccept = 5; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(284, *YYCURSOR); + YYDEBUG(300, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy283; + goto yy299; } - if (yych == 'E') goto yy288; - if (yych == 'e') goto yy288; -yy285: - YYDEBUG(285, *YYCURSOR); + if (yych == 'E') goto yy304; + if (yych == 'e') goto yy304; +yy301: + YYDEBUG(301, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1961 "Zend/zend_language_scanner.l" +#line 1932 "Zend/zend_language_scanner.l" { Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL); Z_TYPE_P(zendlval) = IS_DOUBLE; return T_DNUMBER; } -#line 4653 "Zend/zend_language_scanner.c" -yy286: - YYDEBUG(286, *YYCURSOR); +#line 4821 "Zend/zend_language_scanner.c" +yy302: + YYDEBUG(302, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(287, *YYCURSOR); + YYDEBUG(303, *YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy283; - if (yych <= '/') goto yy253; - goto yy286; + if (yych == '.') goto yy299; + if (yych <= '/') goto yy269; + goto yy302; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy253; + if (yych <= 'D') goto yy269; } else { - if (yych != 'e') goto yy253; + if (yych != 'e') goto yy269; } } -yy288: - YYDEBUG(288, *YYCURSOR); +yy304: + YYDEBUG(304, *YYCURSOR); yych = *++YYCURSOR; if (yych <= ',') { - if (yych != '+') goto yy272; + if (yych != '+') goto yy284; } else { - if (yych <= '-') goto yy289; - if (yych <= '/') goto yy272; - if (yych <= '9') goto yy290; - goto yy272; + if (yych <= '-') goto yy305; + if (yych <= '/') goto yy284; + if (yych <= '9') goto yy306; + goto yy284; } -yy289: - YYDEBUG(289, *YYCURSOR); +yy305: + YYDEBUG(305, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy272; - if (yych >= ':') goto yy272; -yy290: - YYDEBUG(290, *YYCURSOR); + if (yych <= '/') goto yy284; + if (yych >= ':') goto yy284; +yy306: + YYDEBUG(306, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(291, *YYCURSOR); - if (yych <= '/') goto yy285; - if (yych <= '9') goto yy290; - goto yy285; -yy292: - YYDEBUG(292, *YYCURSOR); + YYDEBUG(307, *YYCURSOR); + if (yych <= '/') goto yy301; + if (yych <= '9') goto yy306; + goto yy301; +yy308: + YYDEBUG(308, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 32) { - goto yy293; + goto yy309; } - goto yy272; -yy293: - YYDEBUG(293, *YYCURSOR); + goto yy284; +yy309: + YYDEBUG(309, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(294, *YYCURSOR); + YYDEBUG(310, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy293; + goto yy309; } - YYDEBUG(295, *YYCURSOR); + YYDEBUG(311, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1921 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -4732,16 +4900,16 @@ return T_DNUMBER; } } -#line 4736 "Zend/zend_language_scanner.c" -yy296: - YYDEBUG(296, *YYCURSOR); +#line 4904 "Zend/zend_language_scanner.c" +yy312: + YYDEBUG(312, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy298; - if (yych == '\r') goto yy299; -yy297: - YYDEBUG(297, *YYCURSOR); + if ((yych = *YYCURSOR) == '\n') goto yy314; + if (yych == '\r') goto yy315; +yy313: + YYDEBUG(313, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2365 "Zend/zend_language_scanner.l" +#line 2341 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -4749,41 +4917,41 @@ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 4753 "Zend/zend_language_scanner.c" -yy298: - YYDEBUG(298, *YYCURSOR); +#line 4921 "Zend/zend_language_scanner.c" +yy314: + YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - goto yy297; -yy299: - YYDEBUG(299, *YYCURSOR); + goto yy313; +yy315: + YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy298; - goto yy297; -yy300: - YYDEBUG(300, *YYCURSOR); + if (yych == '\n') goto yy314; + goto yy313; +yy316: + YYDEBUG(316, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(301, *YYCURSOR); + YYDEBUG(317, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy300; + if (yych >= '0') goto yy316; } else { - if (yych <= '@') goto yy302; - if (yych <= 'Z') goto yy300; + if (yych <= '@') goto yy318; + if (yych <= 'Z') goto yy316; } } else { if (yych <= '`') { - if (yych <= '_') goto yy300; + if (yych <= '_') goto yy316; } else { - if (yych <= 'z') goto yy300; - if (yych >= 0x7F) goto yy300; + if (yych <= 'z') goto yy316; + if (yych >= 0x7F) goto yy316; } } -yy302: - YYDEBUG(302, *YYCURSOR); +yy318: + YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2231 "Zend/zend_language_scanner.l" +#line 2202 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -4793,97 +4961,97 @@ } return T_VARIABLE; } -#line 4797 "Zend/zend_language_scanner.c" -yy303: - YYDEBUG(303, *YYCURSOR); +#line 4965 "Zend/zend_language_scanner.c" +yy319: + YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy304; - if (yych != 'r') goto yy282; -yy304: - YYDEBUG(304, *YYCURSOR); + if (yych == 'R') goto yy320; + if (yych != 'r') goto yy298; +yy320: + YYDEBUG(320, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(305, *YYCURSOR); + YYDEBUG(321, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1841 "Zend/zend_language_scanner.l" +#line 1812 "Zend/zend_language_scanner.l" { return T_LOGICAL_XOR; } -#line 4815 "Zend/zend_language_scanner.c" -yy306: - YYDEBUG(306, *YYCURSOR); +#line 4983 "Zend/zend_language_scanner.c" +yy322: + YYDEBUG(322, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(307, *YYCURSOR); + YYDEBUG(323, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1833 "Zend/zend_language_scanner.l" +#line 1804 "Zend/zend_language_scanner.l" { return T_LOGICAL_OR; } -#line 4828 "Zend/zend_language_scanner.c" -yy308: - YYDEBUG(308, *YYCURSOR); +#line 4996 "Zend/zend_language_scanner.c" +yy324: + YYDEBUG(324, *YYCURSOR); ++YYCURSOR; - YYDEBUG(309, *YYCURSOR); + YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1821 "Zend/zend_language_scanner.l" +#line 1792 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 4838 "Zend/zend_language_scanner.c" -yy310: - YYDEBUG(310, *YYCURSOR); +#line 5006 "Zend/zend_language_scanner.c" +yy326: + YYDEBUG(326, *YYCURSOR); ++YYCURSOR; - YYDEBUG(311, *YYCURSOR); + YYDEBUG(327, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1825 "Zend/zend_language_scanner.l" +#line 1796 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 4848 "Zend/zend_language_scanner.c" -yy312: - YYDEBUG(312, *YYCURSOR); +#line 5016 "Zend/zend_language_scanner.c" +yy328: + YYDEBUG(328, *YYCURSOR); ++YYCURSOR; - YYDEBUG(313, *YYCURSOR); + YYDEBUG(329, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1817 "Zend/zend_language_scanner.l" +#line 1788 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 4858 "Zend/zend_language_scanner.c" -yy314: - YYDEBUG(314, *YYCURSOR); +#line 5026 "Zend/zend_language_scanner.c" +yy330: + YYDEBUG(330, *YYCURSOR); ++YYCURSOR; - YYDEBUG(315, *YYCURSOR); + YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 1800 "Zend/zend_language_scanner.l" { return T_BOOLEAN_AND; } -#line 4868 "Zend/zend_language_scanner.c" -yy316: - YYDEBUG(316, *YYCURSOR); +#line 5036 "Zend/zend_language_scanner.c" +yy332: + YYDEBUG(332, *YYCURSOR); ++YYCURSOR; - YYDEBUG(317, *YYCURSOR); + YYDEBUG(333, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1813 "Zend/zend_language_scanner.l" +#line 1784 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 4878 "Zend/zend_language_scanner.c" -yy318: - YYDEBUG(318, *YYCURSOR); +#line 5046 "Zend/zend_language_scanner.c" +yy334: + YYDEBUG(334, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy322; - if (yych == '\r') goto yy323; -yy319: - YYDEBUG(319, *YYCURSOR); + if ((yych = *YYCURSOR) == '\n') goto yy338; + if (yych == '\r') goto yy339; +yy335: + YYDEBUG(335, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2374 "Zend/zend_language_scanner.l" +#line 2350 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -4896,348 +5064,348 @@ return yytext[0]; } } -#line 4900 "Zend/zend_language_scanner.c" -yy320: - YYDEBUG(320, *YYCURSOR); +#line 5068 "Zend/zend_language_scanner.c" +yy336: + YYDEBUG(336, *YYCURSOR); ++YYCURSOR; - YYDEBUG(321, *YYCURSOR); + YYDEBUG(337, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1801 "Zend/zend_language_scanner.l" +#line 1772 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 4910 "Zend/zend_language_scanner.c" -yy322: - YYDEBUG(322, *YYCURSOR); +#line 5078 "Zend/zend_language_scanner.c" +yy338: + YYDEBUG(338, *YYCURSOR); yych = *++YYCURSOR; - goto yy319; -yy323: - YYDEBUG(323, *YYCURSOR); + goto yy335; +yy339: + YYDEBUG(339, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy322; - goto yy319; -yy324: - YYDEBUG(324, *YYCURSOR); + if (yych == '\n') goto yy338; + goto yy335; +yy340: + YYDEBUG(340, *YYCURSOR); yyaccept = 5; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(325, *YYCURSOR); + YYDEBUG(341, *YYCURSOR); if (yych <= 'D') { - if (yych <= '/') goto yy285; - if (yych <= '9') goto yy324; - goto yy285; - } else { - if (yych <= 'E') goto yy288; - if (yych == 'e') goto yy288; - goto yy285; + if (yych <= '/') goto yy301; + if (yych <= '9') goto yy340; + goto yy301; + } else { + if (yych <= 'E') goto yy304; + if (yych == 'e') goto yy304; + goto yy301; } -yy326: - YYDEBUG(326, *YYCURSOR); +yy342: + YYDEBUG(342, *YYCURSOR); ++YYCURSOR; - YYDEBUG(327, *YYCURSOR); + YYDEBUG(343, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1797 "Zend/zend_language_scanner.l" +#line 1768 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 4945 "Zend/zend_language_scanner.c" -yy328: - YYDEBUG(328, *YYCURSOR); +#line 5113 "Zend/zend_language_scanner.c" +yy344: + YYDEBUG(344, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy333; -yy329: - YYDEBUG(329, *YYCURSOR); + if (yych == '*') goto yy349; +yy345: + YYDEBUG(345, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2332 "Zend/zend_language_scanner.l" +#line 2308 "Zend/zend_language_scanner.l" { BEGIN(ST_COMMENT); yymore(); } -#line 4959 "Zend/zend_language_scanner.c" -yy330: - YYDEBUG(330, *YYCURSOR); +#line 5127 "Zend/zend_language_scanner.c" +yy346: + YYDEBUG(346, *YYCURSOR); yych = *++YYCURSOR; - goto yy257; -yy331: - YYDEBUG(331, *YYCURSOR); + goto yy273; +yy347: + YYDEBUG(347, *YYCURSOR); ++YYCURSOR; - YYDEBUG(332, *YYCURSOR); + YYDEBUG(348, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1793 "Zend/zend_language_scanner.l" +#line 1764 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 4973 "Zend/zend_language_scanner.c" -yy333: - YYDEBUG(333, *YYCURSOR); +#line 5141 "Zend/zend_language_scanner.c" +yy349: + YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy334; + goto yy350; } - goto yy272; -yy334: - YYDEBUG(334, *YYCURSOR); + goto yy284; +yy350: + YYDEBUG(350, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(335, *YYCURSOR); + YYDEBUG(351, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy334; + goto yy350; } - YYDEBUG(336, *YYCURSOR); + YYDEBUG(352, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2326 "Zend/zend_language_scanner.l" +#line 2297 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); BEGIN(ST_DOC_COMMENT); yymore(); } -#line 4998 "Zend/zend_language_scanner.c" -yy337: - YYDEBUG(337, *YYCURSOR); +#line 5166 "Zend/zend_language_scanner.c" +yy353: + YYDEBUG(353, *YYCURSOR); ++YYCURSOR; - YYDEBUG(338, *YYCURSOR); + YYDEBUG(354, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1789 "Zend/zend_language_scanner.l" +#line 1760 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 5008 "Zend/zend_language_scanner.c" -yy339: - YYDEBUG(339, *YYCURSOR); +#line 5176 "Zend/zend_language_scanner.c" +yy355: + YYDEBUG(355, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy343; - YYDEBUG(340, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy359; + YYDEBUG(356, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1849 "Zend/zend_language_scanner.l" +#line 1820 "Zend/zend_language_scanner.l" { return T_SR; } -#line 5019 "Zend/zend_language_scanner.c" -yy341: - YYDEBUG(341, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(342, *YYCURSOR); +#line 5187 "Zend/zend_language_scanner.c" +yy357: + YYDEBUG(357, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(358, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1777 "Zend/zend_language_scanner.l" +#line 1748 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 5029 "Zend/zend_language_scanner.c" -yy343: - YYDEBUG(343, *YYCURSOR); +#line 5197 "Zend/zend_language_scanner.c" +yy359: + YYDEBUG(359, *YYCURSOR); ++YYCURSOR; - YYDEBUG(344, *YYCURSOR); + YYDEBUG(360, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1809 "Zend/zend_language_scanner.l" +#line 1780 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 5039 "Zend/zend_language_scanner.c" -yy345: - YYDEBUG(345, *YYCURSOR); +#line 5207 "Zend/zend_language_scanner.c" +yy361: + YYDEBUG(361, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy346; - if (yych <= '<') goto yy361; - if (yych <= '=') goto yy359; -yy346: - YYDEBUG(346, *YYCURSOR); + if (yych <= ';') goto yy362; + if (yych <= '<') goto yy377; + if (yych <= '=') goto yy375; +yy362: + YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1845 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { return T_SL; } -#line 5054 "Zend/zend_language_scanner.c" -yy347: - YYDEBUG(347, *YYCURSOR); +#line 5222 "Zend/zend_language_scanner.c" +yy363: + YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy352; - if (yych == 's') goto yy352; - goto yy272; -yy348: - YYDEBUG(348, *YYCURSOR); + if (yych == 'S') goto yy368; + if (yych == 's') goto yy368; + goto yy284; +yy364: + YYDEBUG(364, *YYCURSOR); ++YYCURSOR; - YYDEBUG(349, *YYCURSOR); + YYDEBUG(365, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1773 "Zend/zend_language_scanner.l" +#line 1744 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 5070 "Zend/zend_language_scanner.c" -yy350: - YYDEBUG(350, *YYCURSOR); +#line 5238 "Zend/zend_language_scanner.c" +yy366: + YYDEBUG(366, *YYCURSOR); ++YYCURSOR; -yy351: - YYDEBUG(351, *YYCURSOR); +yy367: + YYDEBUG(367, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1769 "Zend/zend_language_scanner.l" +#line 1740 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 5081 "Zend/zend_language_scanner.c" -yy352: - YYDEBUG(352, *YYCURSOR); +#line 5249 "Zend/zend_language_scanner.c" +yy368: + YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy353; - if (yych != 'c') goto yy272; -yy353: - YYDEBUG(353, *YYCURSOR); + if (yych == 'C') goto yy369; + if (yych != 'c') goto yy284; +yy369: + YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy354; - if (yych != 'r') goto yy272; -yy354: - YYDEBUG(354, *YYCURSOR); + if (yych == 'R') goto yy370; + if (yych != 'r') goto yy284; +yy370: + YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy355; - if (yych != 'i') goto yy272; -yy355: - YYDEBUG(355, *YYCURSOR); + if (yych == 'I') goto yy371; + if (yych != 'i') goto yy284; +yy371: + YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy356; - if (yych != 'p') goto yy272; -yy356: - YYDEBUG(356, *YYCURSOR); + if (yych == 'P') goto yy372; + if (yych != 'p') goto yy284; +yy372: + YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy357; - if (yych != 't') goto yy272; -yy357: - YYDEBUG(357, *YYCURSOR); + if (yych == 'T') goto yy373; + if (yych != 't') goto yy284; +yy373: + YYDEBUG(373, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(358, *YYCURSOR); + YYDEBUG(374, *YYCURSOR); if (yych <= '\r') { - if (yych <= 0x08) goto yy272; - if (yych <= '\n') goto yy357; - if (yych <= '\f') goto yy272; - goto yy357; + if (yych <= 0x08) goto yy284; + if (yych <= '\n') goto yy373; + if (yych <= '\f') goto yy284; + goto yy373; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy272; - goto yy357; + if (yych <= 0x1F) goto yy284; + goto yy373; } else { - if (yych == '>') goto yy296; - goto yy272; + if (yych == '>') goto yy312; + goto yy284; } } -yy359: - YYDEBUG(359, *YYCURSOR); +yy375: + YYDEBUG(375, *YYCURSOR); ++YYCURSOR; - YYDEBUG(360, *YYCURSOR); + YYDEBUG(376, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 1776 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 5136 "Zend/zend_language_scanner.c" -yy361: - YYDEBUG(361, *YYCURSOR); +#line 5304 "Zend/zend_language_scanner.c" +yy377: + YYDEBUG(377, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(362, *YYCURSOR); + YYDEBUG(378, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy361; + goto yy377; } if (yych <= 'Z') { if (yych <= '&') { - if (yych == '"') goto yy366; - goto yy272; + if (yych == '"') goto yy382; + goto yy284; } else { - if (yych <= '\'') goto yy365; - if (yych <= '@') goto yy272; + if (yych <= '\'') goto yy381; + if (yych <= '@') goto yy284; } } else { if (yych <= '`') { - if (yych != '_') goto yy272; + if (yych != '_') goto yy284; } else { - if (yych <= 'z') goto yy363; - if (yych <= '~') goto yy272; + if (yych <= 'z') goto yy379; + if (yych <= '~') goto yy284; } } -yy363: - YYDEBUG(363, *YYCURSOR); +yy379: + YYDEBUG(379, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(364, *YYCURSOR); + YYDEBUG(380, *YYCURSOR); if (yych <= '@') { if (yych <= '\f') { - if (yych == '\n') goto yy370; - goto yy272; + if (yych == '\n') goto yy386; + goto yy284; } else { - if (yych <= '\r') goto yy372; - if (yych <= '/') goto yy272; - if (yych <= '9') goto yy363; - goto yy272; + if (yych <= '\r') goto yy388; + if (yych <= '/') goto yy284; + if (yych <= '9') goto yy379; + goto yy284; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy363; - if (yych <= '^') goto yy272; - goto yy363; + if (yych <= 'Z') goto yy379; + if (yych <= '^') goto yy284; + goto yy379; } else { - if (yych <= '`') goto yy272; - if (yych <= 'z') goto yy363; - if (yych <= '~') goto yy272; - goto yy363; + if (yych <= '`') goto yy284; + if (yych <= 'z') goto yy379; + if (yych <= '~') goto yy284; + goto yy379; } } -yy365: - YYDEBUG(365, *YYCURSOR); +yy381: + YYDEBUG(381, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\'') goto yy272; - if (yych <= '/') goto yy374; - if (yych <= '9') goto yy272; - goto yy374; -yy366: - YYDEBUG(366, *YYCURSOR); + if (yych == '\'') goto yy284; + if (yych <= '/') goto yy390; + if (yych <= '9') goto yy284; + goto yy390; +yy382: + YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '"') goto yy272; - if (yych <= '/') goto yy368; - if (yych <= '9') goto yy272; - goto yy368; -yy367: - YYDEBUG(367, *YYCURSOR); + if (yych == '"') goto yy284; + if (yych <= '/') goto yy384; + if (yych <= '9') goto yy284; + goto yy384; +yy383: + YYDEBUG(383, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy368: - YYDEBUG(368, *YYCURSOR); +yy384: + YYDEBUG(384, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych != '"') goto yy272; + if (yych != '"') goto yy284; } else { - if (yych <= '9') goto yy367; - if (yych <= '@') goto yy272; - goto yy367; + if (yych <= '9') goto yy383; + if (yych <= '@') goto yy284; + goto yy383; } } else { if (yych <= '`') { - if (yych == '_') goto yy367; - goto yy272; + if (yych == '_') goto yy383; + goto yy284; } else { - if (yych <= 'z') goto yy367; - if (yych <= '~') goto yy272; - goto yy367; + if (yych <= 'z') goto yy383; + if (yych <= '~') goto yy284; + goto yy383; } } -yy369: - YYDEBUG(369, *YYCURSOR); +yy385: + YYDEBUG(385, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy370; - if (yych == '\r') goto yy372; - goto yy272; -yy370: - YYDEBUG(370, *YYCURSOR); + if (yych == '\n') goto yy386; + if (yych == '\r') goto yy388; + goto yy284; +yy386: + YYDEBUG(386, *YYCURSOR); ++YYCURSOR; -yy371: - YYDEBUG(371, *YYCURSOR); +yy387: + YYDEBUG(387, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2432 "Zend/zend_language_scanner.l" +#line 2408 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -5281,247 +5449,247 @@ return bprefix ? T_BINARY_HEREDOC : T_START_HEREDOC; } -#line 5285 "Zend/zend_language_scanner.c" -yy372: - YYDEBUG(372, *YYCURSOR); +#line 5453 "Zend/zend_language_scanner.c" +yy388: + YYDEBUG(388, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy370; - goto yy371; -yy373: - YYDEBUG(373, *YYCURSOR); + if (yych == '\n') goto yy386; + goto yy387; +yy389: + YYDEBUG(389, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy374: - YYDEBUG(374, *YYCURSOR); +yy390: + YYDEBUG(390, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '\'') goto yy369; - goto yy272; + if (yych == '\'') goto yy385; + goto yy284; } else { - if (yych <= '9') goto yy373; - if (yych <= '@') goto yy272; - goto yy373; + if (yych <= '9') goto yy389; + if (yych <= '@') goto yy284; + goto yy389; } } else { if (yych <= '`') { - if (yych == '_') goto yy373; - goto yy272; + if (yych == '_') goto yy389; + goto yy284; } else { - if (yych <= 'z') goto yy373; - if (yych <= '~') goto yy272; - goto yy373; + if (yych <= 'z') goto yy389; + if (yych <= '~') goto yy284; + goto yy389; } } -yy375: - YYDEBUG(375, *YYCURSOR); +yy391: + YYDEBUG(391, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '=') goto yy351; - YYDEBUG(376, *YYCURSOR); + if (yych != '=') goto yy367; + YYDEBUG(392, *YYCURSOR); ++YYCURSOR; - YYDEBUG(377, *YYCURSOR); + YYDEBUG(393, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1761 "Zend/zend_language_scanner.l" +#line 1732 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 5329 "Zend/zend_language_scanner.c" -yy378: - YYDEBUG(378, *YYCURSOR); +#line 5497 "Zend/zend_language_scanner.c" +yy394: + YYDEBUG(394, *YYCURSOR); ++YYCURSOR; - YYDEBUG(379, *YYCURSOR); + YYDEBUG(395, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1781 "Zend/zend_language_scanner.l" +#line 1752 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 5339 "Zend/zend_language_scanner.c" -yy380: - YYDEBUG(380, *YYCURSOR); +#line 5507 "Zend/zend_language_scanner.c" +yy396: + YYDEBUG(396, *YYCURSOR); ++YYCURSOR; - YYDEBUG(381, *YYCURSOR); + YYDEBUG(397, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1749 "Zend/zend_language_scanner.l" +#line 1720 "Zend/zend_language_scanner.l" { return T_INC; } -#line 5349 "Zend/zend_language_scanner.c" -yy382: - YYDEBUG(382, *YYCURSOR); +#line 5517 "Zend/zend_language_scanner.c" +yy398: + YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy383; - if (yych != 's') goto yy282; -yy383: - YYDEBUG(383, *YYCURSOR); + if (yych == 'S') goto yy399; + if (yych != 's') goto yy298; +yy399: + YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy384; - if (yych != 't') goto yy282; -yy384: - YYDEBUG(384, *YYCURSOR); + if (yych == 'T') goto yy400; + if (yych != 't') goto yy298; +yy400: + YYDEBUG(400, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(385, *YYCURSOR); + YYDEBUG(401, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1741 "Zend/zend_language_scanner.l" +#line 1712 "Zend/zend_language_scanner.l" { return T_LIST; } -#line 5372 "Zend/zend_language_scanner.c" -yy386: - YYDEBUG(386, *YYCURSOR); +#line 5540 "Zend/zend_language_scanner.c" +yy402: + YYDEBUG(402, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy390; - YYDEBUG(387, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy406; + YYDEBUG(403, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1765 "Zend/zend_language_scanner.l" +#line 1736 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 5383 "Zend/zend_language_scanner.c" -yy388: - YYDEBUG(388, *YYCURSOR); +#line 5551 "Zend/zend_language_scanner.c" +yy404: + YYDEBUG(404, *YYCURSOR); ++YYCURSOR; - YYDEBUG(389, *YYCURSOR); + YYDEBUG(405, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1737 "Zend/zend_language_scanner.l" +#line 1708 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 5393 "Zend/zend_language_scanner.c" -yy390: - YYDEBUG(390, *YYCURSOR); +#line 5561 "Zend/zend_language_scanner.c" +yy406: + YYDEBUG(406, *YYCURSOR); ++YYCURSOR; - YYDEBUG(391, *YYCURSOR); + YYDEBUG(407, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1757 "Zend/zend_language_scanner.l" +#line 1728 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 5403 "Zend/zend_language_scanner.c" -yy392: - YYDEBUG(392, *YYCURSOR); +#line 5571 "Zend/zend_language_scanner.c" +yy408: + YYDEBUG(408, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'C': - case 'c': goto yy394; + case 'c': goto yy410; case 'D': - case 'd': goto yy398; + case 'd': goto yy414; case 'F': - case 'f': goto yy395; + case 'f': goto yy411; case 'H': - case 'h': goto yy393; + case 'h': goto yy409; case 'L': - case 'l': goto yy397; + case 'l': goto yy413; case 'M': - case 'm': goto yy396; + case 'm': goto yy412; case 'N': - case 'n': goto yy399; - default: goto yy282; + case 'n': goto yy415; + default: goto yy298; } -yy393: - YYDEBUG(393, *YYCURSOR); +yy409: + YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy453; - if (yych == 'a') goto yy453; - goto yy282; -yy394: - YYDEBUG(394, *YYCURSOR); + if (yych == 'A') goto yy469; + if (yych == 'a') goto yy469; + goto yy298; +yy410: + YYDEBUG(410, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy446; - if (yych == 'l') goto yy446; - goto yy282; -yy395: - YYDEBUG(395, *YYCURSOR); + if (yych == 'L') goto yy462; + if (yych == 'l') goto yy462; + goto yy298; +yy411: + YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'I') goto yy430; - if (yych <= 'T') goto yy282; - goto yy431; + if (yych == 'I') goto yy446; + if (yych <= 'T') goto yy298; + goto yy447; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy282; - goto yy430; + if (yych <= 'h') goto yy298; + goto yy446; } else { - if (yych == 'u') goto yy431; - goto yy282; + if (yych == 'u') goto yy447; + goto yy298; } } -yy396: - YYDEBUG(396, *YYCURSOR); +yy412: + YYDEBUG(412, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy422; - if (yych == 'e') goto yy422; - goto yy282; -yy397: - YYDEBUG(397, *YYCURSOR); + if (yych == 'E') goto yy438; + if (yych == 'e') goto yy438; + goto yy298; +yy413: + YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy416; - if (yych == 'i') goto yy416; - goto yy282; -yy398: - YYDEBUG(398, *YYCURSOR); + if (yych == 'I') goto yy432; + if (yych == 'i') goto yy432; + goto yy298; +yy414: + YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy411; - if (yych == 'i') goto yy411; - goto yy282; -yy399: - YYDEBUG(399, *YYCURSOR); + if (yych == 'I') goto yy427; + if (yych == 'i') goto yy427; + goto yy298; +yy415: + YYDEBUG(415, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy400; - if (yych != 'a') goto yy282; -yy400: - YYDEBUG(400, *YYCURSOR); + if (yych == 'A') goto yy416; + if (yych != 'a') goto yy298; +yy416: + YYDEBUG(416, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy401; - if (yych != 'm') goto yy282; -yy401: - YYDEBUG(401, *YYCURSOR); + if (yych == 'M') goto yy417; + if (yych != 'm') goto yy298; +yy417: + YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy402; - if (yych != 'e') goto yy282; -yy402: - YYDEBUG(402, *YYCURSOR); + if (yych == 'E') goto yy418; + if (yych != 'e') goto yy298; +yy418: + YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy403; - if (yych != 's') goto yy282; -yy403: - YYDEBUG(403, *YYCURSOR); + if (yych == 'S') goto yy419; + if (yych != 's') goto yy298; +yy419: + YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy404; - if (yych != 'p') goto yy282; -yy404: - YYDEBUG(404, *YYCURSOR); + if (yych == 'P') goto yy420; + if (yych != 'p') goto yy298; +yy420: + YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy405; - if (yych != 'a') goto yy282; -yy405: - YYDEBUG(405, *YYCURSOR); + if (yych == 'A') goto yy421; + if (yych != 'a') goto yy298; +yy421: + YYDEBUG(421, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy406; - if (yych != 'c') goto yy282; -yy406: - YYDEBUG(406, *YYCURSOR); + if (yych == 'C') goto yy422; + if (yych != 'c') goto yy298; +yy422: + YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy407; - if (yych != 'e') goto yy282; -yy407: - YYDEBUG(407, *YYCURSOR); + if (yych == 'E') goto yy423; + if (yych != 'e') goto yy298; +yy423: + YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(408, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(409, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(425, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(410, *YYCURSOR); + YYDEBUG(426, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2089 "Zend/zend_language_scanner.l" +#line 2060 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -5531,27 +5699,27 @@ } return T_NS_C; } -#line 5535 "Zend/zend_language_scanner.c" -yy411: - YYDEBUG(411, *YYCURSOR); +#line 5703 "Zend/zend_language_scanner.c" +yy427: + YYDEBUG(427, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy412; - if (yych != 'r') goto yy282; -yy412: - YYDEBUG(412, *YYCURSOR); + if (yych == 'R') goto yy428; + if (yych != 'r') goto yy298; +yy428: + YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(413, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(429, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(414, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(430, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(415, *YYCURSOR); + YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2062 "Zend/zend_language_scanner.l" +#line 2033 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -5578,73 +5746,73 @@ zendlval->type = IS_STRING; return T_DIR; } -#line 5582 "Zend/zend_language_scanner.c" -yy416: - YYDEBUG(416, *YYCURSOR); +#line 5750 "Zend/zend_language_scanner.c" +yy432: + YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy417; - if (yych != 'n') goto yy282; -yy417: - YYDEBUG(417, *YYCURSOR); + if (yych == 'N') goto yy433; + if (yych != 'n') goto yy298; +yy433: + YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy418; - if (yych != 'e') goto yy282; -yy418: - YYDEBUG(418, *YYCURSOR); + if (yych == 'E') goto yy434; + if (yych != 'e') goto yy298; +yy434: + YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(419, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(435, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(420, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(436, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(421, *YYCURSOR); + YYDEBUG(437, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2046 "Zend/zend_language_scanner.l" +#line 2017 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = CG(zend_lineno); Z_TYPE_P(zendlval) = IS_LONG; return T_LINE; } -#line 5613 "Zend/zend_language_scanner.c" -yy422: - YYDEBUG(422, *YYCURSOR); +#line 5781 "Zend/zend_language_scanner.c" +yy438: + YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy423; - if (yych != 't') goto yy282; -yy423: - YYDEBUG(423, *YYCURSOR); + if (yych == 'T') goto yy439; + if (yych != 't') goto yy298; +yy439: + YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy424; - if (yych != 'h') goto yy282; -yy424: - YYDEBUG(424, *YYCURSOR); + if (yych == 'H') goto yy440; + if (yych != 'h') goto yy298; +yy440: + YYDEBUG(440, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy425; - if (yych != 'o') goto yy282; -yy425: - YYDEBUG(425, *YYCURSOR); + if (yych == 'O') goto yy441; + if (yych != 'o') goto yy298; +yy441: + YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy426; - if (yych != 'd') goto yy282; -yy426: - YYDEBUG(426, *YYCURSOR); + if (yych == 'D') goto yy442; + if (yych != 'd') goto yy298; +yy442: + YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(427, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(443, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(428, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(444, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(429, *YYCURSOR); + YYDEBUG(445, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1997 "Zend/zend_language_scanner.l" +#line 1968 "Zend/zend_language_scanner.l" { zstr class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL_ZSTR; zstr func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL_ZSTR; @@ -5693,58 +5861,58 @@ } return T_METHOD_C; } -#line 5697 "Zend/zend_language_scanner.c" -yy430: - YYDEBUG(430, *YYCURSOR); +#line 5865 "Zend/zend_language_scanner.c" +yy446: + YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy441; - if (yych == 'l') goto yy441; - goto yy282; -yy431: - YYDEBUG(431, *YYCURSOR); + if (yych == 'L') goto yy457; + if (yych == 'l') goto yy457; + goto yy298; +yy447: + YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy432; - if (yych != 'n') goto yy282; -yy432: - YYDEBUG(432, *YYCURSOR); + if (yych == 'N') goto yy448; + if (yych != 'n') goto yy298; +yy448: + YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy433; - if (yych != 'c') goto yy282; -yy433: - YYDEBUG(433, *YYCURSOR); + if (yych == 'C') goto yy449; + if (yych != 'c') goto yy298; +yy449: + YYDEBUG(449, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy434; - if (yych != 't') goto yy282; -yy434: - YYDEBUG(434, *YYCURSOR); + if (yych == 'T') goto yy450; + if (yych != 't') goto yy298; +yy450: + YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy435; - if (yych != 'i') goto yy282; -yy435: - YYDEBUG(435, *YYCURSOR); + if (yych == 'I') goto yy451; + if (yych != 'i') goto yy298; +yy451: + YYDEBUG(451, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy436; - if (yych != 'o') goto yy282; -yy436: - YYDEBUG(436, *YYCURSOR); + if (yych == 'O') goto yy452; + if (yych != 'o') goto yy298; +yy452: + YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy437; - if (yych != 'n') goto yy282; -yy437: - YYDEBUG(437, *YYCURSOR); + if (yych == 'N') goto yy453; + if (yych != 'n') goto yy298; +yy453: + YYDEBUG(453, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(438, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(439, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(455, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(440, *YYCURSOR); + YYDEBUG(456, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1982 "Zend/zend_language_scanner.l" +#line 1953 "Zend/zend_language_scanner.l" { zstr func_name = NULL_ZSTR; @@ -5759,27 +5927,27 @@ } return T_FUNC_C; } -#line 5763 "Zend/zend_language_scanner.c" -yy441: - YYDEBUG(441, *YYCURSOR); +#line 5931 "Zend/zend_language_scanner.c" +yy457: + YYDEBUG(457, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy442; - if (yych != 'e') goto yy282; -yy442: - YYDEBUG(442, *YYCURSOR); + if (yych == 'E') goto yy458; + if (yych != 'e') goto yy298; +yy458: + YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(443, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(444, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(460, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(445, *YYCURSOR); + YYDEBUG(461, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2052 "Zend/zend_language_scanner.l" +#line 2023 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -5789,37 +5957,37 @@ ZVAL_RT_STRING(zendlval, filename, 1); return T_FILE; } -#line 5793 "Zend/zend_language_scanner.c" -yy446: - YYDEBUG(446, *YYCURSOR); +#line 5961 "Zend/zend_language_scanner.c" +yy462: + YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy447; - if (yych != 'a') goto yy282; -yy447: - YYDEBUG(447, *YYCURSOR); + if (yych == 'A') goto yy463; + if (yych != 'a') goto yy298; +yy463: + YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy448; - if (yych != 's') goto yy282; -yy448: - YYDEBUG(448, *YYCURSOR); + if (yych == 'S') goto yy464; + if (yych != 's') goto yy298; +yy464: + YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy449; - if (yych != 's') goto yy282; -yy449: - YYDEBUG(449, *YYCURSOR); + if (yych == 'S') goto yy465; + if (yych != 's') goto yy298; +yy465: + YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(450, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(466, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(451, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(467, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(452, *YYCURSOR); + YYDEBUG(468, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1967 "Zend/zend_language_scanner.l" +#line 1938 "Zend/zend_language_scanner.l" { zstr class_name = NULL_ZSTR; @@ -5834,2714 +6002,2726 @@ } return T_CLASS_C; } -#line 5838 "Zend/zend_language_scanner.c" -yy453: - YYDEBUG(453, *YYCURSOR); +#line 6006 "Zend/zend_language_scanner.c" +yy469: + YYDEBUG(469, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy454; - if (yych != 'l') goto yy282; -yy454: - YYDEBUG(454, *YYCURSOR); + if (yych == 'L') goto yy470; + if (yych != 'l') goto yy298; +yy470: + YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy455; - if (yych != 't') goto yy282; -yy455: - YYDEBUG(455, *YYCURSOR); + if (yych == 'T') goto yy471; + if (yych != 't') goto yy298; +yy471: + YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy282; - YYDEBUG(456, *YYCURSOR); + if (yych != '_') goto yy298; + YYDEBUG(472, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy457; - if (yych != 'c') goto yy282; -yy457: - YYDEBUG(457, *YYCURSOR); + if (yych == 'C') goto yy473; + if (yych != 'c') goto yy298; +yy473: + YYDEBUG(473, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy458; - if (yych != 'o') goto yy282; -yy458: - YYDEBUG(458, *YYCURSOR); + if (yych == 'O') goto yy474; + if (yych != 'o') goto yy298; +yy474: + YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy459; - if (yych != 'm') goto yy282; -yy459: - YYDEBUG(459, *YYCURSOR); + if (yych == 'M') goto yy475; + if (yych != 'm') goto yy298; +yy475: + YYDEBUG(475, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy460; - if (yych != 'p') goto yy282; -yy460: - YYDEBUG(460, *YYCURSOR); + if (yych == 'P') goto yy476; + if (yych != 'p') goto yy298; +yy476: + YYDEBUG(476, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy461; - if (yych != 'i') goto yy282; -yy461: - YYDEBUG(461, *YYCURSOR); + if (yych == 'I') goto yy477; + if (yych != 'i') goto yy298; +yy477: + YYDEBUG(477, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy462; - if (yych != 'l') goto yy282; -yy462: - YYDEBUG(462, *YYCURSOR); + if (yych == 'L') goto yy478; + if (yych != 'l') goto yy298; +yy478: + YYDEBUG(478, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy463; - if (yych != 'e') goto yy282; -yy463: - YYDEBUG(463, *YYCURSOR); + if (yych == 'E') goto yy479; + if (yych != 'e') goto yy298; +yy479: + YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy464; - if (yych != 'r') goto yy282; -yy464: - YYDEBUG(464, *YYCURSOR); + if (yych == 'R') goto yy480; + if (yych != 'r') goto yy298; +yy480: + YYDEBUG(480, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(465, *YYCURSOR); + YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1705 "Zend/zend_language_scanner.l" +#line 1676 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 5904 "Zend/zend_language_scanner.c" -yy466: - YYDEBUG(466, *YYCURSOR); +#line 6072 "Zend/zend_language_scanner.c" +yy482: + YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy470; - if (yych == 's') goto yy470; - goto yy282; -yy467: - YYDEBUG(467, *YYCURSOR); + if (yych == 'S') goto yy486; + if (yych == 's') goto yy486; + goto yy298; +yy483: + YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy468; - if (yych != 'e') goto yy282; -yy468: - YYDEBUG(468, *YYCURSOR); + if (yych == 'E') goto yy484; + if (yych != 'e') goto yy298; +yy484: + YYDEBUG(484, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(469, *YYCURSOR); + YYDEBUG(485, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1689 "Zend/zend_language_scanner.l" +#line 1660 "Zend/zend_language_scanner.l" { return T_USE; } -#line 5928 "Zend/zend_language_scanner.c" -yy470: - YYDEBUG(470, *YYCURSOR); +#line 6096 "Zend/zend_language_scanner.c" +yy486: + YYDEBUG(486, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy471; - if (yych != 'e') goto yy282; -yy471: - YYDEBUG(471, *YYCURSOR); + if (yych == 'E') goto yy487; + if (yych != 'e') goto yy298; +yy487: + YYDEBUG(487, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy472; - if (yych != 't') goto yy282; -yy472: - YYDEBUG(472, *YYCURSOR); + if (yych == 'T') goto yy488; + if (yych != 't') goto yy298; +yy488: + YYDEBUG(488, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(473, *YYCURSOR); + YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1733 "Zend/zend_language_scanner.l" +#line 1704 "Zend/zend_language_scanner.l" { return T_UNSET; } -#line 5951 "Zend/zend_language_scanner.c" -yy474: - YYDEBUG(474, *YYCURSOR); +#line 6119 "Zend/zend_language_scanner.c" +yy490: + YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYFILL(7); yych = *YYCURSOR; -yy475: - YYDEBUG(475, *YYCURSOR); +yy491: + YYDEBUG(491, *YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy474; - if (yych <= 0x1F) goto yy272; - goto yy474; + if (yych == '\t') goto yy490; + if (yych <= 0x1F) goto yy284; + goto yy490; } else { if (yych <= 'A') { - if (yych <= '@') goto yy272; - goto yy479; + if (yych <= '@') goto yy284; + goto yy495; } else { - if (yych <= 'B') goto yy477; - if (yych <= 'C') goto yy272; - goto yy482; + if (yych <= 'B') goto yy493; + if (yych <= 'C') goto yy284; + goto yy498; } } } else { if (yych <= 'I') { - if (yych == 'F') goto yy483; - if (yych <= 'H') goto yy272; - goto yy484; + if (yych == 'F') goto yy499; + if (yych <= 'H') goto yy284; + goto yy500; } else { if (yych <= 'O') { - if (yych <= 'N') goto yy272; - goto yy478; + if (yych <= 'N') goto yy284; + goto yy494; } else { - if (yych <= 'Q') goto yy272; - if (yych <= 'R') goto yy481; - goto yy480; + if (yych <= 'Q') goto yy284; + if (yych <= 'R') goto yy497; + goto yy496; } } } } else { if (yych <= 'f') { if (yych <= 'a') { - if (yych == 'U') goto yy476; - if (yych <= '`') goto yy272; - goto yy479; + if (yych == 'U') goto yy492; + if (yych <= '`') goto yy284; + goto yy495; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy477; - goto yy272; + if (yych <= 'b') goto yy493; + goto yy284; } else { - if (yych <= 'd') goto yy482; - if (yych <= 'e') goto yy272; - goto yy483; + if (yych <= 'd') goto yy498; + if (yych <= 'e') goto yy284; + goto yy499; } } } else { if (yych <= 'q') { if (yych <= 'i') { - if (yych <= 'h') goto yy272; - goto yy484; + if (yych <= 'h') goto yy284; + goto yy500; } else { - if (yych == 'o') goto yy478; - goto yy272; + if (yych == 'o') goto yy494; + goto yy284; } } else { if (yych <= 's') { - if (yych <= 'r') goto yy481; - goto yy480; + if (yych <= 'r') goto yy497; + goto yy496; } else { - if (yych != 'u') goto yy272; + if (yych != 'u') goto yy284; } } } } -yy476: - YYDEBUG(476, *YYCURSOR); +yy492: + YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy547; - if (yych == 'n') goto yy547; - goto yy272; -yy477: - YYDEBUG(477, *YYCURSOR); + if (yych == 'N') goto yy563; + if (yych == 'n') goto yy563; + goto yy284; +yy493: + YYDEBUG(493, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy530; - if (yych <= 'N') goto yy272; - goto yy531; + if (yych == 'I') goto yy546; + if (yych <= 'N') goto yy284; + goto yy547; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy272; - goto yy530; + if (yych <= 'h') goto yy284; + goto yy546; } else { - if (yych == 'o') goto yy531; - goto yy272; + if (yych == 'o') goto yy547; + goto yy284; } } -yy478: - YYDEBUG(478, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy522; - if (yych == 'b') goto yy522; - goto yy272; -yy479: - YYDEBUG(479, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy515; - if (yych == 'r') goto yy515; - goto yy272; -yy480: - YYDEBUG(480, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy507; - if (yych == 't') goto yy507; - goto yy272; -yy481: - YYDEBUG(481, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy505; - if (yych == 'e') goto yy505; - goto yy272; -yy482: - YYDEBUG(482, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy501; - if (yych == 'o') goto yy501; - goto yy272; -yy483: - YYDEBUG(483, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy494; - if (yych == 'l') goto yy494; - goto yy272; -yy484: - YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy485; - if (yych != 'n') goto yy272; -yy485: - YYDEBUG(485, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy486; - if (yych != 't') goto yy272; -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy487; - if (yych != 'e') goto yy489; -yy487: - YYDEBUG(487, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy492; - if (yych == 'g') goto yy492; - goto yy272; -yy488: - YYDEBUG(488, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy489: - YYDEBUG(489, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy488; - goto yy272; - } else { - if (yych <= ' ') goto yy488; - if (yych != ')') goto yy272; - } - YYDEBUG(490, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(491, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1629 "Zend/zend_language_scanner.l" - { - return T_INT_CAST; -} -#line 6127 "Zend/zend_language_scanner.c" -yy492: - YYDEBUG(492, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy493; - if (yych != 'e') goto yy272; -yy493: - YYDEBUG(493, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy488; - if (yych == 'r') goto yy488; - goto yy272; yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy495; - if (yych != 'o') goto yy272; + if (yych == 'B') goto yy538; + if (yych == 'b') goto yy538; + goto yy284; yy495: YYDEBUG(495, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy496; - if (yych != 'a') goto yy272; + if (yych == 'R') goto yy531; + if (yych == 'r') goto yy531; + goto yy284; yy496: YYDEBUG(496, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy497; - if (yych != 't') goto yy272; + if (yych == 'T') goto yy523; + if (yych == 't') goto yy523; + goto yy284; yy497: YYDEBUG(497, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy521; + if (yych == 'e') goto yy521; + goto yy284; +yy498: YYDEBUG(498, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy497; - goto yy272; - } else { - if (yych <= ' ') goto yy497; - if (yych != ')') goto yy272; - } + yych = *++YYCURSOR; + if (yych == 'O') goto yy517; + if (yych == 'o') goto yy517; + goto yy284; +yy499: YYDEBUG(499, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy510; + if (yych == 'l') goto yy510; + goto yy284; +yy500: YYDEBUG(500, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1633 "Zend/zend_language_scanner.l" - { - return T_DOUBLE_CAST; -} -#line 6175 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'N') goto yy501; + if (yych != 'n') goto yy284; yy501: YYDEBUG(501, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy502; - if (yych != 'u') goto yy272; + if (yych == 'T') goto yy502; + if (yych != 't') goto yy284; yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy503; - if (yych != 'b') goto yy272; + if (yych == 'E') goto yy503; + if (yych != 'e') goto yy505; yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy504; - if (yych != 'l') goto yy272; + if (yych == 'G') goto yy508; + if (yych == 'g') goto yy508; + goto yy284; yy504: YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy497; - if (yych == 'e') goto yy497; - goto yy272; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy505: YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy506; - if (yych != 'a') goto yy272; -yy506: + if (yych <= 0x1F) { + if (yych == '\t') goto yy504; + goto yy284; + } else { + if (yych <= ' ') goto yy504; + if (yych != ')') goto yy284; + } YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy497; - if (yych == 'l') goto yy497; - goto yy272; -yy507: + ++YYCURSOR; YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy508; - if (yych != 'r') goto yy272; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1600 "Zend/zend_language_scanner.l" + { + return T_INT_CAST; +} +#line 6295 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy509; - if (yych != 'i') goto yy272; + if (yych == 'E') goto yy509; + if (yych != 'e') goto yy284; yy509: YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy510; - if (yych != 'n') goto yy272; + if (yych == 'R') goto yy504; + if (yych == 'r') goto yy504; + goto yy284; yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy511; - if (yych != 'g') goto yy272; + if (yych == 'O') goto yy511; + if (yych != 'o') goto yy284; yy511: YYDEBUG(511, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy512; + if (yych != 'a') goto yy284; +yy512: + YYDEBUG(512, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy513; + if (yych != 't') goto yy284; +yy513: + YYDEBUG(513, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(512, *YYCURSOR); + YYDEBUG(514, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy511; - goto yy272; + if (yych == '\t') goto yy513; + goto yy284; } else { - if (yych <= ' ') goto yy511; - if (yych != ')') goto yy272; + if (yych <= ' ') goto yy513; + if (yych != ')') goto yy284; } - YYDEBUG(513, *YYCURSOR); + YYDEBUG(515, *YYCURSOR); ++YYCURSOR; - YYDEBUG(514, *YYCURSOR); + YYDEBUG(516, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { - return T_STRING_CAST; + return T_DOUBLE_CAST; } -#line 6249 "Zend/zend_language_scanner.c" -yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy516; - if (yych != 'r') goto yy272; -yy516: - YYDEBUG(516, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy517; - if (yych != 'a') goto yy272; +#line 6343 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy518; - if (yych != 'y') goto yy272; + if (yych == 'U') goto yy518; + if (yych != 'u') goto yy284; yy518: YYDEBUG(518, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'B') goto yy519; + if (yych != 'b') goto yy284; +yy519: YYDEBUG(519, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy518; - goto yy272; - } else { - if (yych <= ' ') goto yy518; - if (yych != ')') goto yy272; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy520; + if (yych != 'l') goto yy284; +yy520: YYDEBUG(520, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy513; + if (yych == 'e') goto yy513; + goto yy284; +yy521: YYDEBUG(521, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1649 "Zend/zend_language_scanner.l" - { - return T_ARRAY_CAST; -} -#line 6286 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy522; + if (yych != 'a') goto yy284; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy523; - if (yych != 'j') goto yy272; + if (yych == 'L') goto yy513; + if (yych == 'l') goto yy513; + goto yy284; yy523: YYDEBUG(523, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy524; - if (yych != 'e') goto yy272; + if (yych == 'R') goto yy524; + if (yych != 'r') goto yy284; yy524: YYDEBUG(524, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy525; - if (yych != 'c') goto yy272; + if (yych == 'I') goto yy525; + if (yych != 'i') goto yy284; yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy526; - if (yych != 't') goto yy272; + if (yych == 'N') goto yy526; + if (yych != 'n') goto yy284; yy526: YYDEBUG(526, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy527; + if (yych != 'g') goto yy284; +yy527: + YYDEBUG(527, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(527, *YYCURSOR); + YYDEBUG(528, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy526; - goto yy272; + if (yych == '\t') goto yy527; + goto yy284; } else { - if (yych <= ' ') goto yy526; - if (yych != ')') goto yy272; + if (yych <= ' ') goto yy527; + if (yych != ')') goto yy284; } - YYDEBUG(528, *YYCURSOR); - ++YYCURSOR; YYDEBUG(529, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(530, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1608 "Zend/zend_language_scanner.l" { - return T_OBJECT_CAST; + return T_STRING_CAST; } -#line 6328 "Zend/zend_language_scanner.c" -yy530: - YYDEBUG(530, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy540; - if (yych == 'n') goto yy540; - goto yy272; +#line 6417 "Zend/zend_language_scanner.c" yy531: YYDEBUG(531, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy532; - if (yych != 'o') goto yy272; + if (yych == 'R') goto yy532; + if (yych != 'r') goto yy284; yy532: YYDEBUG(532, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy533; - if (yych != 'l') goto yy272; + if (yych == 'A') goto yy533; + if (yych != 'a') goto yy284; yy533: YYDEBUG(533, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy538; - if (yych == 'e') goto yy538; - goto yy535; + if (yych == 'Y') goto yy534; + if (yych != 'y') goto yy284; yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy535: YYDEBUG(535, *YYCURSOR); if (yych <= 0x1F) { if (yych == '\t') goto yy534; - goto yy272; + goto yy284; } else { if (yych <= ' ') goto yy534; - if (yych != ')') goto yy272; + if (yych != ')') goto yy284; } YYDEBUG(536, *YYCURSOR); ++YYCURSOR; YYDEBUG(537, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1657 "Zend/zend_language_scanner.l" +#line 1620 "Zend/zend_language_scanner.l" { - return T_BOOL_CAST; + return T_ARRAY_CAST; } -#line 6373 "Zend/zend_language_scanner.c" +#line 6454 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy539; - if (yych != 'a') goto yy272; + if (yych == 'J') goto yy539; + if (yych != 'j') goto yy284; yy539: YYDEBUG(539, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy534; - if (yych == 'n') goto yy534; - goto yy272; + if (yych == 'E') goto yy540; + if (yych != 'e') goto yy284; yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy541; - if (yych != 'a') goto yy272; + if (yych == 'C') goto yy541; + if (yych != 'c') goto yy284; yy541: YYDEBUG(541, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy542; - if (yych != 'r') goto yy272; + if (yych == 'T') goto yy542; + if (yych != 't') goto yy284; yy542: YYDEBUG(542, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy543; - if (yych != 'y') goto yy272; -yy543: - YYDEBUG(543, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(544, *YYCURSOR); + YYDEBUG(543, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy543; - goto yy272; + if (yych == '\t') goto yy542; + goto yy284; } else { - if (yych <= ' ') goto yy543; - if (yych != ')') goto yy272; + if (yych <= ' ') goto yy542; + if (yych != ')') goto yy284; } - YYDEBUG(545, *YYCURSOR); + YYDEBUG(544, *YYCURSOR); ++YYCURSOR; - YYDEBUG(546, *YYCURSOR); + YYDEBUG(545, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1624 "Zend/zend_language_scanner.l" { - return T_BINARY_CAST; + return T_OBJECT_CAST; } -#line 6421 "Zend/zend_language_scanner.c" +#line 6496 "Zend/zend_language_scanner.c" +yy546: + YYDEBUG(546, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy556; + if (yych == 'n') goto yy556; + goto yy284; yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'I') goto yy549; - if (yych <= 'R') goto yy272; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy272; - goto yy549; - } else { - if (yych != 's') goto yy272; - } - } + if (yych == 'O') goto yy548; + if (yych != 'o') goto yy284; +yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy557; - if (yych == 'e') goto yy557; - goto yy272; + if (yych == 'L') goto yy549; + if (yych != 'l') goto yy284; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy550; - if (yych != 'c') goto yy272; + if (yych == 'E') goto yy554; + if (yych == 'e') goto yy554; + goto yy551; yy550: YYDEBUG(550, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy551; - if (yych != 'o') goto yy272; -yy551: - YYDEBUG(551, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy552; - if (yych != 'd') goto yy272; -yy552: - YYDEBUG(552, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy553; - if (yych != 'e') goto yy272; -yy553: - YYDEBUG(553, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(554, *YYCURSOR); +yy551: + YYDEBUG(551, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy553; - goto yy272; + if (yych == '\t') goto yy550; + goto yy284; } else { - if (yych <= ' ') goto yy553; - if (yych != ')') goto yy272; + if (yych <= ' ') goto yy550; + if (yych != ')') goto yy284; } - YYDEBUG(555, *YYCURSOR); + YYDEBUG(552, *YYCURSOR); ++YYCURSOR; - YYDEBUG(556, *YYCURSOR); + YYDEBUG(553, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { - return T_UNICODE_CAST; + return T_BOOL_CAST; } -#line 6482 "Zend/zend_language_scanner.c" +#line 6541 "Zend/zend_language_scanner.c" +yy554: + YYDEBUG(554, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy555; + if (yych != 'a') goto yy284; +yy555: + YYDEBUG(555, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy550; + if (yych == 'n') goto yy550; + goto yy284; +yy556: + YYDEBUG(556, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy557; + if (yych != 'a') goto yy284; yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy558; - if (yych != 't') goto yy272; + if (yych == 'R') goto yy558; + if (yych != 'r') goto yy284; yy558: YYDEBUG(558, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy559; + if (yych != 'y') goto yy284; +yy559: + YYDEBUG(559, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(559, *YYCURSOR); + YYDEBUG(560, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy558; - goto yy272; + if (yych == '\t') goto yy559; + goto yy284; } else { - if (yych <= ' ') goto yy558; - if (yych != ')') goto yy272; + if (yych <= ' ') goto yy559; + if (yych != ')') goto yy284; } - YYDEBUG(560, *YYCURSOR); - ++YYCURSOR; YYDEBUG(561, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1616 "Zend/zend_language_scanner.l" { - return T_UNSET_CAST; + return T_BINARY_CAST; } -#line 6509 "Zend/zend_language_scanner.c" -yy562: - YYDEBUG(562, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy563; - if (yych != 'r') goto yy282; +#line 6589 "Zend/zend_language_scanner.c" yy563: YYDEBUG(563, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == 'I') goto yy565; + if (yych <= 'R') goto yy284; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy284; + goto yy565; + } else { + if (yych != 's') goto yy284; + } } YYDEBUG(564, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" - { - return T_VAR; -} -#line 6527 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy573; + if (yych == 'e') goto yy573; + goto yy284; yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy569; - if (yych == 'm') goto yy569; - goto yy282; + if (yych == 'C') goto yy566; + if (yych != 'c') goto yy284; yy566: YYDEBUG(566, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy567; - if (yych != 'w') goto yy282; + if (yych == 'O') goto yy567; + if (yych != 'o') goto yy284; yy567: YYDEBUG(567, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'D') goto yy568; + if (yych != 'd') goto yy284; +yy568: YYDEBUG(568, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1617 "Zend/zend_language_scanner.l" - { - return T_NEW; -} -#line 6551 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy569; + if (yych != 'e') goto yy284; yy569: YYDEBUG(569, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy570; - if (yych != 'e') goto yy282; -yy570: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(570, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy571; - if (yych != 's') goto yy282; -yy571: + if (yych <= 0x1F) { + if (yych == '\t') goto yy569; + goto yy284; + } else { + if (yych <= ' ') goto yy569; + if (yych != ')') goto yy284; + } YYDEBUG(571, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy572; - if (yych != 'p') goto yy282; -yy572: + ++YYCURSOR; YYDEBUG(572, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy573; - if (yych != 'a') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1612 "Zend/zend_language_scanner.l" + { + return T_UNICODE_CAST; +} +#line 6650 "Zend/zend_language_scanner.c" yy573: YYDEBUG(573, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy574; - if (yych != 'c') goto yy282; + if (yych == 'T') goto yy574; + if (yych != 't') goto yy284; yy574: YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy575; - if (yych != 'e') goto yy282; -yy575: - YYDEBUG(575, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(575, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy574; + goto yy284; + } else { + if (yych <= ' ') goto yy574; + if (yych != ')') goto yy284; } YYDEBUG(576, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1685 "Zend/zend_language_scanner.l" - { - return T_NAMESPACE; -} -#line 6594 "Zend/zend_language_scanner.c" -yy577: - YYDEBUG(577, *YYCURSOR); ++YYCURSOR; - YYDEBUG(578, *YYCURSOR); + YYDEBUG(577, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1609 "Zend/zend_language_scanner.l" +#line 1632 "Zend/zend_language_scanner.l" { - return T_PAAMAYIM_NEKUDOTAYIM; + return T_UNSET_CAST; } -#line 6604 "Zend/zend_language_scanner.c" +#line 6677 "Zend/zend_language_scanner.c" +yy578: + YYDEBUG(578, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy579; + if (yych != 'r') goto yy298; yy579: YYDEBUG(579, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy580: - YYDEBUG(580, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy221; - if (yych <= '\n') goto yy579; - goto yy221; - } else { - if (yych <= '\r') goto yy579; - if (yych == ' ') goto yy579; - goto yy221; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; } -yy581: - YYDEBUG(581, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(582, *YYCURSOR); + YYDEBUG(580, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1785 "Zend/zend_language_scanner.l" +#line 1596 "Zend/zend_language_scanner.l" { - return T_MINUS_EQUAL; + return T_VAR; } -#line 6630 "Zend/zend_language_scanner.c" +#line 6695 "Zend/zend_language_scanner.c" +yy581: + YYDEBUG(581, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy585; + if (yych == 'm') goto yy585; + goto yy298; +yy582: + YYDEBUG(582, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy583; + if (yych != 'w') goto yy298; yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1753 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { - return T_DEC; + return T_NEW; } -#line 6640 "Zend/zend_language_scanner.c" +#line 6719 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy586; + if (yych != 'e') goto yy298; +yy586: YYDEBUG(586, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); - return T_OBJECT_OPERATOR; -} -#line 6651 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy587; + if (yych != 's') goto yy298; yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy594; - if (yych <= 'N') goto yy282; - goto yy595; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy282; - goto yy594; - } else { - if (yych == 'o') goto yy595; - goto yy282; - } - } + if (yych == 'P') goto yy588; + if (yych != 'p') goto yy298; yy588: YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy589; - if (yych != 'b') goto yy282; + if (yych == 'A') goto yy589; + if (yych != 'a') goto yy298; yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy590; - if (yych != 'l') goto yy282; + if (yych == 'C') goto yy590; + if (yych != 'c') goto yy298; yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy591; - if (yych != 'i') goto yy282; + if (yych == 'E') goto yy591; + if (yych != 'e') goto yy298; yy591: YYDEBUG(591, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy592; - if (yych != 'c') goto yy282; -yy592: - YYDEBUG(592, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(593, *YYCURSOR); + YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1729 "Zend/zend_language_scanner.l" +#line 1656 "Zend/zend_language_scanner.l" { - return T_PUBLIC; + return T_NAMESPACE; } -#line 6700 "Zend/zend_language_scanner.c" -yy594: +#line 6762 "Zend/zend_language_scanner.c" +yy593: + YYDEBUG(593, *YYCURSOR); + ++YYCURSOR; YYDEBUG(594, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy603; - if (yych <= 'U') goto yy282; - goto yy604; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy282; - goto yy603; - } else { - if (yych == 'v') goto yy604; - goto yy282; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 1580 "Zend/zend_language_scanner.l" + { + return T_PAAMAYIM_NEKUDOTAYIM; +} +#line 6772 "Zend/zend_language_scanner.c" yy595: YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy596; - if (yych != 't') goto yy282; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy596: YYDEBUG(596, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy597; - if (yych != 'e') goto yy282; + if (yych <= '\f') { + if (yych <= 0x08) goto yy237; + if (yych <= '\n') goto yy595; + goto yy237; + } else { + if (yych <= '\r') goto yy595; + if (yych == ' ') goto yy595; + goto yy237; + } yy597: YYDEBUG(597, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy598; - if (yych != 'c') goto yy282; -yy598: + ++YYCURSOR; YYDEBUG(598, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy599; - if (yych != 't') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1756 "Zend/zend_language_scanner.l" + { + return T_MINUS_EQUAL; +} +#line 6798 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy600; - if (yych != 'e') goto yy282; -yy600: + ++YYCURSOR; YYDEBUG(600, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy601; - if (yych != 'd') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1724 "Zend/zend_language_scanner.l" + { + return T_DEC; +} +#line 6808 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1725 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { - return T_PROTECTED; + yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); + return T_OBJECT_OPERATOR; } -#line 6759 "Zend/zend_language_scanner.c" +#line 6819 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy609; - if (yych == 't') goto yy609; - goto yy282; + if (yych <= 'O') { + if (yych == 'I') goto yy610; + if (yych <= 'N') goto yy298; + goto yy611; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy298; + goto yy610; + } else { + if (yych == 'o') goto yy611; + goto yy298; + } + } yy604: YYDEBUG(604, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy605; - if (yych != 'a') goto yy282; + if (yych == 'B') goto yy605; + if (yych != 'b') goto yy298; yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy606; - if (yych != 't') goto yy282; + if (yych == 'L') goto yy606; + if (yych != 'l') goto yy298; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy607; - if (yych != 'e') goto yy282; + if (yych == 'I') goto yy607; + if (yych != 'i') goto yy298; yy607: YYDEBUG(607, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy608; + if (yych != 'c') goto yy298; +yy608: + YYDEBUG(608, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(608, *YYCURSOR); + YYDEBUG(609, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1721 "Zend/zend_language_scanner.l" +#line 1700 "Zend/zend_language_scanner.l" { - return T_PRIVATE; + return T_PUBLIC; } -#line 6793 "Zend/zend_language_scanner.c" -yy609: - YYDEBUG(609, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } +#line 6868 "Zend/zend_language_scanner.c" +yy610: YYDEBUG(610, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" - { - return T_PRINT; -} -#line 6806 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych == 'N') goto yy619; + if (yych <= 'U') goto yy298; + goto yy620; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy298; + goto yy619; + } else { + if (yych == 'v') goto yy620; + goto yy298; + } + } yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy616; - if (yych == 'o') goto yy616; - goto yy282; + if (yych == 'T') goto yy612; + if (yych != 't') goto yy298; yy612: YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy613; - if (yych != 't') goto yy282; + if (yych == 'E') goto yy613; + if (yych != 'e') goto yy298; yy613: YYDEBUG(613, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy614; - if (yych != 'o') goto yy282; + if (yych == 'C') goto yy614; + if (yych != 'c') goto yy298; yy614: YYDEBUG(614, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'T') goto yy615; + if (yych != 't') goto yy298; +yy615: YYDEBUG(615, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1547 "Zend/zend_language_scanner.l" - { - return T_GOTO; -} -#line 6835 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy616; + if (yych != 'e') goto yy298; yy616: YYDEBUG(616, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy617; - if (yych != 'b') goto yy282; + if (yych == 'D') goto yy617; + if (yych != 'd') goto yy298; yy617: YYDEBUG(617, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy618; - if (yych != 'a') goto yy282; -yy618: - YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy619; - if (yych != 'l') goto yy282; -yy619: - YYDEBUG(619, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(620, *YYCURSOR); + YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1693 "Zend/zend_language_scanner.l" +#line 1696 "Zend/zend_language_scanner.l" { - return T_GLOBAL; + return T_PROTECTED; } -#line 6863 "Zend/zend_language_scanner.c" +#line 6927 "Zend/zend_language_scanner.c" +yy619: + YYDEBUG(619, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy625; + if (yych == 't') goto yy625; + goto yy298; +yy620: + YYDEBUG(620, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy621; + if (yych != 'a') goto yy298; yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy644; - goto yy272; + if (yych == 'T') goto yy622; + if (yych != 't') goto yy298; yy622: YYDEBUG(622, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - goto yy637; + yych = *++YYCURSOR; + if (yych == 'E') goto yy623; + if (yych != 'e') goto yy298; yy623: YYDEBUG(623, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } + YYDEBUG(624, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2427 "Zend/zend_language_scanner.l" +#line 1692 "Zend/zend_language_scanner.l" { - BEGIN(ST_DOUBLE_QUOTES); - return T_BINARY_DOUBLE; + return T_PRIVATE; } -#line 6882 "Zend/zend_language_scanner.c" -yy624: - YYDEBUG(624, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; +#line 6961 "Zend/zend_language_scanner.c" +yy625: YYDEBUG(625, *YYCURSOR); - if (yych == '\'') goto yy632; - if (yych == '\\') goto yy631; - goto yy624; -yy626: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(626, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy627; - if (yych != 'e') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1526 "Zend/zend_language_scanner.l" + { + return T_PRINT; +} +#line 6974 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy628; - if (yych != 'a') goto yy282; + if (yych == 'O') goto yy632; + if (yych == 'o') goto yy632; + goto yy298; yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy629; - if (yych != 'k') goto yy282; + if (yych == 'T') goto yy629; + if (yych != 't') goto yy298; yy629: YYDEBUG(629, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy630; + if (yych != 'o') goto yy298; +yy630: + YYDEBUG(630, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(630, *YYCURSOR); + YYDEBUG(631, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1539 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { - return T_BREAK; + return T_GOTO; } -#line 6919 "Zend/zend_language_scanner.c" -yy631: - YYDEBUG(631, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - goto yy624; +#line 7003 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'B') goto yy633; + if (yych != 'b') goto yy298; +yy633: YYDEBUG(633, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2416 "Zend/zend_language_scanner.l" - { - zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; -} -#line 6936 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy634; + if (yych != 'a') goto yy298; yy634: YYDEBUG(634, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'L') goto yy635; + if (yych != 'l') goto yy298; +yy635: YYDEBUG(635, *YYCURSOR); - if (yych <= '$') { - if (yych == '"') goto yy641; - if (yych >= '$') goto yy272; - } else { - if (yych <= '\\') { - if (yych >= '\\') goto yy638; - } else { - if (yych == '{') goto yy634; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; } -yy636: YYDEBUG(636, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1664 "Zend/zend_language_scanner.l" + { + return T_GLOBAL; +} +#line 7031 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); - if (yych <= '$') { - if (yych == '"') goto yy641; - if (yych <= '#') goto yy636; - goto yy639; - } else { - if (yych <= '\\') { - if (yych <= '[') goto yy636; - } else { - if (yych == '{') goto yy634; - goto yy636; - } - } + yych = *++YYCURSOR; + if (yych == '<') goto yy660; + goto yy284; yy638: YYDEBUG(638, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - goto yy636; + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych >= 0x01) goto yy653; yy639: YYDEBUG(639, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2403 "Zend/zend_language_scanner.l" + { + BEGIN(ST_DOUBLE_QUOTES); + return T_BINARY_DOUBLE; +} +#line 7050 "Zend/zend_language_scanner.c" +yy640: + YYDEBUG(640, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(640, *YYCURSOR); - if (yych <= '[') { - if (yych <= '#') { - if (yych != '"') goto yy636; - } else { - if (yych <= '$') goto yy639; - if (yych <= '@') goto yy636; - if (yych <= 'Z') goto yy272; - goto yy636; - } - } else { - if (yych <= '_') { - if (yych <= '\\') goto yy643; - if (yych <= '^') goto yy636; - goto yy272; - } else { - if (yych <= '`') goto yy636; - if (yych <= '{') goto yy272; - if (yych <= '~') goto yy636; - goto yy272; - } - } -yy641: YYDEBUG(641, *YYCURSOR); - ++YYCURSOR; + if (yych == '\'') goto yy648; + if (yych == '\\') goto yy647; + goto yy640; +yy642: YYDEBUG(642, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2400 "Zend/zend_language_scanner.l" - { - zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; -} -#line 7015 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy643; + if (yych != 'e') goto yy298; yy643: YYDEBUG(643, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - goto yy636; + yych = *++YYCURSOR; + if (yych == 'A') goto yy644; + if (yych != 'a') goto yy298; yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy361; - goto yy272; + if (yych == 'K') goto yy645; + if (yych != 'k') goto yy298; yy645: YYDEBUG(645, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy652; - if (yych == 'a') goto yy652; - goto yy282; -yy646: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(646, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy647; - if (yych != 'i') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1510 "Zend/zend_language_scanner.l" + { + return T_BREAK; +} +#line 7087 "Zend/zend_language_scanner.c" yy647: YYDEBUG(647, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy648; - if (yych != 't') goto yy282; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy284; + goto yy640; yy648: YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy649; - if (yych != 'c') goto yy282; -yy649: + ++YYCURSOR; YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy650; - if (yych != 'h') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2392 "Zend/zend_language_scanner.l" + { + zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; +} +#line 7105 "Zend/zend_language_scanner.c" yy650: YYDEBUG(650, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(651, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1523 "Zend/zend_language_scanner.l" - { - return T_SWITCH; -} -#line 7065 "Zend/zend_language_scanner.c" + if (yych <= '$') { + if (yych <= '!') { + if (yych <= 0x00) goto yy284; + } else { + if (yych <= '"') goto yy657; + if (yych >= '$') goto yy284; + } + } else { + if (yych <= '\\') { + if (yych >= '\\') goto yy654; + } else { + if (yych == '{') goto yy650; + } + } yy652: YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy653; - if (yych != 't') goto yy282; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; yy653: YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy654; - if (yych != 'i') goto yy282; + if (yych <= '$') { + if (yych <= '!') { + if (yych <= 0x00) goto yy284; + goto yy652; + } else { + if (yych <= '"') goto yy657; + if (yych <= '#') goto yy652; + goto yy655; + } + } else { + if (yych <= '\\') { + if (yych <= '[') goto yy652; + } else { + if (yych == '{') goto yy650; + goto yy652; + } + } yy654: YYDEBUG(654, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy655; - if (yych != 'c') goto yy282; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy284; + goto yy652; yy655: YYDEBUG(655, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(656, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" - { - return T_STATIC; -} -#line 7093 "Zend/zend_language_scanner.c" + if (yych <= 'Z') { + if (yych <= '"') { + if (yych <= 0x00) goto yy284; + if (yych <= '!') goto yy652; + } else { + if (yych == '$') goto yy655; + if (yych <= '@') goto yy652; + goto yy284; + } + } else { + if (yych <= '_') { + if (yych == '\\') goto yy659; + if (yych <= '^') goto yy652; + goto yy284; + } else { + if (yych <= '`') goto yy652; + if (yych <= '{') goto yy284; + if (yych <= '~') goto yy652; + goto yy284; + } + } yy657: YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy668; - if (yych == 's') goto yy668; - goto yy282; -yy658: + ++YYCURSOR; YYDEBUG(658, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy666; - if (yych == 'd') goto yy666; - goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 2376 "Zend/zend_language_scanner.l" + { + zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; +} +#line 7194 "Zend/zend_language_scanner.c" yy659: YYDEBUG(659, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy662; - if (yych == 'r') goto yy662; - goto yy282; + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy284; + goto yy652; yy660: YYDEBUG(660, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == '<') goto yy377; + goto yy284; +yy661: YYDEBUG(661, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1519 "Zend/zend_language_scanner.l" - { - return T_AS; -} -#line 7124 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'A') goto yy668; + if (yych == 'a') goto yy668; + goto yy298; yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy663; - if (yych != 'a') goto yy282; + if (yych == 'I') goto yy663; + if (yych != 'i') goto yy298; yy663: YYDEBUG(663, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy664; - if (yych != 'y') goto yy282; + if (yych == 'T') goto yy664; + if (yych != 't') goto yy298; yy664: YYDEBUG(664, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy665; + if (yych != 'c') goto yy298; +yy665: YYDEBUG(665, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1745 "Zend/zend_language_scanner.l" - { - return T_ARRAY; -} -#line 7147 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy666; + if (yych != 'h') goto yy298; yy666: YYDEBUG(666, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } YYDEBUG(667, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1494 "Zend/zend_language_scanner.l" { - return T_LOGICAL_AND; + return T_SWITCH; } -#line 7160 "Zend/zend_language_scanner.c" +#line 7245 "Zend/zend_language_scanner.c" yy668: YYDEBUG(668, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'T') goto yy669; - if (yych != 't') goto yy282; + if (yych != 't') goto yy298; yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy670; - if (yych != 'r') goto yy282; + if (yych == 'I') goto yy670; + if (yych != 'i') goto yy298; yy670: YYDEBUG(670, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy671; - if (yych != 'a') goto yy282; + if (yych == 'C') goto yy671; + if (yych != 'c') goto yy298; yy671: YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy672; - if (yych != 'c') goto yy282; -yy672: - YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy673; - if (yych != 't') goto yy282; -yy673: - YYDEBUG(673, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(674, *YYCURSOR); + YYDEBUG(672, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1713 "Zend/zend_language_scanner.l" +#line 1680 "Zend/zend_language_scanner.l" { - return T_ABSTRACT; + return T_STATIC; } -#line 7198 "Zend/zend_language_scanner.c" +#line 7273 "Zend/zend_language_scanner.c" +yy673: + YYDEBUG(673, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy684; + if (yych == 's') goto yy684; + goto yy298; +yy674: + YYDEBUG(674, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy682; + if (yych == 'd') goto yy682; + goto yy298; yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy676; - if (yych != 'i') goto yy282; + if (yych == 'R') goto yy678; + if (yych == 'r') goto yy678; + goto yy298; yy676: YYDEBUG(676, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy677; - if (yych != 'l') goto yy282; -yy677: - YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy678; - if (yych != 'e') goto yy282; -yy678: - YYDEBUG(678, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(679, *YYCURSOR); + YYDEBUG(677, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { - return T_WHILE; + return T_AS; } -#line 7226 "Zend/zend_language_scanner.c" +#line 7304 "Zend/zend_language_scanner.c" +yy678: + YYDEBUG(678, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy679; + if (yych != 'a') goto yy298; +yy679: + YYDEBUG(679, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy680; + if (yych != 'y') goto yy298; yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } YYDEBUG(681, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" +#line 1716 "Zend/zend_language_scanner.l" { - return T_IF; + return T_ARRAY; } -#line 7239 "Zend/zend_language_scanner.c" +#line 7327 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy718; - if (yych == 'p') goto yy718; - goto yy282; -yy683: - YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy282; - goto yy691; - } else { - if (yych <= 'R') goto yy282; - if (yych <= 'S') goto yy689; - goto yy690; - } - } else { - if (yych <= 'r') { - if (yych == 'c') goto yy691; - goto yy282; - } else { - if (yych <= 's') goto yy689; - if (yych <= 't') goto yy690; - goto yy282; - } + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; } + YYDEBUG(683, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1808 "Zend/zend_language_scanner.l" + { + return T_LOGICAL_AND; +} +#line 7340 "Zend/zend_language_scanner.c" yy684: YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy685; - if (yych != 's') goto yy282; + if (yych == 'T') goto yy685; + if (yych != 't') goto yy298; yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy686; - if (yych != 'e') goto yy282; + if (yych == 'R') goto yy686; + if (yych != 'r') goto yy298; yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy687; - if (yych != 't') goto yy282; + if (yych == 'A') goto yy687; + if (yych != 'a') goto yy298; yy687: YYDEBUG(687, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy688; + if (yych != 'c') goto yy298; +yy688: + YYDEBUG(688, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy689; + if (yych != 't') goto yy298; +yy689: + YYDEBUG(689, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(688, *YYCURSOR); + YYDEBUG(690, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1697 "Zend/zend_language_scanner.l" +#line 1684 "Zend/zend_language_scanner.l" { - return T_ISSET; + return T_ABSTRACT; } -#line 7295 "Zend/zend_language_scanner.c" -yy689: - YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy710; - if (yych == 't') goto yy710; - goto yy282; -yy690: - YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy703; - if (yych == 'e') goto yy703; - goto yy282; +#line 7378 "Zend/zend_language_scanner.c" yy691: YYDEBUG(691, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy692; - if (yych != 'l') goto yy282; + if (yych == 'I') goto yy692; + if (yych != 'i') goto yy298; yy692: YYDEBUG(692, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy693; - if (yych != 'u') goto yy282; + if (yych == 'L') goto yy693; + if (yych != 'l') goto yy298; yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy694; - if (yych != 'd') goto yy282; + if (yych == 'E') goto yy694; + if (yych != 'e') goto yy298; yy694: YYDEBUG(694, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy695; - if (yych != 'e') goto yy282; -yy695: - YYDEBUG(695, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy281; - } else { - if (yych <= '@') goto yy696; - if (yych <= 'Z') goto yy281; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy697; - } else { - if (yych <= 'z') goto yy281; - if (yych >= 0x7F) goto yy281; - } + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; } + YYDEBUG(695, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1450 "Zend/zend_language_scanner.l" + { + return T_WHILE; +} +#line 7406 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } + YYDEBUG(697, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1669 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { - return T_INCLUDE; + return T_IF; } -#line 7353 "Zend/zend_language_scanner.c" -yy697: - YYDEBUG(697, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy698; - if (yych != 'o') goto yy282; +#line 7419 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy699; - if (yych != 'n') goto yy282; + if (yych == 'P') goto yy734; + if (yych == 'p') goto yy734; + goto yy298; yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy700; - if (yych != 'c') goto yy282; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy298; + goto yy707; + } else { + if (yych <= 'R') goto yy298; + if (yych <= 'S') goto yy705; + goto yy706; + } + } else { + if (yych <= 'r') { + if (yych == 'c') goto yy707; + goto yy298; + } else { + if (yych <= 's') goto yy705; + if (yych <= 't') goto yy706; + goto yy298; + } + } yy700: YYDEBUG(700, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy701; - if (yych != 'e') goto yy282; + if (yych == 'S') goto yy701; + if (yych != 's') goto yy298; yy701: YYDEBUG(701, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy702; + if (yych != 'e') goto yy298; +yy702: + YYDEBUG(702, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy703; + if (yych != 't') goto yy298; +yy703: + YYDEBUG(703, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(702, *YYCURSOR); + YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1673 "Zend/zend_language_scanner.l" +#line 1668 "Zend/zend_language_scanner.l" { - return T_INCLUDE_ONCE; + return T_ISSET; } -#line 7386 "Zend/zend_language_scanner.c" -yy703: - YYDEBUG(703, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy704; - if (yych != 'r') goto yy282; -yy704: - YYDEBUG(704, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy705; - if (yych != 'f') goto yy282; +#line 7475 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy706; - if (yych != 'a') goto yy282; + if (yych == 'T') goto yy726; + if (yych == 't') goto yy726; + goto yy298; yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy707; - if (yych != 'c') goto yy282; + if (yych == 'E') goto yy719; + if (yych == 'e') goto yy719; + goto yy298; yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy708; - if (yych != 'e') goto yy282; + if (yych == 'L') goto yy708; + if (yych != 'l') goto yy298; yy708: YYDEBUG(708, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'U') goto yy709; + if (yych != 'u') goto yy298; +yy709: YYDEBUG(709, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" - { - return T_INTERFACE; -} -#line 7424 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'D') goto yy710; + if (yych != 'd') goto yy298; yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy711; - if (yych != 'a') goto yy282; + if (yych == 'E') goto yy711; + if (yych != 'e') goto yy298; yy711: YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy712; - if (yych != 'n') goto yy282; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy297; + } else { + if (yych <= '@') goto yy712; + if (yych <= 'Z') goto yy297; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy713; + } else { + if (yych <= 'z') goto yy297; + if (yych >= 0x7F) goto yy297; + } + } yy712: YYDEBUG(712, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy713; - if (yych != 'c') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1640 "Zend/zend_language_scanner.l" + { + return T_INCLUDE; +} +#line 7533 "Zend/zend_language_scanner.c" yy713: YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy714; - if (yych != 'e') goto yy282; + if (yych == 'O') goto yy714; + if (yych != 'o') goto yy298; yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy715; - if (yych != 'o') goto yy282; + if (yych == 'N') goto yy715; + if (yych != 'n') goto yy298; yy715: YYDEBUG(715, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy716; - if (yych != 'f') goto yy282; + if (yych == 'C') goto yy716; + if (yych != 'c') goto yy298; yy716: YYDEBUG(716, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy717; + if (yych != 'e') goto yy298; +yy717: + YYDEBUG(717, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(717, *YYCURSOR); + YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1515 "Zend/zend_language_scanner.l" +#line 1644 "Zend/zend_language_scanner.l" { - return T_INSTANCEOF; + return T_INCLUDE_ONCE; } -#line 7467 "Zend/zend_language_scanner.c" -yy718: - YYDEBUG(718, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy719; - if (yych != 'l') goto yy282; +#line 7566 "Zend/zend_language_scanner.c" yy719: YYDEBUG(719, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy720; - if (yych != 'e') goto yy282; + if (yych == 'R') goto yy720; + if (yych != 'r') goto yy298; yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy721; - if (yych != 'm') goto yy282; + if (yych == 'F') goto yy721; + if (yych != 'f') goto yy298; yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy722; - if (yych != 'e') goto yy282; + if (yych == 'A') goto yy722; + if (yych != 'a') goto yy298; yy722: YYDEBUG(722, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy723; - if (yych != 'n') goto yy282; + if (yych == 'C') goto yy723; + if (yych != 'c') goto yy298; yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy724; - if (yych != 't') goto yy282; + if (yych == 'E') goto yy724; + if (yych != 'e') goto yy298; yy724: YYDEBUG(724, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy725; - if (yych != 's') goto yy282; -yy725: - YYDEBUG(725, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(726, *YYCURSOR); + YYDEBUG(725, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { - return T_IMPLEMENTS; + return T_INTERFACE; } -#line 7515 "Zend/zend_language_scanner.c" +#line 7604 "Zend/zend_language_scanner.c" +yy726: + YYDEBUG(726, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy727; + if (yych != 'a') goto yy298; yy727: YYDEBUG(727, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy731; - if (yych == 'r') goto yy731; - goto yy282; + if (yych == 'N') goto yy728; + if (yych != 'n') goto yy298; yy728: YYDEBUG(728, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy729; - if (yych != 'y') goto yy282; + if (yych == 'C') goto yy729; + if (yych != 'c') goto yy298; yy729: YYDEBUG(729, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy730; + if (yych != 'e') goto yy298; +yy730: YYDEBUG(730, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" - { - return T_TRY; -} -#line 7539 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy731; + if (yych != 'o') goto yy298; yy731: YYDEBUG(731, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy732; - if (yych != 'o') goto yy282; + if (yych == 'F') goto yy732; + if (yych != 'f') goto yy298; yy732: YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy733; - if (yych != 'w') goto yy282; -yy733: - YYDEBUG(733, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(734, *YYCURSOR); + YYDEBUG(733, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l" { - return T_THROW; + return T_INSTANCEOF; } -#line 7562 "Zend/zend_language_scanner.c" +#line 7647 "Zend/zend_language_scanner.c" +yy734: + YYDEBUG(734, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy735; + if (yych != 'l') goto yy298; yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy737; - if (yych <= 'S') goto yy282; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy282; - goto yy737; - } else { - if (yych != 't') goto yy282; - } - } + if (yych == 'E') goto yy736; + if (yych != 'e') goto yy298; +yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy749; - if (yych == 'u') goto yy749; - goto yy282; + if (yych == 'M') goto yy737; + if (yych != 'm') goto yy298; yy737: YYDEBUG(737, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy738; - if (yych != 'u') goto yy282; + if (yych == 'E') goto yy738; + if (yych != 'e') goto yy298; yy738: YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy739; - if (yych != 'i') goto yy282; + if (yych == 'N') goto yy739; + if (yych != 'n') goto yy298; yy739: YYDEBUG(739, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy740; - if (yych != 'r') goto yy282; + if (yych == 'T') goto yy740; + if (yych != 't') goto yy298; yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy741; - if (yych != 'e') goto yy282; + if (yych == 'S') goto yy741; + if (yych != 's') goto yy298; yy741: YYDEBUG(741, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy281; - } else { - if (yych <= '@') goto yy742; - if (yych <= 'Z') goto yy281; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy743; - } else { - if (yych <= 'z') goto yy281; - if (yych >= 0x7F) goto yy281; - } + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; } -yy742: YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { - return T_REQUIRE; + return T_IMPLEMENTS; } -#line 7627 "Zend/zend_language_scanner.c" +#line 7695 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy744; - if (yych != 'o') goto yy282; + if (yych == 'R') goto yy747; + if (yych == 'r') goto yy747; + goto yy298; yy744: YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy745; - if (yych != 'n') goto yy282; + if (yych == 'Y') goto yy745; + if (yych != 'y') goto yy298; yy745: YYDEBUG(745, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy746; - if (yych != 'c') goto yy282; -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy747; - if (yych != 'e') goto yy282; -yy747: - YYDEBUG(747, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(748, *YYCURSOR); + YYDEBUG(746, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1681 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { - return T_REQUIRE_ONCE; -} -#line 7660 "Zend/zend_language_scanner.c" -yy749: - YYDEBUG(749, *YYCURSOR); + return T_TRY; +} +#line 7719 "Zend/zend_language_scanner.c" +yy747: + YYDEBUG(747, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy750; - if (yych != 'r') goto yy282; -yy750: - YYDEBUG(750, *YYCURSOR); + if (yych == 'O') goto yy748; + if (yych != 'o') goto yy298; +yy748: + YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy751; - if (yych != 'n') goto yy282; -yy751: - YYDEBUG(751, *YYCURSOR); + if (yych == 'W') goto yy749; + if (yych != 'w') goto yy298; +yy749: + YYDEBUG(749, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(752, *YYCURSOR); + YYDEBUG(750, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1447 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { - return T_RETURN; + return T_THROW; } -#line 7683 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); +#line 7742 "Zend/zend_language_scanner.c" +yy751: + YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych <= 'R') goto yy282; - if (yych <= 'S') goto yy775; - goto yy774; + if (yych == 'Q') goto yy753; + if (yych <= 'S') goto yy298; } else { - if (yych <= 'r') goto yy282; - if (yych <= 's') goto yy775; - if (yych <= 't') goto yy774; - goto yy282; + if (yych <= 'q') { + if (yych <= 'p') goto yy298; + goto yy753; + } else { + if (yych != 't') goto yy298; + } } + YYDEBUG(752, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy765; + if (yych == 'u') goto yy765; + goto yy298; +yy753: + YYDEBUG(753, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy754; + if (yych != 'u') goto yy298; yy754: YYDEBUG(754, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy766; - if (yych <= 'N') goto yy282; - goto yy767; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy282; - goto yy766; - } else { - if (yych == 'o') goto yy767; - goto yy282; - } - } + if (yych == 'I') goto yy755; + if (yych != 'i') goto yy298; yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy756; - if (yych != 'n') goto yy282; + if (yych == 'R') goto yy756; + if (yych != 'r') goto yy298; yy756: YYDEBUG(756, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy282; - if (yych >= 'T') goto yy758; - } else { - if (yych <= 'r') goto yy282; - if (yych <= 's') goto yy757; - if (yych <= 't') goto yy758; - goto yy282; - } + if (yych == 'E') goto yy757; + if (yych != 'e') goto yy298; yy757: YYDEBUG(757, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy764; - if (yych == 't') goto yy764; - goto yy282; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy297; + } else { + if (yych <= '@') goto yy758; + if (yych <= 'Z') goto yy297; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy759; + } else { + if (yych <= 'z') goto yy297; + if (yych >= 0x7F) goto yy297; + } + } yy758: YYDEBUG(758, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy759; - if (yych != 'i') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1648 "Zend/zend_language_scanner.l" + { + return T_REQUIRE; +} +#line 7807 "Zend/zend_language_scanner.c" yy759: YYDEBUG(759, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy760; - if (yych != 'n') goto yy282; + if (yych == 'O') goto yy760; + if (yych != 'o') goto yy298; yy760: YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy761; - if (yych != 'u') goto yy282; + if (yych == 'N') goto yy761; + if (yych != 'n') goto yy298; yy761: YYDEBUG(761, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy762; - if (yych != 'e') goto yy282; + if (yych == 'C') goto yy762; + if (yych != 'c') goto yy298; yy762: YYDEBUG(762, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy763; + if (yych != 'e') goto yy298; +yy763: YYDEBUG(763, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" - { - return T_CONTINUE; -} -#line 7768 "Zend/zend_language_scanner.c" -yy764: - YYDEBUG(764, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(765, *YYCURSOR); + YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { - return T_CONST; + return T_REQUIRE_ONCE; } -#line 7781 "Zend/zend_language_scanner.c" +#line 7840 "Zend/zend_language_scanner.c" +yy765: + YYDEBUG(765, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy766; + if (yych != 'r') goto yy298; yy766: YYDEBUG(766, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy771; - if (yych == 's') goto yy771; - goto yy282; + if (yych == 'N') goto yy767; + if (yych != 'n') goto yy298; yy767: YYDEBUG(767, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy768; - if (yych != 'n') goto yy282; -yy768: - YYDEBUG(768, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy769; - if (yych != 'e') goto yy282; -yy769: - YYDEBUG(769, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(770, *YYCURSOR); + YYDEBUG(768, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { - return T_CLONE; + return T_RETURN; } -#line 7810 "Zend/zend_language_scanner.c" +#line 7863 "Zend/zend_language_scanner.c" +yy769: + YYDEBUG(769, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'R') goto yy298; + if (yych <= 'S') goto yy791; + goto yy790; + } else { + if (yych <= 'r') goto yy298; + if (yych <= 's') goto yy791; + if (yych <= 't') goto yy790; + goto yy298; + } +yy770: + YYDEBUG(770, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'A') goto yy782; + if (yych <= 'N') goto yy298; + goto yy783; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy298; + goto yy782; + } else { + if (yych == 'o') goto yy783; + goto yy298; + } + } yy771: YYDEBUG(771, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy772; - if (yych != 's') goto yy282; + if (yych == 'N') goto yy772; + if (yych != 'n') goto yy298; yy772: YYDEBUG(772, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'R') goto yy298; + if (yych >= 'T') goto yy774; + } else { + if (yych <= 'r') goto yy298; + if (yych <= 's') goto yy773; + if (yych <= 't') goto yy774; + goto yy298; } +yy773: YYDEBUG(773, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" - { - return T_CLASS; -} -#line 7828 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy780; + if (yych == 't') goto yy780; + goto yy298; yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy778; - if (yych == 'c') goto yy778; - goto yy282; + if (yych == 'I') goto yy775; + if (yych != 'i') goto yy298; yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy776; - if (yych != 'e') goto yy282; + if (yych == 'N') goto yy776; + if (yych != 'n') goto yy298; yy776: YYDEBUG(776, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy777; + if (yych != 'u') goto yy298; +yy777: + YYDEBUG(777, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy778; + if (yych != 'e') goto yy298; +yy778: + YYDEBUG(778, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(777, *YYCURSOR); + YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1531 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { - return T_CASE; + return T_CONTINUE; } -#line 7852 "Zend/zend_language_scanner.c" -yy778: - YYDEBUG(778, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy779; - if (yych != 'h') goto yy282; -yy779: - YYDEBUG(779, *YYCURSOR); +#line 7948 "Zend/zend_language_scanner.c" +yy780: + YYDEBUG(780, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(780, *YYCURSOR); + YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { - return T_CATCH; + return T_CONST; } -#line 7870 "Zend/zend_language_scanner.c" -yy781: - YYDEBUG(781, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy798; - if (yych == 'n') goto yy798; - goto yy282; +#line 7961 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy791; - if (yych == 'r') goto yy791; - goto yy282; + if (yych == 'S') goto yy787; + if (yych == 's') goto yy787; + goto yy298; yy783: YYDEBUG(783, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'N') goto yy784; - if (yych != 'n') goto yy282; + if (yych != 'n') goto yy298; yy784: YYDEBUG(784, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy785; - if (yych != 'c') goto yy282; + if (yych == 'E') goto yy785; + if (yych != 'e') goto yy298; yy785: YYDEBUG(785, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy786; - if (yych != 't') goto yy282; -yy786: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(786, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy787; - if (yych != 'i') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1592 "Zend/zend_language_scanner.l" + { + return T_CLONE; +} +#line 7990 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy788; - if (yych != 'o') goto yy282; + if (yych == 'S') goto yy788; + if (yych != 's') goto yy298; yy788: YYDEBUG(788, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy789; - if (yych != 'n') goto yy282; -yy789: - YYDEBUG(789, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(790, *YYCURSOR); + YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" +#line 1530 "Zend/zend_language_scanner.l" { - return T_FUNCTION; + return T_CLASS; } -#line 7925 "Zend/zend_language_scanner.c" +#line 8008 "Zend/zend_language_scanner.c" +yy790: + YYDEBUG(790, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy794; + if (yych == 'c') goto yy794; + goto yy298; yy791: YYDEBUG(791, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy792; - if (yych <= '9') goto yy281; - } else { - if (yych == 'E') goto yy793; - if (yych <= 'Z') goto yy281; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy281; - } else { - if (yych <= 'e') goto yy793; - if (yych <= 'z') goto yy281; - if (yych >= 0x7F) goto yy281; - } - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy792; + if (yych != 'e') goto yy298; yy792: YYDEBUG(792, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" +#line 1502 "Zend/zend_language_scanner.l" { - return T_FOR; + return T_CASE; } -#line 7953 "Zend/zend_language_scanner.c" -yy793: - YYDEBUG(793, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy794; - if (yych != 'a') goto yy282; +#line 8032 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy795; - if (yych != 'c') goto yy282; + if (yych == 'H') goto yy795; + if (yych != 'h') goto yy298; yy795: YYDEBUG(795, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy796; - if (yych != 'h') goto yy282; -yy796: - YYDEBUG(796, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(797, *YYCURSOR); + YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1499 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { - return T_FOREACH; + return T_CATCH; } -#line 7981 "Zend/zend_language_scanner.c" +#line 8050 "Zend/zend_language_scanner.c" +yy797: + YYDEBUG(797, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy814; + if (yych == 'n') goto yy814; + goto yy298; yy798: YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy799; - if (yych != 'a') goto yy282; + if (yych == 'R') goto yy807; + if (yych == 'r') goto yy807; + goto yy298; yy799: YYDEBUG(799, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy800; - if (yych != 'l') goto yy282; + if (yych == 'N') goto yy800; + if (yych != 'n') goto yy298; yy800: YYDEBUG(800, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy801; + if (yych != 'c') goto yy298; +yy801: YYDEBUG(801, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1717 "Zend/zend_language_scanner.l" - { - return T_FINAL; -} -#line 8004 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'T') goto yy802; + if (yych != 't') goto yy298; yy802: YYDEBUG(802, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy808; - if (yych <= 'E') goto yy282; - goto yy809; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy282; - goto yy808; - } else { - if (yych == 'f') goto yy809; - goto yy282; - } - } + if (yych == 'I') goto yy803; + if (yych != 'i') goto yy298; yy803: YYDEBUG(803, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy806; - if (yych == 'e') goto yy806; - goto yy282; + if (yych == 'O') goto yy804; + if (yych != 'o') goto yy298; yy804: YYDEBUG(804, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy805; + if (yych != 'n') goto yy298; +yy805: + YYDEBUG(805, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(805, *YYCURSOR); + YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1487 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { - return T_DO; + return T_FUNCTION; } -#line 8039 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); +#line 8105 "Zend/zend_language_scanner.c" +yy807: + YYDEBUG(807, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy808; + if (yych <= '9') goto yy297; + } else { + if (yych == 'E') goto yy809; + if (yych <= 'Z') goto yy297; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy297; + } else { + if (yych <= 'e') goto yy809; + if (yych <= 'z') goto yy297; + if (yych >= 0x7F) goto yy297; + } } - YYDEBUG(807, *YYCURSOR); +yy808: + YYDEBUG(808, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { - return T_EXIT; + return T_FOR; } -#line 8052 "Zend/zend_language_scanner.c" -yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy815; - if (yych == 'l') goto yy815; - goto yy282; +#line 8133 "Zend/zend_language_scanner.c" yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'A') goto yy810; - if (yych != 'a') goto yy282; + if (yych != 'a') goto yy298; yy810: YYDEBUG(810, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy811; - if (yych != 'u') goto yy282; + if (yych == 'C') goto yy811; + if (yych != 'c') goto yy298; yy811: YYDEBUG(811, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy812; - if (yych != 'l') goto yy282; + if (yych == 'H') goto yy812; + if (yych != 'h') goto yy298; yy812: YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy813; - if (yych != 't') goto yy282; -yy813: - YYDEBUG(813, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(814, *YYCURSOR); + YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1535 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { - return T_DEFAULT; + return T_FOREACH; } -#line 8091 "Zend/zend_language_scanner.c" +#line 8161 "Zend/zend_language_scanner.c" +yy814: + YYDEBUG(814, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy815; + if (yych != 'a') goto yy298; yy815: YYDEBUG(815, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy816; - if (yych != 'a') goto yy282; + if (yych == 'L') goto yy816; + if (yych != 'l') goto yy298; yy816: YYDEBUG(816, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy817; - if (yych != 'r') goto yy282; -yy817: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(817, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy818; - if (yych != 'e') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1688 "Zend/zend_language_scanner.l" + { + return T_FINAL; +} +#line 8184 "Zend/zend_language_scanner.c" yy818: YYDEBUG(818, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'F') { + if (yych == 'C') goto yy824; + if (yych <= 'E') goto yy298; + goto yy825; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy298; + goto yy824; + } else { + if (yych == 'f') goto yy825; + goto yy298; + } + } +yy819: + YYDEBUG(819, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy822; + if (yych == 'e') goto yy822; + goto yy298; +yy820: + YYDEBUG(820, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(819, *YYCURSOR); + YYDEBUG(821, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1507 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { - return T_DECLARE; + return T_DO; } -#line 8119 "Zend/zend_language_scanner.c" -yy820: - YYDEBUG(820, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy882; - if (yych == 'h') goto yy882; - goto yy282; -yy821: - YYDEBUG(821, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy876; - if (yych == 's') goto yy876; - goto yy282; +#line 8219 "Zend/zend_language_scanner.c" yy822: YYDEBUG(822, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy872; - if (yych == 'p') goto yy872; - goto yy282; -yy823: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(823, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy838; - if (yych == 'd') goto yy838; - goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1406 "Zend/zend_language_scanner.l" + { + return T_EXIT; +} +#line 8232 "Zend/zend_language_scanner.c" yy824: YYDEBUG(824, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy835; - if (yych == 'a') goto yy835; - goto yy282; + if (yych == 'L') goto yy831; + if (yych == 'l') goto yy831; + goto yy298; yy825: YYDEBUG(825, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy826; - if (yych <= 'S') goto yy282; - goto yy827; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy282; - } else { - if (yych == 't') goto yy827; - goto yy282; - } - } + if (yych == 'A') goto yy826; + if (yych != 'a') goto yy298; yy826: YYDEBUG(826, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy833; - if (yych == 't') goto yy833; - goto yy282; + if (yych == 'U') goto yy827; + if (yych != 'u') goto yy298; yy827: YYDEBUG(827, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy828; - if (yych != 'e') goto yy282; + if (yych == 'L') goto yy828; + if (yych != 'l') goto yy298; yy828: YYDEBUG(828, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy829; - if (yych != 'n') goto yy282; + if (yych == 'T') goto yy829; + if (yych != 't') goto yy298; yy829: YYDEBUG(829, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy830; - if (yych != 'd') goto yy282; -yy830: - YYDEBUG(830, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy831; - if (yych != 's') goto yy282; -yy831: - YYDEBUG(831, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(832, *YYCURSOR); + YYDEBUG(830, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { - return T_EXTENDS; + return T_DEFAULT; } -#line 8203 "Zend/zend_language_scanner.c" +#line 8271 "Zend/zend_language_scanner.c" +yy831: + YYDEBUG(831, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy832; + if (yych != 'a') goto yy298; +yy832: + YYDEBUG(832, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy833; + if (yych != 'r') goto yy298; yy833: YYDEBUG(833, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy834; + if (yych != 'e') goto yy298; +yy834: + YYDEBUG(834, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(834, *YYCURSOR); + YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { - return T_EXIT; + return T_DECLARE; } -#line 8216 "Zend/zend_language_scanner.c" -yy835: - YYDEBUG(835, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy836; - if (yych != 'l') goto yy282; +#line 8299 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'H') goto yy898; + if (yych == 'h') goto yy898; + goto yy298; +yy837: YYDEBUG(837, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1665 "Zend/zend_language_scanner.l" - { - return T_EVAL; -} -#line 8234 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'S') goto yy892; + if (yych == 's') goto yy892; + goto yy298; yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch (yych) { - case 'D': - case 'd': goto yy839; - case 'F': - case 'f': goto yy840; - case 'I': - case 'i': goto yy841; - case 'S': - case 's': goto yy842; - case 'W': - case 'w': goto yy843; - default: goto yy282; - } + if (yych == 'P') goto yy888; + if (yych == 'p') goto yy888; + goto yy298; yy839: YYDEBUG(839, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy865; - if (yych == 'e') goto yy865; - goto yy282; + if (yych == 'D') goto yy854; + if (yych == 'd') goto yy854; + goto yy298; yy840: YYDEBUG(840, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy857; - if (yych == 'o') goto yy857; - goto yy282; + if (yych == 'A') goto yy851; + if (yych == 'a') goto yy851; + goto yy298; yy841: YYDEBUG(841, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy855; - if (yych == 'f') goto yy855; - goto yy282; + if (yych <= 'T') { + if (yych == 'I') goto yy842; + if (yych <= 'S') goto yy298; + goto yy843; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy298; + } else { + if (yych == 't') goto yy843; + goto yy298; + } + } yy842: YYDEBUG(842, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy849; - if (yych == 'w') goto yy849; - goto yy282; + if (yych == 'T') goto yy849; + if (yych == 't') goto yy849; + goto yy298; yy843: YYDEBUG(843, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy844; - if (yych != 'h') goto yy282; + if (yych == 'E') goto yy844; + if (yych != 'e') goto yy298; yy844: YYDEBUG(844, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy845; - if (yych != 'i') goto yy282; + if (yych == 'N') goto yy845; + if (yych != 'n') goto yy298; yy845: YYDEBUG(845, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy846; - if (yych != 'l') goto yy282; + if (yych == 'D') goto yy846; + if (yych != 'd') goto yy298; yy846: YYDEBUG(846, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy847; - if (yych != 'e') goto yy282; + if (yych == 'S') goto yy847; + if (yych != 's') goto yy298; yy847: YYDEBUG(847, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } YYDEBUG(848, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1483 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { - return T_ENDWHILE; + return T_EXTENDS; } -#line 8308 "Zend/zend_language_scanner.c" +#line 8383 "Zend/zend_language_scanner.c" yy849: YYDEBUG(849, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy850; - if (yych != 'i') goto yy282; -yy850: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(850, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy851; - if (yych != 't') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1402 "Zend/zend_language_scanner.l" + { + return T_EXIT; +} +#line 8396 "Zend/zend_language_scanner.c" yy851: YYDEBUG(851, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy852; - if (yych != 'c') goto yy282; + if (yych == 'L') goto yy852; + if (yych != 'l') goto yy298; yy852: YYDEBUG(852, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy853; - if (yych != 'h') goto yy282; -yy853: - YYDEBUG(853, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(854, *YYCURSOR); + YYDEBUG(853, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1527 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { - return T_ENDSWITCH; + return T_EVAL; } -#line 8341 "Zend/zend_language_scanner.c" +#line 8414 "Zend/zend_language_scanner.c" +yy854: + YYDEBUG(854, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case 'D': + case 'd': goto yy855; + case 'F': + case 'f': goto yy856; + case 'I': + case 'i': goto yy857; + case 'S': + case 's': goto yy858; + case 'W': + case 'w': goto yy859; + default: goto yy298; + } yy855: YYDEBUG(855, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy881; + if (yych == 'e') goto yy881; + goto yy298; +yy856: YYDEBUG(856, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" - { - return T_ENDIF; -} -#line 8354 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'O') goto yy873; + if (yych == 'o') goto yy873; + goto yy298; yy857: YYDEBUG(857, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy858; - if (yych != 'r') goto yy282; + if (yych == 'F') goto yy871; + if (yych == 'f') goto yy871; + goto yy298; yy858: YYDEBUG(858, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy859; - if (yych <= '9') goto yy281; - } else { - if (yych == 'E') goto yy860; - if (yych <= 'Z') goto yy281; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy281; - } else { - if (yych <= 'e') goto yy860; - if (yych <= 'z') goto yy281; - if (yych >= 0x7F) goto yy281; - } - } + yych = *++YYCURSOR; + if (yych == 'W') goto yy865; + if (yych == 'w') goto yy865; + goto yy298; yy859: YYDEBUG(859, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1495 "Zend/zend_language_scanner.l" - { - return T_ENDFOR; -} -#line 8387 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'H') goto yy860; + if (yych != 'h') goto yy298; yy860: YYDEBUG(860, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy861; - if (yych != 'a') goto yy282; + if (yych == 'I') goto yy861; + if (yych != 'i') goto yy298; yy861: YYDEBUG(861, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy862; - if (yych != 'c') goto yy282; + if (yych == 'L') goto yy862; + if (yych != 'l') goto yy298; yy862: YYDEBUG(862, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy863; - if (yych != 'h') goto yy282; + if (yych == 'E') goto yy863; + if (yych != 'e') goto yy298; yy863: YYDEBUG(863, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } YYDEBUG(864, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1503 "Zend/zend_language_scanner.l" +#line 1454 "Zend/zend_language_scanner.l" { - return T_ENDFOREACH; + return T_ENDWHILE; } -#line 8415 "Zend/zend_language_scanner.c" +#line 8488 "Zend/zend_language_scanner.c" yy865: YYDEBUG(865, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy866; - if (yych != 'c') goto yy282; + if (yych == 'I') goto yy866; + if (yych != 'i') goto yy298; yy866: YYDEBUG(866, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy867; - if (yych != 'l') goto yy282; + if (yych == 'T') goto yy867; + if (yych != 't') goto yy298; yy867: YYDEBUG(867, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy868; - if (yych != 'a') goto yy282; + if (yych == 'C') goto yy868; + if (yych != 'c') goto yy298; yy868: YYDEBUG(868, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy869; - if (yych != 'r') goto yy282; + if (yych == 'H') goto yy869; + if (yych != 'h') goto yy298; yy869: YYDEBUG(869, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy870; - if (yych != 'e') goto yy282; -yy870: - YYDEBUG(870, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(871, *YYCURSOR); + YYDEBUG(870, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1511 "Zend/zend_language_scanner.l" +#line 1498 "Zend/zend_language_scanner.l" { - return T_ENDDECLARE; + return T_ENDSWITCH; } -#line 8453 "Zend/zend_language_scanner.c" -yy872: +#line 8521 "Zend/zend_language_scanner.c" +yy871: + YYDEBUG(871, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } YYDEBUG(872, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy873; - if (yych != 't') goto yy282; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1442 "Zend/zend_language_scanner.l" + { + return T_ENDIF; +} +#line 8534 "Zend/zend_language_scanner.c" yy873: YYDEBUG(873, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy874; - if (yych != 'y') goto yy282; + if (yych == 'R') goto yy874; + if (yych != 'r') goto yy298; yy874: YYDEBUG(874, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy875; + if (yych <= '9') goto yy297; + } else { + if (yych == 'E') goto yy876; + if (yych <= 'Z') goto yy297; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy297; + } else { + if (yych <= 'e') goto yy876; + if (yych <= 'z') goto yy297; + if (yych >= 0x7F) goto yy297; + } } +yy875: YYDEBUG(875, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1701 "Zend/zend_language_scanner.l" +#line 1466 "Zend/zend_language_scanner.l" { - return T_EMPTY; + return T_ENDFOR; } -#line 8476 "Zend/zend_language_scanner.c" +#line 8567 "Zend/zend_language_scanner.c" yy876: YYDEBUG(876, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy877; - if (yych != 'e') goto yy282; + if (yych == 'A') goto yy877; + if (yych != 'a') goto yy298; yy877: YYDEBUG(877, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy878; + if (yych != 'c') goto yy298; +yy878: + YYDEBUG(878, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy879; + if (yych != 'h') goto yy298; +yy879: + YYDEBUG(879, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } + YYDEBUG(880, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1474 "Zend/zend_language_scanner.l" + { + return T_ENDFOREACH; +} +#line 8595 "Zend/zend_language_scanner.c" +yy881: + YYDEBUG(881, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy882; + if (yych != 'c') goto yy298; +yy882: + YYDEBUG(882, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy883; + if (yych != 'l') goto yy298; +yy883: + YYDEBUG(883, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy884; + if (yych != 'a') goto yy298; +yy884: + YYDEBUG(884, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy885; + if (yych != 'r') goto yy298; +yy885: + YYDEBUG(885, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy886; + if (yych != 'e') goto yy298; +yy886: + YYDEBUG(886, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } + YYDEBUG(887, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1482 "Zend/zend_language_scanner.l" + { + return T_ENDDECLARE; +} +#line 8633 "Zend/zend_language_scanner.c" +yy888: + YYDEBUG(888, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy889; + if (yych != 't') goto yy298; +yy889: + YYDEBUG(889, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy890; + if (yych != 'y') goto yy298; +yy890: + YYDEBUG(890, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy297; + } + YYDEBUG(891, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1672 "Zend/zend_language_scanner.l" + { + return T_EMPTY; +} +#line 8656 "Zend/zend_language_scanner.c" +yy892: + YYDEBUG(892, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy893; + if (yych != 'e') goto yy298; +yy893: + YYDEBUG(893, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy878; - if (yych <= '9') goto yy281; + if (yych <= '/') goto yy894; + if (yych <= '9') goto yy297; } else { - if (yych == 'I') goto yy879; - if (yych <= 'Z') goto yy281; + if (yych == 'I') goto yy895; + if (yych <= 'Z') goto yy297; } } else { if (yych <= 'h') { - if (yych != '`') goto yy281; + if (yych != '`') goto yy297; } else { - if (yych <= 'i') goto yy879; - if (yych <= 'z') goto yy281; - if (yych >= 0x7F) goto yy281; + if (yych <= 'i') goto yy895; + if (yych <= 'z') goto yy297; + if (yych >= 0x7F) goto yy297; } } -yy878: - YYDEBUG(878, *YYCURSOR); +yy894: + YYDEBUG(894, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1475 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { return T_ELSE; } -#line 8509 "Zend/zend_language_scanner.c" -yy879: - YYDEBUG(879, *YYCURSOR); +#line 8689 "Zend/zend_language_scanner.c" +yy895: + YYDEBUG(895, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy880; - if (yych != 'f') goto yy282; -yy880: - YYDEBUG(880, *YYCURSOR); + if (yych == 'F') goto yy896; + if (yych != 'f') goto yy298; +yy896: + YYDEBUG(896, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(881, *YYCURSOR); + YYDEBUG(897, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1467 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { return T_ELSEIF; } -#line 8527 "Zend/zend_language_scanner.c" -yy882: - YYDEBUG(882, *YYCURSOR); +#line 8707 "Zend/zend_language_scanner.c" +yy898: + YYDEBUG(898, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy883; - if (yych != 'o') goto yy282; -yy883: - YYDEBUG(883, *YYCURSOR); + if (yych == 'O') goto yy899; + if (yych != 'o') goto yy298; +yy899: + YYDEBUG(899, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy281; + goto yy297; } - YYDEBUG(884, *YYCURSOR); + YYDEBUG(900, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { return T_ECHO; } -#line 8545 "Zend/zend_language_scanner.c" +#line 8725 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -8580,41 +8760,54 @@ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(885, *YYCURSOR); + YYDEBUG(901, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych <= '-') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy893; - if (yych <= '\n') goto yy887; - if (yych <= '\f') goto yy893; - } else { - if (yych == ' ') goto yy887; - if (yych <= ',') goto yy893; - goto yy889; + if (yych <= ',') { + if (yych <= '\f') { + if (yych <= 0x00) goto yy903; + if (yych <= 0x08) goto yy911; + if (yych <= '\n') goto yy905; + goto yy911; + } else { + if (yych <= '\r') goto yy905; + if (yych == ' ') goto yy905; + goto yy911; } } else { - if (yych <= '_') { - if (yych <= '@') goto yy893; - if (yych <= 'Z') goto yy891; - if (yych <= '^') goto yy893; - goto yy891; - } else { - if (yych <= '`') goto yy893; - if (yych <= 'z') goto yy891; - if (yych <= '~') goto yy893; - goto yy891; + if (yych <= '^') { + if (yych <= '-') goto yy907; + if (yych <= '@') goto yy911; + if (yych <= 'Z') goto yy909; + goto yy911; + } else { + if (yych <= '`') { + if (yych <= '_') goto yy909; + goto yy911; + } else { + if (yych <= 'z') goto yy909; + if (yych <= '~') goto yy911; + goto yy909; + } } } -yy887: - YYDEBUG(887, *YYCURSOR); +yy903: + YYDEBUG(903, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(904, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 8802 "Zend/zend_language_scanner.c" +yy905: + YYDEBUG(905, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy899; -yy888: - YYDEBUG(888, *YYCURSOR); + goto yy917; +yy906: + YYDEBUG(906, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -8622,30 +8815,30 @@ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 8626 "Zend/zend_language_scanner.c" -yy889: - YYDEBUG(889, *YYCURSOR); +#line 8819 "Zend/zend_language_scanner.c" +yy907: + YYDEBUG(907, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy896; -yy890: - YYDEBUG(890, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy914; +yy908: + YYDEBUG(908, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1574 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 8640 "Zend/zend_language_scanner.c" -yy891: - YYDEBUG(891, *YYCURSOR); +#line 8833 "Zend/zend_language_scanner.c" +yy909: + YYDEBUG(909, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy895; -yy892: - YYDEBUG(892, *YYCURSOR); + goto yy913; +yy910: + YYDEBUG(910, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" +#line 1563 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { @@ -8656,43 +8849,43 @@ } return T_STRING; } -#line 8660 "Zend/zend_language_scanner.c" -yy893: - YYDEBUG(893, *YYCURSOR); +#line 8853 "Zend/zend_language_scanner.c" +yy911: + YYDEBUG(911, *YYCURSOR); yych = *++YYCURSOR; - goto yy890; -yy894: - YYDEBUG(894, *YYCURSOR); + goto yy908; +yy912: + YYDEBUG(912, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy895: - YYDEBUG(895, *YYCURSOR); +yy913: + YYDEBUG(913, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy894; + goto yy912; } - goto yy892; -yy896: - YYDEBUG(896, *YYCURSOR); + goto yy910; +yy914: + YYDEBUG(914, *YYCURSOR); ++YYCURSOR; - YYDEBUG(897, *YYCURSOR); + YYDEBUG(915, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 8685 "Zend/zend_language_scanner.c" -yy898: - YYDEBUG(898, *YYCURSOR); +#line 8878 "Zend/zend_language_scanner.c" +yy916: + YYDEBUG(916, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy899: - YYDEBUG(899, *YYCURSOR); +yy917: + YYDEBUG(917, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy898; + goto yy916; } - goto yy888; + goto yy906; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -8731,27 +8924,41 @@ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(900, *YYCURSOR); + YYDEBUG(918, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy904; - if (yych <= 'Z') goto yy902; - if (yych <= '^') goto yy904; + if (yych <= '^') { + if (yych <= 0x00) goto yy920; + if (yych <= '@') goto yy924; + if (yych <= 'Z') goto yy922; + goto yy924; } else { - if (yych <= '`') goto yy904; - if (yych <= 'z') goto yy902; - if (yych <= '~') goto yy904; + if (yych <= '`') { + if (yych <= '_') goto yy922; + goto yy924; + } else { + if (yych <= 'z') goto yy922; + if (yych <= '~') goto yy924; + goto yy922; + } } -yy902: - YYDEBUG(902, *YYCURSOR); +yy920: + YYDEBUG(920, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(921, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 8953 "Zend/zend_language_scanner.c" +yy922: + YYDEBUG(922, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy907; -yy903: - YYDEBUG(903, *YYCURSOR); + goto yy927; +yy923: + YYDEBUG(923, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1879 "Zend/zend_language_scanner.l" +#line 1850 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -8763,37 +8970,37 @@ yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 8767 "Zend/zend_language_scanner.c" -yy904: - YYDEBUG(904, *YYCURSOR); +#line 8974 "Zend/zend_language_scanner.c" +yy924: + YYDEBUG(924, *YYCURSOR); ++YYCURSOR; - YYDEBUG(905, *YYCURSOR); + YYDEBUG(925, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1892 "Zend/zend_language_scanner.l" +#line 1863 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 8780 "Zend/zend_language_scanner.c" -yy906: - YYDEBUG(906, *YYCURSOR); +#line 8987 "Zend/zend_language_scanner.c" +yy926: + YYDEBUG(926, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy907: - YYDEBUG(907, *YYCURSOR); +yy927: + YYDEBUG(927, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy906; + goto yy926; } - goto yy903; + goto yy923; } /* *********************************** */ yyc_ST_NOWDOC: { static const unsigned char yybm[] = { - 16, 16, 16, 16, 16, 16, 16, 16, + 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 32, 16, 16, 64, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, @@ -8826,106 +9033,121 @@ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, }; - YYDEBUG(908, *YYCURSOR); + YYDEBUG(928, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy910; + goto yy932; } - if (yych <= '\f') goto yy912; - goto yy914; -yy910: - YYDEBUG(910, *YYCURSOR); + if (yych <= 0x00) goto yy930; + if (yych <= '\f') goto yy935; + goto yy937; +yy930: + YYDEBUG(930, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(931, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 9053 "Zend/zend_language_scanner.c" +yy932: + YYDEBUG(932, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(911, *YYCURSOR); + YYDEBUG(933, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy910; + goto yy932; } - if (yych <= '\f') goto yy921; - goto yy923; -yy912: - YYDEBUG(912, *YYCURSOR); + if (yych <= 0x00) goto yy934; + if (yych <= '\f') goto yy944; + goto yy946; +yy934: + YYDEBUG(934, *YYCURSOR); +yy935: + YYDEBUG(935, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(913, *YYCURSOR); + YYDEBUG(936, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy912; + goto yy935; } - if (yych <= '^') { - if (yych <= '\r') { - if (yych <= '\f') goto yy910; + if (yych <= 'Z') { + if (yych <= '\f') { + if (yych <= 0x00) goto yy934; + goto yy932; } else { - if (yych <= '@') goto yy910; - if (yych <= 'Z') goto yy916; - goto yy910; + if (yych <= '\r') goto yy937; + if (yych <= '@') goto yy932; + goto yy939; } } else { if (yych <= '`') { - if (yych <= '_') goto yy916; - goto yy910; + if (yych == '_') goto yy939; + goto yy932; } else { - if (yych <= 'z') goto yy916; - if (yych <= '~') goto yy910; - goto yy916; + if (yych <= 'z') goto yy939; + if (yych <= '~') goto yy932; + goto yy939; } } -yy914: - YYDEBUG(914, *YYCURSOR); +yy937: + YYDEBUG(937, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(915, *YYCURSOR); + YYDEBUG(938, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy912; + goto yy935; } - if (yych <= '^') { - if (yych <= '\r') { - if (yych <= '\f') goto yy910; - goto yy914; + if (yych <= 'Z') { + if (yych <= '\f') { + if (yych <= 0x00) goto yy934; + goto yy932; } else { - if (yych <= '@') goto yy910; - if (yych >= '[') goto yy910; + if (yych <= '\r') goto yy937; + if (yych <= '@') goto yy932; } } else { if (yych <= '`') { - if (yych >= '`') goto yy910; + if (yych != '_') goto yy932; } else { - if (yych <= 'z') goto yy916; - if (yych <= '~') goto yy910; + if (yych <= 'z') goto yy939; + if (yych <= '~') goto yy932; } } -yy916: - YYDEBUG(916, *YYCURSOR); +yy939: + YYDEBUG(939, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(917, *YYCURSOR); + YYDEBUG(940, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy916; + goto yy939; } if (yych <= '\f') { - if (yych == '\n') goto yy919; - goto yy910; + if (yych <= 0x00) goto yy934; + if (yych == '\n') goto yy942; + goto yy932; } else { - if (yych <= '\r') goto yy919; - if (yych != ';') goto yy910; + if (yych <= '\r') goto yy942; + if (yych != ';') goto yy932; } - YYDEBUG(918, *YYCURSOR); + YYDEBUG(941, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy910; + goto yy932; } -yy919: - YYDEBUG(919, *YYCURSOR); + if (yych <= 0x00) goto yy934; +yy942: + YYDEBUG(942, *YYCURSOR); ++YYCURSOR; - YYDEBUG(920, *YYCURSOR); + YYDEBUG(943, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2628 "Zend/zend_language_scanner.l" +#line 2604 "Zend/zend_language_scanner.l" { char *end = yytext + yyleng - 1; @@ -8966,55 +9188,58 @@ yymore(); } } -#line 8970 "Zend/zend_language_scanner.c" -yy921: - YYDEBUG(921, *YYCURSOR); +#line 9192 "Zend/zend_language_scanner.c" +yy944: + YYDEBUG(944, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(922, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '\f') { - if (yych == '\n') goto yy921; - goto yy910; + YYDEBUG(945, *YYCURSOR); + if (yych <= '@') { + if (yych <= '\n') { + if (yych <= 0x00) goto yy934; + if (yych <= '\t') goto yy932; + goto yy944; } else { - if (yych <= '\r') goto yy923; - if (yych <= '@') goto yy910; - goto yy916; + if (yych != '\r') goto yy932; } } else { - if (yych <= '`') { - if (yych == '_') goto yy916; - goto yy910; - } else { - if (yych <= 'z') goto yy916; - if (yych <= '~') goto yy910; - goto yy916; + if (yych <= '_') { + if (yych <= 'Z') goto yy939; + if (yych <= '^') goto yy932; + goto yy939; + } else { + if (yych <= '`') goto yy932; + if (yych <= 'z') goto yy939; + if (yych <= '~') goto yy932; + goto yy939; } } -yy923: - YYDEBUG(923, *YYCURSOR); +yy946: + YYDEBUG(946, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(924, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '\f') { - if (yych == '\n') goto yy921; - goto yy910; + YYDEBUG(947, *YYCURSOR); + if (yych <= '@') { + if (yych <= '\n') { + if (yych <= 0x00) goto yy934; + if (yych <= '\t') goto yy932; + goto yy944; } else { - if (yych <= '\r') goto yy923; - if (yych <= '@') goto yy910; - goto yy916; + if (yych == '\r') goto yy946; + goto yy932; } } else { - if (yych <= '`') { - if (yych == '_') goto yy916; - goto yy910; - } else { - if (yych <= 'z') goto yy916; - if (yych <= '~') goto yy910; - goto yy916; + if (yych <= '_') { + if (yych <= 'Z') goto yy939; + if (yych <= '^') goto yy932; + goto yy939; + } else { + if (yych <= '`') goto yy932; + if (yych <= 'z') goto yy939; + if (yych <= '~') goto yy932; + goto yy939; } } } @@ -9022,7 +9247,7 @@ yyc_ST_ONE_LINE_COMMENT: { static const unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 128, + 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, @@ -9055,52 +9280,64 @@ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(925, *YYCURSOR); + YYDEBUG(948, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy931; + goto yy956; } - if (yych <= '\f') goto yy934; - if (yych <= '\r') goto yy935; - if (yych <= '=') goto yy927; - if (yych <= '>') goto yy929; - goto yy930; -yy927: - YYDEBUG(927, *YYCURSOR); + if (yych <= '\r') { + if (yych <= 0x00) goto yy950; + if (yych <= '\f') goto yy959; + goto yy960; + } else { + if (yych <= '=') goto yy952; + if (yych <= '>') goto yy954; + goto yy955; + } +yy950: + YYDEBUG(950, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy939; -yy928: - YYDEBUG(928, *YYCURSOR); + YYDEBUG(951, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 9306 "Zend/zend_language_scanner.c" +yy952: + YYDEBUG(952, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy964; +yy953: + YYDEBUG(953, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2282 "Zend/zend_language_scanner.l" +#line 2253 "Zend/zend_language_scanner.l" { yymore(); } -#line 9081 "Zend/zend_language_scanner.c" -yy929: - YYDEBUG(929, *YYCURSOR); +#line 9318 "Zend/zend_language_scanner.c" +yy954: + YYDEBUG(954, *YYCURSOR); yych = *++YYCURSOR; - goto yy928; -yy930: - YYDEBUG(930, *YYCURSOR); + goto yy953; +yy955: + YYDEBUG(955, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy939; - goto yy928; -yy931: - YYDEBUG(931, *YYCURSOR); + if (yych == '>') goto yy964; + goto yy953; +yy956: + YYDEBUG(956, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(932, *YYCURSOR); + YYDEBUG(957, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy931; + goto yy956; } - goto yy938; -yy933: - YYDEBUG(933, *YYCURSOR); + if (yych >= 0x01) goto yy963; +yy958: + YYDEBUG(958, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2286 "Zend/zend_language_scanner.l" +#line 2257 "Zend/zend_language_scanner.l" { switch (yytext[yyleng-1]) { case '?': case '%': case '>': @@ -9118,20 +9355,20 @@ return T_COMMENT; } } -#line 9122 "Zend/zend_language_scanner.c" -yy934: - YYDEBUG(934, *YYCURSOR); +#line 9359 "Zend/zend_language_scanner.c" +yy959: + YYDEBUG(959, *YYCURSOR); yych = *++YYCURSOR; - goto yy933; -yy935: - YYDEBUG(935, *YYCURSOR); + goto yy958; +yy960: + YYDEBUG(960, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '\n') goto yy933; - YYDEBUG(936, *YYCURSOR); + if (yych != '\n') goto yy958; + YYDEBUG(961, *YYCURSOR); ++YYCURSOR; - YYDEBUG(937, *YYCURSOR); + YYDEBUG(962, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2304 "Zend/zend_language_scanner.l" +#line 2275 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -9140,17 +9377,17 @@ CG(zend_lineno)++; return T_COMMENT; } -#line 9144 "Zend/zend_language_scanner.c" -yy938: - YYDEBUG(938, *YYCURSOR); +#line 9381 "Zend/zend_language_scanner.c" +yy963: + YYDEBUG(963, *YYCURSOR); yych = *++YYCURSOR; - goto yy933; -yy939: - YYDEBUG(939, *YYCURSOR); + goto yy958; +yy964: + YYDEBUG(964, *YYCURSOR); ++YYCURSOR; - YYDEBUG(940, *YYCURSOR); + YYDEBUG(965, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2313 "Zend/zend_language_scanner.l" +#line 2284 "Zend/zend_language_scanner.l" { if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -9163,7 +9400,7 @@ yymore(); } } -#line 9167 "Zend/zend_language_scanner.c" +#line 9404 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -9202,69 +9439,77 @@ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }; - YYDEBUG(941, *YYCURSOR); + YYDEBUG(966, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '/') { - if (yych <= ' ') { - if (yych <= '\f') { - if (yych <= 0x08) goto yy955; - if (yych <= '\n') goto yy951; - goto yy955; + if (yych <= 0x1F) { + if (yych <= '\n') { + if (yych <= 0x00) goto yy968; + if (yych <= 0x08) goto yy982; + goto yy978; } else { - if (yych <= '\r') goto yy951; - if (yych <= 0x1F) goto yy955; - goto yy951; + if (yych == '\r') goto yy978; + goto yy982; } } else { - if (yych <= '$') { - if (yych <= '"') goto yy950; - if (yych <= '#') goto yy951; - goto yy946; + if (yych <= '#') { + if (yych <= ' ') goto yy978; + if (yych <= '"') goto yy977; + goto yy978; } else { - if (yych == '\'') goto yy951; - goto yy950; + if (yych <= '$') goto yy973; + if (yych == '\'') goto yy978; + goto yy977; } } } else { if (yych <= '\\') { if (yych <= '@') { - if (yych <= '0') goto yy943; - if (yych <= '9') goto yy945; - goto yy950; + if (yych <= '0') goto yy970; + if (yych <= '9') goto yy972; + goto yy977; } else { - if (yych <= 'Z') goto yy953; - if (yych <= '[') goto yy950; - goto yy951; + if (yych <= 'Z') goto yy980; + if (yych <= '[') goto yy977; + goto yy978; } } else { if (yych <= '_') { - if (yych <= ']') goto yy948; - if (yych <= '^') goto yy950; - goto yy953; + if (yych <= ']') goto yy975; + if (yych <= '^') goto yy977; + goto yy980; } else { - if (yych <= '`') goto yy950; - if (yych <= 'z') goto yy953; - if (yych <= '~') goto yy950; - goto yy953; + if (yych <= '`') goto yy977; + if (yych <= 'z') goto yy980; + if (yych <= '~') goto yy977; + goto yy980; } } } -yy943: - YYDEBUG(943, *YYCURSOR); +yy968: + YYDEBUG(968, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(969, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2657 "Zend/zend_language_scanner.l" + { return 0; } +#line 9498 "Zend/zend_language_scanner.c" +yy970: + YYDEBUG(970, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { - if (yych <= '/') goto yy944; - if (yych <= '9') goto yy966; + if (yych <= '/') goto yy971; + if (yych <= '9') goto yy993; } else { - if (yych <= 'X') goto yy964; - if (yych == 'x') goto yy964; + if (yych <= 'X') goto yy991; + if (yych == 'x') goto yy991; } -yy944: - YYDEBUG(944, *YYCURSOR); +yy971: + YYDEBUG(971, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1942 "Zend/zend_language_scanner.l" +#line 1913 "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)) { Z_LVAL_P(zendlval) = strtol(yytext, NULL, 10); @@ -9276,53 +9521,53 @@ } return T_NUM_STRING; } -#line 9280 "Zend/zend_language_scanner.c" -yy945: - YYDEBUG(945, *YYCURSOR); - yych = *++YYCURSOR; - goto yy963; -yy946: - YYDEBUG(946, *YYCURSOR); +#line 9525 "Zend/zend_language_scanner.c" +yy972: + YYDEBUG(972, *YYCURSOR); + yych = *++YYCURSOR; + goto yy990; +yy973: + YYDEBUG(973, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy947; - if (yych <= 'Z') goto yy959; - if (yych >= '_') goto yy959; - } else { - if (yych <= '`') goto yy947; - if (yych <= 'z') goto yy959; - if (yych >= 0x7F) goto yy959; + if (yych <= '@') goto yy974; + if (yych <= 'Z') goto yy986; + if (yych >= '_') goto yy986; + } else { + if (yych <= '`') goto yy974; + if (yych <= 'z') goto yy986; + if (yych >= 0x7F) goto yy986; } -yy947: - YYDEBUG(947, *YYCURSOR); +yy974: + YYDEBUG(974, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2246 "Zend/zend_language_scanner.l" +#line 2217 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 9305 "Zend/zend_language_scanner.c" -yy948: - YYDEBUG(948, *YYCURSOR); +#line 9550 "Zend/zend_language_scanner.c" +yy975: + YYDEBUG(975, *YYCURSOR); ++YYCURSOR; - YYDEBUG(949, *YYCURSOR); + YYDEBUG(976, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2241 "Zend/zend_language_scanner.l" +#line 2212 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 9316 "Zend/zend_language_scanner.c" -yy950: - YYDEBUG(950, *YYCURSOR); +#line 9561 "Zend/zend_language_scanner.c" +yy977: + YYDEBUG(977, *YYCURSOR); yych = *++YYCURSOR; - goto yy947; -yy951: - YYDEBUG(951, *YYCURSOR); + goto yy974; +yy978: + YYDEBUG(978, *YYCURSOR); ++YYCURSOR; - YYDEBUG(952, *YYCURSOR); + YYDEBUG(979, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2251 "Zend/zend_language_scanner.l" +#line 2222 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -9330,70 +9575,70 @@ ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */ return T_ENCAPSED_AND_WHITESPACE; } -#line 9334 "Zend/zend_language_scanner.c" -yy953: - YYDEBUG(953, *YYCURSOR); +#line 9579 "Zend/zend_language_scanner.c" +yy980: + YYDEBUG(980, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy958; -yy954: - YYDEBUG(954, *YYCURSOR); + goto yy985; +yy981: + YYDEBUG(981, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2269 "Zend/zend_language_scanner.l" +#line 2240 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { return 0; } return T_STRING; } -#line 9350 "Zend/zend_language_scanner.c" -yy955: - YYDEBUG(955, *YYCURSOR); +#line 9595 "Zend/zend_language_scanner.c" +yy982: + YYDEBUG(982, *YYCURSOR); ++YYCURSOR; - YYDEBUG(956, *YYCURSOR); + YYDEBUG(983, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2682 "Zend/zend_language_scanner.l" +#line 2659 "Zend/zend_language_scanner.l" { zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 9361 "Zend/zend_language_scanner.c" -yy957: - YYDEBUG(957, *YYCURSOR); +#line 9606 "Zend/zend_language_scanner.c" +yy984: + YYDEBUG(984, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy958: - YYDEBUG(958, *YYCURSOR); +yy985: + YYDEBUG(985, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy957; + goto yy984; } - goto yy954; -yy959: - YYDEBUG(959, *YYCURSOR); + goto yy981; +yy986: + YYDEBUG(986, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(960, *YYCURSOR); + YYDEBUG(987, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy959; + if (yych >= '0') goto yy986; } else { - if (yych <= '@') goto yy961; - if (yych <= 'Z') goto yy959; + if (yych <= '@') goto yy988; + if (yych <= 'Z') goto yy986; } } else { if (yych <= '`') { - if (yych <= '_') goto yy959; + if (yych <= '_') goto yy986; } else { - if (yych <= 'z') goto yy959; - if (yych >= 0x7F) goto yy959; + if (yych <= 'z') goto yy986; + if (yych >= 0x7F) goto yy986; } } -yy961: - YYDEBUG(961, *YYCURSOR); +yy988: + YYDEBUG(988, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2231 "Zend/zend_language_scanner.l" +#line 2202 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -9403,58 +9648,58 @@ } return T_VARIABLE; } -#line 9407 "Zend/zend_language_scanner.c" -yy962: - YYDEBUG(962, *YYCURSOR); +#line 9652 "Zend/zend_language_scanner.c" +yy989: + YYDEBUG(989, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy963: - YYDEBUG(963, *YYCURSOR); +yy990: + YYDEBUG(990, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy962; + goto yy989; } - goto yy944; -yy964: - YYDEBUG(964, *YYCURSOR); + goto yy971; +yy991: + YYDEBUG(991, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy969; + goto yy996; } - YYDEBUG(965, *YYCURSOR); + YYDEBUG(992, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy944; -yy966: - YYDEBUG(966, *YYCURSOR); + goto yy971; +yy993: + YYDEBUG(993, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(967, *YYCURSOR); - if (yych <= '/') goto yy968; - if (yych <= '9') goto yy966; -yy968: - YYDEBUG(968, *YYCURSOR); + YYDEBUG(994, *YYCURSOR); + if (yych <= '/') goto yy995; + if (yych <= '9') goto yy993; +yy995: + YYDEBUG(995, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1954 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { return 0; } return T_NUM_STRING; } -#line 9446 "Zend/zend_language_scanner.c" -yy969: - YYDEBUG(969, *YYCURSOR); +#line 9691 "Zend/zend_language_scanner.c" +yy996: + YYDEBUG(996, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(970, *YYCURSOR); + YYDEBUG(997, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy969; + goto yy996; } - goto yy968; + goto yy995; } } -#line 2687 "Zend/zend_language_scanner.l" +#line 2664 "Zend/zend_language_scanner.l" } http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.l?r1=1.200&r2=1.201&diff_format=u Index: ZendEngine2/zend_language_scanner.l diff -u ZendEngine2/zend_language_scanner.l:1.200 ZendEngine2/zend_language_scanner.l:1.201 --- ZendEngine2/zend_language_scanner.l:1.200 Fri Jan 9 17:20:56 2009 +++ ZendEngine2/zend_language_scanner.l Wed Mar 11 22:11:41 2009 @@ -1,2667 +1,2665 @@ -/* - +----------------------------------------------------------------------+ - | Zend Engine | - +----------------------------------------------------------------------+ - | Copyright (c) 1998-2009 Zend Technologies Ltd. (http://www.zend.com) | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Marcus Boerger <helly@php.net> | - | Nuno Lopes <nlopess@php.net> | - | Scott MacVicar <scottmac@php.net> | - | Flex version authors: | - | Andi Gutmans <andi@zend.com> | - | Zeev Suraski <zeev@zend.com> | - +----------------------------------------------------------------------+ -*/ - -/* $Id: zend_language_scanner.l,v 1.200 2009/01/09 17:20:56 iliaa Exp $ */ - -#if 0 -# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) -#else -# define YYDEBUG(s, c) -#endif - -#include "zend_language_scanner_defs.h" - -#include <errno.h> -#include "zend.h" -#include "zend_alloc.h" -#include <zend_language_parser.h> -#include "zend_compile.h" -#include "zend_language_scanner.h" -#include "zend_highlight.h" -#include "zend_constants.h" -#include "zend_variables.h" -#include "zend_operators.h" -#include "zend_API.h" -#include "zend_strtod.h" -#include "zend_unicode.h" -#include "tsrm_virtual_cwd.h" -#include "tsrm_config_common.h" - -#define YYCTYPE unsigned char -#define YYFILL(n) { if (YYCURSOR >= YYLIMIT) return 0; } -#define YYCURSOR SCNG(yy_cursor) -#define YYLIMIT SCNG(yy_limit) -#define YYMARKER SCNG(yy_marker) - -#define YYGETCONDITION() SCNG(yy_state) -#define YYSETCONDITION(s) SCNG(yy_state) = s - -#define STATE(name) yyc##name - -/* emulate flex constructs */ -#define BEGIN(state) YYSETCONDITION(STATE(state)) -#define YYSTATE YYGETCONDITION() -#define yytext ((char*)SCNG(yy_text)) -#define yyleng SCNG(yy_leng) -#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + (x); \ - yyleng = (unsigned int)(x); } while(0) -#define yymore() goto yymore_restart - -/* perform sanity check. If this message is triggered you should - increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ -/*!max:re2c */ -#if ZEND_MMAP_AHEAD < YYMAXFILL -# error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL -#endif - -#ifdef HAVE_STDARG_H -# include <stdarg.h> -#endif - -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif - -/* Globals Macros */ -#define SCNG LANG_SCNG -#ifdef ZTS -ZEND_API ts_rsrc_id language_scanner_globals_id; -#else -ZEND_API zend_php_scanner_globals language_scanner_globals; -#endif - -/* -#define YY_INPUT(buf, result, max_size) \ - if ( ((result = zend_unicode_yyinput(yyin, buf, max_size TSRMLS_CC)) == 0)) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -*/ - -#define HANDLE_NEWLINES(s, l) \ -do { \ - char *p = (s), *boundary = p+(l); \ - \ - while (p<boundary) { \ - if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \ - CG(zend_lineno)++; \ - } \ - p++; \ - } \ -} while (0) - -#define HANDLE_NEWLINE(c) \ -{ \ - if (c == '\n' || c == '\r') { \ - CG(zend_lineno)++; \ - } \ -} - -#define ZEND_IS_OCT(c) ((c)>='0' && (c)<='7') -#define ZEND_IS_HEX(c) (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F')) - -BEGIN_EXTERN_C() - -static void _yy_push_state(int new_state TSRMLS_DC) - { - zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int)); - YYSETCONDITION(new_state); -} - -#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm) - -static void yy_pop_state(TSRMLS_D) -{ - int *stack_state; - zend_stack_top(&SCNG(state_stack), (void **) &stack_state); - YYSETCONDITION(*stack_state); - zend_stack_del_top(&SCNG(state_stack)); -} - -static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) -{ - YYCURSOR = (YYCTYPE*)str; - SCNG(yy_start) = YYCURSOR; - YYLIMIT = YYCURSOR + len; - } - -void startup_scanner(TSRMLS_D) -{ - CG(heredoc) = NULL; - CG(heredoc_len) = 0; - CG(doc_comment) = NULL_ZSTR; - CG(doc_comment_len) = 0; - - SCNG(input_conv) = NULL; - SCNG(output_conv) = NULL; - SCNG(encoding_checked) = 0; - SCNG(rest_str) = NULL; - SCNG(rest_len) = 0; - - zend_llist_init(&SCNG(used_state_stacks), sizeof(zend_stack), (llist_dtor_func_t) zend_stack_destroy, 0); - zend_stack_init(&SCNG(state_stack)); - zend_llist_add_element(&SCNG(used_state_stacks), &SCNG(state_stack)); -} - - -void shutdown_scanner(TSRMLS_D) -{ - if (CG(heredoc)) { - efree(CG(heredoc)); - CG(heredoc_len)=0; - } - zend_llist_destroy(&SCNG(used_state_stacks)); - RESET_DOC_COMMENT(); - - if (SCNG(input_conv)) { - ucnv_close(SCNG(input_conv)); - SCNG(input_conv) = NULL; - } - if (SCNG(output_conv)) { - ucnv_close(SCNG(output_conv)); - SCNG(output_conv) = NULL; - } - SCNG(encoding_checked) = 0; - if (SCNG(rest_str)) { - efree(SCNG(rest_str)); - SCNG(rest_str) = NULL; - } - SCNG(rest_len) = 0; -} - -static int compare_stacks(zend_stack *stack1, zend_stack *stack2) -{ - return (stack1 == stack2); -} - -ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) -{ - lex_state->yy_leng = SCNG(yy_leng); - lex_state->yy_start = SCNG(yy_start); - lex_state->yy_text = SCNG(yy_text); - lex_state->yy_cursor = SCNG(yy_cursor); - lex_state->yy_marker = SCNG(yy_marker); - lex_state->yy_limit = SCNG(yy_limit); - - lex_state->state_stack = SCNG(state_stack); - zend_stack_init(&SCNG(state_stack)); - zend_llist_add_element(&SCNG(used_state_stacks), &SCNG(state_stack)); - - lex_state->in = SCNG(yy_in); - lex_state->yy_state = YYSTATE; - lex_state->filename = zend_get_compiled_filename(TSRMLS_C); - lex_state->lineno = CG(zend_lineno); - - lex_state->input_conv = SCNG(input_conv); - lex_state->output_conv = SCNG(output_conv); - lex_state->encoding_checked = SCNG(encoding_checked); - lex_state->rest_str = SCNG(rest_str); - lex_state->rest_len = SCNG(rest_len); - SCNG(input_conv) = NULL; - SCNG(output_conv) = NULL; - SCNG(encoding_checked) = 0; - SCNG(rest_str) = NULL; - SCNG(rest_len) = 0; -} - -ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) -{ - SCNG(yy_leng) = lex_state->yy_leng; - SCNG(yy_start) = lex_state->yy_start; - SCNG(yy_text) = lex_state->yy_text; - SCNG(yy_cursor) = lex_state->yy_cursor; - SCNG(yy_marker) = lex_state->yy_marker; - SCNG(yy_limit) = lex_state->yy_limit; - - zend_llist_del_element(&SCNG(used_state_stacks), &SCNG(state_stack), (int (*)(void *, void *)) compare_stacks); - SCNG(state_stack) = lex_state->state_stack; - - SCNG(yy_in) = lex_state->in; - YYSETCONDITION(lex_state->yy_state); - CG(zend_lineno) = lex_state->lineno; - zend_restore_compiled_filename(lex_state->filename TSRMLS_CC); - zend_restore_compiled_script_encoding(lex_state->script_encoding TSRMLS_CC); - - if (SCNG(input_conv)) { - ucnv_close(SCNG(input_conv)); - } - SCNG(input_conv) = lex_state->input_conv; - if (SCNG(output_conv)) { - ucnv_close(SCNG(output_conv)); - } - SCNG(output_conv) = lex_state->output_conv; - SCNG(encoding_checked) = lex_state->encoding_checked; - if (SCNG(rest_str)) { - efree(SCNG(rest_str)); - } - SCNG(rest_str) = lex_state->rest_str; - SCNG(rest_len) = lex_state->rest_len; -} - -ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) -{ - zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles); - /* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */ - file_handle->opened_path = NULL; - if (file_handle->free_filename) { - file_handle->filename = NULL; - } -} - -/* Convert one octal digit to a numeric value 0..7, or -1 on failure */ -static inline int8_t zend_get_octal_digit(UChar c) { - if (c >= 0x0030 && c <= 0x0037) { - return (int8_t)(c - 0x0030); - } - return -1; -} - -/* - * Convert one hex digit to a numeric value 0..F, or -1 on failure. - * Borrowed from ICU. - */ -static inline int8_t zend_get_hex_digit(UChar c) { - if (c >= 0x0030 && c <= 0x0039) { - return (int8_t)(c - 0x0030); - } - if (c >= 0x0041 && c <= 0x0046) { - return (int8_t)(c - (0x0041 - 10)); - } - if (c >= 0x0061 && c <= 0x0066) { - return (int8_t)(c - (0x0061 - 10)); - } - return -1; -} - -static inline zend_bool zend_udigits_to_codepoint(UChar *s, UChar *end, UChar32 *c, int8_t digits) -{ - int8_t n = 0; - int8_t digit = 0; - UChar32 codepoint = 0; - - while (s < end && n < digits) { - digit = zend_get_hex_digit(*s); - if (digit < 0) { - break; - } - codepoint = (codepoint << 4) | digit; - ++s; - ++n; - } - - if (n < digits) { - return 0; - } - - *c = codepoint; - return 1; -} - -static inline int zend_uchar_from_uname(UChar *name, int name_len, UChar32 *c TSRMLS_DC) -{ - UChar32 codepoint = 0; - UErrorCode status = U_ZERO_ERROR; - char *buf; - - buf = zend_unicode_to_ascii(name, name_len TSRMLS_CC); - if (!buf) return 0; - codepoint = u_charFromName(U_UNICODE_CHAR_NAME, buf, &status); - efree(buf); - if (U_SUCCESS(status)) { - *c = codepoint; - return 1; - } else { - return 0; - } -} - -static inline int zend_parse_charname_sequence(UChar **s, UChar *end, UChar32 *c TSRMLS_DC) -{ - UChar *start; - - if (**s == '{') { - start = ++(*s); - while ((*s)++ != end) { - if (**s == '}') { - if (zend_uchar_from_uname(start, *s - start, c TSRMLS_CC)) { - return 1; - } else { - /* safe, since *s points to '}' */ - **s = 0; - zend_error(E_COMPILE_WARNING, "Invalid Unicode character name: '%r'", start); - break; - } - } - } - } - - return 0; -} - -ZEND_API int zend_copy_scanner_string(zval *zendlval, char *str, zend_uint str_len, zend_uchar type, UConverter *conv TSRMLS_DC) -{ - UErrorCode status = U_ZERO_ERROR; - int consumed = 0; - - if (type == IS_UNICODE) { - consumed = zend_convert_scanner_output(conv, &Z_USTRVAL_P(zendlval), &Z_USTRLEN_P(zendlval), str, str_len, &status TSRMLS_CC); - - if (U_FAILURE(status)) { - zend_error(E_COMPILE_WARNING,"Illegal or truncated character in input: offset %d, state=%d", consumed, YYSTATE); - efree(Z_USTRVAL_P(zendlval)); - return 0; - } - Z_TYPE_P(zendlval) = IS_UNICODE; - } else { - Z_STRVAL_P(zendlval) = (char *)estrndup(str, str_len); - Z_STRLEN_P(zendlval) = str_len; - Z_TYPE_P(zendlval) = IS_STRING; - } - - return 1; -} - -static inline int zend_check_and_normalize_identifier(zval *zendlval) -{ - UChar *norm; - int norm_len; - - if (!zend_is_valid_identifier(Z_USTRVAL_P(zendlval), Z_USTRLEN_P(zendlval))) { - zend_error(E_COMPILE_WARNING, "Invalid identifier syntax: %r", Z_USTRVAL_P(zendlval)); - efree(Z_USTRVAL_P(zendlval)); - return 0; - } - if (zend_normalize_identifier(&norm, &norm_len, Z_USTRVAL_P(zendlval), Z_USTRLEN_P(zendlval), 0) == FAILURE) { - zend_error(E_COMPILE_WARNING, "Could not normalize identifier: %r", Z_USTRVAL_P(zendlval)); - efree(Z_USTRVAL_P(zendlval)); - return 0; - } - if (norm != Z_USTRVAL_P(zendlval)) { - efree(Z_USTRVAL_P(zendlval)); - ZVAL_UNICODEL(zendlval, norm, norm_len, 0); - } - return 1; -} - -static void zend_scanner_output_callback( - const void *context, - UConverterToUnicodeArgs *toUArgs, - const char *codeUnits, - int32_t length, - UConverterCallbackReason reason, - UErrorCode *err - ) -{ - if (*err == U_TRUNCATED_CHAR_FOUND || - *err == U_ILLEGAL_CHAR_FOUND || - *err == U_INVALID_CHAR_FOUND) { - *(const char **)context = toUArgs->source - length; - } - - return; -} - -static int is_encoding_flex_compatible(const char *enc TSRMLS_DC) -{ - int key_len = strlen(enc)+1; - unsigned char ret; - unsigned char *ret_ptr; - - if (zend_hash_find(&UG(flex_compatible), (char*)enc, key_len, (void**)&ret_ptr) == SUCCESS) { - return *ret_ptr; - } else { - UErrorCode status = U_ZERO_ERROR; - UConverter *conv = ucnv_open(enc, &status); - - if (U_FAILURE(status)) { - return 0; - } - - switch (ucnv_getType(conv)) { - case UCNV_DBCS: - case UCNV_UTF16_BigEndian: - case UCNV_UTF16_LittleEndian: - case UCNV_UTF32_BigEndian: - case UCNV_UTF32_LittleEndian: - case UCNV_EBCDIC_STATEFUL: - case UCNV_ISO_2022: - case UCNV_LMBCS_1: - case UCNV_LMBCS_2: - case UCNV_LMBCS_3: - case UCNV_LMBCS_4: - case UCNV_LMBCS_5: - case UCNV_LMBCS_6: - case UCNV_LMBCS_8: - case UCNV_LMBCS_11: - case UCNV_LMBCS_16: - case UCNV_LMBCS_17: - case UCNV_LMBCS_18: - case UCNV_LMBCS_19: - case UCNV_HZ: - case UCNV_SCSU: - case UCNV_UTF7: - case UCNV_BOCU1: - case UCNV_UTF16: - case UCNV_UTF32: - case UCNV_IMAP_MAILBOX: - ret = 0; - break; - case UCNV_LATIN_1: - case UCNV_UTF8: - case UCNV_ISCII: - case UCNV_US_ASCII: - case UCNV_CESU8: - ret = 1; - break; - default: { - static const UChar ascii[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E - }; - static const char expected[] = - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" - "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F" - "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F" - "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F" - "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F" - "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F" - "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F" - "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E"; - char output[sizeof(expected)]; - - if (ucnv_fromUChars(conv, - output, sizeof(output), - ascii, sizeof(expected), - &status) != sizeof(expected) || - U_FAILURE(status)) { - ret = 0; - } else { - ret = (memcmp(expected, output, sizeof(expected)) == 0); - } - } - } - ucnv_close(conv); - - zend_hash_add(&UG(flex_compatible), (char*)enc, key_len, (void**)&ret, sizeof(ret), NULL); - - return ret; - } -} - -ZEND_API int zend_prepare_scanner_converters(const char *onetime_encoding, int run_time TSRMLS_DC) -{ - const char *encoding = NULL; - - if (SCNG(input_conv)) { - /* Script is already converted to UTF-8 */ - return zend_set_converter_encoding(&SCNG(output_conv), "UTF-8"); - } else { - encoding = onetime_encoding; - } - - /* We need to convert the input stream only if script_encoding is not ASCII compatible */ - if (!is_encoding_flex_compatible(encoding TSRMLS_CC)) { - if (zend_set_converter_encoding(&SCNG(input_conv), encoding) == FAILURE) { - return FAILURE; - } -#ifdef scottmac_0 - if (run_time) { - /* Convert rest of the buffer to unicode.runtime_encoding. */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - int offset, length, size; - const char *src, *old_src; - char rt_buf[8192]; - char *target = rt_buf; - UErrorCode status = U_ZERO_ERROR; - - old_src = src = yy_c_buf_p; - offset = yy_c_buf_p - b->yy_ch_buf; - length = b->yy_n_chars - offset; - size = b->yy_buf_size - offset; - - ucnv_convertEx(UG(utf8_conv), - SCNG(input_conv), - &target, rt_buf+size-2, - &src, src+length, - NULL, NULL, NULL, NULL, - TRUE, TRUE, - &status); - - if (src - old_src < length) { - /* Cannot fit into buffer. Schedule for next read. */ - SCNG(rest_len) = length - (src - old_src); - SCNG(rest_str) = emalloc(SCNG(rest_len)); - memcpy(SCNG(rest_str), src, SCNG(rest_len)); - } - length = target - rt_buf; - memcpy(yy_c_buf_p, rt_buf, length); - SCNG(yy_n_chars) = b->yy_n_chars = length + offset; - b->yy_ch_buf[b->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[b->yy_n_chars+1] = YY_END_OF_BUFFER_CHAR; - } -#endif - encoding = "UTF-8"; - } - return zend_set_converter_encoding(&SCNG(output_conv), encoding); -} - -ZEND_API int zend_convert_scanner_output(UConverter *conv, UChar **target, int *target_len, const char *source, int source_len, UErrorCode *status TSRMLS_DC) -{ - const char *source_consumed = NULL; - - /* set our custom callback with context */ - ucnv_setToUCallBack(conv, zend_scanner_output_callback, &source_consumed, NULL, NULL, status); - - /* reset the error and perform conversion */ - *status = U_ZERO_ERROR; - zend_string_to_unicode_ex(conv, target, target_len, source, source_len, status); - - /* figure out how many source bytes were consumed */ - if (U_SUCCESS(*status)) { - return source_len; - } else if (source_consumed) { - return source_consumed - source; - } else { - return 0; - } -} - -int zend_unicode_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC) -{ - size_t n = len; - const char *src = buf; - -#ifdef scottmac_0 - /* Look of we have rest from previous call */ - if (SCNG(rest_str)) { - if (len >= SCNG(rest_len)) { - memcpy(buf, SCNG(rest_str), SCNG(rest_len)); - efree(SCNG(rest_str)); - SCNG(rest_str) = NULL; - n = SCNG(rest_len); - SCNG(rest_len) = 0; - } else { - memcpy(buf, SCNG(rest_str), len); - memcpy(SCNG(rest_str), SCNG(rest_str)+len, SCNG(rest_len)-len); - n = len; - SCNG(rest_len) -= len; - } - } else { - n = zend_stream_read(file_handle, buf, len TSRMLS_CC); - } -#endif - - /* Don't make any conversions if unicode=off */ - if (!UG(unicode)) { - return n; - } - - /* Autodetect encoding */ - if (!SCNG(encoding_checked)) { - int32_t signatureLength; - UErrorCode status = U_ZERO_ERROR; - const char *encoding; - - encoding = ucnv_detectUnicodeSignature(buf, n, &signatureLength, &status); - if (encoding && U_SUCCESS(status)) { - src += signatureLength; - n -= signatureLength; - if (is_encoding_flex_compatible(encoding TSRMLS_CC)) { - if (SCNG(input_conv)) { - ucnv_close(SCNG(input_conv)); - SCNG(input_conv) = NULL; - } - zend_set_converter_encoding(&SCNG(output_conv), encoding); - if (signatureLength > 0) { - memcpy(buf, src, n); - } - } else { - zend_set_converter_encoding(&SCNG(input_conv), encoding); - zend_set_converter_encoding(&SCNG(output_conv), "UTF-8"); - } - } - status = U_ZERO_ERROR; - SCNG(encoding_checked) = 1; - } - - if (SCNG(input_conv) && n >= 0) { - UErrorCode status = U_ZERO_ERROR; - char rt_buf[8192]; - char *target = rt_buf; - const char *old_src = src; - - ucnv_convertEx(UG(utf8_conv), - SCNG(input_conv), - &target, rt_buf+len, - &src, src+n, - NULL, NULL, NULL, NULL, - TRUE, TRUE, - &status); - if (src - old_src < n) { - /* Cannot fit into buffer. Schedule for next read. */ - SCNG(rest_len) = n - (src - old_src); - SCNG(rest_str) = emalloc(SCNG(rest_len)); - memcpy(SCNG(rest_str), src, SCNG(rest_len)); - } - n = target - rt_buf; - memcpy(buf, rt_buf, n); - } - return n; -} - -ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) -{ - char *file_path=NULL, *buf; - UErrorCode status = U_ZERO_ERROR; - size_t size; - - if (zend_stream_fixup(file_handle, &buf, &size TSRMLS_CC) == FAILURE) { - return FAILURE; - } - - zend_llist_add_element(&CG(open_files), file_handle); - - if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) { - zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files)); - size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle; - fh->handle.stream.handle = (void*)(((char*)fh) + diff); - file_handle->handle.stream.handle = fh->handle.stream.handle; - } - - /* Reset the scanner for scanning the new file */ - SCNG(yy_in) = file_handle; - - zend_prepare_scanner_converters(ucnv_getName(ZEND_U_CONVERTER(UG(script_encoding_conv)), &status), 0 TSRMLS_CC); - - if (size != -1) { - /* Re-encode for Unicode if needed */ - yy_scan_buffer(buf, size TSRMLS_CC); - } else { - zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); - } - - BEGIN(INITIAL); - - if (file_handle->opened_path) { - file_path = file_handle->opened_path; - } else { - file_path = file_handle->filename; - } - - zend_set_compiled_filename(file_path TSRMLS_CC); - zend_set_compiled_script_encoding((char*)ucnv_getName(SCNG(output_conv), &status) TSRMLS_CC); - - if (CG(start_lineno)) { - CG(zend_lineno) = CG(start_lineno); - CG(start_lineno) = 0; - } else { - CG(zend_lineno) = 1; - } - - CG(increment_lineno) = 0; - return SUCCESS; -} -END_EXTERN_C() - - -ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC) -{ - zend_lex_state original_lex_state; - zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array)); - zend_op_array *original_active_op_array = CG(active_op_array); - zend_op_array *retval=NULL; - int compiler_result; - zend_bool compilation_successful=0; - znode retval_znode; - zend_bool original_in_compilation = CG(in_compilation); - - retval_znode.op_type = IS_CONST; - Z_TYPE(retval_znode.u.constant) = IS_LONG; - Z_LVAL(retval_znode.u.constant) = 1; - Z_UNSET_ISREF(retval_znode.u.constant); - Z_SET_REFCOUNT(retval_znode.u.constant, 1); - - zend_save_lexical_state(&original_lex_state TSRMLS_CC); - - retval = op_array; /* success oriented */ - - if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) { - if (type==ZEND_REQUIRE) { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC); - zend_bailout(); - } else { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC); - } - compilation_successful=0; - } else { - init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); - CG(in_compilation) = 1; - CG(active_op_array) = op_array; - compiler_result = zendparse(TSRMLS_C); - zend_do_return(&retval_znode, 0 TSRMLS_CC); - CG(in_compilation) = original_in_compilation; - if (compiler_result==1) { /* parser error */ - zend_bailout(); - } - compilation_successful=1; - } - - if (retval) { - CG(active_op_array) = original_active_op_array; - if (compilation_successful) { - pass_two(op_array TSRMLS_CC); - zend_release_labels(TSRMLS_C); - } else { - efree(op_array); - retval = NULL; - } - } - if (compilation_successful) { - zend_restore_lexical_state(&original_lex_state TSRMLS_CC); - } - return retval; -} - - -zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC) -{ - zend_file_handle file_handle; - zval tmp; - zend_op_array *retval; - char *opened_path = NULL; - - if (Z_TYPE_P(filename) != IS_STRING) { - tmp = *filename; - zval_copy_ctor(&tmp); - convert_to_string(&tmp); - filename = &tmp; - } - file_handle.filename = Z_STRVAL_P(filename); - file_handle.free_filename = 0; - file_handle.type = ZEND_HANDLE_FILENAME; - file_handle.opened_path = NULL; - file_handle.handle.fp = NULL; - - retval = zend_compile_file(&file_handle, type TSRMLS_CC); - if (retval && file_handle.handle.stream.handle) { - int dummy = 1; - - if (!file_handle.opened_path) { - file_handle.opened_path = opened_path = estrndup(Z_STRVAL_P(filename), Z_STRLEN_P(filename)); - } - - zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL); - - if (opened_path) { - efree(opened_path); - } - } - zend_destroy_file_handle(&file_handle TSRMLS_CC); - - if (filename==&tmp) { - zval_dtor(&tmp); - } - return retval; -} - -ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC) -{ - const char *encoding; - UErrorCode status = U_ZERO_ERROR; - - if (Z_TYPE_P(str) == IS_UNICODE) { - convert_to_string_with_converter(str, UG(utf8_conv)); - encoding = "UTF-8"; - } else { - UErrorCode status = U_ZERO_ERROR; - encoding = ucnv_getName(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), &status); - } - - str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD); - memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD); - - SCNG(yy_in)=NULL; - - zend_prepare_scanner_converters(encoding, 0 TSRMLS_CC); - /* Re-encode for Unicode if needed */ - yy_scan_buffer(Z_STRVAL_P(str), Z_STRLEN_P(str) TSRMLS_CC); - - zend_set_compiled_filename(filename TSRMLS_CC); - zend_set_compiled_script_encoding((char*)ucnv_getName(SCNG(output_conv), &status) TSRMLS_CC); - CG(zend_lineno) = 1; - CG(increment_lineno) = 0; - return SUCCESS; -} - - -ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D) -{ - return SCNG(yy_cursor) - SCNG(yy_start); -} - - -zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC) -{ - zend_lex_state original_lex_state; - zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array)); - zend_op_array *original_active_op_array = CG(active_op_array); - zend_op_array *retval; - zval tmp; - int compiler_result; - zend_bool original_in_compilation = CG(in_compilation); - - tmp = *source_string; - zval_copy_ctor(&tmp); - if (Z_TYPE(tmp) != IS_STRING && Z_TYPE(tmp) != IS_UNICODE) { - convert_to_text(&tmp); - } - source_string = &tmp; - - if (Z_UNILEN_P(source_string)==0) { - efree(op_array); - zval_dtor(&tmp); - return NULL; - } - - CG(in_compilation) = 1; - - zend_save_lexical_state(&original_lex_state TSRMLS_CC); - if (zend_prepare_string_for_scanning(source_string, filename TSRMLS_CC)==FAILURE) { - efree(op_array); - retval = NULL; - } else { - zend_bool orig_interactive = CG(interactive); - - CG(interactive) = 0; - init_op_array(op_array, ZEND_EVAL_CODE, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); - CG(interactive) = orig_interactive; - CG(active_op_array) = op_array; - BEGIN(ST_IN_SCRIPTING); - compiler_result = zendparse(TSRMLS_C); - - if (compiler_result==1) { - CG(active_op_array) = original_active_op_array; - CG(unclean_shutdown)=1; - retval = NULL; - } else { - zend_do_return(NULL, 0 TSRMLS_CC); - CG(active_op_array) = original_active_op_array; - pass_two(op_array TSRMLS_CC); - zend_release_labels(TSRMLS_C); - retval = op_array; - } - zend_restore_lexical_state(&original_lex_state TSRMLS_CC); - } - zval_dtor(&tmp); - CG(in_compilation) = original_in_compilation; - return retval; -} - - -BEGIN_EXTERN_C() -int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC) -{ - zend_lex_state original_lex_state; - zend_file_handle file_handle; - - file_handle.type = ZEND_HANDLE_FILENAME; - file_handle.filename = filename; - file_handle.free_filename = 0; - file_handle.opened_path = NULL; - zend_save_lexical_state(&original_lex_state TSRMLS_CC); - if (open_file_for_scanning(&file_handle TSRMLS_CC)==FAILURE) { - zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename TSRMLS_CC); - return FAILURE; - } - zend_highlight(syntax_highlighter_ini TSRMLS_CC); - zend_destroy_file_handle(&file_handle TSRMLS_CC); - zend_restore_lexical_state(&original_lex_state TSRMLS_CC); - return SUCCESS; -} - -int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name TSRMLS_DC) -{ - zend_lex_state original_lex_state; - zval tmp = *str; - - str = &tmp; - zval_copy_ctor(str); - zend_save_lexical_state(&original_lex_state TSRMLS_CC); - if (zend_prepare_string_for_scanning(str, str_name TSRMLS_CC)==FAILURE) { - return FAILURE; - } - BEGIN(INITIAL); - zend_highlight(syntax_highlighter_ini TSRMLS_CC); - zend_restore_lexical_state(&original_lex_state TSRMLS_CC); - zval_dtor(str); - return SUCCESS; -} -END_EXTERN_C() - -#define zend_copy_value(zendlval, yytext, yyleng) \ - Z_STRVAL_P(zendlval) = (char *)estrndup(yytext, yyleng); \ - Z_STRLEN_P(zendlval) = yyleng; - -static int zend_scan_unicode_escape_string(zval *zendlval, char *str, int len, UChar quote_type, int type TSRMLS_DC) -{ - register UChar *s, *t, c; - UChar *end; - UChar32 codepoint = 0; - int8_t digit; - int8_t min_digits = 0, max_digits = 0; - int8_t bits; - int8_t n; - - if (!zend_copy_scanner_string(zendlval, str, len, IS_UNICODE, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - - /* convert escape sequences */ - s = t = Z_USTRVAL_P(zendlval); - end = s+Z_USTRLEN_P(zendlval); - while (s<end) { - if (*s==0x5C /*'\\'*/) { - s++; - c = *s; - if (s >= end) { - *t++ = 0x5C; /*'\\'*/ - break; - } - - min_digits = 0; - codepoint = 0; - bits = 4; - n = 0; - - switch(c) { - case 0x6E: /*'n'*/ - *t++ = (UChar) 0x0A; /*'\n'*/ - Z_USTRLEN_P(zendlval)--; - break; - case 0x72: /*'r'*/ - *t++ = (UChar) 0x0D; /*'\r'*/ - Z_USTRLEN_P(zendlval)--; - break; - case 0x74: /*'t'*/ - *t++ = (UChar) 0x09; /*'\t'*/ - Z_USTRLEN_P(zendlval)--; - break; - case 0x66: /*'f'*/ - *t++ = (UChar) 0x0C; /*'\f'*/ - Z_USTRLEN_P(zendlval)--; - break; - case 0x76: /*'v'*/ - *t++ = (UChar) 0x0B; /*'\v'*/ - Z_USTRLEN_P(zendlval)--; - break; - case 0x22: /*'"'*/ - case 0x60: /*'`'*/ - if (c != quote_type) { - *t++ = 0x5C; /*'\\'*/ - *t++ = *s; - break; - } - case 0x5C: /*'\\'*/ - case 0x24: /*'$'*/ - *t++ = *s; - Z_USTRLEN_P(zendlval)--; - break; - case 0x43: /*'C'*/ - { - UChar *p = s+1; - if (p < end && zend_parse_charname_sequence(&p, end, &codepoint TSRMLS_CC)) { - Z_USTRLEN_P(zendlval) -= p - s + 1; - s = p; - if (U_IS_BMP(codepoint)) { - *t++ = (UChar) codepoint; - } else { - *t++ = (UChar) U16_LEAD(codepoint); - *t++ = (UChar) U16_TRAIL(codepoint); - Z_USTRLEN_P(zendlval)++; - } - } else { - zend_error(E_COMPILE_WARNING, "Invalid \\C{..} sequence"); - efree(Z_USTRVAL_P(zendlval)); - return 0; - } - break; - } - case 0x75: /*'u'*/ - min_digits = 4; - max_digits = 4; - Z_USTRLEN_P(zendlval)--; - break; - case 0x55: /*'U'*/ - min_digits = 6; - max_digits = 6; - Z_USTRLEN_P(zendlval)--; - break; - case 0x78: /*'x'*/ - case 0x58: /*'X'*/ - if ((digit = zend_get_hex_digit(*(s+1))) >= 0) { - min_digits = 1; - max_digits = 2; - Z_USTRLEN_P(zendlval)--; - s++; - n = 1; /* already have one digit */ - codepoint = digit; - } else { - *t++ = 0x5C; /*'\\'*/ - *t++ = *s; - } - break; - default: - digit = zend_get_octal_digit(*s); - if (digit >= 0) { - min_digits = 1; - max_digits = 3; - bits = 3; - n = 1; /* already have one digit */ - codepoint = digit; - } else { - *t++ = 0x5C; /*'\\'*/ - *t++ = *s; - } - break; - } - - /* need to parse a number for one of the escape sequences */ - if (min_digits != 0) { - while (s++ < end && n < max_digits) { - digit = (bits == 4) ? zend_get_hex_digit(*s) : zend_get_octal_digit(*s); - if (digit < 0) { - break; - } - codepoint = (codepoint << bits) | digit; - n++; - } - - if (n < min_digits) { - /* can only happen for \u and \U sequences */ - zend_error(E_COMPILE_WARNING,"\\%c escape sequence requires exactly %d hexadecimal digits", (char) c, min_digits); - efree(Z_USTRVAL_P(zendlval)); - return 0; - } - - if (U_IS_BMP(codepoint)) { - *t++ = (UChar) codepoint; - Z_USTRLEN_P(zendlval) -= n; - } else if (codepoint <= 0x10FFFF) { - *t++ = (UChar) U16_LEAD(codepoint); - *t++ = (UChar) U16_TRAIL(codepoint); - Z_USTRLEN_P(zendlval) -= n-1; - } else { - zend_error(E_COMPILE_WARNING,"\\U%06x is above the highest valid codepoint 0x10FFFF", codepoint); - efree(Z_USTRVAL_P(zendlval)); - return 0; - } - - /* s is already incremented and not past a newline */ - continue; - } - } else { - *t++ = *s; - } - - if (*s == 0x0A /*'\n'*/ || (*s == 0x0D /*'\r'*/ && (*(s+1) != 0x0A /*'\n'*/))) { - CG(zend_lineno)++; - } - s++; - } - *t = 0; - - return type; -} - -static int zend_scan_unicode_single_string(zval *zendlval TSRMLS_DC) -{ - register UChar *s, *t; - UChar *end; - - if (!zend_copy_scanner_string(zendlval, yytext+1, yyleng-2, IS_UNICODE, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - - /* convert escape sequences */ - s = t = Z_USTRVAL_P(zendlval); - end = s+Z_USTRLEN_P(zendlval); - while (s<end) { - if (*s==0x5C /*'\\'*/) { - s++; - - switch(*s) { - case 0x5C: /*'\\'*/ - case 0x27: /*'\''*/ - *t++ = *s; - Z_USTRLEN_P(zendlval)--; - break; - default: - *t++ = 0x5C; /*'\\'*/ - *t++ = *s; - break; - } - } else { - *t++ = *s; - } - - if (*s == 0x0A /*'\n'*/ || (*s == 0x0D /*'\r'*/ && (*(s+1) != 0x0A /*'\n'*/))) { - CG(zend_lineno)++; - } - s++; - } - *t = 0; - - return T_CONSTANT_ENCAPSED_STRING; -} - -static void zend_scan_binary_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC) -{ - register char *s, *t; - char *end; - - ZVAL_STRINGL(zendlval, str, len, 1); - - /* convert escape sequences */ - s = t = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (s<end) { - if (*s=='\\') { - s++; - if (s >= end) { - *t++ = '\\'; - break; - } - - switch(*s) { - case 'n': - *t++ = '\n'; - Z_STRLEN_P(zendlval)--; - break; - case 'r': - *t++ = '\r'; - Z_STRLEN_P(zendlval)--; - break; - case 't': - *t++ = '\t'; - Z_STRLEN_P(zendlval)--; - break; - case 'f': - *t++ = '\f'; - zendlval->value.str.len--; - break; - case 'v': - *t++ = '\v'; - zendlval->value.str.len--; - break; - case '"': - case '`': - if (*s != quote_type) { - *t++ = '\\'; - *t++ = *s; - break; - } - case '\\': - case '$': - *t++ = *s; - Z_STRLEN_P(zendlval)--; - break; - case 'x': - case 'X': - if (ZEND_IS_HEX(*(s+1))) { - char hex_buf[3] = { 0, 0, 0 }; - - Z_STRLEN_P(zendlval)--; /* for the 'x' */ - - hex_buf[0] = *(++s); - Z_STRLEN_P(zendlval)--; - if (ZEND_IS_HEX(*(s+1))) { - hex_buf[1] = *(++s); - Z_STRLEN_P(zendlval)--; - } - *t++ = (char) strtol(hex_buf, NULL, 16); - } else { - *t++ = '\\'; - *t++ = *s; - } - break; - default: - /* check for an octal */ - if (ZEND_IS_OCT(*s)) { - char octal_buf[4] = { 0, 0, 0, 0 }; - - octal_buf[0] = *s; - Z_STRLEN_P(zendlval)--; - if (ZEND_IS_OCT(*(s+1))) { - octal_buf[1] = *(++s); - Z_STRLEN_P(zendlval)--; - if (ZEND_IS_OCT(*(s+1))) { - octal_buf[2] = *(++s); - Z_STRLEN_P(zendlval)--; - } - } - *t++ = (char) strtol(octal_buf, NULL, 8); - } else { - *t++ = '\\'; - *t++ = *s; - } - break; - } - } else { - *t++ = *s; - } - - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - } - *t = 0; -} - -static void zend_scan_binary_single_string(zval *zendlval, char *str, int len TSRMLS_DC) -{ - register char *s, *t; - char *end; - - ZVAL_STRINGL(zendlval, str, len, 1); - - /* convert escape sequences */ - s = t = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (s<end) { - if (*s=='\\') { - s++; - - switch(*s) { - case '\\': - case '\'': - *t++ = *s; - Z_STRLEN_P(zendlval)--; - break; - default: - *t++ = '\\'; - *t++ = *s; - break; - } - } else { - *t++ = *s; - } - - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - } - *t = 0; -} - - -int lex_scan(zval *zendlval TSRMLS_DC) -{ -restart: - SCNG(yy_text) = YYCURSOR; - -yymore_restart: - - /* detect EOF */ - if (YYCURSOR >= YYLIMIT) { - /* special case */ - if (YYSTATE == STATE(ST_COMMENT) || YYSTATE == STATE(ST_DOC_COMMENT)) { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - return 0; - } - -/*!re2c -re2c:yyfill:check = 0; -LNUM [0-9]+ -DNUM ([0-9]*"."[0-9]+)|([0-9]+"."[0-9]*) -EXPONENT_DNUM (({LNUM}|{DNUM})[eE][+-]?{LNUM}) -HNUM "0x"[0-9a-fA-F]+ -LABEL [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* -WHITESPACE [ \n\r\t]+ -TABS_AND_SPACES [ \t]* -TOKENS [;:,.\[\]()|^&+-/*=%!~$<>?@] -ANY_CHAR [^] -NEWLINE ("\r"|"\n"|"\r\n") - -/* - * LITERAL_DOLLAR matches unescaped $ that aren't followed by a label character - * or a { and therefore will be taken literally. The case of literal $ before - * a variable or "${" is handled in a rule for each string type - */ -DOUBLE_QUOTES_LITERAL_DOLLAR ("$"+([^a-zA-Z_\x7f-\xff$"\\{]|("\\"{ANY_CHAR}))) -BACKQUOTE_LITERAL_DOLLAR ("$"+([^a-zA-Z_\x7f-\xff$`\\{]|("\\"{ANY_CHAR}))) -HEREDOC_LITERAL_DOLLAR ("$"+([^a-zA-Z_\x7f-\xff$\n\r\\{]|("\\"[^\n\r]))) - -/* - * Usually, HEREDOC_NEWLINE will just function like a simple NEWLINE, but some - * special cases need to be handled. HEREDOC_CHARS doesn't allow a line to - * match when { or $, and/or \ is at the end. (("{"*|"$"*)"\\"?) handles that, - * along with cases where { or $, and/or \ is the ONLY thing on a line - * - * The other case is when a line contains a label, followed by ONLY - * { or $, and/or \ Handled by ({LABEL}";"?((("{"+|"$"+)"\\"?)|"\\")) - */ -HEREDOC_NEWLINE ((({LABEL}";"?((("{"+|"$"+)"\\"?)|"\\"))|(("{"*|"$"*)"\\"?)){NEWLINE}) - -/* - * This pattern is just used in the next 2 for matching { or literal $, and/or - * \ escape sequence immediately at the beginning of a line or after a label - */ -HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR (("{"+[^$\n\r\\{])|("{"*"\\"[^\n\r])|{HEREDOC_LITERAL_DOLLAR}) - -/* - * These 2 label-related patterns allow HEREDOC_CHARS to continue "regular" - * matching after a newline that starts with either a non-label character or a - * label that isn't followed by a newline. Like HEREDOC_CHARS, they won't match - * a variable or "{$" Matching a newline, and possibly label, up TO a variable - * or "{$", is handled in the heredoc rules - * - * The HEREDOC_LABEL_NO_NEWLINE pattern (";"[^$\n\r\\{]) handles cases where ; - * follows a label. [^a-zA-Z0-9_\x7f-\xff;$\n\r\\{] is needed to prevent a label - * character or ; from matching on a possible (real) ending label - */ -HEREDOC_NON_LABEL ([^a-zA-Z_\x7f-\xff$\n\r\\{]|{HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR}) -HEREDOC_LABEL_NO_NEWLINE ({LABEL}([^a-zA-Z0-9_\x7f-\xff;$\n\r\\{]|(";"[^$\n\r\\{])|(";"?{HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR}))) - -/* - * CHARS matches everything up to a variable or "{$" - * {'s are matched as long as they aren't followed by a $ - * The case of { before "{$" is handled in a rule for each string type - * - * For heredocs, matching continues across/after newlines if/when it's known - * that the next line doesn't contain a possible ending label - */ -DOUBLE_QUOTES_CHARS ("{"*([^$"\\{]|("\\"{ANY_CHAR}))|{DOUBLE_QUOTES_LITERAL_DOLLAR}) -BACKQUOTE_CHARS ("{"*([^$`\\{]|("\\"{ANY_CHAR}))|{BACKQUOTE_LITERAL_DOLLAR}) -HEREDOC_CHARS ("{"*([^$\n\r\\{]|("\\"[^\n\r]))|{HEREDOC_LITERAL_DOLLAR}|({HEREDOC_NEWLINE}+({HEREDOC_NON_LABEL}|{HEREDOC_LABEL_NO_NEWLINE}))) - -NOWDOC_CHARS ([^\n\r]|{NEWLINE}+([^a-zA-Z_\x7f-\xff\n\r]|({LABEL}([^a-zA-Z0-9_\x7f-\xff;\n\r]|(";"[^\n\r]))))) - -/* compute yyleng before each rule */ -<!*> := yyleng = YYCURSOR - SCNG(yy_text); - - -<ST_IN_SCRIPTING>"exit" { - return T_EXIT; -} - -<ST_IN_SCRIPTING>"die" { - return T_EXIT; -} - -<ST_IN_SCRIPTING>"function" { - return T_FUNCTION; -} - -<ST_IN_SCRIPTING>"const" { - return T_CONST; -} - -<ST_IN_SCRIPTING>"return" { - return T_RETURN; -} - -<ST_IN_SCRIPTING>"try" { - return T_TRY; -} - -<ST_IN_SCRIPTING>"catch" { - return T_CATCH; -} - -<ST_IN_SCRIPTING>"throw" { - return T_THROW; -} - -<ST_IN_SCRIPTING>"if" { - return T_IF; -} - -<ST_IN_SCRIPTING>"elseif" { - return T_ELSEIF; -} - -<ST_IN_SCRIPTING>"endif" { - return T_ENDIF; -} - -<ST_IN_SCRIPTING>"else" { - return T_ELSE; -} - -<ST_IN_SCRIPTING>"while" { - return T_WHILE; -} - -<ST_IN_SCRIPTING>"endwhile" { - return T_ENDWHILE; -} - -<ST_IN_SCRIPTING>"do" { - return T_DO; -} - -<ST_IN_SCRIPTING>"for" { - return T_FOR; -} - -<ST_IN_SCRIPTING>"endfor" { - return T_ENDFOR; -} - -<ST_IN_SCRIPTING>"foreach" { - return T_FOREACH; -} - -<ST_IN_SCRIPTING>"endforeach" { - return T_ENDFOREACH; -} - -<ST_IN_SCRIPTING>"declare" { - return T_DECLARE; -} - -<ST_IN_SCRIPTING>"enddeclare" { - return T_ENDDECLARE; -} - -<ST_IN_SCRIPTING>"instanceof" { - return T_INSTANCEOF; -} - -<ST_IN_SCRIPTING>"as" { - return T_AS; -} - -<ST_IN_SCRIPTING>"switch" { - return T_SWITCH; -} - -<ST_IN_SCRIPTING>"endswitch" { - return T_ENDSWITCH; -} - -<ST_IN_SCRIPTING>"case" { - return T_CASE; -} - -<ST_IN_SCRIPTING>"default" { - return T_DEFAULT; -} - -<ST_IN_SCRIPTING>"break" { - return T_BREAK; -} - -<ST_IN_SCRIPTING>"continue" { - return T_CONTINUE; -} - -<ST_IN_SCRIPTING>"goto" { - return T_GOTO; -} - -<ST_IN_SCRIPTING>"echo" { - return T_ECHO; -} - -<ST_IN_SCRIPTING>"print" { - return T_PRINT; -} - -<ST_IN_SCRIPTING>"class" { - return T_CLASS; -} - -<ST_IN_SCRIPTING>"interface" { - return T_INTERFACE; -} - -<ST_IN_SCRIPTING>"extends" { - return T_EXTENDS; -} - -<ST_IN_SCRIPTING>"implements" { - return T_IMPLEMENTS; -} - -<ST_IN_SCRIPTING>"->" { - yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); - return T_OBJECT_OPERATOR; -} - -<ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY>{WHITESPACE}+ { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - HANDLE_NEWLINES(yytext, yyleng); - return T_WHITESPACE; -} - -<ST_LOOKING_FOR_PROPERTY>"->" { - return T_OBJECT_OPERATOR; -} - -<ST_LOOKING_FOR_PROPERTY>{LABEL} { - yy_pop_state(TSRMLS_C); - if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { - return 0; - } - return T_STRING; -} - -<ST_LOOKING_FOR_PROPERTY>{ANY_CHAR} { - yyless(0); - yy_pop_state(TSRMLS_C); - goto restart; -} - -<ST_IN_SCRIPTING>"::" { - return T_PAAMAYIM_NEKUDOTAYIM; -} - -<ST_IN_SCRIPTING>"\\" { - return T_NS_SEPARATOR; -} - -<ST_IN_SCRIPTING>"new" { - return T_NEW; -} - -<ST_IN_SCRIPTING>"clone" { - return T_CLONE; -} - -<ST_IN_SCRIPTING>"var" { - return T_VAR; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("int"|"integer"){TABS_AND_SPACES}")" { - return T_INT_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("real"|"double"|"float"){TABS_AND_SPACES}")" { - return T_DOUBLE_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"string"{TABS_AND_SPACES}")" { - return T_STRING_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"unicode"{TABS_AND_SPACES}")" { - return T_UNICODE_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"binary"{TABS_AND_SPACES}")" { - return T_BINARY_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"array"{TABS_AND_SPACES}")" { - return T_ARRAY_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"object"{TABS_AND_SPACES}")" { - return T_OBJECT_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("bool"|"boolean"){TABS_AND_SPACES}")" { - return T_BOOL_CAST; -} - -<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("unset"){TABS_AND_SPACES}")" { - return T_UNSET_CAST; -} - -<ST_IN_SCRIPTING>"eval" { - return T_EVAL; -} - -<ST_IN_SCRIPTING>"include" { - return T_INCLUDE; -} - -<ST_IN_SCRIPTING>"include_once" { - return T_INCLUDE_ONCE; -} - -<ST_IN_SCRIPTING>"require" { - return T_REQUIRE; -} - -<ST_IN_SCRIPTING>"require_once" { - return T_REQUIRE_ONCE; -} - -<ST_IN_SCRIPTING>"namespace" { - return T_NAMESPACE; -} - -<ST_IN_SCRIPTING>"use" { - return T_USE; -} - -<ST_IN_SCRIPTING>"global" { - return T_GLOBAL; -} - -<ST_IN_SCRIPTING>"isset" { - return T_ISSET; -} - -<ST_IN_SCRIPTING>"empty" { - return T_EMPTY; -} - -<ST_IN_SCRIPTING>"__halt_compiler" { - return T_HALT_COMPILER; -} - -<ST_IN_SCRIPTING>"static" { - return T_STATIC; -} - -<ST_IN_SCRIPTING>"abstract" { - return T_ABSTRACT; -} - -<ST_IN_SCRIPTING>"final" { - return T_FINAL; -} - -<ST_IN_SCRIPTING>"private" { - return T_PRIVATE; -} - -<ST_IN_SCRIPTING>"protected" { - return T_PROTECTED; -} - -<ST_IN_SCRIPTING>"public" { - return T_PUBLIC; -} - -<ST_IN_SCRIPTING>"unset" { - return T_UNSET; -} - -<ST_IN_SCRIPTING>"=>" { - return T_DOUBLE_ARROW; -} - -<ST_IN_SCRIPTING>"list" { - return T_LIST; -} - -<ST_IN_SCRIPTING>"array" { - return T_ARRAY; -} - -<ST_IN_SCRIPTING>"++" { - return T_INC; -} - -<ST_IN_SCRIPTING>"--" { - return T_DEC; -} - -<ST_IN_SCRIPTING>"===" { - return T_IS_IDENTICAL; -} - -<ST_IN_SCRIPTING>"!==" { - return T_IS_NOT_IDENTICAL; -} - -<ST_IN_SCRIPTING>"==" { - return T_IS_EQUAL; -} - -<ST_IN_SCRIPTING>"!="|"<>" { - return T_IS_NOT_EQUAL; -} - -<ST_IN_SCRIPTING>"<=" { - return T_IS_SMALLER_OR_EQUAL; -} - -<ST_IN_SCRIPTING>">=" { - return T_IS_GREATER_OR_EQUAL; -} - -<ST_IN_SCRIPTING>"+=" { - return T_PLUS_EQUAL; -} - -<ST_IN_SCRIPTING>"-=" { - return T_MINUS_EQUAL; -} - -<ST_IN_SCRIPTING>"*=" { - return T_MUL_EQUAL; -} - -<ST_IN_SCRIPTING>"/=" { - return T_DIV_EQUAL; -} - -<ST_IN_SCRIPTING>".=" { - return T_CONCAT_EQUAL; -} - -<ST_IN_SCRIPTING>"%=" { - return T_MOD_EQUAL; -} - -<ST_IN_SCRIPTING>"<<=" { - return T_SL_EQUAL; -} - -<ST_IN_SCRIPTING>">>=" { - return T_SR_EQUAL; -} - -<ST_IN_SCRIPTING>"&=" { - return T_AND_EQUAL; -} - -<ST_IN_SCRIPTING>"|=" { - return T_OR_EQUAL; -} - -<ST_IN_SCRIPTING>"^=" { - return T_XOR_EQUAL; -} - -<ST_IN_SCRIPTING>"||" { - return T_BOOLEAN_OR; -} - -<ST_IN_SCRIPTING>"&&" { - return T_BOOLEAN_AND; -} - -<ST_IN_SCRIPTING>"OR" { - return T_LOGICAL_OR; -} - -<ST_IN_SCRIPTING>"AND" { - return T_LOGICAL_AND; -} - -<ST_IN_SCRIPTING>"XOR" { - return T_LOGICAL_XOR; -} - -<ST_IN_SCRIPTING>"<<" { - return T_SL; -} - -<ST_IN_SCRIPTING>">>" { - return T_SR; -} - -<ST_IN_SCRIPTING>{TOKENS} { - return yytext[0]; -} - - -<ST_IN_SCRIPTING>"{" { - yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); - return '{'; -} - - -<ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"${" { - yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); - return T_DOLLAR_OPEN_CURLY_BRACES; -} - - -<ST_IN_SCRIPTING>"}" { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(TSRMLS_C); - } - return '}'; -} - - -<ST_LOOKING_FOR_VARNAME>{LABEL} { - if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { - return 0; - } - yy_pop_state(TSRMLS_C); - yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); - return T_STRING_VARNAME; -} - - -<ST_LOOKING_FOR_VARNAME>{ANY_CHAR} { - yyless(0); - yy_pop_state(TSRMLS_C); - yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); - goto restart; -} - - -<ST_IN_SCRIPTING>{LNUM} { - if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ - Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); - } else { - errno = 0; - Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); - if (errno == ERANGE) { /* Overflow */ - if (yytext[0] == '0') { /* octal overflow */ - Z_DVAL_P(zendlval) = zend_oct_strtod(yytext, NULL); - } else { - Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL); - } - Z_TYPE_P(zendlval) = IS_DOUBLE; - return T_DNUMBER; - } - } - - Z_TYPE_P(zendlval) = IS_LONG; - return T_LNUMBER; -} - -<ST_IN_SCRIPTING>{HNUM} { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) { - Z_LVAL_P(zendlval) = strtol(hex, NULL, 16); - Z_TYPE_P(zendlval) = IS_LONG; - return T_LNUMBER; - } else { - Z_DVAL_P(zendlval) = zend_hex_strtod(hex, NULL); - Z_TYPE_P(zendlval) = IS_DOUBLE; - return T_DNUMBER; - } -} - -<ST_VAR_OFFSET>[0]|([1-9][0-9]*) { /* 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)) { - Z_LVAL_P(zendlval) = strtol(yytext, NULL, 10); - Z_TYPE_P(zendlval) = IS_LONG; - } else { - if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - } - return T_NUM_STRING; -} - -<ST_VAR_OFFSET>{LNUM}|{HNUM} { /* Offset must be treated as a string */ - if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - return T_NUM_STRING; -} - -<ST_IN_SCRIPTING>{DNUM}|{EXPONENT_DNUM} { - Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL); - Z_TYPE_P(zendlval) = IS_DOUBLE; - return T_DNUMBER; -} - -<ST_IN_SCRIPTING>"__CLASS__" { - zstr class_name = NULL_ZSTR; - - if (CG(active_class_entry)) { - class_name = CG(active_class_entry)->name; - } - - if (!class_name.v) { - ZVAL_EMPTY_TEXT(zendlval); - } else { - ZVAL_TEXT(zendlval, class_name, 1); - } - return T_CLASS_C; -} - -<ST_IN_SCRIPTING>"__FUNCTION__" { - zstr func_name = NULL_ZSTR; - - if (CG(active_op_array)) { - func_name = CG(active_op_array)->function_name; - } - - if (!func_name.v) { - ZVAL_EMPTY_TEXT(zendlval); - } else { - ZVAL_TEXT(zendlval, func_name, 1); - } - return T_FUNC_C; -} - -<ST_IN_SCRIPTING>"__METHOD__" { - zstr class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL_ZSTR; - zstr func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL_ZSTR; - size_t len = 0; - - if (UG(unicode)) { - size_t len1; - - if (class_name.u) { - len += len1 = u_strlen(class_name.u); - len += 2; - } - if (func_name.u) { - len += u_strlen(func_name.u); - } else { - func_name.u = EMPTY_STR; - } - Z_USTRLEN_P(zendlval) = len; - Z_USTRVAL_P(zendlval) = eumalloc(len+1); - if (class_name.u) { - u_strcpy(Z_USTRVAL_P(zendlval), class_name.u); - Z_USTRVAL_P(zendlval)[len1] = 0x3a; /* ':' */ - Z_USTRVAL_P(zendlval)[len1+1] = 0x3a; /* ':' */ - Z_USTRVAL_P(zendlval)[len1+2] = 0; - } else { - Z_USTRVAL_P(zendlval)[0] = 0; - } - u_strcat(Z_USTRVAL_P(zendlval), func_name.u); - Z_TYPE_P(zendlval) = IS_UNICODE; - } else { - if (class_name.s) { - len += strlen(class_name.s) + 2; - } - if (func_name.s) { - len += strlen(func_name.s); - } - - Z_STRVAL_P(zendlval) = emalloc(len+1); - Z_STRLEN_P(zendlval) = sprintf(Z_STRVAL_P(zendlval), "%s%s%s", - class_name.s ? class_name.s : "", - class_name.s && func_name.s ? "::" : "", - func_name.s ? func_name.s : "" - ); - Z_STRLEN_P(zendlval) = strlen(Z_STRVAL_P(zendlval)); - Z_TYPE_P(zendlval) = IS_STRING; - } - return T_METHOD_C; -} - -<ST_IN_SCRIPTING>"__LINE__" { - Z_LVAL_P(zendlval) = CG(zend_lineno); - Z_TYPE_P(zendlval) = IS_LONG; - return T_LINE; -} - -<ST_IN_SCRIPTING>"__FILE__" { - char *filename = zend_get_compiled_filename(TSRMLS_C); - - if (!filename) { - filename = ""; - } - ZVAL_RT_STRING(zendlval, filename, 1); - return T_FILE; -} - -<ST_IN_SCRIPTING>"__DIR__" { - char *filename = zend_get_compiled_filename(TSRMLS_C); - const size_t filename_len = strlen(filename); - char *dirname; - - if (!filename) { - filename = ""; - } - - dirname = estrndup(filename, filename_len); - zend_dirname(dirname, filename_len); - - if (strcmp(dirname, ".") == 0) { - dirname = erealloc(dirname, MAXPATHLEN); -#if HAVE_GETCWD - VCWD_GETCWD(dirname, MAXPATHLEN); -#elif HAVE_GETWD - VCWD_GETWD(dirname); -#endif - } - - zendlval->value.str.len = strlen(dirname); - zendlval->value.str.val = dirname; - zendlval->type = IS_STRING; - return T_DIR; -} - -<ST_IN_SCRIPTING>"__NAMESPACE__" { - if (CG(current_namespace)) { - *zendlval = *CG(current_namespace); - zval_copy_ctor(zendlval); - } else { - ZVAL_EMPTY_TEXT(zendlval); - } - return T_NS_C; -} - -<INITIAL>"<script"{WHITESPACE}+"language"{WHITESPACE}*"="{WHITESPACE}*("php"|"\"php\""|"'php'"){WHITESPACE}*">" { - HANDLE_NEWLINES(yytext, yyleng); - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - return T_OPEN_TAG; -} - -<INITIAL>"<%=" { - if (CG(asp_tags)) { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - return T_OPEN_TAG_WITH_ECHO; - } else { - goto inline_char_handler; - } -} - - -<INITIAL>"<?=" { - if (CG(short_tags)) { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - return T_OPEN_TAG_WITH_ECHO; - } else { - goto inline_char_handler; - } -} - - -<INITIAL>"<%" { - if (CG(asp_tags)) { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - return T_OPEN_TAG; - } else { - goto inline_char_handler; - } -} - - -<INITIAL>"<?php"([ \t]|{NEWLINE}) { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - HANDLE_NEWLINE(yytext[yyleng-1]); - BEGIN(ST_IN_SCRIPTING); - return T_OPEN_TAG; -} - - -<INITIAL>"<?" { - if (CG(short_tags)) { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - return T_OPEN_TAG; - } else { - goto inline_char_handler; - } -} - -<INITIAL>{ANY_CHAR} { - -inline_char_handler: - - while (1) { - YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); - - if (ptr == NULL) { - YYCURSOR = YYLIMIT; - yyleng = YYCURSOR - SCNG(yy_text); - break; - - } else { - YYCURSOR = ptr + 1; - - /* stop if it may be an opening tag (<?, <%, <script>). this condition is not optimal though */ - if (YYCURSOR < YYLIMIT && (*YYCURSOR == '?' || *YYCURSOR == '%' || *YYCURSOR == 's')) { - --YYCURSOR; - yyleng = YYCURSOR - SCNG(yy_text); - break; - } - } - } - - Z_STRVAL_P(zendlval) = (char *) estrndup(yytext, yyleng); - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - HANDLE_NEWLINES(yytext, yyleng); - return T_INLINE_HTML; -} - -/* Make sure a label character follows "->", otherwise there is no property - * and "->" will be taken literally - */ -<ST_DOUBLE_QUOTES,ST_HEREDOC,ST_BACKQUOTE>"$"{LABEL}"->"[a-zA-Z_\x7f-\xff] { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); - - if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { - return 0; - } - return T_VARIABLE; -} - -/* A [ always designates a variable offset, regardless of what follows - */ -<ST_DOUBLE_QUOTES,ST_HEREDOC,ST_BACKQUOTE>"$"{LABEL}"[" { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET TSRMLS_CC); - - if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { - return 0; - } - return T_VARIABLE; -} - -<ST_IN_SCRIPTING,ST_DOUBLE_QUOTES,ST_HEREDOC,ST_BACKQUOTE,ST_VAR_OFFSET>"$"{LABEL} { - if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { - return 0; - } - return T_VARIABLE; -} - -<ST_VAR_OFFSET>"]" { - yy_pop_state(TSRMLS_C); - return ']'; -} - -<ST_VAR_OFFSET>{TOKENS}|[{}"`] { - /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ - return yytext[0]; -} - -<ST_VAR_OFFSET>[ \n\r\t\\'#] { - /* Invalid rule to return a more explicit parse error with proper line number */ - yyless(0); - yy_pop_state(TSRMLS_C); - ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */ - return T_ENCAPSED_AND_WHITESPACE; -} - -<ST_IN_SCRIPTING>{LABEL} { - if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { - return 0; - } - return T_STRING; -} - -<ST_VAR_OFFSET>{LABEL} { - if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - return T_STRING; -} - - -<ST_IN_SCRIPTING>"#"|"//" { - BEGIN(ST_ONE_LINE_COMMENT); - yymore(); -} - -<ST_ONE_LINE_COMMENT>"?"|"%"|">" { - yymore(); -} - -<ST_ONE_LINE_COMMENT>[^\n\r?%>]*{ANY_CHAR} { - switch (yytext[yyleng-1]) { - case '?': case '%': case '>': - yyless(yyleng-1); - yymore(); - break; - case '\n': - CG(zend_lineno)++; - /* intentional fall through */ - default: - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - return T_COMMENT; - } -} - -<ST_ONE_LINE_COMMENT>{NEWLINE} { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(ST_IN_SCRIPTING); - CG(zend_lineno)++; - return T_COMMENT; -} - -<ST_ONE_LINE_COMMENT>"?>"|"%>" { - if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng-2; - Z_TYPE_P(zendlval) = IS_STRING; - yyless(yyleng - 2); - BEGIN(ST_IN_SCRIPTING); - return T_COMMENT; - } else { - yymore(); - } -} - -<ST_IN_SCRIPTING>"/**"{WHITESPACE} { - RESET_DOC_COMMENT(); - BEGIN(ST_DOC_COMMENT); - yymore(); -} - -<ST_IN_SCRIPTING>"/*" { - BEGIN(ST_COMMENT); - yymore(); -} - - -<ST_COMMENT,ST_DOC_COMMENT>[^*]+ { - yymore(); -} - -<ST_DOC_COMMENT>"*/" { - zval temp; - - HANDLE_NEWLINES(yytext, yyleng); - if (!zend_copy_scanner_string(&temp, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - CG(doc_comment) = temp.value.uni.val; - CG(doc_comment_len) = temp.value.uni.len; - BEGIN(ST_IN_SCRIPTING); - return T_DOC_COMMENT; -} - -<ST_COMMENT>"*/" { - HANDLE_NEWLINES(yytext, yyleng); - BEGIN(ST_IN_SCRIPTING); - return T_COMMENT; -} - -<ST_COMMENT,ST_DOC_COMMENT>"*" { - yymore(); -} - -<ST_IN_SCRIPTING>("?>"|"</script"{WHITESPACE}*">"){NEWLINE}? { - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - BEGIN(INITIAL); - return T_CLOSE_TAG; /* implicit ';' at php-end tag */ -} - - -<ST_IN_SCRIPTING>"%>"{NEWLINE}? { - if (CG(asp_tags)) { - BEGIN(INITIAL); - Z_STRLEN_P(zendlval) = yyleng; - Z_TYPE_P(zendlval) = IS_STRING; - Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ - return T_CLOSE_TAG; /* implicit ';' at php-end tag */ - } else { - yyless(1); - return yytext[0]; - } -} - - -/* ("{"*|"$"*) handles { or $ at the end of a string (or the entire contents) - */ -<ST_IN_SCRIPTING>(["]{DOUBLE_QUOTES_CHARS}*("{"*|"$"*)["]) { - if (UG(unicode)) { - return zend_scan_unicode_escape_string(zendlval, yytext+1, yyleng-2, 0x22 /*'"'*/, T_CONSTANT_ENCAPSED_STRING TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext+1, yyleng-2, '"' TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; - } -} - - -<ST_IN_SCRIPTING>(b["]{DOUBLE_QUOTES_CHARS}*("{"*|"$"*)["]) { - zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; -} - - -<ST_IN_SCRIPTING>([']([^'\\]|("\\"{ANY_CHAR}))*[']) { - if (UG(unicode)) { - return zend_scan_unicode_single_string(zendlval TSRMLS_CC); - } else { - zend_scan_binary_single_string(zendlval, yytext+1, yyleng-2 TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; - } -} - - -<ST_IN_SCRIPTING>("b'"([^'\\]|("\\"{ANY_CHAR}))*[']) { - zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC); - return T_CONSTANT_ENCAPSED_STRING; -} - - -<ST_IN_SCRIPTING>["] { - BEGIN(ST_DOUBLE_QUOTES); - return '"'; -} - -<ST_IN_SCRIPTING>b["] { - BEGIN(ST_DOUBLE_QUOTES); - return T_BINARY_DOUBLE; -} - -<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} { - char *s; - int bprefix = (yytext[0] != '<') ? 1 : 0; - - CG(zend_lineno)++; - CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - CG(heredoc_len)--; - } - - if (*s == '\'') { - s++; - CG(heredoc_len) -= 2; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - CG(heredoc_len) -= 2; - } - - BEGIN(ST_HEREDOC); - } - - CG(heredoc) = estrndup(s, CG(heredoc_len)); - - /* Check for ending label on the next line */ - if (CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, CG(heredoc_len))) { - unsigned char *end = YYCURSOR + CG(heredoc_len); - - if (*end == ';') { - end++; - } - - if (*end == '\n' || *end == '\r') { - BEGIN(ST_END_HEREDOC); - } - } - - return bprefix ? T_BINARY_HEREDOC : T_START_HEREDOC; -} - - -<ST_IN_SCRIPTING>[`] { - BEGIN(ST_BACKQUOTE); - return '`'; -} - - -/* Match everything up to and including a possible ending label, so if the label - * doesn't match, it's kept with the rest of the string - * - * {HEREDOC_NEWLINE}+ handles the case of more than one newline sequence that - * couldn't be matched with HEREDOC_CHARS, because of the following label - */ -<ST_HEREDOC>{HEREDOC_CHARS}*{HEREDOC_NEWLINE}+{LABEL}";"?[\n\r] { - char *end = yytext + yyleng - 1; - - if (end[-1] == ';') { - end--; - yyleng--; - } - - if (yyleng > CG(heredoc_len) && !memcmp(end - CG(heredoc_len), CG(heredoc), CG(heredoc_len))) { - int len = yyleng - CG(heredoc_len) - 2; /* 2 for newline before and after label */ - - /* May have matched fooLABEL; make sure there's a newline before it */ - if (yytext[len] != '\n') { - if (yytext[len] != '\r') { - yyless(yyleng - 1); - yymore(); - } - } else if (len > 0 && yytext[len - 1] == '\r') { - len--; /* Windows newline */ - } - - /* Go back before label, to match in ST_END_HEREDOC state. yytext will include - * newline before label, for zend_highlight/strip, tokenizer, etc. */ - yyless(yyleng - CG(heredoc_len) - 1); /* 1 for newline after label */ - - CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); - - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, len, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, len, 0 TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } - } else { - /* Go back to end of label, so the next match works correctly in case of - * a variable or another label at the beginning of the next line */ - yyless(yyleng - 1); - yymore(); - } -} - -<ST_END_HEREDOC>{ANY_CHAR} { - YYCURSOR += CG(heredoc_len) - 1; - yyleng = CG(heredoc_len); - - Z_STRVAL_P(zendlval) = CG(heredoc); - Z_STRLEN_P(zendlval) = CG(heredoc_len); - CG(heredoc) = NULL; - CG(heredoc_len) = 0; - BEGIN(ST_IN_SCRIPTING); - return T_END_HEREDOC; -} - - -/* Will only match when $ follows: "{$" */ -<ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"{" { - Z_LVAL_P(zendlval) = (long) '{'; - yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); - return T_CURLY_OPEN; -} - - -<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}+ { - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } -} - -/* "{"{2,}|"$"{2,} handles { before "{$" or literal $ before a variable or "${" - * (("{"+|"$"+)["]) handles { or $ at the end of a string - * - * Same for backquotes and heredocs, except the second case doesn't apply to - * heredocs. yyless(yyleng - 1) is used to correct taking one character too many - */ -<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}*("{"{2,}|"$"{2,}|(("{"+|"$"+)["])) { - yyless(yyleng - 1); - - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } -} - - -<ST_BACKQUOTE>{BACKQUOTE_CHARS}+ { - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } -} - -<ST_BACKQUOTE>{BACKQUOTE_CHARS}*("{"{2,}|"$"{2,}|(("{"+|"$"+)[`])) { - yyless(yyleng - 1); - - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } -} - - -/* ({HEREDOC_NEWLINE}+({LABEL}";"?)?)? handles the possible case of newline - * sequences, possibly followed by a label, that couldn't be matched with - * HEREDOC_CHARS because of a following variable or "{$" - * - * This doesn't affect real ending labels, as they are followed by a newline, - * which will result in a longer match for the correct rule if present - */ -<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)? { - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } -} - -<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{"{2,}|"$"{2,}) { - yyless(yyleng - 1); - - if (CG(literal_type) == IS_UNICODE) { - return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); - } else { - zend_scan_binary_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); - return T_ENCAPSED_AND_WHITESPACE; - } -} - - -<ST_NOWDOC>({NOWDOC_CHARS}+{NEWLINE}+|{NEWLINE}+){LABEL}";"?[\n\r] { - char *end = yytext + yyleng - 1; - - if (end[-1] == ';') { - end--; - yyleng--; - } - - if (yyleng > CG(heredoc_len) && !memcmp(end - CG(heredoc_len), CG(heredoc), CG(heredoc_len))) { - int len = yyleng - CG(heredoc_len) - 2; /* 2 for newline before and after label */ - - /* May have matched fooLABEL; make sure there's a newline before it */ - if (yytext[len] != '\n') { - if (yytext[len] != '\r') { - yyless(yyleng - 1); - yymore(); - } - } else if (len > 0 && yytext[len - 1] == '\r') { - len--; /* Windows newline */ - } - - /* Go back before label, to match in ST_END_HEREDOC state. yytext will include - * newline before label, for zend_highlight/strip, tokenizer, etc. */ - yyless(yyleng - CG(heredoc_len) - 1); /* 1 for newline after label */ - - CG(increment_lineno) = 1; /* For newline before label */ - BEGIN(ST_END_HEREDOC); - - if (!zend_copy_scanner_string(zendlval, yytext, len, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { - return 0; - } - HANDLE_NEWLINES(yytext, len); - return T_ENCAPSED_AND_WHITESPACE; - } else { - /* Go back to end of label, so the next match works correctly in case of - * another label at the beginning of the next line */ - yyless(yyleng - 1); - yymore(); - } -} - - -<ST_DOUBLE_QUOTES>["] { - BEGIN(ST_IN_SCRIPTING); - return '"'; -} - - -<ST_BACKQUOTE>[`] { - BEGIN(ST_IN_SCRIPTING); - return '`'; -} - - -<ST_IN_SCRIPTING,ST_VAR_OFFSET>{ANY_CHAR} { - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} - -*/ -} +/* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright (c) 1998-2009 Zend Technologies Ltd. (http://www.zend.com) | + +----------------------------------------------------------------------+ + | This source file is subject to version 2.00 of the Zend license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.zend.com/license/2_00.txt. | + | If you did not receive a copy of the Zend license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@zend.com so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Marcus Boerger <helly@php.net> | + | Nuno Lopes <nlopess@php.net> | + | Scott MacVicar <scottmac@php.net> | + | Flex version authors: | + | Andi Gutmans <andi@zend.com> | + | Zeev Suraski <zeev@zend.com> | + +----------------------------------------------------------------------+ +*/ + +/* $Id: zend_language_scanner.l,v 1.201 2009/03/11 22:11:41 shire Exp $ */ + +#if 0 +# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) +#else +# define YYDEBUG(s, c) +#endif + +#include "zend_language_scanner_defs.h" + +#include <errno.h> +#include "zend.h" +#include "zend_alloc.h" +#include <zend_language_parser.h> +#include "zend_compile.h" +#include "zend_language_scanner.h" +#include "zend_highlight.h" +#include "zend_constants.h" +#include "zend_variables.h" +#include "zend_operators.h" +#include "zend_API.h" +#include "zend_strtod.h" +#include "zend_unicode.h" +#include "tsrm_virtual_cwd.h" +#include "tsrm_config_common.h" + +#define YYCTYPE unsigned char +#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { zend_error(E_COMPILE_ERROR, "Exceeded YYLIMIT bounds during scanning. Please report this."); return 0; } } +#define YYCURSOR SCNG(yy_cursor) +#define YYLIMIT SCNG(yy_limit) +#define YYMARKER SCNG(yy_marker) + +#define YYGETCONDITION() SCNG(yy_state) +#define YYSETCONDITION(s) SCNG(yy_state) = s + +#define STATE(name) yyc##name + +/* emulate flex constructs */ +#define BEGIN(state) YYSETCONDITION(STATE(state)) +#define YYSTATE YYGETCONDITION() +#define yytext ((char*)SCNG(yy_text)) +#define yyleng SCNG(yy_leng) +#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + (x); \ + yyleng = (unsigned int)(x); } while(0) +#define yymore() goto yymore_restart + +/* perform sanity check. If this message is triggered you should + increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ +/*!max:re2c */ +#if ZEND_MMAP_AHEAD < YYMAXFILL +# error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL +#endif + +#ifdef HAVE_STDARG_H +# include <stdarg.h> +#endif + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +/* Globals Macros */ +#define SCNG LANG_SCNG +#ifdef ZTS +ZEND_API ts_rsrc_id language_scanner_globals_id; +#else +ZEND_API zend_php_scanner_globals language_scanner_globals; +#endif + +/* +#define YY_INPUT(buf, result, max_size) \ + if ( ((result = zend_unicode_yyinput(yyin, buf, max_size TSRMLS_CC)) == 0)) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +*/ + +#define HANDLE_NEWLINES(s, l) \ +do { \ + char *p = (s), *boundary = p+(l); \ + \ + while (p<boundary) { \ + if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \ + CG(zend_lineno)++; \ + } \ + p++; \ + } \ +} while (0) + +#define HANDLE_NEWLINE(c) \ +{ \ + if (c == '\n' || c == '\r') { \ + CG(zend_lineno)++; \ + } \ +} + +#define ZEND_IS_OCT(c) ((c)>='0' && (c)<='7') +#define ZEND_IS_HEX(c) (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F')) + +BEGIN_EXTERN_C() + +static void _yy_push_state(int new_state TSRMLS_DC) + { + zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int)); + YYSETCONDITION(new_state); +} + +#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm) + +static void yy_pop_state(TSRMLS_D) +{ + int *stack_state; + zend_stack_top(&SCNG(state_stack), (void **) &stack_state); + YYSETCONDITION(*stack_state); + zend_stack_del_top(&SCNG(state_stack)); +} + +static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) +{ + YYCURSOR = (YYCTYPE*)str; + SCNG(yy_start) = YYCURSOR; + YYLIMIT = YYCURSOR + len; + } + +void startup_scanner(TSRMLS_D) +{ + CG(heredoc) = NULL; + CG(heredoc_len) = 0; + CG(doc_comment) = NULL_ZSTR; + CG(doc_comment_len) = 0; + + SCNG(input_conv) = NULL; + SCNG(output_conv) = NULL; + SCNG(encoding_checked) = 0; + SCNG(rest_str) = NULL; + SCNG(rest_len) = 0; + + zend_llist_init(&SCNG(used_state_stacks), sizeof(zend_stack), (llist_dtor_func_t) zend_stack_destroy, 0); + zend_stack_init(&SCNG(state_stack)); + zend_llist_add_element(&SCNG(used_state_stacks), &SCNG(state_stack)); +} + + +void shutdown_scanner(TSRMLS_D) +{ + if (CG(heredoc)) { + efree(CG(heredoc)); + CG(heredoc_len)=0; + } + zend_llist_destroy(&SCNG(used_state_stacks)); + RESET_DOC_COMMENT(); + + if (SCNG(input_conv)) { + ucnv_close(SCNG(input_conv)); + SCNG(input_conv) = NULL; + } + if (SCNG(output_conv)) { + ucnv_close(SCNG(output_conv)); + SCNG(output_conv) = NULL; + } + SCNG(encoding_checked) = 0; + if (SCNG(rest_str)) { + efree(SCNG(rest_str)); + SCNG(rest_str) = NULL; + } + SCNG(rest_len) = 0; +} + +static int compare_stacks(zend_stack *stack1, zend_stack *stack2) +{ + return (stack1 == stack2); +} + +ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) +{ + lex_state->yy_leng = SCNG(yy_leng); + lex_state->yy_start = SCNG(yy_start); + lex_state->yy_text = SCNG(yy_text); + lex_state->yy_cursor = SCNG(yy_cursor); + lex_state->yy_marker = SCNG(yy_marker); + lex_state->yy_limit = SCNG(yy_limit); + + lex_state->state_stack = SCNG(state_stack); + zend_stack_init(&SCNG(state_stack)); + zend_llist_add_element(&SCNG(used_state_stacks), &SCNG(state_stack)); + + lex_state->in = SCNG(yy_in); + lex_state->yy_state = YYSTATE; + lex_state->filename = zend_get_compiled_filename(TSRMLS_C); + lex_state->lineno = CG(zend_lineno); + + lex_state->input_conv = SCNG(input_conv); + lex_state->output_conv = SCNG(output_conv); + lex_state->encoding_checked = SCNG(encoding_checked); + lex_state->rest_str = SCNG(rest_str); + lex_state->rest_len = SCNG(rest_len); + SCNG(input_conv) = NULL; + SCNG(output_conv) = NULL; + SCNG(encoding_checked) = 0; + SCNG(rest_str) = NULL; + SCNG(rest_len) = 0; +} + +ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) +{ + SCNG(yy_leng) = lex_state->yy_leng; + SCNG(yy_start) = lex_state->yy_start; + SCNG(yy_text) = lex_state->yy_text; + SCNG(yy_cursor) = lex_state->yy_cursor; + SCNG(yy_marker) = lex_state->yy_marker; + SCNG(yy_limit) = lex_state->yy_limit; + + zend_llist_del_element(&SCNG(used_state_stacks), &SCNG(state_stack), (int (*)(void *, void *)) compare_stacks); + SCNG(state_stack) = lex_state->state_stack; + + SCNG(yy_in) = lex_state->in; + YYSETCONDITION(lex_state->yy_state); + CG(zend_lineno) = lex_state->lineno; + zend_restore_compiled_filename(lex_state->filename TSRMLS_CC); + zend_restore_compiled_script_encoding(lex_state->script_encoding TSRMLS_CC); + + if (SCNG(input_conv)) { + ucnv_close(SCNG(input_conv)); + } + SCNG(input_conv) = lex_state->input_conv; + if (SCNG(output_conv)) { + ucnv_close(SCNG(output_conv)); + } + SCNG(output_conv) = lex_state->output_conv; + SCNG(encoding_checked) = lex_state->encoding_checked; + if (SCNG(rest_str)) { + efree(SCNG(rest_str)); + } + SCNG(rest_str) = lex_state->rest_str; + SCNG(rest_len) = lex_state->rest_len; +} + +ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) +{ + zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles); + /* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */ + file_handle->opened_path = NULL; + if (file_handle->free_filename) { + file_handle->filename = NULL; + } +} + +/* Convert one octal digit to a numeric value 0..7, or -1 on failure */ +static inline int8_t zend_get_octal_digit(UChar c) { + if (c >= 0x0030 && c <= 0x0037) { + return (int8_t)(c - 0x0030); + } + return -1; +} + +/* + * Convert one hex digit to a numeric value 0..F, or -1 on failure. + * Borrowed from ICU. + */ +static inline int8_t zend_get_hex_digit(UChar c) { + if (c >= 0x0030 && c <= 0x0039) { + return (int8_t)(c - 0x0030); + } + if (c >= 0x0041 && c <= 0x0046) { + return (int8_t)(c - (0x0041 - 10)); + } + if (c >= 0x0061 && c <= 0x0066) { + return (int8_t)(c - (0x0061 - 10)); + } + return -1; +} + +static inline zend_bool zend_udigits_to_codepoint(UChar *s, UChar *end, UChar32 *c, int8_t digits) +{ + int8_t n = 0; + int8_t digit = 0; + UChar32 codepoint = 0; + + while (s < end && n < digits) { + digit = zend_get_hex_digit(*s); + if (digit < 0) { + break; + } + codepoint = (codepoint << 4) | digit; + ++s; + ++n; + } + + if (n < digits) { + return 0; + } + + *c = codepoint; + return 1; +} + +static inline int zend_uchar_from_uname(UChar *name, int name_len, UChar32 *c TSRMLS_DC) +{ + UChar32 codepoint = 0; + UErrorCode status = U_ZERO_ERROR; + char *buf; + + buf = zend_unicode_to_ascii(name, name_len TSRMLS_CC); + if (!buf) return 0; + codepoint = u_charFromName(U_UNICODE_CHAR_NAME, buf, &status); + efree(buf); + if (U_SUCCESS(status)) { + *c = codepoint; + return 1; + } else { + return 0; + } +} + +static inline int zend_parse_charname_sequence(UChar **s, UChar *end, UChar32 *c TSRMLS_DC) +{ + UChar *start; + + if (**s == '{') { + start = ++(*s); + while ((*s)++ != end) { + if (**s == '}') { + if (zend_uchar_from_uname(start, *s - start, c TSRMLS_CC)) { + return 1; + } else { + /* safe, since *s points to '}' */ + **s = 0; + zend_error(E_COMPILE_WARNING, "Invalid Unicode character name: '%r'", start); + break; + } + } + } + } + + return 0; +} + +ZEND_API int zend_copy_scanner_string(zval *zendlval, char *str, zend_uint str_len, zend_uchar type, UConverter *conv TSRMLS_DC) +{ + UErrorCode status = U_ZERO_ERROR; + int consumed = 0; + + if (type == IS_UNICODE) { + consumed = zend_convert_scanner_output(conv, &Z_USTRVAL_P(zendlval), &Z_USTRLEN_P(zendlval), str, str_len, &status TSRMLS_CC); + + if (U_FAILURE(status)) { + zend_error(E_COMPILE_WARNING,"Illegal or truncated character in input: offset %d, state=%d", consumed, YYSTATE); + efree(Z_USTRVAL_P(zendlval)); + return 0; + } + Z_TYPE_P(zendlval) = IS_UNICODE; + } else { + Z_STRVAL_P(zendlval) = (char *)estrndup(str, str_len); + Z_STRLEN_P(zendlval) = str_len; + Z_TYPE_P(zendlval) = IS_STRING; + } + + return 1; +} + +static inline int zend_check_and_normalize_identifier(zval *zendlval) +{ + UChar *norm; + int norm_len; + + if (!zend_is_valid_identifier(Z_USTRVAL_P(zendlval), Z_USTRLEN_P(zendlval))) { + zend_error(E_COMPILE_WARNING, "Invalid identifier syntax: %r", Z_USTRVAL_P(zendlval)); + efree(Z_USTRVAL_P(zendlval)); + return 0; + } + if (zend_normalize_identifier(&norm, &norm_len, Z_USTRVAL_P(zendlval), Z_USTRLEN_P(zendlval), 0) == FAILURE) { + zend_error(E_COMPILE_WARNING, "Could not normalize identifier: %r", Z_USTRVAL_P(zendlval)); + efree(Z_USTRVAL_P(zendlval)); + return 0; + } + if (norm != Z_USTRVAL_P(zendlval)) { + efree(Z_USTRVAL_P(zendlval)); + ZVAL_UNICODEL(zendlval, norm, norm_len, 0); + } + return 1; +} + +static void zend_scanner_output_callback( + const void *context, + UConverterToUnicodeArgs *toUArgs, + const char *codeUnits, + int32_t length, + UConverterCallbackReason reason, + UErrorCode *err + ) +{ + if (*err == U_TRUNCATED_CHAR_FOUND || + *err == U_ILLEGAL_CHAR_FOUND || + *err == U_INVALID_CHAR_FOUND) { + *(const char **)context = toUArgs->source - length; + } + + return; +} + +static int is_encoding_flex_compatible(const char *enc TSRMLS_DC) +{ + int key_len = strlen(enc)+1; + unsigned char ret; + unsigned char *ret_ptr; + + if (zend_hash_find(&UG(flex_compatible), (char*)enc, key_len, (void**)&ret_ptr) == SUCCESS) { + return *ret_ptr; + } else { + UErrorCode status = U_ZERO_ERROR; + UConverter *conv = ucnv_open(enc, &status); + + if (U_FAILURE(status)) { + return 0; + } + + switch (ucnv_getType(conv)) { + case UCNV_DBCS: + case UCNV_UTF16_BigEndian: + case UCNV_UTF16_LittleEndian: + case UCNV_UTF32_BigEndian: + case UCNV_UTF32_LittleEndian: + case UCNV_EBCDIC_STATEFUL: + case UCNV_ISO_2022: + case UCNV_LMBCS_1: + case UCNV_LMBCS_2: + case UCNV_LMBCS_3: + case UCNV_LMBCS_4: + case UCNV_LMBCS_5: + case UCNV_LMBCS_6: + case UCNV_LMBCS_8: + case UCNV_LMBCS_11: + case UCNV_LMBCS_16: + case UCNV_LMBCS_17: + case UCNV_LMBCS_18: + case UCNV_LMBCS_19: + case UCNV_HZ: + case UCNV_SCSU: + case UCNV_UTF7: + case UCNV_BOCU1: + case UCNV_UTF16: + case UCNV_UTF32: + case UCNV_IMAP_MAILBOX: + ret = 0; + break; + case UCNV_LATIN_1: + case UCNV_UTF8: + case UCNV_ISCII: + case UCNV_US_ASCII: + case UCNV_CESU8: + ret = 1; + break; + default: { + static const UChar ascii[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E + }; + static const char expected[] = + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F" + "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F" + "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F" + "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F" + "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F" + "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F" + "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E"; + char output[sizeof(expected)]; + + if (ucnv_fromUChars(conv, + output, sizeof(output), + ascii, sizeof(expected), + &status) != sizeof(expected) || + U_FAILURE(status)) { + ret = 0; + } else { + ret = (memcmp(expected, output, sizeof(expected)) == 0); + } + } + } + ucnv_close(conv); + + zend_hash_add(&UG(flex_compatible), (char*)enc, key_len, (void**)&ret, sizeof(ret), NULL); + + return ret; + } +} + +ZEND_API int zend_prepare_scanner_converters(const char *onetime_encoding, int run_time TSRMLS_DC) +{ + const char *encoding = NULL; + + if (SCNG(input_conv)) { + /* Script is already converted to UTF-8 */ + return zend_set_converter_encoding(&SCNG(output_conv), "UTF-8"); + } else { + encoding = onetime_encoding; + } + + /* We need to convert the input stream only if script_encoding is not ASCII compatible */ + if (!is_encoding_flex_compatible(encoding TSRMLS_CC)) { + if (zend_set_converter_encoding(&SCNG(input_conv), encoding) == FAILURE) { + return FAILURE; + } +#ifdef scottmac_0 + if (run_time) { + /* Convert rest of the buffer to unicode.runtime_encoding. */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + int offset, length, size; + const char *src, *old_src; + char rt_buf[8192]; + char *target = rt_buf; + UErrorCode status = U_ZERO_ERROR; + + old_src = src = yy_c_buf_p; + offset = yy_c_buf_p - b->yy_ch_buf; + length = b->yy_n_chars - offset; + size = b->yy_buf_size - offset; + + ucnv_convertEx(UG(utf8_conv), + SCNG(input_conv), + &target, rt_buf+size-2, + &src, src+length, + NULL, NULL, NULL, NULL, + TRUE, TRUE, + &status); + + if (src - old_src < length) { + /* Cannot fit into buffer. Schedule for next read. */ + SCNG(rest_len) = length - (src - old_src); + SCNG(rest_str) = emalloc(SCNG(rest_len)); + memcpy(SCNG(rest_str), src, SCNG(rest_len)); + } + length = target - rt_buf; + memcpy(yy_c_buf_p, rt_buf, length); + SCNG(yy_n_chars) = b->yy_n_chars = length + offset; + b->yy_ch_buf[b->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[b->yy_n_chars+1] = YY_END_OF_BUFFER_CHAR; + } +#endif + encoding = "UTF-8"; + } + return zend_set_converter_encoding(&SCNG(output_conv), encoding); +} + +ZEND_API int zend_convert_scanner_output(UConverter *conv, UChar **target, int *target_len, const char *source, int source_len, UErrorCode *status TSRMLS_DC) +{ + const char *source_consumed = NULL; + + /* set our custom callback with context */ + ucnv_setToUCallBack(conv, zend_scanner_output_callback, &source_consumed, NULL, NULL, status); + + /* reset the error and perform conversion */ + *status = U_ZERO_ERROR; + zend_string_to_unicode_ex(conv, target, target_len, source, source_len, status); + + /* figure out how many source bytes were consumed */ + if (U_SUCCESS(*status)) { + return source_len; + } else if (source_consumed) { + return source_consumed - source; + } else { + return 0; + } +} + +int zend_unicode_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC) +{ + size_t n = len; + const char *src = buf; + +#ifdef scottmac_0 + /* Look of we have rest from previous call */ + if (SCNG(rest_str)) { + if (len >= SCNG(rest_len)) { + memcpy(buf, SCNG(rest_str), SCNG(rest_len)); + efree(SCNG(rest_str)); + SCNG(rest_str) = NULL; + n = SCNG(rest_len); + SCNG(rest_len) = 0; + } else { + memcpy(buf, SCNG(rest_str), len); + memcpy(SCNG(rest_str), SCNG(rest_str)+len, SCNG(rest_len)-len); + n = len; + SCNG(rest_len) -= len; + } + } else { + n = zend_stream_read(file_handle, buf, len TSRMLS_CC); + } +#endif + + /* Don't make any conversions if unicode=off */ + if (!UG(unicode)) { + return n; + } + + /* Autodetect encoding */ + if (!SCNG(encoding_checked)) { + int32_t signatureLength; + UErrorCode status = U_ZERO_ERROR; + const char *encoding; + + encoding = ucnv_detectUnicodeSignature(buf, n, &signatureLength, &status); + if (encoding && U_SUCCESS(status)) { + src += signatureLength; + n -= signatureLength; + if (is_encoding_flex_compatible(encoding TSRMLS_CC)) { + if (SCNG(input_conv)) { + ucnv_close(SCNG(input_conv)); + SCNG(input_conv) = NULL; + } + zend_set_converter_encoding(&SCNG(output_conv), encoding); + if (signatureLength > 0) { + memcpy(buf, src, n); + } + } else { + zend_set_converter_encoding(&SCNG(input_conv), encoding); + zend_set_converter_encoding(&SCNG(output_conv), "UTF-8"); + } + } + status = U_ZERO_ERROR; + SCNG(encoding_checked) = 1; + } + + if (SCNG(input_conv) && n >= 0) { + UErrorCode status = U_ZERO_ERROR; + char rt_buf[8192]; + char *target = rt_buf; + const char *old_src = src; + + ucnv_convertEx(UG(utf8_conv), + SCNG(input_conv), + &target, rt_buf+len, + &src, src+n, + NULL, NULL, NULL, NULL, + TRUE, TRUE, + &status); + if (src - old_src < n) { + /* Cannot fit into buffer. Schedule for next read. */ + SCNG(rest_len) = n - (src - old_src); + SCNG(rest_str) = emalloc(SCNG(rest_len)); + memcpy(SCNG(rest_str), src, SCNG(rest_len)); + } + n = target - rt_buf; + memcpy(buf, rt_buf, n); + } + return n; +} + +ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) +{ + char *file_path=NULL, *buf; + UErrorCode status = U_ZERO_ERROR; + size_t size; + + if (zend_stream_fixup(file_handle, &buf, &size TSRMLS_CC) == FAILURE) { + return FAILURE; + } + + zend_llist_add_element(&CG(open_files), file_handle); + + if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) { + zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files)); + size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle; + fh->handle.stream.handle = (void*)(((char*)fh) + diff); + file_handle->handle.stream.handle = fh->handle.stream.handle; + } + + /* Reset the scanner for scanning the new file */ + SCNG(yy_in) = file_handle; + + zend_prepare_scanner_converters(ucnv_getName(ZEND_U_CONVERTER(UG(script_encoding_conv)), &status), 0 TSRMLS_CC); + + if (size != -1) { + /* Re-encode for Unicode if needed */ + yy_scan_buffer(buf, size TSRMLS_CC); + } else { + zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); + } + + BEGIN(INITIAL); + + if (file_handle->opened_path) { + file_path = file_handle->opened_path; + } else { + file_path = file_handle->filename; + } + + zend_set_compiled_filename(file_path TSRMLS_CC); + zend_set_compiled_script_encoding((char*)ucnv_getName(SCNG(output_conv), &status) TSRMLS_CC); + + if (CG(start_lineno)) { + CG(zend_lineno) = CG(start_lineno); + CG(start_lineno) = 0; + } else { + CG(zend_lineno) = 1; + } + + CG(increment_lineno) = 0; + return SUCCESS; +} +END_EXTERN_C() + + +ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC) +{ + zend_lex_state original_lex_state; + zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array)); + zend_op_array *original_active_op_array = CG(active_op_array); + zend_op_array *retval=NULL; + int compiler_result; + zend_bool compilation_successful=0; + znode retval_znode; + zend_bool original_in_compilation = CG(in_compilation); + + retval_znode.op_type = IS_CONST; + Z_TYPE(retval_znode.u.constant) = IS_LONG; + Z_LVAL(retval_znode.u.constant) = 1; + Z_UNSET_ISREF(retval_znode.u.constant); + Z_SET_REFCOUNT(retval_znode.u.constant, 1); + + zend_save_lexical_state(&original_lex_state TSRMLS_CC); + + retval = op_array; /* success oriented */ + + if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) { + if (type==ZEND_REQUIRE) { + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC); + zend_bailout(); + } else { + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC); + } + compilation_successful=0; + } else { + init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); + CG(in_compilation) = 1; + CG(active_op_array) = op_array; + compiler_result = zendparse(TSRMLS_C); + zend_do_return(&retval_znode, 0 TSRMLS_CC); + CG(in_compilation) = original_in_compilation; + if (compiler_result==1) { /* parser error */ + zend_bailout(); + } + compilation_successful=1; + } + + if (retval) { + CG(active_op_array) = original_active_op_array; + if (compilation_successful) { + pass_two(op_array TSRMLS_CC); + zend_release_labels(TSRMLS_C); + } else { + efree(op_array); + retval = NULL; + } + } + if (compilation_successful) { + zend_restore_lexical_state(&original_lex_state TSRMLS_CC); + } + return retval; +} + + +zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC) +{ + zend_file_handle file_handle; + zval tmp; + zend_op_array *retval; + char *opened_path = NULL; + + if (Z_TYPE_P(filename) != IS_STRING) { + tmp = *filename; + zval_copy_ctor(&tmp); + convert_to_string(&tmp); + filename = &tmp; + } + file_handle.filename = Z_STRVAL_P(filename); + file_handle.free_filename = 0; + file_handle.type = ZEND_HANDLE_FILENAME; + file_handle.opened_path = NULL; + file_handle.handle.fp = NULL; + + retval = zend_compile_file(&file_handle, type TSRMLS_CC); + if (retval && file_handle.handle.stream.handle) { + int dummy = 1; + + if (!file_handle.opened_path) { + file_handle.opened_path = opened_path = estrndup(Z_STRVAL_P(filename), Z_STRLEN_P(filename)); + } + + zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL); + + if (opened_path) { + efree(opened_path); + } + } + zend_destroy_file_handle(&file_handle TSRMLS_CC); + + if (filename==&tmp) { + zval_dtor(&tmp); + } + return retval; +} + +ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC) +{ + const char *encoding; + UErrorCode status = U_ZERO_ERROR; + + if (Z_TYPE_P(str) == IS_UNICODE) { + convert_to_string_with_converter(str, UG(utf8_conv)); + encoding = "UTF-8"; + } else { + UErrorCode status = U_ZERO_ERROR; + encoding = ucnv_getName(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), &status); + } + + str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD); + memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD); + + SCNG(yy_in)=NULL; + + zend_prepare_scanner_converters(encoding, 0 TSRMLS_CC); + /* Re-encode for Unicode if needed */ + yy_scan_buffer(Z_STRVAL_P(str), Z_STRLEN_P(str) TSRMLS_CC); + + zend_set_compiled_filename(filename TSRMLS_CC); + zend_set_compiled_script_encoding((char*)ucnv_getName(SCNG(output_conv), &status) TSRMLS_CC); + CG(zend_lineno) = 1; + CG(increment_lineno) = 0; + return SUCCESS; +} + + +ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D) +{ + return SCNG(yy_cursor) - SCNG(yy_start); +} + + +zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC) +{ + zend_lex_state original_lex_state; + zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array)); + zend_op_array *original_active_op_array = CG(active_op_array); + zend_op_array *retval; + zval tmp; + int compiler_result; + zend_bool original_in_compilation = CG(in_compilation); + + tmp = *source_string; + zval_copy_ctor(&tmp); + if (Z_TYPE(tmp) != IS_STRING && Z_TYPE(tmp) != IS_UNICODE) { + convert_to_text(&tmp); + } + source_string = &tmp; + + if (Z_UNILEN_P(source_string)==0) { + efree(op_array); + zval_dtor(&tmp); + return NULL; + } + + CG(in_compilation) = 1; + + zend_save_lexical_state(&original_lex_state TSRMLS_CC); + if (zend_prepare_string_for_scanning(source_string, filename TSRMLS_CC)==FAILURE) { + efree(op_array); + retval = NULL; + } else { + zend_bool orig_interactive = CG(interactive); + + CG(interactive) = 0; + init_op_array(op_array, ZEND_EVAL_CODE, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); + CG(interactive) = orig_interactive; + CG(active_op_array) = op_array; + BEGIN(ST_IN_SCRIPTING); + compiler_result = zendparse(TSRMLS_C); + + if (compiler_result==1) { + CG(active_op_array) = original_active_op_array; + CG(unclean_shutdown)=1; + retval = NULL; + } else { + zend_do_return(NULL, 0 TSRMLS_CC); + CG(active_op_array) = original_active_op_array; + pass_two(op_array TSRMLS_CC); + zend_release_labels(TSRMLS_C); + retval = op_array; + } + zend_restore_lexical_state(&original_lex_state TSRMLS_CC); + } + zval_dtor(&tmp); + CG(in_compilation) = original_in_compilation; + return retval; +} + + +BEGIN_EXTERN_C() +int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC) +{ + zend_lex_state original_lex_state; + zend_file_handle file_handle; + + file_handle.type = ZEND_HANDLE_FILENAME; + file_handle.filename = filename; + file_handle.free_filename = 0; + file_handle.opened_path = NULL; + zend_save_lexical_state(&original_lex_state TSRMLS_CC); + if (open_file_for_scanning(&file_handle TSRMLS_CC)==FAILURE) { + zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename TSRMLS_CC); + return FAILURE; + } + zend_highlight(syntax_highlighter_ini TSRMLS_CC); + zend_destroy_file_handle(&file_handle TSRMLS_CC); + zend_restore_lexical_state(&original_lex_state TSRMLS_CC); + return SUCCESS; +} + +int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name TSRMLS_DC) +{ + zend_lex_state original_lex_state; + zval tmp = *str; + + str = &tmp; + zval_copy_ctor(str); + zend_save_lexical_state(&original_lex_state TSRMLS_CC); + if (zend_prepare_string_for_scanning(str, str_name TSRMLS_CC)==FAILURE) { + return FAILURE; + } + BEGIN(INITIAL); + zend_highlight(syntax_highlighter_ini TSRMLS_CC); + zend_restore_lexical_state(&original_lex_state TSRMLS_CC); + zval_dtor(str); + return SUCCESS; +} +END_EXTERN_C() + +#define zend_copy_value(zendlval, yytext, yyleng) \ + Z_STRVAL_P(zendlval) = (char *)estrndup(yytext, yyleng); \ + Z_STRLEN_P(zendlval) = yyleng; + +static int zend_scan_unicode_escape_string(zval *zendlval, char *str, int len, UChar quote_type, int type TSRMLS_DC) +{ + register UChar *s, *t, c; + UChar *end; + UChar32 codepoint = 0; + int8_t digit; + int8_t min_digits = 0, max_digits = 0; + int8_t bits; + int8_t n; + + if (!zend_copy_scanner_string(zendlval, str, len, IS_UNICODE, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + + /* convert escape sequences */ + s = t = Z_USTRVAL_P(zendlval); + end = s+Z_USTRLEN_P(zendlval); + while (s<end) { + if (*s==0x5C /*'\\'*/) { + s++; + c = *s; + if (s >= end) { + *t++ = 0x5C; /*'\\'*/ + break; + } + + min_digits = 0; + codepoint = 0; + bits = 4; + n = 0; + + switch(c) { + case 0x6E: /*'n'*/ + *t++ = (UChar) 0x0A; /*'\n'*/ + Z_USTRLEN_P(zendlval)--; + break; + case 0x72: /*'r'*/ + *t++ = (UChar) 0x0D; /*'\r'*/ + Z_USTRLEN_P(zendlval)--; + break; + case 0x74: /*'t'*/ + *t++ = (UChar) 0x09; /*'\t'*/ + Z_USTRLEN_P(zendlval)--; + break; + case 0x66: /*'f'*/ + *t++ = (UChar) 0x0C; /*'\f'*/ + Z_USTRLEN_P(zendlval)--; + break; + case 0x76: /*'v'*/ + *t++ = (UChar) 0x0B; /*'\v'*/ + Z_USTRLEN_P(zendlval)--; + break; + case 0x22: /*'"'*/ + case 0x60: /*'`'*/ + if (c != quote_type) { + *t++ = 0x5C; /*'\\'*/ + *t++ = *s; + break; + } + case 0x5C: /*'\\'*/ + case 0x24: /*'$'*/ + *t++ = *s; + Z_USTRLEN_P(zendlval)--; + break; + case 0x43: /*'C'*/ + { + UChar *p = s+1; + if (p < end && zend_parse_charname_sequence(&p, end, &codepoint TSRMLS_CC)) { + Z_USTRLEN_P(zendlval) -= p - s + 1; + s = p; + if (U_IS_BMP(codepoint)) { + *t++ = (UChar) codepoint; + } else { + *t++ = (UChar) U16_LEAD(codepoint); + *t++ = (UChar) U16_TRAIL(codepoint); + Z_USTRLEN_P(zendlval)++; + } + } else { + zend_error(E_COMPILE_WARNING, "Invalid \\C{..} sequence"); + efree(Z_USTRVAL_P(zendlval)); + return 0; + } + break; + } + case 0x75: /*'u'*/ + min_digits = 4; + max_digits = 4; + Z_USTRLEN_P(zendlval)--; + break; + case 0x55: /*'U'*/ + min_digits = 6; + max_digits = 6; + Z_USTRLEN_P(zendlval)--; + break; + case 0x78: /*'x'*/ + case 0x58: /*'X'*/ + if ((digit = zend_get_hex_digit(*(s+1))) >= 0) { + min_digits = 1; + max_digits = 2; + Z_USTRLEN_P(zendlval)--; + s++; + n = 1; /* already have one digit */ + codepoint = digit; + } else { + *t++ = 0x5C; /*'\\'*/ + *t++ = *s; + } + break; + default: + digit = zend_get_octal_digit(*s); + if (digit >= 0) { + min_digits = 1; + max_digits = 3; + bits = 3; + n = 1; /* already have one digit */ + codepoint = digit; + } else { + *t++ = 0x5C; /*'\\'*/ + *t++ = *s; + } + break; + } + + /* need to parse a number for one of the escape sequences */ + if (min_digits != 0) { + while (s++ < end && n < max_digits) { + digit = (bits == 4) ? zend_get_hex_digit(*s) : zend_get_octal_digit(*s); + if (digit < 0) { + break; + } + codepoint = (codepoint << bits) | digit; + n++; + } + + if (n < min_digits) { + /* can only happen for \u and \U sequences */ + zend_error(E_COMPILE_WARNING,"\\%c escape sequence requires exactly %d hexadecimal digits", (char) c, min_digits); + efree(Z_USTRVAL_P(zendlval)); + return 0; + } + + if (U_IS_BMP(codepoint)) { + *t++ = (UChar) codepoint; + Z_USTRLEN_P(zendlval) -= n; + } else if (codepoint <= 0x10FFFF) { + *t++ = (UChar) U16_LEAD(codepoint); + *t++ = (UChar) U16_TRAIL(codepoint); + Z_USTRLEN_P(zendlval) -= n-1; + } else { + zend_error(E_COMPILE_WARNING,"\\U%06x is above the highest valid codepoint 0x10FFFF", codepoint); + efree(Z_USTRVAL_P(zendlval)); + return 0; + } + + /* s is already incremented and not past a newline */ + continue; + } + } else { + *t++ = *s; + } + + if (*s == 0x0A /*'\n'*/ || (*s == 0x0D /*'\r'*/ && (*(s+1) != 0x0A /*'\n'*/))) { + CG(zend_lineno)++; + } + s++; + } + *t = 0; + + return type; +} + +static int zend_scan_unicode_single_string(zval *zendlval TSRMLS_DC) +{ + register UChar *s, *t; + UChar *end; + + if (!zend_copy_scanner_string(zendlval, yytext+1, yyleng-2, IS_UNICODE, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + + /* convert escape sequences */ + s = t = Z_USTRVAL_P(zendlval); + end = s+Z_USTRLEN_P(zendlval); + while (s<end) { + if (*s==0x5C /*'\\'*/) { + s++; + + switch(*s) { + case 0x5C: /*'\\'*/ + case 0x27: /*'\''*/ + *t++ = *s; + Z_USTRLEN_P(zendlval)--; + break; + default: + *t++ = 0x5C; /*'\\'*/ + *t++ = *s; + break; + } + } else { + *t++ = *s; + } + + if (*s == 0x0A /*'\n'*/ || (*s == 0x0D /*'\r'*/ && (*(s+1) != 0x0A /*'\n'*/))) { + CG(zend_lineno)++; + } + s++; + } + *t = 0; + + return T_CONSTANT_ENCAPSED_STRING; +} + +static void zend_scan_binary_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC) +{ + register char *s, *t; + char *end; + + ZVAL_STRINGL(zendlval, str, len, 1); + + /* convert escape sequences */ + s = t = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (s<end) { + if (*s=='\\') { + s++; + if (s >= end) { + *t++ = '\\'; + break; + } + + switch(*s) { + case 'n': + *t++ = '\n'; + Z_STRLEN_P(zendlval)--; + break; + case 'r': + *t++ = '\r'; + Z_STRLEN_P(zendlval)--; + break; + case 't': + *t++ = '\t'; + Z_STRLEN_P(zendlval)--; + break; + case 'f': + *t++ = '\f'; + zendlval->value.str.len--; + break; + case 'v': + *t++ = '\v'; + zendlval->value.str.len--; + break; + case '"': + case '`': + if (*s != quote_type) { + *t++ = '\\'; + *t++ = *s; + break; + } + case '\\': + case '$': + *t++ = *s; + Z_STRLEN_P(zendlval)--; + break; + case 'x': + case 'X': + if (ZEND_IS_HEX(*(s+1))) { + char hex_buf[3] = { 0, 0, 0 }; + + Z_STRLEN_P(zendlval)--; /* for the 'x' */ + + hex_buf[0] = *(++s); + Z_STRLEN_P(zendlval)--; + if (ZEND_IS_HEX(*(s+1))) { + hex_buf[1] = *(++s); + Z_STRLEN_P(zendlval)--; + } + *t++ = (char) strtol(hex_buf, NULL, 16); + } else { + *t++ = '\\'; + *t++ = *s; + } + break; + default: + /* check for an octal */ + if (ZEND_IS_OCT(*s)) { + char octal_buf[4] = { 0, 0, 0, 0 }; + + octal_buf[0] = *s; + Z_STRLEN_P(zendlval)--; + if (ZEND_IS_OCT(*(s+1))) { + octal_buf[1] = *(++s); + Z_STRLEN_P(zendlval)--; + if (ZEND_IS_OCT(*(s+1))) { + octal_buf[2] = *(++s); + Z_STRLEN_P(zendlval)--; + } + } + *t++ = (char) strtol(octal_buf, NULL, 8); + } else { + *t++ = '\\'; + *t++ = *s; + } + break; + } + } else { + *t++ = *s; + } + + if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { + CG(zend_lineno)++; + } + s++; + } + *t = 0; +} + +static void zend_scan_binary_single_string(zval *zendlval, char *str, int len TSRMLS_DC) +{ + register char *s, *t; + char *end; + + ZVAL_STRINGL(zendlval, str, len, 1); + + /* convert escape sequences */ + s = t = Z_STRVAL_P(zendlval); + end = s+Z_STRLEN_P(zendlval); + while (s<end) { + if (*s=='\\') { + s++; + + switch(*s) { + case '\\': + case '\'': + *t++ = *s; + Z_STRLEN_P(zendlval)--; + break; + default: + *t++ = '\\'; + *t++ = *s; + break; + } + } else { + *t++ = *s; + } + + if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { + CG(zend_lineno)++; + } + s++; + } + *t = 0; +} + + +int lex_scan(zval *zendlval TSRMLS_DC) +{ +restart: + SCNG(yy_text) = YYCURSOR; + +yymore_restart: + +/*!re2c +re2c:yyfill:check = 0; +LNUM [0-9]+ +DNUM ([0-9]*"."[0-9]+)|([0-9]+"."[0-9]*) +EXPONENT_DNUM (({LNUM}|{DNUM})[eE][+-]?{LNUM}) +HNUM "0x"[0-9a-fA-F]+ +LABEL [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* +WHITESPACE [ \n\r\t]+ +TABS_AND_SPACES [ \t]* +TOKENS [;:,.\[\]()|^&+-/*=%!~$<>?@] +ANY_CHAR [^\x00] +NEWLINE ("\r"|"\n"|"\r\n") +NULL [\x00]{1} + +/* + * LITERAL_DOLLAR matches unescaped $ that aren't followed by a label character + * or a { and therefore will be taken literally. The case of literal $ before + * a variable or "${" is handled in a rule for each string type + */ +DOUBLE_QUOTES_LITERAL_DOLLAR ("$"+([^a-zA-Z_\x7f-\xff$"\\{\x00]|("\\"{ANY_CHAR}))) +BACKQUOTE_LITERAL_DOLLAR ("$"+([^a-zA-Z_\x7f-\xff$`\\{\x00]|("\\"{ANY_CHAR}))) +HEREDOC_LITERAL_DOLLAR ("$"+([^a-zA-Z_\x7f-\xff$\n\r\\{\x00]|("\\"[^\n\r\x00]))) + +/* + * Usually, HEREDOC_NEWLINE will just function like a simple NEWLINE, but some + * special cases need to be handled. HEREDOC_CHARS doesn't allow a line to + * match when { or $, and/or \ is at the end. (("{"*|"$"*)"\\"?) handles that, + * along with cases where { or $, and/or \ is the ONLY thing on a line + * + * The other case is when a line contains a label, followed by ONLY + * { or $, and/or \ Handled by ({LABEL}";"?((("{"+|"$"+)"\\"?)|"\\")) + */ +HEREDOC_NEWLINE ((({LABEL}";"?((("{"+|"$"+)"\\"?)|"\\"))|(("{"*|"$"*)"\\"?)){NEWLINE}) + +/* + * This pattern is just used in the next 2 for matching { or literal $, and/or + * \ escape sequence immediately at the beginning of a line or after a label + */ +HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR (("{"+[^$\n\r\\{\x00])|("{"*"\\"[^\n\r\x00])|{HEREDOC_LITERAL_DOLLAR}) + +/* + * These 2 label-related patterns allow HEREDOC_CHARS to continue "regular" + * matching after a newline that starts with either a non-label character or a + * label that isn't followed by a newline. Like HEREDOC_CHARS, they won't match + * a variable or "{$" Matching a newline, and possibly label, up TO a variable + * or "{$", is handled in the heredoc rules + * + * The HEREDOC_LABEL_NO_NEWLINE pattern (";"[^$\n\r\\{\x00]) handles cases where ; + * follows a label. [^a-zA-Z0-9_\x7f-\xff;$\n\r\\{\x00] is needed to prevent a label + * character or ; from matching on a possible (real) ending label + */ +HEREDOC_NON_LABEL ([^a-zA-Z_\x7f-\xff$\n\r\\{\x00]|{HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR}) +HEREDOC_LABEL_NO_NEWLINE ({LABEL}([^a-zA-Z0-9_\x7f-\xff;$\n\r\\{\x00]|(";"[^$\n\r\\{\x00])|(";"?{HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR}))) + +/* + * CHARS matches everything up to a variable or "{$" + * {'s are matched as long as they aren't followed by a $ + * The case of { before "{$" is handled in a rule for each string type + * + * For heredocs, matching continues across/after newlines if/when it's known + * that the next line doesn't contain a possible ending label + */ +DOUBLE_QUOTES_CHARS ("{"*([^$"\\{\x00]|("\\"{ANY_CHAR}))|{DOUBLE_QUOTES_LITERAL_DOLLAR}) +BACKQUOTE_CHARS ("{"*([^$`\\{\x00]|("\\"{ANY_CHAR}))|{BACKQUOTE_LITERAL_DOLLAR}) +HEREDOC_CHARS ("{"*([^$\n\r\\{\x00]|("\\"[^\n\r\x00]))|{HEREDOC_LITERAL_DOLLAR}|({HEREDOC_NEWLINE}+({HEREDOC_NON_LABEL}|{HEREDOC_LABEL_NO_NEWLINE}))) + +NOWDOC_CHARS ([^\n\r\x00]|{NEWLINE}+([^a-zA-Z_\x7f-\xff\n\r\x00]|({LABEL}([^a-zA-Z0-9_\x7f-\xff;\n\r\x00]|(";"[^\n\r\x00]))))) + +/* compute yyleng before each rule */ +<!*> := yyleng = YYCURSOR - SCNG(yy_text); + + +<ST_IN_SCRIPTING>"exit" { + return T_EXIT; +} + +<ST_IN_SCRIPTING>"die" { + return T_EXIT; +} + +<ST_IN_SCRIPTING>"function" { + return T_FUNCTION; +} + +<ST_IN_SCRIPTING>"const" { + return T_CONST; +} + +<ST_IN_SCRIPTING>"return" { + return T_RETURN; +} + +<ST_IN_SCRIPTING>"try" { + return T_TRY; +} + +<ST_IN_SCRIPTING>"catch" { + return T_CATCH; +} + +<ST_IN_SCRIPTING>"throw" { + return T_THROW; +} + +<ST_IN_SCRIPTING>"if" { + return T_IF; +} + +<ST_IN_SCRIPTING>"elseif" { + return T_ELSEIF; +} + +<ST_IN_SCRIPTING>"endif" { + return T_ENDIF; +} + +<ST_IN_SCRIPTING>"else" { + return T_ELSE; +} + +<ST_IN_SCRIPTING>"while" { + return T_WHILE; +} + +<ST_IN_SCRIPTING>"endwhile" { + return T_ENDWHILE; +} + +<ST_IN_SCRIPTING>"do" { + return T_DO; +} + +<ST_IN_SCRIPTING>"for" { + return T_FOR; +} + +<ST_IN_SCRIPTING>"endfor" { + return T_ENDFOR; +} + +<ST_IN_SCRIPTING>"foreach" { + return T_FOREACH; +} + +<ST_IN_SCRIPTING>"endforeach" { + return T_ENDFOREACH; +} + +<ST_IN_SCRIPTING>"declare" { + return T_DECLARE; +} + +<ST_IN_SCRIPTING>"enddeclare" { + return T_ENDDECLARE; +} + +<ST_IN_SCRIPTING>"instanceof" { + return T_INSTANCEOF; +} + +<ST_IN_SCRIPTING>"as" { + return T_AS; +} + +<ST_IN_SCRIPTING>"switch" { + return T_SWITCH; +} + +<ST_IN_SCRIPTING>"endswitch" { + return T_ENDSWITCH; +} + +<ST_IN_SCRIPTING>"case" { + return T_CASE; +} + +<ST_IN_SCRIPTING>"default" { + return T_DEFAULT; +} + +<ST_IN_SCRIPTING>"break" { + return T_BREAK; +} + +<ST_IN_SCRIPTING>"continue" { + return T_CONTINUE; +} + +<ST_IN_SCRIPTING>"goto" { + return T_GOTO; +} + +<ST_IN_SCRIPTING>"echo" { + return T_ECHO; +} + +<ST_IN_SCRIPTING>"print" { + return T_PRINT; +} + +<ST_IN_SCRIPTING>"class" { + return T_CLASS; +} + +<ST_IN_SCRIPTING>"interface" { + return T_INTERFACE; +} + +<ST_IN_SCRIPTING>"extends" { + return T_EXTENDS; +} + +<ST_IN_SCRIPTING>"implements" { + return T_IMPLEMENTS; +} + +<ST_IN_SCRIPTING>"->" { + yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); + return T_OBJECT_OPERATOR; +} + +<ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY>{WHITESPACE}+ { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + HANDLE_NEWLINES(yytext, yyleng); + return T_WHITESPACE; +} + +<ST_LOOKING_FOR_PROPERTY>"->" { + return T_OBJECT_OPERATOR; +} + +<ST_LOOKING_FOR_PROPERTY>{LABEL} { + yy_pop_state(TSRMLS_C); + if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { + return 0; + } + return T_STRING; +} + +<ST_LOOKING_FOR_PROPERTY>{ANY_CHAR} { + yyless(0); + yy_pop_state(TSRMLS_C); + goto restart; +} + +<ST_IN_SCRIPTING>"::" { + return T_PAAMAYIM_NEKUDOTAYIM; +} + +<ST_IN_SCRIPTING>"\\" { + return T_NS_SEPARATOR; +} + +<ST_IN_SCRIPTING>"new" { + return T_NEW; +} + +<ST_IN_SCRIPTING>"clone" { + return T_CLONE; +} + +<ST_IN_SCRIPTING>"var" { + return T_VAR; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("int"|"integer"){TABS_AND_SPACES}")" { + return T_INT_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("real"|"double"|"float"){TABS_AND_SPACES}")" { + return T_DOUBLE_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"string"{TABS_AND_SPACES}")" { + return T_STRING_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"unicode"{TABS_AND_SPACES}")" { + return T_UNICODE_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"binary"{TABS_AND_SPACES}")" { + return T_BINARY_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"array"{TABS_AND_SPACES}")" { + return T_ARRAY_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"object"{TABS_AND_SPACES}")" { + return T_OBJECT_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("bool"|"boolean"){TABS_AND_SPACES}")" { + return T_BOOL_CAST; +} + +<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}("unset"){TABS_AND_SPACES}")" { + return T_UNSET_CAST; +} + +<ST_IN_SCRIPTING>"eval" { + return T_EVAL; +} + +<ST_IN_SCRIPTING>"include" { + return T_INCLUDE; +} + +<ST_IN_SCRIPTING>"include_once" { + return T_INCLUDE_ONCE; +} + +<ST_IN_SCRIPTING>"require" { + return T_REQUIRE; +} + +<ST_IN_SCRIPTING>"require_once" { + return T_REQUIRE_ONCE; +} + +<ST_IN_SCRIPTING>"namespace" { + return T_NAMESPACE; +} + +<ST_IN_SCRIPTING>"use" { + return T_USE; +} + +<ST_IN_SCRIPTING>"global" { + return T_GLOBAL; +} + +<ST_IN_SCRIPTING>"isset" { + return T_ISSET; +} + +<ST_IN_SCRIPTING>"empty" { + return T_EMPTY; +} + +<ST_IN_SCRIPTING>"__halt_compiler" { + return T_HALT_COMPILER; +} + +<ST_IN_SCRIPTING>"static" { + return T_STATIC; +} + +<ST_IN_SCRIPTING>"abstract" { + return T_ABSTRACT; +} + +<ST_IN_SCRIPTING>"final" { + return T_FINAL; +} + +<ST_IN_SCRIPTING>"private" { + return T_PRIVATE; +} + +<ST_IN_SCRIPTING>"protected" { + return T_PROTECTED; +} + +<ST_IN_SCRIPTING>"public" { + return T_PUBLIC; +} + +<ST_IN_SCRIPTING>"unset" { + return T_UNSET; +} + +<ST_IN_SCRIPTING>"=>" { + return T_DOUBLE_ARROW; +} + +<ST_IN_SCRIPTING>"list" { + return T_LIST; +} + +<ST_IN_SCRIPTING>"array" { + return T_ARRAY; +} + +<ST_IN_SCRIPTING>"++" { + return T_INC; +} + +<ST_IN_SCRIPTING>"--" { + return T_DEC; +} + +<ST_IN_SCRIPTING>"===" { + return T_IS_IDENTICAL; +} + +<ST_IN_SCRIPTING>"!==" { + return T_IS_NOT_IDENTICAL; +} + +<ST_IN_SCRIPTING>"==" { + return T_IS_EQUAL; +} + +<ST_IN_SCRIPTING>"!="|"<>" { + return T_IS_NOT_EQUAL; +} + +<ST_IN_SCRIPTING>"<=" { + return T_IS_SMALLER_OR_EQUAL; +} + +<ST_IN_SCRIPTING>">=" { + return T_IS_GREATER_OR_EQUAL; +} + +<ST_IN_SCRIPTING>"+=" { + return T_PLUS_EQUAL; +} + +<ST_IN_SCRIPTING>"-=" { + return T_MINUS_EQUAL; +} + +<ST_IN_SCRIPTING>"*=" { + return T_MUL_EQUAL; +} + +<ST_IN_SCRIPTING>"/=" { + return T_DIV_EQUAL; +} + +<ST_IN_SCRIPTING>".=" { + return T_CONCAT_EQUAL; +} + +<ST_IN_SCRIPTING>"%=" { + return T_MOD_EQUAL; +} + +<ST_IN_SCRIPTING>"<<=" { + return T_SL_EQUAL; +} + +<ST_IN_SCRIPTING>">>=" { + return T_SR_EQUAL; +} + +<ST_IN_SCRIPTING>"&=" { + return T_AND_EQUAL; +} + +<ST_IN_SCRIPTING>"|=" { + return T_OR_EQUAL; +} + +<ST_IN_SCRIPTING>"^=" { + return T_XOR_EQUAL; +} + +<ST_IN_SCRIPTING>"||" { + return T_BOOLEAN_OR; +} + +<ST_IN_SCRIPTING>"&&" { + return T_BOOLEAN_AND; +} + +<ST_IN_SCRIPTING>"OR" { + return T_LOGICAL_OR; +} + +<ST_IN_SCRIPTING>"AND" { + return T_LOGICAL_AND; +} + +<ST_IN_SCRIPTING>"XOR" { + return T_LOGICAL_XOR; +} + +<ST_IN_SCRIPTING>"<<" { + return T_SL; +} + +<ST_IN_SCRIPTING>">>" { + return T_SR; +} + +<ST_IN_SCRIPTING>{TOKENS} { + return yytext[0]; +} + + +<ST_IN_SCRIPTING>"{" { + yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); + return '{'; +} + + +<ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"${" { + yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); + return T_DOLLAR_OPEN_CURLY_BRACES; +} + + +<ST_IN_SCRIPTING>"}" { + RESET_DOC_COMMENT(); + if (!zend_stack_is_empty(&SCNG(state_stack))) { + yy_pop_state(TSRMLS_C); + } + return '}'; +} + + +<ST_LOOKING_FOR_VARNAME>{LABEL} { + if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { + return 0; + } + yy_pop_state(TSRMLS_C); + yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); + return T_STRING_VARNAME; +} + + +<ST_LOOKING_FOR_VARNAME>{ANY_CHAR} { + yyless(0); + yy_pop_state(TSRMLS_C); + yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); + goto restart; +} + + +<ST_IN_SCRIPTING>{LNUM} { + if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ + Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); + } else { + errno = 0; + Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); + if (errno == ERANGE) { /* Overflow */ + if (yytext[0] == '0') { /* octal overflow */ + Z_DVAL_P(zendlval) = zend_oct_strtod(yytext, NULL); + } else { + Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL); + } + Z_TYPE_P(zendlval) = IS_DOUBLE; + return T_DNUMBER; + } + } + + Z_TYPE_P(zendlval) = IS_LONG; + return T_LNUMBER; +} + +<ST_IN_SCRIPTING>{HNUM} { + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; + } + + if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) { + Z_LVAL_P(zendlval) = strtol(hex, NULL, 16); + Z_TYPE_P(zendlval) = IS_LONG; + return T_LNUMBER; + } else { + Z_DVAL_P(zendlval) = zend_hex_strtod(hex, NULL); + Z_TYPE_P(zendlval) = IS_DOUBLE; + return T_DNUMBER; + } +} + +<ST_VAR_OFFSET>[0]|([1-9][0-9]*) { /* 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)) { + Z_LVAL_P(zendlval) = strtol(yytext, NULL, 10); + Z_TYPE_P(zendlval) = IS_LONG; + } else { + if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + } + return T_NUM_STRING; +} + +<ST_VAR_OFFSET>{LNUM}|{HNUM} { /* Offset must be treated as a string */ + if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + return T_NUM_STRING; +} + +<ST_IN_SCRIPTING>{DNUM}|{EXPONENT_DNUM} { + Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL); + Z_TYPE_P(zendlval) = IS_DOUBLE; + return T_DNUMBER; +} + +<ST_IN_SCRIPTING>"__CLASS__" { + zstr class_name = NULL_ZSTR; + + if (CG(active_class_entry)) { + class_name = CG(active_class_entry)->name; + } + + if (!class_name.v) { + ZVAL_EMPTY_TEXT(zendlval); + } else { + ZVAL_TEXT(zendlval, class_name, 1); + } + return T_CLASS_C; +} + +<ST_IN_SCRIPTING>"__FUNCTION__" { + zstr func_name = NULL_ZSTR; + + if (CG(active_op_array)) { + func_name = CG(active_op_array)->function_name; + } + + if (!func_name.v) { + ZVAL_EMPTY_TEXT(zendlval); + } else { + ZVAL_TEXT(zendlval, func_name, 1); + } + return T_FUNC_C; +} + +<ST_IN_SCRIPTING>"__METHOD__" { + zstr class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL_ZSTR; + zstr func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL_ZSTR; + size_t len = 0; + + if (UG(unicode)) { + size_t len1; + + if (class_name.u) { + len += len1 = u_strlen(class_name.u); + len += 2; + } + if (func_name.u) { + len += u_strlen(func_name.u); + } else { + func_name.u = EMPTY_STR; + } + Z_USTRLEN_P(zendlval) = len; + Z_USTRVAL_P(zendlval) = eumalloc(len+1); + if (class_name.u) { + u_strcpy(Z_USTRVAL_P(zendlval), class_name.u); + Z_USTRVAL_P(zendlval)[len1] = 0x3a; /* ':' */ + Z_USTRVAL_P(zendlval)[len1+1] = 0x3a; /* ':' */ + Z_USTRVAL_P(zendlval)[len1+2] = 0; + } else { + Z_USTRVAL_P(zendlval)[0] = 0; + } + u_strcat(Z_USTRVAL_P(zendlval), func_name.u); + Z_TYPE_P(zendlval) = IS_UNICODE; + } else { + if (class_name.s) { + len += strlen(class_name.s) + 2; + } + if (func_name.s) { + len += strlen(func_name.s); + } + + Z_STRVAL_P(zendlval) = emalloc(len+1); + Z_STRLEN_P(zendlval) = sprintf(Z_STRVAL_P(zendlval), "%s%s%s", + class_name.s ? class_name.s : "", + class_name.s && func_name.s ? "::" : "", + func_name.s ? func_name.s : "" + ); + Z_STRLEN_P(zendlval) = strlen(Z_STRVAL_P(zendlval)); + Z_TYPE_P(zendlval) = IS_STRING; + } + return T_METHOD_C; +} + +<ST_IN_SCRIPTING>"__LINE__" { + Z_LVAL_P(zendlval) = CG(zend_lineno); + Z_TYPE_P(zendlval) = IS_LONG; + return T_LINE; +} + +<ST_IN_SCRIPTING>"__FILE__" { + char *filename = zend_get_compiled_filename(TSRMLS_C); + + if (!filename) { + filename = ""; + } + ZVAL_RT_STRING(zendlval, filename, 1); + return T_FILE; +} + +<ST_IN_SCRIPTING>"__DIR__" { + char *filename = zend_get_compiled_filename(TSRMLS_C); + const size_t filename_len = strlen(filename); + char *dirname; + + if (!filename) { + filename = ""; + } + + dirname = estrndup(filename, filename_len); + zend_dirname(dirname, filename_len); + + if (strcmp(dirname, ".") == 0) { + dirname = erealloc(dirname, MAXPATHLEN); +#if HAVE_GETCWD + VCWD_GETCWD(dirname, MAXPATHLEN); +#elif HAVE_GETWD + VCWD_GETWD(dirname); +#endif + } + + zendlval->value.str.len = strlen(dirname); + zendlval->value.str.val = dirname; + zendlval->type = IS_STRING; + return T_DIR; +} + +<ST_IN_SCRIPTING>"__NAMESPACE__" { + if (CG(current_namespace)) { + *zendlval = *CG(current_namespace); + zval_copy_ctor(zendlval); + } else { + ZVAL_EMPTY_TEXT(zendlval); + } + return T_NS_C; +} + +<INITIAL>"<script"{WHITESPACE}+"language"{WHITESPACE}*"="{WHITESPACE}*("php"|"\"php\""|"'php'"){WHITESPACE}*">" { + HANDLE_NEWLINES(yytext, yyleng); + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + return T_OPEN_TAG; +} + +<INITIAL>"<%=" { + if (CG(asp_tags)) { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + return T_OPEN_TAG_WITH_ECHO; + } else { + goto inline_char_handler; + } +} + + +<INITIAL>"<?=" { + if (CG(short_tags)) { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + return T_OPEN_TAG_WITH_ECHO; + } else { + goto inline_char_handler; + } +} + + +<INITIAL>"<%" { + if (CG(asp_tags)) { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + return T_OPEN_TAG; + } else { + goto inline_char_handler; + } +} + + +<INITIAL>"<?php"([ \t]|{NEWLINE}) { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + HANDLE_NEWLINE(yytext[yyleng-1]); + BEGIN(ST_IN_SCRIPTING); + return T_OPEN_TAG; +} + + +<INITIAL>"<?" { + if (CG(short_tags)) { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + return T_OPEN_TAG; + } else { + goto inline_char_handler; + } +} + +<INITIAL>{ANY_CHAR} { + +inline_char_handler: + + while (1) { + YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); + + if (ptr == NULL) { + YYCURSOR = YYLIMIT; + yyleng = YYCURSOR - SCNG(yy_text); + break; + + } else { + YYCURSOR = ptr + 1; + + /* stop if it may be an opening tag (<?, <%, <script>). this condition is not optimal though */ + if (YYCURSOR < YYLIMIT && (*YYCURSOR == '?' || *YYCURSOR == '%' || *YYCURSOR == 's')) { + --YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); + break; + } + } + } + + Z_STRVAL_P(zendlval) = (char *) estrndup(yytext, yyleng); + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + HANDLE_NEWLINES(yytext, yyleng); + return T_INLINE_HTML; +} + +/* Make sure a label character follows "->", otherwise there is no property + * and "->" will be taken literally + */ +<ST_DOUBLE_QUOTES,ST_HEREDOC,ST_BACKQUOTE>"$"{LABEL}"->"[a-zA-Z_\x7f-\xff] { + yyless(yyleng - 3); + yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); + + if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { + return 0; + } + return T_VARIABLE; +} + +/* A [ always designates a variable offset, regardless of what follows + */ +<ST_DOUBLE_QUOTES,ST_HEREDOC,ST_BACKQUOTE>"$"{LABEL}"[" { + yyless(yyleng - 1); + yy_push_state(ST_VAR_OFFSET TSRMLS_CC); + + if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { + return 0; + } + return T_VARIABLE; +} + +<ST_IN_SCRIPTING,ST_DOUBLE_QUOTES,ST_HEREDOC,ST_BACKQUOTE,ST_VAR_OFFSET>"$"{LABEL} { + if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { + return 0; + } + return T_VARIABLE; +} + +<ST_VAR_OFFSET>"]" { + yy_pop_state(TSRMLS_C); + return ']'; +} + +<ST_VAR_OFFSET>{TOKENS}|[{}"`] { + /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ + return yytext[0]; +} + +<ST_VAR_OFFSET>[ \n\r\t\\'#] { + /* Invalid rule to return a more explicit parse error with proper line number */ + yyless(0); + yy_pop_state(TSRMLS_C); + ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */ + return T_ENCAPSED_AND_WHITESPACE; +} + +<ST_IN_SCRIPTING>{LABEL} { + if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + if (UG(unicode) && !zend_check_and_normalize_identifier(zendlval)) { + return 0; + } + return T_STRING; +} + +<ST_VAR_OFFSET>{LABEL} { + if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + return T_STRING; +} + + +<ST_IN_SCRIPTING>"#"|"//" { + BEGIN(ST_ONE_LINE_COMMENT); + yymore(); +} + +<ST_ONE_LINE_COMMENT>"?"|"%"|">" { + yymore(); +} + +<ST_ONE_LINE_COMMENT>[^\n\r?%>\x00]*{ANY_CHAR} { + switch (yytext[yyleng-1]) { + case '?': case '%': case '>': + yyless(yyleng-1); + yymore(); + break; + case '\n': + CG(zend_lineno)++; + /* intentional fall through */ + default: + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + return T_COMMENT; + } +} + +<ST_ONE_LINE_COMMENT>{NEWLINE} { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + CG(zend_lineno)++; + return T_COMMENT; +} + +<ST_ONE_LINE_COMMENT>"?>"|"%>" { + if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng-2; + Z_TYPE_P(zendlval) = IS_STRING; + yyless(yyleng - 2); + BEGIN(ST_IN_SCRIPTING); + return T_COMMENT; + } else { + yymore(); + } +} + +<ST_IN_SCRIPTING>"/**"{WHITESPACE} { + RESET_DOC_COMMENT(); + BEGIN(ST_DOC_COMMENT); + yymore(); +} + +<ST_COMMENT,ST_DOC_COMMENT>{NULL} { + zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); + return 0; +} + +<ST_IN_SCRIPTING>"/*" { + BEGIN(ST_COMMENT); + yymore(); +} + + +<ST_COMMENT,ST_DOC_COMMENT>[^*\x00]+ { + yymore(); +} + +<ST_DOC_COMMENT>"*/" { + zval temp; + + HANDLE_NEWLINES(yytext, yyleng); + if (!zend_copy_scanner_string(&temp, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + CG(doc_comment) = temp.value.uni.val; + CG(doc_comment_len) = temp.value.uni.len; + BEGIN(ST_IN_SCRIPTING); + return T_DOC_COMMENT; +} + +<ST_COMMENT>"*/" { + HANDLE_NEWLINES(yytext, yyleng); + BEGIN(ST_IN_SCRIPTING); + return T_COMMENT; +} + +<ST_COMMENT,ST_DOC_COMMENT>"*" { + yymore(); +} + +<ST_IN_SCRIPTING>("?>"|"</script"{WHITESPACE}*">"){NEWLINE}? { + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + BEGIN(INITIAL); + return T_CLOSE_TAG; /* implicit ';' at php-end tag */ +} + + +<ST_IN_SCRIPTING>"%>"{NEWLINE}? { + if (CG(asp_tags)) { + BEGIN(INITIAL); + Z_STRLEN_P(zendlval) = yyleng; + Z_TYPE_P(zendlval) = IS_STRING; + Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ + return T_CLOSE_TAG; /* implicit ';' at php-end tag */ + } else { + yyless(1); + return yytext[0]; + } +} + + +/* ("{"*|"$"*) handles { or $ at the end of a string (or the entire contents) + */ +<ST_IN_SCRIPTING>(["]{DOUBLE_QUOTES_CHARS}*("{"*|"$"*)["]) { + if (UG(unicode)) { + return zend_scan_unicode_escape_string(zendlval, yytext+1, yyleng-2, 0x22 /*'"'*/, T_CONSTANT_ENCAPSED_STRING TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext+1, yyleng-2, '"' TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; + } +} + + +<ST_IN_SCRIPTING>(b["]{DOUBLE_QUOTES_CHARS}*("{"*|"$"*)["]) { + zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; +} + + +<ST_IN_SCRIPTING>([']([^'\\]|("\\"{ANY_CHAR}))*[']) { + if (UG(unicode)) { + return zend_scan_unicode_single_string(zendlval TSRMLS_CC); + } else { + zend_scan_binary_single_string(zendlval, yytext+1, yyleng-2 TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; + } +} + + +<ST_IN_SCRIPTING>("b'"([^'\\]|("\\"{ANY_CHAR}))*[']) { + zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC); + return T_CONSTANT_ENCAPSED_STRING; +} + + +<ST_IN_SCRIPTING>["] { + BEGIN(ST_DOUBLE_QUOTES); + return '"'; +} + +<ST_IN_SCRIPTING>b["] { + BEGIN(ST_DOUBLE_QUOTES); + return T_BINARY_DOUBLE; +} + +<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} { + char *s; + int bprefix = (yytext[0] != '<') ? 1 : 0; + + CG(zend_lineno)++; + CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); + s = yytext+bprefix+3; + while ((*s == ' ') || (*s == '\t')) { + s++; + CG(heredoc_len)--; + } + + if (*s == '\'') { + s++; + CG(heredoc_len) -= 2; + + BEGIN(ST_NOWDOC); + } else { + if (*s == '"') { + s++; + CG(heredoc_len) -= 2; + } + + BEGIN(ST_HEREDOC); + } + + CG(heredoc) = estrndup(s, CG(heredoc_len)); + + /* Check for ending label on the next line */ + if (CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, CG(heredoc_len))) { + unsigned char *end = YYCURSOR + CG(heredoc_len); + + if (*end == ';') { + end++; + } + + if (*end == '\n' || *end == '\r') { + BEGIN(ST_END_HEREDOC); + } + } + + return bprefix ? T_BINARY_HEREDOC : T_START_HEREDOC; +} + + +<ST_IN_SCRIPTING>[`] { + BEGIN(ST_BACKQUOTE); + return '`'; +} + + +/* Match everything up to and including a possible ending label, so if the label + * doesn't match, it's kept with the rest of the string + * + * {HEREDOC_NEWLINE}+ handles the case of more than one newline sequence that + * couldn't be matched with HEREDOC_CHARS, because of the following label + */ +<ST_HEREDOC>{HEREDOC_CHARS}*{HEREDOC_NEWLINE}+{LABEL}";"?[\n\r] { + char *end = yytext + yyleng - 1; + + if (end[-1] == ';') { + end--; + yyleng--; + } + + if (yyleng > CG(heredoc_len) && !memcmp(end - CG(heredoc_len), CG(heredoc), CG(heredoc_len))) { + int len = yyleng - CG(heredoc_len) - 2; /* 2 for newline before and after label */ + + /* May have matched fooLABEL; make sure there's a newline before it */ + if (yytext[len] != '\n') { + if (yytext[len] != '\r') { + yyless(yyleng - 1); + yymore(); + } + } else if (len > 0 && yytext[len - 1] == '\r') { + len--; /* Windows newline */ + } + + /* Go back before label, to match in ST_END_HEREDOC state. yytext will include + * newline before label, for zend_highlight/strip, tokenizer, etc. */ + yyless(yyleng - CG(heredoc_len) - 1); /* 1 for newline after label */ + + CG(increment_lineno) = 1; /* For newline before label */ + BEGIN(ST_END_HEREDOC); + + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, len, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, len, 0 TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } + } else { + /* Go back to end of label, so the next match works correctly in case of + * a variable or another label at the beginning of the next line */ + yyless(yyleng - 1); + yymore(); + } +} + +<ST_END_HEREDOC>{ANY_CHAR} { + YYCURSOR += CG(heredoc_len) - 1; + yyleng = CG(heredoc_len); + + Z_STRVAL_P(zendlval) = CG(heredoc); + Z_STRLEN_P(zendlval) = CG(heredoc_len); + CG(heredoc) = NULL; + CG(heredoc_len) = 0; + BEGIN(ST_IN_SCRIPTING); + return T_END_HEREDOC; +} + + +/* Will only match when $ follows: "{$" */ +<ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"{" { + Z_LVAL_P(zendlval) = (long) '{'; + yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); + return T_CURLY_OPEN; +} + + +<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}+ { + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } +} + +/* "{"{2,}|"$"{2,} handles { before "{$" or literal $ before a variable or "${" + * (("{"+|"$"+)["]) handles { or $ at the end of a string + * + * Same for backquotes and heredocs, except the second case doesn't apply to + * heredocs. yyless(yyleng - 1) is used to correct taking one character too many + */ +<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}*("{"{2,}|"$"{2,}|(("{"+|"$"+)["])) { + yyless(yyleng - 1); + + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } +} + + +<ST_BACKQUOTE>{BACKQUOTE_CHARS}+ { + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } +} + +<ST_BACKQUOTE>{BACKQUOTE_CHARS}*("{"{2,}|"$"{2,}|(("{"+|"$"+)[`])) { + yyless(yyleng - 1); + + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } +} + + +/* ({HEREDOC_NEWLINE}+({LABEL}";"?)?)? handles the possible case of newline + * sequences, possibly followed by a label, that couldn't be matched with + * HEREDOC_CHARS because of a following variable or "{$" + * + * This doesn't affect real ending labels, as they are followed by a newline, + * which will result in a longer match for the correct rule if present + */ +<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)? { + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } +} + +<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{"{2,}|"$"{2,}) { + yyless(yyleng - 1); + + if (CG(literal_type) == IS_UNICODE) { + return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); + } else { + zend_scan_binary_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); + return T_ENCAPSED_AND_WHITESPACE; + } +} + + +<ST_NOWDOC>({NOWDOC_CHARS}+{NEWLINE}+|{NEWLINE}+){LABEL}";"?[\n\r] { + char *end = yytext + yyleng - 1; + + if (end[-1] == ';') { + end--; + yyleng--; + } + + if (yyleng > CG(heredoc_len) && !memcmp(end - CG(heredoc_len), CG(heredoc), CG(heredoc_len))) { + int len = yyleng - CG(heredoc_len) - 2; /* 2 for newline before and after label */ + + /* May have matched fooLABEL; make sure there's a newline before it */ + if (yytext[len] != '\n') { + if (yytext[len] != '\r') { + yyless(yyleng - 1); + yymore(); + } + } else if (len > 0 && yytext[len - 1] == '\r') { + len--; /* Windows newline */ + } + + /* Go back before label, to match in ST_END_HEREDOC state. yytext will include + * newline before label, for zend_highlight/strip, tokenizer, etc. */ + yyless(yyleng - CG(heredoc_len) - 1); /* 1 for newline after label */ + + CG(increment_lineno) = 1; /* For newline before label */ + BEGIN(ST_END_HEREDOC); + + if (!zend_copy_scanner_string(zendlval, yytext, len, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { + return 0; + } + HANDLE_NEWLINES(yytext, len); + return T_ENCAPSED_AND_WHITESPACE; + } else { + /* Go back to end of label, so the next match works correctly in case of + * another label at the beginning of the next line */ + yyless(yyleng - 1); + yymore(); + } +} + + +<ST_DOUBLE_QUOTES>["] { + BEGIN(ST_IN_SCRIPTING); + return '"'; +} + + +<ST_BACKQUOTE>[`] { + BEGIN(ST_IN_SCRIPTING); + return '`'; +} + +<*>{NULL} { return 0; } /* EOF */ + +<ST_IN_SCRIPTING,ST_VAR_OFFSET>{ANY_CHAR} { + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} + +*/ +} http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner_defs.h?r1=1.13&r2=1.14&diff_format=u Index: ZendEngine2/zend_language_scanner_defs.h diff -u ZendEngine2/zend_language_scanner_defs.h:1.13 ZendEngine2/zend_language_scanner_defs.h:1.14 --- ZendEngine2/zend_language_scanner_defs.h:1.13 Fri Jan 9 17:20:56 2009 +++ ZendEngine2/zend_language_scanner_defs.h Wed Mar 11 22:11:41 2009 @@ -1,5 +1,5 @@ -/* Generated by re2c 0.13.5 on Fri Jan 9 12:18:37 2009 */ -#line 3 "./zend_language_scanner_defs.h" +/* Generated by re2c 0.13.5 on Wed Mar 11 14:39:25 2009 */ +#line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { yycST_IN_SCRIPTING, http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_stream.h?r1=1.15&r2=1.16&diff_format=u Index: ZendEngine2/zend_stream.h diff -u ZendEngine2/zend_stream.h:1.15 ZendEngine2/zend_stream.h:1.16 --- ZendEngine2/zend_stream.h:1.15 Wed Dec 31 11:12:29 2008 +++ ZendEngine2/zend_stream.h Wed Mar 11 22:11:41 2009 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_stream.h,v 1.15 2008/12/31 11:12:29 sebastian Exp $ */ +/* $Id: zend_stream.h,v 1.16 2009/03/11 22:11:41 shire Exp $ */ #ifndef ZEND_STREAM_H #define ZEND_STREAM_H @@ -29,7 +29,7 @@ typedef size_t (*zend_stream_reader_t)(void* handle, char *buf, size_t len TSRMLS_DC); typedef void (*zend_stream_closer_t)(void* handle TSRMLS_DC); -#define ZEND_MMAP_AHEAD 16 +#define ZEND_MMAP_AHEAD 32 typedef enum { ZEND_HANDLE_FILENAME, http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/strings/highlight_file.phpt?r1=1.6&r2=1.7&diff_format=u Index: php-src/ext/standard/tests/strings/highlight_file.phpt diff -u php-src/ext/standard/tests/strings/highlight_file.phpt:1.6 php-src/ext/standard/tests/strings/highlight_file.phpt:1.7 --- php-src/ext/standard/tests/strings/highlight_file.phpt:1.6 Tue May 27 10:50:45 2008 +++ php-src/ext/standard/tests/strings/highlight_file.phpt Wed Mar 11 22:11:41 2009 @@ -49,7 +49,7 @@ </span> </code>bool(true) <code><span style="color: #000000"> -<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #FF9900">"test&nbsp;?&gt;</span> +<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"test&nbsp;?&gt;</span> </span> </code>bool(true) <code><span style="color: #000000">
« previous php.cvs (#56480) next »