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