]> granicus.if.org Git - php/commitdiff
Fixed suppor for multibyte encoding
authorDmitry Stogov <dmitry@zend.com>
Thu, 10 Apr 2014 14:47:47 +0000 (18:47 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 10 Apr 2014 14:47:47 +0000 (18:47 +0400)
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l

index 0d091ca2e6e6fb013983617dbf9b798153f76740..5322da7ee21bb73cadb4822bbcf5a8cba417c1a8 100644 (file)
@@ -862,11 +862,14 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter
 }
 
 
+//??? use zend_string saving memalloc
 # define zend_copy_value(zendlval, yytext, yyleng) \
        if (SCNG(output_filter)) { \
                size_t sz = 0; \
-               SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \
-               Z_STRLEN_P(zendlval) = sz; \
+               char *s = NULL; \
+               SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \
+               ZVAL_STRINGL(zendlval, s, sz); \
+               efree(s); \
        } else { \
                ZVAL_STRINGL(zendlval, yytext, yyleng); \
        }
@@ -984,7 +987,7 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo
        if (SCNG(output_filter)) {
                size_t sz = 0;
                unsigned char *str;
-               //??? use zend_string saving memalloc 
+               //??? use zend_string saving memalloc
                s = Z_STRVAL_P(zendlval);
                SCNG(output_filter)(&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC);
                zval_ptr_dtor(zendlval);
@@ -1002,7 +1005,7 @@ restart:
 yymore_restart:
 
 
-#line 1006 "Zend/zend_language_scanner.c"
+#line 1009 "Zend/zend_language_scanner.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1101,7 +1104,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1764 "Zend/zend_language_scanner.l"
+#line 1767 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1147,20 +1150,22 @@ inline_html:
 
        if (SCNG(output_filter)) {
                int readsize;
+               char *s = NULL;
                size_t sz = 0;
-               readsize = SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC);
-               Z_STRLEN_P(zendlval) = sz;
+               //??? use zend_string saving memalloc
+               readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC);
+               ZVAL_STRINGL(zendlval, s, sz);
+               efree(s);
                if (readsize < yyleng) {
                        yyless(readsize);
                }
-               Z_TYPE_INFO_P(zendlval) = IS_STRING_EX;
        } else {
          ZVAL_STRINGL(zendlval, yytext, yyleng);
        }
        HANDLE_NEWLINES(yytext, yyleng);
        return T_INLINE_HTML;
 }
-#line 1164 "Zend/zend_language_scanner.c"
+#line 1169 "Zend/zend_language_scanner.c"
 yy4:
                YYDEBUG(4, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1178,7 +1183,7 @@ yy5:
 yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1753 "Zend/zend_language_scanner.l"
+#line 1756 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
 //???          ZVAL_STRINGL(zendlval, yytext, yyleng);
@@ -1189,14 +1194,14 @@ yy6:
                goto inline_char_handler;
        }
 }
-#line 1193 "Zend/zend_language_scanner.c"
+#line 1198 "Zend/zend_language_scanner.c"
 yy7:
                YYDEBUG(7, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1732 "Zend/zend_language_scanner.l"
+#line 1735 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
 //???          ZVAL_STRINGL(zendlval, yytext, yyleng);
@@ -1207,7 +1212,7 @@ yy7:
                goto inline_char_handler;
        }
 }
-#line 1211 "Zend/zend_language_scanner.c"
+#line 1216 "Zend/zend_language_scanner.c"
 yy9:
                YYDEBUG(9, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1393,7 +1398,7 @@ yy35:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1695 "Zend/zend_language_scanner.l"
+#line 1698 "Zend/zend_language_scanner.l"
                {
        YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
 
@@ -1409,7 +1414,7 @@ yy35:
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG;
 }
-#line 1413 "Zend/zend_language_scanner.c"
+#line 1418 "Zend/zend_language_scanner.c"
 yy39:
                YYDEBUG(39, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1436,7 +1441,7 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1712 "Zend/zend_language_scanner.l"
+#line 1715 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
 //???          ZVAL_STRINGL(zendlval, yytext, yyleng);
@@ -1447,20 +1452,20 @@ yy43:
                goto inline_char_handler;
        }
 }
