]> granicus.if.org Git - php/commitdiff
Fixed bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
authorDmitry Stogov <dmitry@php.net>
Thu, 26 Mar 2009 12:37:54 +0000 (12:37 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 26 Mar 2009 12:37:54 +0000 (12:37 +0000)
NEWS
Zend/tests/bug47516.phpt [new file with mode: 0644]
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h

diff --git a/NEWS b/NEWS
index c66eaa11b7ec6c4197b736291e493e6389bad3a9..fef74ba1caff8fb5eac4c7f808deb79ceb2f9d77 100644 (file)
--- 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 (file)
index 0000000..66304fe
--- /dev/null
@@ -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
index 3e284e93bf640976749c9b2646ac2aab5cfce883..6ba7852ea27b7db1b97307ac4d9eda80e2438dab 100644 (file)
@@ -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); }
 ;
 
 
index b8635084b341a0f04fa52dfa1763e04137ddaadf..aa50dec95fa8cb4339fd6b88269523d7e3e56e2b 100644 (file)
@@ -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"
 
 }
index 34cec312f82bdf8a4f20d581432a85bf99558c04..052c39084a2e84185a90aa67240b8006c9f45202 100644 (file)
@@ -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;
index d2546df11ff4970f650a7cec84ad9166c9b2c3ce..b04126ecf0169e9e1404198938e9d95bac205a98 100644 (file)
@@ -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 {