]> 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:38:38 +0000 (12:38 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 26 Mar 2009 12:38:38 +0000 (12:38 +0000)
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/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 3718d01041e2b3ee919db201823b35db4a856199..77864b5c334323d4bb043204c5a52f27d8278419 100644 (file)
@@ -768,13 +768,13 @@ common_scalar:
        |       T_METHOD_C                                      { $$ = $1; }
        |       T_FUNC_C                                        { $$ = $1; }
        |       T_NS_C                                          { $$ = $1; }
-       |       start_heredoc T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; }
-       |       start_heredoc T_END_HEREDOC { if (CG(literal_type) == IS_UNICODE) { ZVAL_EMPTY_UNICODE(&$$.u.constant); } else { ZVAL_EMPTY_STRING(&$$.u.constant); } INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; }
+       |       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); }
+       |       start_heredoc T_END_HEREDOC { if (CG(literal_type) == IS_UNICODE) { ZVAL_EMPTY_UNICODE(&$$.u.constant); } else { 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); }
 ;
 
 start_heredoc:
-               T_START_HEREDOC  { CG(literal_type) = UG(unicode)?IS_UNICODE:IS_STRING; }
-       |       T_BINARY_HEREDOC { CG(literal_type) = IS_STRING; }
+               T_START_HEREDOC  { CG(literal_type) = UG(unicode)?IS_UNICODE:IS_STRING; $$ = $1; }
+       |       T_BINARY_HEREDOC { CG(literal_type) = IS_STRING; $$ = $1; }
 ;
 
 
@@ -802,7 +802,7 @@ scalar:
        |       common_scalar                   { $$ = $1; }
        |       '"' { CG(literal_type) = UG(unicode)?IS_UNICODE:IS_STRING; } encaps_list '"' { $$ = $3; }
        |       T_BINARY_DOUBLE { CG(literal_type) = IS_STRING; } encaps_list '"' { $$ = $3; }
-       |       start_heredoc encaps_list T_END_HEREDOC { $$ = $2; }
+       |       start_heredoc encaps_list T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
 ;
 
 
index e05d1be4e99d4ed7d5c5a068f74369ef8731f52e..ee0d7386d26f1a40f839971c37891331177e94c0 100644 (file)
@@ -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"
 /*
    +----------------------------------------------------------------------+
@@ -1425,7 +1425,7 @@ yy2:
                ++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 @@ yyc_ST_BACKQUOTE:
 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 @@ yy60:
 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 @@ yy66:
                ++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 @@ yy71:
 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 @@ yyc_ST_DOUBLE_QUOTES:
 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 @@ yy115:
 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 @@ yy121:
                ++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 @@ yy126:
 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 @@ yyc_ST_END_HEREDOC:
        ++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 @@ yy147:
        ++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 @@ yyc_ST_HEREDOC:
 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 @@ yy154:
 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 @@ yy172:
 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 @@ yy181:
                ++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 @@ yy215:
                ++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 @@ yy273:
 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 @@ yy275:
                ++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 @@ 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;
@@ -5348,7 +5352,7 @@ yy384:
 
        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 @@ yy388:
                {
        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 @@ yy391:
                {
        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 @@ yy393:
                {
        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 @@ yy397:
                {
        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 @@ yy399:
                {
        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 @@ yy401:
                {
        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 @@ yy403:
                {
        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 @@ yy420:
        }
        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 @@ yy425:
        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 @@ yy431:
        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 @@ yy439:
        }
        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 @@ yy450:
        }
        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 @@ yy455:
        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 @@ yy462:
        }
        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 @@ yy477:
                {
        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 @@ yy481:
                {
        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 @@ yy485:
                {
        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 @@ yy502:
                {
        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 @@ yy510:
                {
        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 @@ yy524:
                {
        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 @@ yy531:
                {
        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 @@ yy539:
                {
        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 @@ yy548:
                {
        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 @@ yy556:
                {
        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 @@ yy566:
                {
        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 @@ yy571:
                {
        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 @@ yy576:
                {
        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 @@ yy580:
                {
        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 @@ yy588:
                {
        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 @@ yy590:
                {
        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 @@ yy594:
                {
        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 @@ yy596:
                {
        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 @@ yy598:
        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 @@ yy605:
                {
        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 @@ yy614:
                {
        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 @@ yy620:
                {
        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 @@ yy622:
                {
        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 @@ yy627:
                {
        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 @@ yy632:
                {
        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 @@ yy636:
        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 @@ yy642:
                {
        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 @@ yy645:
        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 @@ yy654:
        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 @@ yy663:
                {
        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 @@ yy668:
                {
        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 @@ yy673:
                {
        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 @@ yy677:
                {
        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 @@ yy679:
                {
        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 @@ yy686:
                {
        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 @@ yy691:
                {
        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 @@ yy693:
                {
        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 @@ yy700:
                {
        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 @@ yy709:
                {
        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 @@ yy714:
                {
        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 @@ yy721:
                {
        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 @@ yy729:
                {
        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 @@ yy738:
                {
        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 @@ yy742:
                {
        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 @@ yy746:
                {
        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 @@ yy755:
                {
        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 @@ yy760:
                {
        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 @@ yy764:
                {
        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 @@ yy775:
                {
        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 @@ yy777:
                {
        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 @@ yy782:
                {
        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 @@ yy785:
                {
        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 @@ yy789:
                {
        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 @@ yy792:
                {
        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 @@ yy802:
                {
        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 @@ yy805:
                {
        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 @@ yy809:
                {
        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 @@ yy813:
                {
        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 @@ yy817:
                {
        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 @@ yy819:
                {
        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 @@ yy826:
                {
        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 @@ yy831:
                {
        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 @@ yy844:
                {
        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 @@ yy846:
                {
        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 @@ yy849:
                {
        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 @@ yy860:
                {
        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 @@ yy866:
                {
        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 @@ yy868:
                {
        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 @@ yy872:
                {
        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 @@ yy876:
                {
        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 @@ yy883:
                {
        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 @@ yy887:
                {
        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 @@ yy891:
                {
        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 @@ yy893:
                {
        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 @@ yy896:
                {
        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 @@ yy900:
                ++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 @@ yy903:
        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 @@ yy905:
        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 @@ yy907:
        }
        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 @@ yy911:
                {
        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 @@ yy917:
                ++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 @@ yy920:
        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 @@ yy921:
        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 @@ yy927:
                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 @@ yy938:
                ++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 @@ yy938:
                yymore();
        }
 }
-#line 9079 "Zend/zend_language_scanner.c"
+#line 9083 "Zend/zend_language_scanner.c"
 yy940:
                YYDEBUG(940, *YYCURSOR);
                ++YYCURSOR;
@@ -9186,9 +9190,9 @@ yy946:
                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 @@ yy949:
                {
        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 @@ yy954:
                        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 @@ yy956:
        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 @@ yy962:
                yymore();
        }
 }
-#line 9328 "Zend/zend_language_scanner.c"
+#line 9332 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
@@ -9416,9 +9420,9 @@ yy966:
                ++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 @@ yy969:
        }
        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 @@ yy972:
        /* 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 @@ yy973:
        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 @@ yy976:
        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 @@ yy979:
        }
        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 @@ yy986:
        }
        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 @@ yy993:
        }
        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 @@ yy994:
                goto yy993;
        }
 }
-#line 2657 "Zend/zend_language_scanner.l"
+#line 2661 "Zend/zend_language_scanner.l"
 
 }
index f59b9f6b82c54af626ca21e6867dff20087968bd..02d197c3d936be8c8242827289b1788eca8a07d3 100644 (file)
@@ -2402,6 +2402,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 3007edd0cfac73610df3820933dac5206ee2a76f..5c7f7907d58bfd01c0cc43e88232e59111161c8a 100644 (file)
@@ -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 {