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