summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2009-03-26 12:37:54 +0000
committerDmitry Stogov <dmitry@php.net>2009-03-26 12:37:54 +0000
commit7ef3db0e4eb7b772ca1fe42738f9230f01ca5b7a (patch)
tree943456e5db7e0e9a0358fe2d80a114500c85a7b7
parentda9405de72b067b4709733083aed29c358117aae (diff)
downloadphp-git-7ef3db0e4eb7b772ca1fe42738f9230f01ca5b7a.tar.gz
Fixed bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
-rw-r--r--NEWS2
-rw-r--r--Zend/tests/bug47516.phpt36
-rw-r--r--Zend/zend_language_parser.y6
-rw-r--r--Zend/zend_language_scanner.c278
-rw-r--r--Zend/zend_language_scanner.l4
-rw-r--r--Zend/zend_language_scanner_defs.h2
6 files changed, 187 insertions, 141 deletions
diff --git a/NEWS b/NEWS
index c66eaa11b7..fef74ba1ca 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,8 @@ PHP NEWS
- Fixed bug #47714 (autoloading classes inside exception_handler leads to
crashes). (Dmitry)
- Fixed bug #47699 (autoload and late static binding). (Dmitry)
+- Fixed bug #47516 (nowdoc can not be embed in heredoc but can be embed in
+ double quote). (Dmitry)
- Fixed bug #47038 (Memory leak in include). (Dmitry)
- Fixed bug #44409 (PDO::FETCH_SERIALIZE calls __construct()). (Matteo)
- Fixed bug #42362 (HTTP status codes 204 and 304 should not be gzipped).
diff --git a/Zend/tests/bug47516.phpt b/Zend/tests/bug47516.phpt
new file mode 100644
index 0000000000..66304fe3be
--- /dev/null
+++ b/Zend/tests/bug47516.phpt
@@ -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
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 3e284e93bf..6ba7852ea2 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -763,8 +763,8 @@ common_scalar:
| T_METHOD_C { $$ = $1; }
| T_FUNC_C { $$ = $1; }
| T_NS_C { $$ = $1; }
- | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; }
- | T_START_HEREDOC T_END_HEREDOC { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; }
+ | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
+ | T_START_HEREDOC T_END_HEREDOC { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
;
@@ -791,7 +791,7 @@ scalar:
| T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); }
| common_scalar { $$ = $1; }
| '"' encaps_list '"' { $$ = $2; }
- | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; }
+ | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
;
diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c
index b8635084b3..aa50dec95f 100644
--- a/Zend/zend_language_scanner.c
+++ b/Zend/zend_language_scanner.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Mar 25 18:23:22 2009 */
+/* Generated by re2c 0.13.5 on Thu Mar 26 15:37:35 2009 */
#line 1 "Zend/zend_language_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -930,7 +930,7 @@ yy2:
++YYCURSOR;
YYDEBUG(3, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
#line 936 "Zend/zend_language_scanner.c"
yy4:
@@ -1404,7 +1404,7 @@ yyc_ST_BACKQUOTE:
yy58:
YYDEBUG(58, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2013 "Zend/zend_language_scanner.l"
+#line 2017 "Zend/zend_language_scanner.l"
{
zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
@@ -1447,7 +1447,7 @@ yy60:
yy61:
YYDEBUG(61, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1988 "Zend/zend_language_scanner.l"
+#line 1992 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1496,7 +1496,7 @@ yy66:
++YYCURSOR;
YYDEBUG(67, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2091 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '`';
@@ -1574,7 +1574,7 @@ yy71:
yy73:
YYDEBUG(73, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2018 "Zend/zend_language_scanner.l"
+#line 2022 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
@@ -1938,7 +1938,7 @@ yyc_ST_DOUBLE_QUOTES:
yy113:
YYDEBUG(113, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1995 "Zend/zend_language_scanner.l"
+#line 1999 "Zend/zend_language_scanner.l"
{
zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
@@ -1982,7 +1982,7 @@ yy115:
yy116:
YYDEBUG(116, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1988 "Zend/zend_language_scanner.l"
+#line 1992 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2030,7 +2030,7 @@ yy121:
++YYCURSOR;
YYDEBUG(122, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2085 "Zend/zend_language_scanner.l"
+#line 2089 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '"';
@@ -2111,7 +2111,7 @@ yy126:
yy128:
YYDEBUG(128, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2006 "Zend/zend_language_scanner.l"
+#line 2010 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
@@ -2225,7 +2225,7 @@ yyc_ST_END_HEREDOC:
++YYCURSOR;
YYDEBUG(146, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
#line 2231 "Zend/zend_language_scanner.c"
yy147:
@@ -2233,7 +2233,7 @@ yy147:
++YYCURSOR;
YYDEBUG(148, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1974 "Zend/zend_language_scanner.l"
+#line 1978 "Zend/zend_language_scanner.l"
{
YYCURSOR += CG(heredoc_len) - 1;
yyleng = CG(heredoc_len);
@@ -2315,7 +2315,7 @@ yyc_ST_HEREDOC:
yy151:
YYDEBUG(151, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2032 "Zend/zend_language_scanner.l"
+#line 2036 "Zend/zend_language_scanner.l"
{
zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
@@ -2371,7 +2371,7 @@ yy154:
yy155:
YYDEBUG(155, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1988 "Zend/zend_language_scanner.l"
+#line 1992 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2628,7 +2628,7 @@ yy172:
yy174:
YYDEBUG(174, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2037 "Zend/zend_language_scanner.l"
+#line 2041 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC);
@@ -2733,7 +2733,7 @@ yy181:
++YYCURSOR;
YYDEBUG(182, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1937 "Zend/zend_language_scanner.l"
+#line 1941 "Zend/zend_language_scanner.l"
{
char *end = yytext + yyleng - 1;
@@ -3290,7 +3290,7 @@ yy215:
++YYCURSOR;
YYDEBUG(216, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
#line 3296 "Zend/zend_language_scanner.c"
yy217:
@@ -3951,7 +3951,7 @@ yy273:
yy274:
YYDEBUG(274, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2098 "Zend/zend_language_scanner.l"
+#line 2102 "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;
@@ -3962,7 +3962,7 @@ yy275:
++YYCURSOR;
YYDEBUG(276, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1925 "Zend/zend_language_scanner.l"
+#line 1929 "Zend/zend_language_scanner.l"
{
BEGIN(ST_BACKQUOTE);
return '`';
@@ -4777,6 +4777,10 @@ yy384:
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;
@@ -4816,7 +4820,7 @@ yy384:
return T_START_HEREDOC;
}
-#line 4820 "Zend/zend_language_scanner.c"
+#line 4824 "Zend/zend_language_scanner.c"
yy385:
YYDEBUG(385, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4860,7 +4864,7 @@ yy388:
{
return T_IS_NOT_IDENTICAL;
}
-#line 4864 "Zend/zend_language_scanner.c"
+#line 4868 "Zend/zend_language_scanner.c"
yy391:
YYDEBUG(391, *YYCURSOR);
++YYCURSOR;
@@ -4870,7 +4874,7 @@ yy391:
{
return T_PLUS_EQUAL;
}
-#line 4874 "Zend/zend_language_scanner.c"
+#line 4878 "Zend/zend_language_scanner.c"
yy393:
YYDEBUG(393, *YYCURSOR);
++YYCURSOR;
@@ -4880,7 +4884,7 @@ yy393:
{
return T_INC;
}
-#line 4884 "Zend/zend_language_scanner.c"
+#line 4888 "Zend/zend_language_scanner.c"
yy395:
YYDEBUG(395, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4903,7 +4907,7 @@ yy397:
{
return T_LIST;
}
-#line 4907 "Zend/zend_language_scanner.c"
+#line 4911 "Zend/zend_language_scanner.c"
yy399:
YYDEBUG(399, *YYCURSOR);
++YYCURSOR;
@@ -4914,7 +4918,7 @@ yy399:
{
return T_IS_EQUAL;
}
-#line 4918 "Zend/zend_language_scanner.c"
+#line 4922 "Zend/zend_language_scanner.c"
yy401:
YYDEBUG(401, *YYCURSOR);
++YYCURSOR;
@@ -4924,7 +4928,7 @@ yy401:
{
return T_DOUBLE_ARROW;
}
-#line 4928 "Zend/zend_language_scanner.c"
+#line 4932 "Zend/zend_language_scanner.c"
yy403:
YYDEBUG(403, *YYCURSOR);
++YYCURSOR;
@@ -4934,7 +4938,7 @@ yy403:
{
return T_IS_IDENTICAL;
}
-#line 4938 "Zend/zend_language_scanner.c"
+#line 4942 "Zend/zend_language_scanner.c"
yy405:
YYDEBUG(405, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5066,7 +5070,7 @@ yy420:
}
return T_NS_C;
}
-#line 5070 "Zend/zend_language_scanner.c"
+#line 5074 "Zend/zend_language_scanner.c"
yy424:
YYDEBUG(424, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5113,7 +5117,7 @@ yy425:
zendlval->type = IS_STRING;
return T_DIR;
}
-#line 5117 "Zend/zend_language_scanner.c"
+#line 5121 "Zend/zend_language_scanner.c"
yy429:
YYDEBUG(429, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5144,7 +5148,7 @@ yy431:
zendlval->type = IS_LONG;
return T_LINE;
}
-#line 5148 "Zend/zend_language_scanner.c"
+#line 5152 "Zend/zend_language_scanner.c"
yy435:
YYDEBUG(435, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5200,7 +5204,7 @@ yy439:
zendlval->type = IS_STRING;
return T_METHOD_C;
}
-#line 5204 "Zend/zend_language_scanner.c"
+#line 5208 "Zend/zend_language_scanner.c"
yy443:
YYDEBUG(443, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5267,7 +5271,7 @@ yy450:
zendlval->type = IS_STRING;
return T_FUNC_C;
}
-#line 5271 "Zend/zend_language_scanner.c"
+#line 5275 "Zend/zend_language_scanner.c"
yy454:
YYDEBUG(454, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5299,7 +5303,7 @@ yy455:
zendlval->type = IS_STRING;
return T_FILE;
}
-#line 5303 "Zend/zend_language_scanner.c"
+#line 5307 "Zend/zend_language_scanner.c"
yy459:
YYDEBUG(459, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5345,7 +5349,7 @@ yy462:
zendlval->type = IS_STRING;
return T_CLASS_C;
}
-#line 5349 "Zend/zend_language_scanner.c"
+#line 5353 "Zend/zend_language_scanner.c"
yy466:
YYDEBUG(466, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5411,7 +5415,7 @@ yy477:
{
return T_HALT_COMPILER;
}
-#line 5415 "Zend/zend_language_scanner.c"
+#line 5419 "Zend/zend_language_scanner.c"
yy479:
YYDEBUG(479, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5435,7 +5439,7 @@ yy481:
{
return T_USE;
}
-#line 5439 "Zend/zend_language_scanner.c"
+#line 5443 "Zend/zend_language_scanner.c"
yy483:
YYDEBUG(483, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5458,7 +5462,7 @@ yy485:
{
return T_UNSET;
}
-#line 5462 "Zend/zend_language_scanner.c"
+#line 5466 "Zend/zend_language_scanner.c"
yy487:
YYDEBUG(487, *YYCURSOR);
++YYCURSOR;
@@ -5634,7 +5638,7 @@ yy502:
{
return T_INT_CAST;
}
-#line 5638 "Zend/zend_language_scanner.c"
+#line 5642 "Zend/zend_language_scanner.c"
yy505:
YYDEBUG(505, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5682,7 +5686,7 @@ yy510:
{
return T_DOUBLE_CAST;
}
-#line 5686 "Zend/zend_language_scanner.c"
+#line 5690 "Zend/zend_language_scanner.c"
yy514:
YYDEBUG(514, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5756,7 +5760,7 @@ yy524:
{
return T_STRING_CAST;
}
-#line 5760 "Zend/zend_language_scanner.c"
+#line 5764 "Zend/zend_language_scanner.c"
yy528:
YYDEBUG(528, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5793,7 +5797,7 @@ yy531:
{
return T_ARRAY_CAST;
}
-#line 5797 "Zend/zend_language_scanner.c"
+#line 5801 "Zend/zend_language_scanner.c"
yy535:
YYDEBUG(535, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5835,7 +5839,7 @@ yy539:
{
return T_OBJECT_CAST;
}
-#line 5839 "Zend/zend_language_scanner.c"
+#line 5843 "Zend/zend_language_scanner.c"
yy543:
YYDEBUG(543, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5880,7 +5884,7 @@ yy548:
{
return T_BOOL_CAST;
}
-#line 5884 "Zend/zend_language_scanner.c"
+#line 5888 "Zend/zend_language_scanner.c"
yy551:
YYDEBUG(551, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5928,7 +5932,7 @@ yy556:
{
return T_STRING_CAST;
}
-#line 5932 "Zend/zend_language_scanner.c"
+#line 5936 "Zend/zend_language_scanner.c"
yy560:
YYDEBUG(560, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5965,7 +5969,7 @@ yy563:
{
return T_UNSET_CAST;
}
-#line 5969 "Zend/zend_language_scanner.c"
+#line 5973 "Zend/zend_language_scanner.c"
yy567:
YYDEBUG(567, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5983,7 +5987,7 @@ yy568:
{
return T_VAR;
}
-#line 5987 "Zend/zend_language_scanner.c"
+#line 5991 "Zend/zend_language_scanner.c"
yy570:
YYDEBUG(570, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6007,7 +6011,7 @@ yy572:
{
return T_NEW;
}
-#line 6011 "Zend/zend_language_scanner.c"
+#line 6015 "Zend/zend_language_scanner.c"
yy574:
YYDEBUG(574, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6050,7 +6054,7 @@ yy580:
{
return T_NAMESPACE;
}
-#line 6054 "Zend/zend_language_scanner.c"
+#line 6058 "Zend/zend_language_scanner.c"
yy582:
YYDEBUG(582, *YYCURSOR);
++YYCURSOR;
@@ -6060,7 +6064,7 @@ yy582:
{
return T_PAAMAYIM_NEKUDOTAYIM;
}
-#line 6064 "Zend/zend_language_scanner.c"
+#line 6068 "Zend/zend_language_scanner.c"
yy584:
YYDEBUG(584, *YYCURSOR);
++YYCURSOR;
@@ -6086,7 +6090,7 @@ yy586:
{
return T_MINUS_EQUAL;
}
-#line 6090 "Zend/zend_language_scanner.c"
+#line 6094 "Zend/zend_language_scanner.c"
yy588:
YYDEBUG(588, *YYCURSOR);
++YYCURSOR;
@@ -6096,7 +6100,7 @@ yy588:
{
return T_DEC;
}
-#line 6100 "Zend/zend_language_scanner.c"
+#line 6104 "Zend/zend_language_scanner.c"
yy590:
YYDEBUG(590, *YYCURSOR);
++YYCURSOR;
@@ -6107,7 +6111,7 @@ yy590:
yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
return T_OBJECT_OPERATOR;
}
-#line 6111 "Zend/zend_language_scanner.c"
+#line 6115 "Zend/zend_language_scanner.c"
yy592:
YYDEBUG(592, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6156,7 +6160,7 @@ yy597:
{
return T_PUBLIC;
}
-#line 6160 "Zend/zend_language_scanner.c"
+#line 6164 "Zend/zend_language_scanner.c"
yy599:
YYDEBUG(599, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6215,7 +6219,7 @@ yy606:
{
return T_PROTECTED;
}
-#line 6219 "Zend/zend_language_scanner.c"
+#line 6223 "Zend/zend_language_scanner.c"
yy608:
YYDEBUG(608, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6249,7 +6253,7 @@ yy612:
{
return T_PRIVATE;
}
-#line 6253 "Zend/zend_language_scanner.c"
+#line 6257 "Zend/zend_language_scanner.c"
yy614:
YYDEBUG(614, *YYCURSOR);
++YYCURSOR;
@@ -6262,7 +6266,7 @@ yy614:
{
return T_PRINT;
}
-#line 6266 "Zend/zend_language_scanner.c"
+#line 6270 "Zend/zend_language_scanner.c"
yy616:
YYDEBUG(616, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6291,7 +6295,7 @@ yy619:
{
return T_GOTO;
}
-#line 6295 "Zend/zend_language_scanner.c"
+#line 6299 "Zend/zend_language_scanner.c"
yy621:
YYDEBUG(621, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6319,7 +6323,7 @@ yy624:
{
return T_GLOBAL;
}
-#line 6323 "Zend/zend_language_scanner.c"
+#line 6327 "Zend/zend_language_scanner.c"
yy626:
YYDEBUG(626, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6357,7 +6361,7 @@ yy631:
{
return T_BREAK;
}
-#line 6361 "Zend/zend_language_scanner.c"
+#line 6365 "Zend/zend_language_scanner.c"
yy633:
YYDEBUG(633, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6401,7 +6405,7 @@ yy639:
{
return T_SWITCH;
}
-#line 6405 "Zend/zend_language_scanner.c"
+#line 6409 "Zend/zend_language_scanner.c"
yy641:
YYDEBUG(641, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6429,7 +6433,7 @@ yy644:
{
return T_STATIC;
}
-#line 6433 "Zend/zend_language_scanner.c"
+#line 6437 "Zend/zend_language_scanner.c"
yy646:
YYDEBUG(646, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6460,7 +6464,7 @@ yy649:
{
return T_AS;
}
-#line 6464 "Zend/zend_language_scanner.c"
+#line 6468 "Zend/zend_language_scanner.c"
yy651:
YYDEBUG(651, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6483,7 +6487,7 @@ yy653:
{
return T_ARRAY;
}
-#line 6487 "Zend/zend_language_scanner.c"
+#line 6491 "Zend/zend_language_scanner.c"
yy655:
YYDEBUG(655, *YYCURSOR);
++YYCURSOR;
@@ -6496,7 +6500,7 @@ yy655:
{
return T_LOGICAL_AND;
}
-#line 6500 "Zend/zend_language_scanner.c"
+#line 6504 "Zend/zend_language_scanner.c"
yy657:
YYDEBUG(657, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6534,7 +6538,7 @@ yy662:
{
return T_ABSTRACT;
}
-#line 6538 "Zend/zend_language_scanner.c"
+#line 6542 "Zend/zend_language_scanner.c"
yy664:
YYDEBUG(664, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6562,7 +6566,7 @@ yy667:
{
return T_WHILE;
}
-#line 6566 "Zend/zend_language_scanner.c"
+#line 6570 "Zend/zend_language_scanner.c"
yy669:
YYDEBUG(669, *YYCURSOR);
++YYCURSOR;
@@ -6575,7 +6579,7 @@ yy669:
{
return T_IF;
}
-#line 6579 "Zend/zend_language_scanner.c"
+#line 6583 "Zend/zend_language_scanner.c"
yy671:
YYDEBUG(671, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6631,7 +6635,7 @@ yy676:
{
return T_ISSET;
}
-#line 6635 "Zend/zend_language_scanner.c"
+#line 6639 "Zend/zend_language_scanner.c"
yy678:
YYDEBUG(678, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6689,7 +6693,7 @@ yy685:
{
return T_INCLUDE;
}
-#line 6693 "Zend/zend_language_scanner.c"
+#line 6697 "Zend/zend_language_scanner.c"
yy686:
YYDEBUG(686, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6722,7 +6726,7 @@ yy690:
{
return T_INCLUDE_ONCE;
}
-#line 6726 "Zend/zend_language_scanner.c"
+#line 6730 "Zend/zend_language_scanner.c"
yy692:
YYDEBUG(692, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6760,7 +6764,7 @@ yy697:
{
return T_INTERFACE;
}
-#line 6764 "Zend/zend_language_scanner.c"
+#line 6768 "Zend/zend_language_scanner.c"
yy699:
YYDEBUG(699, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6803,7 +6807,7 @@ yy705:
{
return T_INSTANCEOF;
}
-#line 6807 "Zend/zend_language_scanner.c"
+#line 6811 "Zend/zend_language_scanner.c"
yy707:
YYDEBUG(707, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6851,7 +6855,7 @@ yy714:
{
return T_IMPLEMENTS;
}
-#line 6855 "Zend/zend_language_scanner.c"
+#line 6859 "Zend/zend_language_scanner.c"
yy716:
YYDEBUG(716, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6875,7 +6879,7 @@ yy718:
{
return T_TRY;
}
-#line 6879 "Zend/zend_language_scanner.c"
+#line 6883 "Zend/zend_language_scanner.c"
yy720:
YYDEBUG(720, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6898,7 +6902,7 @@ yy722:
{
return T_THROW;
}
-#line 6902 "Zend/zend_language_scanner.c"
+#line 6906 "Zend/zend_language_scanner.c"
yy724:
YYDEBUG(724, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6963,7 +6967,7 @@ yy731:
{
return T_REQUIRE;
}
-#line 6967 "Zend/zend_language_scanner.c"
+#line 6971 "Zend/zend_language_scanner.c"
yy732:
YYDEBUG(732, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6996,7 +7000,7 @@ yy736:
{
return T_REQUIRE_ONCE;
}
-#line 7000 "Zend/zend_language_scanner.c"
+#line 7004 "Zend/zend_language_scanner.c"
yy738:
YYDEBUG(738, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7019,7 +7023,7 @@ yy740:
{
return T_RETURN;
}
-#line 7023 "Zend/zend_language_scanner.c"
+#line 7027 "Zend/zend_language_scanner.c"
yy742:
YYDEBUG(742, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7104,7 +7108,7 @@ yy751:
{
return T_CONTINUE;
}
-#line 7108 "Zend/zend_language_scanner.c"
+#line 7112 "Zend/zend_language_scanner.c"
yy753:
YYDEBUG(753, *YYCURSOR);
++YYCURSOR;
@@ -7117,7 +7121,7 @@ yy753:
{
return T_CONST;
}
-#line 7121 "Zend/zend_language_scanner.c"
+#line 7125 "Zend/zend_language_scanner.c"
yy755:
YYDEBUG(755, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7146,7 +7150,7 @@ yy758:
{
return T_CLONE;
}
-#line 7150 "Zend/zend_language_scanner.c"
+#line 7154 "Zend/zend_language_scanner.c"
yy760:
YYDEBUG(760, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7164,7 +7168,7 @@ yy761:
{
return T_CLASS;
}
-#line 7168 "Zend/zend_language_scanner.c"
+#line 7172 "Zend/zend_language_scanner.c"
yy763:
YYDEBUG(763, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7188,7 +7192,7 @@ yy765:
{
return T_CASE;
}
-#line 7192 "Zend/zend_language_scanner.c"
+#line 7196 "Zend/zend_language_scanner.c"
yy767:
YYDEBUG(767, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7206,7 +7210,7 @@ yy768:
{
return T_CATCH;
}
-#line 7210 "Zend/zend_language_scanner.c"
+#line 7214 "Zend/zend_language_scanner.c"
yy770:
YYDEBUG(770, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7261,7 +7265,7 @@ yy778:
{
return T_FUNCTION;
}
-#line 7265 "Zend/zend_language_scanner.c"
+#line 7269 "Zend/zend_language_scanner.c"
yy780:
YYDEBUG(780, *YYCURSOR);
++YYCURSOR;
@@ -7289,7 +7293,7 @@ yy781:
{
return T_FOR;
}
-#line 7293 "Zend/zend_language_scanner.c"
+#line 7297 "Zend/zend_language_scanner.c"
yy782:
YYDEBUG(782, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7317,7 +7321,7 @@ yy785:
{
return T_FOREACH;
}
-#line 7321 "Zend/zend_language_scanner.c"
+#line 7325 "Zend/zend_language_scanner.c"
yy787:
YYDEBUG(787, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7340,7 +7344,7 @@ yy789:
{
return T_FINAL;
}
-#line 7344 "Zend/zend_language_scanner.c"
+#line 7348 "Zend/zend_language_scanner.c"
yy791:
YYDEBUG(791, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7375,7 +7379,7 @@ yy793:
{
return T_DO;
}
-#line 7379 "Zend/zend_language_scanner.c"
+#line 7383 "Zend/zend_language_scanner.c"
yy795:
YYDEBUG(795, *YYCURSOR);
++YYCURSOR;
@@ -7388,7 +7392,7 @@ yy795:
{
return T_EXIT;
}
-#line 7392 "Zend/zend_language_scanner.c"
+#line 7396 "Zend/zend_language_scanner.c"
yy797:
YYDEBUG(797, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7427,7 +7431,7 @@ yy802:
{
return T_DEFAULT;
}
-#line 7431 "Zend/zend_language_scanner.c"
+#line 7435 "Zend/zend_language_scanner.c"
yy804:
YYDEBUG(804, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7455,7 +7459,7 @@ yy807:
{
return T_DECLARE;
}
-#line 7459 "Zend/zend_language_scanner.c"
+#line 7463 "Zend/zend_language_scanner.c"
yy809:
YYDEBUG(809, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7539,7 +7543,7 @@ yy820:
{
return T_EXTENDS;
}
-#line 7543 "Zend/zend_language_scanner.c"
+#line 7547 "Zend/zend_language_scanner.c"
yy822:
YYDEBUG(822, *YYCURSOR);
++YYCURSOR;
@@ -7552,7 +7556,7 @@ yy822:
{
return T_EXIT;
}
-#line 7556 "Zend/zend_language_scanner.c"
+#line 7560 "Zend/zend_language_scanner.c"
yy824:
YYDEBUG(824, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7570,7 +7574,7 @@ yy825:
{
return T_EVAL;
}
-#line 7574 "Zend/zend_language_scanner.c"
+#line 7578 "Zend/zend_language_scanner.c"
yy827:
YYDEBUG(827, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7644,7 +7648,7 @@ yy836:
{
return T_ENDWHILE;
}
-#line 7648 "Zend/zend_language_scanner.c"
+#line 7652 "Zend/zend_language_scanner.c"
yy838:
YYDEBUG(838, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7677,7 +7681,7 @@ yy842:
{
return T_ENDSWITCH;
}
-#line 7681 "Zend/zend_language_scanner.c"
+#line 7685 "Zend/zend_language_scanner.c"
yy844:
YYDEBUG(844, *YYCURSOR);
++YYCURSOR;
@@ -7690,7 +7694,7 @@ yy844:
{
return T_ENDIF;
}
-#line 7694 "Zend/zend_language_scanner.c"
+#line 7698 "Zend/zend_language_scanner.c"
yy846:
YYDEBUG(846, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7723,7 +7727,7 @@ yy848:
{
return T_ENDFOR;
}
-#line 7727 "Zend/zend_language_scanner.c"
+#line 7731 "Zend/zend_language_scanner.c"
yy849:
YYDEBUG(849, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7751,7 +7755,7 @@ yy852:
{
return T_ENDFOREACH;
}
-#line 7755 "Zend/zend_language_scanner.c"
+#line 7759 "Zend/zend_language_scanner.c"
yy854:
YYDEBUG(854, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7789,7 +7793,7 @@ yy859:
{
return T_ENDDECLARE;
}
-#line 7793 "Zend/zend_language_scanner.c"
+#line 7797 "Zend/zend_language_scanner.c"
yy861:
YYDEBUG(861, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7812,7 +7816,7 @@ yy863:
{
return T_EMPTY;
}
-#line 7816 "Zend/zend_language_scanner.c"
+#line 7820 "Zend/zend_language_scanner.c"
yy865:
YYDEBUG(865, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7845,7 +7849,7 @@ yy867:
{
return T_ELSE;
}
-#line 7849 "Zend/zend_language_scanner.c"
+#line 7853 "Zend/zend_language_scanner.c"
yy868:
YYDEBUG(868, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7863,7 +7867,7 @@ yy869:
{
return T_ELSEIF;
}
-#line 7867 "Zend/zend_language_scanner.c"
+#line 7871 "Zend/zend_language_scanner.c"
yy871:
YYDEBUG(871, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7881,7 +7885,7 @@ yy872:
{
return T_ECHO;
}
-#line 7885 "Zend/zend_language_scanner.c"
+#line 7889 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7956,9 +7960,9 @@ yy876:
++YYCURSOR;
YYDEBUG(877, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 7962 "Zend/zend_language_scanner.c"
+#line 7966 "Zend/zend_language_scanner.c"
yy878:
YYDEBUG(878, *YYCURSOR);
++YYCURSOR;
@@ -7975,7 +7979,7 @@ yy879:
HANDLE_NEWLINES(yytext, yyleng);
return T_WHITESPACE;
}
-#line 7979 "Zend/zend_language_scanner.c"
+#line 7983 "Zend/zend_language_scanner.c"
yy880:
YYDEBUG(880, *YYCURSOR);
++YYCURSOR;
@@ -7989,7 +7993,7 @@ yy881:
yy_pop_state(TSRMLS_C);
goto restart;
}
-#line 7993 "Zend/zend_language_scanner.c"
+#line 7997 "Zend/zend_language_scanner.c"
yy882:
YYDEBUG(882, *YYCURSOR);
++YYCURSOR;
@@ -8005,7 +8009,7 @@ yy883:
zendlval->type = IS_STRING;
return T_STRING;
}
-#line 8009 "Zend/zend_language_scanner.c"
+#line 8013 "Zend/zend_language_scanner.c"
yy884:
YYDEBUG(884, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8030,7 +8034,7 @@ yy887:
{
return T_OBJECT_OPERATOR;
}
-#line 8034 "Zend/zend_language_scanner.c"
+#line 8038 "Zend/zend_language_scanner.c"
yy889:
YYDEBUG(889, *YYCURSOR);
++YYCURSOR;
@@ -8103,9 +8107,9 @@ yy893:
++YYCURSOR;
YYDEBUG(894, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8109 "Zend/zend_language_scanner.c"
+#line 8113 "Zend/zend_language_scanner.c"
yy895:
YYDEBUG(895, *YYCURSOR);
++YYCURSOR;
@@ -8122,7 +8126,7 @@ yy896:
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
return T_STRING_VARNAME;
}
-#line 8126 "Zend/zend_language_scanner.c"
+#line 8130 "Zend/zend_language_scanner.c"
yy897:
YYDEBUG(897, *YYCURSOR);
++YYCURSOR;
@@ -8135,7 +8139,7 @@ yy897:
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
goto restart;
}
-#line 8139 "Zend/zend_language_scanner.c"
+#line 8143 "Zend/zend_language_scanner.c"
yy899:
YYDEBUG(899, *YYCURSOR);
++YYCURSOR;
@@ -8201,9 +8205,9 @@ yy903:
goto yy906;
YYDEBUG(904, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8207 "Zend/zend_language_scanner.c"
+#line 8211 "Zend/zend_language_scanner.c"
yy905:
YYDEBUG(905, *YYCURSOR);
++YYCURSOR;
@@ -8296,7 +8300,7 @@ yy914:
++YYCURSOR;
YYDEBUG(915, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2044 "Zend/zend_language_scanner.l"
+#line 2048 "Zend/zend_language_scanner.l"
{
char *end = yytext + yyleng - 1;
@@ -8336,7 +8340,7 @@ yy914:
yymore();
}
}
-#line 8340 "Zend/zend_language_scanner.c"
+#line 8344 "Zend/zend_language_scanner.c"
yy916:
YYDEBUG(916, *YYCURSOR);
++YYCURSOR;
@@ -8447,9 +8451,9 @@ yy922:
goto yy937;
YYDEBUG(923, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8453 "Zend/zend_language_scanner.c"
+#line 8457 "Zend/zend_language_scanner.c"
yy924:
YYDEBUG(924, *YYCURSOR);
++YYCURSOR;
@@ -8461,7 +8465,7 @@ yy925:
{
yymore();
}
-#line 8465 "Zend/zend_language_scanner.c"
+#line 8469 "Zend/zend_language_scanner.c"
yy926:
YYDEBUG(926, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8516,7 +8520,7 @@ yy930:
return T_COMMENT;
}
}
-#line 8520 "Zend/zend_language_scanner.c"
+#line 8524 "Zend/zend_language_scanner.c"
yy931:
YYDEBUG(931, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8538,7 +8542,7 @@ yy932:
CG(zend_lineno)++;
return T_COMMENT;
}
-#line 8542 "Zend/zend_language_scanner.c"
+#line 8546 "Zend/zend_language_scanner.c"
yy935:
YYDEBUG(935, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8585,7 +8589,7 @@ yy938:
yymore();
}
}
-#line 8589 "Zend/zend_language_scanner.c"
+#line 8593 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_VAR_OFFSET:
@@ -8677,9 +8681,9 @@ yy942:
++YYCURSOR;
YYDEBUG(943, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2096 "Zend/zend_language_scanner.l"
+#line 2100 "Zend/zend_language_scanner.l"
{ return 0; }
-#line 8683 "Zend/zend_language_scanner.c"
+#line 8687 "Zend/zend_language_scanner.c"
yy944:
YYDEBUG(944, *YYCURSOR);
yyaccept = 0;
@@ -8706,7 +8710,7 @@ yy945:
}
return T_NUM_STRING;
}
-#line 8710 "Zend/zend_language_scanner.c"
+#line 8714 "Zend/zend_language_scanner.c"
yy946:
YYDEBUG(946, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8731,7 +8735,7 @@ yy948:
/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
return yytext[0];
}
-#line 8735 "Zend/zend_language_scanner.c"
+#line 8739 "Zend/zend_language_scanner.c"
yy949:
YYDEBUG(949, *YYCURSOR);
++YYCURSOR;
@@ -8742,7 +8746,7 @@ yy949:
yy_pop_state(TSRMLS_C);
return ']';
}
-#line 8746 "Zend/zend_language_scanner.c"
+#line 8750 "Zend/zend_language_scanner.c"
yy951:
YYDEBUG(951, *YYCURSOR);
yych = *++YYCURSOR;
@@ -8760,7 +8764,7 @@ yy952:
ZVAL_EMPTY_STRING(zendlval); /* Empty since it won't be used */
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 8764 "Zend/zend_language_scanner.c"
+#line 8768 "Zend/zend_language_scanner.c"
yy954:
YYDEBUG(954, *YYCURSOR);
++YYCURSOR;
@@ -8775,18 +8779,18 @@ yy955:
zendlval->type = IS_STRING;
return T_STRING;
}
-#line 8779 "Zend/zend_language_scanner.c"
+#line 8783 "Zend/zend_language_scanner.c"
yy956:
YYDEBUG(956, *YYCURSOR);
++YYCURSOR;
YYDEBUG(957, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2098 "Zend/zend_language_scanner.l"
+#line 2102 "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 8790 "Zend/zend_language_scanner.c"
+#line 8794 "Zend/zend_language_scanner.c"
yy958:
YYDEBUG(958, *YYCURSOR);
++YYCURSOR;
@@ -8828,7 +8832,7 @@ yy962:
zendlval->type = IS_STRING;
return T_VARIABLE;
}
-#line 8832 "Zend/zend_language_scanner.c"
+#line 8836 "Zend/zend_language_scanner.c"
yy963:
YYDEBUG(963, *YYCURSOR);
++YYCURSOR;
@@ -8867,7 +8871,7 @@ yy969:
zendlval->type = IS_STRING;
return T_NUM_STRING;
}
-#line 8871 "Zend/zend_language_scanner.c"
+#line 8875 "Zend/zend_language_scanner.c"
yy970:
YYDEBUG(970, *YYCURSOR);
++YYCURSOR;
@@ -8880,6 +8884,6 @@ yy970:
goto yy969;
}
}
-#line 2103 "Zend/zend_language_scanner.l"
+#line 2107 "Zend/zend_language_scanner.l"
}
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 34cec312f8..052c39084a 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -1881,6 +1881,10 @@ inline_char_handler:
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;
diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h
index d2546df11f..b04126ecf0 100644
--- a/Zend/zend_language_scanner_defs.h
+++ b/Zend/zend_language_scanner_defs.h
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Mar 25 18:23:22 2009 */
+/* Generated by re2c 0.13.5 on Thu Mar 26 15:37:35 2009 */
#line 3 "Zend/zend_language_scanner_defs.h"
enum YYCONDTYPE {