diff --git a/support/xhpast/scanner.l b/support/xhpast/scanner.l --- a/support/xhpast/scanner.l +++ b/support/xhpast/scanner.l @@ -3,11 +3,7 @@ #define push_state(s) xhp_new_push_state(s, yyg) #define pop_state() xhp_new_pop_state(yyg) #define set_state(s) xhp_set_state(s, yyg) -#define last_token() yyextra->last_token -#define YY_USER_ACTION \ - if (!yyg->yy_more_len) \ - yyextra->first_lineno = yyextra->lineno; #define pttok(t, txt) \ yyextra->token_list.push_back( \ new xhpast::Token(t, txt, yyextra->list_size++)); \ diff --git a/support/xhpast/scanner.lex.hpp b/support/xhpast/scanner.lex.hpp --- a/support/xhpast/scanner.lex.hpp +++ b/support/xhpast/scanner.lex.hpp @@ -361,7 +361,7 @@ #undef YY_DECL #endif -#line 403 "scanner.l" +#line 399 "scanner.l" #line 368 "scanner.lex.hpp" diff --git a/support/xhpast/scanner.lex.cpp b/support/xhpast/scanner.lex.cpp --- a/support/xhpast/scanner.lex.cpp +++ b/support/xhpast/scanner.lex.cpp @@ -3396,11 +3396,7 @@ #define push_state(s) xhp_new_push_state(s, yyg) #define pop_state() xhp_new_pop_state(yyg) #define set_state(s) xhp_set_state(s, yyg) -#define last_token() yyextra->last_token -#define YY_USER_ACTION \ - if (!yyg->yy_more_len) \ - yyextra->first_lineno = yyextra->lineno; #define pttok(t, txt) \ yyextra->token_list.push_back( \ new xhpast::Token(t, txt, yyextra->list_size++)); \ @@ -3440,7 +3436,7 @@ -#line 3444 "scanner.lex.cpp" +#line 3440 "scanner.lex.cpp" #define INITIAL 0 #define PHP 1 @@ -3727,11 +3723,11 @@ } { -#line 76 "scanner.l" +#line 72 "scanner.l" /* Open / close PHP + inline HTML */ -#line 3735 "scanner.lex.cpp" +#line 3731 "scanner.lex.cpp" while ( 1 ) /* loops until end-of-file is reached */ { @@ -3795,7 +3791,7 @@ case 1: /* rule 1 can match eol */ YY_RULE_SETUP -#line 80 "scanner.l" +#line 76 "scanner.l" { yy_scan_newlines(yytext + 5, yyg); // the state transition will be done in yy_token() @@ -3804,7 +3800,7 @@ YY_BREAK case 2: YY_RULE_SETUP -#line 85 "scanner.l" +#line 81 "scanner.l" { if (yyextra->short_tags) { tok(T_OPEN_TAG); @@ -3815,7 +3811,7 @@ YY_BREAK case 3: YY_RULE_SETUP -#line 92 "scanner.l" +#line 88 "scanner.l" { if (yyextra->short_tags) { tok(T_OPEN_TAG_WITH_ECHO); @@ -3826,7 +3822,7 @@ YY_BREAK case 4: YY_RULE_SETUP -#line 99 "scanner.l" +#line 95 "scanner.l" { if (yyextra->asp_tags) { tok(T_OPEN_TAG); @@ -3837,7 +3833,7 @@ YY_BREAK case 5: YY_RULE_SETUP -#line 106 "scanner.l" +#line 102 "scanner.l" { if (yyextra->asp_tags) { tok(T_OPEN_TAG_WITH_ECHO); @@ -3849,7 +3845,7 @@ case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 113 "scanner.l" +#line 109 "scanner.l" { yy_scan_newlines(yytext, yyg); tok(T_INLINE_HTML); @@ -3860,7 +3856,7 @@ case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 119 "scanner.l" +#line 115 "scanner.l" { yy_scan_newlines(yytext + 2, yyg); tok(T_CLOSE_TAG); @@ -3868,7 +3864,7 @@ YY_BREAK case 8: YY_RULE_SETUP -#line 123 "scanner.l" +#line 119 "scanner.l" { if (yyextra->asp_tags) { tok(T_CLOSE_TAG); @@ -3883,7 +3879,7 @@ case 9: YY_RULE_SETUP -#line 135 "scanner.l" +#line 131 "scanner.l" { push_state(PHP_EOL_COMMENT); yymore(); @@ -3892,7 +3888,7 @@ case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 139 "scanner.l" +#line 135 "scanner.l" { yy_scan_newlines(yytext + 3, yyg); push_state(PHP_DOC_COMMENT); @@ -3901,7 +3897,7 @@ YY_BREAK case 11: YY_RULE_SETUP -#line 144 "scanner.l" +#line 140 "scanner.l" { push_state(PHP_COMMENT); yymore(); @@ -3910,7 +3906,7 @@ case 12: /* rule 12 can match eol */ YY_RULE_SETUP -#line 148 "scanner.l" +#line 144 "scanner.l" { yy_scan_newlines(yytext, yyg); ptok(T_WHITESPACE); @@ -3918,7 +3914,7 @@ YY_BREAK case YY_STATE_EOF(PHP_EOL_COMMENT): -#line 153 "scanner.l" +#line 149 "scanner.l" { ptok(T_COMMENT); pop_state(); @@ -3928,7 +3924,7 @@ case 13: /* rule 13 can match eol */ YY_RULE_SETUP -#line 158 "scanner.l" +#line 154 "scanner.l" { ++yyextra->lineno; ptok(T_COMMENT); @@ -3937,12 +3933,12 @@ YY_BREAK case 14: YY_RULE_SETUP -#line 163 "scanner.l" +#line 159 "scanner.l" yymore(); YY_BREAK case 15: YY_RULE_SETUP -#line 164 "scanner.l" +#line 160 "scanner.l" { yyless(yyleng - 2); ptok(T_COMMENT); @@ -3951,7 +3947,7 @@ YY_BREAK case 16: YY_RULE_SETUP -#line 169 "scanner.l" +#line 165 "scanner.l" yymore(); YY_BREAK @@ -3959,7 +3955,7 @@ case 17: /* rule 17 can match eol */ YY_RULE_SETUP -#line 172 "scanner.l" +#line 168 "scanner.l" { ++yyextra->lineno; yymore(); @@ -3967,20 +3963,20 @@ YY_BREAK case 18: YY_RULE_SETUP -#line 176 "scanner.l" +#line 172 "scanner.l" yymore(); YY_BREAK case 19: YY_RULE_SETUP -#line 178 "scanner.l" +#line 174 "scanner.l" { ptok(T_DOC_COMMENT); pop_state(); } YY_BREAK case YY_STATE_EOF(PHP_DOC_COMMENT): -#line 182 "scanner.l" +#line 178 "scanner.l" { ptok(T_DOC_COMMENT); pop_state(); @@ -3988,14 +3984,14 @@ YY_BREAK case 20: YY_RULE_SETUP -#line 186 "scanner.l" +#line 182 "scanner.l" { ptok(T_COMMENT); pop_state(); } YY_BREAK case YY_STATE_EOF(PHP_COMMENT): -#line 190 "scanner.l" +#line 186 "scanner.l" { ptok(T_COMMENT); pop_state(); @@ -4005,372 +4001,372 @@ case 21: YY_RULE_SETUP -#line 197 "scanner.l" +#line 193 "scanner.l" tok(T_INCLUDE); YY_BREAK case 22: YY_RULE_SETUP -#line 198 "scanner.l" +#line 194 "scanner.l" tok(T_INCLUDE_ONCE); YY_BREAK case 23: YY_RULE_SETUP -#line 199 "scanner.l" +#line 195 "scanner.l" tok(T_EVAL); YY_BREAK case 24: YY_RULE_SETUP -#line 200 "scanner.l" +#line 196 "scanner.l" tok(T_REQUIRE); YY_BREAK case 25: YY_RULE_SETUP -#line 201 "scanner.l" +#line 197 "scanner.l" tok(T_REQUIRE_ONCE); YY_BREAK case 26: YY_RULE_SETUP -#line 202 "scanner.l" +#line 198 "scanner.l" tok(T_LOGICAL_OR); YY_BREAK case 27: YY_RULE_SETUP -#line 203 "scanner.l" +#line 199 "scanner.l" tok(T_LOGICAL_XOR); YY_BREAK case 28: YY_RULE_SETUP -#line 204 "scanner.l" +#line 200 "scanner.l" tok(T_LOGICAL_AND); YY_BREAK case 29: YY_RULE_SETUP -#line 205 "scanner.l" +#line 201 "scanner.l" tok(T_PRINT); YY_BREAK case 30: YY_RULE_SETUP -#line 206 "scanner.l" +#line 202 "scanner.l" tok(T_INSTANCEOF); YY_BREAK case 31: YY_RULE_SETUP -#line 207 "scanner.l" +#line 203 "scanner.l" tok(T_NEW); YY_BREAK case 32: YY_RULE_SETUP -#line 208 "scanner.l" +#line 204 "scanner.l" tok(T_CLONE); YY_BREAK case 33: YY_RULE_SETUP -#line 209 "scanner.l" +#line 205 "scanner.l" tok(T_EXIT); YY_BREAK case 34: YY_RULE_SETUP -#line 210 "scanner.l" +#line 206 "scanner.l" tok(T_IF); YY_BREAK case 35: YY_RULE_SETUP -#line 211 "scanner.l" +#line 207 "scanner.l" tok(T_ELSEIF); YY_BREAK case 36: YY_RULE_SETUP -#line 212 "scanner.l" +#line 208 "scanner.l" tok(T_ELSE); YY_BREAK case 37: YY_RULE_SETUP -#line 213 "scanner.l" +#line 209 "scanner.l" tok(T_ENDIF); YY_BREAK case 38: YY_RULE_SETUP -#line 214 "scanner.l" +#line 210 "scanner.l" tok(T_ECHO); YY_BREAK case 39: YY_RULE_SETUP -#line 215 "scanner.l" +#line 211 "scanner.l" tok(T_DO); YY_BREAK case 40: YY_RULE_SETUP -#line 216 "scanner.l" +#line 212 "scanner.l" tok(T_WHILE); YY_BREAK case 41: YY_RULE_SETUP -#line 217 "scanner.l" +#line 213 "scanner.l" tok(T_ENDWHILE); YY_BREAK case 42: YY_RULE_SETUP -#line 218 "scanner.l" +#line 214 "scanner.l" tok(T_FOR); YY_BREAK case 43: YY_RULE_SETUP -#line 219 "scanner.l" +#line 215 "scanner.l" tok(T_ENDFOR); YY_BREAK case 44: YY_RULE_SETUP -#line 220 "scanner.l" +#line 216 "scanner.l" tok(T_FOREACH); YY_BREAK case 45: YY_RULE_SETUP -#line 221 "scanner.l" +#line 217 "scanner.l" tok(T_ENDFOREACH); YY_BREAK case 46: YY_RULE_SETUP -#line 222 "scanner.l" +#line 218 "scanner.l" tok(T_DECLARE); YY_BREAK case 47: YY_RULE_SETUP -#line 223 "scanner.l" +#line 219 "scanner.l" tok(T_ENDDECLARE); YY_BREAK case 48: YY_RULE_SETUP -#line 224 "scanner.l" +#line 220 "scanner.l" tok(T_AS); YY_BREAK case 49: YY_RULE_SETUP -#line 225 "scanner.l" +#line 221 "scanner.l" tok(T_SWITCH); YY_BREAK case 50: YY_RULE_SETUP -#line 226 "scanner.l" +#line 222 "scanner.l" tok(T_ENDSWITCH); YY_BREAK case 51: YY_RULE_SETUP -#line 227 "scanner.l" +#line 223 "scanner.l" tok(T_CASE); YY_BREAK case 52: YY_RULE_SETUP -#line 228 "scanner.l" +#line 224 "scanner.l" tok(T_DEFAULT); YY_BREAK case 53: YY_RULE_SETUP -#line 229 "scanner.l" +#line 225 "scanner.l" tok(T_BREAK); YY_BREAK case 54: YY_RULE_SETUP -#line 230 "scanner.l" +#line 226 "scanner.l" tok(T_CONTINUE); YY_BREAK case 55: YY_RULE_SETUP -#line 231 "scanner.l" +#line 227 "scanner.l" tok(T_GOTO); YY_BREAK case 56: YY_RULE_SETUP -#line 232 "scanner.l" +#line 228 "scanner.l" tok(T_FUNCTION); YY_BREAK case 57: YY_RULE_SETUP -#line 233 "scanner.l" +#line 229 "scanner.l" tok(T_CONST); YY_BREAK case 58: YY_RULE_SETUP -#line 234 "scanner.l" +#line 230 "scanner.l" tok(T_RETURN); YY_BREAK case 59: YY_RULE_SETUP -#line 235 "scanner.l" +#line 231 "scanner.l" tok(T_TRY); YY_BREAK case 60: YY_RULE_SETUP -#line 236 "scanner.l" +#line 232 "scanner.l" tok(T_CATCH); YY_BREAK case 61: YY_RULE_SETUP -#line 237 "scanner.l" +#line 233 "scanner.l" tok(T_THROW); YY_BREAK case 62: YY_RULE_SETUP -#line 238 "scanner.l" +#line 234 "scanner.l" tok(T_USE); YY_BREAK case 63: YY_RULE_SETUP -#line 239 "scanner.l" +#line 235 "scanner.l" tok(T_GLOBAL); YY_BREAK case 64: YY_RULE_SETUP -#line 240 "scanner.l" +#line 236 "scanner.l" tok(T_STATIC); YY_BREAK case 65: YY_RULE_SETUP -#line 241 "scanner.l" +#line 237 "scanner.l" tok(T_ABSTRACT); YY_BREAK case 66: YY_RULE_SETUP -#line 242 "scanner.l" +#line 238 "scanner.l" tok(T_FINAL); YY_BREAK case 67: YY_RULE_SETUP -#line 243 "scanner.l" +#line 239 "scanner.l" tok(T_PRIVATE); YY_BREAK case 68: YY_RULE_SETUP -#line 244 "scanner.l" +#line 240 "scanner.l" tok(T_PROTECTED); YY_BREAK case 69: YY_RULE_SETUP -#line 245 "scanner.l" +#line 241 "scanner.l" tok(T_PUBLIC); YY_BREAK case 70: YY_RULE_SETUP -#line 246 "scanner.l" +#line 242 "scanner.l" tok(T_VAR); YY_BREAK case 71: YY_RULE_SETUP -#line 247 "scanner.l" +#line 243 "scanner.l" tok(T_UNSET); YY_BREAK case 72: YY_RULE_SETUP -#line 248 "scanner.l" +#line 244 "scanner.l" tok(T_ISSET); YY_BREAK case 73: YY_RULE_SETUP -#line 249 "scanner.l" +#line 245 "scanner.l" tok(T_EMPTY); YY_BREAK case 74: YY_RULE_SETUP -#line 250 "scanner.l" +#line 246 "scanner.l" tok(T_HALT_COMPILER); YY_BREAK case 75: YY_RULE_SETUP -#line 251 "scanner.l" +#line 247 "scanner.l" tok(T_CLASS); YY_BREAK case 76: YY_RULE_SETUP -#line 252 "scanner.l" +#line 248 "scanner.l" tok(T_INTERFACE); YY_BREAK case 77: YY_RULE_SETUP -#line 253 "scanner.l" +#line 249 "scanner.l" tok(T_EXTENDS); YY_BREAK case 78: YY_RULE_SETUP -#line 254 "scanner.l" +#line 250 "scanner.l" tok(T_IMPLEMENTS); YY_BREAK case 79: YY_RULE_SETUP -#line 255 "scanner.l" +#line 251 "scanner.l" tok(T_LIST); YY_BREAK case 80: YY_RULE_SETUP -#line 256 "scanner.l" +#line 252 "scanner.l" tok(T_ARRAY); YY_BREAK case 81: YY_RULE_SETUP -#line 257 "scanner.l" +#line 253 "scanner.l" tok(T_CLASS_C); YY_BREAK case 82: YY_RULE_SETUP -#line 258 "scanner.l" +#line 254 "scanner.l" tok(T_METHOD_C); YY_BREAK case 83: YY_RULE_SETUP -#line 259 "scanner.l" +#line 255 "scanner.l" tok(T_FUNC_C); YY_BREAK case 84: YY_RULE_SETUP -#line 260 "scanner.l" +#line 256 "scanner.l" tok(T_LINE); YY_BREAK case 85: YY_RULE_SETUP -#line 261 "scanner.l" +#line 257 "scanner.l" tok(T_FILE); YY_BREAK case 86: YY_RULE_SETUP -#line 262 "scanner.l" +#line 258 "scanner.l" tok(T_NAMESPACE); YY_BREAK case 87: YY_RULE_SETUP -#line 263 "scanner.l" +#line 259 "scanner.l" tok(T_NS_C); YY_BREAK case 88: YY_RULE_SETUP -#line 264 "scanner.l" +#line 260 "scanner.l" tok(T_DIR); YY_BREAK case 89: YY_RULE_SETUP -#line 265 "scanner.l" +#line 261 "scanner.l" tok(T_INSTEADOF); YY_BREAK case 90: YY_RULE_SETUP -#line 266 "scanner.l" +#line 262 "scanner.l" tok(T_CALLABLE); YY_BREAK case 91: YY_RULE_SETUP -#line 267 "scanner.l" +#line 263 "scanner.l" tok(T_TRAIT); YY_BREAK case 92: YY_RULE_SETUP -#line 268 "scanner.l" +#line 264 "scanner.l" tok(T_TRAIT_C); YY_BREAK case 93: YY_RULE_SETUP -#line 269 "scanner.l" +#line 265 "scanner.l" tok(T_YIELD); YY_BREAK case 94: YY_RULE_SETUP -#line 270 "scanner.l" +#line 266 "scanner.l" tok(T_FINALLY); YY_BREAK @@ -4378,137 +4374,137 @@ case 95: YY_RULE_SETUP -#line 275 "scanner.l" +#line 271 "scanner.l" tok(T_PLUS_EQUAL); YY_BREAK case 96: YY_RULE_SETUP -#line 276 "scanner.l" +#line 272 "scanner.l" tok(T_MINUS_EQUAL); YY_BREAK case 97: YY_RULE_SETUP -#line 277 "scanner.l" +#line 273 "scanner.l" tok(T_MUL_EQUAL); YY_BREAK case 98: YY_RULE_SETUP -#line 278 "scanner.l" +#line 274 "scanner.l" tok(T_DIV_EQUAL); YY_BREAK case 99: YY_RULE_SETUP -#line 279 "scanner.l" +#line 275 "scanner.l" tok(T_CONCAT_EQUAL); YY_BREAK case 100: YY_RULE_SETUP -#line 280 "scanner.l" +#line 276 "scanner.l" tok(T_MOD_EQUAL); YY_BREAK case 101: YY_RULE_SETUP -#line 281 "scanner.l" +#line 277 "scanner.l" tok(T_AND_EQUAL); YY_BREAK case 102: YY_RULE_SETUP -#line 282 "scanner.l" +#line 278 "scanner.l" tok(T_OR_EQUAL); YY_BREAK case 103: YY_RULE_SETUP -#line 283 "scanner.l" +#line 279 "scanner.l" tok(T_XOR_EQUAL); YY_BREAK case 104: YY_RULE_SETUP -#line 284 "scanner.l" +#line 280 "scanner.l" tok(T_SL_EQUAL); YY_BREAK case 105: YY_RULE_SETUP -#line 285 "scanner.l" +#line 281 "scanner.l" tok(T_SR_EQUAL); YY_BREAK case 106: YY_RULE_SETUP -#line 286 "scanner.l" +#line 282 "scanner.l" tok(T_BOOLEAN_OR); YY_BREAK case 107: YY_RULE_SETUP -#line 287 "scanner.l" +#line 283 "scanner.l" tok(T_BOOLEAN_AND); YY_BREAK case 108: YY_RULE_SETUP -#line 288 "scanner.l" +#line 284 "scanner.l" tok(T_IS_EQUAL); YY_BREAK case 109: YY_RULE_SETUP -#line 289 "scanner.l" +#line 285 "scanner.l" tok(T_IS_NOT_EQUAL); YY_BREAK case 110: YY_RULE_SETUP -#line 290 "scanner.l" +#line 286 "scanner.l" tok(T_IS_IDENTICAL); YY_BREAK case 111: YY_RULE_SETUP -#line 291 "scanner.l" +#line 287 "scanner.l" tok(T_IS_NOT_IDENTICAL); YY_BREAK case 112: YY_RULE_SETUP -#line 292 "scanner.l" +#line 288 "scanner.l" tok(T_IS_SMALLER_OR_EQUAL); YY_BREAK case 113: YY_RULE_SETUP -#line 293 "scanner.l" +#line 289 "scanner.l" tok(T_IS_GREATER_OR_EQUAL); YY_BREAK case 114: YY_RULE_SETUP -#line 294 "scanner.l" +#line 290 "scanner.l" tok(T_SL); YY_BREAK case 115: YY_RULE_SETUP -#line 295 "scanner.l" +#line 291 "scanner.l" tok(T_SR); YY_BREAK case 116: YY_RULE_SETUP -#line 296 "scanner.l" +#line 292 "scanner.l" tok(T_INC); YY_BREAK case 117: YY_RULE_SETUP -#line 297 "scanner.l" +#line 293 "scanner.l" tok(T_DEC); YY_BREAK case 118: YY_RULE_SETUP -#line 298 "scanner.l" +#line 294 "scanner.l" tok(T_OBJECT_OPERATOR); YY_BREAK case 119: YY_RULE_SETUP -#line 299 "scanner.l" +#line 295 "scanner.l" tok(T_DOUBLE_ARROW); YY_BREAK case 120: YY_RULE_SETUP -#line 300 "scanner.l" +#line 296 "scanner.l" tok(T_PAAMAYIM_NEKUDOTAYIM); YY_BREAK case 121: YY_RULE_SETUP -#line 301 "scanner.l" +#line 297 "scanner.l" tok(T_NS_SEPARATOR); YY_BREAK @@ -4516,37 +4512,37 @@ case 122: YY_RULE_SETUP -#line 306 "scanner.l" +#line 302 "scanner.l" tok(T_INT_CAST); YY_BREAK case 123: YY_RULE_SETUP -#line 307 "scanner.l" +#line 303 "scanner.l" tok(T_DOUBLE_CAST); YY_BREAK case 124: YY_RULE_SETUP -#line 308 "scanner.l" +#line 304 "scanner.l" tok(T_STRING_CAST); YY_BREAK case 125: YY_RULE_SETUP -#line 309 "scanner.l" +#line 305 "scanner.l" tok(T_ARRAY_CAST); YY_BREAK case 126: YY_RULE_SETUP -#line 310 "scanner.l" +#line 306 "scanner.l" tok(T_OBJECT_CAST); YY_BREAK case 127: YY_RULE_SETUP -#line 311 "scanner.l" +#line 307 "scanner.l" tok(T_BOOL_CAST); YY_BREAK case 128: YY_RULE_SETUP -#line 312 "scanner.l" +#line 308 "scanner.l" tok(T_UNSET_CAST); YY_BREAK @@ -4555,28 +4551,28 @@ case 129: YY_RULE_SETUP -#line 318 "scanner.l" +#line 314 "scanner.l" tok(T_LNUMBER); YY_BREAK case 130: YY_RULE_SETUP -#line 319 "scanner.l" +#line 315 "scanner.l" tok(T_DNUMBER); YY_BREAK case 131: YY_RULE_SETUP -#line 320 "scanner.l" +#line 316 "scanner.l" tok(T_STRING); YY_BREAK case 132: YY_RULE_SETUP -#line 321 "scanner.l" +#line 317 "scanner.l" tok(T_VARIABLE); YY_BREAK case 133: /* rule 133 can match eol */ YY_RULE_SETUP -#line 322 "scanner.l" +#line 318 "scanner.l" { yy_scan_newlines(yytext, yyg); tok(T_CONSTANT_ENCAPSED_STRING); @@ -4585,7 +4581,7 @@ case 134: /* rule 134 can match eol */ YY_RULE_SETUP -#line 326 "scanner.l" +#line 322 "scanner.l" { yy_scan_newlines(yytext, yyg); tok(T_BACKTICKS_EXPR); @@ -4595,7 +4591,7 @@ /* (HERE|NOW)DOC's */ case 135: YY_RULE_SETUP -#line 333 "scanner.l" +#line 329 "scanner.l" { push_state(PHP_HEREDOC_START); @@ -4606,7 +4602,7 @@ case 136: YY_RULE_SETUP -#line 340 "scanner.l" +#line 336 "scanner.l" { // Create a new string for the heredoc label. Since we're using yymore above // yytext will actually start at the "<<<" and not the label. Use of @@ -4622,7 +4618,7 @@ YY_BREAK case 137: YY_RULE_SETUP -#line 352 "scanner.l" +#line 348 "scanner.l" { yyextra->heredoc_label = string(yytext + yyextra->heredoc_yyleng); set_state(PHP_HEREDOC_NSTART); @@ -4634,7 +4630,7 @@ case 138: /* rule 138 can match eol */ YY_RULE_SETUP -#line 359 "scanner.l" +#line 355 "scanner.l" { yyextra->heredoc_yyleng = yyleng; set_state(PHP_HEREDOC_NEWLINE); @@ -4645,7 +4641,7 @@ case 139: /* rule 139 can match eol */ YY_RULE_SETUP -#line 365 "scanner.l" +#line 361 "scanner.l" { if (strncmp( yyextra->heredoc_label.c_str(), @@ -4669,7 +4665,7 @@ YY_BREAK case 140: YY_RULE_SETUP -#line 385 "scanner.l" +#line 381 "scanner.l" { yyextra->heredoc_yyleng = yyleng; yymore(); @@ -4678,7 +4674,7 @@ case 141: /* rule 141 can match eol */ YY_RULE_SETUP -#line 389 "scanner.l" +#line 385 "scanner.l" { ++yyextra->lineno; yyextra->heredoc_yyleng = yyleng; @@ -4690,7 +4686,7 @@ case 142: /* rule 142 can match eol */ YY_RULE_SETUP -#line 397 "scanner.l" +#line 393 "scanner.l" { tok(yytext[0]); // fix unused function warnings @@ -4700,10 +4696,10 @@ YY_BREAK case 143: YY_RULE_SETUP -#line 404 "scanner.l" +#line 400 "scanner.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 4707 "scanner.lex.cpp" +#line 4703 "scanner.lex.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(PHP): case YY_STATE_EOF(PHP_HEREDOC_START): @@ -5910,7 +5906,7 @@ #define YYTABLES_NAME "yytables" -#line 403 "scanner.l" +#line 399 "scanner.l"