From: Nikita Popov Date: Wed, 22 Mar 2017 21:26:24 +0000 (+0100) Subject: Simplify increment_lineno handling X-Git-Tag: php-7.2.0alpha1~223 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fec708f518d6880d31bfcf6523ee7b165990b5e1;p=php Simplify increment_lineno handling --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 88d71925a8..8bc2cbdbb7 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1727,9 +1727,6 @@ again: goto again; case T_CLOSE_TAG: - if (LANG_SCNG(yy_text)[LANG_SCNG(yy_leng)-1] != '>') { - CG(increment_lineno) = 1; - } retval = ';'; /* implicit ; */ break; case T_OPEN_TAG_WITH_ECHO: diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index afc3da52dd..844124eeb6 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1335,7 +1335,7 @@ yyc_ST_BACKQUOTE: yy20: YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2214 "Zend/zend_language_scanner.l" +#line 2217 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1400,7 +1400,7 @@ yy22: ++YYCURSOR; YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2158 "Zend/zend_language_scanner.l" +#line 2161 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); @@ -1448,7 +1448,7 @@ yy30: ++YYCURSOR; YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2145 "Zend/zend_language_scanner.l" +#line 2148 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -1554,7 +1554,7 @@ yyc_ST_DOUBLE_QUOTES: yy42: YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2164 "Zend/zend_language_scanner.l" +#line 2167 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1609,7 +1609,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2153 "Zend/zend_language_scanner.l" +#line 2156 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); @@ -1675,7 +1675,7 @@ yy52: ++YYCURSOR; YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2145 "Zend/zend_language_scanner.l" +#line 2148 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -1739,7 +1739,7 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2131 "Zend/zend_language_scanner.l" +#line 2134 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1800,7 +1800,7 @@ yyc_ST_HEREDOC: yy68: YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2256 "Zend/zend_language_scanner.l" +#line 2259 "Zend/zend_language_scanner.l" { int newline = 0; @@ -1934,7 +1934,7 @@ yy76: ++YYCURSOR; YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2145 "Zend/zend_language_scanner.l" +#line 2148 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); @@ -2156,7 +2156,7 @@ yy87: ++YYCURSOR; YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2387 "Zend/zend_language_scanner.l" +#line 2390 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2200,7 +2200,7 @@ yy94: ++YYCURSOR; YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2035 "Zend/zend_language_scanner.l" +#line 2038 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -2307,7 +2307,7 @@ yy101: ++YYCURSOR; YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1966 "Zend/zend_language_scanner.l" +#line 1969 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2941,7 +2941,7 @@ yy146: ++YYCURSOR; YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2125 "Zend/zend_language_scanner.l" +#line 2128 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -3458,9 +3458,12 @@ yy219: #line 1960 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); + if (yytext[yyleng-1] != '>') { + CG(increment_lineno) = 1; + } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 3464 "Zend/zend_language_scanner.c" +#line 3467 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; @@ -3470,7 +3473,7 @@ yy220: { RETURN_TOKEN(T_COALESCE); } -#line 3474 "Zend/zend_language_scanner.c" +#line 3477 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; @@ -3501,7 +3504,7 @@ yy225: { RETURN_TOKEN(T_AS); } -#line 3505 "Zend/zend_language_scanner.c" +#line 3508 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; @@ -3591,7 +3594,7 @@ yy234: { RETURN_TOKEN(T_DO); } -#line 3595 "Zend/zend_language_scanner.c" +#line 3598 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3680,7 +3683,7 @@ yy247: { RETURN_TOKEN(T_IF); } -#line 3684 "Zend/zend_language_scanner.c" +#line 3687 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; @@ -3745,7 +3748,7 @@ yy255: { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3749 "Zend/zend_language_scanner.c" +#line 3752 "Zend/zend_language_scanner.c" yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; @@ -3863,7 +3866,7 @@ yy270: { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3867 "Zend/zend_language_scanner.c" +#line 3870 "Zend/zend_language_scanner.c" yy272: YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; @@ -3895,7 +3898,7 @@ yy273: { RETURN_TOKEN(T_OR_EQUAL); } -#line 3899 "Zend/zend_language_scanner.c" +#line 3902 "Zend/zend_language_scanner.c" yy275: YYDEBUG(275, *YYCURSOR); ++YYCURSOR; @@ -3905,7 +3908,7 @@ yy275: { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3909 "Zend/zend_language_scanner.c" +#line 3912 "Zend/zend_language_scanner.c" yy277: YYDEBUG(277, *YYCURSOR); ++YYCURSOR; @@ -3915,7 +3918,7 @@ yy277: { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3919 "Zend/zend_language_scanner.c" +#line 3922 "Zend/zend_language_scanner.c" yy279: YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; @@ -3985,7 +3988,7 @@ yy289: { RETURN_TOKEN(T_POW_EQUAL); } -#line 3989 "Zend/zend_language_scanner.c" +#line 3992 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); ++YYCURSOR; @@ -3995,7 +3998,7 @@ yy291: { RETURN_TOKEN(T_ELLIPSIS); } -#line 3999 "Zend/zend_language_scanner.c" +#line 4002 "Zend/zend_language_scanner.c" yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; @@ -4047,7 +4050,7 @@ yy294: RETURN_TOKEN(T_DNUMBER); } } -#line 4051 "Zend/zend_language_scanner.c" +#line 4054 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; @@ -4101,7 +4104,7 @@ yy300: RETURN_TOKEN(T_DNUMBER); } } -#line 4105 "Zend/zend_language_scanner.c" +#line 4108 "Zend/zend_language_scanner.c" yy303: YYDEBUG(303, *YYCURSOR); ++YYCURSOR; @@ -4140,7 +4143,7 @@ yy305: { RETURN_TOKEN(T_SL_EQUAL); } -#line 4144 "Zend/zend_language_scanner.c" +#line 4147 "Zend/zend_language_scanner.c" yy307: YYDEBUG(307, *YYCURSOR); ++YYCURSOR; @@ -4150,7 +4153,7 @@ yy307: { RETURN_TOKEN(T_SPACESHIP); } -#line 4154 "Zend/zend_language_scanner.c" +#line 4157 "Zend/zend_language_scanner.c" yy309: YYDEBUG(309, *YYCURSOR); ++YYCURSOR; @@ -4160,7 +4163,7 @@ yy309: { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 4164 "Zend/zend_language_scanner.c" +#line 4167 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); ++YYCURSOR; @@ -4170,7 +4173,7 @@ yy311: { RETURN_TOKEN(T_SR_EQUAL); } -#line 4174 "Zend/zend_language_scanner.c" +#line 4177 "Zend/zend_language_scanner.c" yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; @@ -4198,7 +4201,7 @@ yy316: { RETURN_TOKEN(T_LOGICAL_AND); } -#line 4202 "Zend/zend_language_scanner.c" +#line 4205 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; @@ -4283,7 +4286,7 @@ yy329: { RETURN_TOKEN(T_EXIT); } -#line 4287 "Zend/zend_language_scanner.c" +#line 4290 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4369,7 +4372,7 @@ yy340: { RETURN_TOKEN(T_FOR); } -#line 4373 "Zend/zend_language_scanner.c" +#line 4376 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; @@ -4442,7 +4445,7 @@ yy351: { RETURN_TOKEN(T_NEW); } -#line 4446 "Zend/zend_language_scanner.c" +#line 4449 "Zend/zend_language_scanner.c" yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; @@ -4519,7 +4522,7 @@ yy362: { RETURN_TOKEN(T_TRY); } -#line 4523 "Zend/zend_language_scanner.c" +#line 4526 "Zend/zend_language_scanner.c" yy364: YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; @@ -4538,7 +4541,7 @@ yy365: { RETURN_TOKEN(T_USE); } -#line 4542 "Zend/zend_language_scanner.c" +#line 4545 "Zend/zend_language_scanner.c" yy367: YYDEBUG(367, *YYCURSOR); ++YYCURSOR; @@ -4551,7 +4554,7 @@ yy367: { RETURN_TOKEN(T_VAR); } -#line 4555 "Zend/zend_language_scanner.c" +#line 4558 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; @@ -4570,7 +4573,7 @@ yy370: { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 4574 "Zend/zend_language_scanner.c" +#line 4577 "Zend/zend_language_scanner.c" yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; @@ -4788,7 +4791,7 @@ yy401: { RETURN_TOKEN(T_CASE); } -#line 4792 "Zend/zend_language_scanner.c" +#line 4795 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; @@ -4843,7 +4846,7 @@ yy410: { RETURN_TOKEN(T_ECHO); } -#line 4847 "Zend/zend_language_scanner.c" +#line 4850 "Zend/zend_language_scanner.c" yy412: YYDEBUG(412, *YYCURSOR); ++YYCURSOR; @@ -4871,7 +4874,7 @@ yy413: { RETURN_TOKEN(T_ELSE); } -#line 4875 "Zend/zend_language_scanner.c" +#line 4878 "Zend/zend_language_scanner.c" yy414: YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; @@ -4920,7 +4923,7 @@ yy420: { RETURN_TOKEN(T_EVAL); } -#line 4924 "Zend/zend_language_scanner.c" +#line 4927 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); ++YYCURSOR; @@ -4933,7 +4936,7 @@ yy422: { RETURN_TOKEN(T_EXIT); } -#line 4937 "Zend/zend_language_scanner.c" +#line 4940 "Zend/zend_language_scanner.c" yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; @@ -4976,7 +4979,7 @@ yy429: { RETURN_TOKEN(T_GOTO); } -#line 4980 "Zend/zend_language_scanner.c" +#line 4983 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; @@ -5029,7 +5032,7 @@ yy436: { RETURN_TOKEN(T_LIST); } -#line 5033 "Zend/zend_language_scanner.c" +#line 5036 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5220,7 +5223,7 @@ yy467: { RETURN_TOKEN(T_INT_CAST); } -#line 5224 "Zend/zend_language_scanner.c" +#line 5227 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5317,7 +5320,7 @@ yy480: yy481: YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2077 "Zend/zend_language_scanner.l" +#line 2080 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -5364,7 +5367,7 @@ yy481: RETURN_TOKEN(T_START_HEREDOC); } -#line 5368 "Zend/zend_language_scanner.c" +#line 5371 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5388,7 +5391,7 @@ yy484: { RETURN_TOKEN(T_ARRAY); } -#line 5392 "Zend/zend_language_scanner.c" +#line 5395 "Zend/zend_language_scanner.c" yy486: YYDEBUG(486, *YYCURSOR); ++YYCURSOR; @@ -5401,7 +5404,7 @@ yy486: { RETURN_TOKEN(T_BREAK); } -#line 5405 "Zend/zend_language_scanner.c" +#line 5408 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; @@ -5420,7 +5423,7 @@ yy489: { RETURN_TOKEN(T_CATCH); } -#line 5424 "Zend/zend_language_scanner.c" +#line 5427 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); ++YYCURSOR; @@ -5433,7 +5436,7 @@ yy491: { RETURN_TOKEN(T_CLASS); } -#line 5437 "Zend/zend_language_scanner.c" +#line 5440 "Zend/zend_language_scanner.c" yy493: YYDEBUG(493, *YYCURSOR); ++YYCURSOR; @@ -5446,7 +5449,7 @@ yy493: { RETURN_TOKEN(T_CLONE); } -#line 5450 "Zend/zend_language_scanner.c" +#line 5453 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); ++YYCURSOR; @@ -5459,7 +5462,7 @@ yy495: { RETURN_TOKEN(T_CONST); } -#line 5463 "Zend/zend_language_scanner.c" +#line 5466 "Zend/zend_language_scanner.c" yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; @@ -5496,7 +5499,7 @@ yy501: { RETURN_TOKEN(T_EMPTY); } -#line 5500 "Zend/zend_language_scanner.c" +#line 5503 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5521,7 +5524,7 @@ yy505: { RETURN_TOKEN(T_ENDIF); } -#line 5525 "Zend/zend_language_scanner.c" +#line 5528 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5567,7 +5570,7 @@ yy511: { RETURN_TOKEN(T_FINAL); } -#line 5571 "Zend/zend_language_scanner.c" +#line 5574 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5628,7 +5631,7 @@ yy520: { RETURN_TOKEN(T_ISSET); } -#line 5632 "Zend/zend_language_scanner.c" +#line 5635 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; @@ -5647,7 +5650,7 @@ yy523: { RETURN_TOKEN(T_PRINT); } -#line 5651 "Zend/zend_language_scanner.c" +#line 5654 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5702,7 +5705,7 @@ yy532: { RETURN_TOKEN(T_THROW); } -#line 5706 "Zend/zend_language_scanner.c" +#line 5709 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); ++YYCURSOR; @@ -5715,7 +5718,7 @@ yy534: { RETURN_TOKEN(T_TRAIT); } -#line 5719 "Zend/zend_language_scanner.c" +#line 5722 "Zend/zend_language_scanner.c" yy536: YYDEBUG(536, *YYCURSOR); ++YYCURSOR; @@ -5728,7 +5731,7 @@ yy536: { RETURN_TOKEN(T_UNSET); } -#line 5732 "Zend/zend_language_scanner.c" +#line 5735 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); ++YYCURSOR; @@ -5741,7 +5744,7 @@ yy538: { RETURN_TOKEN(T_WHILE); } -#line 5745 "Zend/zend_language_scanner.c" +#line 5748 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yyaccept = 6; @@ -5763,7 +5766,7 @@ yy541: { RETURN_TOKEN(T_YIELD); } -#line 5767 "Zend/zend_language_scanner.c" +#line 5770 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5859,7 +5862,7 @@ yy555: { RETURN_TOKEN(T_BOOL_CAST); } -#line 5863 "Zend/zend_language_scanner.c" +#line 5866 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5893,7 +5896,7 @@ yy562: { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5897 "Zend/zend_language_scanner.c" +#line 5900 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -5962,7 +5965,7 @@ yy573: { RETURN_TOKEN(T_ELSEIF); } -#line 5966 "Zend/zend_language_scanner.c" +#line 5969 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -5996,7 +5999,7 @@ yy577: { RETURN_TOKEN(T_ENDFOR); } -#line 6000 "Zend/zend_language_scanner.c" +#line 6003 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -6045,7 +6048,7 @@ yy584: { RETURN_TOKEN(T_GLOBAL); } -#line 6049 "Zend/zend_language_scanner.c" +#line 6052 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -6106,7 +6109,7 @@ yy594: { RETURN_TOKEN(T_PUBLIC); } -#line 6110 "Zend/zend_language_scanner.c" +#line 6113 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6125,7 +6128,7 @@ yy597: { RETURN_TOKEN(T_RETURN); } -#line 6129 "Zend/zend_language_scanner.c" +#line 6132 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); ++YYCURSOR; @@ -6138,7 +6141,7 @@ yy599: { RETURN_TOKEN(T_STATIC); } -#line 6142 "Zend/zend_language_scanner.c" +#line 6145 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); ++YYCURSOR; @@ -6151,7 +6154,7 @@ yy601: { RETURN_TOKEN(T_SWITCH); } -#line 6155 "Zend/zend_language_scanner.c" +#line 6158 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); ++YYCURSOR; @@ -6235,7 +6238,7 @@ yy614: { RETURN_TOKEN(T_ARRAY_CAST); } -#line 6239 "Zend/zend_language_scanner.c" +#line 6242 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); ++YYCURSOR; @@ -6285,7 +6288,7 @@ yy622: { RETURN_TOKEN(T_UNSET_CAST); } -#line 6289 "Zend/zend_language_scanner.c" +#line 6292 "Zend/zend_language_scanner.c" yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; @@ -6316,7 +6319,7 @@ yy627: { RETURN_TOKEN(T_DECLARE); } -#line 6320 "Zend/zend_language_scanner.c" +#line 6323 "Zend/zend_language_scanner.c" yy629: YYDEBUG(629, *YYCURSOR); ++YYCURSOR; @@ -6329,7 +6332,7 @@ yy629: { RETURN_TOKEN(T_DEFAULT); } -#line 6333 "Zend/zend_language_scanner.c" +#line 6336 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6366,7 +6369,7 @@ yy635: { RETURN_TOKEN(T_EXTENDS); } -#line 6370 "Zend/zend_language_scanner.c" +#line 6373 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); ++YYCURSOR; @@ -6379,7 +6382,7 @@ yy637: { RETURN_TOKEN(T_FINALLY); } -#line 6383 "Zend/zend_language_scanner.c" +#line 6386 "Zend/zend_language_scanner.c" yy639: YYDEBUG(639, *YYCURSOR); ++YYCURSOR; @@ -6392,7 +6395,7 @@ yy639: { RETURN_TOKEN(T_FOREACH); } -#line 6396 "Zend/zend_language_scanner.c" +#line 6399 "Zend/zend_language_scanner.c" yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; @@ -6430,7 +6433,7 @@ yy644: { RETURN_TOKEN(T_INCLUDE); } -#line 6434 "Zend/zend_language_scanner.c" +#line 6437 "Zend/zend_language_scanner.c" yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; @@ -6467,7 +6470,7 @@ yy649: { RETURN_TOKEN(T_PRIVATE); } -#line 6471 "Zend/zend_language_scanner.c" +#line 6474 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6499,7 +6502,7 @@ yy653: { RETURN_TOKEN(T_REQUIRE); } -#line 6503 "Zend/zend_language_scanner.c" +#line 6506 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6523,7 +6526,7 @@ yy656: { RETURN_TOKEN(T_DIR); } -#line 6527 "Zend/zend_language_scanner.c" +#line 6530 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6572,7 +6575,7 @@ yy665: { RETURN_TOKEN(T_STRING_CAST); } -#line 6576 "Zend/zend_language_scanner.c" +#line 6579 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); ++YYCURSOR; @@ -6582,7 +6585,7 @@ yy667: { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6586 "Zend/zend_language_scanner.c" +#line 6589 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6595,7 +6598,7 @@ yy669: { RETURN_TOKEN(T_ABSTRACT); } -#line 6599 "Zend/zend_language_scanner.c" +#line 6602 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); ++YYCURSOR; @@ -6608,7 +6611,7 @@ yy671: { RETURN_TOKEN(T_CALLABLE); } -#line 6612 "Zend/zend_language_scanner.c" +#line 6615 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); ++YYCURSOR; @@ -6621,7 +6624,7 @@ yy673: { RETURN_TOKEN(T_CONTINUE); } -#line 6625 "Zend/zend_language_scanner.c" +#line 6628 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6652,7 +6655,7 @@ yy678: { RETURN_TOKEN(T_ENDWHILE); } -#line 6656 "Zend/zend_language_scanner.c" +#line 6659 "Zend/zend_language_scanner.c" yy680: YYDEBUG(680, *YYCURSOR); ++YYCURSOR; @@ -6665,7 +6668,7 @@ yy680: { RETURN_TOKEN(T_FUNCTION); } -#line 6669 "Zend/zend_language_scanner.c" +#line 6672 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; @@ -6737,7 +6740,7 @@ yy692: { RETURN_TOKEN(T_FILE); } -#line 6741 "Zend/zend_language_scanner.c" +#line 6744 "Zend/zend_language_scanner.c" yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; @@ -6762,7 +6765,7 @@ yy696: { RETURN_TOKEN(T_LINE); } -#line 6766 "Zend/zend_language_scanner.c" +#line 6769 "Zend/zend_language_scanner.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -6803,7 +6806,7 @@ yy703: { RETURN_TOKEN(T_ENDSWITCH); } -#line 6807 "Zend/zend_language_scanner.c" +#line 6810 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6834,7 +6837,7 @@ yy708: { RETURN_TOKEN(T_INSTEADOF); } -#line 6838 "Zend/zend_language_scanner.c" +#line 6841 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); ++YYCURSOR; @@ -6847,7 +6850,7 @@ yy710: { RETURN_TOKEN(T_INTERFACE); } -#line 6851 "Zend/zend_language_scanner.c" +#line 6854 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -6860,7 +6863,7 @@ yy712: { RETURN_TOKEN(T_NAMESPACE); } -#line 6864 "Zend/zend_language_scanner.c" +#line 6867 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); ++YYCURSOR; @@ -6873,7 +6876,7 @@ yy714: { RETURN_TOKEN(T_PROTECTED); } -#line 6877 "Zend/zend_language_scanner.c" +#line 6880 "Zend/zend_language_scanner.c" yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; @@ -6898,7 +6901,7 @@ yy718: { RETURN_TOKEN(T_CLASS_C); } -#line 6902 "Zend/zend_language_scanner.c" +#line 6905 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -6934,7 +6937,7 @@ yy724: { RETURN_TOKEN(T_TRAIT_C); } -#line 6938 "Zend/zend_language_scanner.c" +#line 6941 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); ++YYCURSOR; @@ -6947,7 +6950,7 @@ yy726: { RETURN_TOKEN(T_ENDDECLARE); } -#line 6951 "Zend/zend_language_scanner.c" +#line 6954 "Zend/zend_language_scanner.c" yy728: YYDEBUG(728, *YYCURSOR); ++YYCURSOR; @@ -6960,7 +6963,7 @@ yy728: { RETURN_TOKEN(T_ENDFOREACH); } -#line 6964 "Zend/zend_language_scanner.c" +#line 6967 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); ++YYCURSOR; @@ -6973,7 +6976,7 @@ yy730: { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6977 "Zend/zend_language_scanner.c" +#line 6980 "Zend/zend_language_scanner.c" yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; @@ -6992,7 +6995,7 @@ yy733: { RETURN_TOKEN(T_INSTANCEOF); } -#line 6996 "Zend/zend_language_scanner.c" +#line 6999 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7009,7 +7012,7 @@ yy736: HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 7013 "Zend/zend_language_scanner.c" +#line 7016 "Zend/zend_language_scanner.c" yy738: YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; @@ -7033,7 +7036,7 @@ yy740: { RETURN_TOKEN(T_METHOD_C); } -#line 7037 "Zend/zend_language_scanner.c" +#line 7040 "Zend/zend_language_scanner.c" yy742: YYDEBUG(742, *YYCURSOR); yych = *++YYCURSOR; @@ -7080,7 +7083,7 @@ yy748: { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 7084 "Zend/zend_language_scanner.c" +#line 7087 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); ++YYCURSOR; @@ -7093,7 +7096,7 @@ yy750: { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 7097 "Zend/zend_language_scanner.c" +#line 7100 "Zend/zend_language_scanner.c" yy752: YYDEBUG(752, *YYCURSOR); ++YYCURSOR; @@ -7106,7 +7109,7 @@ yy752: { RETURN_TOKEN(T_FUNC_C); } -#line 7110 "Zend/zend_language_scanner.c" +#line 7113 "Zend/zend_language_scanner.c" yy754: YYDEBUG(754, *YYCURSOR); yych = *++YYCURSOR; @@ -7136,7 +7139,7 @@ yy757: { RETURN_TOKEN(T_NS_C); } -#line 7140 "Zend/zend_language_scanner.c" +#line 7143 "Zend/zend_language_scanner.c" yy759: YYDEBUG(759, *YYCURSOR); yych = *++YYCURSOR; @@ -7154,7 +7157,7 @@ yy760: { RETURN_TOKEN(T_HALT_COMPILER); } -#line 7158 "Zend/zend_language_scanner.c" +#line 7161 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7226,7 +7229,7 @@ yy765: yy_pop_state(); goto restart; } -#line 7230 "Zend/zend_language_scanner.c" +#line 7233 "Zend/zend_language_scanner.c" yy766: YYDEBUG(766, *YYCURSOR); ++YYCURSOR; @@ -7243,7 +7246,7 @@ yy766: HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 7247 "Zend/zend_language_scanner.c" +#line 7250 "Zend/zend_language_scanner.c" yy769: YYDEBUG(769, *YYCURSOR); yych = *++YYCURSOR; @@ -7266,7 +7269,7 @@ yy770: zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7270 "Zend/zend_language_scanner.c" +#line 7273 "Zend/zend_language_scanner.c" yy773: YYDEBUG(773, *YYCURSOR); ++YYCURSOR; @@ -7276,7 +7279,7 @@ yy773: { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7280 "Zend/zend_language_scanner.c" +#line 7283 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7340,7 +7343,7 @@ yy778: yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7344 "Zend/zend_language_scanner.c" +#line 7347 "Zend/zend_language_scanner.c" yy779: YYDEBUG(779, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7395,7 +7398,7 @@ yy783: yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7399 "Zend/zend_language_scanner.c" +#line 7402 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7406,7 +7409,7 @@ yyc_ST_NOWDOC: ++YYCURSOR; YYDEBUG(788, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2330 "Zend/zend_language_scanner.l" +#line 2333 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7462,7 +7465,7 @@ nowdoc_scan_done: HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7466 "Zend/zend_language_scanner.c" +#line 7469 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7550,7 +7553,7 @@ yy791: ++YYCURSOR; YYDEBUG(792, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2387 "Zend/zend_language_scanner.l" +#line 2390 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7559,7 +7562,7 @@ yy791: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7563 "Zend/zend_language_scanner.c" +#line 7566 "Zend/zend_language_scanner.c" yy793: YYDEBUG(793, *YYCURSOR); ++YYCURSOR; @@ -7573,7 +7576,7 @@ yy793: ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7577 "Zend/zend_language_scanner.c" +#line 7580 "Zend/zend_language_scanner.c" yy795: YYDEBUG(795, *YYCURSOR); ++YYCURSOR; @@ -7585,7 +7588,7 @@ yy796: /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7589 "Zend/zend_language_scanner.c" +#line 7592 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7636,7 +7639,7 @@ string: } RETURN_TOKEN(T_NUM_STRING); } -#line 7640 "Zend/zend_language_scanner.c" +#line 7643 "Zend/zend_language_scanner.c" yy800: YYDEBUG(800, *YYCURSOR); ++YYCURSOR; @@ -7663,7 +7666,7 @@ yy802: zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7667 "Zend/zend_language_scanner.c" +#line 7670 "Zend/zend_language_scanner.c" yy805: YYDEBUG(805, *YYCURSOR); ++YYCURSOR; @@ -7674,7 +7677,7 @@ yy805: yy_pop_state(); RETURN_TOKEN(']'); } -#line 7678 "Zend/zend_language_scanner.c" +#line 7681 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); ++YYCURSOR; @@ -7704,7 +7707,7 @@ yy809: zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7708 "Zend/zend_language_scanner.c" +#line 7711 "Zend/zend_language_scanner.c" yy810: YYDEBUG(810, *YYCURSOR); ++YYCURSOR; @@ -7721,7 +7724,7 @@ yy812: ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7725 "Zend/zend_language_scanner.c" +#line 7728 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); yych = *++YYCURSOR; @@ -7761,6 +7764,6 @@ yy818: goto yy812; } } -#line 2396 "Zend/zend_language_scanner.l" +#line 2399 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 1ac7b53a89..89001256d5 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1959,6 +1959,9 @@ inline_char_handler: "?>"{NEWLINE}? { BEGIN(INITIAL); + if (yytext[yyleng-1] != '>') { + CG(increment_lineno) = 1; + } RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index 3746fc4e54..f530c555a9 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -129,19 +129,9 @@ static zend_bool tokenize(zval *return_value, zend_string *source) ZVAL_UNDEF(&token); while ((token_type = lex_scan(&token))) { - if (token_type == T_CLOSE_TAG && zendtext[zendleng - 1] != '>') { - CG(zend_lineno)++; - } - if (token_type >= 256) { array_init(&keyword); add_next_index_long(&keyword, token_type); - if (token_type == T_END_HEREDOC) { - if (CG(increment_lineno)) { - token_line = ++CG(zend_lineno); - CG(increment_lineno) = 0; - } - } add_next_index_stringl(&keyword, (char *)zendtext, zendleng); add_next_index_long(&keyword, token_line); add_next_index_zval(return_value, &keyword); @@ -174,6 +164,11 @@ static zend_bool tokenize(zval *return_value, zend_string *source) need_tokens = 3; } + if (CG(increment_lineno)) { + CG(zend_lineno)++; + CG(increment_lineno) = 0; + } + token_line = CG(zend_lineno); }