-#line 1451 "Zend/zend_language_scanner.c"
+#line 1456 "Zend/zend_language_scanner.c"
 yy45:
                YYDEBUG(45, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1724 "Zend/zend_language_scanner.l"
+#line 1727 "Zend/zend_language_scanner.l"
                {
 //???  ZVAL_STRINGL(zendlval, yytext, yyleng);
        ZVAL_EMPTY_STRING(zendlval); /* tricky way to no copying - intentional */ 
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG_WITH_ECHO;
 }
-#line 1464 "Zend/zend_language_scanner.c"
+#line 1469 "Zend/zend_language_scanner.c"
 yy47:
                YYDEBUG(47, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1487,7 +1492,7 @@ yy50:
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1744 "Zend/zend_language_scanner.l"
+#line 1747 "Zend/zend_language_scanner.l"
                {
 //???  ZVAL_STRINGL(zendlval, yytext, yyleng);
        ZVAL_EMPTY_STRING(zendlval); /* tricky way, no copying intentional */
@@ -1495,7 +1500,7 @@ yy51:
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG;
 }
-#line 1499 "Zend/zend_language_scanner.c"
+#line 1504 "Zend/zend_language_scanner.c"
 yy52:
                YYDEBUG(52, *YYCURSOR);
                ++YYCURSOR;
@@ -1566,7 +1571,7 @@ yyc_ST_BACKQUOTE:
 yy56:
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2205 "Zend/zend_language_scanner.l"
+#line 2212 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1607,7 +1612,7 @@ yy56:
        zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1611 "Zend/zend_language_scanner.c"
+#line 1616 "Zend/zend_language_scanner.c"
 yy57:
                YYDEBUG(57, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1618,12 +1623,12 @@ yy58:
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2149 "Zend/zend_language_scanner.l"
+#line 2156 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
 }
-#line 1627 "Zend/zend_language_scanner.c"
+#line 1632 "Zend/zend_language_scanner.c"
 yy60:
                YYDEBUG(60, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1633,14 +1638,14 @@ yy61:
                ++YYCURSOR;
                YYDEBUG(62, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2136 "Zend/zend_language_scanner.l"
+#line 2143 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1644 "Zend/zend_language_scanner.c"
+#line 1649 "Zend/zend_language_scanner.c"
 yy63:
                YYDEBUG(63, *YYCURSOR);
                yyaccept = 0;
@@ -1656,23 +1661,23 @@ yy63:
 yy65:
                YYDEBUG(65, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1843 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1665 "Zend/zend_language_scanner.c"
+#line 1670 "Zend/zend_language_scanner.c"
 yy66:
                YYDEBUG(66, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1462 "Zend/zend_language_scanner.l"
+#line 1465 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1676 "Zend/zend_language_scanner.c"
+#line 1681 "Zend/zend_language_scanner.c"
 yy68:
                YYDEBUG(68, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1686,14 +1691,14 @@ yy70:
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1836 "Zend/zend_language_scanner.l"
+#line 1841 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1697 "Zend/zend_language_scanner.c"
+#line 1702 "Zend/zend_language_scanner.c"
 yy72:
                YYDEBUG(72, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1711,14 +1716,14 @@ yy73:
                ++YYCURSOR;
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1827 "Zend/zend_language_scanner.l"
+#line 1832 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1722 "Zend/zend_language_scanner.c"
+#line 1727 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
@@ -1786,7 +1791,7 @@ yy77:
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2155 "Zend/zend_language_scanner.l"
+#line 2162 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1835,7 +1840,7 @@ double_quotes_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1839 "Zend/zend_language_scanner.c"
+#line 1844 "Zend/zend_language_scanner.c"
 yy79:
                YYDEBUG(79, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1846,12 +1851,12 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2144 "Zend/zend_language_scanner.l"
+#line 2151 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
 }
-#line 1855 "Zend/zend_language_scanner.c"
+#line 1860 "Zend/zend_language_scanner.c"
 yy82:
                YYDEBUG(82, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1861,14 +1866,14 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2136 "Zend/zend_language_scanner.l"
+#line 2143 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1872 "Zend/zend_language_scanner.c"
+#line 1877 "Zend/zend_language_scanner.c"
 yy85:
                YYDEBUG(85, *YYCURSOR);
                yyaccept = 0;
@@ -1884,23 +1889,23 @@ yy85:
 yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1843 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1893 "Zend/zend_language_scanner.c"
+#line 1898 "Zend/zend_language_scanner.c"
 yy88:
                YYDEBUG(88, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(89, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1462 "Zend/zend_language_scanner.l"
+#line 1465 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1904 "Zend/zend_language_scanner.c"
+#line 1909 "Zend/zend_language_scanner.c"
 yy90:
                YYDEBUG(90, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1914,14 +1919,14 @@ yy92:
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1836 "Zend/zend_language_scanner.l"
+#line 1841 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1925 "Zend/zend_language_scanner.c"
+#line 1930 "Zend/zend_language_scanner.c"
 yy94:
                YYDEBUG(94, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1939,14 +1944,14 @@ yy95:
                ++YYCURSOR;
                YYDEBUG(96, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1827 "Zend/zend_language_scanner.l"
+#line 1832 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1950 "Zend/zend_language_scanner.c"
+#line 1955 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_END_HEREDOC:
@@ -1957,7 +1962,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(100, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2122 "Zend/zend_language_scanner.l"
+#line 2129 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -1970,7 +1975,7 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        return T_END_HEREDOC;
 }
-#line 1974 "Zend/zend_language_scanner.c"
+#line 1979 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
@@ -2032,7 +2037,7 @@ yy103:
 yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2247 "Zend/zend_language_scanner.l"
+#line 2254 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -2105,7 +2110,7 @@ heredoc_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 2109 "Zend/zend_language_scanner.c"
+#line 2114 "Zend/zend_language_scanner.c"
 yy105:
                YYDEBUG(105, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2120,14 +2125,14 @@ yy107:
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2136 "Zend/zend_language_scanner.l"
+#line 2143 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 2131 "Zend/zend_language_scanner.c"
+#line 2136 "Zend/zend_language_scanner.c"
 yy109:
                YYDEBUG(109, *YYCURSOR);
                yyaccept = 0;
@@ -2143,23 +2148,23 @@ yy109:
 yy111:
                YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1843 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 2152 "Zend/zend_language_scanner.c"
+#line 2157 "Zend/zend_language_scanner.c"
 yy112:
                YYDEBUG(112, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(113, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1462 "Zend/zend_language_scanner.l"
+#line 1465 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 2163 "Zend/zend_language_scanner.c"
+#line 2168 "Zend/zend_language_scanner.c"
 yy114:
                YYDEBUG(114, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2173,14 +2178,14 @@ yy116:
                ++YYCURSOR;
                YYDEBUG(117, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1836 "Zend/zend_language_scanner.l"
+#line 1841 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 2184 "Zend/zend_language_scanner.c"
+#line 2189 "Zend/zend_language_scanner.c"
 yy118:
                YYDEBUG(118, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2198,14 +2203,14 @@ yy119:
                ++YYCURSOR;
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1827 "Zend/zend_language_scanner.l"
+#line 1832 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 2209 "Zend/zend_language_scanner.c"
+#line 2214 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
@@ -2388,12 +2393,12 @@ yy123:
 yy124:
                YYDEBUG(124, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1865 "Zend/zend_language_scanner.l"
+#line 1870 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 2397 "Zend/zend_language_scanner.c"
+#line 2402 "Zend/zend_language_scanner.c"
 yy125:
                YYDEBUG(125, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2625,11 +2630,11 @@ yy138:
 yy139:
                YYDEBUG(139, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1451 "Zend/zend_language_scanner.l"
+#line 1454 "Zend/zend_language_scanner.l"
                {
        return yytext[0];
 }
-#line 2633 "Zend/zend_language_scanner.c"
+#line 2638 "Zend/zend_language_scanner.c"
 yy140:
                YYDEBUG(140, *YYCURSOR);
                ++YYCURSOR;
@@ -2638,14 +2643,14 @@ yy140:
 yy141:
                YYDEBUG(141, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1180 "Zend/zend_language_scanner.l"
+#line 1183 "Zend/zend_language_scanner.l"
                {
 //???  ZVAL_STRINGL(zendlval, yytext, yyleng);
        ZVAL_EMPTY_STRING(zendlval); /* tricky way to no copying - intentional */ 
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 2649 "Zend/zend_language_scanner.c"
+#line 2654 "Zend/zend_language_scanner.c"
 yy142:
                YYDEBUG(142, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2656,11 +2661,11 @@ yy143:
                ++YYCURSOR;
                YYDEBUG(144, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1207 "Zend/zend_language_scanner.l"
+#line 1210 "Zend/zend_language_scanner.l"
                {
        return T_NS_SEPARATOR;
 }
-#line 2664 "Zend/zend_language_scanner.c"
+#line 2669 "Zend/zend_language_scanner.c"
 yy145:
                YYDEBUG(145, *YYCURSOR);
                yyaccept = 1;
@@ -2893,18 +2898,18 @@ yy168:
                ++YYCURSOR;
                YYDEBUG(169, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1456 "Zend/zend_language_scanner.l"
+#line 1459 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return '{';
 }
-#line 2902 "Zend/zend_language_scanner.c"
+#line 2907 "Zend/zend_language_scanner.c"
 yy170:
                YYDEBUG(170, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1468 "Zend/zend_language_scanner.l"
+#line 1471 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -2912,7 +2917,7 @@ yy170:
        }
        return '}';
 }
-#line 2916 "Zend/zend_language_scanner.c"
+#line 2921 "Zend/zend_language_scanner.c"
 yy172:
                YYDEBUG(172, *YYCURSOR);
                yyaccept = 2;
@@ -2940,7 +2945,7 @@ yy172:
 yy173:
                YYDEBUG(173, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1516 "Zend/zend_language_scanner.l"
+#line 1519 "Zend/zend_language_scanner.l"
                {
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
                ZVAL_LONG(zendlval, strtol(yytext, NULL, 0));
@@ -2958,7 +2963,7 @@ yy173:
        }
        return T_LNUMBER;
 }
-#line 2962 "Zend/zend_language_scanner.c"
+#line 2967 "Zend/zend_language_scanner.c"
 yy174:
                YYDEBUG(174, *YYCURSOR);
                yyaccept = 2;
@@ -2986,7 +2991,7 @@ yy176:
 yy177:
                YYDEBUG(177, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1871 "Zend/zend_language_scanner.l"
+#line 1876 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -3020,14 +3025,14 @@ yy177:
 
        return T_COMMENT;
 }
-#line 3024 "Zend/zend_language_scanner.c"
+#line 3029 "Zend/zend_language_scanner.c"
 yy178:
                YYDEBUG(178, *YYCURSOR);
                ++YYCURSOR;
 yy179:
                YYDEBUG(179, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1959 "Zend/zend_language_scanner.l"
+#line 1964 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -3086,21 +3091,23 @@ yy179:
 
        if (SCNG(output_filter)) {
                size_t sz = 0;
+               char *str = NULL;
                s = Z_STRVAL_P(zendlval);
-               SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC);
-               Z_STRLEN_P(zendlval) = sz;
+               //??? use zend_string saving memalloc
+               SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC);
+               ZVAL_STRINGL(zendlval, str, sz);
                efree(s);
        }
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 3097 "Zend/zend_language_scanner.c"
+#line 3104 "Zend/zend_language_scanner.c"
 yy180:
                YYDEBUG(180, *YYCURSOR);
                ++YYCURSOR;
 yy181:
                YYDEBUG(181, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2026 "Zend/zend_language_scanner.l"
+#line 2033 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -3141,24 +3148,24 @@ yy181:
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
 }
-#line 3145 "Zend/zend_language_scanner.c"
+#line 3152 "Zend/zend_language_scanner.c"
 yy182:
                YYDEBUG(182, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(183, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2116 "Zend/zend_language_scanner.l"
+#line 2123 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
 }
-#line 3156 "Zend/zend_language_scanner.c"
+#line 3163 "Zend/zend_language_scanner.c"
 yy184:
                YYDEBUG(184, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(185, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2378 "Zend/zend_language_scanner.l"
+#line 2385 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -3167,7 +3174,7 @@ yy184:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 3171 "Zend/zend_language_scanner.c"
+#line 3178 "Zend/zend_language_scanner.c"
 yy186:
                YYDEBUG(186, *YYCURSOR);
                ++YYCURSOR;
@@ -3194,12 +3201,12 @@ yy188:
 yy190:
                YYDEBUG(190, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1571 "Zend/zend_language_scanner.l"
+#line 1574 "Zend/zend_language_scanner.l"
                {
        ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
        return T_DNUMBER;
 }
-#line 3203 "Zend/zend_language_scanner.c"
+#line 3210 "Zend/zend_language_scanner.c"
 yy191:
                YYDEBUG(191, *YYCURSOR);
                yyaccept = 2;
@@ -3291,7 +3298,7 @@ yy200:
                }
                YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1493 "Zend/zend_language_scanner.l"
+#line 1496 "Zend/zend_language_scanner.l"
                {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
@@ -3314,7 +3321,7 @@ yy200:
                return T_DNUMBER;
        }
 }
-#line 3318 "Zend/zend_language_scanner.c"
+#line 3325 "Zend/zend_language_scanner.c"
 yy203:
                YYDEBUG(203, *YYCURSOR);
                ++YYCURSOR;
@@ -3326,7 +3333,7 @@ yy203:
                }
                YYDEBUG(205, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1534 "Zend/zend_language_scanner.l"
+#line 1537 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -3349,7 +3356,7 @@ yy203:
                return T_DNUMBER;
        }
 }
-#line 3353 "Zend/zend_language_scanner.c"
+#line 3360 "Zend/zend_language_scanner.c"
 yy206:
                YYDEBUG(206, *YYCURSOR);
                ++YYCURSOR;
@@ -3358,14 +3365,14 @@ yy206:
 yy207:
                YYDEBUG(207, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1938 "Zend/zend_language_scanner.l"
+#line 1943 "Zend/zend_language_scanner.l"
                {
 //???  ZVAL_STRINGL(zendlval, yytext, yyleng);
        ZVAL_EMPTY_STRING(zendlval); /* tricky way to no copying - intentional */ 
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 3369 "Zend/zend_language_scanner.c"
+#line 3376 "Zend/zend_language_scanner.c"
 yy208:
                YYDEBUG(208, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3399,12 +3406,12 @@ yy210:
 yy212:
                YYDEBUG(212, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1843 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 3408 "Zend/zend_language_scanner.c"
+#line 3415 "Zend/zend_language_scanner.c"
 yy213:
                YYDEBUG(213, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3418,11 +3425,11 @@ yy214:
                }
                YYDEBUG(215, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1439 "Zend/zend_language_scanner.l"
+#line 1442 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_XOR;
 }
-#line 3426 "Zend/zend_language_scanner.c"
+#line 3433 "Zend/zend_language_scanner.c"
 yy216:
                YYDEBUG(216, *YYCURSOR);
                ++YYCURSOR;
@@ -3431,61 +3438,61 @@ yy216:
                }
                YYDEBUG(217, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1431 "Zend/zend_language_scanner.l"
+#line 1434 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_OR;
 }
-#line 3439 "Zend/zend_language_scanner.c"
+#line 3446 "Zend/zend_language_scanner.c"
 yy218:
                YYDEBUG(218, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(219, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1419 "Zend/zend_language_scanner.l"
+#line 1422 "Zend/zend_language_scanner.l"
                {
        return T_XOR_EQUAL;
 }
-#line 3449 "Zend/zend_language_scanner.c"
+#line 3456 "Zend/zend_language_scanner.c"
 yy220:
                YYDEBUG(220, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(221, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1423 "Zend/zend_language_scanner.l"
+#line 1426 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_OR;
 }
-#line 3459 "Zend/zend_language_scanner.c"
+#line 3466 "Zend/zend_language_scanner.c"
 yy222:
                YYDEBUG(222, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(223, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1415 "Zend/zend_language_scanner.l"
+#line 1418 "Zend/zend_language_scanner.l"
                {
        return T_OR_EQUAL;
 }
-#line 3469 "Zend/zend_language_scanner.c"
+#line 3476 "Zend/zend_language_scanner.c"
 yy224:
                YYDEBUG(224, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(225, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1427 "Zend/zend_language_scanner.l"
+#line 1430 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_AND;
 }
-#line 3479 "Zend/zend_language_scanner.c"
+#line 3486 "Zend/zend_language_scanner.c"
 yy226:
                YYDEBUG(226, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(227, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1411 "Zend/zend_language_scanner.l"
+#line 1414 "Zend/zend_language_scanner.l"
                {
        return T_AND_EQUAL;
 }
-#line 3489 "Zend/zend_language_scanner.c"
+#line 3496 "Zend/zend_language_scanner.c"
 yy228:
                YYDEBUG(228, *YYCURSOR);
                ++YYCURSOR;
@@ -3494,7 +3501,7 @@ yy228:
 yy229:
                YYDEBUG(229, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1946 "Zend/zend_language_scanner.l"
+#line 1951 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -3506,17 +3513,17 @@ yy229:
                return yytext[0];
        }
 }
-#line 3510 "Zend/zend_language_scanner.c"
+#line 3517 "Zend/zend_language_scanner.c"
 yy230:
                YYDEBUG(230, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(231, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1399 "Zend/zend_language_scanner.l"
+#line 1402 "Zend/zend_language_scanner.l"
                {
        return T_MOD_EQUAL;
 }
-#line 3520 "Zend/zend_language_scanner.c"
+#line 3527 "Zend/zend_language_scanner.c"
 yy232:
                YYDEBUG(232, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3534,7 +3541,7 @@ yy234:
 yy235:
                YYDEBUG(235, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1905 "Zend/zend_language_scanner.l"
+#line 1910 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3567,7 +3574,7 @@ yy235:
 
        return T_COMMENT;
 }
-#line 3571 "Zend/zend_language_scanner.c"
+#line 3578 "Zend/zend_language_scanner.c"
 yy236:
                YYDEBUG(236, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3577,11 +3584,11 @@ yy237:
                ++YYCURSOR;
                YYDEBUG(238, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1391 "Zend/zend_language_scanner.l"
+#line 1394 "Zend/zend_language_scanner.l"
                {
        return T_DIV_EQUAL;
 }
-#line 3585 "Zend/zend_language_scanner.c"
+#line 3592 "Zend/zend_language_scanner.c"
 yy239:
                YYDEBUG(239, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3604,42 +3611,42 @@ yy242:
                ++YYCURSOR;
                YYDEBUG(243, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1387 "Zend/zend_language_scanner.l"
+#line 1390 "Zend/zend_language_scanner.l"
                {
        return T_MUL_EQUAL;
 }
-#line 3612 "Zend/zend_language_scanner.c"
+#line 3619 "Zend/zend_language_scanner.c"
 yy244:
                YYDEBUG(244, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy248;
                YYDEBUG(245, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1447 "Zend/zend_language_scanner.l"
+#line 1450 "Zend/zend_language_scanner.l"
                {
        return T_SR;
 }
-#line 3623 "Zend/zend_language_scanner.c"
+#line 3630 "Zend/zend_language_scanner.c"
 yy246:
                YYDEBUG(246, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(247, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1375 "Zend/zend_language_scanner.l"
+#line 1378 "Zend/zend_language_scanner.l"
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3633 "Zend/zend_language_scanner.c"
+#line 3640 "Zend/zend_language_scanner.c"
 yy248:
                YYDEBUG(248, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(249, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1407 "Zend/zend_language_scanner.l"
+#line 1410 "Zend/zend_language_scanner.l"
                {
        return T_SR_EQUAL;
 }
-#line 3643 "Zend/zend_language_scanner.c"
+#line 3650 "Zend/zend_language_scanner.c"
 yy250:
                YYDEBUG(250, *YYCURSOR);
                yyaccept = 5;
@@ -3650,11 +3657,11 @@ yy250:
 yy251:
                YYDEBUG(251, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1443 "Zend/zend_language_scanner.l"
+#line 1446 "Zend/zend_language_scanner.l"
                {
        return T_SL;
 }
-#line 3658 "Zend/zend_language_scanner.c"
+#line 3665 "Zend/zend_language_scanner.c"
 yy252:
                YYDEBUG(252, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3666,22 +3673,22 @@ yy253:
                ++YYCURSOR;
                YYDEBUG(254, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1371 "Zend/zend_language_scanner.l"
+#line 1374 "Zend/zend_language_scanner.l"
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3674 "Zend/zend_language_scanner.c"
+#line 3681 "Zend/zend_language_scanner.c"
 yy255:
                YYDEBUG(255, *YYCURSOR);
                ++YYCURSOR;
 yy256:
                YYDEBUG(256, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1367 "Zend/zend_language_scanner.l"
+#line 1370 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3685 "Zend/zend_language_scanner.c"
+#line 3692 "Zend/zend_language_scanner.c"
 yy257:
                YYDEBUG(257, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3732,11 +3739,11 @@ yy264:
                ++YYCURSOR;
                YYDEBUG(265, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1403 "Zend/zend_language_scanner.l"
+#line 1406 "Zend/zend_language_scanner.l"
                {
        return T_SL_EQUAL;
 }
-#line 3740 "Zend/zend_language_scanner.c"
+#line 3747 "Zend/zend_language_scanner.c"
 yy266:
                YYDEBUG(266, *YYCURSOR);
                ++YYCURSOR;
@@ -3841,7 +3848,7 @@ yy275:
 yy276:
                YYDEBUG(276, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2068 "Zend/zend_language_scanner.l"
+#line 2075 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3888,7 +3895,7 @@ yy276:
 
        return T_START_HEREDOC;
 }
-#line 3892 "Zend/zend_language_scanner.c"
+#line 3899 "Zend/zend_language_scanner.c"
 yy277:
                YYDEBUG(277, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3928,31 +3935,31 @@ yy280:
                ++YYCURSOR;
                YYDEBUG(282, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1359 "Zend/zend_language_scanner.l"
+#line 1362 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3936 "Zend/zend_language_scanner.c"
+#line 3943 "Zend/zend_language_scanner.c"
 yy283:
                YYDEBUG(283, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(284, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1379 "Zend/zend_language_scanner.l"
+#line 1382 "Zend/zend_language_scanner.l"
                {
        return T_PLUS_EQUAL;
 }
-#line 3946 "Zend/zend_language_scanner.c"
+#line 3953 "Zend/zend_language_scanner.c"
 yy285:
                YYDEBUG(285, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(286, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1347 "Zend/zend_language_scanner.l"
+#line 1350 "Zend/zend_language_scanner.l"
                {
        return T_INC;
 }
-#line 3956 "Zend/zend_language_scanner.c"
+#line 3963 "Zend/zend_language_scanner.c"
 yy287:
                YYDEBUG(287, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3971,42 +3978,42 @@ yy289:
                }
                YYDEBUG(290, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1335 "Zend/zend_language_scanner.l"
+#line 1338 "Zend/zend_language_scanner.l"
                {
        return T_LIST;
 }
-#line 3979 "Zend/zend_language_scanner.c"
+#line 3986 "Zend/zend_language_scanner.c"
 yy291:
                YYDEBUG(291, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy295;
                YYDEBUG(292, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1363 "Zend/zend_language_scanner.l"
+#line 1366 "Zend/zend_language_scanner.l"
                {
        return T_IS_EQUAL;
 }
-#line 3990 "Zend/zend_language_scanner.c"
+#line 3997 "Zend/zend_language_scanner.c"
 yy293:
                YYDEBUG(293, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(294, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1331 "Zend/zend_language_scanner.l"
+#line 1334 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_ARROW;
 }
-#line 4000 "Zend/zend_language_scanner.c"
+#line 4007 "Zend/zend_language_scanner.c"
 yy295:
                YYDEBUG(295, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(296, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1355 "Zend/zend_language_scanner.l"
+#line 1358 "Zend/zend_language_scanner.l"
                {
        return T_IS_IDENTICAL;
 }
-#line 4010 "Zend/zend_language_scanner.c"
+#line 4017 "Zend/zend_language_scanner.c"
 yy297:
                YYDEBUG(297, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4136,7 +4143,7 @@ yy313:
                }
                YYDEBUG(316, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1686 "Zend/zend_language_scanner.l"
+#line 1689 "Zend/zend_language_scanner.l"
                {
        if (Z_TYPE(CG(current_namespace)) != IS_UNDEF) {
                ZVAL_DUP(zendlval, &CG(current_namespace));
@@ -4145,7 +4152,7 @@ yy313:
        }
        return T_NS_C;
 }
-#line 4149 "Zend/zend_language_scanner.c"
+#line 4156 "Zend/zend_language_scanner.c"
 yy317:
                YYDEBUG(317, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4165,7 +4172,7 @@ yy318:
                }
                YYDEBUG(321, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1661 "Zend/zend_language_scanner.l"
+#line 1664 "Zend/zend_language_scanner.l"
                {
        zend_string *filename = zend_get_compiled_filename(TSRMLS_C);
        zend_string *dirname;
@@ -4190,7 +4197,7 @@ yy318:
        ZVAL_STR(zendlval, dirname);
        return T_DIR;
 }
-#line 4194 "Zend/zend_language_scanner.c"
+#line 4201 "Zend/zend_language_scanner.c"
 yy322:
                YYDEBUG(322, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4215,12 +4222,12 @@ yy324:
                }
                YYDEBUG(327, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1645 "Zend/zend_language_scanner.l"
+#line 1648 "Zend/zend_language_scanner.l"
                {
        ZVAL_LONG(zendlval, CG(zend_lineno));
        return T_LINE;
 }
-#line 4224 "Zend/zend_language_scanner.c"
+#line 4231 "Zend/zend_language_scanner.c"
 yy328:
                YYDEBUG(328, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4255,7 +4262,7 @@ yy332:
                }
                YYDEBUG(335, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1613 "Zend/zend_language_scanner.l"
+#line 1616 "Zend/zend_language_scanner.l"
                {
        if (CG(active_class_entry)) {
                int len = 0;
@@ -4287,7 +4294,7 @@ yy332:
        }
        return T_METHOD_C;
 }
-#line 4291 "Zend/zend_language_scanner.c"
+#line 4298 "Zend/zend_language_scanner.c"
 yy336:
                YYDEBUG(336, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4338,7 +4345,7 @@ yy343:
                }
                YYDEBUG(346, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1603 "Zend/zend_language_scanner.l"
+#line 1606 "Zend/zend_language_scanner.l"
                {
        zend_op_array *op_array = CG(active_op_array);
        if (op_array && op_array->function_name) {
@@ -4348,7 +4355,7 @@ yy343:
        }
        return T_FUNC_C;
 }
-#line 4352 "Zend/zend_language_scanner.c"
+#line 4359 "Zend/zend_language_scanner.c"
 yy347:
                YYDEBUG(347, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4368,7 +4375,7 @@ yy348:
                }
                YYDEBUG(351, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1650 "Zend/zend_language_scanner.l"
+#line 1653 "Zend/zend_language_scanner.l"
                {
        zend_string *filename = zend_get_compiled_filename(TSRMLS_C);
 
@@ -4379,7 +4386,7 @@ yy348:
        }
        return T_FILE;
 }
-#line 4383 "Zend/zend_language_scanner.c"
+#line 4390 "Zend/zend_language_scanner.c"
 yy352:
                YYDEBUG(352, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4409,7 +4416,7 @@ yy355:
                }
                YYDEBUG(358, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1593 "Zend/zend_language_scanner.l"
+#line 1596 "Zend/zend_language_scanner.l"
                {
        zend_class_entry *ce = CG(active_class_entry);
        if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) {
@@ -4419,7 +4426,7 @@ yy355:
        }
        return T_TRAIT_C;
 }
-#line 4423 "Zend/zend_language_scanner.c"
+#line 4430 "Zend/zend_language_scanner.c"
 yy359:
                YYDEBUG(359, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4449,7 +4456,7 @@ yy362:
                }
                YYDEBUG(365, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1576 "Zend/zend_language_scanner.l"
+#line 1579 "Zend/zend_language_scanner.l"
                {
        zend_class_entry *ce = CG(active_class_entry);
        if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) {
@@ -4466,7 +4473,7 @@ yy362:
        }
        return T_CLASS_C;
 }
-#line 4470 "Zend/zend_language_scanner.c"
+#line 4477 "Zend/zend_language_scanner.c"
 yy366:
                YYDEBUG(366, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4528,11 +4535,11 @@ yy377:
                }
                YYDEBUG(378, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1299 "Zend/zend_language_scanner.l"
+#line 1302 "Zend/zend_language_scanner.l"
                {
        return T_HALT_COMPILER;
 }
-#line 4536 "Zend/zend_language_scanner.c"
+#line 4543 "Zend/zend_language_scanner.c"
 yy379:
                YYDEBUG(379, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4552,11 +4559,11 @@ yy381:
                }
                YYDEBUG(382, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1279 "Zend/zend_language_scanner.l"
+#line 1282 "Zend/zend_language_scanner.l"
                {
        return T_USE;
 }
-#line 4560 "Zend/zend_language_scanner.c"
+#line 4567 "Zend/zend_language_scanner.c"
 yy383:
                YYDEBUG(383, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4575,11 +4582,11 @@ yy385:
                }
                YYDEBUG(386, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1327 "Zend/zend_language_scanner.l"
+#line 1330 "Zend/zend_language_scanner.l"
                {
        return T_UNSET;
 }
-#line 4583 "Zend/zend_language_scanner.c"
+#line 4590 "Zend/zend_language_scanner.c"
 yy387:
                YYDEBUG(387, *YYCURSOR);
                ++YYCURSOR;
@@ -4751,11 +4758,11 @@ yy402:
                ++YYCURSOR;
                YYDEBUG(404, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1227 "Zend/zend_language_scanner.l"
+#line 1230 "Zend/zend_language_scanner.l"
                {
        return T_INT_CAST;
 }
-#line 4759 "Zend/zend_language_scanner.c"
+#line 4766 "Zend/zend_language_scanner.c"
 yy405:
                YYDEBUG(405, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4799,11 +4806,11 @@ yy410:
                ++YYCURSOR;
                YYDEBUG(413, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1231 "Zend/zend_language_scanner.l"
+#line 1234 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_CAST;
 }
-#line 4807 "Zend/zend_language_scanner.c"
+#line 4814 "Zend/zend_language_scanner.c"
 yy414:
                YYDEBUG(414, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4873,11 +4880,11 @@ yy424:
                ++YYCURSOR;
                YYDEBUG(427, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1235 "Zend/zend_language_scanner.l"
+#line 1238 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
 }
-#line 4881 "Zend/zend_language_scanner.c"
+#line 4888 "Zend/zend_language_scanner.c"
 yy428:
                YYDEBUG(428, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4910,11 +4917,11 @@ yy431:
                ++YYCURSOR;
                YYDEBUG(434, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1239 "Zend/zend_language_scanner.l"
+#line 1242 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY_CAST;
 }
-#line 4918 "Zend/zend_language_scanner.c"
+#line 4925 "Zend/zend_language_scanner.c"
 yy435:
                YYDEBUG(435, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4952,11 +4959,11 @@ yy439:
                ++YYCURSOR;
                YYDEBUG(442, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1243 "Zend/zend_language_scanner.l"
+#line 1246 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_CAST;
 }
-#line 4960 "Zend/zend_language_scanner.c"
+#line 4967 "Zend/zend_language_scanner.c"
 yy443:
                YYDEBUG(443, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4997,11 +5004,11 @@ yy448:
                ++YYCURSOR;
                YYDEBUG(450, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1247 "Zend/zend_language_scanner.l"
+#line 1250 "Zend/zend_language_scanner.l"
                {
        return T_BOOL_CAST;
 }
-#line 5005 "Zend/zend_language_scanner.c"
+#line 5012 "Zend/zend_language_scanner.c"
 yy451:
                YYDEBUG(451, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5061,11 +5068,11 @@ yy459:
                ++YYCURSOR;
                YYDEBUG(462, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1251 "Zend/zend_language_scanner.l"
+#line 1254 "Zend/zend_language_scanner.l"
                {
        return T_UNSET_CAST;
 }
-#line 5069 "Zend/zend_language_scanner.c"
+#line 5076 "Zend/zend_language_scanner.c"
 yy463:
                YYDEBUG(463, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5079,11 +5086,11 @@ yy464:
                }
                YYDEBUG(465, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1223 "Zend/zend_language_scanner.l"
+#line 1226 "Zend/zend_language_scanner.l"
                {
        return T_VAR;
 }
-#line 5087 "Zend/zend_language_scanner.c"
+#line 5094 "Zend/zend_language_scanner.c"
 yy466:
                YYDEBUG(466, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5103,11 +5110,11 @@ yy468:
                }
                YYDEBUG(469, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1215 "Zend/zend_language_scanner.l"
+#line 1218 "Zend/zend_language_scanner.l"
                {
        return T_NEW;
 }
-#line 5111 "Zend/zend_language_scanner.c"
+#line 5118 "Zend/zend_language_scanner.c"
 yy470:
                YYDEBUG(470, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5146,11 +5153,11 @@ yy476:
                }
                YYDEBUG(477, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1275 "Zend/zend_language_scanner.l"
+#line 1278 "Zend/zend_language_scanner.l"
                {
        return T_NAMESPACE;
 }
-#line 5154 "Zend/zend_language_scanner.c"
+#line 5161 "Zend/zend_language_scanner.c"
 yy478:
                YYDEBUG(478, *YYCURSOR);
                yyaccept = 3;
@@ -5172,11 +5179,11 @@ yy480:
                ++YYCURSOR;
                YYDEBUG(481, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1395 "Zend/zend_language_scanner.l"
+#line 1398 "Zend/zend_language_scanner.l"
                {
        return T_CONCAT_EQUAL;
 }
-#line 5180 "Zend/zend_language_scanner.c"
+#line 5187 "Zend/zend_language_scanner.c"
 yy482:
                YYDEBUG(482, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5185,21 +5192,21 @@ yy482:
                ++YYCURSOR;
                YYDEBUG(484, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1211 "Zend/zend_language_scanner.l"
+#line 1214 "Zend/zend_language_scanner.l"
                {
        return T_ELLIPSIS;
 }
-#line 5193 "Zend/zend_language_scanner.c"
+#line 5200 "Zend/zend_language_scanner.c"
 yy485:
                YYDEBUG(485, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(486, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1203 "Zend/zend_language_scanner.l"
+#line 1206 "Zend/zend_language_scanner.l"
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 5203 "Zend/zend_language_scanner.c"
+#line 5210 "Zend/zend_language_scanner.c"
 yy487:
                YYDEBUG(487, *YYCURSOR);
                ++YYCURSOR;
@@ -5221,32 +5228,32 @@ yy489:
                ++YYCURSOR;
                YYDEBUG(490, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1383 "Zend/zend_language_scanner.l"
+#line 1386 "Zend/zend_language_scanner.l"
                {
        return T_MINUS_EQUAL;
 }
-#line 5229 "Zend/zend_language_scanner.c"
+#line 5236 "Zend/zend_language_scanner.c"
 yy491:
                YYDEBUG(491, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(492, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1351 "Zend/zend_language_scanner.l"
+#line 1354 "Zend/zend_language_scanner.l"
                {
        return T_DEC;
 }
-#line 5239 "Zend/zend_language_scanner.c"
+#line 5246 "Zend/zend_language_scanner.c"
 yy493:
                YYDEBUG(493, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(494, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1175 "Zend/zend_language_scanner.l"
+#line 1178 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 5250 "Zend/zend_language_scanner.c"
+#line 5257 "Zend/zend_language_scanner.c"
 yy495:
                YYDEBUG(495, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5291,11 +5298,11 @@ yy500:
                }
                YYDEBUG(501, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1323 "Zend/zend_language_scanner.l"
+#line 1326 "Zend/zend_language_scanner.l"
                {
        return T_PUBLIC;
 }
-#line 5299 "Zend/zend_language_scanner.c"
+#line 5306 "Zend/zend_language_scanner.c"
 yy502:
                YYDEBUG(502, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5350,11 +5357,11 @@ yy509:
                }
                YYDEBUG(510, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1319 "Zend/zend_language_scanner.l"
+#line 1322 "Zend/zend_language_scanner.l"
                {
        return T_PROTECTED;
 }
-#line 5358 "Zend/zend_language_scanner.c"
+#line 5365 "Zend/zend_language_scanner.c"
 yy511:
                YYDEBUG(511, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5384,11 +5391,11 @@ yy515:
                }
                YYDEBUG(516, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1315 "Zend/zend_language_scanner.l"
+#line 1318 "Zend/zend_language_scanner.l"
                {
        return T_PRIVATE;
 }
-#line 5392 "Zend/zend_language_scanner.c"
+#line 5399 "Zend/zend_language_scanner.c"
 yy517:
                YYDEBUG(517, *YYCURSOR);
                ++YYCURSOR;
@@ -5397,11 +5404,11 @@ yy517:
                }
                YYDEBUG(518, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1151 "Zend/zend_language_scanner.l"
+#line 1154 "Zend/zend_language_scanner.l"
                {
        return T_PRINT;
 }
-#line 5405 "Zend/zend_language_scanner.c"
+#line 5412 "Zend/zend_language_scanner.c"
 yy519:
                YYDEBUG(519, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5426,11 +5433,11 @@ yy522:
                }
                YYDEBUG(523, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1143 "Zend/zend_language_scanner.l"
+#line 1146 "Zend/zend_language_scanner.l"
                {
        return T_GOTO;
 }
-#line 5434 "Zend/zend_language_scanner.c"
+#line 5441 "Zend/zend_language_scanner.c"
 yy524:
                YYDEBUG(524, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5454,11 +5461,11 @@ yy527:
                }
                YYDEBUG(528, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1287 "Zend/zend_language_scanner.l"
+#line 1290 "Zend/zend_language_scanner.l"
                {
        return T_GLOBAL;
 }
-#line 5462 "Zend/zend_language_scanner.c"
+#line 5469 "Zend/zend_language_scanner.c"
 yy529:
                YYDEBUG(529, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5495,11 +5502,11 @@ yy535:
                }
                YYDEBUG(536, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1135 "Zend/zend_language_scanner.l"
+#line 1138 "Zend/zend_language_scanner.l"
                {
        return T_BREAK;
 }
-#line 5503 "Zend/zend_language_scanner.c"
+#line 5510 "Zend/zend_language_scanner.c"
 yy537:
                YYDEBUG(537, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5539,11 +5546,11 @@ yy543:
                }
                YYDEBUG(544, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1119 "Zend/zend_language_scanner.l"
+#line 1122 "Zend/zend_language_scanner.l"
                {
        return T_SWITCH;
 }
-#line 5547 "Zend/zend_language_scanner.c"
+#line 5554 "Zend/zend_language_scanner.c"
 yy545:
                YYDEBUG(545, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5567,11 +5574,11 @@ yy548:
                }
                YYDEBUG(549, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1303 "Zend/zend_language_scanner.l"
+#line 1306 "Zend/zend_language_scanner.l"
                {
        return T_STATIC;
 }
-#line 5575 "Zend/zend_language_scanner.c"
+#line 5582 "Zend/zend_language_scanner.c"
 yy550:
                YYDEBUG(550, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5598,11 +5605,11 @@ yy553:
                }
                YYDEBUG(554, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1115 "Zend/zend_language_scanner.l"
+#line 1118 "Zend/zend_language_scanner.l"
                {
        return T_AS;
 }
-#line 5606 "Zend/zend_language_scanner.c"
+#line 5613 "Zend/zend_language_scanner.c"
 yy555:
                YYDEBUG(555, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5621,11 +5628,11 @@ yy557:
                }
                YYDEBUG(558, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1339 "Zend/zend_language_scanner.l"
+#line 1342 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY;
 }
-#line 5629 "Zend/zend_language_scanner.c"
+#line 5636 "Zend/zend_language_scanner.c"
 yy559:
                YYDEBUG(559, *YYCURSOR);
                ++YYCURSOR;
@@ -5634,11 +5641,11 @@ yy559:
                }
                YYDEBUG(560, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1435 "Zend/zend_language_scanner.l"
+#line 1438 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_AND;
 }
-#line 5642 "Zend/zend_language_scanner.c"
+#line 5649 "Zend/zend_language_scanner.c"
 yy561:
                YYDEBUG(561, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5672,11 +5679,11 @@ yy566:
                }
                YYDEBUG(567, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1307 "Zend/zend_language_scanner.l"
+#line 1310 "Zend/zend_language_scanner.l"
                {
        return T_ABSTRACT;
 }
-#line 5680 "Zend/zend_language_scanner.c"
+#line 5687 "Zend/zend_language_scanner.c"
 yy568:
                YYDEBUG(568, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5700,11 +5707,11 @@ yy571:
                }
                YYDEBUG(572, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1075 "Zend/zend_language_scanner.l"
+#line 1078 "Zend/zend_language_scanner.l"
                {
        return T_WHILE;
 }
-#line 5708 "Zend/zend_language_scanner.c"
+#line 5715 "Zend/zend_language_scanner.c"
 yy573:
                YYDEBUG(573, *YYCURSOR);
                ++YYCURSOR;
@@ -5713,11 +5720,11 @@ yy573:
                }
                YYDEBUG(574, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1059 "Zend/zend_language_scanner.l"
+#line 1062 "Zend/zend_language_scanner.l"
                {
        return T_IF;
 }
-#line 5721 "Zend/zend_language_scanner.c"
+#line 5728 "Zend/zend_language_scanner.c"
 yy575:
                YYDEBUG(575, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5769,11 +5776,11 @@ yy580:
                }
                YYDEBUG(581, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1291 "Zend/zend_language_scanner.l"
+#line 1294 "Zend/zend_language_scanner.l"
                {
        return T_ISSET;
 }
-#line 5777 "Zend/zend_language_scanner.c"
+#line 5784 "Zend/zend_language_scanner.c"
 yy582:
                YYDEBUG(582, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5827,11 +5834,11 @@ yy588:
 yy589:
                YYDEBUG(589, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1259 "Zend/zend_language_scanner.l"
+#line 1262 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE;
 }
-#line 5835 "Zend/zend_language_scanner.c"
+#line 5842 "Zend/zend_language_scanner.c"
 yy590:
                YYDEBUG(590, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5860,11 +5867,11 @@ yy594:
                }
                YYDEBUG(595, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1263 "Zend/zend_language_scanner.l"
+#line 1266 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE_ONCE;
 }
-#line 5868 "Zend/zend_language_scanner.c"
+#line 5875 "Zend/zend_language_scanner.c"
 yy596:
                YYDEBUG(596, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5898,11 +5905,11 @@ yy601:
                }
                YYDEBUG(602, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1159 "Zend/zend_language_scanner.l"
+#line 1162 "Zend/zend_language_scanner.l"
                {
        return T_INTERFACE;
 }
-#line 5906 "Zend/zend_language_scanner.c"
+#line 5913 "Zend/zend_language_scanner.c"
 yy603:
                YYDEBUG(603, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5952,11 +5959,11 @@ yy609:
                }
                YYDEBUG(610, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1283 "Zend/zend_language_scanner.l"
+#line 1286 "Zend/zend_language_scanner.l"
                {
         return T_INSTEADOF;
 }
-#line 5960 "Zend/zend_language_scanner.c"
+#line 5967 "Zend/zend_language_scanner.c"
 yy611:
                YYDEBUG(611, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5985,11 +5992,11 @@ yy615:
                }
                YYDEBUG(616, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1111 "Zend/zend_language_scanner.l"
+#line 1114 "Zend/zend_language_scanner.l"
                {
        return T_INSTANCEOF;
 }
-#line 5993 "Zend/zend_language_scanner.c"
+#line 6000 "Zend/zend_language_scanner.c"
 yy617:
                YYDEBUG(617, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6033,11 +6040,11 @@ yy624:
                }
                YYDEBUG(625, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1171 "Zend/zend_language_scanner.l"
+#line 1174 "Zend/zend_language_scanner.l"
                {
        return T_IMPLEMENTS;
 }
-#line 6041 "Zend/zend_language_scanner.c"
+#line 6048 "Zend/zend_language_scanner.c"
 yy626:
                YYDEBUG(626, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6065,11 +6072,11 @@ yy627:
                }
                YYDEBUG(629, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1043 "Zend/zend_language_scanner.l"
+#line 1046 "Zend/zend_language_scanner.l"
                {
        return T_TRY;
 }
-#line 6073 "Zend/zend_language_scanner.c"
+#line 6080 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6088,11 +6095,11 @@ yy632:
                }
                YYDEBUG(633, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1163 "Zend/zend_language_scanner.l"
+#line 1166 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT;
 }
-#line 6096 "Zend/zend_language_scanner.c"
+#line 6103 "Zend/zend_language_scanner.c"
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6111,11 +6118,11 @@ yy636:
                }
                YYDEBUG(637, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1055 "Zend/zend_language_scanner.l"
+#line 1058 "Zend/zend_language_scanner.l"
                {
        return T_THROW;
 }
-#line 6119 "Zend/zend_language_scanner.c"
+#line 6126 "Zend/zend_language_scanner.c"
 yy638:
                YYDEBUG(638, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6139,11 +6146,11 @@ yy641:
                }
                YYDEBUG(642, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1039 "Zend/zend_language_scanner.l"
+#line 1042 "Zend/zend_language_scanner.l"
                {
        return T_YIELD;
 }
-#line 6147 "Zend/zend_language_scanner.c"
+#line 6154 "Zend/zend_language_scanner.c"
 yy643:
                YYDEBUG(643, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6204,11 +6211,11 @@ yy649:
 yy650:
                YYDEBUG(650, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1267 "Zend/zend_language_scanner.l"
+#line 1270 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE;
 }
-#line 6212 "Zend/zend_language_scanner.c"
+#line 6219 "Zend/zend_language_scanner.c"
 yy651:
                YYDEBUG(651, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6237,11 +6244,11 @@ yy655:
                }
                YYDEBUG(656, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1271 "Zend/zend_language_scanner.l"
+#line 1274 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE_ONCE;
 }
-#line 6245 "Zend/zend_language_scanner.c"
+#line 6252 "Zend/zend_language_scanner.c"
 yy657:
                YYDEBUG(657, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6260,11 +6267,11 @@ yy659:
                }
                YYDEBUG(660, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1035 "Zend/zend_language_scanner.l"
+#line 1038 "Zend/zend_language_scanner.l"
                {
        return T_RETURN;
 }
-#line 6268 "Zend/zend_language_scanner.c"
+#line 6275 "Zend/zend_language_scanner.c"
 yy661:
                YYDEBUG(661, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6354,11 +6361,11 @@ yy670:
                }
                YYDEBUG(671, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1139 "Zend/zend_language_scanner.l"
+#line 1142 "Zend/zend_language_scanner.l"
                {
        return T_CONTINUE;
 }
-#line 6362 "Zend/zend_language_scanner.c"
+#line 6369 "Zend/zend_language_scanner.c"
 yy672:
                YYDEBUG(672, *YYCURSOR);
                ++YYCURSOR;
@@ -6367,11 +6374,11 @@ yy672:
                }
                YYDEBUG(673, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1031 "Zend/zend_language_scanner.l"
+#line 1034 "Zend/zend_language_scanner.l"
                {
        return T_CONST;
 }
-#line 6375 "Zend/zend_language_scanner.c"
+#line 6382 "Zend/zend_language_scanner.c"
 yy674:
                YYDEBUG(674, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6396,11 +6403,11 @@ yy677:
                }
                YYDEBUG(678, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1219 "Zend/zend_language_scanner.l"
+#line 1222 "Zend/zend_language_scanner.l"
                {
        return T_CLONE;
 }
-#line 6404 "Zend/zend_language_scanner.c"
+#line 6411 "Zend/zend_language_scanner.c"
 yy679:
                YYDEBUG(679, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6414,11 +6421,11 @@ yy680:
                }
                YYDEBUG(681, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1155 "Zend/zend_language_scanner.l"
+#line 1158 "Zend/zend_language_scanner.l"
                {
        return T_CLASS;
 }
-#line 6422 "Zend/zend_language_scanner.c"
+#line 6429 "Zend/zend_language_scanner.c"
 yy682:
                YYDEBUG(682, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6464,11 +6471,11 @@ yy689:
                }
                YYDEBUG(690, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1343 "Zend/zend_language_scanner.l"
+#line 1346 "Zend/zend_language_scanner.l"
                {
  return T_CALLABLE;
 }
-#line 6472 "Zend/zend_language_scanner.c"
+#line 6479 "Zend/zend_language_scanner.c"
 yy691:
                YYDEBUG(691, *YYCURSOR);
                ++YYCURSOR;
@@ -6477,11 +6484,11 @@ yy691:
                }
                YYDEBUG(692, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1127 "Zend/zend_language_scanner.l"
+#line 1130 "Zend/zend_language_scanner.l"
                {
        return T_CASE;
 }
-#line 6485 "Zend/zend_language_scanner.c"
+#line 6492 "Zend/zend_language_scanner.c"
 yy693:
                YYDEBUG(693, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6495,11 +6502,11 @@ yy694:
                }
                YYDEBUG(695, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1047 "Zend/zend_language_scanner.l"
+#line 1050 "Zend/zend_language_scanner.l"
                {
        return T_CATCH;
 }
-#line 6503 "Zend/zend_language_scanner.c"
+#line 6510 "Zend/zend_language_scanner.c"
 yy696:
                YYDEBUG(696, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6550,11 +6557,11 @@ yy704:
                }
                YYDEBUG(705, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1027 "Zend/zend_language_scanner.l"
+#line 1030 "Zend/zend_language_scanner.l"
                {
        return T_FUNCTION;
 }
-#line 6558 "Zend/zend_language_scanner.c"
+#line 6565 "Zend/zend_language_scanner.c"
 yy706:
                YYDEBUG(706, *YYCURSOR);
                ++YYCURSOR;
@@ -6578,11 +6585,11 @@ yy706:
 yy707:
                YYDEBUG(707, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1087 "Zend/zend_language_scanner.l"
+#line 1090 "Zend/zend_language_scanner.l"
                {
        return T_FOR;
 }
-#line 6586 "Zend/zend_language_scanner.c"
+#line 6593 "Zend/zend_language_scanner.c"
 yy708:
                YYDEBUG(708, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6606,11 +6613,11 @@ yy711:
                }
                YYDEBUG(712, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1095 "Zend/zend_language_scanner.l"
+#line 1098 "Zend/zend_language_scanner.l"
                {
        return T_FOREACH;
 }
-#line 6614 "Zend/zend_language_scanner.c"
+#line 6621 "Zend/zend_language_scanner.c"
 yy713:
                YYDEBUG(713, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6644,11 +6651,11 @@ yy715:
 yy716:
                YYDEBUG(716, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1311 "Zend/zend_language_scanner.l"
+#line 1314 "Zend/zend_language_scanner.l"
                {
        return T_FINAL;
 }
-#line 6652 "Zend/zend_language_scanner.c"
+#line 6659 "Zend/zend_language_scanner.c"
 yy717:
                YYDEBUG(717, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6662,11 +6669,11 @@ yy718:
                }
                YYDEBUG(719, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1051 "Zend/zend_language_scanner.l"
+#line 1054 "Zend/zend_language_scanner.l"
                {
        return T_FINALLY;
 }
-#line 6670 "Zend/zend_language_scanner.c"
+#line 6677 "Zend/zend_language_scanner.c"
 yy720:
                YYDEBUG(720, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6697,11 +6704,11 @@ yy722:
                }
                YYDEBUG(723, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1083 "Zend/zend_language_scanner.l"
+#line 1086 "Zend/zend_language_scanner.l"
                {
        return T_DO;
 }
-#line 6705 "Zend/zend_language_scanner.c"
+#line 6712 "Zend/zend_language_scanner.c"
 yy724:
                YYDEBUG(724, *YYCURSOR);
                ++YYCURSOR;
@@ -6710,11 +6717,11 @@ yy724:
                }
                YYDEBUG(725, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1023 "Zend/zend_language_scanner.l"
+#line 1026 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6718 "Zend/zend_language_scanner.c"
+#line 6725 "Zend/zend_language_scanner.c"
 yy726:
                YYDEBUG(726, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6749,11 +6756,11 @@ yy731:
                }
                YYDEBUG(732, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1131 "Zend/zend_language_scanner.l"
+#line 1134 "Zend/zend_language_scanner.l"
                {
        return T_DEFAULT;
 }
-#line 6757 "Zend/zend_language_scanner.c"
+#line 6764 "Zend/zend_language_scanner.c"
 yy733:
                YYDEBUG(733, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6777,11 +6784,11 @@ yy736:
                }
                YYDEBUG(737, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1103 "Zend/zend_language_scanner.l"
+#line 1106 "Zend/zend_language_scanner.l"
                {
        return T_DECLARE;
 }
-#line 6785 "Zend/zend_language_scanner.c"
+#line 6792 "Zend/zend_language_scanner.c"
 yy738:
                YYDEBUG(738, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6861,11 +6868,11 @@ yy749:
                }
                YYDEBUG(750, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1167 "Zend/zend_language_scanner.l"
+#line 1170 "Zend/zend_language_scanner.l"
                {
        return T_EXTENDS;
 }
-#line 6869 "Zend/zend_language_scanner.c"
+#line 6876 "Zend/zend_language_scanner.c"
 yy751:
                YYDEBUG(751, *YYCURSOR);
                ++YYCURSOR;
@@ -6874,11 +6881,11 @@ yy751:
                }
                YYDEBUG(752, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1019 "Zend/zend_language_scanner.l"
+#line 1022 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6882 "Zend/zend_language_scanner.c"
+#line 6889 "Zend/zend_language_scanner.c"
 yy753:
                YYDEBUG(753, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6892,11 +6899,11 @@ yy754:
                }
                YYDEBUG(755, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1255 "Zend/zend_language_scanner.l"
+#line 1258 "Zend/zend_language_scanner.l"
                {
        return T_EVAL;
 }
-#line 6900 "Zend/zend_language_scanner.c"
+#line 6907 "Zend/zend_language_scanner.c"
 yy756:
                YYDEBUG(756, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6966,11 +6973,11 @@ yy765:
                }
                YYDEBUG(766, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1079 "Zend/zend_language_scanner.l"
+#line 1082 "Zend/zend_language_scanner.l"
                {
        return T_ENDWHILE;
 }
-#line 6974 "Zend/zend_language_scanner.c"
+#line 6981 "Zend/zend_language_scanner.c"
 yy767:
                YYDEBUG(767, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6999,11 +7006,11 @@ yy771:
                }
                YYDEBUG(772, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1123 "Zend/zend_language_scanner.l"
+#line 1126 "Zend/zend_language_scanner.l"
                {
        return T_ENDSWITCH;
 }
-#line 7007 "Zend/zend_language_scanner.c"
+#line 7014 "Zend/zend_language_scanner.c"
 yy773:
                YYDEBUG(773, *YYCURSOR);
                ++YYCURSOR;
@@ -7012,11 +7019,11 @@ yy773:
                }
                YYDEBUG(774, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1067 "Zend/zend_language_scanner.l"
+#line 1070 "Zend/zend_language_scanner.l"
                {
        return T_ENDIF;
 }
-#line 7020 "Zend/zend_language_scanner.c"
+#line 7027 "Zend/zend_language_scanner.c"
 yy775:
                YYDEBUG(775, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7045,11 +7052,11 @@ yy776:
 yy777:
                YYDEBUG(777, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1091 "Zend/zend_language_scanner.l"
+#line 1094 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOR;
 }
-#line 7053 "Zend/zend_language_scanner.c"
+#line 7060 "Zend/zend_language_scanner.c"
 yy778:
                YYDEBUG(778, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7073,11 +7080,11 @@ yy781:
                }
                YYDEBUG(782, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1099 "Zend/zend_language_scanner.l"
+#line 1102 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOREACH;
 }
-#line 7081 "Zend/zend_language_scanner.c"
+#line 7088 "Zend/zend_language_scanner.c"
 yy783:
                YYDEBUG(783, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7111,11 +7118,11 @@ yy788:
                }
                YYDEBUG(789, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1107 "Zend/zend_language_scanner.l"
+#line 1110 "Zend/zend_language_scanner.l"
                {
        return T_ENDDECLARE;
 }
-#line 7119 "Zend/zend_language_scanner.c"
+#line 7126 "Zend/zend_language_scanner.c"
 yy790:
                YYDEBUG(790, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7134,11 +7141,11 @@ yy792:
                }
                YYDEBUG(793, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1295 "Zend/zend_language_scanner.l"
+#line 1298 "Zend/zend_language_scanner.l"
                {
        return T_EMPTY;
 }
-#line 7142 "Zend/zend_language_scanner.c"
+#line 7149 "Zend/zend_language_scanner.c"
 yy794:
                YYDEBUG(794, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7167,11 +7174,11 @@ yy795:
 yy796:
                YYDEBUG(796, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1071 "Zend/zend_language_scanner.l"
+#line 1074 "Zend/zend_language_scanner.l"
                {
        return T_ELSE;
 }
-#line 7175 "Zend/zend_language_scanner.c"
+#line 7182 "Zend/zend_language_scanner.c"
 yy797:
                YYDEBUG(797, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7185,11 +7192,11 @@ yy798:
                }
                YYDEBUG(799, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1063 "Zend/zend_language_scanner.l"
+#line 1066 "Zend/zend_language_scanner.l"
                {
        return T_ELSEIF;
 }
-#line 7193 "Zend/zend_language_scanner.c"
+#line 7200 "Zend/zend_language_scanner.c"
 yy800:
                YYDEBUG(800, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7203,11 +7210,11 @@ yy801:
                }
                YYDEBUG(802, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1147 "Zend/zend_language_scanner.l"
+#line 1150 "Zend/zend_language_scanner.l"
                {
        return T_ECHO;
 }
-#line 7211 "Zend/zend_language_scanner.c"
+#line 7218 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7280,14 +7287,14 @@ yy805:
 yy806:
                YYDEBUG(806, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1180 "Zend/zend_language_scanner.l"
+#line 1183 "Zend/zend_language_scanner.l"
                {
 //???  ZVAL_STRINGL(zendlval, yytext, yyleng);
        ZVAL_EMPTY_STRING(zendlval); /* tricky way to no copying - intentional */ 
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7291 "Zend/zend_language_scanner.c"
+#line 7298 "Zend/zend_language_scanner.c"
 yy807:
                YYDEBUG(807, *YYCURSOR);
                ++YYCURSOR;
@@ -7295,13 +7302,13 @@ yy807:
 yy808:
                YYDEBUG(808, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1197 "Zend/zend_language_scanner.l"
+#line 1200 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 7305 "Zend/zend_language_scanner.c"
+#line 7312 "Zend/zend_language_scanner.c"
 yy809:
                YYDEBUG(809, *YYCURSOR);
                ++YYCURSOR;
@@ -7310,13 +7317,13 @@ yy809:
 yy810:
                YYDEBUG(810, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1191 "Zend/zend_language_scanner.l"
+#line 1194 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7320 "Zend/zend_language_scanner.c"
+#line 7327 "Zend/zend_language_scanner.c"
 yy811:
                YYDEBUG(811, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7337,11 +7344,11 @@ yy814:
                ++YYCURSOR;
                YYDEBUG(815, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1187 "Zend/zend_language_scanner.l"
+#line 1190 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7345 "Zend/zend_language_scanner.c"
+#line 7352 "Zend/zend_language_scanner.c"
 yy816:
                YYDEBUG(816, *YYCURSOR);
                ++YYCURSOR;
@@ -7426,14 +7433,14 @@ yy820:
 yy821:
                YYDEBUG(821, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1486 "Zend/zend_language_scanner.l"
+#line 1489 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 7437 "Zend/zend_language_scanner.c"
+#line 7444 "Zend/zend_language_scanner.c"
 yy822:
                YYDEBUG(822, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7458,7 +7465,7 @@ yy826:
                ++YYCURSOR;
                YYDEBUG(827, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1477 "Zend/zend_language_scanner.l"
+#line 1480 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_copy_value(zendlval, yytext, yyleng);
@@ -7466,7 +7473,7 @@ yy826:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 7470 "Zend/zend_language_scanner.c"
+#line 7477 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
@@ -7477,7 +7484,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(831, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2321 "Zend/zend_language_scanner.l"
+#line 2328 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7533,7 +7540,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7537 "Zend/zend_language_scanner.c"
+#line 7544 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7640,7 +7647,7 @@ yy834:
 yy835:
                YYDEBUG(835, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1557 "Zend/zend_language_scanner.l"
+#line 1560 "Zend/zend_language_scanner.l"
                { /* Offset could be treated as a long */
        if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
                ZVAL_LONG(zendlval, strtol(yytext, NULL, 10));
@@ -7649,7 +7656,7 @@ yy835:
        }
        return T_NUM_STRING;
 }
-#line 7653 "Zend/zend_language_scanner.c"
+#line 7660 "Zend/zend_language_scanner.c"
 yy836:
                YYDEBUG(836, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7669,23 +7676,23 @@ yy837:
 yy838:
                YYDEBUG(838, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1853 "Zend/zend_language_scanner.l"
+#line 1858 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7678 "Zend/zend_language_scanner.c"
+#line 7685 "Zend/zend_language_scanner.c"
 yy839:
                YYDEBUG(839, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(840, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1848 "Zend/zend_language_scanner.l"
+#line 1853 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 7689 "Zend/zend_language_scanner.c"
+#line 7696 "Zend/zend_language_scanner.c"
 yy841:
                YYDEBUG(841, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7695,14 +7702,14 @@ yy842:
                ++YYCURSOR;
                YYDEBUG(843, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1858 "Zend/zend_language_scanner.l"
+#line 1863 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
        yy_pop_state(TSRMLS_C);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7706 "Zend/zend_language_scanner.c"
+#line 7713 "Zend/zend_language_scanner.c"
 yy844:
                YYDEBUG(844, *YYCURSOR);
                ++YYCURSOR;
@@ -7711,18 +7718,18 @@ yy844:
 yy845:
                YYDEBUG(845, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1865 "Zend/zend_language_scanner.l"
+#line 1870 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7720 "Zend/zend_language_scanner.c"
+#line 7727 "Zend/zend_language_scanner.c"
 yy846:
                YYDEBUG(846, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(847, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2378 "Zend/zend_language_scanner.l"
+#line 2385 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7731,7 +7738,7 @@ yy846:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7735 "Zend/zend_language_scanner.c"
+#line 7742 "Zend/zend_language_scanner.c"
 yy848:
                YYDEBUG(848, *YYCURSOR);
                ++YYCURSOR;
@@ -7767,12 +7774,12 @@ yy850:
 yy852:
                YYDEBUG(852, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1843 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 7776 "Zend/zend_language_scanner.c"
+#line 7783 "Zend/zend_language_scanner.c"
 yy853:
                YYDEBUG(853, *YYCURSOR);
                ++YYCURSOR;
@@ -7812,12 +7819,12 @@ yy858:
 yy860:
                YYDEBUG(860, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1566 "Zend/zend_language_scanner.l"
+#line 1569 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        return T_NUM_STRING;
 }
-#line 7821 "Zend/zend_language_scanner.c"
+#line 7828 "Zend/zend_language_scanner.c"
 yy861:
                YYDEBUG(861, *YYCURSOR);
                ++YYCURSOR;
@@ -7840,6 +7847,6 @@ yy863:
                goto yy860;
        }
 }
-#line 2387 "Zend/zend_language_scanner.l"
+#line 2394 "Zend/zend_language_scanner.l"
 
 }
index 2ad186dd16b64155f97fb641616b660d850c1e96..b8ed17bffb4e2c48e2cda44259ae9a60585ce912 100644 (file)
@@ -860,11 +860,14 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter
 }
 
 
+//??? use zend_string saving memalloc
 # define zend_copy_value(zendlval, yytext, yyleng) \
        if (SCNG(output_filter)) { \
                size_t sz = 0; \
-               SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \
-               Z_STRLEN_P(zendlval) = sz; \
+               char *s = NULL; \
+               SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \
+               ZVAL_STRINGL(zendlval, s, sz); \
+               efree(s); \
        } else { \
                ZVAL_STRINGL(zendlval, yytext, yyleng); \
        }
@@ -982,7 +985,7 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo
        if (SCNG(output_filter)) {
                size_t sz = 0;
                unsigned char *str;
-               //??? use zend_string saving memalloc 
+               //??? use zend_string saving memalloc
                s = Z_STRVAL_P(zendlval);
                SCNG(output_filter)(&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC);
                zval_ptr_dtor(zendlval);
@@ -1806,13 +1809,15 @@ inline_html:
 
        if (SCNG(output_filter)) {
                int readsize;
+               char *s = NULL;
                size_t sz = 0;
-               readsize = SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC);
-               Z_STRLEN_P(zendlval) = sz;
+               //??? use zend_string saving memalloc
+               readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC);
+               ZVAL_STRINGL(zendlval, s, sz);
+               efree(s);
                if (readsize < yyleng) {
                        yyless(readsize);
                }
-               Z_TYPE_INFO_P(zendlval) = IS_STRING_EX;
        } else {
          ZVAL_STRINGL(zendlval, yytext, yyleng);
        }
@@ -2014,9 +2019,11 @@ inline_html:
 
        if (SCNG(output_filter)) {
                size_t sz = 0;
+               char *str = NULL;
                s = Z_STRVAL_P(zendlval);
-               SCNG(output_filter)((unsigned char **)&Z_STRVAL_P(zendlval), &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC);
-               Z_STRLEN_P(zendlval) = sz;
+               //??? use zend_string saving memalloc
+               SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval) TSRMLS_CC);
+               ZVAL_STRINGL(zendlval, str, sz);
                efree(s);
        }
        return T_CONSTANT_ENCAPSED_STRING;