]> granicus.if.org Git - php/commitdiff
Fix #61095 (Lexing 0x0*+<NUM> incorrectly)
authorEtienne Kneuss <colder@php.net>
Mon, 20 Feb 2012 18:28:57 +0000 (18:28 +0000)
committerEtienne Kneuss <colder@php.net>
Mon, 20 Feb 2012 18:28:57 +0000 (18:28 +0000)
NEWS
Zend/tests/bug61095.phpt [new file with mode: 0644]
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h

diff --git a/NEWS b/NEWS
index ad4563a8cc3e379b141cfbc7fa507da091012618..e08776fa847c75dd7181fab11b14fe2d66893a21 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ PHP                                                                        NEWS
 ?? ??? 2012, PHP 5.3.11
 - Core:
   . Improved max_input_vars directive to check nested variables (Dmitry).
+  . Fixed bug #61095 (Incorect lexing of 0x00*+<NUM>). (Etienne)
 
 - Session:
   . Fixed bug #60860 (session.save_handler=user without defined function core
diff --git a/Zend/tests/bug61095.phpt b/Zend/tests/bug61095.phpt
new file mode 100644 (file)
index 0000000..4ca196c
--- /dev/null
@@ -0,0 +1,9 @@
+--TEST--
+Bug #61095 (Lexing 0x00*+<NUM> incorectly)
+--FILE--
+<?php
+echo 0x00+2;
+echo "\n";
+?>
+--EXPECT--
+2
index 228a554b68e6b0a22031991271670051e10f8a7a..1d0ada7a64d5f6e8319c55a7da1d334c04a83349 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sun Jan  1 17:48:17 2012 */
+/* Generated by re2c 0.13.5 on Wed Feb 15 17:38:31 2012 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -957,7 +957,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1586 "Zend/zend_language_scanner.l"
+#line 1590 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1040,7 +1040,7 @@ yy5:
 yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1574 "Zend/zend_language_scanner.l"
+#line 1578 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1059,7 +1059,7 @@ yy7:
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1551 "Zend/zend_language_scanner.l"
+#line 1555 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1257,7 +1257,7 @@ yy35:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1507 "Zend/zend_language_scanner.l"
+#line 1511 "Zend/zend_language_scanner.l"
                {
        YYCTYPE *bracket = zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
 
@@ -1301,7 +1301,7 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1525 "Zend/zend_language_scanner.l"
+#line 1529 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1319,7 +1319,7 @@ yy45:
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1538 "Zend/zend_language_scanner.l"
+#line 1542 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1358,7 +1358,7 @@ yy50:
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1564 "Zend/zend_language_scanner.l"
+#line 1568 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -1438,7 +1438,7 @@ yyc_ST_BACKQUOTE:
 yy56:
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2044 "Zend/zend_language_scanner.l"
+#line 2048 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1490,7 +1490,7 @@ yy58:
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1988 "Zend/zend_language_scanner.l"
+#line 1992 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
@@ -1505,7 +1505,7 @@ yy61:
                ++YYCURSOR;
                YYDEBUG(62, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1975 "Zend/zend_language_scanner.l"
+#line 1979 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1528,7 +1528,7 @@ yy63:
 yy65:
                YYDEBUG(65, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -1559,7 +1559,7 @@ yy70:
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1665 "Zend/zend_language_scanner.l"
+#line 1669 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1585,7 +1585,7 @@ yy73:
                ++YYCURSOR;
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1655 "Zend/zend_language_scanner.l"
+#line 1659 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1661,7 +1661,7 @@ yy77:
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1994 "Zend/zend_language_scanner.l"
+#line 1998 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1721,7 +1721,7 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1983 "Zend/zend_language_scanner.l"
+#line 1987 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
@@ -1736,7 +1736,7 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1975 "Zend/zend_language_scanner.l"
+#line 1979 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1759,7 +1759,7 @@ yy85:
 yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -1790,7 +1790,7 @@ yy92:
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1665 "Zend/zend_language_scanner.l"
+#line 1669 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1816,7 +1816,7 @@ yy95:
                ++YYCURSOR;
                YYDEBUG(96, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1655 "Zend/zend_language_scanner.l"
+#line 1659 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1835,7 +1835,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(100, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1962 "Zend/zend_language_scanner.l"
+#line 1966 "Zend/zend_language_scanner.l"
        {
        YYCURSOR += CG(heredoc_len) - 1;
        yyleng = CG(heredoc_len);
@@ -1909,7 +1909,7 @@ yy103:
 yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2086 "Zend/zend_language_scanner.l"
+#line 2090 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -1995,7 +1995,7 @@ yy107:
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1975 "Zend/zend_language_scanner.l"
+#line 1979 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2018,7 +2018,7 @@ yy109:
 yy111:
                YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -2049,7 +2049,7 @@ yy116:
                ++YYCURSOR;
                YYDEBUG(117, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1665 "Zend/zend_language_scanner.l"
+#line 1669 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -2075,7 +2075,7 @@ yy119:
                ++YYCURSOR;
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1655 "Zend/zend_language_scanner.l"
+#line 1659 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -2264,7 +2264,7 @@ yy123:
 yy124:
                YYDEBUG(124, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1696 "Zend/zend_language_scanner.l"
+#line 1700 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@ -2851,7 +2851,7 @@ yy175:
 yy176:
                YYDEBUG(176, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1703 "Zend/zend_language_scanner.l"
+#line 1707 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -2892,7 +2892,7 @@ yy177:
 yy178:
                YYDEBUG(178, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1794 "Zend/zend_language_scanner.l"
+#line 1798 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -2969,7 +2969,7 @@ yy179:
 yy180:
                YYDEBUG(180, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1865 "Zend/zend_language_scanner.l"
+#line 1869 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -3016,7 +3016,7 @@ yy181:
                ++YYCURSOR;
                YYDEBUG(182, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1956 "Zend/zend_language_scanner.l"
+#line 1960 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
@@ -3027,7 +3027,7 @@ yy183:
                ++YYCURSOR;
                YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2214 "Zend/zend_language_scanner.l"
+#line 2218 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -3063,7 +3063,7 @@ yy187:
 yy189:
                YYDEBUG(189, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1393 "Zend/zend_language_scanner.l"
+#line 1397 "Zend/zend_language_scanner.l"
                {
        zendlval->value.dval = zend_strtod(yytext, NULL);
        zendlval->type = IS_DOUBLE;
@@ -3166,7 +3166,11 @@ yy198:
        }
 
        if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) {
-               zendlval->value.lval = strtol(hex, NULL, 16);
+               if (len == 0) {
+                       zendlval->value.lval = 0;
+               } else {
+                       zendlval->value.lval = strtol(hex, NULL, 16);
+               }
                zendlval->type = IS_LONG;
                return T_LNUMBER;
        } else {
@@ -3175,7 +3179,7 @@ yy198:
                return T_DNUMBER;
        }
 }
-#line 3179 "Zend/zend_language_scanner.c"
+#line 3183 "Zend/zend_language_scanner.c"
 yy201:
                YYDEBUG(201, *YYCURSOR);
                ++YYCURSOR;
@@ -3184,7 +3188,7 @@ yy201:
 yy202:
                YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1771 "Zend/zend_language_scanner.l"
+#line 1775 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -3192,7 +3196,7 @@ yy202:
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 3196 "Zend/zend_language_scanner.c"
+#line 3200 "Zend/zend_language_scanner.c"
 yy203:
                YYDEBUG(203, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3226,13 +3230,13 @@ yy205:
 yy207:
                YYDEBUG(207, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 3236 "Zend/zend_language_scanner.c"
+#line 3240 "Zend/zend_language_scanner.c"
 yy208:
                YYDEBUG(208, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3250,7 +3254,7 @@ yy209:
                {
        return T_LOGICAL_XOR;
 }
-#line 3254 "Zend/zend_language_scanner.c"
+#line 3258 "Zend/zend_language_scanner.c"
 yy211:
                YYDEBUG(211, *YYCURSOR);
                ++YYCURSOR;
@@ -3263,7 +3267,7 @@ yy211:
                {
        return T_LOGICAL_OR;
 }
-#line 3267 "Zend/zend_language_scanner.c"
+#line 3271 "Zend/zend_language_scanner.c"
 yy213:
                YYDEBUG(213, *YYCURSOR);
                ++YYCURSOR;
@@ -3273,7 +3277,7 @@ yy213:
                {
        return T_XOR_EQUAL;
 }
-#line 3277 "Zend/zend_language_scanner.c"
+#line 3281 "Zend/zend_language_scanner.c"
 yy215:
                YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
@@ -3283,7 +3287,7 @@ yy215:
                {
        return T_BOOLEAN_OR;
 }
-#line 3287 "Zend/zend_language_scanner.c"
+#line 3291 "Zend/zend_language_scanner.c"
 yy217:
                YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
@@ -3293,7 +3297,7 @@ yy217:
                {
        return T_OR_EQUAL;
 }
-#line 3297 "Zend/zend_language_scanner.c"
+#line 3301 "Zend/zend_language_scanner.c"
 yy219:
                YYDEBUG(219, *YYCURSOR);
                ++YYCURSOR;
@@ -3303,7 +3307,7 @@ yy219:
                {
        return T_BOOLEAN_AND;
 }
-#line 3307 "Zend/zend_language_scanner.c"
+#line 3311 "Zend/zend_language_scanner.c"
 yy221:
                YYDEBUG(221, *YYCURSOR);
                ++YYCURSOR;
@@ -3313,7 +3317,7 @@ yy221:
                {
        return T_AND_EQUAL;
 }
-#line 3317 "Zend/zend_language_scanner.c"
+#line 3321 "Zend/zend_language_scanner.c"
 yy223:
                YYDEBUG(223, *YYCURSOR);
                ++YYCURSOR;
@@ -3322,7 +3326,7 @@ yy223:
 yy224:
                YYDEBUG(224, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1780 "Zend/zend_language_scanner.l"
+#line 1784 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -3335,7 +3339,7 @@ yy224:
                return yytext[0];
        }
 }
-#line 3339 "Zend/zend_language_scanner.c"
+#line 3343 "Zend/zend_language_scanner.c"
 yy225:
                YYDEBUG(225, *YYCURSOR);
                ++YYCURSOR;
@@ -3345,7 +3349,7 @@ yy225:
                {
        return T_MOD_EQUAL;
 }
-#line 3349 "Zend/zend_language_scanner.c"
+#line 3353 "Zend/zend_language_scanner.c"
 yy227:
                YYDEBUG(227, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3380,7 +3384,7 @@ yy231:
                {
        return T_CONCAT_EQUAL;
 }
-#line 3384 "Zend/zend_language_scanner.c"
+#line 3388 "Zend/zend_language_scanner.c"
 yy233:
                YYDEBUG(233, *YYCURSOR);
                yyaccept = 4;
@@ -3389,7 +3393,7 @@ yy233:
 yy234:
                YYDEBUG(234, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1737 "Zend/zend_language_scanner.l"
+#line 1741 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3423,7 +3427,7 @@ yy234:
 
        return T_COMMENT;
 }
-#line 3427 "Zend/zend_language_scanner.c"
+#line 3431 "Zend/zend_language_scanner.c"
 yy235:
                YYDEBUG(235, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3437,7 +3441,7 @@ yy236:
                {
        return T_DIV_EQUAL;
 }
-#line 3441 "Zend/zend_language_scanner.c"
+#line 3445 "Zend/zend_language_scanner.c"
 yy238:
                YYDEBUG(238, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3464,7 +3468,7 @@ yy241:
                {
        return T_MUL_EQUAL;
 }
-#line 3468 "Zend/zend_language_scanner.c"
+#line 3472 "Zend/zend_language_scanner.c"
 yy243:
                YYDEBUG(243, *YYCURSOR);
                ++YYCURSOR;
@@ -3475,7 +3479,7 @@ yy243:
                {
        return T_SR;
 }
-#line 3479 "Zend/zend_language_scanner.c"
+#line 3483 "Zend/zend_language_scanner.c"
 yy245:
                YYDEBUG(245, *YYCURSOR);
                ++YYCURSOR;
@@ -3485,7 +3489,7 @@ yy245:
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3489 "Zend/zend_language_scanner.c"
+#line 3493 "Zend/zend_language_scanner.c"
 yy247:
                YYDEBUG(247, *YYCURSOR);
                ++YYCURSOR;
@@ -3495,7 +3499,7 @@ yy247:
                {
        return T_SR_EQUAL;
 }
-#line 3499 "Zend/zend_language_scanner.c"
+#line 3503 "Zend/zend_language_scanner.c"
 yy249:
                YYDEBUG(249, *YYCURSOR);
                yyaccept = 5;
@@ -3510,7 +3514,7 @@ yy250:
                {
        return T_SL;
 }
-#line 3514 "Zend/zend_language_scanner.c"
+#line 3518 "Zend/zend_language_scanner.c"
 yy251:
                YYDEBUG(251, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3526,7 +3530,7 @@ yy252:
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3530 "Zend/zend_language_scanner.c"
+#line 3534 "Zend/zend_language_scanner.c"
 yy254:
                YYDEBUG(254, *YYCURSOR);
                ++YYCURSOR;
@@ -3537,7 +3541,7 @@ yy255:
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3541 "Zend/zend_language_scanner.c"
+#line 3545 "Zend/zend_language_scanner.c"
 yy256:
                YYDEBUG(256, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3592,7 +3596,7 @@ yy263:
                {
        return T_SL_EQUAL;
 }
-#line 3596 "Zend/zend_language_scanner.c"
+#line 3600 "Zend/zend_language_scanner.c"
 yy265:
                YYDEBUG(265, *YYCURSOR);
                ++YYCURSOR;
@@ -3697,7 +3701,7 @@ yy274:
 yy275:
                YYDEBUG(275, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1907 "Zend/zend_language_scanner.l"
+#line 1911 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3745,7 +3749,7 @@ yy275:
 
        return T_START_HEREDOC;
 }
-#line 3749 "Zend/zend_language_scanner.c"
+#line 3753 "Zend/zend_language_scanner.c"
 yy276:
                YYDEBUG(276, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3789,7 +3793,7 @@ yy279:
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3793 "Zend/zend_language_scanner.c"
+#line 3797 "Zend/zend_language_scanner.c"
 yy282:
                YYDEBUG(282, *YYCURSOR);
                ++YYCURSOR;
@@ -3799,7 +3803,7 @@ yy282:
                {
        return T_PLUS_EQUAL;
 }
-#line 3803 "Zend/zend_language_scanner.c"
+#line 3807 "Zend/zend_language_scanner.c"
 yy284:
                YYDEBUG(284, *YYCURSOR);
                ++YYCURSOR;
@@ -3809,7 +3813,7 @@ yy284:
                {
        return T_INC;
 }
-#line 3813 "Zend/zend_language_scanner.c"
+#line 3817 "Zend/zend_language_scanner.c"
 yy286:
                YYDEBUG(286, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3832,7 +3836,7 @@ yy288:
                {
        return T_LIST;
 }
-#line 3836 "Zend/zend_language_scanner.c"
+#line 3840 "Zend/zend_language_scanner.c"
 yy290:
                YYDEBUG(290, *YYCURSOR);
                ++YYCURSOR;
@@ -3843,7 +3847,7 @@ yy290:
                {
        return T_IS_EQUAL;
 }
-#line 3847 "Zend/zend_language_scanner.c"
+#line 3851 "Zend/zend_language_scanner.c"
 yy292:
                YYDEBUG(292, *YYCURSOR);
                ++YYCURSOR;
@@ -3853,7 +3857,7 @@ yy292:
                {
        return T_DOUBLE_ARROW;
 }
-#line 3857 "Zend/zend_language_scanner.c"
+#line 3861 "Zend/zend_language_scanner.c"
 yy294:
                YYDEBUG(294, *YYCURSOR);
                ++YYCURSOR;
@@ -3863,7 +3867,7 @@ yy294:
                {
        return T_IS_IDENTICAL;
 }
-#line 3867 "Zend/zend_language_scanner.c"
+#line 3871 "Zend/zend_language_scanner.c"
 yy296:
                YYDEBUG(296, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3985,7 +3989,7 @@ yy311:
                }
                YYDEBUG(314, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1497 "Zend/zend_language_scanner.l"
+#line 1501 "Zend/zend_language_scanner.l"
                {
        if (CG(current_namespace)) {
                *zendlval = *CG(current_namespace);
@@ -3995,7 +3999,7 @@ yy311:
        }
        return T_NS_C;
 }
-#line 3999 "Zend/zend_language_scanner.c"
+#line 4003 "Zend/zend_language_scanner.c"
 yy315:
                YYDEBUG(315, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4015,7 +4019,7 @@ yy316:
                }
                YYDEBUG(319, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1470 "Zend/zend_language_scanner.l"
+#line 1474 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
        const size_t filename_len = strlen(filename);
@@ -4042,7 +4046,7 @@ yy316:
        zendlval->type = IS_STRING;
        return T_DIR;
 }
-#line 4046 "Zend/zend_language_scanner.c"
+#line 4050 "Zend/zend_language_scanner.c"
 yy320:
                YYDEBUG(320, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4067,13 +4071,13 @@ yy322:
                }
                YYDEBUG(325, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1452 "Zend/zend_language_scanner.l"
+#line 1456 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;
        return T_LINE;
 }
-#line 4077 "Zend/zend_language_scanner.c"
+#line 4081 "Zend/zend_language_scanner.c"
 yy326:
                YYDEBUG(326, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4108,7 +4112,7 @@ yy330:
                }
                YYDEBUG(333, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1431 "Zend/zend_language_scanner.l"
+#line 1435 "Zend/zend_language_scanner.l"
                {
        char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
        char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
@@ -4129,7 +4133,7 @@ yy330:
        zendlval->type = IS_STRING;
        return T_METHOD_C;
 }
-#line 4133 "Zend/zend_language_scanner.c"
+#line 4137 "Zend/zend_language_scanner.c"
 yy334:
                YYDEBUG(334, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4180,7 +4184,7 @@ yy341:
                }
                YYDEBUG(344, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1415 "Zend/zend_language_scanner.l"
+#line 1419 "Zend/zend_language_scanner.l"
                {
        char *func_name = NULL;
 
@@ -4196,7 +4200,7 @@ yy341:
        zendlval->type = IS_STRING;
        return T_FUNC_C;
 }
-#line 4200 "Zend/zend_language_scanner.c"
+#line 4204 "Zend/zend_language_scanner.c"
 yy345:
                YYDEBUG(345, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4216,7 +4220,7 @@ yy346:
                }
                YYDEBUG(349, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1458 "Zend/zend_language_scanner.l"
+#line 1462 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
 
@@ -4228,7 +4232,7 @@ yy346:
        zendlval->type = IS_STRING;
        return T_FILE;
 }
-#line 4232 "Zend/zend_language_scanner.c"
+#line 4236 "Zend/zend_language_scanner.c"
 yy350:
                YYDEBUG(350, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4258,7 +4262,7 @@ yy353:
                }
                YYDEBUG(356, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1399 "Zend/zend_language_scanner.l"
+#line 1403 "Zend/zend_language_scanner.l"
                {
        char *class_name = NULL;
 
@@ -4274,7 +4278,7 @@ yy353:
        zendlval->type = IS_STRING;
        return T_CLASS_C;
 }
-#line 4278 "Zend/zend_language_scanner.c"
+#line 4282 "Zend/zend_language_scanner.c"
 yy357:
                YYDEBUG(357, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4340,7 +4344,7 @@ yy368:
                {
        return T_HALT_COMPILER;
 }
-#line 4344 "Zend/zend_language_scanner.c"
+#line 4348 "Zend/zend_language_scanner.c"
 yy370:
                YYDEBUG(370, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4364,7 +4368,7 @@ yy372:
                {
        return T_USE;
 }
-#line 4368 "Zend/zend_language_scanner.c"
+#line 4372 "Zend/zend_language_scanner.c"
 yy374:
                YYDEBUG(374, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4387,7 +4391,7 @@ yy376:
                {
        return T_UNSET;
 }
-#line 4391 "Zend/zend_language_scanner.c"
+#line 4395 "Zend/zend_language_scanner.c"
 yy378:
                YYDEBUG(378, *YYCURSOR);
                ++YYCURSOR;
@@ -4563,7 +4567,7 @@ yy393:
                {
        return T_INT_CAST;
 }
-#line 4567 "Zend/zend_language_scanner.c"
+#line 4571 "Zend/zend_language_scanner.c"
 yy396:
                YYDEBUG(396, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4611,7 +4615,7 @@ yy401:
                {
        return T_DOUBLE_CAST;
 }
-#line 4615 "Zend/zend_language_scanner.c"
+#line 4619 "Zend/zend_language_scanner.c"
 yy405:
                YYDEBUG(405, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4685,7 +4689,7 @@ yy415:
                {
        return T_STRING_CAST;
 }
-#line 4689 "Zend/zend_language_scanner.c"
+#line 4693 "Zend/zend_language_scanner.c"
 yy419:
                YYDEBUG(419, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4722,7 +4726,7 @@ yy422:
                {
        return T_ARRAY_CAST;
 }
-#line 4726 "Zend/zend_language_scanner.c"
+#line 4730 "Zend/zend_language_scanner.c"
 yy426:
                YYDEBUG(426, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4764,7 +4768,7 @@ yy430:
                {
        return T_OBJECT_CAST;
 }
-#line 4768 "Zend/zend_language_scanner.c"
+#line 4772 "Zend/zend_language_scanner.c"
 yy434:
                YYDEBUG(434, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4809,7 +4813,7 @@ yy439:
                {
        return T_BOOL_CAST;
 }
-#line 4813 "Zend/zend_language_scanner.c"
+#line 4817 "Zend/zend_language_scanner.c"
 yy442:
                YYDEBUG(442, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4857,7 +4861,7 @@ yy447:
                {
        return T_STRING_CAST;
 }
-#line 4861 "Zend/zend_language_scanner.c"
+#line 4865 "Zend/zend_language_scanner.c"
 yy451:
                YYDEBUG(451, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4894,7 +4898,7 @@ yy454:
                {
        return T_UNSET_CAST;
 }
-#line 4898 "Zend/zend_language_scanner.c"
+#line 4902 "Zend/zend_language_scanner.c"
 yy458:
                YYDEBUG(458, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4912,7 +4916,7 @@ yy459:
                {
        return T_VAR;
 }
-#line 4916 "Zend/zend_language_scanner.c"
+#line 4920 "Zend/zend_language_scanner.c"
 yy461:
                YYDEBUG(461, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4936,7 +4940,7 @@ yy463:
                {
        return T_NEW;
 }
-#line 4940 "Zend/zend_language_scanner.c"
+#line 4944 "Zend/zend_language_scanner.c"
 yy465:
                YYDEBUG(465, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4979,7 +4983,7 @@ yy471:
                {
        return T_NAMESPACE;
 }
-#line 4983 "Zend/zend_language_scanner.c"
+#line 4987 "Zend/zend_language_scanner.c"
 yy473:
                YYDEBUG(473, *YYCURSOR);
                ++YYCURSOR;
@@ -4989,7 +4993,7 @@ yy473:
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 4993 "Zend/zend_language_scanner.c"
+#line 4997 "Zend/zend_language_scanner.c"
 yy475:
                YYDEBUG(475, *YYCURSOR);
                ++YYCURSOR;
@@ -5015,7 +5019,7 @@ yy477:
                {
        return T_MINUS_EQUAL;
 }
-#line 5019 "Zend/zend_language_scanner.c"
+#line 5023 "Zend/zend_language_scanner.c"
 yy479:
                YYDEBUG(479, *YYCURSOR);
                ++YYCURSOR;
@@ -5025,7 +5029,7 @@ yy479:
                {
        return T_DEC;
 }
-#line 5029 "Zend/zend_language_scanner.c"
+#line 5033 "Zend/zend_language_scanner.c"
 yy481:
                YYDEBUG(481, *YYCURSOR);
                ++YYCURSOR;
@@ -5036,7 +5040,7 @@ yy481:
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 5040 "Zend/zend_language_scanner.c"
+#line 5044 "Zend/zend_language_scanner.c"
 yy483:
                YYDEBUG(483, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5085,7 +5089,7 @@ yy488:
                {
        return T_PUBLIC;
 }
-#line 5089 "Zend/zend_language_scanner.c"
+#line 5093 "Zend/zend_language_scanner.c"
 yy490:
                YYDEBUG(490, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5144,7 +5148,7 @@ yy497:
                {
        return T_PROTECTED;
 }
-#line 5148 "Zend/zend_language_scanner.c"
+#line 5152 "Zend/zend_language_scanner.c"
 yy499:
                YYDEBUG(499, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5178,7 +5182,7 @@ yy503:
                {
        return T_PRIVATE;
 }
-#line 5182 "Zend/zend_language_scanner.c"
+#line 5186 "Zend/zend_language_scanner.c"
 yy505:
                YYDEBUG(505, *YYCURSOR);
                ++YYCURSOR;
@@ -5191,7 +5195,7 @@ yy505:
                {
        return T_PRINT;
 }
-#line 5195 "Zend/zend_language_scanner.c"
+#line 5199 "Zend/zend_language_scanner.c"
 yy507:
                YYDEBUG(507, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5220,7 +5224,7 @@ yy510:
                {
        return T_GOTO;
 }
-#line 5224 "Zend/zend_language_scanner.c"
+#line 5228 "Zend/zend_language_scanner.c"
 yy512:
                YYDEBUG(512, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5248,7 +5252,7 @@ yy515:
                {
        return T_GLOBAL;
 }
-#line 5252 "Zend/zend_language_scanner.c"
+#line 5256 "Zend/zend_language_scanner.c"
 yy517:
                YYDEBUG(517, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5289,7 +5293,7 @@ yy523:
                {
        return T_BREAK;
 }
-#line 5293 "Zend/zend_language_scanner.c"
+#line 5297 "Zend/zend_language_scanner.c"
 yy525:
                YYDEBUG(525, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5333,7 +5337,7 @@ yy531:
                {
        return T_SWITCH;
 }
-#line 5337 "Zend/zend_language_scanner.c"
+#line 5341 "Zend/zend_language_scanner.c"
 yy533:
                YYDEBUG(533, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5361,7 +5365,7 @@ yy536:
                {
        return T_STATIC;
 }
-#line 5365 "Zend/zend_language_scanner.c"
+#line 5369 "Zend/zend_language_scanner.c"
 yy538:
                YYDEBUG(538, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5392,7 +5396,7 @@ yy541:
                {
        return T_AS;
 }
-#line 5396 "Zend/zend_language_scanner.c"
+#line 5400 "Zend/zend_language_scanner.c"
 yy543:
                YYDEBUG(543, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5415,7 +5419,7 @@ yy545:
                {
        return T_ARRAY;
 }
-#line 5419 "Zend/zend_language_scanner.c"
+#line 5423 "Zend/zend_language_scanner.c"
 yy547:
                YYDEBUG(547, *YYCURSOR);
                ++YYCURSOR;
@@ -5428,7 +5432,7 @@ yy547:
                {
        return T_LOGICAL_AND;
 }
-#line 5432 "Zend/zend_language_scanner.c"
+#line 5436 "Zend/zend_language_scanner.c"
 yy549:
                YYDEBUG(549, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5466,7 +5470,7 @@ yy554:
                {
        return T_ABSTRACT;
 }
-#line 5470 "Zend/zend_language_scanner.c"
+#line 5474 "Zend/zend_language_scanner.c"
 yy556:
                YYDEBUG(556, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5494,7 +5498,7 @@ yy559:
                {
        return T_WHILE;
 }
-#line 5498 "Zend/zend_language_scanner.c"
+#line 5502 "Zend/zend_language_scanner.c"
 yy561:
                YYDEBUG(561, *YYCURSOR);
                ++YYCURSOR;
@@ -5507,7 +5511,7 @@ yy561:
                {
        return T_IF;
 }
-#line 5511 "Zend/zend_language_scanner.c"
+#line 5515 "Zend/zend_language_scanner.c"
 yy563:
                YYDEBUG(563, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5563,7 +5567,7 @@ yy568:
                {
        return T_ISSET;
 }
-#line 5567 "Zend/zend_language_scanner.c"
+#line 5571 "Zend/zend_language_scanner.c"
 yy570:
                YYDEBUG(570, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5621,7 +5625,7 @@ yy577:
                {
        return T_INCLUDE;
 }
-#line 5625 "Zend/zend_language_scanner.c"
+#line 5629 "Zend/zend_language_scanner.c"
 yy578:
                YYDEBUG(578, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5654,7 +5658,7 @@ yy582:
                {
        return T_INCLUDE_ONCE;
 }
-#line 5658 "Zend/zend_language_scanner.c"
+#line 5662 "Zend/zend_language_scanner.c"
 yy584:
                YYDEBUG(584, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5692,7 +5696,7 @@ yy589:
                {
        return T_INTERFACE;
 }
-#line 5696 "Zend/zend_language_scanner.c"
+#line 5700 "Zend/zend_language_scanner.c"
 yy591:
                YYDEBUG(591, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5735,7 +5739,7 @@ yy597:
                {
        return T_INSTANCEOF;
 }
-#line 5739 "Zend/zend_language_scanner.c"
+#line 5743 "Zend/zend_language_scanner.c"
 yy599:
                YYDEBUG(599, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5783,7 +5787,7 @@ yy606:
                {
        return T_IMPLEMENTS;
 }
-#line 5787 "Zend/zend_language_scanner.c"
+#line 5791 "Zend/zend_language_scanner.c"
 yy608:
                YYDEBUG(608, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5807,7 +5811,7 @@ yy610:
                {
        return T_TRY;
 }
-#line 5811 "Zend/zend_language_scanner.c"
+#line 5815 "Zend/zend_language_scanner.c"
 yy612:
                YYDEBUG(612, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5830,7 +5834,7 @@ yy614:
                {
        return T_THROW;
 }
-#line 5834 "Zend/zend_language_scanner.c"
+#line 5838 "Zend/zend_language_scanner.c"
 yy616:
                YYDEBUG(616, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5895,7 +5899,7 @@ yy623:
                {
        return T_REQUIRE;
 }
-#line 5899 "Zend/zend_language_scanner.c"
+#line 5903 "Zend/zend_language_scanner.c"
 yy624:
                YYDEBUG(624, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5928,7 +5932,7 @@ yy628:
                {
        return T_REQUIRE_ONCE;
 }
-#line 5932 "Zend/zend_language_scanner.c"
+#line 5936 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5951,7 +5955,7 @@ yy632:
                {
        return T_RETURN;
 }
-#line 5955 "Zend/zend_language_scanner.c"
+#line 5959 "Zend/zend_language_scanner.c"
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6036,7 +6040,7 @@ yy643:
                {
        return T_CONTINUE;
 }
-#line 6040 "Zend/zend_language_scanner.c"
+#line 6044 "Zend/zend_language_scanner.c"
 yy645:
                YYDEBUG(645, *YYCURSOR);
                ++YYCURSOR;
@@ -6049,7 +6053,7 @@ yy645:
                {
        return T_CONST;
 }
-#line 6053 "Zend/zend_language_scanner.c"
+#line 6057 "Zend/zend_language_scanner.c"
 yy647:
                YYDEBUG(647, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6078,7 +6082,7 @@ yy650:
                {
        return T_CLONE;
 }
-#line 6082 "Zend/zend_language_scanner.c"
+#line 6086 "Zend/zend_language_scanner.c"
 yy652:
                YYDEBUG(652, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6096,7 +6100,7 @@ yy653:
                {
        return T_CLASS;
 }
-#line 6100 "Zend/zend_language_scanner.c"
+#line 6104 "Zend/zend_language_scanner.c"
 yy655:
                YYDEBUG(655, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6120,7 +6124,7 @@ yy657:
                {
        return T_CASE;
 }
-#line 6124 "Zend/zend_language_scanner.c"
+#line 6128 "Zend/zend_language_scanner.c"
 yy659:
                YYDEBUG(659, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6138,7 +6142,7 @@ yy660:
                {
        return T_CATCH;
 }
-#line 6142 "Zend/zend_language_scanner.c"
+#line 6146 "Zend/zend_language_scanner.c"
 yy662:
                YYDEBUG(662, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6193,7 +6197,7 @@ yy670:
                {
        return T_FUNCTION;
 }
-#line 6197 "Zend/zend_language_scanner.c"
+#line 6201 "Zend/zend_language_scanner.c"
 yy672:
                YYDEBUG(672, *YYCURSOR);
                ++YYCURSOR;
@@ -6221,7 +6225,7 @@ yy673:
                {
        return T_FOR;
 }
-#line 6225 "Zend/zend_language_scanner.c"
+#line 6229 "Zend/zend_language_scanner.c"
 yy674:
                YYDEBUG(674, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6249,7 +6253,7 @@ yy677:
                {
        return T_FOREACH;
 }
-#line 6253 "Zend/zend_language_scanner.c"
+#line 6257 "Zend/zend_language_scanner.c"
 yy679:
                YYDEBUG(679, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6272,7 +6276,7 @@ yy681:
                {
        return T_FINAL;
 }
-#line 6276 "Zend/zend_language_scanner.c"
+#line 6280 "Zend/zend_language_scanner.c"
 yy683:
                YYDEBUG(683, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6307,7 +6311,7 @@ yy685:
                {
        return T_DO;
 }
-#line 6311 "Zend/zend_language_scanner.c"
+#line 6315 "Zend/zend_language_scanner.c"
 yy687:
                YYDEBUG(687, *YYCURSOR);
                ++YYCURSOR;
@@ -6320,7 +6324,7 @@ yy687:
                {
        return T_EXIT;
 }
-#line 6324 "Zend/zend_language_scanner.c"
+#line 6328 "Zend/zend_language_scanner.c"
 yy689:
                YYDEBUG(689, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6359,7 +6363,7 @@ yy694:
                {
        return T_DEFAULT;
 }
-#line 6363 "Zend/zend_language_scanner.c"
+#line 6367 "Zend/zend_language_scanner.c"
 yy696:
                YYDEBUG(696, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6387,7 +6391,7 @@ yy699:
                {
        return T_DECLARE;
 }
-#line 6391 "Zend/zend_language_scanner.c"
+#line 6395 "Zend/zend_language_scanner.c"
 yy701:
                YYDEBUG(701, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6471,7 +6475,7 @@ yy712:
                {
        return T_EXTENDS;
 }
-#line 6475 "Zend/zend_language_scanner.c"
+#line 6479 "Zend/zend_language_scanner.c"
 yy714:
                YYDEBUG(714, *YYCURSOR);
                ++YYCURSOR;
@@ -6484,7 +6488,7 @@ yy714:
                {
        return T_EXIT;
 }
-#line 6488 "Zend/zend_language_scanner.c"
+#line 6492 "Zend/zend_language_scanner.c"
 yy716:
                YYDEBUG(716, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6502,7 +6506,7 @@ yy717:
                {
        return T_EVAL;
 }
-#line 6506 "Zend/zend_language_scanner.c"
+#line 6510 "Zend/zend_language_scanner.c"
 yy719:
                YYDEBUG(719, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6576,7 +6580,7 @@ yy728:
                {
        return T_ENDWHILE;
 }
-#line 6580 "Zend/zend_language_scanner.c"
+#line 6584 "Zend/zend_language_scanner.c"
 yy730:
                YYDEBUG(730, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6609,7 +6613,7 @@ yy734:
                {
        return T_ENDSWITCH;
 }
-#line 6613 "Zend/zend_language_scanner.c"
+#line 6617 "Zend/zend_language_scanner.c"
 yy736:
                YYDEBUG(736, *YYCURSOR);
                ++YYCURSOR;
@@ -6622,7 +6626,7 @@ yy736:
                {
        return T_ENDIF;
 }
-#line 6626 "Zend/zend_language_scanner.c"
+#line 6630 "Zend/zend_language_scanner.c"
 yy738:
                YYDEBUG(738, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6655,7 +6659,7 @@ yy740:
                {
        return T_ENDFOR;
 }
-#line 6659 "Zend/zend_language_scanner.c"
+#line 6663 "Zend/zend_language_scanner.c"
 yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6683,7 +6687,7 @@ yy744:
                {
        return T_ENDFOREACH;
 }
-#line 6687 "Zend/zend_language_scanner.c"
+#line 6691 "Zend/zend_language_scanner.c"
 yy746:
                YYDEBUG(746, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6721,7 +6725,7 @@ yy751:
                {
        return T_ENDDECLARE;
 }
-#line 6725 "Zend/zend_language_scanner.c"
+#line 6729 "Zend/zend_language_scanner.c"
 yy753:
                YYDEBUG(753, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6744,7 +6748,7 @@ yy755:
                {
        return T_EMPTY;
 }
-#line 6748 "Zend/zend_language_scanner.c"
+#line 6752 "Zend/zend_language_scanner.c"
 yy757:
                YYDEBUG(757, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6777,7 +6781,7 @@ yy759:
                {
        return T_ELSE;
 }
-#line 6781 "Zend/zend_language_scanner.c"
+#line 6785 "Zend/zend_language_scanner.c"
 yy760:
                YYDEBUG(760, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6795,7 +6799,7 @@ yy761:
                {
        return T_ELSEIF;
 }
-#line 6799 "Zend/zend_language_scanner.c"
+#line 6803 "Zend/zend_language_scanner.c"
 yy763:
                YYDEBUG(763, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6813,7 +6817,7 @@ yy764:
                {
        return T_ECHO;
 }
-#line 6817 "Zend/zend_language_scanner.c"
+#line 6821 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -6894,7 +6898,7 @@ yy769:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 6898 "Zend/zend_language_scanner.c"
+#line 6902 "Zend/zend_language_scanner.c"
 yy770:
                YYDEBUG(770, *YYCURSOR);
                ++YYCURSOR;
@@ -6908,7 +6912,7 @@ yy771:
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 6912 "Zend/zend_language_scanner.c"
+#line 6916 "Zend/zend_language_scanner.c"
 yy772:
                YYDEBUG(772, *YYCURSOR);
                ++YYCURSOR;
@@ -6924,7 +6928,7 @@ yy773:
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 6928 "Zend/zend_language_scanner.c"
+#line 6932 "Zend/zend_language_scanner.c"
 yy774:
                YYDEBUG(774, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6949,7 +6953,7 @@ yy777:
                {
        return T_OBJECT_OPERATOR;
 }
-#line 6953 "Zend/zend_language_scanner.c"
+#line 6957 "Zend/zend_language_scanner.c"
 yy779:
                YYDEBUG(779, *YYCURSOR);
                ++YYCURSOR;
@@ -7027,7 +7031,7 @@ yy784:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 7031 "Zend/zend_language_scanner.c"
+#line 7035 "Zend/zend_language_scanner.c"
 yy785:
                YYDEBUG(785, *YYCURSOR);
                ++YYCURSOR;
@@ -7040,7 +7044,7 @@ yy785:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 7044 "Zend/zend_language_scanner.c"
+#line 7048 "Zend/zend_language_scanner.c"
 yy787:
                YYDEBUG(787, *YYCURSOR);
                ++YYCURSOR;
@@ -7062,7 +7066,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(792, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2158 "Zend/zend_language_scanner.l"
+#line 2162 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7117,7 +7121,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7121 "Zend/zend_language_scanner.c"
+#line 7125 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7217,7 +7221,7 @@ yy795:
 yy796:
                YYDEBUG(796, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1374 "Zend/zend_language_scanner.l"
+#line 1378 "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)) {
                zendlval->value.lval = strtol(yytext, NULL, 10);
@@ -7229,7 +7233,7 @@ yy796:
        }
        return T_NUM_STRING;
 }
-#line 7233 "Zend/zend_language_scanner.c"
+#line 7237 "Zend/zend_language_scanner.c"
 yy797:
                YYDEBUG(797, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7249,23 +7253,23 @@ yy798:
 yy799:
                YYDEBUG(799, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1684 "Zend/zend_language_scanner.l"
+#line 1688 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7258 "Zend/zend_language_scanner.c"
+#line 7262 "Zend/zend_language_scanner.c"
 yy800:
                YYDEBUG(800, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(801, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1679 "Zend/zend_language_scanner.l"
+#line 1683 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 7269 "Zend/zend_language_scanner.c"
+#line 7273 "Zend/zend_language_scanner.c"
 yy802:
                YYDEBUG(802, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7275,14 +7279,14 @@ yy803:
                ++YYCURSOR;
                YYDEBUG(804, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1689 "Zend/zend_language_scanner.l"
+#line 1693 "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 7286 "Zend/zend_language_scanner.c"
+#line 7290 "Zend/zend_language_scanner.c"
 yy805:
                YYDEBUG(805, *YYCURSOR);
                ++YYCURSOR;
@@ -7291,19 +7295,19 @@ yy805:
 yy806:
                YYDEBUG(806, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1696 "Zend/zend_language_scanner.l"
+#line 1700 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7301 "Zend/zend_language_scanner.c"
+#line 7305 "Zend/zend_language_scanner.c"
 yy807:
                YYDEBUG(807, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(808, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2214 "Zend/zend_language_scanner.l"
+#line 2218 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7312,7 +7316,7 @@ yy807:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7316 "Zend/zend_language_scanner.c"
+#line 7320 "Zend/zend_language_scanner.c"
 yy809:
                YYDEBUG(809, *YYCURSOR);
                ++YYCURSOR;
@@ -7348,13 +7352,13 @@ yy811:
 yy813:
                YYDEBUG(813, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 7358 "Zend/zend_language_scanner.c"
+#line 7362 "Zend/zend_language_scanner.c"
 yy814:
                YYDEBUG(814, *YYCURSOR);
                ++YYCURSOR;
@@ -7386,14 +7390,14 @@ yy818:
 yy820:
                YYDEBUG(820, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1386 "Zend/zend_language_scanner.l"
+#line 1390 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        zendlval->value.str.val = (char *)estrndup(yytext, yyleng);
        zendlval->value.str.len = yyleng;
        zendlval->type = IS_STRING;
        return T_NUM_STRING;
 }
-#line 7397 "Zend/zend_language_scanner.c"
+#line 7401 "Zend/zend_language_scanner.c"
 yy821:
                YYDEBUG(821, *YYCURSOR);
                ++YYCURSOR;
@@ -7406,6 +7410,6 @@ yy821:
                goto yy820;
        }
 }
-#line 2223 "Zend/zend_language_scanner.l"
+#line 2227 "Zend/zend_language_scanner.l"
 
 }
index fd9ab9b65d99cd0a19792c629253a50d67601a3a..9b2e453dd659a4c95ca9c91df2abcd2948dfb288 100644 (file)
@@ -1361,7 +1361,11 @@ NEWLINE ("\r"|"\n"|"\r\n")
        }
 
        if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) {
-               zendlval->value.lval = strtol(hex, NULL, 16);
+               if (len == 0) {
+                       zendlval->value.lval = 0;
+               } else {
+                       zendlval->value.lval = strtol(hex, NULL, 16);
+               }
                zendlval->type = IS_LONG;
                return T_LNUMBER;
        } else {
index c66be47161c745c245c6af995a48372543779ad8..adaedcf1aace837bd2b8f0f6b71ee2da8562d8dc 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Mon Jan  3 05:56:03 2011 */
+/* Generated by re2c 0.13.5 on Wed Feb 15 17:38:31 2012 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {