]> 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)
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/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 1bcb964a42a8bf6da4b4f5bd15a3aaf70896bcbb..bfecfb169de9279d0b3cce65d5de6119d172fd9c 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Mon Jan 16 14:45:55 2012 */
+/* Generated by re2c 0.13.5 on Wed Feb 15 17:48:20 2012 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -1090,7 +1090,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1775 "Zend/zend_language_scanner.l"
+#line 1779 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1168,7 +1168,7 @@ yy5:
 yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1763 "Zend/zend_language_scanner.l"
+#line 1767 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1187,7 +1187,7 @@ yy7:
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1740 "Zend/zend_language_scanner.l"
+#line 1744 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1385,7 +1385,7 @@ yy35:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1700 "Zend/zend_language_scanner.l"
+#line 1704 "Zend/zend_language_scanner.l"
                {
        YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
 
@@ -1429,7 +1429,7 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1718 "Zend/zend_language_scanner.l"
+#line 1722 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1447,7 +1447,7 @@ yy45:
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1731 "Zend/zend_language_scanner.l"
+#line 1735 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -1482,7 +1482,7 @@ yy50:
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1753 "Zend/zend_language_scanner.l"
+#line 1757 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -1562,7 +1562,7 @@ yyc_ST_BACKQUOTE:
 yy56:
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2226 "Zend/zend_language_scanner.l"
+#line 2230 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1614,7 +1614,7 @@ yy58:
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2170 "Zend/zend_language_scanner.l"
+#line 2174 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
@@ -1629,7 +1629,7 @@ yy61:
                ++YYCURSOR;
                YYDEBUG(62, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2157 "Zend/zend_language_scanner.l"
+#line 2161 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1652,7 +1652,7 @@ yy63:
 yy65:
                YYDEBUG(65, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1861 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -1683,7 +1683,7 @@ yy70:
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1849 "Zend/zend_language_scanner.l"
+#line 1853 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1709,7 +1709,7 @@ yy73:
                ++YYCURSOR;
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1839 "Zend/zend_language_scanner.l"
+#line 1843 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1785,7 +1785,7 @@ yy77:
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2176 "Zend/zend_language_scanner.l"
+#line 2180 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1845,7 +1845,7 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2165 "Zend/zend_language_scanner.l"
+#line 2169 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
@@ -1860,7 +1860,7 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2157 "Zend/zend_language_scanner.l"
+#line 2161 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1883,7 +1883,7 @@ yy85:
 yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1861 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -1914,7 +1914,7 @@ yy92:
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1849 "Zend/zend_language_scanner.l"
+#line 1853 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1940,7 +1940,7 @@ yy95:
                ++YYCURSOR;
                YYDEBUG(96, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1839 "Zend/zend_language_scanner.l"
+#line 1843 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1959,7 +1959,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(100, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2144 "Zend/zend_language_scanner.l"
+#line 2148 "Zend/zend_language_scanner.l"
        {
        YYCURSOR += CG(heredoc_len) - 1;
        yyleng = CG(heredoc_len);
@@ -2033,7 +2033,7 @@ yy103:
 yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2268 "Zend/zend_language_scanner.l"
+#line 2272 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -2119,7 +2119,7 @@ yy107:
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2157 "Zend/zend_language_scanner.l"
+#line 2161 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2142,7 +2142,7 @@ yy109:
 yy111:
                YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1861 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -2173,7 +2173,7 @@ yy116:
                ++YYCURSOR;
                YYDEBUG(117, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1849 "Zend/zend_language_scanner.l"
+#line 1853 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -2199,7 +2199,7 @@ yy119:
                ++YYCURSOR;
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1839 "Zend/zend_language_scanner.l"
+#line 1843 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -2388,7 +2388,7 @@ yy123:
 yy124:
                YYDEBUG(124, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1880 "Zend/zend_language_scanner.l"
+#line 1884 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@ -2980,7 +2980,7 @@ yy175:
 yy176:
                YYDEBUG(176, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1887 "Zend/zend_language_scanner.l"
+#line 1891 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -3021,7 +3021,7 @@ yy177:
 yy178:
                YYDEBUG(178, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1978 "Zend/zend_language_scanner.l"
+#line 1982 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -3096,7 +3096,7 @@ yy179:
 yy180:
                YYDEBUG(180, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2047 "Zend/zend_language_scanner.l"
+#line 2051 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -3143,7 +3143,7 @@ yy181:
                ++YYCURSOR;
                YYDEBUG(182, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2138 "Zend/zend_language_scanner.l"
+#line 2142 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
@@ -3154,7 +3154,7 @@ yy183:
                ++YYCURSOR;
                YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2396 "Zend/zend_language_scanner.l"
+#line 2400 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -3190,7 +3190,7 @@ yy187:
 yy189:
                YYDEBUG(189, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1555 "Zend/zend_language_scanner.l"
+#line 1559 "Zend/zend_language_scanner.l"
                {
        zendlval->value.dval = zend_strtod(yytext, NULL);
        zendlval->type = IS_DOUBLE;
@@ -3333,7 +3333,11 @@ yy202:
        }
 
        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 {
@@ -3342,7 +3346,7 @@ yy202:
                return T_DNUMBER;
        }
 }
-#line 3346 "Zend/zend_language_scanner.c"
+#line 3350 "Zend/zend_language_scanner.c"
 yy205:
                YYDEBUG(205, *YYCURSOR);
                ++YYCURSOR;
@@ -3351,7 +3355,7 @@ yy205:
 yy206:
                YYDEBUG(206, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1955 "Zend/zend_language_scanner.l"
+#line 1959 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -3359,7 +3363,7 @@ yy206:
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 3363 "Zend/zend_language_scanner.c"
+#line 3367 "Zend/zend_language_scanner.c"
 yy207:
                YYDEBUG(207, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3393,13 +3397,13 @@ yy209:
 yy211:
                YYDEBUG(211, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1861 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 3403 "Zend/zend_language_scanner.c"
+#line 3407 "Zend/zend_language_scanner.c"
 yy212:
                YYDEBUG(212, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3417,7 +3421,7 @@ yy213:
                {
        return T_LOGICAL_XOR;
 }
-#line 3421 "Zend/zend_language_scanner.c"
+#line 3425 "Zend/zend_language_scanner.c"
 yy215:
                YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
@@ -3430,7 +3434,7 @@ yy215:
                {
        return T_LOGICAL_OR;
 }
-#line 3434 "Zend/zend_language_scanner.c"
+#line 3438 "Zend/zend_language_scanner.c"
 yy217:
                YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
@@ -3440,7 +3444,7 @@ yy217:
                {
        return T_XOR_EQUAL;
 }
-#line 3444 "Zend/zend_language_scanner.c"
+#line 3448 "Zend/zend_language_scanner.c"
 yy219:
                YYDEBUG(219, *YYCURSOR);
                ++YYCURSOR;
@@ -3450,7 +3454,7 @@ yy219:
                {
        return T_BOOLEAN_OR;
 }
-#line 3454 "Zend/zend_language_scanner.c"
+#line 3458 "Zend/zend_language_scanner.c"
 yy221:
                YYDEBUG(221, *YYCURSOR);
                ++YYCURSOR;
@@ -3460,7 +3464,7 @@ yy221:
                {
        return T_OR_EQUAL;
 }
-#line 3464 "Zend/zend_language_scanner.c"
+#line 3468 "Zend/zend_language_scanner.c"
 yy223:
                YYDEBUG(223, *YYCURSOR);
                ++YYCURSOR;
@@ -3470,7 +3474,7 @@ yy223:
                {
        return T_BOOLEAN_AND;
 }
-#line 3474 "Zend/zend_language_scanner.c"
+#line 3478 "Zend/zend_language_scanner.c"
 yy225:
                YYDEBUG(225, *YYCURSOR);
                ++YYCURSOR;
@@ -3480,7 +3484,7 @@ yy225:
                {
        return T_AND_EQUAL;
 }
-#line 3484 "Zend/zend_language_scanner.c"
+#line 3488 "Zend/zend_language_scanner.c"
 yy227:
                YYDEBUG(227, *YYCURSOR);
                ++YYCURSOR;
@@ -3489,7 +3493,7 @@ yy227:
 yy228:
                YYDEBUG(228, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1964 "Zend/zend_language_scanner.l"
+#line 1968 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -3502,7 +3506,7 @@ yy228:
                return yytext[0];
        }
 }
-#line 3506 "Zend/zend_language_scanner.c"
+#line 3510 "Zend/zend_language_scanner.c"
 yy229:
                YYDEBUG(229, *YYCURSOR);
                ++YYCURSOR;
@@ -3512,7 +3516,7 @@ yy229:
                {
        return T_MOD_EQUAL;
 }
-#line 3516 "Zend/zend_language_scanner.c"
+#line 3520 "Zend/zend_language_scanner.c"
 yy231:
                YYDEBUG(231, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3547,7 +3551,7 @@ yy235:
                {
        return T_CONCAT_EQUAL;
 }
-#line 3551 "Zend/zend_language_scanner.c"
+#line 3555 "Zend/zend_language_scanner.c"
 yy237:
                YYDEBUG(237, *YYCURSOR);
                yyaccept = 4;
@@ -3556,7 +3560,7 @@ yy237:
 yy238:
                YYDEBUG(238, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1921 "Zend/zend_language_scanner.l"
+#line 1925 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3590,7 +3594,7 @@ yy238:
 
        return T_COMMENT;
 }
-#line 3594 "Zend/zend_language_scanner.c"
+#line 3598 "Zend/zend_language_scanner.c"
 yy239:
                YYDEBUG(239, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3604,7 +3608,7 @@ yy240:
                {
        return T_DIV_EQUAL;
 }
-#line 3608 "Zend/zend_language_scanner.c"
+#line 3612 "Zend/zend_language_scanner.c"
 yy242:
                YYDEBUG(242, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3631,7 +3635,7 @@ yy245:
                {
        return T_MUL_EQUAL;
 }
-#line 3635 "Zend/zend_language_scanner.c"
+#line 3639 "Zend/zend_language_scanner.c"
 yy247:
                YYDEBUG(247, *YYCURSOR);
                ++YYCURSOR;
@@ -3642,7 +3646,7 @@ yy247:
                {
        return T_SR;
 }
-#line 3646 "Zend/zend_language_scanner.c"
+#line 3650 "Zend/zend_language_scanner.c"
 yy249:
                YYDEBUG(249, *YYCURSOR);
                ++YYCURSOR;
@@ -3652,7 +3656,7 @@ yy249:
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3656 "Zend/zend_language_scanner.c"
+#line 3660 "Zend/zend_language_scanner.c"
 yy251:
                YYDEBUG(251, *YYCURSOR);
                ++YYCURSOR;
@@ -3662,7 +3666,7 @@ yy251:
                {
        return T_SR_EQUAL;
 }
-#line 3666 "Zend/zend_language_scanner.c"
+#line 3670 "Zend/zend_language_scanner.c"
 yy253:
                YYDEBUG(253, *YYCURSOR);
                yyaccept = 5;
@@ -3677,7 +3681,7 @@ yy254:
                {
        return T_SL;
 }
-#line 3681 "Zend/zend_language_scanner.c"
+#line 3685 "Zend/zend_language_scanner.c"
 yy255:
                YYDEBUG(255, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3693,7 +3697,7 @@ yy256:
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3697 "Zend/zend_language_scanner.c"
+#line 3701 "Zend/zend_language_scanner.c"
 yy258:
                YYDEBUG(258, *YYCURSOR);
                ++YYCURSOR;
@@ -3704,7 +3708,7 @@ yy259:
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3708 "Zend/zend_language_scanner.c"
+#line 3712 "Zend/zend_language_scanner.c"
 yy260:
                YYDEBUG(260, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3759,7 +3763,7 @@ yy267:
                {
        return T_SL_EQUAL;
 }
-#line 3763 "Zend/zend_language_scanner.c"
+#line 3767 "Zend/zend_language_scanner.c"
 yy269:
                YYDEBUG(269, *YYCURSOR);
                ++YYCURSOR;
@@ -3864,7 +3868,7 @@ yy278:
 yy279:
                YYDEBUG(279, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2089 "Zend/zend_language_scanner.l"
+#line 2093 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3912,7 +3916,7 @@ yy279:
 
        return T_START_HEREDOC;
 }
-#line 3916 "Zend/zend_language_scanner.c"
+#line 3920 "Zend/zend_language_scanner.c"
 yy280:
                YYDEBUG(280, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3956,7 +3960,7 @@ yy283:
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3960 "Zend/zend_language_scanner.c"
+#line 3964 "Zend/zend_language_scanner.c"
 yy286:
                YYDEBUG(286, *YYCURSOR);
                ++YYCURSOR;
@@ -3966,7 +3970,7 @@ yy286:
                {
        return T_PLUS_EQUAL;
 }
-#line 3970 "Zend/zend_language_scanner.c"
+#line 3974 "Zend/zend_language_scanner.c"
 yy288:
                YYDEBUG(288, *YYCURSOR);
                ++YYCURSOR;
@@ -3976,7 +3980,7 @@ yy288:
                {
        return T_INC;
 }
-#line 3980 "Zend/zend_language_scanner.c"
+#line 3984 "Zend/zend_language_scanner.c"
 yy290:
                YYDEBUG(290, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3999,7 +4003,7 @@ yy292:
                {
        return T_LIST;
 }
-#line 4003 "Zend/zend_language_scanner.c"
+#line 4007 "Zend/zend_language_scanner.c"
 yy294:
                YYDEBUG(294, *YYCURSOR);
                ++YYCURSOR;
@@ -4010,7 +4014,7 @@ yy294:
                {
        return T_IS_EQUAL;
 }
-#line 4014 "Zend/zend_language_scanner.c"
+#line 4018 "Zend/zend_language_scanner.c"
 yy296:
                YYDEBUG(296, *YYCURSOR);
                ++YYCURSOR;
@@ -4020,7 +4024,7 @@ yy296:
                {
        return T_DOUBLE_ARROW;
 }
-#line 4024 "Zend/zend_language_scanner.c"
+#line 4028 "Zend/zend_language_scanner.c"
 yy298:
                YYDEBUG(298, *YYCURSOR);
                ++YYCURSOR;
@@ -4030,7 +4034,7 @@ yy298:
                {
        return T_IS_IDENTICAL;
 }
-#line 4034 "Zend/zend_language_scanner.c"
+#line 4038 "Zend/zend_language_scanner.c"
 yy300:
                YYDEBUG(300, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4160,7 +4164,7 @@ yy316:
                }
                YYDEBUG(319, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1690 "Zend/zend_language_scanner.l"
+#line 1694 "Zend/zend_language_scanner.l"
                {
        if (CG(current_namespace)) {
                *zendlval = *CG(current_namespace);
@@ -4170,7 +4174,7 @@ yy316:
        }
        return T_NS_C;
 }
-#line 4174 "Zend/zend_language_scanner.c"
+#line 4178 "Zend/zend_language_scanner.c"
 yy320:
                YYDEBUG(320, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4190,7 +4194,7 @@ yy321:
                }
                YYDEBUG(324, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1663 "Zend/zend_language_scanner.l"
+#line 1667 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
        const size_t filename_len = strlen(filename);
@@ -4217,7 +4221,7 @@ yy321:
        zendlval->type = IS_STRING;
        return T_DIR;
 }
-#line 4221 "Zend/zend_language_scanner.c"
+#line 4225 "Zend/zend_language_scanner.c"
 yy325:
                YYDEBUG(325, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4242,13 +4246,13 @@ yy327:
                }
                YYDEBUG(330, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1645 "Zend/zend_language_scanner.l"
+#line 1649 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;
        return T_LINE;
 }
-#line 4252 "Zend/zend_language_scanner.c"
+#line 4256 "Zend/zend_language_scanner.c"
 yy331:
                YYDEBUG(331, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4283,7 +4287,7 @@ yy335:
                }
                YYDEBUG(338, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1624 "Zend/zend_language_scanner.l"
+#line 1628 "Zend/zend_language_scanner.l"
                {
        const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
        const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
@@ -4304,7 +4308,7 @@ yy335:
        zendlval->type = IS_STRING;
        return T_METHOD_C;
 }
-#line 4308 "Zend/zend_language_scanner.c"
+#line 4312 "Zend/zend_language_scanner.c"
 yy339:
                YYDEBUG(339, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4355,7 +4359,7 @@ yy346:
                }
                YYDEBUG(349, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1608 "Zend/zend_language_scanner.l"
+#line 1612 "Zend/zend_language_scanner.l"
                {
        const char *func_name = NULL;
 
@@ -4371,7 +4375,7 @@ yy346:
        zendlval->type = IS_STRING;
        return T_FUNC_C;
 }
-#line 4375 "Zend/zend_language_scanner.c"
+#line 4379 "Zend/zend_language_scanner.c"
 yy350:
                YYDEBUG(350, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4391,7 +4395,7 @@ yy351:
                }
                YYDEBUG(354, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1651 "Zend/zend_language_scanner.l"
+#line 1655 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
 
@@ -4403,7 +4407,7 @@ yy351:
        zendlval->type = IS_STRING;
        return T_FILE;
 }
-#line 4407 "Zend/zend_language_scanner.c"
+#line 4411 "Zend/zend_language_scanner.c"
 yy355:
                YYDEBUG(355, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4433,7 +4437,7 @@ yy358:
                }
                YYDEBUG(361, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1588 "Zend/zend_language_scanner.l"
+#line 1592 "Zend/zend_language_scanner.l"
                {
        const char *trait_name = NULL;
        
@@ -4453,7 +4457,7 @@ yy358:
        
        return T_TRAIT_C;
 }
-#line 4457 "Zend/zend_language_scanner.c"
+#line 4461 "Zend/zend_language_scanner.c"
 yy362:
                YYDEBUG(362, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4483,7 +4487,7 @@ yy365:
                }
                YYDEBUG(368, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1561 "Zend/zend_language_scanner.l"
+#line 1565 "Zend/zend_language_scanner.l"
                {
        const char *class_name = NULL;
        
@@ -4510,7 +4514,7 @@ yy365:
        }
        return T_CLASS_C;
 }
-#line 4514 "Zend/zend_language_scanner.c"
+#line 4518 "Zend/zend_language_scanner.c"
 yy369:
                YYDEBUG(369, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4576,7 +4580,7 @@ yy380:
                {
        return T_HALT_COMPILER;
 }
-#line 4580 "Zend/zend_language_scanner.c"
+#line 4584 "Zend/zend_language_scanner.c"
 yy382:
                YYDEBUG(382, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4600,7 +4604,7 @@ yy384:
                {
        return T_USE;
 }
-#line 4604 "Zend/zend_language_scanner.c"
+#line 4608 "Zend/zend_language_scanner.c"
 yy386:
                YYDEBUG(386, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4623,7 +4627,7 @@ yy388:
                {
        return T_UNSET;
 }
-#line 4627 "Zend/zend_language_scanner.c"
+#line 4631 "Zend/zend_language_scanner.c"
 yy390:
                YYDEBUG(390, *YYCURSOR);
                ++YYCURSOR;
@@ -4799,7 +4803,7 @@ yy405:
                {
        return T_INT_CAST;
 }
-#line 4803 "Zend/zend_language_scanner.c"
+#line 4807 "Zend/zend_language_scanner.c"
 yy408:
                YYDEBUG(408, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4847,7 +4851,7 @@ yy413:
                {
        return T_DOUBLE_CAST;
 }
-#line 4851 "Zend/zend_language_scanner.c"
+#line 4855 "Zend/zend_language_scanner.c"
 yy417:
                YYDEBUG(417, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4921,7 +4925,7 @@ yy427:
                {
        return T_STRING_CAST;
 }
-#line 4925 "Zend/zend_language_scanner.c"
+#line 4929 "Zend/zend_language_scanner.c"
 yy431:
                YYDEBUG(431, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4958,7 +4962,7 @@ yy434:
                {
        return T_ARRAY_CAST;
 }
-#line 4962 "Zend/zend_language_scanner.c"
+#line 4966 "Zend/zend_language_scanner.c"
 yy438:
                YYDEBUG(438, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5000,7 +5004,7 @@ yy442:
                {
        return T_OBJECT_CAST;
 }
-#line 5004 "Zend/zend_language_scanner.c"
+#line 5008 "Zend/zend_language_scanner.c"
 yy446:
                YYDEBUG(446, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5045,7 +5049,7 @@ yy451:
                {
        return T_BOOL_CAST;
 }
-#line 5049 "Zend/zend_language_scanner.c"
+#line 5053 "Zend/zend_language_scanner.c"
 yy454:
                YYDEBUG(454, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5109,7 +5113,7 @@ yy462:
                {
        return T_UNSET_CAST;
 }
-#line 5113 "Zend/zend_language_scanner.c"
+#line 5117 "Zend/zend_language_scanner.c"
 yy466:
                YYDEBUG(466, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5127,7 +5131,7 @@ yy467:
                {
        return T_VAR;
 }
-#line 5131 "Zend/zend_language_scanner.c"
+#line 5135 "Zend/zend_language_scanner.c"
 yy469:
                YYDEBUG(469, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5151,7 +5155,7 @@ yy471:
                {
        return T_NEW;
 }
-#line 5155 "Zend/zend_language_scanner.c"
+#line 5159 "Zend/zend_language_scanner.c"
 yy473:
                YYDEBUG(473, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5194,7 +5198,7 @@ yy479:
                {
        return T_NAMESPACE;
 }
-#line 5198 "Zend/zend_language_scanner.c"
+#line 5202 "Zend/zend_language_scanner.c"
 yy481:
                YYDEBUG(481, *YYCURSOR);
                ++YYCURSOR;
@@ -5204,7 +5208,7 @@ yy481:
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 5208 "Zend/zend_language_scanner.c"
+#line 5212 "Zend/zend_language_scanner.c"
 yy483:
                YYDEBUG(483, *YYCURSOR);
                ++YYCURSOR;
@@ -5230,7 +5234,7 @@ yy485:
                {
        return T_MINUS_EQUAL;
 }
-#line 5234 "Zend/zend_language_scanner.c"
+#line 5238 "Zend/zend_language_scanner.c"
 yy487:
                YYDEBUG(487, *YYCURSOR);
                ++YYCURSOR;
@@ -5240,7 +5244,7 @@ yy487:
                {
        return T_DEC;
 }
-#line 5244 "Zend/zend_language_scanner.c"
+#line 5248 "Zend/zend_language_scanner.c"
 yy489:
                YYDEBUG(489, *YYCURSOR);
                ++YYCURSOR;
@@ -5251,7 +5255,7 @@ yy489:
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 5255 "Zend/zend_language_scanner.c"
+#line 5259 "Zend/zend_language_scanner.c"
 yy491:
                YYDEBUG(491, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5300,7 +5304,7 @@ yy496:
                {
        return T_PUBLIC;
 }
-#line 5304 "Zend/zend_language_scanner.c"
+#line 5308 "Zend/zend_language_scanner.c"
 yy498:
                YYDEBUG(498, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5359,7 +5363,7 @@ yy505:
                {
        return T_PROTECTED;
 }
-#line 5363 "Zend/zend_language_scanner.c"
+#line 5367 "Zend/zend_language_scanner.c"
 yy507:
                YYDEBUG(507, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5393,7 +5397,7 @@ yy511:
                {
        return T_PRIVATE;
 }
-#line 5397 "Zend/zend_language_scanner.c"
+#line 5401 "Zend/zend_language_scanner.c"
 yy513:
                YYDEBUG(513, *YYCURSOR);
                ++YYCURSOR;
@@ -5406,7 +5410,7 @@ yy513:
                {
        return T_PRINT;
 }
-#line 5410 "Zend/zend_language_scanner.c"
+#line 5414 "Zend/zend_language_scanner.c"
 yy515:
                YYDEBUG(515, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5435,7 +5439,7 @@ yy518:
                {
        return T_GOTO;
 }
-#line 5439 "Zend/zend_language_scanner.c"
+#line 5443 "Zend/zend_language_scanner.c"
 yy520:
                YYDEBUG(520, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5463,7 +5467,7 @@ yy523:
                {
        return T_GLOBAL;
 }
-#line 5467 "Zend/zend_language_scanner.c"
+#line 5471 "Zend/zend_language_scanner.c"
 yy525:
                YYDEBUG(525, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5504,7 +5508,7 @@ yy531:
                {
        return T_BREAK;
 }
-#line 5508 "Zend/zend_language_scanner.c"
+#line 5512 "Zend/zend_language_scanner.c"
 yy533:
                YYDEBUG(533, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5548,7 +5552,7 @@ yy539:
                {
        return T_SWITCH;
 }
-#line 5552 "Zend/zend_language_scanner.c"
+#line 5556 "Zend/zend_language_scanner.c"
 yy541:
                YYDEBUG(541, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5576,7 +5580,7 @@ yy544:
                {
        return T_STATIC;
 }
-#line 5580 "Zend/zend_language_scanner.c"
+#line 5584 "Zend/zend_language_scanner.c"
 yy546:
                YYDEBUG(546, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5607,7 +5611,7 @@ yy549:
                {
        return T_AS;
 }
-#line 5611 "Zend/zend_language_scanner.c"
+#line 5615 "Zend/zend_language_scanner.c"
 yy551:
                YYDEBUG(551, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5630,7 +5634,7 @@ yy553:
                {
        return T_ARRAY;
 }
-#line 5634 "Zend/zend_language_scanner.c"
+#line 5638 "Zend/zend_language_scanner.c"
 yy555:
                YYDEBUG(555, *YYCURSOR);
                ++YYCURSOR;
@@ -5643,7 +5647,7 @@ yy555:
                {
        return T_LOGICAL_AND;
 }
-#line 5647 "Zend/zend_language_scanner.c"
+#line 5651 "Zend/zend_language_scanner.c"
 yy557:
                YYDEBUG(557, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5681,7 +5685,7 @@ yy562:
                {
        return T_ABSTRACT;
 }
-#line 5685 "Zend/zend_language_scanner.c"
+#line 5689 "Zend/zend_language_scanner.c"
 yy564:
                YYDEBUG(564, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5709,7 +5713,7 @@ yy567:
                {
        return T_WHILE;
 }
-#line 5713 "Zend/zend_language_scanner.c"
+#line 5717 "Zend/zend_language_scanner.c"
 yy569:
                YYDEBUG(569, *YYCURSOR);
                ++YYCURSOR;
@@ -5722,7 +5726,7 @@ yy569:
                {
        return T_IF;
 }
-#line 5726 "Zend/zend_language_scanner.c"
+#line 5730 "Zend/zend_language_scanner.c"
 yy571:
                YYDEBUG(571, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5778,7 +5782,7 @@ yy576:
                {
        return T_ISSET;
 }
-#line 5782 "Zend/zend_language_scanner.c"
+#line 5786 "Zend/zend_language_scanner.c"
 yy578:
                YYDEBUG(578, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5836,7 +5840,7 @@ yy585:
                {
        return T_INCLUDE;
 }
-#line 5840 "Zend/zend_language_scanner.c"
+#line 5844 "Zend/zend_language_scanner.c"
 yy586:
                YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5869,7 +5873,7 @@ yy590:
                {
        return T_INCLUDE_ONCE;
 }
-#line 5873 "Zend/zend_language_scanner.c"
+#line 5877 "Zend/zend_language_scanner.c"
 yy592:
                YYDEBUG(592, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5907,7 +5911,7 @@ yy597:
                {
        return T_INTERFACE;
 }
-#line 5911 "Zend/zend_language_scanner.c"
+#line 5915 "Zend/zend_language_scanner.c"
 yy599:
                YYDEBUG(599, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5961,7 +5965,7 @@ yy605:
                {
         return T_INSTEADOF;
 }
-#line 5965 "Zend/zend_language_scanner.c"
+#line 5969 "Zend/zend_language_scanner.c"
 yy607:
                YYDEBUG(607, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5994,7 +5998,7 @@ yy611:
                {
        return T_INSTANCEOF;
 }
-#line 5998 "Zend/zend_language_scanner.c"
+#line 6002 "Zend/zend_language_scanner.c"
 yy613:
                YYDEBUG(613, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6042,7 +6046,7 @@ yy620:
                {
        return T_IMPLEMENTS;
 }
-#line 6046 "Zend/zend_language_scanner.c"
+#line 6050 "Zend/zend_language_scanner.c"
 yy622:
                YYDEBUG(622, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6074,7 +6078,7 @@ yy623:
                {
        return T_TRY;
 }
-#line 6078 "Zend/zend_language_scanner.c"
+#line 6082 "Zend/zend_language_scanner.c"
 yy626:
                YYDEBUG(626, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6097,7 +6101,7 @@ yy628:
                {
        return T_TRAIT;
 }
-#line 6101 "Zend/zend_language_scanner.c"
+#line 6105 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6120,7 +6124,7 @@ yy632:
                {
        return T_THROW;
 }
-#line 6124 "Zend/zend_language_scanner.c"
+#line 6128 "Zend/zend_language_scanner.c"
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6185,7 +6189,7 @@ yy641:
                {
        return T_REQUIRE;
 }
-#line 6189 "Zend/zend_language_scanner.c"
+#line 6193 "Zend/zend_language_scanner.c"
 yy642:
                YYDEBUG(642, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6218,7 +6222,7 @@ yy646:
                {
        return T_REQUIRE_ONCE;
 }
-#line 6222 "Zend/zend_language_scanner.c"
+#line 6226 "Zend/zend_language_scanner.c"
 yy648:
                YYDEBUG(648, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6241,7 +6245,7 @@ yy650:
                {
        return T_RETURN;
 }
-#line 6245 "Zend/zend_language_scanner.c"
+#line 6249 "Zend/zend_language_scanner.c"
 yy652:
                YYDEBUG(652, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6335,7 +6339,7 @@ yy661:
                {
        return T_CONTINUE;
 }
-#line 6339 "Zend/zend_language_scanner.c"
+#line 6343 "Zend/zend_language_scanner.c"
 yy663:
                YYDEBUG(663, *YYCURSOR);
                ++YYCURSOR;
@@ -6348,7 +6352,7 @@ yy663:
                {
        return T_CONST;
 }
-#line 6352 "Zend/zend_language_scanner.c"
+#line 6356 "Zend/zend_language_scanner.c"
 yy665:
                YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6377,7 +6381,7 @@ yy668:
                {
        return T_CLONE;
 }
-#line 6381 "Zend/zend_language_scanner.c"
+#line 6385 "Zend/zend_language_scanner.c"
 yy670:
                YYDEBUG(670, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6395,7 +6399,7 @@ yy671:
                {
        return T_CLASS;
 }
-#line 6399 "Zend/zend_language_scanner.c"
+#line 6403 "Zend/zend_language_scanner.c"
 yy673:
                YYDEBUG(673, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6445,7 +6449,7 @@ yy680:
                {
  return T_CALLABLE;
 }
-#line 6449 "Zend/zend_language_scanner.c"
+#line 6453 "Zend/zend_language_scanner.c"
 yy682:
                YYDEBUG(682, *YYCURSOR);
                ++YYCURSOR;
@@ -6458,7 +6462,7 @@ yy682:
                {
        return T_CASE;
 }
-#line 6462 "Zend/zend_language_scanner.c"
+#line 6466 "Zend/zend_language_scanner.c"
 yy684:
                YYDEBUG(684, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6476,7 +6480,7 @@ yy685:
                {
        return T_CATCH;
 }
-#line 6480 "Zend/zend_language_scanner.c"
+#line 6484 "Zend/zend_language_scanner.c"
 yy687:
                YYDEBUG(687, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6531,7 +6535,7 @@ yy695:
                {
        return T_FUNCTION;
 }
-#line 6535 "Zend/zend_language_scanner.c"
+#line 6539 "Zend/zend_language_scanner.c"
 yy697:
                YYDEBUG(697, *YYCURSOR);
                ++YYCURSOR;
@@ -6559,7 +6563,7 @@ yy698:
                {
        return T_FOR;
 }
-#line 6563 "Zend/zend_language_scanner.c"
+#line 6567 "Zend/zend_language_scanner.c"
 yy699:
                YYDEBUG(699, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6587,7 +6591,7 @@ yy702:
                {
        return T_FOREACH;
 }
-#line 6591 "Zend/zend_language_scanner.c"
+#line 6595 "Zend/zend_language_scanner.c"
 yy704:
                YYDEBUG(704, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6610,7 +6614,7 @@ yy706:
                {
        return T_FINAL;
 }
-#line 6614 "Zend/zend_language_scanner.c"
+#line 6618 "Zend/zend_language_scanner.c"
 yy708:
                YYDEBUG(708, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6645,7 +6649,7 @@ yy710:
                {
        return T_DO;
 }
-#line 6649 "Zend/zend_language_scanner.c"
+#line 6653 "Zend/zend_language_scanner.c"
 yy712:
                YYDEBUG(712, *YYCURSOR);
                ++YYCURSOR;
@@ -6658,7 +6662,7 @@ yy712:
                {
        return T_EXIT;
 }
-#line 6662 "Zend/zend_language_scanner.c"
+#line 6666 "Zend/zend_language_scanner.c"
 yy714:
                YYDEBUG(714, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6697,7 +6701,7 @@ yy719:
                {
        return T_DEFAULT;
 }
-#line 6701 "Zend/zend_language_scanner.c"
+#line 6705 "Zend/zend_language_scanner.c"
 yy721:
                YYDEBUG(721, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6725,7 +6729,7 @@ yy724:
                {
        return T_DECLARE;
 }
-#line 6729 "Zend/zend_language_scanner.c"
+#line 6733 "Zend/zend_language_scanner.c"
 yy726:
                YYDEBUG(726, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6809,7 +6813,7 @@ yy737:
                {
        return T_EXTENDS;
 }
-#line 6813 "Zend/zend_language_scanner.c"
+#line 6817 "Zend/zend_language_scanner.c"
 yy739:
                YYDEBUG(739, *YYCURSOR);
                ++YYCURSOR;
@@ -6822,7 +6826,7 @@ yy739:
                {
        return T_EXIT;
 }
-#line 6826 "Zend/zend_language_scanner.c"
+#line 6830 "Zend/zend_language_scanner.c"
 yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6840,7 +6844,7 @@ yy742:
                {
        return T_EVAL;
 }
-#line 6844 "Zend/zend_language_scanner.c"
+#line 6848 "Zend/zend_language_scanner.c"
 yy744:
                YYDEBUG(744, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6914,7 +6918,7 @@ yy753:
                {
        return T_ENDWHILE;
 }
-#line 6918 "Zend/zend_language_scanner.c"
+#line 6922 "Zend/zend_language_scanner.c"
 yy755:
                YYDEBUG(755, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6947,7 +6951,7 @@ yy759:
                {
        return T_ENDSWITCH;
 }
-#line 6951 "Zend/zend_language_scanner.c"
+#line 6955 "Zend/zend_language_scanner.c"
 yy761:
                YYDEBUG(761, *YYCURSOR);
                ++YYCURSOR;
@@ -6960,7 +6964,7 @@ yy761:
                {
        return T_ENDIF;
 }
-#line 6964 "Zend/zend_language_scanner.c"
+#line 6968 "Zend/zend_language_scanner.c"
 yy763:
                YYDEBUG(763, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6993,7 +6997,7 @@ yy765:
                {
        return T_ENDFOR;
 }
-#line 6997 "Zend/zend_language_scanner.c"
+#line 7001 "Zend/zend_language_scanner.c"
 yy766:
                YYDEBUG(766, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7021,7 +7025,7 @@ yy769:
                {
        return T_ENDFOREACH;
 }
-#line 7025 "Zend/zend_language_scanner.c"
+#line 7029 "Zend/zend_language_scanner.c"
 yy771:
                YYDEBUG(771, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7059,7 +7063,7 @@ yy776:
                {
        return T_ENDDECLARE;
 }
-#line 7063 "Zend/zend_language_scanner.c"
+#line 7067 "Zend/zend_language_scanner.c"
 yy778:
                YYDEBUG(778, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7082,7 +7086,7 @@ yy780:
                {
        return T_EMPTY;
 }
-#line 7086 "Zend/zend_language_scanner.c"
+#line 7090 "Zend/zend_language_scanner.c"
 yy782:
                YYDEBUG(782, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7115,7 +7119,7 @@ yy784:
                {
        return T_ELSE;
 }
-#line 7119 "Zend/zend_language_scanner.c"
+#line 7123 "Zend/zend_language_scanner.c"
 yy785:
                YYDEBUG(785, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7133,7 +7137,7 @@ yy786:
                {
        return T_ELSEIF;
 }
-#line 7137 "Zend/zend_language_scanner.c"
+#line 7141 "Zend/zend_language_scanner.c"
 yy788:
                YYDEBUG(788, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7151,7 +7155,7 @@ yy789:
                {
        return T_ECHO;
 }
-#line 7155 "Zend/zend_language_scanner.c"
+#line 7159 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7232,7 +7236,7 @@ yy794:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7236 "Zend/zend_language_scanner.c"
+#line 7240 "Zend/zend_language_scanner.c"
 yy795:
                YYDEBUG(795, *YYCURSOR);
                ++YYCURSOR;
@@ -7246,7 +7250,7 @@ yy796:
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 7250 "Zend/zend_language_scanner.c"
+#line 7254 "Zend/zend_language_scanner.c"
 yy797:
                YYDEBUG(797, *YYCURSOR);
                ++YYCURSOR;
@@ -7262,7 +7266,7 @@ yy798:
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7266 "Zend/zend_language_scanner.c"
+#line 7270 "Zend/zend_language_scanner.c"
 yy799:
                YYDEBUG(799, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7287,7 +7291,7 @@ yy802:
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7291 "Zend/zend_language_scanner.c"
+#line 7295 "Zend/zend_language_scanner.c"
 yy804:
                YYDEBUG(804, *YYCURSOR);
                ++YYCURSOR;
@@ -7365,7 +7369,7 @@ yy809:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 7369 "Zend/zend_language_scanner.c"
+#line 7373 "Zend/zend_language_scanner.c"
 yy810:
                YYDEBUG(810, *YYCURSOR);
                ++YYCURSOR;
@@ -7378,7 +7382,7 @@ yy810:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 7382 "Zend/zend_language_scanner.c"
+#line 7386 "Zend/zend_language_scanner.c"
 yy812:
                YYDEBUG(812, *YYCURSOR);
                ++YYCURSOR;
@@ -7400,7 +7404,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(817, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2340 "Zend/zend_language_scanner.l"
+#line 2344 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7455,7 +7459,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7459 "Zend/zend_language_scanner.c"
+#line 7463 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7562,7 +7566,7 @@ yy820:
 yy821:
                YYDEBUG(821, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1536 "Zend/zend_language_scanner.l"
+#line 1540 "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);
@@ -7574,7 +7578,7 @@ yy821:
        }
        return T_NUM_STRING;
 }
-#line 7578 "Zend/zend_language_scanner.c"
+#line 7582 "Zend/zend_language_scanner.c"
 yy822:
                YYDEBUG(822, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7594,23 +7598,23 @@ yy823:
 yy824:
                YYDEBUG(824, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1868 "Zend/zend_language_scanner.l"
+#line 1872 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7603 "Zend/zend_language_scanner.c"
+#line 7607 "Zend/zend_language_scanner.c"
 yy825:
                YYDEBUG(825, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(826, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1863 "Zend/zend_language_scanner.l"
+#line 1867 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 7614 "Zend/zend_language_scanner.c"
+#line 7618 "Zend/zend_language_scanner.c"
 yy827:
                YYDEBUG(827, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7620,14 +7624,14 @@ yy828:
                ++YYCURSOR;
                YYDEBUG(829, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1873 "Zend/zend_language_scanner.l"
+#line 1877 "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 7631 "Zend/zend_language_scanner.c"
+#line 7635 "Zend/zend_language_scanner.c"
 yy830:
                YYDEBUG(830, *YYCURSOR);
                ++YYCURSOR;
@@ -7636,19 +7640,19 @@ yy830:
 yy831:
                YYDEBUG(831, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1880 "Zend/zend_language_scanner.l"
+#line 1884 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7646 "Zend/zend_language_scanner.c"
+#line 7650 "Zend/zend_language_scanner.c"
 yy832:
                YYDEBUG(832, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(833, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2396 "Zend/zend_language_scanner.l"
+#line 2400 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7657,7 +7661,7 @@ yy832:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7661 "Zend/zend_language_scanner.c"
+#line 7665 "Zend/zend_language_scanner.c"
 yy834:
                YYDEBUG(834, *YYCURSOR);
                ++YYCURSOR;
@@ -7693,13 +7697,13 @@ yy836:
 yy838:
                YYDEBUG(838, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1861 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 7703 "Zend/zend_language_scanner.c"
+#line 7707 "Zend/zend_language_scanner.c"
 yy839:
                YYDEBUG(839, *YYCURSOR);
                ++YYCURSOR;
@@ -7739,14 +7743,14 @@ yy844:
 yy846:
                YYDEBUG(846, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1548 "Zend/zend_language_scanner.l"
+#line 1552 "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 7750 "Zend/zend_language_scanner.c"
+#line 7754 "Zend/zend_language_scanner.c"
 yy847:
                YYDEBUG(847, *YYCURSOR);
                ++YYCURSOR;
@@ -7769,6 +7773,6 @@ yy849:
                goto yy846;
        }
 }
-#line 2405 "Zend/zend_language_scanner.l"
+#line 2409 "Zend/zend_language_scanner.l"
 
 }
index 458bd1a46d798fa90e0032c145c50150fcbedce6..96168d3516514f28a5a1904774b28c06b1416935 100644 (file)
@@ -1523,7 +1523,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 0a72f090ae1babc66b2e7253c810212a394a1ef1..d05939b9c99deb69cd9d821130c57cfa592ad51a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Mon Jan 16 14:45:55 2012 */
+/* Generated by re2c 0.13.5 on Wed Feb 15 17:48:20 2012 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {