cvs: ZendEngine2 / zend_language_scanner.c zend_language_scanner_defs.h /tests bug47516.phpt
[email protected] ("Dmitry Stogov") Thu, 26 Mar 2009 12:38:38 -0000
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsdmitry1238071118@cvsserver> |
dmitry Thu Mar 26 12:38:38 2009 UTC
Modified files:
/ZendEngine2 zend_language_scanner.c zend_language_scanner_defs.h
/ZendEngine2/tests bug47516.phpt
Log:
Fixed bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
dmitry-20090326123838.txt
(text/plain, 30.5 KB)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.c?r1=1.24&r2=1.25&diff_format=u
Index: ZendEngine2/zend_language_scanner.c
diff -u ZendEngine2/zend_language_scanner.c:1.24 ZendEngine2/zend_language_scanner.c:1.25
--- ZendEngine2/zend_language_scanner.c:1.24 Wed Mar 25 15:24:51 2009
+++ ZendEngine2/zend_language_scanner.c Thu Mar 26 12:38:38 2009
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Mar 25 18:24:36 2009 */
+/* Generated by re2c 0.13.5 on Thu Mar 26 15:38:15 2009 */
#line 1 "Zend/zend_language_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -23,7 +23,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.c,v 1.24 2009/03/25 15:24:51 dmitry Exp $ */
+/* $Id: zend_language_scanner.c,v 1.25 2009/03/26 12:38:38 dmitry Exp $ */
#if 0
# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
@@ -1425,7 +1425,7 @@
++YYCURSOR;
YYDEBUG(3, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
#line 1431 "Zend/zend_language_scanner.c"
yy4:
@@ -1884,7 +1884,7 @@
yy58:
YYDEBUG(58, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2548 "Zend/zend_language_scanner.l"
+#line 2552 "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);
@@ -1931,7 +1931,7 @@
yy61:
YYDEBUG(61, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2514 "Zend/zend_language_scanner.l"
+#line 2518 "Zend/zend_language_scanner.l"
{
Z_LVAL_P(zendlval) = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1980,7 +1980,7 @@
++YYCURSOR;
YYDEBUG(67, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2645 "Zend/zend_language_scanner.l"
+#line 2649 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '`';
@@ -2058,7 +2058,7 @@
yy73:
YYDEBUG(73, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2557 "Zend/zend_language_scanner.l"
+#line 2561 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
@@ -2446,7 +2446,7 @@
yy113:
YYDEBUG(113, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2521 "Zend/zend_language_scanner.l"
+#line 2525 "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);
@@ -2494,7 +2494,7 @@
yy116:
YYDEBUG(116, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2514 "Zend/zend_language_scanner.l"
+#line 2518 "Zend/zend_language_scanner.l"
{
Z_LVAL_P(zendlval) = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2542,7 +2542,7 @@
++YYCURSOR;
YYDEBUG(122, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2639 "Zend/zend_language_scanner.l"
+#line 2643 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '"';
@@ -2623,7 +2623,7 @@
yy128:
YYDEBUG(128, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2536 "Zend/zend_language_scanner.l"
+#line 2540 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
@@ -2756,7 +2756,7 @@
++YYCURSOR;
YYDEBUG(146, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
#line 2762 "Zend/zend_language_scanner.c"
yy147:
@@ -2764,7 +2764,7 @@
++YYCURSOR;
YYDEBUG(148, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2500 "Zend/zend_language_scanner.l"
+#line 2504 "Zend/zend_language_scanner.l"
{
YYCURSOR += CG(heredoc_len) - 1;
yyleng = CG(heredoc_len);
@@ -2846,7 +2846,7 @@
yy151:
YYDEBUG(151, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2576 "Zend/zend_language_scanner.l"
+#line 2580 "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);
@@ -2906,7 +2906,7 @@
yy155:
YYDEBUG(155, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2514 "Zend/zend_language_scanner.l"
+#line 2518 "Zend/zend_language_scanner.l"
{
Z_LVAL_P(zendlval) = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -3163,7 +3163,7 @@
yy174:
YYDEBUG(174, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2585 "Zend/zend_language_scanner.l"
+#line 2589 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
@@ -3273,7 +3273,7 @@
++YYCURSOR;
YYDEBUG(182, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2458 "Zend/zend_language_scanner.l"
+#line 2462 "Zend/zend_language_scanner.l"
{
char *end = yytext + yyleng - 1;
@@ -3849,7 +3849,7 @@
++YYCURSOR;
YYDEBUG(216, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
#line 3855 "Zend/zend_language_scanner.c"
yy217:
@@ -4514,7 +4514,7 @@
yy274:
YYDEBUG(274, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2652 "Zend/zend_language_scanner.l"
+#line 2656 "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;
@@ -4525,7 +4525,7 @@
++YYCURSOR;
YYDEBUG(276, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2446 "Zend/zend_language_scanner.l"
+#line 2450 "Zend/zend_language_scanner.l"
{
BEGIN(ST_BACKQUOTE);
return '`';
@@ -5309,6 +5309,10 @@
char *s;
int bprefix = (yytext[0] != '<') ? 1 : 0;
+ /* save old heredoc label */
+ Z_STRVAL_P(zendlval) = CG(heredoc);
+ Z_STRLEN_P(zendlval) = CG(heredoc_len);
+
CG(zend_lineno)++;
CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
s = yytext+bprefix+3;
@@ -5348,7 +5352,7 @@
return bprefix ? T_BINARY_HEREDOC : T_START_HEREDOC;
}
-#line 5352 "Zend/zend_language_scanner.c"
+#line 5356 "Zend/zend_language_scanner.c"
yy385:
YYDEBUG(385, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5392,7 +5396,7 @@
{
return T_IS_NOT_IDENTICAL;
}
-#line 5396 "Zend/zend_language_scanner.c"
+#line 5400 "Zend/zend_language_scanner.c"
yy391:
YYDEBUG(391, *YYCURSOR);
++YYCURSOR;
@@ -5402,7 +5406,7 @@
{
return T_PLUS_EQUAL;
}
-#line 5406 "Zend/zend_language_scanner.c"
+#line 5410 "Zend/zend_language_scanner.c"
yy393:
YYDEBUG(393, *YYCURSOR);
++YYCURSOR;
@@ -5412,7 +5416,7 @@
{
return T_INC;
}
-#line 5416 "Zend/zend_language_scanner.c"
+#line 5420 "Zend/zend_language_scanner.c"
yy395:
YYDEBUG(395, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5435,7 +5439,7 @@
{
return T_LIST;
}
-#line 5439 "Zend/zend_language_scanner.c"
+#line 5443 "Zend/zend_language_scanner.c"
yy399:
YYDEBUG(399, *YYCURSOR);
++YYCURSOR;
@@ -5446,7 +5450,7 @@
{
return T_IS_EQUAL;
}
-#line 5450 "Zend/zend_language_scanner.c"
+#line 5454 "Zend/zend_language_scanner.c"
yy401:
YYDEBUG(401, *YYCURSOR);
++YYCURSOR;
@@ -5456,7 +5460,7 @@
{
return T_DOUBLE_ARROW;
}
-#line 5460 "Zend/zend_language_scanner.c"
+#line 5464 "Zend/zend_language_scanner.c"
yy403:
YYDEBUG(403, *YYCURSOR);
++YYCURSOR;
@@ -5466,7 +5470,7 @@
{
return T_IS_IDENTICAL;
}
-#line 5470 "Zend/zend_language_scanner.c"
+#line 5474 "Zend/zend_language_scanner.c"
yy405:
YYDEBUG(405, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5598,7 +5602,7 @@
}
return T_NS_C;
}
-#line 5602 "Zend/zend_language_scanner.c"
+#line 5606 "Zend/zend_language_scanner.c"
yy424:
YYDEBUG(424, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5645,7 +5649,7 @@
zendlval->type = IS_STRING;
return T_DIR;
}
-#line 5649 "Zend/zend_language_scanner.c"
+#line 5653 "Zend/zend_language_scanner.c"
yy429:
YYDEBUG(429, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5676,7 +5680,7 @@
Z_TYPE_P(zendlval) = IS_LONG;
return T_LINE;
}
-#line 5680 "Zend/zend_language_scanner.c"
+#line 5684 "Zend/zend_language_scanner.c"
yy435:
YYDEBUG(435, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5760,7 +5764,7 @@
}
return T_METHOD_C;
}
-#line 5764 "Zend/zend_language_scanner.c"
+#line 5768 "Zend/zend_language_scanner.c"
yy443:
YYDEBUG(443, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5826,7 +5830,7 @@
}
return T_FUNC_C;
}
-#line 5830 "Zend/zend_language_scanner.c"
+#line 5834 "Zend/zend_language_scanner.c"
yy454:
YYDEBUG(454, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5856,7 +5860,7 @@
ZVAL_RT_STRING(zendlval, filename, 1);
return T_FILE;
}
-#line 5860 "Zend/zend_language_scanner.c"
+#line 5864 "Zend/zend_language_scanner.c"
yy459:
YYDEBUG(459, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5901,7 +5905,7 @@
}
return T_CLASS_C;
}
-#line 5905 "Zend/zend_language_scanner.c"
+#line 5909 "Zend/zend_language_scanner.c"
yy466:
YYDEBUG(466, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5967,7 +5971,7 @@
{
return T_HALT_COMPILER;
}
-#line 5971 "Zend/zend_language_scanner.c"
+#line 5975 "Zend/zend_language_scanner.c"
yy479:
YYDEBUG(479, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5991,7 +5995,7 @@
{
return T_USE;
}
-#line 5995 "Zend/zend_language_scanner.c"
+#line 5999 "Zend/zend_language_scanner.c"
yy483:
YYDEBUG(483, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6014,7 +6018,7 @@
{
return T_UNSET;
}
-#line 6018 "Zend/zend_language_scanner.c"
+#line 6022 "Zend/zend_language_scanner.c"
yy487:
YYDEBUG(487, *YYCURSOR);
++YYCURSOR;
@@ -6190,7 +6194,7 @@
{
return T_INT_CAST;
}
-#line 6194 "Zend/zend_language_scanner.c"
+#line 6198 "Zend/zend_language_scanner.c"
yy505:
YYDEBUG(505, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6238,7 +6242,7 @@
{
return T_DOUBLE_CAST;
}
-#line 6242 "Zend/zend_language_scanner.c"
+#line 6246 "Zend/zend_language_scanner.c"
yy514:
YYDEBUG(514, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6312,7 +6316,7 @@
{
return T_STRING_CAST;
}
-#line 6316 "Zend/zend_language_scanner.c"
+#line 6320 "Zend/zend_language_scanner.c"
yy528:
YYDEBUG(528, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6349,7 +6353,7 @@
{
return T_ARRAY_CAST;
}
-#line 6353 "Zend/zend_language_scanner.c"
+#line 6357 "Zend/zend_language_scanner.c"
yy535:
YYDEBUG(535, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6391,7 +6395,7 @@
{
return T_OBJECT_CAST;
}
-#line 6395 "Zend/zend_language_scanner.c"
+#line 6399 "Zend/zend_language_scanner.c"
yy543:
YYDEBUG(543, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6436,7 +6440,7 @@
{
return T_BOOL_CAST;
}
-#line 6440 "Zend/zend_language_scanner.c"
+#line 6444 "Zend/zend_language_scanner.c"
yy551:
YYDEBUG(551, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6484,7 +6488,7 @@
{
return T_BINARY_CAST;
}
-#line 6488 "Zend/zend_language_scanner.c"
+#line 6492 "Zend/zend_language_scanner.c"
yy560:
YYDEBUG(560, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6545,7 +6549,7 @@
{
return T_UNICODE_CAST;
}
-#line 6549 "Zend/zend_language_scanner.c"
+#line 6553 "Zend/zend_language_scanner.c"
yy570:
YYDEBUG(570, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6572,7 +6576,7 @@
{
return T_UNSET_CAST;
}
-#line 6576 "Zend/zend_language_scanner.c"
+#line 6580 "Zend/zend_language_scanner.c"
yy575:
YYDEBUG(575, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6590,7 +6594,7 @@
{
return T_VAR;
}
-#line 6594 "Zend/zend_language_scanner.c"
+#line 6598 "Zend/zend_language_scanner.c"
yy578:
YYDEBUG(578, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6614,7 +6618,7 @@
{
return T_NEW;
}
-#line 6618 "Zend/zend_language_scanner.c"
+#line 6622 "Zend/zend_language_scanner.c"
yy582:
YYDEBUG(582, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6657,7 +6661,7 @@
{
return T_NAMESPACE;
}
-#line 6661 "Zend/zend_language_scanner.c"
+#line 6665 "Zend/zend_language_scanner.c"
yy590:
YYDEBUG(590, *YYCURSOR);
++YYCURSOR;
@@ -6667,7 +6671,7 @@
{
return T_PAAMAYIM_NEKUDOTAYIM;
}
-#line 6671 "Zend/zend_language_scanner.c"
+#line 6675 "Zend/zend_language_scanner.c"
yy592:
YYDEBUG(592, *YYCURSOR);
++YYCURSOR;
@@ -6693,7 +6697,7 @@
{
return T_MINUS_EQUAL;
}
-#line 6697 "Zend/zend_language_scanner.c"
+#line 6701 "Zend/zend_language_scanner.c"
yy596:
YYDEBUG(596, *YYCURSOR);
++YYCURSOR;
@@ -6703,7 +6707,7 @@
{
return T_DEC;
}
-#line 6707 "Zend/zend_language_scanner.c"
+#line 6711 "Zend/zend_language_scanner.c"
yy598:
YYDEBUG(598, *YYCURSOR);
++YYCURSOR;
@@ -6714,7 +6718,7 @@
yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
return T_OBJECT_OPERATOR;
}
-#line 6718 "Zend/zend_language_scanner.c"
+#line 6722 "Zend/zend_language_scanner.c"
yy600:
YYDEBUG(600, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6763,7 +6767,7 @@
{
return T_PUBLIC;
}
-#line 6767 "Zend/zend_language_scanner.c"
+#line 6771 "Zend/zend_language_scanner.c"
yy607:
YYDEBUG(607, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6822,7 +6826,7 @@
{
return T_PROTECTED;
}
-#line 6826 "Zend/zend_language_scanner.c"
+#line 6830 "Zend/zend_language_scanner.c"
yy616:
YYDEBUG(616, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6856,7 +6860,7 @@
{
return T_PRIVATE;
}
-#line 6860 "Zend/zend_language_scanner.c"
+#line 6864 "Zend/zend_language_scanner.c"
yy622:
YYDEBUG(622, *YYCURSOR);
++YYCURSOR;
@@ -6869,7 +6873,7 @@
{
return T_PRINT;
}
-#line 6873 "Zend/zend_language_scanner.c"
+#line 6877 "Zend/zend_language_scanner.c"
yy624:
YYDEBUG(624, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6898,7 +6902,7 @@
{
return T_GOTO;
}
-#line 6902 "Zend/zend_language_scanner.c"
+#line 6906 "Zend/zend_language_scanner.c"
yy629:
YYDEBUG(629, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6926,7 +6930,7 @@
{
return T_GLOBAL;
}
-#line 6930 "Zend/zend_language_scanner.c"
+#line 6934 "Zend/zend_language_scanner.c"
yy634:
YYDEBUG(634, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6945,7 +6949,7 @@
BEGIN(ST_DOUBLE_QUOTES);
return T_BINARY_DOUBLE;
}
-#line 6949 "Zend/zend_language_scanner.c"
+#line 6953 "Zend/zend_language_scanner.c"
yy637:
YYDEBUG(637, *YYCURSOR);
++YYCURSOR;
@@ -6982,7 +6986,7 @@
{
return T_BREAK;
}
-#line 6986 "Zend/zend_language_scanner.c"
+#line 6990 "Zend/zend_language_scanner.c"
yy644:
YYDEBUG(644, *YYCURSOR);
++YYCURSOR;
@@ -7000,7 +7004,7 @@
zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC);
return T_CONSTANT_ENCAPSED_STRING;
}
-#line 7004 "Zend/zend_language_scanner.c"
+#line 7008 "Zend/zend_language_scanner.c"
yy647:
YYDEBUG(647, *YYCURSOR);
++YYCURSOR;
@@ -7080,7 +7084,7 @@
zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC);
return T_CONSTANT_ENCAPSED_STRING;
}
-#line 7084 "Zend/zend_language_scanner.c"
+#line 7088 "Zend/zend_language_scanner.c"
yy656:
YYDEBUG(656, *YYCURSOR);
++YYCURSOR;
@@ -7131,7 +7135,7 @@
{
return T_SWITCH;
}
-#line 7135 "Zend/zend_language_scanner.c"
+#line 7139 "Zend/zend_language_scanner.c"
yy665:
YYDEBUG(665, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7159,7 +7163,7 @@
{
return T_STATIC;
}
-#line 7163 "Zend/zend_language_scanner.c"
+#line 7167 "Zend/zend_language_scanner.c"
yy670:
YYDEBUG(670, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7190,7 +7194,7 @@
{
return T_AS;
}
-#line 7194 "Zend/zend_language_scanner.c"
+#line 7198 "Zend/zend_language_scanner.c"
yy675:
YYDEBUG(675, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7213,7 +7217,7 @@
{
return T_ARRAY;
}
-#line 7217 "Zend/zend_language_scanner.c"
+#line 7221 "Zend/zend_language_scanner.c"
yy679:
YYDEBUG(679, *YYCURSOR);
++YYCURSOR;
@@ -7226,7 +7230,7 @@
{
return T_LOGICAL_AND;
}
-#line 7230 "Zend/zend_language_scanner.c"
+#line 7234 "Zend/zend_language_scanner.c"
yy681:
YYDEBUG(681, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7264,7 +7268,7 @@
{
return T_ABSTRACT;
}
-#line 7268 "Zend/zend_language_scanner.c"
+#line 7272 "Zend/zend_language_scanner.c"
yy688:
YYDEBUG(688, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7292,7 +7296,7 @@
{
return T_WHILE;
}
-#line 7296 "Zend/zend_language_scanner.c"
+#line 7300 "Zend/zend_language_scanner.c"
yy693:
YYDEBUG(693, *YYCURSOR);
++YYCURSOR;
@@ -7305,7 +7309,7 @@
{
return T_IF;
}
-#line 7309 "Zend/zend_language_scanner.c"
+#line 7313 "Zend/zend_language_scanner.c"
yy695:
YYDEBUG(695, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7361,7 +7365,7 @@
{
return T_ISSET;
}
-#line 7365 "Zend/zend_language_scanner.c"
+#line 7369 "Zend/zend_language_scanner.c"
yy702:
YYDEBUG(702, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7419,7 +7423,7 @@
{
return T_INCLUDE;
}
-#line 7423 "Zend/zend_language_scanner.c"
+#line 7427 "Zend/zend_language_scanner.c"
yy710:
YYDEBUG(710, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7452,7 +7456,7 @@
{
return T_INCLUDE_ONCE;
}
-#line 7456 "Zend/zend_language_scanner.c"
+#line 7460 "Zend/zend_language_scanner.c"
yy716:
YYDEBUG(716, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7490,7 +7494,7 @@
{
return T_INTERFACE;
}
-#line 7494 "Zend/zend_language_scanner.c"
+#line 7498 "Zend/zend_language_scanner.c"
yy723:
YYDEBUG(723, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7533,7 +7537,7 @@
{
return T_INSTANCEOF;
}
-#line 7537 "Zend/zend_language_scanner.c"
+#line 7541 "Zend/zend_language_scanner.c"
yy731:
YYDEBUG(731, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7581,7 +7585,7 @@
{
return T_IMPLEMENTS;
}
-#line 7585 "Zend/zend_language_scanner.c"
+#line 7589 "Zend/zend_language_scanner.c"
yy740:
YYDEBUG(740, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7605,7 +7609,7 @@
{
return T_TRY;
}
-#line 7609 "Zend/zend_language_scanner.c"
+#line 7613 "Zend/zend_language_scanner.c"
yy744:
YYDEBUG(744, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7628,7 +7632,7 @@
{
return T_THROW;
}
-#line 7632 "Zend/zend_language_scanner.c"
+#line 7636 "Zend/zend_language_scanner.c"
yy748:
YYDEBUG(748, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7693,7 +7697,7 @@
{
return T_REQUIRE;
}
-#line 7697 "Zend/zend_language_scanner.c"
+#line 7701 "Zend/zend_language_scanner.c"
yy756:
YYDEBUG(756, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7726,7 +7730,7 @@
{
return T_REQUIRE_ONCE;
}
-#line 7730 "Zend/zend_language_scanner.c"
+#line 7734 "Zend/zend_language_scanner.c"
yy762:
YYDEBUG(762, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7749,7 +7753,7 @@
{
return T_RETURN;
}
-#line 7753 "Zend/zend_language_scanner.c"
+#line 7757 "Zend/zend_language_scanner.c"
yy766:
YYDEBUG(766, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7834,7 +7838,7 @@
{
return T_CONTINUE;
}
-#line 7838 "Zend/zend_language_scanner.c"
+#line 7842 "Zend/zend_language_scanner.c"
yy777:
YYDEBUG(777, *YYCURSOR);
++YYCURSOR;
@@ -7847,7 +7851,7 @@
{
return T_CONST;
}
-#line 7851 "Zend/zend_language_scanner.c"
+#line 7855 "Zend/zend_language_scanner.c"
yy779:
YYDEBUG(779, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7876,7 +7880,7 @@
{
return T_CLONE;
}
-#line 7880 "Zend/zend_language_scanner.c"
+#line 7884 "Zend/zend_language_scanner.c"
yy784:
YYDEBUG(784, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7894,7 +7898,7 @@
{
return T_CLASS;
}
-#line 7898 "Zend/zend_language_scanner.c"
+#line 7902 "Zend/zend_language_scanner.c"
yy787:
YYDEBUG(787, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7918,7 +7922,7 @@
{
return T_CASE;
}
-#line 7922 "Zend/zend_language_scanner.c"
+#line 7926 "Zend/zend_language_scanner.c"
yy791:
YYDEBUG(791, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7936,7 +7940,7 @@
{
return T_CATCH;
}
-#line 7940 "Zend/zend_language_scanner.c"
+#line 7944 "Zend/zend_language_scanner.c"
yy794:
YYDEBUG(794, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7991,7 +7995,7 @@
{
return T_FUNCTION;
}
-#line 7995 "Zend/zend_language_scanner.c"
+#line 7999 "Zend/zend_language_scanner.c"
yy804:
YYDEBUG(804, *YYCURSOR);
++YYCURSOR;
@@ -8019,7 +8023,7 @@
{
return T_FOR;
}
-#line 8023 "Zend/zend_language_scanner.c"
+#line 8027 "Zend/zend_language_scanner.c"
yy806:
YYDEBUG(806, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8047,7 +8051,7 @@
{
return T_FOREACH;
}
-#line 8051 "Zend/zend_language_scanner.c"
+#line 8055 "Zend/zend_language_scanner.c"
yy811:
YYDEBUG(811, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8070,7 +8074,7 @@
{
return T_FINAL;
}
-#line 8074 "Zend/zend_language_scanner.c"
+#line 8078 "Zend/zend_language_scanner.c"
yy815:
YYDEBUG(815, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8105,7 +8109,7 @@
{
return T_DO;
}
-#line 8109 "Zend/zend_language_scanner.c"
+#line 8113 "Zend/zend_language_scanner.c"
yy819:
YYDEBUG(819, *YYCURSOR);
++YYCURSOR;
@@ -8118,7 +8122,7 @@
{
return T_EXIT;
}
-#line 8122 "Zend/zend_language_scanner.c"
+#line 8126 "Zend/zend_language_scanner.c"
yy821:
YYDEBUG(821, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8157,7 +8161,7 @@
{
return T_DEFAULT;
}
-#line 8161 "Zend/zend_language_scanner.c"
+#line 8165 "Zend/zend_language_scanner.c"
yy828:
YYDEBUG(828, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8185,7 +8189,7 @@
{
return T_DECLARE;
}
-#line 8189 "Zend/zend_language_scanner.c"
+#line 8193 "Zend/zend_language_scanner.c"
yy833:
YYDEBUG(833, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8269,7 +8273,7 @@
{
return T_EXTENDS;
}
-#line 8273 "Zend/zend_language_scanner.c"
+#line 8277 "Zend/zend_language_scanner.c"
yy846:
YYDEBUG(846, *YYCURSOR);
++YYCURSOR;
@@ -8282,7 +8286,7 @@
{
return T_EXIT;
}
-#line 8286 "Zend/zend_language_scanner.c"
+#line 8290 "Zend/zend_language_scanner.c"
yy848:
YYDEBUG(848, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8300,7 +8304,7 @@
{
return T_EVAL;
}
-#line 8304 "Zend/zend_language_scanner.c"
+#line 8308 "Zend/zend_language_scanner.c"
yy851:
YYDEBUG(851, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8374,7 +8378,7 @@
{
return T_ENDWHILE;
}
-#line 8378 "Zend/zend_language_scanner.c"
+#line 8382 "Zend/zend_language_scanner.c"
yy862:
YYDEBUG(862, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8407,7 +8411,7 @@
{
return T_ENDSWITCH;
}
-#line 8411 "Zend/zend_language_scanner.c"
+#line 8415 "Zend/zend_language_scanner.c"
yy868:
YYDEBUG(868, *YYCURSOR);
++YYCURSOR;
@@ -8420,7 +8424,7 @@
{
return T_ENDIF;
}
-#line 8424 "Zend/zend_language_scanner.c"
+#line 8428 "Zend/zend_language_scanner.c"
yy870:
YYDEBUG(870, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8453,7 +8457,7 @@
{
return T_ENDFOR;
}
-#line 8457 "Zend/zend_language_scanner.c"
+#line 8461 "Zend/zend_language_scanner.c"
yy873:
YYDEBUG(873, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8481,7 +8485,7 @@
{
return T_ENDFOREACH;
}
-#line 8485 "Zend/zend_language_scanner.c"
+#line 8489 "Zend/zend_language_scanner.c"
yy878:
YYDEBUG(878, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8519,7 +8523,7 @@
{
return T_ENDDECLARE;
}
-#line 8523 "Zend/zend_language_scanner.c"
+#line 8527 "Zend/zend_language_scanner.c"
yy885:
YYDEBUG(885, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8542,7 +8546,7 @@
{
return T_EMPTY;
}
-#line 8546 "Zend/zend_language_scanner.c"
+#line 8550 "Zend/zend_language_scanner.c"
yy889:
YYDEBUG(889, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8575,7 +8579,7 @@
{
return T_ELSE;
}
-#line 8579 "Zend/zend_language_scanner.c"
+#line 8583 "Zend/zend_language_scanner.c"
yy892:
YYDEBUG(892, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8593,7 +8597,7 @@
{
return T_ELSEIF;
}
-#line 8597 "Zend/zend_language_scanner.c"
+#line 8601 "Zend/zend_language_scanner.c"
yy895:
YYDEBUG(895, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8611,7 +8615,7 @@
{
return T_ECHO;
}
-#line 8615 "Zend/zend_language_scanner.c"
+#line 8619 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_LOOKING_FOR_PROPERTY:
@@ -8686,9 +8690,9 @@
++YYCURSOR;
YYDEBUG(901, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8692 "Zend/zend_language_scanner.c"
+#line 8696 "Zend/zend_language_scanner.c"
yy902:
YYDEBUG(902, *YYCURSOR);
++YYCURSOR;
@@ -8705,7 +8709,7 @@
HANDLE_NEWLINES(yytext, yyleng);
return T_WHITESPACE;
}
-#line 8709 "Zend/zend_language_scanner.c"
+#line 8713 "Zend/zend_language_scanner.c"
yy904:
YYDEBUG(904, *YYCURSOR);
++YYCURSOR;
@@ -8719,7 +8723,7 @@
yy_pop_state(TSRMLS_C);
goto restart;
}
-#line 8723 "Zend/zend_language_scanner.c"
+#line 8727 "Zend/zend_language_scanner.c"
yy906:
YYDEBUG(906, *YYCURSOR);
++YYCURSOR;
@@ -8739,7 +8743,7 @@
}
return T_STRING;
}
-#line 8743 "Zend/zend_language_scanner.c"
+#line 8747 "Zend/zend_language_scanner.c"
yy908:
YYDEBUG(908, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8764,7 +8768,7 @@
{
return T_OBJECT_OPERATOR;
}
-#line 8768 "Zend/zend_language_scanner.c"
+#line 8772 "Zend/zend_language_scanner.c"
yy913:
YYDEBUG(913, *YYCURSOR);
++YYCURSOR;
@@ -8837,9 +8841,9 @@
++YYCURSOR;
YYDEBUG(918, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8843 "Zend/zend_language_scanner.c"
+#line 8847 "Zend/zend_language_scanner.c"
yy919:
YYDEBUG(919, *YYCURSOR);
++YYCURSOR;
@@ -8860,7 +8864,7 @@
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
return T_STRING_VARNAME;
}
-#line 8864 "Zend/zend_language_scanner.c"
+#line 8868 "Zend/zend_language_scanner.c"
yy921:
YYDEBUG(921, *YYCURSOR);
++YYCURSOR;
@@ -8873,7 +8877,7 @@
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
goto restart;
}
-#line 8877 "Zend/zend_language_scanner.c"
+#line 8881 "Zend/zend_language_scanner.c"
yy923:
YYDEBUG(923, *YYCURSOR);
++YYCURSOR;
@@ -8939,9 +8943,9 @@
goto yy930;
YYDEBUG(928, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8945 "Zend/zend_language_scanner.c"
+#line 8949 "Zend/zend_language_scanner.c"
yy929:
YYDEBUG(929, *YYCURSOR);
++YYCURSOR;
@@ -9034,7 +9038,7 @@
++YYCURSOR;
YYDEBUG(939, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2597 "Zend/zend_language_scanner.l"
+#line 2601 "Zend/zend_language_scanner.l"
{
char *end = yytext + yyleng - 1;
@@ -9075,7 +9079,7 @@
yymore();
}
}
-#line 9079 "Zend/zend_language_scanner.c"
+#line 9083 "Zend/zend_language_scanner.c"
yy940:
YYDEBUG(940, *YYCURSOR);
++YYCURSOR;
@@ -9186,9 +9190,9 @@
goto yy961;
YYDEBUG(947, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 9192 "Zend/zend_language_scanner.c"
+#line 9196 "Zend/zend_language_scanner.c"
yy948:
YYDEBUG(948, *YYCURSOR);
++YYCURSOR;
@@ -9200,7 +9204,7 @@
{
yymore();
}
-#line 9204 "Zend/zend_language_scanner.c"
+#line 9208 "Zend/zend_language_scanner.c"
yy950:
YYDEBUG(950, *YYCURSOR);
yych = *++YYCURSOR;
@@ -9255,7 +9259,7 @@
return T_COMMENT;
}
}
-#line 9259 "Zend/zend_language_scanner.c"
+#line 9263 "Zend/zend_language_scanner.c"
yy955:
YYDEBUG(955, *YYCURSOR);
yych = *++YYCURSOR;
@@ -9277,7 +9281,7 @@
CG(zend_lineno)++;
return T_COMMENT;
}
-#line 9281 "Zend/zend_language_scanner.c"
+#line 9285 "Zend/zend_language_scanner.c"
yy959:
YYDEBUG(959, *YYCURSOR);
yych = *++YYCURSOR;
@@ -9324,7 +9328,7 @@
yymore();
}
}
-#line 9328 "Zend/zend_language_scanner.c"
+#line 9332 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_VAR_OFFSET:
@@ -9416,9 +9420,9 @@
++YYCURSOR;
YYDEBUG(967, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 9422 "Zend/zend_language_scanner.c"
+#line 9426 "Zend/zend_language_scanner.c"
yy968:
YYDEBUG(968, *YYCURSOR);
yyaccept = 0;
@@ -9445,7 +9449,7 @@
}
return T_NUM_STRING;
}
-#line 9449 "Zend/zend_language_scanner.c"
+#line 9453 "Zend/zend_language_scanner.c"
yy970:
YYDEBUG(970, *YYCURSOR);
yych = *++YYCURSOR;
@@ -9470,7 +9474,7 @@
/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
return yytext[0];
}
-#line 9474 "Zend/zend_language_scanner.c"
+#line 9478 "Zend/zend_language_scanner.c"
yy973:
YYDEBUG(973, *YYCURSOR);
++YYCURSOR;
@@ -9481,7 +9485,7 @@
yy_pop_state(TSRMLS_C);
return ']';
}
-#line 9485 "Zend/zend_language_scanner.c"
+#line 9489 "Zend/zend_language_scanner.c"
yy975:
YYDEBUG(975, *YYCURSOR);
yych = *++YYCURSOR;
@@ -9499,7 +9503,7 @@
ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 9503 "Zend/zend_language_scanner.c"
+#line 9507 "Zend/zend_language_scanner.c"
yy978:
YYDEBUG(978, *YYCURSOR);
++YYCURSOR;
@@ -9515,18 +9519,18 @@
}
return T_STRING;
}
-#line 9519 "Zend/zend_language_scanner.c"
+#line 9523 "Zend/zend_language_scanner.c"
yy980:
YYDEBUG(980, *YYCURSOR);
++YYCURSOR;
YYDEBUG(981, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2652 "Zend/zend_language_scanner.l"
+#line 2656 "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 9530 "Zend/zend_language_scanner.c"
+#line 9534 "Zend/zend_language_scanner.c"
yy982:
YYDEBUG(982, *YYCURSOR);
++YYCURSOR;
@@ -9572,7 +9576,7 @@
}
return T_VARIABLE;
}
-#line 9576 "Zend/zend_language_scanner.c"
+#line 9580 "Zend/zend_language_scanner.c"
yy987:
YYDEBUG(987, *YYCURSOR);
++YYCURSOR;
@@ -9611,7 +9615,7 @@
}
return T_NUM_STRING;
}
-#line 9615 "Zend/zend_language_scanner.c"
+#line 9619 "Zend/zend_language_scanner.c"
yy994:
YYDEBUG(994, *YYCURSOR);
++YYCURSOR;
@@ -9624,6 +9628,6 @@
goto yy993;
}
}
-#line 2657 "Zend/zend_language_scanner.l"
+#line 2661 "Zend/zend_language_scanner.l"
}
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner_defs.h?r1=1.16&r2=1.17&diff_format=u
Index: ZendEngine2/zend_language_scanner_defs.h
diff -u ZendEngine2/zend_language_scanner_defs.h:1.16 ZendEngine2/zend_language_scanner_defs.h:1.17
--- ZendEngine2/zend_language_scanner_defs.h:1.16 Wed Mar 25 15:24:51 2009
+++ ZendEngine2/zend_language_scanner_defs.h Thu Mar 26 12:38:38 2009
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Mar 25 18:24:36 2009 */
+/* Generated by re2c 0.13.5 on Thu Mar 26 15:38:15 2009 */
#line 3 "Zend/zend_language_scanner_defs.h"
enum YYCONDTYPE {
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug47516.phpt?r1=1.1&r2=1.2&diff_format=u
Index: ZendEngine2/tests/bug47516.phpt
diff -u /dev/null ZendEngine2/tests/bug47516.phpt:1.2
--- /dev/null Thu Mar 26 12:38:38 2009
+++ ZendEngine2/tests/bug47516.phpt Thu Mar 26 12:38:38 2009
@@ -0,0 +1,36 @@
+--TEST--
+Bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
+--FILE--
+<?php
+$s='substr';
+
+$htm=<<<DOC
+{$s(<<<'ppp'
+abcdefg
+ppp
+,0,3)}
+DOC;
+
+echo "$htm\n";
+
+$htm=<<<DOC
+{$s(<<<ppp
+abcdefg
+ppp
+,0,3)}
+DOC;
+
+echo "$htm\n";
+
+$htm="{$s(<<<'ppp'
+abcdefg
+ppp
+,0,3)}
+";
+
+echo "$htm\n";
+?>
+--EXPECT---
+abc
+abc
+abc