1 /* Generated by re2c 0.15.3 on Wed Dec 2 12:10:03 2015 */
2 #line 1 "../src/parse/lex.re"
3 #include "src/util/c99_stdint.h"
10 #include "src/codegen/output.h"
11 #include "src/conf/opt.h"
12 #include "src/conf/warn.h"
13 #include "src/globals.h"
14 #include "src/ir/regexp/encoding/enc.h"
15 #include "src/ir/regexp/regexp.h"
16 #include "src/ir/regexp/regexp_null.h"
17 #include "src/parse/code.h"
18 #include "src/parse/extop.h"
19 #include "src/parse/input.h"
20 #include "src/parse/scanner.h"
21 #include "src/parse/parser.h" // needed by "y.tab.h"
22 #include "src/parse/unescape.h"
23 #include "src/util/range.h"
24 #include "src/util/s_to_n32_unsafe.h"
27 extern YYSTYPE yylval;
29 #define YYCTYPE unsigned char
33 #define YYCTXMARKER ctx
34 #define YYFILL(n) { fill (n); }
39 // source code is in ASCII: pointers have type 'char *'
40 // but re2c makes an implicit assumption that YYCTYPE is unsigned
41 // when it generates comparisons
42 #line 42 "../src/parse/lex.re"
45 #line 62 "../src/parse/lex.re"
48 Scanner::ParseMode Scanner::echo()
50 bool ignore_eoc = false;
53 if (eof && cur == eof) // Catch EOF
61 #line 62 "src/parse/lex.cc"
64 unsigned int yyaccept = 0;
65 static const unsigned char yybm[] = {
66 128, 128, 128, 128, 128, 128, 128, 128,
67 128, 160, 0, 128, 128, 128, 128, 128,
68 128, 128, 128, 128, 128, 128, 128, 128,
69 128, 128, 128, 128, 128, 128, 128, 128,
70 160, 128, 0, 128, 128, 128, 128, 128,
71 128, 128, 128, 128, 128, 128, 128, 128,
72 192, 192, 192, 192, 192, 192, 192, 192,
73 192, 192, 128, 128, 128, 128, 128, 128,
74 128, 128, 128, 128, 128, 128, 128, 128,
75 128, 128, 128, 128, 128, 128, 128, 128,
76 128, 128, 128, 128, 128, 128, 128, 128,
77 128, 128, 128, 128, 0, 128, 128, 128,
78 128, 128, 128, 128, 128, 128, 128, 128,
79 128, 128, 128, 128, 128, 128, 128, 128,
80 128, 128, 128, 128, 128, 128, 128, 128,
81 128, 128, 128, 128, 128, 128, 128, 128,
82 128, 128, 128, 128, 128, 128, 128, 128,
83 128, 128, 128, 128, 128, 128, 128, 128,
84 128, 128, 128, 128, 128, 128, 128, 128,
85 128, 128, 128, 128, 128, 128, 128, 128,
86 128, 128, 128, 128, 128, 128, 128, 128,
87 128, 128, 128, 128, 128, 128, 128, 128,
88 128, 128, 128, 128, 128, 128, 128, 128,
89 128, 128, 128, 128, 128, 128, 128, 128,
90 128, 128, 128, 128, 128, 128, 128, 128,
91 128, 128, 128, 128, 128, 128, 128, 128,
92 128, 128, 128, 128, 128, 128, 128, 128,
93 128, 128, 128, 128, 128, 128, 128, 128,
94 128, 128, 128, 128, 128, 128, 128, 128,
95 128, 128, 128, 128, 128, 128, 128, 128,
96 128, 128, 128, 128, 128, 128, 128, 128,
97 128, 128, 128, 128, 128, 128, 128, 128,
99 if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
100 yych = (YYCTYPE)*YYCURSOR;
103 if (yych >= 0x01) goto yy4;
105 if (yych <= '\n') goto yy6;
106 if (yych <= '$') goto yy4;
111 if (yych <= ')') goto yy4;
114 if (yych == '/') goto yy10;
119 #line 202 "../src/parse/lex.re"
121 if (!ignore_eoc && opts->target == opt_t::CODE)
123 out.wraw(tok, tok_len () - 1);
124 // -1 so we don't write out the \0
131 #line 132 "src/parse/lex.cc"
135 #line 213 "../src/parse/lex.re"
139 #line 140 "src/parse/lex.cc"
142 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
143 if (yybm[0+yych] & 32) {
146 if (yych == '#') goto yy91;
148 #line 189 "../src/parse/lex.re"
154 else if (opts->target == opt_t::CODE)
156 out.wraw(tok, tok_len ());
162 #line 163 "src/parse/lex.cc"
164 yych = (YYCTYPE)*++YYCURSOR;
165 if (yych == '{') goto yy32;
168 yych = (YYCTYPE)*++YYCURSOR;
169 if (yych == '/') goto yy84;
173 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
174 if (yych != '*') goto yy5;
175 yych = (YYCTYPE)*++YYCURSOR;
176 if (yych == '!') goto yy13;
189 yych = (YYCTYPE)*++YYCURSOR;
200 yych = (YYCTYPE)*++YYCURSOR;
201 if (yych == 'y') goto yy74;
204 yych = (YYCTYPE)*++YYCURSOR;
205 if (yych == 'g') goto yy63;
208 yych = (YYCTYPE)*++YYCURSOR;
209 if (yych == 'e') goto yy50;
212 yych = (YYCTYPE)*++YYCURSOR;
213 if (yych == 'a') goto yy42;
216 yych = (YYCTYPE)*++YYCURSOR;
217 if (yych == 's') goto yy34;
220 yych = (YYCTYPE)*++YYCURSOR;
221 if (yych == 'e') goto yy20;
222 if (yych == 'u') goto yy21;
225 yych = (YYCTYPE)*++YYCURSOR;
226 if (yych == '2') goto yy31;
229 yych = (YYCTYPE)*++YYCURSOR;
230 if (yych != 'l') goto yy12;
231 yych = (YYCTYPE)*++YYCURSOR;
232 if (yych != 'e') goto yy12;
233 yych = (YYCTYPE)*++YYCURSOR;
234 if (yych != 's') goto yy12;
235 yych = (YYCTYPE)*++YYCURSOR;
236 if (yych != ':') goto yy12;
237 yych = (YYCTYPE)*++YYCURSOR;
238 if (yych != 'r') goto yy12;
239 yych = (YYCTYPE)*++YYCURSOR;
240 if (yych != 'e') goto yy12;
241 yych = (YYCTYPE)*++YYCURSOR;
242 if (yych != '2') goto yy12;
243 yych = (YYCTYPE)*++YYCURSOR;
244 if (yych != 'c') goto yy12;
246 #line 93 "../src/parse/lex.re"
250 opts.reset_mapCodeName ();
254 fatal("found 'rules:re2c' block without -r flag");
259 #line 260 "src/parse/lex.cc"
261 yych = (YYCTYPE)*++YYCURSOR;
262 if (yych != 'c') goto yy12;
265 #line 78 "../src/parse/lex.re"
269 fatal("found standard 're2c' block while using -r flag");
271 if (opts->target == opt_t::CODE)
273 const size_t lexeme_len = cur[-1] == '{'
275 : sizeof ("/*!re2c") - 1;
276 out.wraw(tok, tok_len () - lexeme_len);
281 #line 282 "src/parse/lex.cc"
283 yych = (YYCTYPE)*++YYCURSOR;
284 if (yych != 'e') goto yy12;
285 yych = (YYCTYPE)*++YYCURSOR;
286 if (yych != ':') goto yy12;
287 yych = (YYCTYPE)*++YYCURSOR;
288 if (yych != 'r') goto yy12;
289 yych = (YYCTYPE)*++YYCURSOR;
290 if (yych != 'e') goto yy12;
291 yych = (YYCTYPE)*++YYCURSOR;
292 if (yych != '2') goto yy12;
293 yych = (YYCTYPE)*++YYCURSOR;
294 if (yych != 'c') goto yy12;
296 #line 105 "../src/parse/lex.re"
300 fatal("found 'use:re2c' block without -r flag");
303 if (opts->target == opt_t::CODE)
305 const size_t lexeme_len = sizeof ("/*!use:re2c") - 1;
306 out.wraw(tok, tok_len () - lexeme_len);
311 #line 312 "src/parse/lex.cc"
313 yych = (YYCTYPE)*++YYCURSOR;
314 if (yych != 'x') goto yy12;
315 yych = (YYCTYPE)*++YYCURSOR;
316 if (yych != ':') goto yy12;
317 yych = (YYCTYPE)*++YYCURSOR;
318 if (yych != 'r') goto yy12;
319 yych = (YYCTYPE)*++YYCURSOR;
320 if (yych != 'e') goto yy12;
321 yych = (YYCTYPE)*++YYCURSOR;
322 if (yych != '2') goto yy12;
323 yych = (YYCTYPE)*++YYCURSOR;
324 if (yych != 'c') goto yy12;
326 #line 119 "../src/parse/lex.re"
328 if (opts->target != opt_t::DOT)
330 out.wdelay_yymaxfill ();
336 #line 337 "src/parse/lex.cc"
338 yych = (YYCTYPE)*++YYCURSOR;
339 if (yych != 't') goto yy12;
340 yych = (YYCTYPE)*++YYCURSOR;
341 if (yych != 's') goto yy12;
342 yych = (YYCTYPE)*++YYCURSOR;
343 if (yych != 't') goto yy12;
344 yych = (YYCTYPE)*++YYCURSOR;
345 if (yych != 'a') goto yy12;
346 yych = (YYCTYPE)*++YYCURSOR;
347 if (yych != 't') goto yy12;
348 yych = (YYCTYPE)*++YYCURSOR;
349 if (yych != 'e') goto yy12;
350 yych = (YYCTYPE)*++YYCURSOR;
351 if (yych != ':') goto yy12;
352 yych = (YYCTYPE)*++YYCURSOR;
353 if (yych != 'r') goto yy12;
354 yych = (YYCTYPE)*++YYCURSOR;
355 if (yych != 'e') goto yy12;
356 yych = (YYCTYPE)*++YYCURSOR;
357 if (yych != '2') goto yy12;
358 yych = (YYCTYPE)*++YYCURSOR;
359 if (yych != 'c') goto yy12;
361 #line 128 "../src/parse/lex.re"
364 out.wdelay_state_goto (opts->topIndent);
368 #line 369 "src/parse/lex.cc"
370 yych = (YYCTYPE)*++YYCURSOR;
371 if (yych != 'n') goto yy12;
372 yych = (YYCTYPE)*++YYCURSOR;
373 if (yych != 'o') goto yy12;
374 yych = (YYCTYPE)*++YYCURSOR;
375 if (yych != 'r') goto yy12;
376 yych = (YYCTYPE)*++YYCURSOR;
377 if (yych != 'e') goto yy12;
378 yych = (YYCTYPE)*++YYCURSOR;
379 if (yych != ':') goto yy12;
380 yych = (YYCTYPE)*++YYCURSOR;
381 if (yych != 'r') goto yy12;
382 yych = (YYCTYPE)*++YYCURSOR;
383 if (yych != 'e') goto yy12;
384 yych = (YYCTYPE)*++YYCURSOR;
385 if (yych != '2') goto yy12;
386 yych = (YYCTYPE)*++YYCURSOR;
387 if (yych != 'c') goto yy12;
389 #line 134 "../src/parse/lex.re"
395 #line 396 "src/parse/lex.cc"
397 yych = (YYCTYPE)*++YYCURSOR;
398 if (yych != 'p') goto yy12;
399 yych = (YYCTYPE)*++YYCURSOR;
400 if (yych != 'e') goto yy12;
401 yych = (YYCTYPE)*++YYCURSOR;
402 if (yych != 's') goto yy12;
403 yych = (YYCTYPE)*++YYCURSOR;
404 if (yych != ':') goto yy12;
405 yych = (YYCTYPE)*++YYCURSOR;
406 if (yych != 'r') goto yy12;
407 yych = (YYCTYPE)*++YYCURSOR;
408 if (yych != 'e') goto yy12;
409 yych = (YYCTYPE)*++YYCURSOR;
410 if (yych != '2') goto yy12;
411 yych = (YYCTYPE)*++YYCURSOR;
412 if (yych != 'c') goto yy12;
414 #line 139 "../src/parse/lex.re"
418 if (opts->target != opt_t::DOT)
420 out.wdelay_line_info ().ws("\n")
421 .wdelay_types ().ws("\n")
422 .wline_info (cline, get_fname ().c_str ());
426 #line 427 "src/parse/lex.cc"
429 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
430 if (yych == '\n') goto yy87;
431 if (yych == '\r') goto yy86;
433 #line 168 "../src/parse/lex.re"
439 out.ws("\n").wline_info (cline, get_fname ().c_str ());
444 else if (opts->target == opt_t::CODE)
446 out.wraw(tok, tok_len ());
451 #line 452 "src/parse/lex.cc"
453 yych = (YYCTYPE)*++YYCURSOR;
454 if (yych != '\n') goto yy12;
457 #line 150 "../src/parse/lex.re"
464 out.wline_info (cline, get_fname ().c_str ());
469 else if (opts->target == opt_t::CODE)
471 out.wraw(tok, tok_len ());
476 #line 477 "src/parse/lex.cc"
479 if (YYLIMIT <= YYCURSOR) YYFILL(1);
480 yych = (YYCTYPE)*YYCURSOR;
481 if (yybm[0+yych] & 32) {
484 if (yych != '#') goto yy12;
487 if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
488 yych = (YYCTYPE)*YYCURSOR;
490 if (yych == '\t') goto yy91;
493 if (yych <= ' ') goto yy91;
494 if (yych != 'l') goto yy12;
496 yych = (YYCTYPE)*++YYCURSOR;
497 if (yych != 'i') goto yy12;
498 yych = (YYCTYPE)*++YYCURSOR;
499 if (yych != 'n') goto yy12;
500 yych = (YYCTYPE)*++YYCURSOR;
501 if (yych != 'e') goto yy12;
502 yych = (YYCTYPE)*++YYCURSOR;
503 if (yych <= '0') goto yy98;
504 if (yych <= '9') goto yy12;
508 if (YYLIMIT <= YYCURSOR) YYFILL(1);
509 yych = (YYCTYPE)*YYCURSOR;
510 YYCTXMARKER = YYCURSOR;
513 if (yych == '\t') goto yy97;
516 if (yych <= ' ') goto yy97;
517 if (yych <= '0') goto yy12;
518 if (yych >= ':') goto yy12;
522 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
523 yych = (YYCTYPE)*YYCURSOR;
524 if (yybm[0+yych] & 64) {
528 if (yych <= 0x08) goto yy12;
529 if (yych <= '\t') goto yy101;
530 if (yych <= '\n') goto yy103;
533 if (yych <= '\r') goto yy105;
534 if (yych != ' ') goto yy12;
538 if (YYLIMIT <= YYCURSOR) YYFILL(1);
539 yych = (YYCTYPE)*YYCURSOR;
541 if (yych == '\t') goto yy101;
544 if (yych <= ' ') goto yy101;
545 if (yych == '"') goto yy106;
550 YYCURSOR = YYCTXMARKER;
551 #line 185 "../src/parse/lex.re"
556 #line 557 "src/parse/lex.cc"
558 yych = (YYCTYPE)*++YYCURSOR;
559 if (yych == '\n') goto yy103;
563 if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
564 yych = (YYCTYPE)*YYCURSOR;
565 if (yybm[0+yych] & 128) {
568 if (yych <= '\n') goto yy12;
569 if (yych <= '"') goto yy109;
571 if (YYLIMIT <= YYCURSOR) YYFILL(1);
572 yych = (YYCTYPE)*YYCURSOR;
573 if (yych == '\n') goto yy12;
577 if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy103;
578 if (yych == '\r') goto yy105;
581 #line 216 "../src/parse/lex.re"
595 case LEX_NORMAL: goto start;
596 case LEX_FLEX_NAME: goto flex_name;
601 #line 602 "src/parse/lex.cc"
604 unsigned int yyaccept = 0;
605 static const unsigned char yybm[] = {
606 128, 128, 128, 128, 128, 128, 128, 128,
607 128, 192, 0, 128, 128, 128, 128, 128,
608 128, 128, 128, 128, 128, 128, 128, 128,
609 128, 128, 128, 128, 128, 128, 128, 128,
610 192, 128, 0, 128, 128, 128, 128, 128,
611 128, 128, 128, 128, 128, 128, 128, 128,
612 176, 176, 176, 176, 176, 176, 176, 176,
613 176, 176, 128, 128, 128, 128, 128, 128,
614 128, 160, 160, 160, 160, 160, 160, 160,
615 160, 160, 160, 160, 160, 160, 160, 160,
616 160, 160, 160, 160, 160, 160, 160, 160,
617 160, 160, 160, 128, 0, 128, 128, 160,
618 128, 160, 160, 160, 160, 160, 160, 160,
619 160, 160, 160, 160, 160, 160, 160, 160,
620 160, 160, 160, 160, 160, 160, 160, 160,
621 160, 160, 160, 128, 128, 128, 128, 128,
622 128, 128, 128, 128, 128, 128, 128, 128,
623 128, 128, 128, 128, 128, 128, 128, 128,
624 128, 128, 128, 128, 128, 128, 128, 128,
625 128, 128, 128, 128, 128, 128, 128, 128,
626 128, 128, 128, 128, 128, 128, 128, 128,
627 128, 128, 128, 128, 128, 128, 128, 128,
628 128, 128, 128, 128, 128, 128, 128, 128,
629 128, 128, 128, 128, 128, 128, 128, 128,
630 128, 128, 128, 128, 128, 128, 128, 128,
631 128, 128, 128, 128, 128, 128, 128, 128,
632 128, 128, 128, 128, 128, 128, 128, 128,
633 128, 128, 128, 128, 128, 128, 128, 128,
634 128, 128, 128, 128, 128, 128, 128, 128,
635 128, 128, 128, 128, 128, 128, 128, 128,
636 128, 128, 128, 128, 128, 128, 128, 128,
637 128, 128, 128, 128, 128, 128, 128, 128,
639 if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
640 yych = (YYCTYPE)*YYCURSOR;
644 if (yych <= 0x08) goto yy112;
645 if (yych <= '\t') goto yy114;
646 if (yych <= '\n') goto yy116;
649 if (yych <= '\r') goto yy118;
651 if (yych <= ' ') goto yy114;
652 if (yych >= '"') goto yy119;
658 if (yych >= '%') goto yy121;
660 if (yych <= '&') goto yy112;
661 if (yych <= '\'') goto yy122;
666 if (yych <= '*') goto yy126;
669 if (yych <= ',') goto yy124;
670 if (yych >= '.') goto yy130;
678 if (yych <= '/') goto yy132;
681 if (yych <= ':') goto yy134;
682 if (yych <= ';') goto yy124;
687 if (yych <= '>') goto yy124;
690 if (yych <= '@') goto yy112;
691 if (yych <= 'Z') goto yy133;
698 if (yych <= '\\') goto yy124;
700 if (yych != '`') goto yy133;
704 if (yych <= 'r') goto yy138;
707 if (yych <= '{') goto yy139;
708 if (yych <= '|') goto yy124;
716 #line 388 "../src/parse/lex.re"
718 fatalf("unexpected character: '%c'", *tok);
721 #line 722 "src/parse/lex.cc"
724 yych = (YYCTYPE)*YYCURSOR;
727 #line 372 "../src/parse/lex.re"
731 #line 732 "src/parse/lex.cc"
734 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
736 if (yych == '\t') goto yy198;
738 if (yych <= ' ') goto yy198;
739 if (yych == '#') goto yy200;
742 #line 381 "../src/parse/lex.re"
744 if (cur == eof) return 0;
749 #line 750 "src/parse/lex.cc"
751 yych = (YYCTYPE)*++YYCURSOR;
752 if (yych == '\n') goto yy197;
756 #line 265 "../src/parse/lex.re"
757 { yylval.regexp = lex_str('"', opts->bCaseInsensitive || opts->bCaseInverted); return TOKEN_REGEXP; }
758 #line 759 "src/parse/lex.cc"
760 yych = (YYCTYPE)*++YYCURSOR;
761 if (yych == '}') goto yy195;
765 #line 264 "../src/parse/lex.re"
766 { yylval.regexp = lex_str('\'', opts->bCaseInsensitive || !opts->bCaseInverted); return TOKEN_REGEXP; }
767 #line 768 "src/parse/lex.cc"
771 #line 275 "../src/parse/lex.re"
775 #line 776 "src/parse/lex.cc"
778 if ((yych = (YYCTYPE)*YYCURSOR) == '/') goto yy195;
779 #line 279 "../src/parse/lex.re"
784 #line 785 "src/parse/lex.cc"
787 #line 283 "../src/parse/lex.re"
792 #line 793 "src/parse/lex.cc"
795 #line 367 "../src/parse/lex.re"
797 yylval.regexp = mkDot();
800 #line 801 "src/parse/lex.cc"
802 yych = (YYCTYPE)*++YYCURSOR;
803 if (yych == '*') goto yy191;
804 if (yych == '/') goto yy193;
807 yych = (YYCTYPE)*++YYCURSOR;
808 YYCTXMARKER = YYCURSOR;
811 yych = (YYCTYPE)*++YYCURSOR;
812 YYCTXMARKER = YYCURSOR;
813 if (yych == '=') goto yy187;
817 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
818 if (yych == '!') goto yy178;
819 if (yych == '>') goto yy180;
823 if ((yych = (YYCTYPE)*YYCURSOR) == '^') goto yy176;
824 #line 266 "../src/parse/lex.re"
825 { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
826 #line 827 "src/parse/lex.cc"
828 yych = (YYCTYPE)*++YYCURSOR;
829 YYCTXMARKER = YYCURSOR;
830 if (yych == 'e') goto yy166;
834 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
835 if (yybm[0+yych] & 16) {
839 if (yych == ',') goto yy146;
840 if (yych >= 'A') goto yy144;
843 if (yych >= '_') goto yy144;
845 if (yych <= '`') goto yy140;
846 if (yych <= 'z') goto yy144;
850 #line 235 "../src/parse/lex.re"
855 #line 856 "src/parse/lex.cc"
858 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
859 yych = (YYCTYPE)*YYCURSOR;
860 if (yybm[0+yych] & 16) {
865 if (yych >= ',') goto yy152;
867 if (yych <= '@') goto yy143;
868 if (yych <= 'Z') goto yy144;
872 if (yych != '`') goto yy144;
874 if (yych == '}') goto yy150;
894 if (YYLIMIT <= YYCURSOR) YYFILL(1);
895 yych = (YYCTYPE)*YYCURSOR;
896 if (yybm[0+yych] & 32) {
899 if (yych == '}') goto yy148;
904 #line 319 "../src/parse/lex.re"
906 fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
908 #line 909 "src/parse/lex.cc"
911 #line 323 "../src/parse/lex.re"
914 fatal("curly braces for names only allowed with -F switch");
916 yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
919 #line 920 "src/parse/lex.cc"
922 #line 288 "../src/parse/lex.re"
924 if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.extop.min))
926 fatal ("repetition count overflow");
928 yylval.extop.max = yylval.extop.min;
929 return TOKEN_CLOSESIZE;
931 #line 932 "src/parse/lex.cc"
934 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
935 if (yych <= '/') goto yy147;
936 if (yych <= '9') goto yy155;
937 if (yych != '}') goto yy147;
939 #line 310 "../src/parse/lex.re"
941 if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.extop.min))
943 fatal ("repetition lower bound overflow");
945 yylval.extop.max = std::numeric_limits<uint32_t>::max();
946 return TOKEN_CLOSESIZE;
948 #line 949 "src/parse/lex.cc"
951 if (YYLIMIT <= YYCURSOR) YYFILL(1);
952 yych = (YYCTYPE)*YYCURSOR;
953 if (yych <= '/') goto yy143;
954 if (yych <= '9') goto yy155;
955 if (yych != '}') goto yy143;
957 #line 297 "../src/parse/lex.re"
959 const char * p = strchr (tok, ',');
960 if (!s_to_u32_unsafe (tok + 1, p, yylval.extop.min))
962 fatal ("repetition lower bound overflow");
964 if (!s_to_u32_unsafe (p + 1, cur - 1, yylval.extop.max))
966 fatal ("repetition upper bound overflow");
968 return TOKEN_CLOSESIZE;
970 #line 971 "src/parse/lex.cc"
973 YYCURSOR = YYCTXMARKER;
974 #line 351 "../src/parse/lex.re"
977 yylval.str = new std::string (tok, tok_len());
981 const bool casing = opts->bCaseInsensitive || opts->bCaseInverted;
982 for (char *s = tok; s < cur; ++s) {
983 const uint32_t c = static_cast<uint8_t>(*s);
984 r = doCat(r, casing ? ichr(c) : schr(c));
986 yylval.regexp = r ? r : new NullOp;
990 #line 991 "src/parse/lex.cc"
992 yych = (YYCTYPE)*++YYCURSOR;
997 YYCURSOR = YYCTXMARKER;
998 #line 346 "../src/parse/lex.re"
1000 yylval.str = new std::string (tok, tok_len ());
1003 #line 1004 "src/parse/lex.cc"
1006 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1007 yych = (YYCTYPE)*YYCURSOR;
1008 YYCTXMARKER = YYCURSOR;
1012 if (yych == '\t') goto yy161;
1013 if (yych <= 0x1F) goto yy159;
1016 if (yych == ',') goto yy162;
1017 if (yych <= '/') goto yy159;
1022 if (yych <= '<') goto yy159;
1023 if (yych <= '>') goto yy162;
1024 if (yych <= '@') goto yy159;
1028 if (yych <= '^') goto yy159;
1031 if (yych <= '`') goto yy159;
1032 if (yych <= 'z') goto yy164;
1038 yych = (YYCTYPE)*++YYCURSOR;
1039 YYCTXMARKER = YYCURSOR;
1040 if (yych != '2') goto yy165;
1041 yych = (YYCTYPE)*++YYCURSOR;
1042 YYCTXMARKER = YYCURSOR;
1043 if (yych != 'c') goto yy165;
1044 yych = (YYCTYPE)*++YYCURSOR;
1045 YYCTXMARKER = YYCURSOR;
1046 if (yych != ':') goto yy165;
1048 #line 331 "../src/parse/lex.re"
1049 { lex_conf (); return TOKEN_CONF; }
1050 #line 1051 "src/parse/lex.cc"
1053 YYCURSOR = YYCTXMARKER;
1054 #line 333 "../src/parse/lex.re"
1056 yylval.str = new std::string (tok, tok_len ());
1059 lexer_state = LEX_FLEX_NAME;
1067 #line 1068 "src/parse/lex.cc"
1070 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1071 yych = (YYCTYPE)*YYCURSOR;
1073 if (yybm[0+yych] & 64) {
1076 if (yych == ',') goto yy175;
1077 if (yych <= '<') goto yy171;
1078 if (yych >= '?') goto yy171;
1080 yych = (YYCTYPE)*++YYCURSOR;
1084 #line 267 "../src/parse/lex.re"
1085 { yylval.regexp = lex_cls(true); return TOKEN_REGEXP; }
1086 #line 1087 "src/parse/lex.cc"
1089 #line 272 "../src/parse/lex.re"
1093 #line 1094 "src/parse/lex.cc"
1095 yych = (YYCTYPE)*++YYCURSOR;
1096 YYCTXMARKER = YYCURSOR;
1100 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1101 yych = (YYCTYPE)*YYCURSOR;
1105 if (yych <= 0x08) goto yy143;
1108 if (yych == ' ') goto yy181;
1113 if (yych <= ':') goto yy186;
1114 if (yych <= '<') goto yy143;
1117 if (yych != '{') goto yy143;
1122 YYCURSOR = YYCTXMARKER;
1123 #line 269 "../src/parse/lex.re"
1125 return TOKEN_NOCOND;
1127 #line 1128 "src/parse/lex.cc"
1129 yych = (YYCTYPE)*++YYCURSOR;
1130 if (yych == '>') goto yy183;
1133 yych = (YYCTYPE)*++YYCURSOR;
1134 if (yych == '=') goto yy183;
1138 if ((yych = (YYCTYPE)*YYCURSOR) == '>') goto yy189;
1139 #line 244 "../src/parse/lex.re"
1141 tok += 2; /* skip ":=" */
1145 #line 1146 "src/parse/lex.cc"
1148 YYCURSOR = YYCTXMARKER;
1149 #line 240 "../src/parse/lex.re"
1153 #line 1154 "src/parse/lex.cc"
1156 #line 253 "../src/parse/lex.re"
1161 #line 1162 "src/parse/lex.cc"
1164 #line 250 "../src/parse/lex.re"
1168 #line 1169 "src/parse/lex.cc"
1171 #line 259 "../src/parse/lex.re"
1176 #line 1177 "src/parse/lex.cc"
1179 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
1181 if (yych != '\t') goto yy117;
1183 if (yych <= ' ') goto yy198;
1184 if (yych == '#') goto yy200;
1189 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1190 yych = (YYCTYPE)*YYCURSOR;
1192 if (yych == '\t') goto yy198;
1195 if (yych <= ' ') goto yy198;
1196 if (yych != '#') goto yy143;
1200 if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
1201 yych = (YYCTYPE)*YYCURSOR;
1203 if (yych == '\t') goto yy200;
1206 if (yych <= ' ') goto yy200;
1207 if (yych != 'l') goto yy143;
1209 yych = (YYCTYPE)*++YYCURSOR;
1210 if (yych != 'i') goto yy143;
1211 yych = (YYCTYPE)*++YYCURSOR;
1212 if (yych != 'n') goto yy143;
1213 yych = (YYCTYPE)*++YYCURSOR;
1214 if (yych != 'e') goto yy143;
1215 yych = (YYCTYPE)*++YYCURSOR;
1216 if (yych <= '0') goto yy207;
1217 if (yych <= '9') goto yy143;
1221 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1222 yych = (YYCTYPE)*YYCURSOR;
1223 YYCTXMARKER = YYCURSOR;
1226 if (yych == '\t') goto yy206;
1229 if (yych <= ' ') goto yy206;
1230 if (yych <= '0') goto yy143;
1231 if (yych >= ':') goto yy143;
1235 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1236 yych = (YYCTYPE)*YYCURSOR;
1239 if (yych <= 0x08) goto yy143;
1241 if (yych <= '\n') goto yy212;
1242 if (yych <= '\f') goto yy143;
1247 if (yych <= 0x1F) goto yy143;
1249 if (yych <= '/') goto yy143;
1250 if (yych <= '9') goto yy208;
1256 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1257 yych = (YYCTYPE)*YYCURSOR;
1259 if (yych == '\t') goto yy210;
1262 if (yych <= ' ') goto yy210;
1263 if (yych == '"') goto yy215;
1268 YYCURSOR = YYCTXMARKER;
1269 #line 376 "../src/parse/lex.re"
1274 #line 1275 "src/parse/lex.cc"
1276 yych = (YYCTYPE)*++YYCURSOR;
1277 if (yych == '\n') goto yy212;
1281 if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
1282 yych = (YYCTYPE)*YYCURSOR;
1283 if (yybm[0+yych] & 128) {
1286 if (yych <= '\n') goto yy143;
1287 if (yych <= '"') goto yy218;
1289 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1290 yych = (YYCTYPE)*YYCURSOR;
1291 if (yych == '\n') goto yy143;
1294 yych = (YYCTYPE)*++YYCURSOR;
1295 if (yych == '\n') goto yy212;
1296 if (yych == '\r') goto yy214;
1300 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1301 yych = (YYCTYPE)*YYCURSOR;
1303 if (yych == '\t') goto yy219;
1304 if (yych == ' ') goto yy219;
1307 #line 392 "../src/parse/lex.re"
1312 #line 1313 "src/parse/lex.cc"
1315 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1316 yych = (YYCTYPE)*YYCURSOR;
1317 if (yych == '\n') goto yy225;
1318 if (yych == '\r') goto yy227;
1321 #line 403 "../src/parse/lex.re"
1326 #line 1327 "src/parse/lex.cc"
1330 #line 397 "../src/parse/lex.re"
1333 lexer_state = LEX_NORMAL;
1334 return TOKEN_FID_END;
1336 #line 1337 "src/parse/lex.cc"
1338 yych = (YYCTYPE)*++YYCURSOR;
1339 if (yych != '\n') goto yy224;
1341 yych = (YYCTYPE)*YYCURSOR;
1344 #line 407 "../src/parse/lex.re"
1349 #line 1350 "src/parse/lex.cc"
1352 unsigned int yyaccept = 0;
1353 static const unsigned char yybm[] = {
1354 48, 48, 48, 48, 48, 48, 48, 48,
1355 48, 112, 0, 48, 48, 48, 48, 48,
1356 48, 48, 48, 48, 48, 48, 48, 48,
1357 48, 48, 48, 48, 48, 48, 48, 48,
1358 112, 48, 16, 48, 48, 48, 48, 32,
1359 48, 48, 48, 48, 48, 48, 48, 48,
1360 176, 176, 176, 176, 176, 176, 176, 176,
1361 176, 176, 48, 48, 48, 48, 48, 48,
1362 48, 48, 48, 48, 48, 48, 48, 48,
1363 48, 48, 48, 48, 48, 48, 48, 48,
1364 48, 48, 48, 48, 48, 48, 48, 48,
1365 48, 48, 48, 48, 0, 48, 48, 48,
1366 48, 48, 48, 48, 48, 48, 48, 48,
1367 48, 48, 48, 48, 48, 48, 48, 48,
1368 48, 48, 48, 48, 48, 48, 48, 48,
1369 48, 48, 48, 48, 48, 48, 48, 48,
1370 48, 48, 48, 48, 48, 48, 48, 48,
1371 48, 48, 48, 48, 48, 48, 48, 48,
1372 48, 48, 48, 48, 48, 48, 48, 48,
1373 48, 48, 48, 48, 48, 48, 48, 48,
1374 48, 48, 48, 48, 48, 48, 48, 48,
1375 48, 48, 48, 48, 48, 48, 48, 48,
1376 48, 48, 48, 48, 48, 48, 48, 48,
1377 48, 48, 48, 48, 48, 48, 48, 48,
1378 48, 48, 48, 48, 48, 48, 48, 48,
1379 48, 48, 48, 48, 48, 48, 48, 48,
1380 48, 48, 48, 48, 48, 48, 48, 48,
1381 48, 48, 48, 48, 48, 48, 48, 48,
1382 48, 48, 48, 48, 48, 48, 48, 48,
1383 48, 48, 48, 48, 48, 48, 48, 48,
1384 48, 48, 48, 48, 48, 48, 48, 48,
1385 48, 48, 48, 48, 48, 48, 48, 48,
1387 if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
1388 yych = (YYCTYPE)*YYCURSOR;
1391 if (yych <= 0x00) goto yy231;
1392 if (yych <= '\t') goto yy233;
1395 if (yych == '"') goto yy237;
1400 if (yych <= '\'') goto yy238;
1401 if (yych <= 'z') goto yy233;
1404 if (yych == '}') goto yy241;
1410 #line 470 "../src/parse/lex.re"
1416 fatal("missing '}'");
1422 #line 1423 "src/parse/lex.cc"
1426 #line 484 "../src/parse/lex.re"
1430 #line 1431 "src/parse/lex.cc"
1433 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
1434 YYCTXMARKER = YYCURSOR;
1437 if (yych >= '\t') goto yy252;
1439 if (yych <= '\n') goto yy254;
1440 if (yych >= '\r') goto yy254;
1444 if (yych >= ' ') goto yy252;
1446 if (yych == '#') goto yy255;
1450 #line 451 "../src/parse/lex.re"
1454 tok += strspn(tok, " \t\r\n");
1455 while (cur > tok && strchr(" \t\r\n", cur[-1]))
1459 yylval.code = new Code (tok, tok_len (), get_fname (), tline);
1462 else if (cur == eof)
1464 fatal("missing '}'");
1470 #line 1471 "src/parse/lex.cc"
1473 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
1474 if (yych == '\n') goto yy234;
1478 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
1479 if (yych == '\n') goto yy234;
1483 #line 423 "../src/parse/lex.re"
1487 fatal("Curly braces are not allowed after ':='");
1495 #line 1496 "src/parse/lex.cc"
1498 #line 411 "../src/parse/lex.re"
1502 fatal("Curly braces are not allowed after ':='");
1504 else if (--depth == 0)
1506 yylval.code = new Code (tok, tok_len (), get_fname (), tline);
1511 #line 1512 "src/parse/lex.cc"
1514 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1515 yych = (YYCTYPE)*YYCURSOR;
1517 if (yybm[0+yych] & 16) {
1520 if (yych <= '\n') goto yy245;
1521 if (yych <= '\'') goto yy247;
1524 YYCURSOR = YYMARKER;
1525 if (yyaccept <= 1) {
1526 if (yyaccept == 0) {
1536 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1537 yych = (YYCTYPE)*YYCURSOR;
1538 if (yych == '\n') goto yy245;
1542 #line 481 "../src/parse/lex.re"
1546 #line 1547 "src/parse/lex.cc"
1549 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1550 yych = (YYCTYPE)*YYCURSOR;
1552 if (yybm[0+yych] & 32) {
1555 if (yych <= '\n') goto yy245;
1556 if (yych <= '"') goto yy247;
1558 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1559 yych = (YYCTYPE)*YYCURSOR;
1560 if (yych == '\n') goto yy245;
1564 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
1566 if (yych == '\t') goto yy274;
1568 if (yych <= ' ') goto yy274;
1569 if (yych == '#') goto yy255;
1572 YYCURSOR = YYCTXMARKER;
1573 #line 438 "../src/parse/lex.re"
1579 else if (cur == eof)
1581 fatal("missing '}'");
1587 #line 1588 "src/parse/lex.cc"
1589 yych = (YYCTYPE)*++YYCURSOR;
1593 if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
1594 yych = (YYCTYPE)*YYCURSOR;
1595 if (yybm[0+yych] & 64) {
1598 if (yych != 'l') goto yy245;
1599 yych = (YYCTYPE)*++YYCURSOR;
1600 if (yych != 'i') goto yy245;
1601 yych = (YYCTYPE)*++YYCURSOR;
1602 if (yych != 'n') goto yy245;
1603 yych = (YYCTYPE)*++YYCURSOR;
1604 if (yych != 'e') goto yy245;
1605 yych = (YYCTYPE)*++YYCURSOR;
1606 if (yych <= '0') goto yy262;
1607 if (yych <= '9') goto yy245;
1611 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1612 yych = (YYCTYPE)*YYCURSOR;
1613 YYCTXMARKER = YYCURSOR;
1616 if (yych == '\t') goto yy261;
1619 if (yych <= ' ') goto yy261;
1620 if (yych <= '0') goto yy245;
1621 if (yych >= ':') goto yy245;
1625 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1626 yych = (YYCTYPE)*YYCURSOR;
1627 if (yybm[0+yych] & 128) {
1631 if (yych <= 0x08) goto yy245;
1632 if (yych <= '\t') goto yy265;
1633 if (yych <= '\n') goto yy267;
1636 if (yych <= '\r') goto yy269;
1637 if (yych != ' ') goto yy245;
1641 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1642 yych = (YYCTYPE)*YYCURSOR;
1644 if (yych == '\t') goto yy265;
1647 if (yych <= ' ') goto yy265;
1648 if (yych == '"') goto yy270;
1653 YYCURSOR = YYCTXMARKER;
1654 #line 434 "../src/parse/lex.re"
1659 #line 1660 "src/parse/lex.cc"
1661 yych = (YYCTYPE)*++YYCURSOR;
1662 if (yych == '\n') goto yy267;
1666 if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
1667 yych = (YYCTYPE)*YYCURSOR;
1669 if (yych == '\n') goto yy245;
1672 if (yych <= '"') goto yy273;
1673 if (yych != '\\') goto yy270;
1676 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1677 yych = (YYCTYPE)*YYCURSOR;
1678 if (yych == '\n') goto yy245;
1681 yych = (YYCTYPE)*++YYCURSOR;
1682 if (yych == '\n') goto yy267;
1683 if (yych == '\r') goto yy269;
1687 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1688 yych = (YYCTYPE)*YYCURSOR;
1690 if (yych == '\t') goto yy274;
1693 if (yych <= ' ') goto yy274;
1694 if (yych == '#') goto yy255;
1698 #line 487 "../src/parse/lex.re"
1703 #line 1704 "src/parse/lex.cc"
1706 static const unsigned char yybm[] = {
1707 128, 128, 128, 128, 128, 128, 128, 128,
1708 128, 160, 0, 128, 128, 128, 128, 128,
1709 128, 128, 128, 128, 128, 128, 128, 128,
1710 128, 128, 128, 128, 128, 128, 128, 128,
1711 160, 128, 0, 128, 128, 128, 128, 128,
1712 128, 128, 128, 128, 128, 128, 128, 128,
1713 192, 192, 192, 192, 192, 192, 192, 192,
1714 192, 192, 128, 128, 128, 128, 128, 128,
1715 128, 128, 128, 128, 128, 128, 128, 128,
1716 128, 128, 128, 128, 128, 128, 128, 128,
1717 128, 128, 128, 128, 128, 128, 128, 128,
1718 128, 128, 128, 128, 0, 128, 128, 128,
1719 128, 128, 128, 128, 128, 128, 128, 128,
1720 128, 128, 128, 128, 128, 128, 128, 128,
1721 128, 128, 128, 128, 128, 128, 128, 128,
1722 128, 128, 128, 128, 128, 128, 128, 128,
1723 128, 128, 128, 128, 128, 128, 128, 128,
1724 128, 128, 128, 128, 128, 128, 128, 128,
1725 128, 128, 128, 128, 128, 128, 128, 128,
1726 128, 128, 128, 128, 128, 128, 128, 128,
1727 128, 128, 128, 128, 128, 128, 128, 128,
1728 128, 128, 128, 128, 128, 128, 128, 128,
1729 128, 128, 128, 128, 128, 128, 128, 128,
1730 128, 128, 128, 128, 128, 128, 128, 128,
1731 128, 128, 128, 128, 128, 128, 128, 128,
1732 128, 128, 128, 128, 128, 128, 128, 128,
1733 128, 128, 128, 128, 128, 128, 128, 128,
1734 128, 128, 128, 128, 128, 128, 128, 128,
1735 128, 128, 128, 128, 128, 128, 128, 128,
1736 128, 128, 128, 128, 128, 128, 128, 128,
1737 128, 128, 128, 128, 128, 128, 128, 128,
1738 128, 128, 128, 128, 128, 128, 128, 128,
1740 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1741 yych = (YYCTYPE)*YYCURSOR;
1743 if (yych == '\n') goto yy280;
1745 if (yych <= '*') goto yy282;
1746 if (yych == '/') goto yy283;
1750 #line 519 "../src/parse/lex.re"
1758 #line 1759 "src/parse/lex.cc"
1760 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
1761 if (yybm[0+yych] & 32) {
1764 if (yych == '#') goto yy291;
1766 #line 510 "../src/parse/lex.re"
1776 #line 1777 "src/parse/lex.cc"
1778 yych = (YYCTYPE)*++YYCURSOR;
1779 if (yych == '/') goto yy286;
1782 yych = (YYCTYPE)*++YYCURSOR;
1783 if (yych != '*') goto yy279;
1785 #line 501 "../src/parse/lex.re"
1788 fatal("ambiguous /* found");
1791 #line 1792 "src/parse/lex.cc"
1794 #line 491 "../src/parse/lex.re"
1805 #line 1806 "src/parse/lex.cc"
1808 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1809 yych = (YYCTYPE)*YYCURSOR;
1810 if (yybm[0+yych] & 32) {
1813 if (yych == '#') goto yy291;
1815 YYCURSOR = YYMARKER;
1819 if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
1820 yych = (YYCTYPE)*YYCURSOR;
1822 if (yych == '\t') goto yy291;
1825 if (yych <= ' ') goto yy291;
1826 if (yych != 'l') goto yy290;
1828 yych = (YYCTYPE)*++YYCURSOR;
1829 if (yych != 'i') goto yy290;
1830 yych = (YYCTYPE)*++YYCURSOR;
1831 if (yych != 'n') goto yy290;
1832 yych = (YYCTYPE)*++YYCURSOR;
1833 if (yych != 'e') goto yy290;
1834 yych = (YYCTYPE)*++YYCURSOR;
1835 if (yych <= '0') goto yy298;
1836 if (yych <= '9') goto yy290;
1840 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1841 yych = (YYCTYPE)*YYCURSOR;
1842 YYCTXMARKER = YYCURSOR;
1845 if (yych == '\t') goto yy297;
1848 if (yych <= ' ') goto yy297;
1849 if (yych <= '0') goto yy290;
1850 if (yych >= ':') goto yy290;
1854 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1855 yych = (YYCTYPE)*YYCURSOR;
1856 if (yybm[0+yych] & 64) {
1860 if (yych <= 0x08) goto yy290;
1861 if (yych <= '\t') goto yy301;
1862 if (yych <= '\n') goto yy303;
1865 if (yych <= '\r') goto yy305;
1866 if (yych != ' ') goto yy290;
1870 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1871 yych = (YYCTYPE)*YYCURSOR;
1873 if (yych == '\t') goto yy301;
1876 if (yych <= ' ') goto yy301;
1877 if (yych == '"') goto yy306;
1882 YYCURSOR = YYCTXMARKER;
1883 #line 506 "../src/parse/lex.re"
1888 #line 1889 "src/parse/lex.cc"
1890 yych = (YYCTYPE)*++YYCURSOR;
1891 if (yych == '\n') goto yy303;
1895 if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
1896 yych = (YYCTYPE)*YYCURSOR;
1897 if (yybm[0+yych] & 128) {
1900 if (yych <= '\n') goto yy290;
1901 if (yych <= '"') goto yy309;
1903 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1904 yych = (YYCTYPE)*YYCURSOR;
1905 if (yych == '\n') goto yy290;
1909 if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy303;
1910 if (yych == '\r') goto yy305;
1913 #line 526 "../src/parse/lex.re"
1918 #line 1919 "src/parse/lex.cc"
1921 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1922 yych = (YYCTYPE)*YYCURSOR;
1923 if (yych == '\n') goto yy314;
1925 #line 537 "../src/parse/lex.re"
1931 #line 1932 "src/parse/lex.cc"
1934 #line 530 "../src/parse/lex.re"
1942 #line 1943 "src/parse/lex.cc"
1944 #line 542 "../src/parse/lex.re"
1948 static void escape (std::string & dest, const std::string & src)
1951 size_t l = dest.length();
1952 for (size_t p = 0; p < l; ++p)
1954 if (dest[p] == '\\')
1956 dest.insert(++p, "\\");
1962 RegExp *Scanner::lex_cls(bool neg)
1964 Range *r = NULL, *s;
1968 #line 1969 "src/parse/lex.cc"
1971 if (YYLIMIT <= YYCURSOR) YYFILL(1);
1972 yych = (YYCTYPE)*YYCURSOR;
1973 if (yych == ']') goto yy319;
1974 #line 566 "../src/parse/lex.re"
1975 { l = lex_cls_chr(); goto snd; }
1976 #line 1977 "src/parse/lex.cc"
1979 #line 565 "../src/parse/lex.re"
1981 #line 1982 "src/parse/lex.cc"
1983 #line 567 "../src/parse/lex.re"
1987 #line 1988 "src/parse/lex.cc"
1990 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
1991 yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
1992 if (yych == '-') goto yy324;
1994 #line 570 "../src/parse/lex.re"
1995 { u = l; goto add; }
1996 #line 1997 "src/parse/lex.cc"
1998 yych = (YYCTYPE)*++YYCURSOR;
1999 YYCTXMARKER = YYCURSOR;
2000 if (yych != ']') goto yy326;
2001 YYCURSOR = YYMARKER;
2005 YYCURSOR = YYCTXMARKER;
2006 #line 571 "../src/parse/lex.re"
2010 warn.swapped_range(get_line(), l, u);
2015 #line 2016 "src/parse/lex.cc"
2017 #line 579 "../src/parse/lex.re"
2020 if (!(s = opts->encoding.encodeRange(l, u))) {
2021 fatalf ("Bad code point range: '0x%X - 0x%X'", l, u);
2023 r = Range::add(r, s);
2027 r = Range::sub(opts->encoding.fullRange(), r);
2032 uint32_t Scanner::lex_cls_chr()
2036 #line 2037 "src/parse/lex.cc"
2039 unsigned int yyaccept = 0;
2040 if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
2041 yych = (YYCTYPE)*YYCURSOR;
2042 if (yych == '\n') goto yy332;
2043 if (yych == '\\') goto yy334;
2045 #line 602 "../src/parse/lex.re"
2046 { return static_cast<uint8_t>(tok[0]); }
2047 #line 2048 "src/parse/lex.cc"
2050 #line 597 "../src/parse/lex.re"
2051 { fatal ((tok - pos) - tchar, "syntax error"); }
2052 #line 2053 "src/parse/lex.cc"
2055 if ((yych = (YYCTYPE)*YYCURSOR) <= '`') {
2058 if (yych != '\n') goto yy336;
2060 if (yych <= '-') goto yy338;
2061 if (yych <= '/') goto yy336;
2062 if (yych <= '3') goto yy340;
2067 if (yych == 'U') goto yy343;
2068 if (yych <= 'W') goto yy336;
2071 if (yych <= '[') goto yy336;
2072 if (yych <= '\\') goto yy346;
2073 if (yych <= ']') goto yy348;
2080 if (yych <= 'a') goto yy350;
2081 if (yych <= 'b') goto yy352;
2084 if (yych <= 'f') goto yy354;
2085 if (yych == 'n') goto yy356;
2090 if (yych <= 'r') goto yy358;
2091 if (yych <= 's') goto yy336;
2092 if (yych <= 't') goto yy360;
2095 if (yych <= 'v') goto yy362;
2096 if (yych == 'x') goto yy364;
2101 #line 600 "../src/parse/lex.re"
2102 { fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
2103 #line 2104 "src/parse/lex.cc"
2106 #line 615 "../src/parse/lex.re"
2108 warn.useless_escape(tline, tok - pos, tok[1]);
2109 return static_cast<uint8_t>(tok[1]);
2111 #line 2112 "src/parse/lex.cc"
2114 #line 613 "../src/parse/lex.re"
2115 { return static_cast<uint8_t>('-'); }
2116 #line 2117 "src/parse/lex.cc"
2119 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2120 if (yych <= '/') goto yy341;
2121 if (yych <= '7') goto yy379;
2123 #line 599 "../src/parse/lex.re"
2124 { fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
2125 #line 2126 "src/parse/lex.cc"
2127 yych = (YYCTYPE)*++YYCURSOR;
2131 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2133 if (yych <= '/') goto yy344;
2134 if (yych <= '9') goto yy372;
2136 if (yych <= 'F') goto yy372;
2137 if (yych <= '`') goto yy344;
2138 if (yych <= 'f') goto yy372;
2141 #line 598 "../src/parse/lex.re"
2142 { fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
2143 #line 2144 "src/parse/lex.cc"
2146 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2148 if (yych <= '/') goto yy344;
2149 if (yych <= '9') goto yy369;
2152 if (yych <= 'F') goto yy369;
2153 if (yych <= '`') goto yy344;
2154 if (yych <= 'f') goto yy369;
2159 #line 612 "../src/parse/lex.re"
2160 { return static_cast<uint8_t>('\\'); }
2161 #line 2162 "src/parse/lex.cc"
2164 #line 614 "../src/parse/lex.re"
2165 { return static_cast<uint8_t>(']'); }
2166 #line 2167 "src/parse/lex.cc"
2169 #line 605 "../src/parse/lex.re"
2170 { return static_cast<uint8_t>('\a'); }
2171 #line 2172 "src/parse/lex.cc"
2174 #line 606 "../src/parse/lex.re"
2175 { return static_cast<uint8_t>('\b'); }
2176 #line 2177 "src/parse/lex.cc"
2179 #line 607 "../src/parse/lex.re"
2180 { return static_cast<uint8_t>('\f'); }
2181 #line 2182 "src/parse/lex.cc"
2184 #line 608 "../src/parse/lex.re"
2185 { return static_cast<uint8_t>('\n'); }
2186 #line 2187 "src/parse/lex.cc"
2189 #line 609 "../src/parse/lex.re"
2190 { return static_cast<uint8_t>('\r'); }
2191 #line 2192 "src/parse/lex.cc"
2194 #line 610 "../src/parse/lex.re"
2195 { return static_cast<uint8_t>('\t'); }
2196 #line 2197 "src/parse/lex.cc"
2199 #line 611 "../src/parse/lex.re"
2200 { return static_cast<uint8_t>('\v'); }
2201 #line 2202 "src/parse/lex.cc"
2204 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2206 if (yych <= '/') goto yy344;
2207 if (yych >= ':') goto yy344;
2209 if (yych <= 'F') goto yy365;
2210 if (yych <= '`') goto yy344;
2211 if (yych >= 'g') goto yy344;
2214 yych = (YYCTYPE)*++YYCURSOR;
2216 if (yych <= '/') goto yy366;
2217 if (yych <= '9') goto yy367;
2219 if (yych <= 'F') goto yy367;
2220 if (yych <= '`') goto yy366;
2221 if (yych <= 'f') goto yy367;
2224 YYCURSOR = YYMARKER;
2225 if (yyaccept == 0) {
2232 #line 603 "../src/parse/lex.re"
2233 { return unesc_hex(tok, cur); }
2234 #line 2235 "src/parse/lex.cc"
2236 yych = (YYCTYPE)*++YYCURSOR;
2238 if (yych <= '/') goto yy366;
2239 if (yych >= ':') goto yy366;
2241 if (yych <= 'F') goto yy370;
2242 if (yych <= '`') goto yy366;
2243 if (yych >= 'g') goto yy366;
2246 yych = (YYCTYPE)*++YYCURSOR;
2248 if (yych <= '/') goto yy366;
2249 if (yych >= ':') goto yy366;
2251 if (yych <= 'F') goto yy371;
2252 if (yych <= '`') goto yy366;
2253 if (yych >= 'g') goto yy366;
2256 yych = (YYCTYPE)*++YYCURSOR;
2258 if (yych <= '/') goto yy366;
2259 if (yych <= '9') goto yy367;
2262 if (yych <= 'F') goto yy367;
2263 if (yych <= '`') goto yy366;
2264 if (yych <= 'f') goto yy367;
2268 yych = (YYCTYPE)*++YYCURSOR;
2270 if (yych <= '/') goto yy366;
2271 if (yych >= ':') goto yy366;
2273 if (yych <= 'F') goto yy373;
2274 if (yych <= '`') goto yy366;
2275 if (yych >= 'g') goto yy366;
2278 yych = (YYCTYPE)*++YYCURSOR;
2280 if (yych <= '/') goto yy366;
2281 if (yych >= ':') goto yy366;
2283 if (yych <= 'F') goto yy374;
2284 if (yych <= '`') goto yy366;
2285 if (yych >= 'g') goto yy366;
2288 yych = (YYCTYPE)*++YYCURSOR;
2290 if (yych <= '/') goto yy366;
2291 if (yych >= ':') goto yy366;
2293 if (yych <= 'F') goto yy375;
2294 if (yych <= '`') goto yy366;
2295 if (yych >= 'g') goto yy366;
2298 yych = (YYCTYPE)*++YYCURSOR;
2300 if (yych <= '/') goto yy366;
2301 if (yych >= ':') goto yy366;
2303 if (yych <= 'F') goto yy376;
2304 if (yych <= '`') goto yy366;
2305 if (yych >= 'g') goto yy366;
2308 yych = (YYCTYPE)*++YYCURSOR;
2310 if (yych <= '/') goto yy366;
2311 if (yych >= ':') goto yy366;
2313 if (yych <= 'F') goto yy377;
2314 if (yych <= '`') goto yy366;
2315 if (yych >= 'g') goto yy366;
2318 yych = (YYCTYPE)*++YYCURSOR;
2320 if (yych <= '/') goto yy366;
2321 if (yych >= ':') goto yy366;
2323 if (yych <= 'F') goto yy378;
2324 if (yych <= '`') goto yy366;
2325 if (yych >= 'g') goto yy366;
2328 yych = (YYCTYPE)*++YYCURSOR;
2330 if (yych <= '/') goto yy366;
2331 if (yych <= '9') goto yy367;
2334 if (yych <= 'F') goto yy367;
2335 if (yych <= '`') goto yy366;
2336 if (yych <= 'f') goto yy367;
2340 yych = (YYCTYPE)*++YYCURSOR;
2341 if (yych <= '/') goto yy366;
2342 if (yych >= '8') goto yy366;
2344 #line 604 "../src/parse/lex.re"
2345 { return unesc_oct(tok, cur); }
2346 #line 2347 "src/parse/lex.cc"
2348 #line 619 "../src/parse/lex.re"
2352 uint32_t Scanner::lex_str_chr(char quote, bool &end)
2357 #line 2358 "src/parse/lex.cc"
2360 unsigned int yyaccept = 0;
2361 if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
2362 yych = (YYCTYPE)*YYCURSOR;
2363 if (yych == '\n') goto yy386;
2364 if (yych == '\\') goto yy388;
2366 #line 632 "../src/parse/lex.re"
2368 end = tok[0] == quote;
2369 return static_cast<uint8_t>(tok[0]);
2371 #line 2372 "src/parse/lex.cc"
2374 #line 627 "../src/parse/lex.re"
2375 { fatal ((tok - pos) - tchar, "syntax error"); }
2376 #line 2377 "src/parse/lex.cc"
2379 if ((yych = (YYCTYPE)*YYCURSOR) <= 'a') {
2382 if (yych != '\n') goto yy390;
2384 if (yych <= '3') goto yy392;
2385 if (yych <= '7') goto yy394;
2390 if (yych <= 'U') goto yy395;
2391 if (yych <= 'W') goto yy390;
2394 if (yych == '\\') goto yy398;
2395 if (yych <= '`') goto yy390;
2402 if (yych <= 'b') goto yy402;
2403 if (yych <= 'e') goto yy390;
2406 if (yych == 'n') goto yy406;
2407 if (yych <= 'q') goto yy390;
2412 if (yych <= 's') goto yy390;
2413 if (yych <= 't') goto yy410;
2416 if (yych <= 'v') goto yy412;
2417 if (yych == 'x') goto yy414;
2422 #line 630 "../src/parse/lex.re"
2423 { fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
2424 #line 2425 "src/parse/lex.cc"
2427 #line 646 "../src/parse/lex.re"
2429 if (tok[1] != quote) {
2430 warn.useless_escape(tline, tok - pos, tok[1]);
2432 return static_cast<uint8_t>(tok[1]);
2434 #line 2435 "src/parse/lex.cc"
2437 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2438 if (yych <= '/') goto yy393;
2439 if (yych <= '7') goto yy429;
2441 #line 629 "../src/parse/lex.re"
2442 { fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
2443 #line 2444 "src/parse/lex.cc"
2445 yych = (YYCTYPE)*++YYCURSOR;
2449 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2451 if (yych <= '/') goto yy396;
2452 if (yych <= '9') goto yy422;
2454 if (yych <= 'F') goto yy422;
2455 if (yych <= '`') goto yy396;
2456 if (yych <= 'f') goto yy422;
2459 #line 628 "../src/parse/lex.re"
2460 { fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
2461 #line 2462 "src/parse/lex.cc"
2464 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2466 if (yych <= '/') goto yy396;
2467 if (yych <= '9') goto yy419;
2470 if (yych <= 'F') goto yy419;
2471 if (yych <= '`') goto yy396;
2472 if (yych <= 'f') goto yy419;
2477 #line 645 "../src/parse/lex.re"
2478 { return static_cast<uint8_t>('\\'); }
2479 #line 2480 "src/parse/lex.cc"
2482 #line 638 "../src/parse/lex.re"
2483 { return static_cast<uint8_t>('\a'); }
2484 #line 2485 "src/parse/lex.cc"
2487 #line 639 "../src/parse/lex.re"
2488 { return static_cast<uint8_t>('\b'); }
2489 #line 2490 "src/parse/lex.cc"
2492 #line 640 "../src/parse/lex.re"
2493 { return static_cast<uint8_t>('\f'); }
2494 #line 2495 "src/parse/lex.cc"
2497 #line 641 "../src/parse/lex.re"
2498 { return static_cast<uint8_t>('\n'); }
2499 #line 2500 "src/parse/lex.cc"
2502 #line 642 "../src/parse/lex.re"
2503 { return static_cast<uint8_t>('\r'); }
2504 #line 2505 "src/parse/lex.cc"
2507 #line 643 "../src/parse/lex.re"
2508 { return static_cast<uint8_t>('\t'); }
2509 #line 2510 "src/parse/lex.cc"
2512 #line 644 "../src/parse/lex.re"
2513 { return static_cast<uint8_t>('\v'); }
2514 #line 2515 "src/parse/lex.cc"
2517 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2519 if (yych <= '/') goto yy396;
2520 if (yych >= ':') goto yy396;
2522 if (yych <= 'F') goto yy415;
2523 if (yych <= '`') goto yy396;
2524 if (yych >= 'g') goto yy396;
2527 yych = (YYCTYPE)*++YYCURSOR;
2529 if (yych <= '/') goto yy416;
2530 if (yych <= '9') goto yy417;
2532 if (yych <= 'F') goto yy417;
2533 if (yych <= '`') goto yy416;
2534 if (yych <= 'f') goto yy417;
2537 YYCURSOR = YYMARKER;
2538 if (yyaccept == 0) {
2545 #line 636 "../src/parse/lex.re"
2546 { return unesc_hex(tok, cur); }
2547 #line 2548 "src/parse/lex.cc"
2549 yych = (YYCTYPE)*++YYCURSOR;
2551 if (yych <= '/') goto yy416;
2552 if (yych >= ':') goto yy416;
2554 if (yych <= 'F') goto yy420;
2555 if (yych <= '`') goto yy416;
2556 if (yych >= 'g') goto yy416;
2559 yych = (YYCTYPE)*++YYCURSOR;
2561 if (yych <= '/') goto yy416;
2562 if (yych >= ':') goto yy416;
2564 if (yych <= 'F') goto yy421;
2565 if (yych <= '`') goto yy416;
2566 if (yych >= 'g') goto yy416;
2569 yych = (YYCTYPE)*++YYCURSOR;
2571 if (yych <= '/') goto yy416;
2572 if (yych <= '9') goto yy417;
2575 if (yych <= 'F') goto yy417;
2576 if (yych <= '`') goto yy416;
2577 if (yych <= 'f') goto yy417;
2581 yych = (YYCTYPE)*++YYCURSOR;
2583 if (yych <= '/') goto yy416;
2584 if (yych >= ':') goto yy416;
2586 if (yych <= 'F') goto yy423;
2587 if (yych <= '`') goto yy416;
2588 if (yych >= 'g') goto yy416;
2591 yych = (YYCTYPE)*++YYCURSOR;
2593 if (yych <= '/') goto yy416;
2594 if (yych >= ':') goto yy416;
2596 if (yych <= 'F') goto yy424;
2597 if (yych <= '`') goto yy416;
2598 if (yych >= 'g') goto yy416;
2601 yych = (YYCTYPE)*++YYCURSOR;
2603 if (yych <= '/') goto yy416;
2604 if (yych >= ':') goto yy416;
2606 if (yych <= 'F') goto yy425;
2607 if (yych <= '`') goto yy416;
2608 if (yych >= 'g') goto yy416;
2611 yych = (YYCTYPE)*++YYCURSOR;
2613 if (yych <= '/') goto yy416;
2614 if (yych >= ':') goto yy416;
2616 if (yych <= 'F') goto yy426;
2617 if (yych <= '`') goto yy416;
2618 if (yych >= 'g') goto yy416;
2621 yych = (YYCTYPE)*++YYCURSOR;
2623 if (yych <= '/') goto yy416;
2624 if (yych >= ':') goto yy416;
2626 if (yych <= 'F') goto yy427;
2627 if (yych <= '`') goto yy416;
2628 if (yych >= 'g') goto yy416;
2631 yych = (YYCTYPE)*++YYCURSOR;
2633 if (yych <= '/') goto yy416;
2634 if (yych >= ':') goto yy416;
2636 if (yych <= 'F') goto yy428;
2637 if (yych <= '`') goto yy416;
2638 if (yych >= 'g') goto yy416;
2641 yych = (YYCTYPE)*++YYCURSOR;
2643 if (yych <= '/') goto yy416;
2644 if (yych <= '9') goto yy417;
2647 if (yych <= 'F') goto yy417;
2648 if (yych <= '`') goto yy416;
2649 if (yych <= 'f') goto yy417;
2653 yych = (YYCTYPE)*++YYCURSOR;
2654 if (yych <= '/') goto yy416;
2655 if (yych >= '8') goto yy416;
2657 #line 637 "../src/parse/lex.re"
2658 { return unesc_oct(tok, cur); }
2659 #line 2660 "src/parse/lex.cc"
2661 #line 652 "../src/parse/lex.re"
2665 RegExp *Scanner::lex_str(char quote, bool casing)
2669 const uint32_t c = lex_str_chr(quote, end);
2671 return r ? r : new NullOp;
2673 r = doCat(r, casing ? ichr(c) : schr(c));
2677 void Scanner::set_sourceline ()
2682 #line 2683 "src/parse/lex.cc"
2685 static const unsigned char yybm[] = {
2686 128, 128, 128, 128, 128, 128, 128, 128,
2687 128, 128, 0, 128, 128, 128, 128, 128,
2688 128, 128, 128, 128, 128, 128, 128, 128,
2689 128, 128, 128, 128, 128, 128, 128, 128,
2690 128, 128, 0, 128, 128, 128, 128, 128,
2691 128, 128, 128, 128, 128, 128, 128, 128,
2692 192, 192, 192, 192, 192, 192, 192, 192,
2693 192, 192, 128, 128, 128, 128, 128, 128,
2694 128, 128, 128, 128, 128, 128, 128, 128,
2695 128, 128, 128, 128, 128, 128, 128, 128,
2696 128, 128, 128, 128, 128, 128, 128, 128,
2697 128, 128, 128, 128, 0, 128, 128, 128,
2698 128, 128, 128, 128, 128, 128, 128, 128,
2699 128, 128, 128, 128, 128, 128, 128, 128,
2700 128, 128, 128, 128, 128, 128, 128, 128,
2701 128, 128, 128, 128, 128, 128, 128, 128,
2702 128, 128, 128, 128, 128, 128, 128, 128,
2703 128, 128, 128, 128, 128, 128, 128, 128,
2704 128, 128, 128, 128, 128, 128, 128, 128,
2705 128, 128, 128, 128, 128, 128, 128, 128,
2706 128, 128, 128, 128, 128, 128, 128, 128,
2707 128, 128, 128, 128, 128, 128, 128, 128,
2708 128, 128, 128, 128, 128, 128, 128, 128,
2709 128, 128, 128, 128, 128, 128, 128, 128,
2710 128, 128, 128, 128, 128, 128, 128, 128,
2711 128, 128, 128, 128, 128, 128, 128, 128,
2712 128, 128, 128, 128, 128, 128, 128, 128,
2713 128, 128, 128, 128, 128, 128, 128, 128,
2714 128, 128, 128, 128, 128, 128, 128, 128,
2715 128, 128, 128, 128, 128, 128, 128, 128,
2716 128, 128, 128, 128, 128, 128, 128, 128,
2717 128, 128, 128, 128, 128, 128, 128, 128,
2719 if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
2720 yych = (YYCTYPE)*YYCURSOR;
2722 if (yych == '\n') goto yy436;
2724 if (yych <= '"') goto yy438;
2725 if (yych <= '0') goto yy434;
2726 if (yych <= '9') goto yy439;
2731 #line 695 "../src/parse/lex.re"
2735 #line 2736 "src/parse/lex.cc"
2738 #line 683 "../src/parse/lex.re"
2751 #line 2752 "src/parse/lex.cc"
2753 yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
2754 if (yych == '\n') goto yy435;
2758 yych = (YYCTYPE)*YYCURSOR;
2761 #line 672 "../src/parse/lex.re"
2763 if (!s_to_u32_unsafe (tok, cur, cline))
2765 fatal ("line number overflow");
2769 #line 2770 "src/parse/lex.cc"
2772 if (YYLIMIT <= YYCURSOR) YYFILL(1);
2773 yych = (YYCTYPE)*YYCURSOR;
2775 if (yybm[0+yych] & 64) {
2781 if (YYLIMIT <= YYCURSOR) YYFILL(1);
2782 yych = (YYCTYPE)*YYCURSOR;
2784 if (yybm[0+yych] & 128) {
2787 if (yych <= '\n') goto yy445;
2788 if (yych <= '"') goto yy447;
2791 YYCURSOR = YYMARKER;
2795 if (YYLIMIT <= YYCURSOR) YYFILL(1);
2796 yych = (YYCTYPE)*YYCURSOR;
2797 if (yych == '\n') goto yy445;
2801 #line 679 "../src/parse/lex.re"
2803 escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes
2806 #line 2807 "src/parse/lex.cc"
2808 #line 698 "../src/parse/lex.re"
2812 } // end namespace re2c