diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 0b2795dd71f..637efe55739 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 */ +/* Generated by re2c 1.0.1 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -1454,7 +1454,7 @@ yy3: ++YYCURSOR; YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2747 "Zend/zend_language_scanner.l" +#line 2749 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2266,7 +2266,7 @@ yy62: ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2400 "Zend/zend_language_scanner.l" +#line 2402 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); @@ -4736,6 +4736,7 @@ yy397: zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + zend_exception_save(); while (heredoc_nesting_level) { zval zv; int retval; @@ -4764,6 +4765,7 @@ yy397: heredoc_nesting_level = 0; } } + zend_exception_restore(); if ( (first_token == T_VARIABLE @@ -4783,7 +4785,7 @@ yy397: RETURN_TOKEN(T_START_HEREDOC); } -#line 4787 "Zend/zend_language_scanner.c" +#line 4789 "Zend/zend_language_scanner.c" yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; @@ -4807,7 +4809,7 @@ yy400: { RETURN_TOKEN(T_ARRAY); } -#line 4811 "Zend/zend_language_scanner.c" +#line 4813 "Zend/zend_language_scanner.c" yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; @@ -4820,7 +4822,7 @@ yy402: { RETURN_TOKEN(T_BREAK); } -#line 4824 "Zend/zend_language_scanner.c" +#line 4826 "Zend/zend_language_scanner.c" yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; @@ -4839,7 +4841,7 @@ yy405: { RETURN_TOKEN(T_CATCH); } -#line 4843 "Zend/zend_language_scanner.c" +#line 4845 "Zend/zend_language_scanner.c" yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; @@ -4852,7 +4854,7 @@ yy407: { RETURN_TOKEN(T_CLASS); } -#line 4856 "Zend/zend_language_scanner.c" +#line 4858 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4865,7 +4867,7 @@ yy409: { RETURN_TOKEN(T_CLONE); } -#line 4869 "Zend/zend_language_scanner.c" +#line 4871 "Zend/zend_language_scanner.c" yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; @@ -4878,7 +4880,7 @@ yy411: { RETURN_TOKEN(T_CONST); } -#line 4882 "Zend/zend_language_scanner.c" +#line 4884 "Zend/zend_language_scanner.c" yy413: YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; @@ -4915,7 +4917,7 @@ yy417: { RETURN_TOKEN(T_EMPTY); } -#line 4919 "Zend/zend_language_scanner.c" +#line 4921 "Zend/zend_language_scanner.c" yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; @@ -4940,7 +4942,7 @@ yy421: { RETURN_TOKEN(T_ENDIF); } -#line 4944 "Zend/zend_language_scanner.c" +#line 4946 "Zend/zend_language_scanner.c" yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; @@ -4986,7 +4988,7 @@ yy427: { RETURN_TOKEN(T_FINAL); } -#line 4990 "Zend/zend_language_scanner.c" +#line 4992 "Zend/zend_language_scanner.c" yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; @@ -5047,7 +5049,7 @@ yy436: { RETURN_TOKEN(T_ISSET); } -#line 5051 "Zend/zend_language_scanner.c" +#line 5053 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5066,7 +5068,7 @@ yy439: { RETURN_TOKEN(T_PRINT); } -#line 5070 "Zend/zend_language_scanner.c" +#line 5072 "Zend/zend_language_scanner.c" yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; @@ -5121,7 +5123,7 @@ yy448: { RETURN_TOKEN(T_THROW); } -#line 5125 "Zend/zend_language_scanner.c" +#line 5127 "Zend/zend_language_scanner.c" yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; @@ -5134,7 +5136,7 @@ yy450: { RETURN_TOKEN(T_TRAIT); } -#line 5138 "Zend/zend_language_scanner.c" +#line 5140 "Zend/zend_language_scanner.c" yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; @@ -5147,7 +5149,7 @@ yy452: { RETURN_TOKEN(T_UNSET); } -#line 5151 "Zend/zend_language_scanner.c" +#line 5153 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5160,7 +5162,7 @@ yy454: { RETURN_TOKEN(T_WHILE); } -#line 5164 "Zend/zend_language_scanner.c" +#line 5166 "Zend/zend_language_scanner.c" yy456: YYDEBUG(456, *YYCURSOR); yyaccept = 6; @@ -5182,7 +5184,7 @@ yy457: { RETURN_TOKEN(T_YIELD); } -#line 5186 "Zend/zend_language_scanner.c" +#line 5188 "Zend/zend_language_scanner.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -5278,7 +5280,7 @@ yy471: { RETURN_TOKEN(T_BOOL_CAST); } -#line 5282 "Zend/zend_language_scanner.c" +#line 5284 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5312,7 +5314,7 @@ yy478: { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 5316 "Zend/zend_language_scanner.c" +#line 5318 "Zend/zend_language_scanner.c" yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; @@ -5381,7 +5383,7 @@ yy489: { RETURN_TOKEN(T_ELSEIF); } -#line 5385 "Zend/zend_language_scanner.c" +#line 5387 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5415,7 +5417,7 @@ yy493: { RETURN_TOKEN(T_ENDFOR); } -#line 5419 "Zend/zend_language_scanner.c" +#line 5421 "Zend/zend_language_scanner.c" yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; @@ -5464,7 +5466,7 @@ yy500: { RETURN_TOKEN(T_GLOBAL); } -#line 5468 "Zend/zend_language_scanner.c" +#line 5470 "Zend/zend_language_scanner.c" yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; @@ -5525,7 +5527,7 @@ yy510: { RETURN_TOKEN(T_PUBLIC); } -#line 5529 "Zend/zend_language_scanner.c" +#line 5531 "Zend/zend_language_scanner.c" yy512: YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; @@ -5544,7 +5546,7 @@ yy513: { RETURN_TOKEN(T_RETURN); } -#line 5548 "Zend/zend_language_scanner.c" +#line 5550 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5557,7 +5559,7 @@ yy515: { RETURN_TOKEN(T_STATIC); } -#line 5561 "Zend/zend_language_scanner.c" +#line 5563 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; @@ -5570,7 +5572,7 @@ yy517: { RETURN_TOKEN(T_SWITCH); } -#line 5574 "Zend/zend_language_scanner.c" +#line 5576 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); ++YYCURSOR; @@ -5654,7 +5656,7 @@ yy530: { RETURN_TOKEN(T_ARRAY_CAST); } -#line 5658 "Zend/zend_language_scanner.c" +#line 5660 "Zend/zend_language_scanner.c" yy532: YYDEBUG(532, *YYCURSOR); ++YYCURSOR; @@ -5704,7 +5706,7 @@ yy538: { RETURN_TOKEN(T_UNSET_CAST); } -#line 5708 "Zend/zend_language_scanner.c" +#line 5710 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5735,7 +5737,7 @@ yy543: { RETURN_TOKEN(T_DECLARE); } -#line 5739 "Zend/zend_language_scanner.c" +#line 5741 "Zend/zend_language_scanner.c" yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; @@ -5748,7 +5750,7 @@ yy545: { RETURN_TOKEN(T_DEFAULT); } -#line 5752 "Zend/zend_language_scanner.c" +#line 5754 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5785,7 +5787,7 @@ yy551: { RETURN_TOKEN(T_EXTENDS); } -#line 5789 "Zend/zend_language_scanner.c" +#line 5791 "Zend/zend_language_scanner.c" yy553: YYDEBUG(553, *YYCURSOR); yych = *++YYCURSOR; @@ -5798,7 +5800,7 @@ yy553: { RETURN_TOKEN(T_FINALLY); } -#line 5802 "Zend/zend_language_scanner.c" +#line 5804 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; @@ -5811,7 +5813,7 @@ yy555: { RETURN_TOKEN(T_FOREACH); } -#line 5815 "Zend/zend_language_scanner.c" +#line 5817 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5849,7 +5851,7 @@ yy560: { RETURN_TOKEN(T_INCLUDE); } -#line 5853 "Zend/zend_language_scanner.c" +#line 5855 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5886,7 +5888,7 @@ yy565: { RETURN_TOKEN(T_PRIVATE); } -#line 5890 "Zend/zend_language_scanner.c" +#line 5892 "Zend/zend_language_scanner.c" yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; @@ -5918,7 +5920,7 @@ yy569: { RETURN_TOKEN(T_REQUIRE); } -#line 5922 "Zend/zend_language_scanner.c" +#line 5924 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; @@ -5942,7 +5944,7 @@ yy572: { RETURN_TOKEN(T_DIR); } -#line 5946 "Zend/zend_language_scanner.c" +#line 5948 "Zend/zend_language_scanner.c" yy574: YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; @@ -5991,7 +5993,7 @@ yy581: { RETURN_TOKEN(T_STRING_CAST); } -#line 5995 "Zend/zend_language_scanner.c" +#line 5997 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; @@ -6001,7 +6003,7 @@ yy583: { RETURN_TOKEN(T_OBJECT_CAST); } -#line 6005 "Zend/zend_language_scanner.c" +#line 6007 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); yych = *++YYCURSOR; @@ -6014,7 +6016,7 @@ yy585: { RETURN_TOKEN(T_ABSTRACT); } -#line 6018 "Zend/zend_language_scanner.c" +#line 6020 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -6027,7 +6029,7 @@ yy587: { RETURN_TOKEN(T_CALLABLE); } -#line 6031 "Zend/zend_language_scanner.c" +#line 6033 "Zend/zend_language_scanner.c" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -6040,7 +6042,7 @@ yy589: { RETURN_TOKEN(T_CONTINUE); } -#line 6044 "Zend/zend_language_scanner.c" +#line 6046 "Zend/zend_language_scanner.c" yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; @@ -6071,7 +6073,7 @@ yy594: { RETURN_TOKEN(T_ENDWHILE); } -#line 6075 "Zend/zend_language_scanner.c" +#line 6077 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -6084,7 +6086,7 @@ yy596: { RETURN_TOKEN(T_FUNCTION); } -#line 6088 "Zend/zend_language_scanner.c" +#line 6090 "Zend/zend_language_scanner.c" yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; @@ -6156,7 +6158,7 @@ yy608: { RETURN_TOKEN(T_FILE); } -#line 6160 "Zend/zend_language_scanner.c" +#line 6162 "Zend/zend_language_scanner.c" yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; @@ -6181,7 +6183,7 @@ yy612: { RETURN_TOKEN(T_LINE); } -#line 6185 "Zend/zend_language_scanner.c" +#line 6187 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6222,7 +6224,7 @@ yy619: { RETURN_TOKEN(T_ENDSWITCH); } -#line 6226 "Zend/zend_language_scanner.c" +#line 6228 "Zend/zend_language_scanner.c" yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; @@ -6253,7 +6255,7 @@ yy624: { RETURN_TOKEN(T_INSTEADOF); } -#line 6257 "Zend/zend_language_scanner.c" +#line 6259 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6266,7 +6268,7 @@ yy626: { RETURN_TOKEN(T_INTERFACE); } -#line 6270 "Zend/zend_language_scanner.c" +#line 6272 "Zend/zend_language_scanner.c" yy628: YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; @@ -6279,7 +6281,7 @@ yy628: { RETURN_TOKEN(T_NAMESPACE); } -#line 6283 "Zend/zend_language_scanner.c" +#line 6285 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6292,7 +6294,7 @@ yy630: { RETURN_TOKEN(T_PROTECTED); } -#line 6296 "Zend/zend_language_scanner.c" +#line 6298 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6317,7 +6319,7 @@ yy634: { RETURN_TOKEN(T_CLASS_C); } -#line 6321 "Zend/zend_language_scanner.c" +#line 6323 "Zend/zend_language_scanner.c" yy636: YYDEBUG(636, *YYCURSOR); yych = *++YYCURSOR; @@ -6353,7 +6355,7 @@ yy640: { RETURN_TOKEN(T_TRAIT_C); } -#line 6357 "Zend/zend_language_scanner.c" +#line 6359 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6366,7 +6368,7 @@ yy642: { RETURN_TOKEN(T_ENDDECLARE); } -#line 6370 "Zend/zend_language_scanner.c" +#line 6372 "Zend/zend_language_scanner.c" yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; @@ -6379,7 +6381,7 @@ yy644: { RETURN_TOKEN(T_ENDFOREACH); } -#line 6383 "Zend/zend_language_scanner.c" +#line 6385 "Zend/zend_language_scanner.c" yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; @@ -6392,7 +6394,7 @@ yy646: { RETURN_TOKEN(T_IMPLEMENTS); } -#line 6396 "Zend/zend_language_scanner.c" +#line 6398 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6411,7 +6413,7 @@ yy649: { RETURN_TOKEN(T_INSTANCEOF); } -#line 6415 "Zend/zend_language_scanner.c" +#line 6417 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6463,7 +6465,7 @@ yy655: { RETURN_TOKEN(T_METHOD_C); } -#line 6467 "Zend/zend_language_scanner.c" +#line 6469 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; @@ -6493,7 +6495,7 @@ yy660: HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 6497 "Zend/zend_language_scanner.c" +#line 6499 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; @@ -6522,7 +6524,7 @@ yy665: { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 6526 "Zend/zend_language_scanner.c" +#line 6528 "Zend/zend_language_scanner.c" yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; @@ -6535,7 +6537,7 @@ yy667: { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 6539 "Zend/zend_language_scanner.c" +#line 6541 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; @@ -6548,7 +6550,7 @@ yy669: { RETURN_TOKEN(T_FUNC_C); } -#line 6552 "Zend/zend_language_scanner.c" +#line 6554 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6578,7 +6580,7 @@ yy674: { RETURN_TOKEN(T_NS_C); } -#line 6582 "Zend/zend_language_scanner.c" +#line 6584 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6596,7 +6598,7 @@ yy677: { RETURN_TOKEN(T_HALT_COMPILER); } -#line 6600 "Zend/zend_language_scanner.c" +#line 6602 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6668,7 +6670,7 @@ yy682: yy_pop_state(); goto restart; } -#line 6672 "Zend/zend_language_scanner.c" +#line 6674 "Zend/zend_language_scanner.c" yy683: YYDEBUG(683, *YYCURSOR); ++YYCURSOR; @@ -6684,7 +6686,7 @@ yy683: { goto return_whitespace; } -#line 6688 "Zend/zend_language_scanner.c" +#line 6690 "Zend/zend_language_scanner.c" yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; @@ -6706,7 +6708,7 @@ yy687: yy_pop_state(); RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 6710 "Zend/zend_language_scanner.c" +#line 6712 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); ++YYCURSOR; @@ -6716,7 +6718,7 @@ yy690: { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 6720 "Zend/zend_language_scanner.c" +#line 6722 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_BACKQUOTE: @@ -6769,7 +6771,7 @@ yyc_ST_BACKQUOTE: yy695: YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2492 "Zend/zend_language_scanner.l" +#line 2494 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -6814,7 +6816,7 @@ yy695: RETURN_TOKEN(T_ERROR); } } -#line 6818 "Zend/zend_language_scanner.c" +#line 6820 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6838,12 +6840,12 @@ yy697: ++YYCURSOR; YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2432 "Zend/zend_language_scanner.l" +#line 2434 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 6847 "Zend/zend_language_scanner.c" +#line 6849 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6868,7 +6870,7 @@ yy702: { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6872 "Zend/zend_language_scanner.c" +#line 6874 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6879,19 +6881,19 @@ yy703: yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 6883 "Zend/zend_language_scanner.c" +#line 6885 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); ++YYCURSOR; YYDEBUG(706, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2420 "Zend/zend_language_scanner.l" +#line 2422 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 6895 "Zend/zend_language_scanner.c" +#line 6897 "Zend/zend_language_scanner.c" yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; @@ -6911,7 +6913,7 @@ yy709: yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6915 "Zend/zend_language_scanner.c" +#line 6917 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6935,7 +6937,7 @@ yy712: yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 6939 "Zend/zend_language_scanner.c" +#line 6941 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -6988,7 +6990,7 @@ yyc_ST_DOUBLE_QUOTES: yy717: YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2438 "Zend/zend_language_scanner.l" +#line 2440 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -7041,18 +7043,18 @@ double_quotes_scan_done: RETURN_TOKEN(T_ERROR); } } -#line 7045 "Zend/zend_language_scanner.c" +#line 7047 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); ++YYCURSOR; YYDEBUG(719, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2427 "Zend/zend_language_scanner.l" +#line 2429 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 7056 "Zend/zend_language_scanner.c" +#line 7058 "Zend/zend_language_scanner.c" yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; @@ -7095,7 +7097,7 @@ yy724: { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7099 "Zend/zend_language_scanner.c" +#line 7101 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); ++YYCURSOR; @@ -7106,19 +7108,19 @@ yy725: yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7110 "Zend/zend_language_scanner.c" +#line 7112 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); ++YYCURSOR; YYDEBUG(728, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2420 "Zend/zend_language_scanner.l" +#line 2422 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7122 "Zend/zend_language_scanner.c" +#line 7124 "Zend/zend_language_scanner.c" yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; @@ -7138,7 +7140,7 @@ yy731: yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7142 "Zend/zend_language_scanner.c" +#line 7144 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -7162,7 +7164,7 @@ yy734: yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7166 "Zend/zend_language_scanner.c" +#line 7168 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_HEREDOC: @@ -7211,7 +7213,7 @@ yyc_ST_HEREDOC: yy739: YYDEBUG(739, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2538 "Zend/zend_language_scanner.l" +#line 2540 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = 0; @@ -7331,7 +7333,7 @@ heredoc_scan_done: RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7335 "Zend/zend_language_scanner.c" +#line 7337 "Zend/zend_language_scanner.c" yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; @@ -7374,7 +7376,7 @@ yy744: { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7378 "Zend/zend_language_scanner.c" +#line 7380 "Zend/zend_language_scanner.c" yy745: YYDEBUG(745, *YYCURSOR); ++YYCURSOR; @@ -7385,19 +7387,19 @@ yy745: yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 7389 "Zend/zend_language_scanner.c" +#line 7391 "Zend/zend_language_scanner.c" yy747: YYDEBUG(747, *YYCURSOR); ++YYCURSOR; YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2420 "Zend/zend_language_scanner.l" +#line 2422 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 7401 "Zend/zend_language_scanner.c" +#line 7403 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; @@ -7417,7 +7419,7 @@ yy751: yy_push_state(ST_VAR_OFFSET); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7421 "Zend/zend_language_scanner.c" +#line 7423 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7441,7 +7443,7 @@ yy754: yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7445 "Zend/zend_language_scanner.c" +#line 7447 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7505,7 +7507,7 @@ yy759: yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7509 "Zend/zend_language_scanner.c" +#line 7511 "Zend/zend_language_scanner.c" yy760: YYDEBUG(760, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); @@ -7559,7 +7561,7 @@ yy764: yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); } -#line 7563 "Zend/zend_language_scanner.c" +#line 7565 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -7648,7 +7650,7 @@ yy768: ++YYCURSOR; YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2747 "Zend/zend_language_scanner.l" +#line 2749 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7657,7 +7659,7 @@ yy768: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7661 "Zend/zend_language_scanner.c" +#line 7663 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7671,7 +7673,7 @@ yy770: ZVAL_NULL(zendlval); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 7675 "Zend/zend_language_scanner.c" +#line 7677 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); ++YYCURSOR; @@ -7683,7 +7685,7 @@ yy773: /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7687 "Zend/zend_language_scanner.c" +#line 7689 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; @@ -7734,7 +7736,7 @@ string: } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7738 "Zend/zend_language_scanner.c" +#line 7740 "Zend/zend_language_scanner.c" yy777: YYDEBUG(777, *YYCURSOR); ++YYCURSOR; @@ -7760,7 +7762,7 @@ yy779: { RETURN_TOKEN_WITH_STR(T_STRING, 0); } -#line 7764 "Zend/zend_language_scanner.c" +#line 7766 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); ++YYCURSOR; @@ -7771,7 +7773,7 @@ yy782: yy_pop_state(); RETURN_TOKEN(']'); } -#line 7775 "Zend/zend_language_scanner.c" +#line 7777 "Zend/zend_language_scanner.c" yy784: YYDEBUG(784, *YYCURSOR); ++YYCURSOR; @@ -7800,7 +7802,7 @@ yy786: { RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); } -#line 7804 "Zend/zend_language_scanner.c" +#line 7806 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); ++YYCURSOR; @@ -7821,7 +7823,7 @@ yy789: } RETURN_TOKEN_WITH_VAL(T_NUM_STRING); } -#line 7825 "Zend/zend_language_scanner.c" +#line 7827 "Zend/zend_language_scanner.c" yy790: YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; @@ -7918,7 +7920,7 @@ inline_char_handler: HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); } -#line 7922 "Zend/zend_language_scanner.c" +#line 7924 "Zend/zend_language_scanner.c" yy801: YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; @@ -7946,7 +7948,7 @@ yy803: goto inline_char_handler; } } -#line 7950 "Zend/zend_language_scanner.c" +#line 7952 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7960,7 +7962,7 @@ yy804: } RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 7964 "Zend/zend_language_scanner.c" +#line 7966 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; @@ -8000,7 +8002,7 @@ yy811: } RETURN_TOKEN(T_OPEN_TAG); } -#line 8004 "Zend/zend_language_scanner.c" +#line 8006 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; @@ -8015,7 +8017,7 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(816, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2406 "Zend/zend_language_scanner.l" +#line 2408 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -8028,7 +8030,7 @@ yyc_ST_END_HEREDOC: BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 8032 "Zend/zend_language_scanner.c" +#line 8034 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_NOWDOC: YYDEBUG(817, *YYCURSOR); @@ -8038,7 +8040,7 @@ yyc_ST_NOWDOC: ++YYCURSOR; YYDEBUG(820, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2659 "Zend/zend_language_scanner.l" +#line 2661 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); int newline = 0, indentation = 0, spacing = -1; @@ -8125,9 +8127,9 @@ nowdoc_scan_done: HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); } -#line 8129 "Zend/zend_language_scanner.c" +#line 8131 "Zend/zend_language_scanner.c" } -#line 2756 "Zend/zend_language_scanner.l" +#line 2758 "Zend/zend_language_scanner.l" emit_token_with_str: diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 8ec979de734..720e4b50529 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2348,6 +2348,7 @@ skip_escape_conversion: zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); + zend_exception_save(); while (heredoc_nesting_level) { zval zv; int retval; @@ -2376,6 +2377,7 @@ skip_escape_conversion: heredoc_nesting_level = 0; } } + zend_exception_restore(); if ( (first_token == T_VARIABLE diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 81299aa44ff..3c01b5bc761 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 */ +/* Generated by re2c 1.0.1 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/ext/tokenizer/tests/bug76991.phpt b/ext/tokenizer/tests/bug76991.phpt new file mode 100644 index 00000000000..261abc59819 --- /dev/null +++ b/ext/tokenizer/tests/bug76991.phpt @@ -0,0 +1,38 @@ +--TEST-- +Bug #76991: Incorrect tokenization of multiple invalid flexible heredoc strings +--FILE-- + +--EXPECT-- +T_OPEN_TAG: