felipe Tue, 13 Jul 2010 15:30:30 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=301238
Log: - Added missing tokens on ST_VAR_OFFSET state Changed paths: U php/php-src/branches/LEMON/Zend/zend_language_parser.y U php/php-src/branches/LEMON/Zend/zend_language_scanner.c U php/php-src/branches/LEMON/Zend/zend_language_scanner.l U php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h
Modified: php/php-src/branches/LEMON/Zend/zend_language_parser.y =================================================================== --- php/php-src/branches/LEMON/Zend/zend_language_parser.y 2010-07-13 15:29:30 UTC (rev 301237) +++ php/php-src/branches/LEMON/Zend/zend_language_parser.y 2010-07-13 15:30:30 UTC (rev 301238) @@ -36,7 +36,11 @@ %name zend_lang_parse %syntax_error { - zend_error(E_PARSE, "syntax error, unexpected '%.*s'", LANG_SCNG(yy_leng), LANG_SCNG(yy_text)); + if (LANG_SCNG(yy_cursor) > LANG_SCNG(yy_limit)) { + zend_error(E_PARSE, "syntax error, unexpected end of script"); + } else { + zend_error(E_PARSE, "syntax error, unexpected '%.*s'", LANG_SCNG(yy_leng), LANG_SCNG(yy_text)); + } } %stack_overflow { Modified: php/php-src/branches/LEMON/Zend/zend_language_scanner.c =================================================================== --- php/php-src/branches/LEMON/Zend/zend_language_scanner.c 2010-07-13 15:29:30 UTC (rev 301237) +++ php/php-src/branches/LEMON/Zend/zend_language_scanner.c 2010-07-13 15:30:30 UTC (rev 301238) @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Mon Jul 12 14:03:13 2010 */ +/* Generated by re2c 0.13.5 on Tue Jul 13 12:12:35 2010 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -1432,7 +1432,7 @@ yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2191 "Zend/zend_language_scanner.l" +#line 2207 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1484,7 +1484,7 @@ ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2135 "Zend/zend_language_scanner.l" +#line 2151 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return T_BACKQUOTE; @@ -1499,7 +1499,7 @@ ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2122 "Zend/zend_language_scanner.l" +#line 2138 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1655,7 +1655,7 @@ yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2141 "Zend/zend_language_scanner.l" +#line 2157 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1715,7 +1715,7 @@ ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2130 "Zend/zend_language_scanner.l" +#line 2146 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return T_QUOTE; @@ -1730,7 +1730,7 @@ ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2122 "Zend/zend_language_scanner.l" +#line 2138 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1829,7 +1829,7 @@ ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2109 "Zend/zend_language_scanner.l" +#line 2125 "Zend/zend_language_scanner.l" { YYCURSOR += CG(heredoc_len) - 1; yyleng = CG(heredoc_len); @@ -1903,7 +1903,7 @@ yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2233 "Zend/zend_language_scanner.l" +#line 2249 "Zend/zend_language_scanner.l" { int newline = 0; @@ -1989,7 +1989,7 @@ ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2122 "Zend/zend_language_scanner.l" +#line 2138 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -2269,7 +2269,7 @@ yy126: YYDEBUG(126, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1843 "Zend/zend_language_scanner.l" +#line 1859 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; @@ -3056,7 +3056,7 @@ yy205: YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1850 "Zend/zend_language_scanner.l" +#line 1866 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3097,7 +3097,7 @@ yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1957 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3174,7 +3174,7 @@ yy209: YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2012 "Zend/zend_language_scanner.l" +#line 2028 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3221,7 +3221,7 @@ ++YYCURSOR; YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2103 "Zend/zend_language_scanner.l" +#line 2119 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return T_BACKQUOTE; @@ -3232,7 +3232,7 @@ ++YYCURSOR; YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2364 "Zend/zend_language_scanner.l" +#line 2376 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3492,7 +3492,7 @@ yy247: YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3533,7 +3533,7 @@ yy253: YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1884 "Zend/zend_language_scanner.l" +#line 1900 "Zend/zend_language_scanner.l" { int doc_com; @@ -3734,7 +3734,7 @@ yy283: YYDEBUG(283, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1918 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -3866,7 +3866,7 @@ yy298: YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2054 "Zend/zend_language_scanner.l" +#line 2070 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -8383,7 +8383,7 @@ ++YYCURSOR; YYDEBUG(932, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2305 "Zend/zend_language_scanner.l" +#line 2321 "Zend/zend_language_scanner.l" { int newline = 0; @@ -8479,61 +8479,60 @@ YYDEBUG(933, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; - if (yych <= '/') { - if (yych <= ' ') { + if (yych <= '0') { + if (yych <= '!') { if (yych <= '\f') { - if (yych <= 0x08) goto yy948; + if (yych <= 0x08) goto yy956; if (yych <= '\n') goto yy944; - goto yy948; + goto yy956; } else { if (yych <= '\r') goto yy944; - if (yych <= 0x1F) goto yy948; - goto yy944; + if (yych == ' ') goto yy944; + goto yy956; } } else { if (yych <= '$') { - if (yych <= '"') goto yy948; + if (yych <= '"') goto yy946; if (yych <= '#') goto yy944; goto yy938; } else { if (yych == '\'') goto yy944; - goto yy948; + if (yych <= '/') goto yy956; } } } else { - if (yych <= '\\') { - if (yych <= '@') { - if (yych <= '0') goto yy935; + if (yych <= '^') { + if (yych <= 'Z') { if (yych <= '9') goto yy937; - goto yy948; + if (yych <= '@') goto yy956; + goto yy954; } else { - if (yych <= 'Z') goto yy946; if (yych <= '[') goto yy940; - goto yy944; + if (yych <= '\\') goto yy944; + if (yych <= ']') goto yy942; + goto yy956; } } else { - if (yych <= '_') { - if (yych <= ']') goto yy942; - if (yych <= '^') goto yy948; - goto yy946; + if (yych <= '{') { + if (yych == '`') goto yy952; + if (yych <= 'z') goto yy954; + goto yy948; } else { - if (yych <= '`') goto yy948; - if (yych <= 'z') goto yy946; - if (yych <= '~') goto yy948; - goto yy946; + if (yych == '}') goto yy950; + if (yych <= '~') goto yy956; + goto yy954; } } } -yy935: YYDEBUG(935, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '/') goto yy936; - if (yych <= '9') goto yy958; + if (yych <= '9') goto yy966; } else { - if (yych <= 'X') goto yy956; - if (yych == 'x') goto yy956; + if (yych <= 'X') goto yy964; + if (yych == 'x') goto yy964; } yy936: YYDEBUG(936, *YYCURSOR); @@ -8550,27 +8549,27 @@ } return T_NUM_STRING; } -#line 8554 "Zend/zend_language_scanner.c" +#line 8553 "Zend/zend_language_scanner.c" yy937: YYDEBUG(937, *YYCURSOR); yych = *++YYCURSOR; - goto yy955; + goto yy963; yy938: YYDEBUG(938, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { if (yych <= '@') goto yy939; - if (yych <= 'Z') goto yy951; - if (yych >= '_') goto yy951; + if (yych <= 'Z') goto yy959; + if (yych >= '_') goto yy959; } else { if (yych <= '`') goto yy939; - if (yych <= 'z') goto yy951; - if (yych >= 0x7F) goto yy951; + if (yych <= 'z') goto yy959; + if (yych >= 0x7F) goto yy959; } yy939: YYDEBUG(939, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2364 "Zend/zend_language_scanner.l" +#line 2376 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -8579,7 +8578,7 @@ zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 8583 "Zend/zend_language_scanner.c" +#line 8582 "Zend/zend_language_scanner.c" yy940: YYDEBUG(940, *YYCURSOR); ++YYCURSOR; @@ -8589,7 +8588,7 @@ { return T_LBRACKET; } -#line 8593 "Zend/zend_language_scanner.c" +#line 8592 "Zend/zend_language_scanner.c" yy942: YYDEBUG(942, *YYCURSOR); ++YYCURSOR; @@ -8600,7 +8599,7 @@ yy_pop_state(TSRMLS_C); return T_RBRACKET; } -#line 8604 "Zend/zend_language_scanner.c" +#line 8603 "Zend/zend_language_scanner.c" yy944: YYDEBUG(944, *YYCURSOR); ++YYCURSOR; @@ -8613,60 +8612,100 @@ yy_pop_state(TSRMLS_C); return T_ENCAPSED_AND_WHITESPACE; } -#line 8617 "Zend/zend_language_scanner.c" +#line 8616 "Zend/zend_language_scanner.c" yy946: YYDEBUG(946, *YYCURSOR); ++YYCURSOR; - yych = *YYCURSOR; - goto yy950; -yy947: YYDEBUG(947, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1843 "Zend/zend_language_scanner.l" { + return T_QUOTE; +} +#line 8626 "Zend/zend_language_scanner.c" +yy948: + YYDEBUG(948, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(949, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1847 "Zend/zend_language_scanner.l" + { + return T_LBRACE; +} +#line 8636 "Zend/zend_language_scanner.c" +yy950: + YYDEBUG(950, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(951, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1851 "Zend/zend_language_scanner.l" + { + return T_RBRACE; +} +#line 8646 "Zend/zend_language_scanner.c" +yy952: + YYDEBUG(952, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(953, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1855 "Zend/zend_language_scanner.l" + { + return T_BACKQUOTE; +} +#line 8656 "Zend/zend_language_scanner.c" +yy954: + YYDEBUG(954, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy958; +yy955: + YYDEBUG(955, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1859 "Zend/zend_language_scanner.l" + { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 8632 "Zend/zend_language_scanner.c" -yy948: - YYDEBUG(948, *YYCURSOR); +#line 8671 "Zend/zend_language_scanner.c" +yy956: + YYDEBUG(956, *YYCURSOR); yych = *++YYCURSOR; goto yy939; -yy949: - YYDEBUG(949, *YYCURSOR); +yy957: + YYDEBUG(957, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy950: - YYDEBUG(950, *YYCURSOR); +yy958: + YYDEBUG(958, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy949; + goto yy957; } - goto yy947; -yy951: - YYDEBUG(951, *YYCURSOR); + goto yy955; +yy959: + YYDEBUG(959, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(952, *YYCURSOR); + YYDEBUG(960, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy951; + if (yych >= '0') goto yy959; } else { - if (yych <= '@') goto yy953; - if (yych <= 'Z') goto yy951; + if (yych <= '@') goto yy961; + if (yych <= 'Z') goto yy959; } } else { if (yych <= '`') { - if (yych <= '_') goto yy951; + if (yych <= '_') goto yy959; } else { - if (yych <= 'z') goto yy951; - if (yych >= 0x7F) goto yy951; + if (yych <= 'z') goto yy959; + if (yych >= 0x7F) goto yy959; } } -yy953: - YYDEBUG(953, *YYCURSOR); +yy961: + YYDEBUG(961, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1821 "Zend/zend_language_scanner.l" { @@ -8674,37 +8713,37 @@ zendlval->type = IS_STRING; return T_VARIABLE; } -#line 8678 "Zend/zend_language_scanner.c" -yy954: - YYDEBUG(954, *YYCURSOR); +#line 8717 "Zend/zend_language_scanner.c" +yy962: + YYDEBUG(962, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy955: - YYDEBUG(955, *YYCURSOR); +yy963: + YYDEBUG(963, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy954; + goto yy962; } goto yy936; -yy956: - YYDEBUG(956, *YYCURSOR); +yy964: + YYDEBUG(964, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy961; + goto yy969; } - YYDEBUG(957, *YYCURSOR); + YYDEBUG(965, *YYCURSOR); YYCURSOR = YYMARKER; goto yy936; -yy958: - YYDEBUG(958, *YYCURSOR); +yy966: + YYDEBUG(966, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(959, *YYCURSOR); - if (yych <= '/') goto yy960; - if (yych <= '9') goto yy958; -yy960: - YYDEBUG(960, *YYCURSOR); + YYDEBUG(967, *YYCURSOR); + if (yych <= '/') goto yy968; + if (yych <= '9') goto yy966; +yy968: + YYDEBUG(968, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1534 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ @@ -8713,19 +8752,19 @@ zendlval->type = IS_STRING; return T_NUM_STRING; } -#line 8717 "Zend/zend_language_scanner.c" -yy961: - YYDEBUG(961, *YYCURSOR); +#line 8756 "Zend/zend_language_scanner.c" +yy969: + YYDEBUG(969, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(962, *YYCURSOR); + YYDEBUG(970, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy961; + goto yy969; } - goto yy960; + goto yy968; } } -#line 2373 "Zend/zend_language_scanner.l" +#line 2385 "Zend/zend_language_scanner.l" } Modified: php/php-src/branches/LEMON/Zend/zend_language_scanner.l =================================================================== --- php/php-src/branches/LEMON/Zend/zend_language_scanner.l 2010-07-13 15:29:30 UTC (rev 301237) +++ php/php-src/branches/LEMON/Zend/zend_language_scanner.l 2010-07-13 15:30:30 UTC (rev 301238) @@ -1840,6 +1840,22 @@ return T_ENCAPSED_AND_WHITESPACE; } +<ST_VAR_OFFSET>'"' { + return T_QUOTE; +} + +<ST_VAR_OFFSET>'{' { + return T_LBRACE; +} + +<ST_VAR_OFFSET>'}' { + return T_RBRACE; +} + +<ST_VAR_OFFSET>'`' { + return T_BACKQUOTE; +} + <ST_IN_SCRIPTING,ST_VAR_OFFSET>{LABEL} { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; @@ -2357,10 +2373,6 @@ return T_ENCAPSED_AND_WHITESPACE; } -<ST_IN_SCRIPTING>'"' { - return T_QUOTE; -} - <ST_IN_SCRIPTING,ST_VAR_OFFSET>{ANY_CHAR} { if (YYCURSOR > YYLIMIT) { return 0; Modified: php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h =================================================================== --- php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h 2010-07-13 15:29:30 UTC (rev 301237) +++ php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h 2010-07-13 15:30:30 UTC (rev 301238) @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Mon Jul 12 16:24:11 2010 */ +/* Generated by re2c 0.13.5 on Tue Jul 13 12:12:35 2010 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php