]> granicus.if.org Git - php/commitdiff
Fixed bug #61225 (Lexing 0b0*+<NUM> incorectly)
authorPierrick Charron <pierrick@php.net>
Fri, 2 Mar 2012 02:36:31 +0000 (02:36 +0000)
committerPierrick Charron <pierrick@php.net>
Fri, 2 Mar 2012 02:36:31 +0000 (02:36 +0000)
Zend/tests/bug61225.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/bug61225.phpt b/Zend/tests/bug61225.phpt
new file mode 100644 (file)
index 0000000..33d74bd
--- /dev/null
@@ -0,0 +1,9 @@
+--TEST--
+Bug #61225 (Lexing 0b0*+<NUM> incorectly)
+--FILE--
+<?php
+echo 0b00+1;
+echo "\n";
+?>
+--EXPECT--
+1
index c8bd0a2adda5f6041800c10ea886e6276ee9d350..82f6c8c081085f3398c965dc62c8e0a554c85265 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Feb 15 17:27:19 2012 */
+/* Generated by re2c 0.13.5 on Thu Mar  1 21:30:38 2012 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -1090,7 +1090,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1779 "Zend/zend_language_scanner.l"
+#line 1783 "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 1767 "Zend/zend_language_scanner.l"
+#line 1771 "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 1744 "Zend/zend_language_scanner.l"
+#line 1748 "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 1704 "Zend/zend_language_scanner.l"
+#line 1708 "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 1722 "Zend/zend_language_scanner.l"
+#line 1726 "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 1735 "Zend/zend_language_scanner.l"
+#line 1739 "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 1757 "Zend/zend_language_scanner.l"
+#line 1761 "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 2230 "Zend/zend_language_scanner.l"
+#line 2234 "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 2174 "Zend/zend_language_scanner.l"
+#line 2178 "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 2161 "Zend/zend_language_scanner.l"
+#line 2165 "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 1861 "Zend/zend_language_scanner.l"
+#line 1865 "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 1853 "Zend/zend_language_scanner.l"
+#line 1857 "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 1843 "Zend/zend_language_scanner.l"
+#line 1847 "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 2180 "Zend/zend_language_scanner.l"
+#line 2184 "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 2169 "Zend/zend_language_scanner.l"
+#line 2173 "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 2161 "Zend/zend_language_scanner.l"
+#line 2165 "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 1861 "Zend/zend_language_scanner.l"
+#line 1865 "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 1853 "Zend/zend_language_scanner.l"
+#line 1857 "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 1843 "Zend/zend_language_scanner.l"
+#line 1847 "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 2148 "Zend/zend_language_scanner.l"
+#line 2152 "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 2272 "Zend/zend_language_scanner.l"
+#line 2276 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -2119,7 +2119,7 @@ yy107:
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2161 "Zend/zend_language_scanner.l"
+#line 2165 "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 1861 "Zend/zend_language_scanner.l"
+#line 1865 "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 1853 "Zend/zend_language_scanner.l"
+#line 1857 "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 1843 "Zend/zend_language_scanner.l"
+#line 1847 "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 1884 "Zend/zend_language_scanner.l"
+#line 1888 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@ -2931,7 +2931,7 @@ yy171:
 yy172:
                YYDEBUG(172, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1494 "Zend/zend_language_scanner.l"
+#line 1498 "Zend/zend_language_scanner.l"
                {
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
                zendlval->value.lval = strtol(yytext, NULL, 0);
@@ -2980,7 +2980,7 @@ yy175:
 yy176:
                YYDEBUG(176, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1891 "Zend/zend_language_scanner.l"
+#line 1895 "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 1982 "Zend/zend_language_scanner.l"
+#line 1986 "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 2051 "Zend/zend_language_scanner.l"
+#line 2055 "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 2142 "Zend/zend_language_scanner.l"
+#line 2146 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
@@ -3154,7 +3154,7 @@ yy183:
                ++YYCURSOR;
                YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2400 "Zend/zend_language_scanner.l"
+#line 2404 "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 1559 "Zend/zend_language_scanner.l"
+#line 1563 "Zend/zend_language_scanner.l"
                {
        zendlval->value.dval = zend_strtod(yytext, NULL);
        zendlval->type = IS_DOUBLE;
@@ -3300,7 +3300,11 @@ yy199:
        }
 
        if (len < SIZEOF_LONG * 8) {
-               zendlval->value.lval = strtol(bin, NULL, 2);
+               if (len == 0) {
+                       zendlval->value.lval = 0;
+               } else {
+                       zendlval->value.lval = strtol(bin, NULL, 2);
+               }
                zendlval->type = IS_LONG;
                return T_LNUMBER;
        } else {
@@ -3309,7 +3313,7 @@ yy199:
                return T_DNUMBER;
        }
 }
-#line 3313 "Zend/zend_language_scanner.c"
+#line 3317 "Zend/zend_language_scanner.c"
 yy202:
                YYDEBUG(202, *YYCURSOR);
                ++YYCURSOR;
@@ -3321,7 +3325,7 @@ yy202:
                }
                YYDEBUG(204, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1515 "Zend/zend_language_scanner.l"
+#line 1519 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -3346,7 +3350,7 @@ yy202:
                return T_DNUMBER;
        }
 }
-#line 3350 "Zend/zend_language_scanner.c"
+#line 3354 "Zend/zend_language_scanner.c"
 yy205:
                YYDEBUG(205, *YYCURSOR);
                ++YYCURSOR;
@@ -3355,7 +3359,7 @@ yy205:
 yy206:
                YYDEBUG(206, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1959 "Zend/zend_language_scanner.l"
+#line 1963 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -3363,7 +3367,7 @@ yy206:
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 3367 "Zend/zend_language_scanner.c"
+#line 3371 "Zend/zend_language_scanner.c"
 yy207:
                YYDEBUG(207, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3397,13 +3401,13 @@ yy209:
 yy211:
                YYDEBUG(211, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1861 "Zend/zend_language_scanner.l"
+#line 1865 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 3407 "Zend/zend_language_scanner.c"
+#line 3411 "Zend/zend_language_scanner.c"
 yy212:
                YYDEBUG(212, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3421,7 +3425,7 @@ yy213:
                {
        return T_LOGICAL_XOR;
 }
-#line 3425 "Zend/zend_language_scanner.c"
+#line 3429 "Zend/zend_language_scanner.c"
 yy215:
                YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
@@ -3434,7 +3438,7 @@ yy215:
                {
        return T_LOGICAL_OR;
 }
-#line 3438 "Zend/zend_language_scanner.c"
+#line 3442 "Zend/zend_language_scanner.c"
 yy217:
                YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
@@ -3444,7 +3448,7 @@ yy217:
                {
        return T_XOR_EQUAL;
 }
-#line 3448 "Zend/zend_language_scanner.c"
+#line 3452 "Zend/zend_language_scanner.c"
 yy219:
                YYDEBUG(219, *YYCURSOR);
                ++YYCURSOR;
@@ -3454,7 +3458,7 @@ yy219:
                {
        return T_BOOLEAN_OR;
 }
-#line 3458 "Zend/zend_language_scanner.c"
+#line 3462 "Zend/zend_language_scanner.c"
 yy221:
                YYDEBUG(221, *YYCURSOR);
                ++YYCURSOR;
@@ -3464,7 +3468,7 @@ yy221:
                {
        return T_OR_EQUAL;
 }
-#line 3468 "Zend/zend_language_scanner.c"
+#line 3472 "Zend/zend_language_scanner.c"
 yy223:
                YYDEBUG(223, *YYCURSOR);
                ++YYCURSOR;
@@ -3474,7 +3478,7 @@ yy223:
                {
        return T_BOOLEAN_AND;
 }
-#line 3478 "Zend/zend_language_scanner.c"
+#line 3482 "Zend/zend_language_scanner.c"
 yy225:
                YYDEBUG(225, *YYCURSOR);
                ++YYCURSOR;
@@ -3484,7 +3488,7 @@ yy225:
                {
        return T_AND_EQUAL;
 }
-#line 3488 "Zend/zend_language_scanner.c"
+#line 3492 "Zend/zend_language_scanner.c"
 yy227:
                YYDEBUG(227, *YYCURSOR);
                ++YYCURSOR;
@@ -3493,7 +3497,7 @@ yy227:
 yy228:
                YYDEBUG(228, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1968 "Zend/zend_language_scanner.l"
+#line 1972 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -3506,7 +3510,7 @@ yy228:
                return yytext[0];
        }
 }
-#line 3510 "Zend/zend_language_scanner.c"
+#line 3514 "Zend/zend_language_scanner.c"
 yy229:
                YYDEBUG(229, *YYCURSOR);
                ++YYCURSOR;
@@ -3516,7 +3520,7 @@ yy229:
                {
        return T_MOD_EQUAL;
 }
-#line 3520 "Zend/zend_language_scanner.c"
+#line 3524 "Zend/zend_language_scanner.c"
 yy231:
                YYDEBUG(231, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3551,7 +3555,7 @@ yy235:
                {
        return T_CONCAT_EQUAL;
 }
-#line 3555 "Zend/zend_language_scanner.c"
+#line 3559 "Zend/zend_language_scanner.c"
 yy237:
                YYDEBUG(237, *YYCURSOR);
                yyaccept = 4;
@@ -3560,7 +3564,7 @@ yy237:
 yy238:
                YYDEBUG(238, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1925 "Zend/zend_language_scanner.l"
+#line 1929 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3594,7 +3598,7 @@ yy238:
 
        return T_COMMENT;
 }
-#line 3598 "Zend/zend_language_scanner.c"
+#line 3602 "Zend/zend_language_scanner.c"
 yy239:
                YYDEBUG(239, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3608,7 +3612,7 @@ yy240:
                {
        return T_DIV_EQUAL;
 }
-#line 3612 "Zend/zend_language_scanner.c"
+#line 3616 "Zend/zend_language_scanner.c"
 yy242:
                YYDEBUG(242, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3635,7 +3639,7 @@ yy245:
                {
        return T_MUL_EQUAL;
 }
-#line 3639 "Zend/zend_language_scanner.c"
+#line 3643 "Zend/zend_language_scanner.c"
 yy247:
                YYDEBUG(247, *YYCURSOR);
                ++YYCURSOR;
@@ -3646,7 +3650,7 @@ yy247:
                {
        return T_SR;
 }
-#line 3650 "Zend/zend_language_scanner.c"
+#line 3654 "Zend/zend_language_scanner.c"
 yy249:
                YYDEBUG(249, *YYCURSOR);
                ++YYCURSOR;
@@ -3656,7 +3660,7 @@ yy249:
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3660 "Zend/zend_language_scanner.c"
+#line 3664 "Zend/zend_language_scanner.c"
 yy251:
                YYDEBUG(251, *YYCURSOR);
                ++YYCURSOR;
@@ -3666,7 +3670,7 @@ yy251:
                {
        return T_SR_EQUAL;
 }
-#line 3670 "Zend/zend_language_scanner.c"
+#line 3674 "Zend/zend_language_scanner.c"
 yy253:
                YYDEBUG(253, *YYCURSOR);
                yyaccept = 5;
@@ -3681,7 +3685,7 @@ yy254:
                {
        return T_SL;
 }
-#line 3685 "Zend/zend_language_scanner.c"
+#line 3689 "Zend/zend_language_scanner.c"
 yy255:
                YYDEBUG(255, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3697,7 +3701,7 @@ yy256:
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3701 "Zend/zend_language_scanner.c"
+#line 3705 "Zend/zend_language_scanner.c"
 yy258:
                YYDEBUG(258, *YYCURSOR);
                ++YYCURSOR;
@@ -3708,7 +3712,7 @@ yy259:
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3712 "Zend/zend_language_scanner.c"
+#line 3716 "Zend/zend_language_scanner.c"
 yy260:
                YYDEBUG(260, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3763,7 +3767,7 @@ yy267:
                {
        return T_SL_EQUAL;
 }
-#line 3767 "Zend/zend_language_scanner.c"
+#line 3771 "Zend/zend_language_scanner.c"
 yy269:
                YYDEBUG(269, *YYCURSOR);
                ++YYCURSOR;
@@ -3868,7 +3872,7 @@ yy278:
 yy279:
                YYDEBUG(279, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2093 "Zend/zend_language_scanner.l"
+#line 2097 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3916,7 +3920,7 @@ yy279:
 
        return T_START_HEREDOC;
 }
-#line 3920 "Zend/zend_language_scanner.c"
+#line 3924 "Zend/zend_language_scanner.c"
 yy280:
                YYDEBUG(280, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3960,7 +3964,7 @@ yy283:
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3964 "Zend/zend_language_scanner.c"
+#line 3968 "Zend/zend_language_scanner.c"
 yy286:
                YYDEBUG(286, *YYCURSOR);
                ++YYCURSOR;
@@ -3970,7 +3974,7 @@ yy286:
                {
        return T_PLUS_EQUAL;
 }
-#line 3974 "Zend/zend_language_scanner.c"
+#line 3978 "Zend/zend_language_scanner.c"
 yy288:
                YYDEBUG(288, *YYCURSOR);
                ++YYCURSOR;
@@ -3980,7 +3984,7 @@ yy288:
                {
        return T_INC;
 }
-#line 3984 "Zend/zend_language_scanner.c"
+#line 3988 "Zend/zend_language_scanner.c"
 yy290:
                YYDEBUG(290, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4003,7 +4007,7 @@ yy292:
                {
        return T_LIST;
 }
-#line 4007 "Zend/zend_language_scanner.c"
+#line 4011 "Zend/zend_language_scanner.c"
 yy294:
                YYDEBUG(294, *YYCURSOR);
                ++YYCURSOR;
@@ -4014,7 +4018,7 @@ yy294:
                {
        return T_IS_EQUAL;
 }
-#line 4018 "Zend/zend_language_scanner.c"
+#line 4022 "Zend/zend_language_scanner.c"
 yy296:
                YYDEBUG(296, *YYCURSOR);
                ++YYCURSOR;
@@ -4024,7 +4028,7 @@ yy296:
                {
        return T_DOUBLE_ARROW;
 }
-#line 4028 "Zend/zend_language_scanner.c"
+#line 4032 "Zend/zend_language_scanner.c"
 yy298:
                YYDEBUG(298, *YYCURSOR);
                ++YYCURSOR;
@@ -4034,7 +4038,7 @@ yy298:
                {
        return T_IS_IDENTICAL;
 }
-#line 4038 "Zend/zend_language_scanner.c"
+#line 4042 "Zend/zend_language_scanner.c"
 yy300:
                YYDEBUG(300, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4164,7 +4168,7 @@ yy316:
                }
                YYDEBUG(319, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1694 "Zend/zend_language_scanner.l"
+#line 1698 "Zend/zend_language_scanner.l"
                {
        if (CG(current_namespace)) {
                *zendlval = *CG(current_namespace);
@@ -4174,7 +4178,7 @@ yy316:
        }
        return T_NS_C;
 }
-#line 4178 "Zend/zend_language_scanner.c"
+#line 4182 "Zend/zend_language_scanner.c"
 yy320:
                YYDEBUG(320, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4194,7 +4198,7 @@ yy321:
                }
                YYDEBUG(324, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1667 "Zend/zend_language_scanner.l"
+#line 1671 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
        const size_t filename_len = strlen(filename);
@@ -4221,7 +4225,7 @@ yy321:
        zendlval->type = IS_STRING;
        return T_DIR;
 }
-#line 4225 "Zend/zend_language_scanner.c"
+#line 4229 "Zend/zend_language_scanner.c"
 yy325:
                YYDEBUG(325, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4246,13 +4250,13 @@ yy327:
                }
                YYDEBUG(330, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1649 "Zend/zend_language_scanner.l"
+#line 1653 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;
        return T_LINE;
 }
-#line 4256 "Zend/zend_language_scanner.c"
+#line 4260 "Zend/zend_language_scanner.c"
 yy331:
                YYDEBUG(331, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4287,7 +4291,7 @@ yy335:
                }
                YYDEBUG(338, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1628 "Zend/zend_language_scanner.l"
+#line 1632 "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;
@@ -4308,7 +4312,7 @@ yy335:
        zendlval->type = IS_STRING;
        return T_METHOD_C;
 }
-#line 4312 "Zend/zend_language_scanner.c"
+#line 4316 "Zend/zend_language_scanner.c"
 yy339:
                YYDEBUG(339, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4359,7 +4363,7 @@ yy346:
                }
                YYDEBUG(349, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1612 "Zend/zend_language_scanner.l"
+#line 1616 "Zend/zend_language_scanner.l"
                {
        const char *func_name = NULL;
 
@@ -4375,7 +4379,7 @@ yy346:
        zendlval->type = IS_STRING;
        return T_FUNC_C;
 }
-#line 4379 "Zend/zend_language_scanner.c"
+#line 4383 "Zend/zend_language_scanner.c"
 yy350:
                YYDEBUG(350, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4395,7 +4399,7 @@ yy351:
                }
                YYDEBUG(354, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1655 "Zend/zend_language_scanner.l"
+#line 1659 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
 
@@ -4407,7 +4411,7 @@ yy351:
        zendlval->type = IS_STRING;
        return T_FILE;
 }
-#line 4411 "Zend/zend_language_scanner.c"
+#line 4415 "Zend/zend_language_scanner.c"
 yy355:
                YYDEBUG(355, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4437,7 +4441,7 @@ yy358:
                }
                YYDEBUG(361, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1592 "Zend/zend_language_scanner.l"
+#line 1596 "Zend/zend_language_scanner.l"
                {
        const char *trait_name = NULL;
        
@@ -4457,7 +4461,7 @@ yy358:
        
        return T_TRAIT_C;
 }
-#line 4461 "Zend/zend_language_scanner.c"
+#line 4465 "Zend/zend_language_scanner.c"
 yy362:
                YYDEBUG(362, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4487,7 +4491,7 @@ yy365:
                }
                YYDEBUG(368, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1565 "Zend/zend_language_scanner.l"
+#line 1569 "Zend/zend_language_scanner.l"
                {
        const char *class_name = NULL;
        
@@ -4514,7 +4518,7 @@ yy365:
        }
        return T_CLASS_C;
 }
-#line 4518 "Zend/zend_language_scanner.c"
+#line 4522 "Zend/zend_language_scanner.c"
 yy369:
                YYDEBUG(369, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4580,7 +4584,7 @@ yy380:
                {
        return T_HALT_COMPILER;
 }
-#line 4584 "Zend/zend_language_scanner.c"
+#line 4588 "Zend/zend_language_scanner.c"
 yy382:
                YYDEBUG(382, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4604,7 +4608,7 @@ yy384:
                {
        return T_USE;
 }
-#line 4608 "Zend/zend_language_scanner.c"
+#line 4612 "Zend/zend_language_scanner.c"
 yy386:
                YYDEBUG(386, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4627,7 +4631,7 @@ yy388:
                {
        return T_UNSET;
 }
-#line 4631 "Zend/zend_language_scanner.c"
+#line 4635 "Zend/zend_language_scanner.c"
 yy390:
                YYDEBUG(390, *YYCURSOR);
                ++YYCURSOR;
@@ -4803,7 +4807,7 @@ yy405:
                {
        return T_INT_CAST;
 }
-#line 4807 "Zend/zend_language_scanner.c"
+#line 4811 "Zend/zend_language_scanner.c"
 yy408:
                YYDEBUG(408, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4851,7 +4855,7 @@ yy413:
                {
        return T_DOUBLE_CAST;
 }
-#line 4855 "Zend/zend_language_scanner.c"
+#line 4859 "Zend/zend_language_scanner.c"
 yy417:
                YYDEBUG(417, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4925,7 +4929,7 @@ yy427:
                {
        return T_STRING_CAST;
 }
-#line 4929 "Zend/zend_language_scanner.c"
+#line 4933 "Zend/zend_language_scanner.c"
 yy431:
                YYDEBUG(431, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4962,7 +4966,7 @@ yy434:
                {
        return T_ARRAY_CAST;
 }
-#line 4966 "Zend/zend_language_scanner.c"
+#line 4970 "Zend/zend_language_scanner.c"
 yy438:
                YYDEBUG(438, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5004,7 +5008,7 @@ yy442:
                {
        return T_OBJECT_CAST;
 }
-#line 5008 "Zend/zend_language_scanner.c"
+#line 5012 "Zend/zend_language_scanner.c"
 yy446:
                YYDEBUG(446, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5049,7 +5053,7 @@ yy451:
                {
        return T_BOOL_CAST;
 }
-#line 5053 "Zend/zend_language_scanner.c"
+#line 5057 "Zend/zend_language_scanner.c"
 yy454:
                YYDEBUG(454, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5113,7 +5117,7 @@ yy462:
                {
        return T_UNSET_CAST;
 }
-#line 5117 "Zend/zend_language_scanner.c"
+#line 5121 "Zend/zend_language_scanner.c"
 yy466:
                YYDEBUG(466, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5131,7 +5135,7 @@ yy467:
                {
        return T_VAR;
 }
-#line 5135 "Zend/zend_language_scanner.c"
+#line 5139 "Zend/zend_language_scanner.c"
 yy469:
                YYDEBUG(469, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5155,7 +5159,7 @@ yy471:
                {
        return T_NEW;
 }
-#line 5159 "Zend/zend_language_scanner.c"
+#line 5163 "Zend/zend_language_scanner.c"
 yy473:
                YYDEBUG(473, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5198,7 +5202,7 @@ yy479:
                {
        return T_NAMESPACE;
 }
-#line 5202 "Zend/zend_language_scanner.c"
+#line 5206 "Zend/zend_language_scanner.c"
 yy481:
                YYDEBUG(481, *YYCURSOR);
                ++YYCURSOR;
@@ -5208,7 +5212,7 @@ yy481:
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 5212 "Zend/zend_language_scanner.c"
+#line 5216 "Zend/zend_language_scanner.c"
 yy483:
                YYDEBUG(483, *YYCURSOR);
                ++YYCURSOR;
@@ -5234,7 +5238,7 @@ yy485:
                {
        return T_MINUS_EQUAL;
 }
-#line 5238 "Zend/zend_language_scanner.c"
+#line 5242 "Zend/zend_language_scanner.c"
 yy487:
                YYDEBUG(487, *YYCURSOR);
                ++YYCURSOR;
@@ -5244,7 +5248,7 @@ yy487:
                {
        return T_DEC;
 }
-#line 5248 "Zend/zend_language_scanner.c"
+#line 5252 "Zend/zend_language_scanner.c"
 yy489:
                YYDEBUG(489, *YYCURSOR);
                ++YYCURSOR;
@@ -5255,7 +5259,7 @@ yy489:
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 5259 "Zend/zend_language_scanner.c"
+#line 5263 "Zend/zend_language_scanner.c"
 yy491:
                YYDEBUG(491, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5304,7 +5308,7 @@ yy496:
                {
        return T_PUBLIC;
 }
-#line 5308 "Zend/zend_language_scanner.c"
+#line 5312 "Zend/zend_language_scanner.c"
 yy498:
                YYDEBUG(498, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5363,7 +5367,7 @@ yy505:
                {
        return T_PROTECTED;
 }
-#line 5367 "Zend/zend_language_scanner.c"
+#line 5371 "Zend/zend_language_scanner.c"
 yy507:
                YYDEBUG(507, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5397,7 +5401,7 @@ yy511:
                {
        return T_PRIVATE;
 }
-#line 5401 "Zend/zend_language_scanner.c"
+#line 5405 "Zend/zend_language_scanner.c"
 yy513:
                YYDEBUG(513, *YYCURSOR);
                ++YYCURSOR;
@@ -5410,7 +5414,7 @@ yy513:
                {
        return T_PRINT;
 }
-#line 5414 "Zend/zend_language_scanner.c"
+#line 5418 "Zend/zend_language_scanner.c"
 yy515:
                YYDEBUG(515, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5439,7 +5443,7 @@ yy518:
                {
        return T_GOTO;
 }
-#line 5443 "Zend/zend_language_scanner.c"
+#line 5447 "Zend/zend_language_scanner.c"
 yy520:
                YYDEBUG(520, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5467,7 +5471,7 @@ yy523:
                {
        return T_GLOBAL;
 }
-#line 5471 "Zend/zend_language_scanner.c"
+#line 5475 "Zend/zend_language_scanner.c"
 yy525:
                YYDEBUG(525, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5508,7 +5512,7 @@ yy531:
                {
        return T_BREAK;
 }
-#line 5512 "Zend/zend_language_scanner.c"
+#line 5516 "Zend/zend_language_scanner.c"
 yy533:
                YYDEBUG(533, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5552,7 +5556,7 @@ yy539:
                {
        return T_SWITCH;
 }
-#line 5556 "Zend/zend_language_scanner.c"
+#line 5560 "Zend/zend_language_scanner.c"
 yy541:
                YYDEBUG(541, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5580,7 +5584,7 @@ yy544:
                {
        return T_STATIC;
 }
-#line 5584 "Zend/zend_language_scanner.c"
+#line 5588 "Zend/zend_language_scanner.c"
 yy546:
                YYDEBUG(546, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5611,7 +5615,7 @@ yy549:
                {
        return T_AS;
 }
-#line 5615 "Zend/zend_language_scanner.c"
+#line 5619 "Zend/zend_language_scanner.c"
 yy551:
                YYDEBUG(551, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5634,7 +5638,7 @@ yy553:
                {
        return T_ARRAY;
 }
-#line 5638 "Zend/zend_language_scanner.c"
+#line 5642 "Zend/zend_language_scanner.c"
 yy555:
                YYDEBUG(555, *YYCURSOR);
                ++YYCURSOR;
@@ -5647,7 +5651,7 @@ yy555:
                {
        return T_LOGICAL_AND;
 }
-#line 5651 "Zend/zend_language_scanner.c"
+#line 5655 "Zend/zend_language_scanner.c"
 yy557:
                YYDEBUG(557, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5685,7 +5689,7 @@ yy562:
                {
        return T_ABSTRACT;
 }
-#line 5689 "Zend/zend_language_scanner.c"
+#line 5693 "Zend/zend_language_scanner.c"
 yy564:
                YYDEBUG(564, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5713,7 +5717,7 @@ yy567:
                {
        return T_WHILE;
 }
-#line 5717 "Zend/zend_language_scanner.c"
+#line 5721 "Zend/zend_language_scanner.c"
 yy569:
                YYDEBUG(569, *YYCURSOR);
                ++YYCURSOR;
@@ -5726,7 +5730,7 @@ yy569:
                {
        return T_IF;
 }
-#line 5730 "Zend/zend_language_scanner.c"
+#line 5734 "Zend/zend_language_scanner.c"
 yy571:
                YYDEBUG(571, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5782,7 +5786,7 @@ yy576:
                {
        return T_ISSET;
 }
-#line 5786 "Zend/zend_language_scanner.c"
+#line 5790 "Zend/zend_language_scanner.c"
 yy578:
                YYDEBUG(578, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5840,7 +5844,7 @@ yy585:
                {
        return T_INCLUDE;
 }
-#line 5844 "Zend/zend_language_scanner.c"
+#line 5848 "Zend/zend_language_scanner.c"
 yy586:
                YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5873,7 +5877,7 @@ yy590:
                {
        return T_INCLUDE_ONCE;
 }
-#line 5877 "Zend/zend_language_scanner.c"
+#line 5881 "Zend/zend_language_scanner.c"
 yy592:
                YYDEBUG(592, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5911,7 +5915,7 @@ yy597:
                {
        return T_INTERFACE;
 }
-#line 5915 "Zend/zend_language_scanner.c"
+#line 5919 "Zend/zend_language_scanner.c"
 yy599:
                YYDEBUG(599, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5965,7 +5969,7 @@ yy605:
                {
         return T_INSTEADOF;
 }
-#line 5969 "Zend/zend_language_scanner.c"
+#line 5973 "Zend/zend_language_scanner.c"
 yy607:
                YYDEBUG(607, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5998,7 +6002,7 @@ yy611:
                {
        return T_INSTANCEOF;
 }
-#line 6002 "Zend/zend_language_scanner.c"
+#line 6006 "Zend/zend_language_scanner.c"
 yy613:
                YYDEBUG(613, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6046,7 +6050,7 @@ yy620:
                {
        return T_IMPLEMENTS;
 }
-#line 6050 "Zend/zend_language_scanner.c"
+#line 6054 "Zend/zend_language_scanner.c"
 yy622:
                YYDEBUG(622, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6078,7 +6082,7 @@ yy623:
                {
        return T_TRY;
 }
-#line 6082 "Zend/zend_language_scanner.c"
+#line 6086 "Zend/zend_language_scanner.c"
 yy626:
                YYDEBUG(626, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6101,7 +6105,7 @@ yy628:
                {
        return T_TRAIT;
 }
-#line 6105 "Zend/zend_language_scanner.c"
+#line 6109 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6124,7 +6128,7 @@ yy632:
                {
        return T_THROW;
 }
-#line 6128 "Zend/zend_language_scanner.c"
+#line 6132 "Zend/zend_language_scanner.c"
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6189,7 +6193,7 @@ yy641:
                {
        return T_REQUIRE;
 }
-#line 6193 "Zend/zend_language_scanner.c"
+#line 6197 "Zend/zend_language_scanner.c"
 yy642:
                YYDEBUG(642, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6222,7 +6226,7 @@ yy646:
                {
        return T_REQUIRE_ONCE;
 }
-#line 6226 "Zend/zend_language_scanner.c"
+#line 6230 "Zend/zend_language_scanner.c"
 yy648:
                YYDEBUG(648, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6245,7 +6249,7 @@ yy650:
                {
        return T_RETURN;
 }
-#line 6249 "Zend/zend_language_scanner.c"
+#line 6253 "Zend/zend_language_scanner.c"
 yy652:
                YYDEBUG(652, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6339,7 +6343,7 @@ yy661:
                {
        return T_CONTINUE;
 }
-#line 6343 "Zend/zend_language_scanner.c"
+#line 6347 "Zend/zend_language_scanner.c"
 yy663:
                YYDEBUG(663, *YYCURSOR);
                ++YYCURSOR;
@@ -6352,7 +6356,7 @@ yy663:
                {
        return T_CONST;
 }
-#line 6356 "Zend/zend_language_scanner.c"
+#line 6360 "Zend/zend_language_scanner.c"
 yy665:
                YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6381,7 +6385,7 @@ yy668:
                {
        return T_CLONE;
 }
-#line 6385 "Zend/zend_language_scanner.c"
+#line 6389 "Zend/zend_language_scanner.c"
 yy670:
                YYDEBUG(670, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6399,7 +6403,7 @@ yy671:
                {
        return T_CLASS;
 }
-#line 6403 "Zend/zend_language_scanner.c"
+#line 6407 "Zend/zend_language_scanner.c"
 yy673:
                YYDEBUG(673, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6449,7 +6453,7 @@ yy680:
                {
  return T_CALLABLE;
 }
-#line 6453 "Zend/zend_language_scanner.c"
+#line 6457 "Zend/zend_language_scanner.c"
 yy682:
                YYDEBUG(682, *YYCURSOR);
                ++YYCURSOR;
@@ -6462,7 +6466,7 @@ yy682:
                {
        return T_CASE;
 }
-#line 6466 "Zend/zend_language_scanner.c"
+#line 6470 "Zend/zend_language_scanner.c"
 yy684:
                YYDEBUG(684, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6480,7 +6484,7 @@ yy685:
                {
        return T_CATCH;
 }
-#line 6484 "Zend/zend_language_scanner.c"
+#line 6488 "Zend/zend_language_scanner.c"
 yy687:
                YYDEBUG(687, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6535,7 +6539,7 @@ yy695:
                {
        return T_FUNCTION;
 }
-#line 6539 "Zend/zend_language_scanner.c"
+#line 6543 "Zend/zend_language_scanner.c"
 yy697:
                YYDEBUG(697, *YYCURSOR);
                ++YYCURSOR;
@@ -6563,7 +6567,7 @@ yy698:
                {
        return T_FOR;
 }
-#line 6567 "Zend/zend_language_scanner.c"
+#line 6571 "Zend/zend_language_scanner.c"
 yy699:
                YYDEBUG(699, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6591,7 +6595,7 @@ yy702:
                {
        return T_FOREACH;
 }
-#line 6595 "Zend/zend_language_scanner.c"
+#line 6599 "Zend/zend_language_scanner.c"
 yy704:
                YYDEBUG(704, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6614,7 +6618,7 @@ yy706:
                {
        return T_FINAL;
 }
-#line 6618 "Zend/zend_language_scanner.c"
+#line 6622 "Zend/zend_language_scanner.c"
 yy708:
                YYDEBUG(708, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6649,7 +6653,7 @@ yy710:
                {
        return T_DO;
 }
-#line 6653 "Zend/zend_language_scanner.c"
+#line 6657 "Zend/zend_language_scanner.c"
 yy712:
                YYDEBUG(712, *YYCURSOR);
                ++YYCURSOR;
@@ -6662,7 +6666,7 @@ yy712:
                {
        return T_EXIT;
 }
-#line 6666 "Zend/zend_language_scanner.c"
+#line 6670 "Zend/zend_language_scanner.c"
 yy714:
                YYDEBUG(714, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6701,7 +6705,7 @@ yy719:
                {
        return T_DEFAULT;
 }
-#line 6705 "Zend/zend_language_scanner.c"
+#line 6709 "Zend/zend_language_scanner.c"
 yy721:
                YYDEBUG(721, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6729,7 +6733,7 @@ yy724:
                {
        return T_DECLARE;
 }
-#line 6733 "Zend/zend_language_scanner.c"
+#line 6737 "Zend/zend_language_scanner.c"
 yy726:
                YYDEBUG(726, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6813,7 +6817,7 @@ yy737:
                {
        return T_EXTENDS;
 }
-#line 6817 "Zend/zend_language_scanner.c"
+#line 6821 "Zend/zend_language_scanner.c"
 yy739:
                YYDEBUG(739, *YYCURSOR);
                ++YYCURSOR;
@@ -6826,7 +6830,7 @@ yy739:
                {
        return T_EXIT;
 }
-#line 6830 "Zend/zend_language_scanner.c"
+#line 6834 "Zend/zend_language_scanner.c"
 yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6844,7 +6848,7 @@ yy742:
                {
        return T_EVAL;
 }
-#line 6848 "Zend/zend_language_scanner.c"
+#line 6852 "Zend/zend_language_scanner.c"
 yy744:
                YYDEBUG(744, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6918,7 +6922,7 @@ yy753:
                {
        return T_ENDWHILE;
 }
-#line 6922 "Zend/zend_language_scanner.c"
+#line 6926 "Zend/zend_language_scanner.c"
 yy755:
                YYDEBUG(755, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6951,7 +6955,7 @@ yy759:
                {
        return T_ENDSWITCH;
 }
-#line 6955 "Zend/zend_language_scanner.c"
+#line 6959 "Zend/zend_language_scanner.c"
 yy761:
                YYDEBUG(761, *YYCURSOR);
                ++YYCURSOR;
@@ -6964,7 +6968,7 @@ yy761:
                {
        return T_ENDIF;
 }
-#line 6968 "Zend/zend_language_scanner.c"
+#line 6972 "Zend/zend_language_scanner.c"
 yy763:
                YYDEBUG(763, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6997,7 +7001,7 @@ yy765:
                {
        return T_ENDFOR;
 }
-#line 7001 "Zend/zend_language_scanner.c"
+#line 7005 "Zend/zend_language_scanner.c"
 yy766:
                YYDEBUG(766, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7025,7 +7029,7 @@ yy769:
                {
        return T_ENDFOREACH;
 }
-#line 7029 "Zend/zend_language_scanner.c"
+#line 7033 "Zend/zend_language_scanner.c"
 yy771:
                YYDEBUG(771, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7063,7 +7067,7 @@ yy776:
                {
        return T_ENDDECLARE;
 }
-#line 7067 "Zend/zend_language_scanner.c"
+#line 7071 "Zend/zend_language_scanner.c"
 yy778:
                YYDEBUG(778, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7086,7 +7090,7 @@ yy780:
                {
        return T_EMPTY;
 }
-#line 7090 "Zend/zend_language_scanner.c"
+#line 7094 "Zend/zend_language_scanner.c"
 yy782:
                YYDEBUG(782, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7119,7 +7123,7 @@ yy784:
                {
        return T_ELSE;
 }
-#line 7123 "Zend/zend_language_scanner.c"
+#line 7127 "Zend/zend_language_scanner.c"
 yy785:
                YYDEBUG(785, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7137,7 +7141,7 @@ yy786:
                {
        return T_ELSEIF;
 }
-#line 7141 "Zend/zend_language_scanner.c"
+#line 7145 "Zend/zend_language_scanner.c"
 yy788:
                YYDEBUG(788, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7155,7 +7159,7 @@ yy789:
                {
        return T_ECHO;
 }
-#line 7159 "Zend/zend_language_scanner.c"
+#line 7163 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7236,7 +7240,7 @@ yy794:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7240 "Zend/zend_language_scanner.c"
+#line 7244 "Zend/zend_language_scanner.c"
 yy795:
                YYDEBUG(795, *YYCURSOR);
                ++YYCURSOR;
@@ -7250,7 +7254,7 @@ yy796:
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 7254 "Zend/zend_language_scanner.c"
+#line 7258 "Zend/zend_language_scanner.c"
 yy797:
                YYDEBUG(797, *YYCURSOR);
                ++YYCURSOR;
@@ -7266,7 +7270,7 @@ yy798:
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7270 "Zend/zend_language_scanner.c"
+#line 7274 "Zend/zend_language_scanner.c"
 yy799:
                YYDEBUG(799, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7291,7 +7295,7 @@ yy802:
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7295 "Zend/zend_language_scanner.c"
+#line 7299 "Zend/zend_language_scanner.c"
 yy804:
                YYDEBUG(804, *YYCURSOR);
                ++YYCURSOR;
@@ -7369,7 +7373,7 @@ yy809:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 7373 "Zend/zend_language_scanner.c"
+#line 7377 "Zend/zend_language_scanner.c"
 yy810:
                YYDEBUG(810, *YYCURSOR);
                ++YYCURSOR;
@@ -7382,7 +7386,7 @@ yy810:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 7386 "Zend/zend_language_scanner.c"
+#line 7390 "Zend/zend_language_scanner.c"
 yy812:
                YYDEBUG(812, *YYCURSOR);
                ++YYCURSOR;
@@ -7404,7 +7408,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(817, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2344 "Zend/zend_language_scanner.l"
+#line 2348 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7459,7 +7463,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7463 "Zend/zend_language_scanner.c"
+#line 7467 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7566,7 +7570,7 @@ yy820:
 yy821:
                YYDEBUG(821, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1540 "Zend/zend_language_scanner.l"
+#line 1544 "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);
@@ -7578,7 +7582,7 @@ yy821:
        }
        return T_NUM_STRING;
 }
-#line 7582 "Zend/zend_language_scanner.c"
+#line 7586 "Zend/zend_language_scanner.c"
 yy822:
                YYDEBUG(822, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7598,23 +7602,23 @@ yy823:
 yy824:
                YYDEBUG(824, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1872 "Zend/zend_language_scanner.l"
+#line 1876 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7607 "Zend/zend_language_scanner.c"
+#line 7611 "Zend/zend_language_scanner.c"
 yy825:
                YYDEBUG(825, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(826, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1867 "Zend/zend_language_scanner.l"
+#line 1871 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 7618 "Zend/zend_language_scanner.c"
+#line 7622 "Zend/zend_language_scanner.c"
 yy827:
                YYDEBUG(827, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7624,14 +7628,14 @@ yy828:
                ++YYCURSOR;
                YYDEBUG(829, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1877 "Zend/zend_language_scanner.l"
+#line 1881 "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 7635 "Zend/zend_language_scanner.c"
+#line 7639 "Zend/zend_language_scanner.c"
 yy830:
                YYDEBUG(830, *YYCURSOR);
                ++YYCURSOR;
@@ -7640,19 +7644,19 @@ yy830:
 yy831:
                YYDEBUG(831, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1884 "Zend/zend_language_scanner.l"
+#line 1888 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7650 "Zend/zend_language_scanner.c"
+#line 7654 "Zend/zend_language_scanner.c"
 yy832:
                YYDEBUG(832, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(833, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2400 "Zend/zend_language_scanner.l"
+#line 2404 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7661,7 +7665,7 @@ yy832:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7665 "Zend/zend_language_scanner.c"
+#line 7669 "Zend/zend_language_scanner.c"
 yy834:
                YYDEBUG(834, *YYCURSOR);
                ++YYCURSOR;
@@ -7697,13 +7701,13 @@ yy836:
 yy838:
                YYDEBUG(838, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1861 "Zend/zend_language_scanner.l"
+#line 1865 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 7707 "Zend/zend_language_scanner.c"
+#line 7711 "Zend/zend_language_scanner.c"
 yy839:
                YYDEBUG(839, *YYCURSOR);
                ++YYCURSOR;
@@ -7743,14 +7747,14 @@ yy844:
 yy846:
                YYDEBUG(846, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1552 "Zend/zend_language_scanner.l"
+#line 1556 "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 7754 "Zend/zend_language_scanner.c"
+#line 7758 "Zend/zend_language_scanner.c"
 yy847:
                YYDEBUG(847, *YYCURSOR);
                ++YYCURSOR;
@@ -7773,6 +7777,6 @@ yy849:
                goto yy846;
        }
 }
-#line 2409 "Zend/zend_language_scanner.l"
+#line 2413 "Zend/zend_language_scanner.l"
 
 }
index 96168d3516514f28a5a1904774b28c06b1416935..d530b53430d5e51471ba0ef198d5f6ffc4fada68 100644 (file)
@@ -1481,7 +1481,11 @@ NEWLINE ("\r"|"\n"|"\r\n")
        }
 
        if (len < SIZEOF_LONG * 8) {
-               zendlval->value.lval = strtol(bin, NULL, 2);
+               if (len == 0) {
+                       zendlval->value.lval = 0;
+               } else {
+                       zendlval->value.lval = strtol(bin, NULL, 2);
+               }
                zendlval->type = IS_LONG;
                return T_LNUMBER;
        } else {
index cd82e5160ac460d2a8ddaf53362d27fb6c3370f8..b6070d8b98ea94198dbd8229bc484725fec34ebf 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Feb 15 17:27:19 2012 */
+/* Generated by re2c 0.13.5 on Thu Mar  1 21:30:38 2012 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {