From effc4a89448ed1d0347c4370da814ed7682306bb Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Thu, 27 Dec 2018 22:49:25 +0000 Subject: [PATCH] Simplified lexing of include directive. --- re2c/bootstrap/src/ast/lex.cc | 2609 ++++++++++++++++----------------- re2c/bootstrap/src/ast/lex.h | 2 +- re2c/src/ast/lex.re | 20 +- re2c/src/ast/scanner.h | 1 - 4 files changed, 1277 insertions(+), 1355 deletions(-) diff --git a/re2c/bootstrap/src/ast/lex.cc b/re2c/bootstrap/src/ast/lex.cc index f341d984..38198add 100644 --- a/re2c/bootstrap/src/ast/lex.cc +++ b/re2c/bootstrap/src/ast/lex.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 1.1.1 on Thu Dec 27 22:37:13 2018 */ +/* Generated by re2c 1.1.1 on Thu Dec 27 22:47:12 2018 */ #line 1 "../src/ast/lex.re" #include "src/util/c99_stdint.h" #include @@ -38,6 +38,7 @@ namespace re2c { Scanner::ParseMode Scanner::echo(Output &out) { + const char *x, *y; if (is_eof()) return Stop; next: @@ -45,7 +46,7 @@ next: loop: ptr = cur; -#line 49 "src/ast/lex.cc" +#line 50 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -103,7 +104,7 @@ loop: } } ++YYCURSOR; -#line 204 "../src/ast/lex.re" +#line 205 "../src/ast/lex.re" { if (is_eof()) { out.wraw(tok, ptr); @@ -111,13 +112,13 @@ loop: } goto loop; } -#line 115 "src/ast/lex.cc" +#line 116 "src/ast/lex.cc" yy4: ++YYCURSOR; yy5: -#line 223 "../src/ast/lex.re" +#line 224 "../src/ast/lex.re" { goto loop; } -#line 121 "src/ast/lex.cc" +#line 122 "src/ast/lex.cc" yy6: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); @@ -126,12 +127,12 @@ yy6: } if (yych == '#') goto yy14; yy7: -#line 218 "../src/ast/lex.re" +#line 219 "../src/ast/lex.re" { next_line(); goto loop; } -#line 135 "src/ast/lex.cc" +#line 136 "src/ast/lex.cc" yy8: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy6; @@ -174,12 +175,12 @@ yy14: } yy16: ++YYCURSOR; -#line 119 "../src/ast/lex.re" +#line 120 "../src/ast/lex.re" { out.wraw(tok, ptr); return Parse; } -#line 183 "src/ast/lex.cc" +#line 184 "src/ast/lex.cc" yy18: yych = (YYCTYPE)*++YYCURSOR; if (yych == '!') goto yy20; @@ -475,13 +476,13 @@ yy80: yy82: ++YYCURSOR; YYCURSOR = yyt1; -#line 212 "../src/ast/lex.re" +#line 213 "../src/ast/lex.re" { out.wraw(tok, ptr + 1); set_sourceline(); goto next; } -#line 485 "src/ast/lex.cc" +#line 486 "src/ast/lex.cc" yy84: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy82; @@ -614,14 +615,14 @@ yy114: goto yy13; yy115: ++YYCURSOR; -#line 140 "../src/ast/lex.re" +#line 141 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_yymaxfill(); lex_end_of_comment(out); goto next; } -#line 625 "src/ast/lex.cc" +#line 626 "src/ast/lex.cc" yy117: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy128; @@ -644,12 +645,12 @@ yy121: goto yy13; yy122: ++YYCURSOR; -#line 129 "../src/ast/lex.re" +#line 130 "../src/ast/lex.re" { out.wraw(tok, ptr); return Reuse; } -#line 653 "src/ast/lex.cc" +#line 654 "src/ast/lex.cc" yy124: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy133; @@ -708,33 +709,33 @@ yy137: goto yy13; yy138: ++YYCURSOR; -#line 176 "../src/ast/lex.re" +#line 177 "../src/ast/lex.re" { out.wraw(tok, ptr); lex_tags(out, true); goto next; } -#line 718 "src/ast/lex.cc" +#line 719 "src/ast/lex.cc" yy140: ++YYCURSOR; -#line 124 "../src/ast/lex.re" +#line 125 "../src/ast/lex.re" { out.wraw(tok, ptr); return Rules; } -#line 726 "src/ast/lex.cc" +#line 727 "src/ast/lex.cc" yy142: ++YYCURSOR; -#line 170 "../src/ast/lex.re" +#line 171 "../src/ast/lex.re" { out.wraw(tok, ptr); lex_tags(out, false); goto next; } -#line 735 "src/ast/lex.cc" +#line 736 "src/ast/lex.cc" yy144: ++YYCURSOR; -#line 161 "../src/ast/lex.re" +#line 162 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_line_info_output(); @@ -743,7 +744,7 @@ yy144: lex_end_of_comment(out); goto next; } -#line 747 "src/ast/lex.cc" +#line 748 "src/ast/lex.cc" yy146: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy152; @@ -754,68 +755,79 @@ yy147: goto yy13; yy148: ++YYCURSOR; -#line 134 "../src/ast/lex.re" +#line 135 "../src/ast/lex.re" { out.wraw(tok, ptr); lex_end_of_comment(out); goto next; } -#line 764 "src/ast/lex.cc" +#line 765 "src/ast/lex.cc" yy150: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy154; goto yy13; yy151: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy156; + if (yych == 'e') goto yy155; goto yy13; yy152: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'c') goto yy157; + if (yych == 'c') goto yy156; goto yy13; yy153: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'o') goto yy159; + if (yych == 'o') goto yy158; goto yy13; yy154: - ++YYCURSOR; -#line 198 "../src/ast/lex.re" - { - out.wraw(tok, ptr); - lex_include(); - goto next; - } -#line 789 "src/ast/lex.cc" -yy156: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '2') goto yy160; + if (yych == '"') goto yy13; + goto yy160; +yy155: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == '2') goto yy161; goto yy13; -yy157: +yy156: ++YYCURSOR; -#line 154 "../src/ast/lex.re" +#line 155 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_state_goto(0); lex_end_of_comment(out); goto next; } -#line 803 "src/ast/lex.cc" -yy159: +#line 799 "src/ast/lex.cc" +yy158: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'f') goto yy161; - if (yych == 'n') goto yy162; + if (yych == 'f') goto yy162; + if (yych == 'n') goto yy163; goto yy13; +yy159: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = (YYCTYPE)*YYCURSOR; yy160: - yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'c') goto yy164; - goto yy13; + if (yych <= 0x1F) { + if (yych == '\t') goto yy159; + goto yy13; + } else { + if (yych <= ' ') goto yy159; + if (yych == '"') { + yyt1 = YYCURSOR; + goto yy165; + } + goto yy13; + } yy161: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'f') goto yy166; + if (yych == 'c') goto yy167; goto yy13; yy162: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'f') goto yy169; + goto yy13; +yy163: ++YYCURSOR; -#line 182 "../src/ast/lex.re" +#line 183 "../src/ast/lex.re" { out.wraw(tok, ptr); out.header_mode(true); @@ -823,20 +835,33 @@ yy162: lex_end_of_comment(out); goto next; } -#line 827 "src/ast/lex.cc" -yy164: +#line 839 "src/ast/lex.cc" +yy165: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + yych = (YYCTYPE)*YYCURSOR; + if (yych <= '!') { + if (yych <= 0x00) goto yy13; + if (yych == '\n') goto yy13; + goto yy165; + } else { + if (yych <= '"') goto yy171; + if (yych == '\\') goto yy172; + goto yy165; + } +yy167: ++YYCURSOR; -#line 147 "../src/ast/lex.re" +#line 148 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_yymaxnmatch(); lex_end_of_comment(out); goto next; } -#line 837 "src/ast/lex.cc" -yy166: +#line 862 "src/ast/lex.cc" +yy169: ++YYCURSOR; -#line 190 "../src/ast/lex.re" +#line 191 "../src/ast/lex.re" { out.wraw(tok, ptr); out.header_mode(false); @@ -844,9 +869,59 @@ yy166: lex_end_of_comment(out); goto next; } -#line 848 "src/ast/lex.cc" +#line 873 "src/ast/lex.cc" +yy171: + yych = (YYCTYPE)*++YYCURSOR; + if (yych <= 0x1F) { + if (yych == '\t') { + yyt2 = YYCURSOR; + goto yy173; + } + goto yy13; + } else { + if (yych <= ' ') { + yyt2 = YYCURSOR; + goto yy173; + } + if (yych == '*') { + yyt2 = YYCURSOR; + goto yy175; + } + goto yy13; + } +yy172: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = (YYCTYPE)*YYCURSOR; + if (yych <= 0x00) goto yy13; + if (yych == '\n') goto yy13; + goto yy165; +yy173: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = (YYCTYPE)*YYCURSOR; + if (yych <= 0x1F) { + if (yych == '\t') goto yy173; + goto yy13; + } else { + if (yych <= ' ') goto yy173; + if (yych != '*') goto yy13; + } +yy175: + yych = (YYCTYPE)*++YYCURSOR; + if (yych != '/') goto yy13; + ++YYCURSOR; + x = yyt1; + y = yyt2; +#line 199 "../src/ast/lex.re" + { + out.wraw(tok, ptr); + include(std::string(x + 1, static_cast(y - x) - 2)); + goto next; + } +#line 923 "src/ast/lex.cc" } -#line 224 "../src/ast/lex.re" +#line 225 "../src/ast/lex.re" } @@ -855,198 +930,60 @@ void Scanner::lex_end_of_comment(Output &out) bool multiline = false; loop: -#line 859 "src/ast/lex.cc" +#line 934 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy170; - if (yych == '\n') goto yy174; - goto yy172; + if (yych <= 0x00) goto yy180; + if (yych == '\n') goto yy184; + goto yy182; } else { - if (yych <= '\r') goto yy176; - if (yych == '*') goto yy177; - goto yy172; + if (yych <= '\r') goto yy186; + if (yych == '*') goto yy187; + goto yy182; } -yy170: +yy180: ++YYCURSOR; -#line 233 "../src/ast/lex.re" +#line 234 "../src/ast/lex.re" { fatal_lc(get_line(), get_column(), "expected end of block"); } -#line 879 "src/ast/lex.cc" -yy172: +#line 954 "src/ast/lex.cc" +yy182: ++YYCURSOR; -yy173: -#line 232 "../src/ast/lex.re" +yy183: +#line 233 "../src/ast/lex.re" { goto loop; } -#line 885 "src/ast/lex.cc" -yy174: +#line 960 "src/ast/lex.cc" +yy184: ++YYCURSOR; -#line 236 "../src/ast/lex.re" +#line 237 "../src/ast/lex.re" { next_line(); multiline = true; goto loop; } -#line 894 "src/ast/lex.cc" -yy176: +#line 969 "src/ast/lex.cc" +yy186: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy174; - goto yy173; -yy177: + if (yych == '\n') goto yy184; + goto yy183; +yy187: yych = (YYCTYPE)*++YYCURSOR; - if (yych != '/') goto yy173; + if (yych != '/') goto yy183; ++YYCURSOR; -#line 241 "../src/ast/lex.re" +#line 242 "../src/ast/lex.re" { if (multiline) { out.wdelay_line_info_input(get_line(), get_fname()); } return; } -#line 910 "src/ast/lex.cc" -} -#line 247 "../src/ast/lex.re" - -} - -void Scanner::lex_include() -{ - const char *x, *y; - -#line 920 "src/ast/lex.cc" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 192, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 192, 128, 0, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = (YYCTYPE)*YYCURSOR; - if (yych == '\t') goto yy184; - if (yych == ' ') goto yy184; - ++YYCURSOR; -yy183: -#line 254 "../src/ast/lex.re" - { - fatal_lc(get_line(), get_column(), "syntax error in include directive"); - } -#line 967 "src/ast/lex.cc" -yy184: - yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy185; - } - if (yych == '"') { - yyt1 = YYCURSOR; - goto yy188; - } - goto yy183; -yy185: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = (YYCTYPE)*YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy185; - } - if (yych == '"') { - yyt1 = YYCURSOR; - goto yy188; - } -yy187: - YYCURSOR = YYMARKER; - goto yy183; -yy188: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = (YYCTYPE)*YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy188; - } - if (yych <= '\n') goto yy187; - if (yych >= '#') goto yy191; - yych = (YYCTYPE)*++YYCURSOR; - if (yych <= 0x1F) { - if (yych == '\t') { - yyt2 = YYCURSOR; - goto yy192; - } - goto yy187; - } else { - if (yych <= ' ') { - yyt2 = YYCURSOR; - goto yy192; - } - if (yych == '*') { - yyt2 = YYCURSOR; - goto yy194; - } - goto yy187; - } -yy191: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy187; - if (yych == '\n') goto yy187; - goto yy188; -yy192: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x1F) { - if (yych == '\t') goto yy192; - goto yy187; - } else { - if (yych <= ' ') goto yy192; - if (yych != '*') goto yy187; - } -yy194: - yych = (YYCTYPE)*++YYCURSOR; - if (yych != '/') goto yy187; - ++YYCURSOR; - x = yyt1; - y = yyt2; -#line 258 "../src/ast/lex.re" - { - include(std::string(x + 1, static_cast(y - x) - 2)); - return; - } -#line 1048 "src/ast/lex.cc" +#line 985 "src/ast/lex.cc" } -#line 262 "../src/ast/lex.re" +#line 248 "../src/ast/lex.re" } @@ -1055,7 +992,7 @@ void Scanner::lex_tags(Output &out, bool mtags) std::string fmt, sep; loop: -#line 1059 "src/ast/lex.cc" +#line 996 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1095,131 +1032,131 @@ loop: if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy201; + goto yy194; } if (yych <= ')') { if (yych <= '\n') { - if (yych >= '\t') goto yy204; + if (yych >= '\t') goto yy197; } else { - if (yych == '\r') goto yy206; + if (yych == '\r') goto yy199; } } else { if (yych <= 'f') { - if (yych <= '*') goto yy207; - if (yych >= 'f') goto yy208; + if (yych <= '*') goto yy200; + if (yych >= 'f') goto yy201; } else { - if (yych == 's') goto yy209; + if (yych == 's') goto yy202; } } ++YYCURSOR; -yy200: -#line 270 "../src/ast/lex.re" +yy193: +#line 256 "../src/ast/lex.re" { fatal_lc(get_line(), get_column(), "unrecognized configuration"); } -#line 1121 "src/ast/lex.cc" -yy201: +#line 1058 "src/ast/lex.cc" +yy194: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy201; + goto yy194; } -#line 281 "../src/ast/lex.re" +#line 267 "../src/ast/lex.re" { goto loop; } -#line 1133 "src/ast/lex.cc" -yy204: +#line 1070 "src/ast/lex.cc" +yy197: ++YYCURSOR; -#line 284 "../src/ast/lex.re" +#line 270 "../src/ast/lex.re" { next_line(); goto loop; } -#line 1141 "src/ast/lex.cc" -yy206: +#line 1078 "src/ast/lex.cc" +yy199: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy204; - goto yy200; -yy207: + if (yych == '\n') goto yy197; + goto yy193; +yy200: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '/') goto yy210; - goto yy200; -yy208: + if (yych == '/') goto yy203; + goto yy193; +yy201: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'o') goto yy212; - goto yy200; -yy209: + if (yych == 'o') goto yy205; + goto yy193; +yy202: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy214; - goto yy200; -yy210: + if (yych == 'e') goto yy207; + goto yy193; +yy203: ++YYCURSOR; -#line 288 "../src/ast/lex.re" +#line 274 "../src/ast/lex.re" { out.wdelay_tags(new ConfTags(fmt, sep), mtags); return; } -#line 1165 "src/ast/lex.cc" -yy212: +#line 1102 "src/ast/lex.cc" +yy205: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'r') goto yy215; -yy213: + if (yych == 'r') goto yy208; +yy206: YYCURSOR = YYMARKER; - goto yy200; -yy214: + goto yy193; +yy207: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'p') goto yy216; - goto yy213; -yy215: + if (yych == 'p') goto yy209; + goto yy206; +yy208: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'm') goto yy217; - goto yy213; -yy216: + if (yych == 'm') goto yy210; + goto yy206; +yy209: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy218; - goto yy213; -yy217: + if (yych == 'a') goto yy211; + goto yy206; +yy210: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy219; - goto yy213; -yy218: + if (yych == 'a') goto yy212; + goto yy206; +yy211: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'r') goto yy220; - goto yy213; -yy219: + if (yych == 'r') goto yy213; + goto yy206; +yy212: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 't') goto yy221; - goto yy213; -yy220: + if (yych == 't') goto yy214; + goto yy206; +yy213: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy223; - goto yy213; -yy221: + if (yych == 'a') goto yy216; + goto yy206; +yy214: ++YYCURSOR; -#line 273 "../src/ast/lex.re" +#line 259 "../src/ast/lex.re" { fmt = lex_conf_string(); goto loop; } -#line 1207 "src/ast/lex.cc" -yy223: +#line 1144 "src/ast/lex.cc" +yy216: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy213; + if (yych != 't') goto yy206; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy213; + if (yych != 'o') goto yy206; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy213; + if (yych != 'r') goto yy206; ++YYCURSOR; -#line 277 "../src/ast/lex.re" +#line 263 "../src/ast/lex.re" { sep = lex_conf_string(); goto loop; } -#line 1221 "src/ast/lex.cc" +#line 1158 "src/ast/lex.cc" } -#line 292 "../src/ast/lex.re" +#line 278 "../src/ast/lex.re" } @@ -1229,7 +1166,7 @@ int Scanner::scan() scan: tok = cur; -#line 1233 "src/ast/lex.cc" +#line 1170 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1270,102 +1207,102 @@ scan: if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { - goto yy232; + goto yy225; } if (yych <= '9') { if (yych <= '%') { if (yych <= '\r') { - if (yych <= 0x08) goto yy230; - if (yych <= '\n') goto yy235; - if (yych >= '\r') goto yy237; + if (yych <= 0x08) goto yy223; + if (yych <= '\n') goto yy228; + if (yych >= '\r') goto yy230; } else { if (yych <= '"') { - if (yych >= '"') goto yy238; + if (yych >= '"') goto yy231; } else { - if (yych <= '#') goto yy240; - if (yych <= '$') goto yy241; - goto yy243; + if (yych <= '#') goto yy233; + if (yych <= '$') goto yy234; + goto yy236; } } } else { if (yych <= '*') { - if (yych <= '&') goto yy230; - if (yych <= '\'') goto yy244; - if (yych <= ')') goto yy241; - goto yy246; + if (yych <= '&') goto yy223; + if (yych <= '\'') goto yy237; + if (yych <= ')') goto yy234; + goto yy239; } else { if (yych <= '-') { - if (yych <= '+') goto yy241; + if (yych <= '+') goto yy234; } else { - if (yych <= '.') goto yy247; - if (yych <= '/') goto yy249; + if (yych <= '.') goto yy240; + if (yych <= '/') goto yy242; } } } } else { if (yych <= '[') { if (yych <= '=') { - if (yych <= ':') goto yy250; - if (yych <= ';') goto yy241; - if (yych <= '<') goto yy251; - goto yy253; + if (yych <= ':') goto yy243; + if (yych <= ';') goto yy234; + if (yych <= '<') goto yy244; + goto yy246; } else { if (yych <= '?') { - if (yych >= '?') goto yy241; + if (yych >= '?') goto yy234; } else { - if (yych <= '@') goto yy240; - if (yych <= 'Z') goto yy254; - goto yy257; + if (yych <= '@') goto yy233; + if (yych <= 'Z') goto yy247; + goto yy250; } } } else { if (yych <= 'q') { if (yych <= '^') { - if (yych <= '\\') goto yy241; + if (yych <= '\\') goto yy234; } else { - if (yych != '`') goto yy254; + if (yych != '`') goto yy247; } } else { if (yych <= 'z') { - if (yych <= 'r') goto yy259; - goto yy254; + if (yych <= 'r') goto yy252; + goto yy247; } else { - if (yych <= '{') goto yy260; - if (yych <= '|') goto yy241; + if (yych <= '{') goto yy253; + if (yych <= '|') goto yy234; } } } } -yy230: +yy223: ++YYCURSOR; -yy231: -#line 417 "../src/ast/lex.re" +yy224: +#line 403 "../src/ast/lex.re" { fatal_lc(get_line(), get_column(), "unexpected character: '%c'", *tok); goto scan; } -#line 1348 "src/ast/lex.cc" -yy232: +#line 1285 "src/ast/lex.cc" +yy225: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { - goto yy232; + goto yy225; } -#line 399 "../src/ast/lex.re" +#line 385 "../src/ast/lex.re" { goto scan; } -#line 1358 "src/ast/lex.cc" -yy235: +#line 1295 "src/ast/lex.cc" +yy228: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy262; + if (yych == '\t') goto yy255; } else { - if (yych <= ' ') goto yy262; - if (yych == '#') goto yy265; + if (yych <= ' ') goto yy255; + if (yych == '#') goto yy258; } -yy236: -#line 406 "../src/ast/lex.re" +yy229: +#line 392 "../src/ast/lex.re" { next_line(); if (lexer_state == LEX_FLEX_NAME) { @@ -1376,82 +1313,82 @@ yy236: goto scan; } } -#line 1380 "src/ast/lex.cc" -yy237: +#line 1317 "src/ast/lex.cc" +yy230: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy235; - goto yy231; -yy238: + if (yych == '\n') goto yy228; + goto yy224; +yy231: ++YYCURSOR; -#line 317 "../src/ast/lex.re" +#line 303 "../src/ast/lex.re" { yylval.regexp = lex_str('"'); return TOKEN_REGEXP; } -#line 1389 "src/ast/lex.cc" -yy240: +#line 1326 "src/ast/lex.cc" +yy233: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '^') { - if (yych <= '@') goto yy231; - if (yych <= 'Z') goto yy267; - goto yy231; + if (yych <= '@') goto yy224; + if (yych <= 'Z') goto yy260; + goto yy224; } else { - if (yych == '`') goto yy231; - if (yych <= 'z') goto yy267; - goto yy231; + if (yych == '`') goto yy224; + if (yych <= 'z') goto yy260; + goto yy224; } -yy241: +yy234: ++YYCURSOR; -yy242: -#line 327 "../src/ast/lex.re" +yy235: +#line 313 "../src/ast/lex.re" { return *tok; } -#line 1406 "src/ast/lex.cc" -yy243: +#line 1343 "src/ast/lex.cc" +yy236: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '}') goto yy270; - goto yy231; -yy244: + if (yych == '}') goto yy263; + goto yy224; +yy237: ++YYCURSOR; -#line 316 "../src/ast/lex.re" +#line 302 "../src/ast/lex.re" { yylval.regexp = lex_str('\''); return TOKEN_REGEXP; } -#line 1415 "src/ast/lex.cc" -yy246: +#line 1352 "src/ast/lex.cc" +yy239: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '/') goto yy270; - goto yy242; -yy247: + if (yych == '/') goto yy263; + goto yy235; +yy240: ++YYCURSOR; -#line 394 "../src/ast/lex.re" +#line 380 "../src/ast/lex.re" { yylval.regexp = ast_dot(get_line(), get_column()); return TOKEN_REGEXP; } -#line 1427 "src/ast/lex.cc" -yy249: +#line 1364 "src/ast/lex.cc" +yy242: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '*') goto yy272; - if (yych == '/') goto yy274; - goto yy242; -yy250: + if (yych == '*') goto yy265; + if (yych == '/') goto yy267; + goto yy235; +yy243: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '=') goto yy276; - goto yy231; -yy251: + if (yych == '=') goto yy269; + goto yy224; +yy244: ++YYCURSOR; -#line 309 "../src/ast/lex.re" +#line 295 "../src/ast/lex.re" { return lex_clist(); } -#line 1441 "src/ast/lex.cc" -yy253: +#line 1378 "src/ast/lex.cc" +yy246: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == '>') goto yy278; - goto yy242; -yy254: + if (yych == '>') goto yy271; + goto yy235; +yy247: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy255: +yy248: if (yybm[0+yych] & 32) { - goto yy254; + goto yy247; } -#line 371 "../src/ast/lex.re" +#line 357 "../src/ast/lex.re" { if (!globopts->FFlag || lex_namedef_context_re2c()) { yylval.str = new std::string (tok, tok_len()); @@ -1474,251 +1411,251 @@ yy255: return TOKEN_REGEXP; } } -#line 1478 "src/ast/lex.cc" -yy257: +#line 1415 "src/ast/lex.cc" +yy250: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '^') goto yy280; -#line 318 "../src/ast/lex.re" + if (yych == '^') goto yy273; +#line 304 "../src/ast/lex.re" { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; } -#line 1484 "src/ast/lex.cc" -yy259: +#line 1421 "src/ast/lex.cc" +yy252: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy282; - goto yy255; -yy260: + if (yych == 'e') goto yy275; + goto yy248; +yy253: yyaccept = 2; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { - goto yy285; + goto yy278; } if (yych <= 'Z') { - if (yych == ',') goto yy283; - if (yych >= 'A') goto yy287; + if (yych == ',') goto yy276; + if (yych >= 'A') goto yy280; } else { if (yych <= '_') { - if (yych >= '_') goto yy287; + if (yych >= '_') goto yy280; } else { - if (yych <= '`') goto yy261; - if (yych <= 'z') goto yy287; + if (yych <= '`') goto yy254; + if (yych <= 'z') goto yy280; } } -yy261: -#line 301 "../src/ast/lex.re" +yy254: +#line 287 "../src/ast/lex.re" { lex_code_in_braces(); return TOKEN_CODE; } -#line 1509 "src/ast/lex.cc" -yy262: +#line 1446 "src/ast/lex.cc" +yy255: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy262; + if (yych == '\t') goto yy255; } else { - if (yych <= ' ') goto yy262; - if (yych == '#') goto yy265; + if (yych <= ' ') goto yy255; + if (yych == '#') goto yy258; } -yy264: +yy257: YYCURSOR = YYMARKER; if (yyaccept <= 2) { if (yyaccept <= 1) { if (yyaccept == 0) { - goto yy236; + goto yy229; } else { - goto yy242; + goto yy235; } } else { - goto yy261; + goto yy254; } } else { if (yyaccept == 3) { - goto yy277; + goto yy270; } else { - goto yy284; + goto yy277; } } -yy265: +yy258: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy265; - goto yy264; + if (yych == '\t') goto yy258; + goto yy257; } else { - if (yych <= ' ') goto yy265; - if (yych == 'l') goto yy289; - goto yy264; + if (yych <= ' ') goto yy258; + if (yych == 'l') goto yy282; + goto yy257; } -yy267: +yy260: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 'Z') { - if (yych <= '/') goto yy269; - if (yych <= '9') goto yy267; - if (yych >= 'A') goto yy267; + if (yych <= '/') goto yy262; + if (yych <= '9') goto yy260; + if (yych >= 'A') goto yy260; } else { if (yych <= '_') { - if (yych >= '_') goto yy267; + if (yych >= '_') goto yy260; } else { - if (yych <= '`') goto yy269; - if (yych <= 'z') goto yy267; + if (yych <= '`') goto yy262; + if (yych <= 'z') goto yy260; } } -yy269: -#line 321 "../src/ast/lex.re" +yy262: +#line 307 "../src/ast/lex.re" { const std::string *name = new std::string(tok + 1, tok_len() - 1); yylval.regexp = ast_tag(get_line(), get_column(), name, tok[0] == '#'); return TOKEN_REGEXP; } -#line 1574 "src/ast/lex.cc" -yy270: +#line 1511 "src/ast/lex.cc" +yy263: ++YYCURSOR; -#line 314 "../src/ast/lex.re" +#line 300 "../src/ast/lex.re" { tok = cur; return 0; } -#line 1579 "src/ast/lex.cc" -yy272: +#line 1516 "src/ast/lex.cc" +yy265: ++YYCURSOR; -#line 312 "../src/ast/lex.re" +#line 298 "../src/ast/lex.re" { lex_c_comment(); goto scan; } -#line 1584 "src/ast/lex.cc" -yy274: +#line 1521 "src/ast/lex.cc" +yy267: ++YYCURSOR; -#line 311 "../src/ast/lex.re" +#line 297 "../src/ast/lex.re" { lex_cpp_comment(); goto scan; } -#line 1589 "src/ast/lex.cc" -yy276: +#line 1526 "src/ast/lex.cc" +yy269: yyaccept = 3; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == '>') goto yy278; -yy277: -#line 302 "../src/ast/lex.re" + if (yych == '>') goto yy271; +yy270: +#line 288 "../src/ast/lex.re" { lex_code_indented(); return TOKEN_CODE; } -#line 1597 "src/ast/lex.cc" -yy278: +#line 1534 "src/ast/lex.cc" +yy271: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= '@') { if (yych <= '\t') { - if (yych <= 0x08) goto yy264; - goto yy278; + if (yych <= 0x08) goto yy257; + goto yy271; } else { - if (yych == ' ') goto yy278; - goto yy264; + if (yych == ' ') goto yy271; + goto yy257; } } else { if (yych <= '_') { if (yych <= 'Z') { yyt1 = YYCURSOR; - goto yy290; + goto yy283; } - if (yych <= '^') goto yy264; + if (yych <= '^') goto yy257; yyt1 = YYCURSOR; - goto yy290; + goto yy283; } else { - if (yych <= '`') goto yy264; + if (yych <= '`') goto yy257; if (yych <= 'z') { yyt1 = YYCURSOR; - goto yy290; + goto yy283; } - goto yy264; + goto yy257; } } -yy280: +yy273: ++YYCURSOR; -#line 319 "../src/ast/lex.re" +#line 305 "../src/ast/lex.re" { yylval.regexp = lex_cls(true); return TOKEN_REGEXP; } -#line 1632 "src/ast/lex.cc" -yy282: +#line 1569 "src/ast/lex.cc" +yy275: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '2') goto yy293; - goto yy255; -yy283: + if (yych == '2') goto yy286; + goto yy248; +yy276: ++YYCURSOR; -yy284: -#line 355 "../src/ast/lex.re" +yy277: +#line 341 "../src/ast/lex.re" { fatal_lc(get_line(), get_column(), "illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } -#line 1645 "src/ast/lex.cc" -yy285: +#line 1582 "src/ast/lex.cc" +yy278: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { - goto yy285; + goto yy278; } if (yych == ',') { yyt1 = YYCURSOR; - goto yy294; + goto yy287; } - if (yych == '}') goto yy295; - goto yy264; -yy287: + if (yych == '}') goto yy288; + goto yy257; +yy280: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= '^') { if (yych <= '9') { - if (yych <= '/') goto yy264; - goto yy287; + if (yych <= '/') goto yy257; + goto yy280; } else { - if (yych <= '@') goto yy264; - if (yych <= 'Z') goto yy287; - goto yy264; + if (yych <= '@') goto yy257; + if (yych <= 'Z') goto yy280; + goto yy257; } } else { if (yych <= 'z') { - if (yych == '`') goto yy264; - goto yy287; + if (yych == '`') goto yy257; + goto yy280; } else { - if (yych == '}') goto yy297; - goto yy264; + if (yych == '}') goto yy290; + goto yy257; } } -yy289: +yy282: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'i') goto yy299; - goto yy264; -yy290: + if (yych == 'i') goto yy292; + goto yy257; +yy283: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 'Z') { - if (yych <= '/') goto yy292; - if (yych <= '9') goto yy290; - if (yych >= 'A') goto yy290; + if (yych <= '/') goto yy285; + if (yych <= '9') goto yy283; + if (yych >= 'A') goto yy283; } else { if (yych <= '_') { - if (yych >= '_') goto yy290; + if (yych >= '_') goto yy283; } else { - if (yych <= '`') goto yy292; - if (yych <= 'z') goto yy290; + if (yych <= '`') goto yy285; + if (yych <= 'z') goto yy283; } } -yy292: +yy285: p = yyt1; -#line 304 "../src/ast/lex.re" +#line 290 "../src/ast/lex.re" { yylval.str = new std::string(p, static_cast(cur - p)); return tok[0] == ':' ? TOKEN_CJUMP : TOKEN_CNEXT; } -#line 1708 "src/ast/lex.cc" -yy293: +#line 1645 "src/ast/lex.cc" +yy286: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'c') goto yy300; - goto yy255; -yy294: + if (yych == 'c') goto yy293; + goto yy248; +yy287: yyaccept = 4; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy284; - if (yych <= '9') goto yy301; - if (yych == '}') goto yy303; - goto yy284; -yy295: + if (yych <= '/') goto yy277; + if (yych <= '9') goto yy294; + if (yych == '}') goto yy296; + goto yy277; +yy288: ++YYCURSOR; -#line 329 "../src/ast/lex.re" +#line 315 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.bounds.min)) { fatal_lc(get_line(), get_column(), "repetition count overflow"); @@ -1726,10 +1663,10 @@ yy295: yylval.bounds.max = yylval.bounds.min; return TOKEN_CLOSESIZE; } -#line 1730 "src/ast/lex.cc" -yy297: +#line 1667 "src/ast/lex.cc" +yy290: ++YYCURSOR; -#line 360 "../src/ast/lex.re" +#line 346 "../src/ast/lex.re" { if (!globopts->FFlag) { fatal_lc(get_line(), get_column(), @@ -1738,26 +1675,26 @@ yy297: yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces return TOKEN_ID; } -#line 1742 "src/ast/lex.cc" -yy299: +#line 1679 "src/ast/lex.cc" +yy292: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'n') goto yy305; - goto yy264; -yy300: + if (yych == 'n') goto yy298; + goto yy257; +yy293: yych = (YYCTYPE)*++YYCURSOR; - if (yych == ':') goto yy306; - goto yy255; -yy301: + if (yych == ':') goto yy299; + goto yy248; +yy294: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= '/') goto yy264; - if (yych <= '9') goto yy301; - if (yych == '}') goto yy308; - goto yy264; -yy303: + if (yych <= '/') goto yy257; + if (yych <= '9') goto yy294; + if (yych == '}') goto yy301; + goto yy257; +yy296: ++YYCURSOR; -#line 347 "../src/ast/lex.re" +#line 333 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.bounds.min)) { fatal_lc(get_line(), get_column(), "repetition lower bound overflow"); @@ -1765,20 +1702,20 @@ yy303: yylval.bounds.max = std::numeric_limits::max(); return TOKEN_CLOSESIZE; } -#line 1769 "src/ast/lex.cc" -yy305: +#line 1706 "src/ast/lex.cc" +yy298: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy310; - goto yy264; -yy306: + if (yych == 'e') goto yy303; + goto yy257; +yy299: ++YYCURSOR; -#line 369 "../src/ast/lex.re" +#line 355 "../src/ast/lex.re" { return TOKEN_CONF; } -#line 1778 "src/ast/lex.cc" -yy308: +#line 1715 "src/ast/lex.cc" +yy301: ++YYCURSOR; p = yyt1; -#line 337 "../src/ast/lex.re" +#line 323 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, p, yylval.bounds.min)) { fatal_lc(get_line(), get_column(), "repetition lower bound overflow"); @@ -1788,101 +1725,101 @@ yy308: } return TOKEN_CLOSESIZE; } -#line 1792 "src/ast/lex.cc" -yy310: +#line 1729 "src/ast/lex.cc" +yy303: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '0') goto yy312; - if (yych <= '9') goto yy264; - goto yy312; -yy311: + if (yych <= '0') goto yy305; + if (yych <= '9') goto yy257; + goto yy305; +yy304: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy312: +yy305: if (yych <= 0x1F) { - if (yych == '\t') goto yy311; - goto yy264; + if (yych == '\t') goto yy304; + goto yy257; } else { - if (yych <= ' ') goto yy311; - if (yych <= '0') goto yy264; - if (yych >= ':') goto yy264; + if (yych <= ' ') goto yy304; + if (yych <= '0') goto yy257; + if (yych >= ':') goto yy257; yyt1 = YYCURSOR; } -yy313: +yy306: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { - if (yych <= 0x08) goto yy264; + if (yych <= 0x08) goto yy257; } else { - if (yych <= '\n') goto yy317; - if (yych <= '\f') goto yy264; - goto yy319; + if (yych <= '\n') goto yy310; + if (yych <= '\f') goto yy257; + goto yy312; } } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy264; + if (yych <= 0x1F) goto yy257; } else { - if (yych <= '/') goto yy264; - if (yych <= '9') goto yy313; - goto yy264; + if (yych <= '/') goto yy257; + if (yych <= '9') goto yy306; + goto yy257; } } -yy315: +yy308: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy315; - goto yy264; + if (yych == '\t') goto yy308; + goto yy257; } else { - if (yych <= ' ') goto yy315; - if (yych == '"') goto yy320; - goto yy264; + if (yych <= ' ') goto yy308; + if (yych == '"') goto yy313; + goto yy257; } -yy317: +yy310: ++YYCURSOR; YYCURSOR = yyt1; -#line 401 "../src/ast/lex.re" +#line 387 "../src/ast/lex.re" { set_sourceline (); return TOKEN_LINE_INFO; } -#line 1853 "src/ast/lex.cc" -yy319: +#line 1790 "src/ast/lex.cc" +yy312: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy317; - goto yy264; -yy320: + if (yych == '\n') goto yy310; + goto yy257; +yy313: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy320; + goto yy313; } - if (yych <= '\n') goto yy264; - if (yych >= '#') goto yy323; + if (yych <= '\n') goto yy257; + if (yych >= '#') goto yy316; yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy317; - if (yych == '\r') goto yy319; - goto yy264; -yy323: + if (yych == '\n') goto yy310; + if (yych == '\r') goto yy312; + goto yy257; +yy316: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy264; - if (yych == '\n') goto yy264; - goto yy320; + if (yych <= 0x00) goto yy257; + if (yych == '\n') goto yy257; + goto yy313; } -#line 421 "../src/ast/lex.re" +#line 407 "../src/ast/lex.re" } bool Scanner::lex_namedef_context_re2c() { -#line 1886 "src/ast/lex.cc" +#line 1823 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1924,50 +1861,50 @@ bool Scanner::lex_namedef_context_re2c() if (yych <= 0x1F) { if (yych == '\t') { yyt1 = YYCURSOR; - goto yy327; + goto yy320; } } else { if (yych <= ' ') { yyt1 = YYCURSOR; - goto yy327; + goto yy320; } if (yych == '=') { yyt1 = YYCURSOR; - goto yy330; + goto yy323; } } -yy326: -#line 428 "../src/ast/lex.re" +yy319: +#line 414 "../src/ast/lex.re" { return false; } -#line 1943 "src/ast/lex.cc" -yy327: +#line 1880 "src/ast/lex.cc" +yy320: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy327; + goto yy320; } - if (yych == '=') goto yy330; -yy329: + if (yych == '=') goto yy323; +yy322: YYCURSOR = YYMARKER; - goto yy326; -yy330: + goto yy319; +yy323: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '>') goto yy329; + if (yych == '>') goto yy322; ++YYCURSOR; YYCURSOR = yyt1; -#line 427 "../src/ast/lex.re" +#line 413 "../src/ast/lex.re" { return true; } -#line 1962 "src/ast/lex.cc" +#line 1899 "src/ast/lex.cc" } -#line 429 "../src/ast/lex.re" +#line 415 "../src/ast/lex.re" } bool Scanner::lex_namedef_context_flex() { -#line 1971 "src/ast/lex.cc" +#line 1908 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2008,40 +1945,40 @@ bool Scanner::lex_namedef_context_flex() yych = (YYCTYPE)*YYCURSOR; if (yych == '\t') { yyt1 = YYCURSOR; - goto yy336; + goto yy329; } if (yych == ' ') { yyt1 = YYCURSOR; - goto yy336; + goto yy329; } -#line 437 "../src/ast/lex.re" +#line 423 "../src/ast/lex.re" { return false; } -#line 2020 "src/ast/lex.cc" -yy336: +#line 1957 "src/ast/lex.cc" +yy329: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy336; + goto yy329; } if (yych <= '<') { - if (yych == ':') goto yy339; + if (yych == ':') goto yy332; } else { - if (yych <= '=') goto yy339; - if (yych == '{') goto yy339; + if (yych <= '=') goto yy332; + if (yych == '{') goto yy332; } YYCURSOR = yyt1; -#line 436 "../src/ast/lex.re" +#line 422 "../src/ast/lex.re" { return true; } -#line 2037 "src/ast/lex.cc" -yy339: +#line 1974 "src/ast/lex.cc" +yy332: ++YYCURSOR; YYCURSOR = yyt1; -#line 435 "../src/ast/lex.re" +#line 421 "../src/ast/lex.re" { return false; } -#line 2043 "src/ast/lex.cc" +#line 1980 "src/ast/lex.cc" } -#line 438 "../src/ast/lex.re" +#line 424 "../src/ast/lex.re" } @@ -2050,7 +1987,7 @@ int Scanner::lex_clist() int kind = TOKEN_CLIST; CondList *cl = new CondList; -#line 2054 "src/ast/lex.cc" +#line 1991 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2087,43 +2024,43 @@ int Scanner::lex_clist() 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - goto yy341; -yy342: + goto yy334; +yy335: ++YYCURSOR; -yy341: +yy334: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy342; + goto yy335; } - if (yych <= 0x1F) goto yy344; - if (yych <= '!') goto yy345; - if (yych == '>') goto yy348; -yy344: -#line 448 "../src/ast/lex.re" + if (yych <= 0x1F) goto yy337; + if (yych <= '!') goto yy338; + if (yych == '>') goto yy341; +yy337: +#line 434 "../src/ast/lex.re" { goto cond; } -#line 2106 "src/ast/lex.cc" -yy345: +#line 2043 "src/ast/lex.cc" +yy338: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych == '\t') goto yy345; - if (yych == ' ') goto yy345; -#line 446 "../src/ast/lex.re" + if (yych == '\t') goto yy338; + if (yych == ' ') goto yy338; +#line 432 "../src/ast/lex.re" { kind = TOKEN_CSETUP; goto cond; } -#line 2115 "src/ast/lex.cc" -yy348: +#line 2052 "src/ast/lex.cc" +yy341: ++YYCURSOR; -#line 447 "../src/ast/lex.re" +#line 433 "../src/ast/lex.re" { kind = TOKEN_CZERO; goto end; } -#line 2120 "src/ast/lex.cc" +#line 2057 "src/ast/lex.cc" } -#line 449 "../src/ast/lex.re" +#line 435 "../src/ast/lex.re" cond: tok = cur; -#line 2127 "src/ast/lex.cc" +#line 2064 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2163,42 +2100,42 @@ cond: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 'Z') { - if (yych == '*') goto yy354; - if (yych >= 'A') goto yy356; + if (yych == '*') goto yy347; + if (yych >= 'A') goto yy349; } else { if (yych <= '_') { - if (yych >= '_') goto yy356; + if (yych >= '_') goto yy349; } else { - if (yych <= '`') goto yy352; - if (yych <= 'z') goto yy356; + if (yych <= '`') goto yy345; + if (yych <= 'z') goto yy349; } } -yy352: +yy345: ++YYCURSOR; -#line 455 "../src/ast/lex.re" +#line 441 "../src/ast/lex.re" { goto error; } -#line 2181 "src/ast/lex.cc" -yy354: +#line 2118 "src/ast/lex.cc" +yy347: ++YYCURSOR; -#line 454 "../src/ast/lex.re" +#line 440 "../src/ast/lex.re" { if (!cl->empty()) goto error; cl->insert("*"); goto next; } -#line 2186 "src/ast/lex.cc" -yy356: +#line 2123 "src/ast/lex.cc" +yy349: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy356; + goto yy349; } -#line 453 "../src/ast/lex.re" +#line 439 "../src/ast/lex.re" { cl->insert(std::string(tok, tok_len())); goto next; } -#line 2196 "src/ast/lex.cc" +#line 2133 "src/ast/lex.cc" } -#line 456 "../src/ast/lex.re" +#line 442 "../src/ast/lex.re" next: -#line 2202 "src/ast/lex.cc" +#line 2139 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2238,67 +2175,67 @@ next: if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= ' ') { - if (yych == '\t') goto yy363; - if (yych >= ' ') goto yy363; + if (yych == '\t') goto yy356; + if (yych >= ' ') goto yy356; } else { if (yych <= ',') { - if (yych >= ',') goto yy364; + if (yych >= ',') goto yy357; } else { - if (yych == '>') goto yy367; + if (yych == '>') goto yy360; } } ++YYCURSOR; -yy362: -#line 461 "../src/ast/lex.re" +yy355: +#line 447 "../src/ast/lex.re" { goto error; } -#line 2255 "src/ast/lex.cc" -yy363: +#line 2192 "src/ast/lex.cc" +yy356: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy369; - if (yych <= 0x1F) goto yy362; - goto yy369; + if (yych == '\t') goto yy362; + if (yych <= 0x1F) goto yy355; + goto yy362; } else { if (yych <= ',') { - if (yych <= '+') goto yy362; + if (yych <= '+') goto yy355; } else { - if (yych == '>') goto yy367; - goto yy362; + if (yych == '>') goto yy360; + goto yy355; } } -yy364: +yy357: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy364; + goto yy357; } -#line 459 "../src/ast/lex.re" +#line 445 "../src/ast/lex.re" { goto cond; } -#line 2279 "src/ast/lex.cc" -yy367: +#line 2216 "src/ast/lex.cc" +yy360: ++YYCURSOR; -#line 460 "../src/ast/lex.re" +#line 446 "../src/ast/lex.re" { goto end; } -#line 2284 "src/ast/lex.cc" -yy369: +#line 2221 "src/ast/lex.cc" +yy362: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= ' ') { - if (yych == '\t') goto yy369; - if (yych >= ' ') goto yy369; + if (yych == '\t') goto yy362; + if (yych >= ' ') goto yy362; } else { if (yych <= ',') { - if (yych >= ',') goto yy364; + if (yych >= ',') goto yy357; } else { - if (yych == '>') goto yy367; + if (yych == '>') goto yy360; } } YYCURSOR = YYMARKER; - goto yy362; + goto yy355; } -#line 462 "../src/ast/lex.re" +#line 448 "../src/ast/lex.re" end: yylval.clist = cl; @@ -2314,98 +2251,98 @@ void Scanner::lex_code_indented() tok = cur; code: -#line 2318 "src/ast/lex.cc" +#line 2255 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yych <= '&') { if (yych <= '\f') { - if (yych <= 0x00) goto yy374; - if (yych == '\n') goto yy378; - goto yy376; + if (yych <= 0x00) goto yy367; + if (yych == '\n') goto yy371; + goto yy369; } else { - if (yych <= '\r') goto yy380; - if (yych == '"') goto yy381; - goto yy376; + if (yych <= '\r') goto yy373; + if (yych == '"') goto yy374; + goto yy369; } } else { if (yych <= 'z') { - if (yych <= '\'') goto yy381; - if (yych == '/') goto yy383; - goto yy376; + if (yych <= '\'') goto yy374; + if (yych == '/') goto yy376; + goto yy369; } else { - if (yych == '|') goto yy376; - if (yych <= '}') goto yy384; - goto yy376; + if (yych == '|') goto yy369; + if (yych <= '}') goto yy377; + goto yy369; } } -yy374: +yy367: ++YYCURSOR; -#line 485 "../src/ast/lex.re" +#line 471 "../src/ast/lex.re" { fail_if_eof(); goto code; } -#line 2348 "src/ast/lex.cc" -yy376: +#line 2285 "src/ast/lex.cc" +yy369: ++YYCURSOR; -yy377: -#line 490 "../src/ast/lex.re" +yy370: +#line 476 "../src/ast/lex.re" { goto code; } -#line 2354 "src/ast/lex.cc" -yy378: +#line 2291 "src/ast/lex.cc" +yy371: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '\f') { - if (yych <= 0x08) goto yy379; - if (yych <= '\n') goto yy386; + if (yych <= 0x08) goto yy372; + if (yych <= '\n') goto yy379; } else { - if (yych <= '\r') goto yy386; - if (yych == ' ') goto yy386; + if (yych <= '\r') goto yy379; + if (yych == ' ') goto yy379; } -yy379: -#line 478 "../src/ast/lex.re" +yy372: +#line 464 "../src/ast/lex.re" { while (isspace(tok[0])) ++tok; while (cur > tok && isspace(cur[-1])) --cur; yylval.code = new Code(get_fname (), line, tok, tok_len ()); return; } -#line 2372 "src/ast/lex.cc" -yy380: +#line 2309 "src/ast/lex.cc" +yy373: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy378; - goto yy377; -yy381: + if (yych == '\n') goto yy371; + goto yy370; +yy374: ++YYCURSOR; -#line 489 "../src/ast/lex.re" +#line 475 "../src/ast/lex.re" { lex_string(cur[-1]); goto code; } -#line 2381 "src/ast/lex.cc" -yy383: +#line 2318 "src/ast/lex.cc" +yy376: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '*') goto yy388; - if (yych == '/') goto yy390; - goto yy377; -yy384: + if (yych == '*') goto yy381; + if (yych == '/') goto yy383; + goto yy370; +yy377: ++YYCURSOR; -#line 486 "../src/ast/lex.re" +#line 472 "../src/ast/lex.re" { fatal_l(get_line(), "Curly braces are not allowed after ':='"); } -#line 2391 "src/ast/lex.cc" -yy386: +#line 2328 "src/ast/lex.cc" +yy379: ++YYCURSOR; YYCURSOR -= 1; -#line 477 "../src/ast/lex.re" +#line 463 "../src/ast/lex.re" { goto code; } -#line 2397 "src/ast/lex.cc" -yy388: +#line 2334 "src/ast/lex.cc" +yy381: ++YYCURSOR; -#line 487 "../src/ast/lex.re" +#line 473 "../src/ast/lex.re" { lex_c_comment(); goto code; } -#line 2402 "src/ast/lex.cc" -yy390: +#line 2339 "src/ast/lex.cc" +yy383: ++YYCURSOR; -#line 488 "../src/ast/lex.re" +#line 474 "../src/ast/lex.re" { lex_cpp_comment(); goto code; } -#line 2407 "src/ast/lex.cc" +#line 2344 "src/ast/lex.cc" } -#line 491 "../src/ast/lex.re" +#line 477 "../src/ast/lex.re" } @@ -2415,7 +2352,7 @@ void Scanner::lex_code_in_braces() uint32_t depth = 1; code: -#line 2419 "src/ast/lex.cc" +#line 2356 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2456,68 +2393,68 @@ code: yych = (YYCTYPE)*YYCURSOR; if (yych <= '&') { if (yych <= '\f') { - if (yych <= 0x00) goto yy394; - if (yych == '\n') goto yy398; - goto yy396; + if (yych <= 0x00) goto yy387; + if (yych == '\n') goto yy391; + goto yy389; } else { - if (yych <= '\r') goto yy400; - if (yych == '"') goto yy401; - goto yy396; + if (yych <= '\r') goto yy393; + if (yych == '"') goto yy394; + goto yy389; } } else { if (yych <= 'z') { - if (yych <= '\'') goto yy401; - if (yych == '/') goto yy403; - goto yy396; + if (yych <= '\'') goto yy394; + if (yych == '/') goto yy396; + goto yy389; } else { - if (yych <= '{') goto yy404; - if (yych == '}') goto yy406; - goto yy396; + if (yych <= '{') goto yy397; + if (yych == '}') goto yy399; + goto yy389; } } -yy394: +yy387: ++YYCURSOR; -#line 511 "../src/ast/lex.re" +#line 497 "../src/ast/lex.re" { fail_if_eof(); goto code; } -#line 2483 "src/ast/lex.cc" -yy396: +#line 2420 "src/ast/lex.cc" +yy389: ++YYCURSOR; -yy397: -#line 515 "../src/ast/lex.re" +yy390: +#line 501 "../src/ast/lex.re" { goto code; } -#line 2489 "src/ast/lex.cc" -yy398: +#line 2426 "src/ast/lex.cc" +yy391: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { - goto yy408; + goto yy401; } - if (yych == '#') goto yy411; -yy399: -#line 510 "../src/ast/lex.re" + if (yych == '#') goto yy404; +yy392: +#line 496 "../src/ast/lex.re" { next_line(); goto code; } -#line 2499 "src/ast/lex.cc" -yy400: +#line 2436 "src/ast/lex.cc" +yy393: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy398; - goto yy397; -yy401: + if (yych == '\n') goto yy391; + goto yy390; +yy394: ++YYCURSOR; -#line 514 "../src/ast/lex.re" +#line 500 "../src/ast/lex.re" { lex_string(cur[-1]); goto code; } -#line 2508 "src/ast/lex.cc" -yy403: +#line 2445 "src/ast/lex.cc" +yy396: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '*') goto yy413; - if (yych == '/') goto yy415; - goto yy397; -yy404: + if (yych == '*') goto yy406; + if (yych == '/') goto yy408; + goto yy390; +yy397: ++YYCURSOR; -#line 508 "../src/ast/lex.re" +#line 494 "../src/ast/lex.re" { ++depth; goto code; } -#line 2518 "src/ast/lex.cc" -yy406: +#line 2455 "src/ast/lex.cc" +yy399: ++YYCURSOR; -#line 500 "../src/ast/lex.re" +#line 486 "../src/ast/lex.re" { if (--depth == 0) { yylval.code = new Code(get_fname (), line, tok, tok_len ()); @@ -2525,125 +2462,125 @@ yy406: } goto code; } -#line 2529 "src/ast/lex.cc" -yy408: +#line 2466 "src/ast/lex.cc" +yy401: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 32) { - goto yy408; + goto yy401; } - if (yych == '#') goto yy411; -yy410: + if (yych == '#') goto yy404; +yy403: YYCURSOR = YYMARKER; - goto yy399; -yy411: + goto yy392; +yy404: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy411; - goto yy410; + if (yych == '\t') goto yy404; + goto yy403; } else { - if (yych <= ' ') goto yy411; - if (yych == 'l') goto yy417; - goto yy410; + if (yych <= ' ') goto yy404; + if (yych == 'l') goto yy410; + goto yy403; } -yy413: +yy406: ++YYCURSOR; -#line 512 "../src/ast/lex.re" +#line 498 "../src/ast/lex.re" { lex_c_comment(); goto code; } -#line 2557 "src/ast/lex.cc" -yy415: +#line 2494 "src/ast/lex.cc" +yy408: ++YYCURSOR; -#line 513 "../src/ast/lex.re" +#line 499 "../src/ast/lex.re" { lex_cpp_comment(); goto code; } -#line 2562 "src/ast/lex.cc" -yy417: +#line 2499 "src/ast/lex.cc" +yy410: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy410; + if (yych != 'i') goto yy403; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy410; + if (yych != 'n') goto yy403; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy410; + if (yych != 'e') goto yy403; yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '0') goto yy422; - if (yych <= '9') goto yy410; - goto yy422; -yy421: + if (yych <= '0') goto yy415; + if (yych <= '9') goto yy403; + goto yy415; +yy414: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy422: +yy415: if (yych <= 0x1F) { - if (yych == '\t') goto yy421; - goto yy410; + if (yych == '\t') goto yy414; + goto yy403; } else { - if (yych <= ' ') goto yy421; - if (yych <= '0') goto yy410; - if (yych >= ':') goto yy410; + if (yych <= ' ') goto yy414; + if (yych <= '0') goto yy403; + if (yych >= ':') goto yy403; yyt1 = YYCURSOR; } -yy423: +yy416: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { - goto yy423; + goto yy416; } if (yych <= '\f') { - if (yych <= 0x08) goto yy410; - if (yych <= '\t') goto yy425; - if (yych <= '\n') goto yy427; - goto yy410; + if (yych <= 0x08) goto yy403; + if (yych <= '\t') goto yy418; + if (yych <= '\n') goto yy420; + goto yy403; } else { - if (yych <= '\r') goto yy429; - if (yych != ' ') goto yy410; + if (yych <= '\r') goto yy422; + if (yych != ' ') goto yy403; } -yy425: +yy418: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy425; - goto yy410; + if (yych == '\t') goto yy418; + goto yy403; } else { - if (yych <= ' ') goto yy425; - if (yych == '"') goto yy430; - goto yy410; + if (yych <= ' ') goto yy418; + if (yych == '"') goto yy423; + goto yy403; } -yy427: +yy420: ++YYCURSOR; YYCURSOR = yyt1; -#line 509 "../src/ast/lex.re" +#line 495 "../src/ast/lex.re" { set_sourceline (); goto code; } -#line 2621 "src/ast/lex.cc" -yy429: +#line 2558 "src/ast/lex.cc" +yy422: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy427; - goto yy410; -yy430: + if (yych == '\n') goto yy420; + goto yy403; +yy423: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy430; + goto yy423; } - if (yych <= '\n') goto yy410; - if (yych >= '#') goto yy433; + if (yych <= '\n') goto yy403; + if (yych >= '#') goto yy426; yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy427; - if (yych == '\r') goto yy429; - goto yy410; -yy433: + if (yych == '\n') goto yy420; + if (yych == '\r') goto yy422; + goto yy403; +yy426: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy410; - if (yych == '\n') goto yy410; - goto yy430; + if (yych <= 0x00) goto yy403; + if (yych == '\n') goto yy403; + goto yy423; } -#line 516 "../src/ast/lex.re" +#line 502 "../src/ast/lex.re" } @@ -2651,70 +2588,70 @@ void Scanner::lex_string(char delim) { loop: -#line 2655 "src/ast/lex.cc" +#line 2592 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '!') { if (yych <= '\n') { - if (yych <= 0x00) goto yy436; - if (yych <= '\t') goto yy438; - goto yy440; + if (yych <= 0x00) goto yy429; + if (yych <= '\t') goto yy431; + goto yy433; } else { - if (yych == '\r') goto yy442; - goto yy438; + if (yych == '\r') goto yy435; + goto yy431; } } else { if (yych <= '\'') { - if (yych <= '"') goto yy443; - if (yych <= '&') goto yy438; - goto yy443; + if (yych <= '"') goto yy436; + if (yych <= '&') goto yy431; + goto yy436; } else { - if (yych == '\\') goto yy445; - goto yy438; + if (yych == '\\') goto yy438; + goto yy431; } } -yy436: +yy429: ++YYCURSOR; -#line 526 "../src/ast/lex.re" +#line 512 "../src/ast/lex.re" { fail_if_eof(); goto loop; } -#line 2683 "src/ast/lex.cc" -yy438: +#line 2620 "src/ast/lex.cc" +yy431: ++YYCURSOR; -yy439: -#line 527 "../src/ast/lex.re" +yy432: +#line 513 "../src/ast/lex.re" { goto loop; } -#line 2689 "src/ast/lex.cc" -yy440: +#line 2626 "src/ast/lex.cc" +yy433: ++YYCURSOR; -#line 525 "../src/ast/lex.re" +#line 511 "../src/ast/lex.re" { next_line(); goto loop; } -#line 2694 "src/ast/lex.cc" -yy442: +#line 2631 "src/ast/lex.cc" +yy435: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy440; - goto yy439; -yy443: + if (yych == '\n') goto yy433; + goto yy432; +yy436: ++YYCURSOR; -#line 523 "../src/ast/lex.re" +#line 509 "../src/ast/lex.re" { if (cur[-1] == delim) return; else goto loop; } -#line 2703 "src/ast/lex.cc" -yy445: +#line 2640 "src/ast/lex.cc" +yy438: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '&') { - if (yych != '"') goto yy439; + if (yych != '"') goto yy432; } else { - if (yych <= '\'') goto yy446; - if (yych != '\\') goto yy439; + if (yych <= '\'') goto yy439; + if (yych != '\\') goto yy432; } -yy446: +yy439: ++YYCURSOR; -#line 524 "../src/ast/lex.re" +#line 510 "../src/ast/lex.re" { goto loop; } -#line 2716 "src/ast/lex.cc" +#line 2653 "src/ast/lex.cc" } -#line 528 "../src/ast/lex.re" +#line 514 "../src/ast/lex.re" } @@ -2722,49 +2659,49 @@ void Scanner::lex_c_comment() { loop: -#line 2726 "src/ast/lex.cc" +#line 2663 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy450; - if (yych == '\n') goto yy454; - goto yy452; + if (yych <= 0x00) goto yy443; + if (yych == '\n') goto yy447; + goto yy445; } else { - if (yych <= '\r') goto yy456; - if (yych == '*') goto yy457; - goto yy452; + if (yych <= '\r') goto yy449; + if (yych == '*') goto yy450; + goto yy445; } -yy450: +yy443: ++YYCURSOR; -#line 537 "../src/ast/lex.re" +#line 523 "../src/ast/lex.re" { fail_if_eof(); goto loop; } -#line 2744 "src/ast/lex.cc" -yy452: +#line 2681 "src/ast/lex.cc" +yy445: ++YYCURSOR; -yy453: -#line 538 "../src/ast/lex.re" +yy446: +#line 524 "../src/ast/lex.re" { goto loop; } -#line 2750 "src/ast/lex.cc" -yy454: +#line 2687 "src/ast/lex.cc" +yy447: ++YYCURSOR; -#line 536 "../src/ast/lex.re" +#line 522 "../src/ast/lex.re" { next_line(); goto loop; } -#line 2755 "src/ast/lex.cc" -yy456: +#line 2692 "src/ast/lex.cc" +yy449: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy454; - goto yy453; -yy457: + if (yych == '\n') goto yy447; + goto yy446; +yy450: yych = (YYCTYPE)*++YYCURSOR; - if (yych != '/') goto yy453; + if (yych != '/') goto yy446; ++YYCURSOR; -#line 535 "../src/ast/lex.re" +#line 521 "../src/ast/lex.re" { return; } -#line 2766 "src/ast/lex.cc" +#line 2703 "src/ast/lex.cc" } -#line 539 "../src/ast/lex.re" +#line 525 "../src/ast/lex.re" } @@ -2772,41 +2709,41 @@ void Scanner::lex_cpp_comment() { loop: -#line 2776 "src/ast/lex.cc" +#line 2713 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\n') { - if (yych <= 0x00) goto yy462; - if (yych <= '\t') goto yy464; - goto yy466; + if (yych <= 0x00) goto yy455; + if (yych <= '\t') goto yy457; + goto yy459; } else { - if (yych == '\r') goto yy468; - goto yy464; + if (yych == '\r') goto yy461; + goto yy457; } -yy462: +yy455: ++YYCURSOR; -#line 547 "../src/ast/lex.re" +#line 533 "../src/ast/lex.re" { fail_if_eof(); goto loop; } -#line 2793 "src/ast/lex.cc" -yy464: +#line 2730 "src/ast/lex.cc" +yy457: ++YYCURSOR; -yy465: -#line 548 "../src/ast/lex.re" +yy458: +#line 534 "../src/ast/lex.re" { goto loop; } -#line 2799 "src/ast/lex.cc" -yy466: +#line 2736 "src/ast/lex.cc" +yy459: ++YYCURSOR; -#line 546 "../src/ast/lex.re" +#line 532 "../src/ast/lex.re" { next_line(); return; } -#line 2804 "src/ast/lex.cc" -yy468: +#line 2741 "src/ast/lex.cc" +yy461: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy466; - goto yy465; + if (yych == '\n') goto yy459; + goto yy458; } -#line 549 "../src/ast/lex.re" +#line 535 "../src/ast/lex.re" } @@ -2818,44 +2755,44 @@ fst: tok = cur; c = get_column(); -#line 2822 "src/ast/lex.cc" +#line 2759 "src/ast/lex.cc" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych == ']') goto yy472; -#line 561 "../src/ast/lex.re" + if (yych == ']') goto yy465; +#line 547 "../src/ast/lex.re" { l = lex_cls_chr(); goto snd; } -#line 2830 "src/ast/lex.cc" -yy472: +#line 2767 "src/ast/lex.cc" +yy465: ++YYCURSOR; -#line 560 "../src/ast/lex.re" +#line 546 "../src/ast/lex.re" { return ast_cls(get_line(), c0, cls, neg); } -#line 2835 "src/ast/lex.cc" +#line 2772 "src/ast/lex.cc" } -#line 562 "../src/ast/lex.re" +#line 548 "../src/ast/lex.re" snd: -#line 2841 "src/ast/lex.cc" +#line 2778 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*(YYMARKER = YYCURSOR); - if (yych == '-') goto yy477; -yy476: -#line 565 "../src/ast/lex.re" + if (yych == '-') goto yy470; +yy469: +#line 551 "../src/ast/lex.re" { u = l; goto add; } -#line 2850 "src/ast/lex.cc" -yy477: +#line 2787 "src/ast/lex.cc" +yy470: yych = (YYCTYPE)*++YYCURSOR; - if (yych != ']') goto yy479; + if (yych != ']') goto yy472; YYCURSOR = YYMARKER; - goto yy476; -yy479: + goto yy469; +yy472: ++YYCURSOR; YYCURSOR -= 1; -#line 566 "../src/ast/lex.re" +#line 552 "../src/ast/lex.re" { u = lex_cls_chr(); if (l > u) { @@ -2864,9 +2801,9 @@ yy479: } goto add; } -#line 2868 "src/ast/lex.cc" +#line 2805 "src/ast/lex.cc" } -#line 574 "../src/ast/lex.re" +#line 560 "../src/ast/lex.re" add: cls->push_back(ASTRange(l, u, c)); @@ -2878,319 +2815,319 @@ uint32_t Scanner::lex_cls_chr() tok = cur; const uint32_t l = get_line(), c = get_column(); -#line 2882 "src/ast/lex.cc" +#line 2819 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy483; - if (yych == '\n') goto yy487; - goto yy485; + if (yych <= 0x00) goto yy476; + if (yych == '\n') goto yy480; + goto yy478; } else { - if (yych <= '\r') goto yy489; - if (yych == '\\') goto yy490; - goto yy485; + if (yych <= '\r') goto yy482; + if (yych == '\\') goto yy483; + goto yy478; } -yy483: +yy476: ++YYCURSOR; -#line 586 "../src/ast/lex.re" +#line 572 "../src/ast/lex.re" { fail_if_eof(); return 0; } -#line 2901 "src/ast/lex.cc" -yy485: +#line 2838 "src/ast/lex.cc" +yy478: ++YYCURSOR; -yy486: -#line 592 "../src/ast/lex.re" +yy479: +#line 578 "../src/ast/lex.re" { return static_cast(tok[0]); } -#line 2907 "src/ast/lex.cc" -yy487: +#line 2844 "src/ast/lex.cc" +yy480: ++YYCURSOR; -#line 587 "../src/ast/lex.re" +#line 573 "../src/ast/lex.re" { fatal_lc(l, c, "newline in character class"); } -#line 2912 "src/ast/lex.cc" -yy489: +#line 2849 "src/ast/lex.cc" +yy482: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy487; - goto yy486; -yy490: + if (yych == '\n') goto yy480; + goto yy479; +yy483: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '\\') { if (yych <= '/') { if (yych <= '\f') { - if (yych <= 0x00) goto yy491; - if (yych == '\n') goto yy487; - goto yy492; + if (yych <= 0x00) goto yy484; + if (yych == '\n') goto yy480; + goto yy485; } else { - if (yych <= '\r') goto yy494; - if (yych == '-') goto yy495; - goto yy492; + if (yych <= '\r') goto yy487; + if (yych == '-') goto yy488; + goto yy485; } } else { if (yych <= 'U') { - if (yych <= '3') goto yy497; - if (yych <= '7') goto yy499; - if (yych <= 'T') goto yy492; - goto yy500; + if (yych <= '3') goto yy490; + if (yych <= '7') goto yy492; + if (yych <= 'T') goto yy485; + goto yy493; } else { - if (yych == 'X') goto yy502; - if (yych <= '[') goto yy492; - goto yy503; + if (yych == 'X') goto yy495; + if (yych <= '[') goto yy485; + goto yy496; } } } else { if (yych <= 'n') { if (yych <= 'b') { - if (yych <= ']') goto yy505; - if (yych <= '`') goto yy492; - if (yych <= 'a') goto yy507; - goto yy509; + if (yych <= ']') goto yy498; + if (yych <= '`') goto yy485; + if (yych <= 'a') goto yy500; + goto yy502; } else { - if (yych == 'f') goto yy511; - if (yych <= 'm') goto yy492; - goto yy513; + if (yych == 'f') goto yy504; + if (yych <= 'm') goto yy485; + goto yy506; } } else { if (yych <= 't') { - if (yych == 'r') goto yy515; - if (yych <= 's') goto yy492; - goto yy517; + if (yych == 'r') goto yy508; + if (yych <= 's') goto yy485; + goto yy510; } else { if (yych <= 'v') { - if (yych <= 'u') goto yy502; - goto yy519; + if (yych <= 'u') goto yy495; + goto yy512; } else { - if (yych == 'x') goto yy521; - goto yy492; + if (yych == 'x') goto yy514; + goto yy485; } } } } -yy491: -#line 590 "../src/ast/lex.re" +yy484: +#line 576 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in escape sequence"); } -#line 2973 "src/ast/lex.cc" -yy492: +#line 2910 "src/ast/lex.cc" +yy485: ++YYCURSOR; -yy493: -#line 605 "../src/ast/lex.re" +yy486: +#line 591 "../src/ast/lex.re" { warn.useless_escape(l, c, tok[1]); return static_cast(tok[1]); } -#line 2982 "src/ast/lex.cc" -yy494: +#line 2919 "src/ast/lex.cc" +yy487: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy487; - goto yy493; -yy495: + if (yych == '\n') goto yy480; + goto yy486; +yy488: ++YYCURSOR; -#line 603 "../src/ast/lex.re" +#line 589 "../src/ast/lex.re" { return static_cast('-'); } -#line 2991 "src/ast/lex.cc" -yy497: +#line 2928 "src/ast/lex.cc" +yy490: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy498; - if (yych <= '7') goto yy522; -yy498: -#line 589 "../src/ast/lex.re" + if (yych <= '/') goto yy491; + if (yych <= '7') goto yy515; +yy491: +#line 575 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in octal escape sequence"); } -#line 3000 "src/ast/lex.cc" -yy499: +#line 2937 "src/ast/lex.cc" +yy492: ++YYCURSOR; - goto yy498; -yy500: + goto yy491; +yy493: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy501; - if (yych <= '9') goto yy524; + if (yych <= '/') goto yy494; + if (yych <= '9') goto yy517; } else { - if (yych <= 'F') goto yy524; - if (yych <= '`') goto yy501; - if (yych <= 'f') goto yy524; + if (yych <= 'F') goto yy517; + if (yych <= '`') goto yy494; + if (yych <= 'f') goto yy517; } -yy501: -#line 588 "../src/ast/lex.re" +yy494: +#line 574 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } -#line 3018 "src/ast/lex.cc" -yy502: +#line 2955 "src/ast/lex.cc" +yy495: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy501; - if (yych <= '9') goto yy525; - goto yy501; + if (yych <= '/') goto yy494; + if (yych <= '9') goto yy518; + goto yy494; } else { - if (yych <= 'F') goto yy525; - if (yych <= '`') goto yy501; - if (yych <= 'f') goto yy525; - goto yy501; + if (yych <= 'F') goto yy518; + if (yych <= '`') goto yy494; + if (yych <= 'f') goto yy518; + goto yy494; } -yy503: +yy496: ++YYCURSOR; -#line 602 "../src/ast/lex.re" +#line 588 "../src/ast/lex.re" { return static_cast('\\'); } -#line 3036 "src/ast/lex.cc" -yy505: +#line 2973 "src/ast/lex.cc" +yy498: ++YYCURSOR; -#line 604 "../src/ast/lex.re" +#line 590 "../src/ast/lex.re" { return static_cast(']'); } -#line 3041 "src/ast/lex.cc" -yy507: +#line 2978 "src/ast/lex.cc" +yy500: ++YYCURSOR; -#line 595 "../src/ast/lex.re" +#line 581 "../src/ast/lex.re" { return static_cast('\a'); } -#line 3046 "src/ast/lex.cc" -yy509: +#line 2983 "src/ast/lex.cc" +yy502: ++YYCURSOR; -#line 596 "../src/ast/lex.re" +#line 582 "../src/ast/lex.re" { return static_cast('\b'); } -#line 3051 "src/ast/lex.cc" -yy511: +#line 2988 "src/ast/lex.cc" +yy504: ++YYCURSOR; -#line 597 "../src/ast/lex.re" +#line 583 "../src/ast/lex.re" { return static_cast('\f'); } -#line 3056 "src/ast/lex.cc" -yy513: +#line 2993 "src/ast/lex.cc" +yy506: ++YYCURSOR; -#line 598 "../src/ast/lex.re" +#line 584 "../src/ast/lex.re" { return static_cast('\n'); } -#line 3061 "src/ast/lex.cc" -yy515: +#line 2998 "src/ast/lex.cc" +yy508: ++YYCURSOR; -#line 599 "../src/ast/lex.re" +#line 585 "../src/ast/lex.re" { return static_cast('\r'); } -#line 3066 "src/ast/lex.cc" -yy517: +#line 3003 "src/ast/lex.cc" +yy510: ++YYCURSOR; -#line 600 "../src/ast/lex.re" +#line 586 "../src/ast/lex.re" { return static_cast('\t'); } -#line 3071 "src/ast/lex.cc" -yy519: +#line 3008 "src/ast/lex.cc" +yy512: ++YYCURSOR; -#line 601 "../src/ast/lex.re" +#line 587 "../src/ast/lex.re" { return static_cast('\v'); } -#line 3076 "src/ast/lex.cc" -yy521: +#line 3013 "src/ast/lex.cc" +yy514: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy501; - if (yych <= '9') goto yy526; - goto yy501; + if (yych <= '/') goto yy494; + if (yych <= '9') goto yy519; + goto yy494; } else { - if (yych <= 'F') goto yy526; - if (yych <= '`') goto yy501; - if (yych <= 'f') goto yy526; - goto yy501; + if (yych <= 'F') goto yy519; + if (yych <= '`') goto yy494; + if (yych <= 'f') goto yy519; + goto yy494; } -yy522: +yy515: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '/') goto yy523; - if (yych <= '7') goto yy527; -yy523: + if (yych <= '/') goto yy516; + if (yych <= '7') goto yy520; +yy516: YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy498; + goto yy491; } else { - goto yy501; + goto yy494; } -yy524: +yy517: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych <= '9') goto yy529; - goto yy523; + if (yych <= '/') goto yy516; + if (yych <= '9') goto yy522; + goto yy516; } else { - if (yych <= 'F') goto yy529; - if (yych <= '`') goto yy523; - if (yych <= 'f') goto yy529; - goto yy523; + if (yych <= 'F') goto yy522; + if (yych <= '`') goto yy516; + if (yych <= 'f') goto yy522; + goto yy516; } -yy525: +yy518: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych <= '9') goto yy530; - goto yy523; + if (yych <= '/') goto yy516; + if (yych <= '9') goto yy523; + goto yy516; } else { - if (yych <= 'F') goto yy530; - if (yych <= '`') goto yy523; - if (yych <= 'f') goto yy530; - goto yy523; + if (yych <= 'F') goto yy523; + if (yych <= '`') goto yy516; + if (yych <= 'f') goto yy523; + goto yy516; } -yy526: +yy519: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych <= '9') goto yy531; - goto yy523; + if (yych <= '/') goto yy516; + if (yych <= '9') goto yy524; + goto yy516; } else { - if (yych <= 'F') goto yy531; - if (yych <= '`') goto yy523; - if (yych <= 'f') goto yy531; - goto yy523; + if (yych <= 'F') goto yy524; + if (yych <= '`') goto yy516; + if (yych <= 'f') goto yy524; + goto yy516; } -yy527: +yy520: ++YYCURSOR; -#line 594 "../src/ast/lex.re" +#line 580 "../src/ast/lex.re" { return unesc_oct(tok, cur); } -#line 3141 "src/ast/lex.cc" -yy529: +#line 3078 "src/ast/lex.cc" +yy522: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych <= '9') goto yy533; - goto yy523; + if (yych <= '/') goto yy516; + if (yych <= '9') goto yy526; + goto yy516; } else { - if (yych <= 'F') goto yy533; - if (yych <= '`') goto yy523; - if (yych <= 'f') goto yy533; - goto yy523; + if (yych <= 'F') goto yy526; + if (yych <= '`') goto yy516; + if (yych <= 'f') goto yy526; + goto yy516; } -yy530: +yy523: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych <= '9') goto yy526; - goto yy523; + if (yych <= '/') goto yy516; + if (yych <= '9') goto yy519; + goto yy516; } else { - if (yych <= 'F') goto yy526; - if (yych <= '`') goto yy523; - if (yych <= 'f') goto yy526; - goto yy523; + if (yych <= 'F') goto yy519; + if (yych <= '`') goto yy516; + if (yych <= 'f') goto yy519; + goto yy516; } -yy531: +yy524: ++YYCURSOR; -#line 593 "../src/ast/lex.re" +#line 579 "../src/ast/lex.re" { return unesc_hex(tok, cur); } -#line 3170 "src/ast/lex.cc" -yy533: +#line 3107 "src/ast/lex.cc" +yy526: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych >= ':') goto yy523; + if (yych <= '/') goto yy516; + if (yych >= ':') goto yy516; } else { - if (yych <= 'F') goto yy534; - if (yych <= '`') goto yy523; - if (yych >= 'g') goto yy523; + if (yych <= 'F') goto yy527; + if (yych <= '`') goto yy516; + if (yych >= 'g') goto yy516; } -yy534: +yy527: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy523; - if (yych <= '9') goto yy525; - goto yy523; + if (yych <= '/') goto yy516; + if (yych <= '9') goto yy518; + goto yy516; } else { - if (yych <= 'F') goto yy525; - if (yych <= '`') goto yy523; - if (yych <= 'f') goto yy525; - goto yy523; + if (yych <= 'F') goto yy518; + if (yych <= '`') goto yy516; + if (yych <= 'f') goto yy518; + goto yy516; } } -#line 609 "../src/ast/lex.re" +#line 595 "../src/ast/lex.re" } @@ -3200,309 +3137,309 @@ uint32_t Scanner::lex_str_chr(char quote, bool &end) tok = cur; const uint32_t l = get_line(), c = get_column(); -#line 3204 "src/ast/lex.cc" +#line 3141 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy537; - if (yych == '\n') goto yy541; - goto yy539; + if (yych <= 0x00) goto yy530; + if (yych == '\n') goto yy534; + goto yy532; } else { - if (yych <= '\r') goto yy543; - if (yych == '\\') goto yy544; - goto yy539; + if (yych <= '\r') goto yy536; + if (yych == '\\') goto yy537; + goto yy532; } -yy537: +yy530: ++YYCURSOR; -#line 619 "../src/ast/lex.re" +#line 605 "../src/ast/lex.re" { fail_if_eof(); return 0; } -#line 3223 "src/ast/lex.cc" -yy539: +#line 3160 "src/ast/lex.cc" +yy532: ++YYCURSOR; -yy540: -#line 625 "../src/ast/lex.re" +yy533: +#line 611 "../src/ast/lex.re" { end = tok[0] == quote; return static_cast(tok[0]); } -#line 3232 "src/ast/lex.cc" -yy541: +#line 3169 "src/ast/lex.cc" +yy534: ++YYCURSOR; -#line 620 "../src/ast/lex.re" +#line 606 "../src/ast/lex.re" { fatal_lc(l, c, "newline in character string"); } -#line 3237 "src/ast/lex.cc" -yy543: +#line 3174 "src/ast/lex.cc" +yy536: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy541; - goto yy540; -yy544: + if (yych == '\n') goto yy534; + goto yy533; +yy537: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '`') { if (yych <= '3') { if (yych <= '\n') { - if (yych <= 0x00) goto yy545; - if (yych <= '\t') goto yy546; - goto yy541; + if (yych <= 0x00) goto yy538; + if (yych <= '\t') goto yy539; + goto yy534; } else { - if (yych == '\r') goto yy548; - if (yych <= '/') goto yy546; - goto yy549; + if (yych == '\r') goto yy541; + if (yych <= '/') goto yy539; + goto yy542; } } else { if (yych <= 'W') { - if (yych <= '7') goto yy551; - if (yych == 'U') goto yy552; - goto yy546; + if (yych <= '7') goto yy544; + if (yych == 'U') goto yy545; + goto yy539; } else { - if (yych <= 'X') goto yy554; - if (yych == '\\') goto yy555; - goto yy546; + if (yych <= 'X') goto yy547; + if (yych == '\\') goto yy548; + goto yy539; } } } else { if (yych <= 'q') { if (yych <= 'e') { - if (yych <= 'a') goto yy557; - if (yych <= 'b') goto yy559; - goto yy546; + if (yych <= 'a') goto yy550; + if (yych <= 'b') goto yy552; + goto yy539; } else { - if (yych <= 'f') goto yy561; - if (yych == 'n') goto yy563; - goto yy546; + if (yych <= 'f') goto yy554; + if (yych == 'n') goto yy556; + goto yy539; } } else { if (yych <= 'u') { - if (yych <= 'r') goto yy565; - if (yych <= 's') goto yy546; - if (yych <= 't') goto yy567; - goto yy554; + if (yych <= 'r') goto yy558; + if (yych <= 's') goto yy539; + if (yych <= 't') goto yy560; + goto yy547; } else { - if (yych <= 'v') goto yy569; - if (yych == 'x') goto yy571; - goto yy546; + if (yych <= 'v') goto yy562; + if (yych == 'x') goto yy564; + goto yy539; } } } -yy545: -#line 623 "../src/ast/lex.re" +yy538: +#line 609 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in escape sequence"); } -#line 3293 "src/ast/lex.cc" -yy546: +#line 3230 "src/ast/lex.cc" +yy539: ++YYCURSOR; -yy547: -#line 639 "../src/ast/lex.re" +yy540: +#line 625 "../src/ast/lex.re" { if (tok[1] != quote) { warn.useless_escape(l, c, tok[1]); } return static_cast(tok[1]); } -#line 3304 "src/ast/lex.cc" -yy548: +#line 3241 "src/ast/lex.cc" +yy541: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy541; - goto yy547; -yy549: + if (yych == '\n') goto yy534; + goto yy540; +yy542: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy550; - if (yych <= '7') goto yy572; -yy550: -#line 622 "../src/ast/lex.re" + if (yych <= '/') goto yy543; + if (yych <= '7') goto yy565; +yy543: +#line 608 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in octal escape sequence"); } -#line 3317 "src/ast/lex.cc" -yy551: +#line 3254 "src/ast/lex.cc" +yy544: ++YYCURSOR; - goto yy550; -yy552: + goto yy543; +yy545: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy553; - if (yych <= '9') goto yy574; + if (yych <= '/') goto yy546; + if (yych <= '9') goto yy567; } else { - if (yych <= 'F') goto yy574; - if (yych <= '`') goto yy553; - if (yych <= 'f') goto yy574; + if (yych <= 'F') goto yy567; + if (yych <= '`') goto yy546; + if (yych <= 'f') goto yy567; } -yy553: -#line 621 "../src/ast/lex.re" +yy546: +#line 607 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } -#line 3335 "src/ast/lex.cc" -yy554: +#line 3272 "src/ast/lex.cc" +yy547: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy553; - if (yych <= '9') goto yy575; - goto yy553; + if (yych <= '/') goto yy546; + if (yych <= '9') goto yy568; + goto yy546; } else { - if (yych <= 'F') goto yy575; - if (yych <= '`') goto yy553; - if (yych <= 'f') goto yy575; - goto yy553; + if (yych <= 'F') goto yy568; + if (yych <= '`') goto yy546; + if (yych <= 'f') goto yy568; + goto yy546; } -yy555: +yy548: ++YYCURSOR; -#line 638 "../src/ast/lex.re" +#line 624 "../src/ast/lex.re" { return static_cast('\\'); } -#line 3353 "src/ast/lex.cc" -yy557: +#line 3290 "src/ast/lex.cc" +yy550: ++YYCURSOR; -#line 631 "../src/ast/lex.re" +#line 617 "../src/ast/lex.re" { return static_cast('\a'); } -#line 3358 "src/ast/lex.cc" -yy559: +#line 3295 "src/ast/lex.cc" +yy552: ++YYCURSOR; -#line 632 "../src/ast/lex.re" +#line 618 "../src/ast/lex.re" { return static_cast('\b'); } -#line 3363 "src/ast/lex.cc" -yy561: +#line 3300 "src/ast/lex.cc" +yy554: ++YYCURSOR; -#line 633 "../src/ast/lex.re" +#line 619 "../src/ast/lex.re" { return static_cast('\f'); } -#line 3368 "src/ast/lex.cc" -yy563: +#line 3305 "src/ast/lex.cc" +yy556: ++YYCURSOR; -#line 634 "../src/ast/lex.re" +#line 620 "../src/ast/lex.re" { return static_cast('\n'); } -#line 3373 "src/ast/lex.cc" -yy565: +#line 3310 "src/ast/lex.cc" +yy558: ++YYCURSOR; -#line 635 "../src/ast/lex.re" +#line 621 "../src/ast/lex.re" { return static_cast('\r'); } -#line 3378 "src/ast/lex.cc" -yy567: +#line 3315 "src/ast/lex.cc" +yy560: ++YYCURSOR; -#line 636 "../src/ast/lex.re" +#line 622 "../src/ast/lex.re" { return static_cast('\t'); } -#line 3383 "src/ast/lex.cc" -yy569: +#line 3320 "src/ast/lex.cc" +yy562: ++YYCURSOR; -#line 637 "../src/ast/lex.re" +#line 623 "../src/ast/lex.re" { return static_cast('\v'); } -#line 3388 "src/ast/lex.cc" -yy571: +#line 3325 "src/ast/lex.cc" +yy564: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy553; - if (yych <= '9') goto yy576; - goto yy553; + if (yych <= '/') goto yy546; + if (yych <= '9') goto yy569; + goto yy546; } else { - if (yych <= 'F') goto yy576; - if (yych <= '`') goto yy553; - if (yych <= 'f') goto yy576; - goto yy553; + if (yych <= 'F') goto yy569; + if (yych <= '`') goto yy546; + if (yych <= 'f') goto yy569; + goto yy546; } -yy572: +yy565: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '/') goto yy573; - if (yych <= '7') goto yy577; -yy573: + if (yych <= '/') goto yy566; + if (yych <= '7') goto yy570; +yy566: YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy550; + goto yy543; } else { - goto yy553; + goto yy546; } -yy574: +yy567: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych <= '9') goto yy579; - goto yy573; + if (yych <= '/') goto yy566; + if (yych <= '9') goto yy572; + goto yy566; } else { - if (yych <= 'F') goto yy579; - if (yych <= '`') goto yy573; - if (yych <= 'f') goto yy579; - goto yy573; + if (yych <= 'F') goto yy572; + if (yych <= '`') goto yy566; + if (yych <= 'f') goto yy572; + goto yy566; } -yy575: +yy568: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych <= '9') goto yy580; - goto yy573; + if (yych <= '/') goto yy566; + if (yych <= '9') goto yy573; + goto yy566; } else { - if (yych <= 'F') goto yy580; - if (yych <= '`') goto yy573; - if (yych <= 'f') goto yy580; - goto yy573; + if (yych <= 'F') goto yy573; + if (yych <= '`') goto yy566; + if (yych <= 'f') goto yy573; + goto yy566; } -yy576: +yy569: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych <= '9') goto yy581; - goto yy573; + if (yych <= '/') goto yy566; + if (yych <= '9') goto yy574; + goto yy566; } else { - if (yych <= 'F') goto yy581; - if (yych <= '`') goto yy573; - if (yych <= 'f') goto yy581; - goto yy573; + if (yych <= 'F') goto yy574; + if (yych <= '`') goto yy566; + if (yych <= 'f') goto yy574; + goto yy566; } -yy577: +yy570: ++YYCURSOR; -#line 630 "../src/ast/lex.re" +#line 616 "../src/ast/lex.re" { return unesc_oct(tok, cur); } -#line 3453 "src/ast/lex.cc" -yy579: +#line 3390 "src/ast/lex.cc" +yy572: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych <= '9') goto yy583; - goto yy573; + if (yych <= '/') goto yy566; + if (yych <= '9') goto yy576; + goto yy566; } else { - if (yych <= 'F') goto yy583; - if (yych <= '`') goto yy573; - if (yych <= 'f') goto yy583; - goto yy573; + if (yych <= 'F') goto yy576; + if (yych <= '`') goto yy566; + if (yych <= 'f') goto yy576; + goto yy566; } -yy580: +yy573: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych <= '9') goto yy576; - goto yy573; + if (yych <= '/') goto yy566; + if (yych <= '9') goto yy569; + goto yy566; } else { - if (yych <= 'F') goto yy576; - if (yych <= '`') goto yy573; - if (yych <= 'f') goto yy576; - goto yy573; + if (yych <= 'F') goto yy569; + if (yych <= '`') goto yy566; + if (yych <= 'f') goto yy569; + goto yy566; } -yy581: +yy574: ++YYCURSOR; -#line 629 "../src/ast/lex.re" +#line 615 "../src/ast/lex.re" { return unesc_hex(tok, cur); } -#line 3482 "src/ast/lex.cc" -yy583: +#line 3419 "src/ast/lex.cc" +yy576: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych >= ':') goto yy573; + if (yych <= '/') goto yy566; + if (yych >= ':') goto yy566; } else { - if (yych <= 'F') goto yy584; - if (yych <= '`') goto yy573; - if (yych >= 'g') goto yy573; + if (yych <= 'F') goto yy577; + if (yych <= '`') goto yy566; + if (yych >= 'g') goto yy566; } -yy584: +yy577: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy573; - if (yych <= '9') goto yy575; - goto yy573; + if (yych <= '/') goto yy566; + if (yych <= '9') goto yy568; + goto yy566; } else { - if (yych <= 'F') goto yy575; - if (yych <= '`') goto yy573; - if (yych <= 'f') goto yy575; - goto yy573; + if (yych <= 'F') goto yy568; + if (yych <= '`') goto yy566; + if (yych <= 'f') goto yy568; + goto yy566; } } -#line 645 "../src/ast/lex.re" +#line 631 "../src/ast/lex.re" } @@ -3522,7 +3459,7 @@ void Scanner::set_sourceline () sourceline: tok = cur; -#line 3526 "src/ast/lex.cc" +#line 3463 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -3563,54 +3500,54 @@ sourceline: yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { - if (yych >= 0x01) goto yy589; + if (yych >= 0x01) goto yy582; } else { - if (yych <= '\n') goto yy591; - if (yych <= '\f') goto yy589; - goto yy593; + if (yych <= '\n') goto yy584; + if (yych <= '\f') goto yy582; + goto yy586; } } else { if (yych <= '"') { - if (yych <= '!') goto yy589; - goto yy594; + if (yych <= '!') goto yy582; + goto yy587; } else { - if (yych <= '0') goto yy589; - if (yych <= '9') goto yy595; - goto yy589; + if (yych <= '0') goto yy582; + if (yych <= '9') goto yy588; + goto yy582; } } ++YYCURSOR; -#line 681 "../src/ast/lex.re" +#line 667 "../src/ast/lex.re" { --cur; return; } -#line 3586 "src/ast/lex.cc" -yy589: +#line 3523 "src/ast/lex.cc" +yy582: ++YYCURSOR; -yy590: -#line 682 "../src/ast/lex.re" +yy583: +#line 668 "../src/ast/lex.re" { goto sourceline; } -#line 3592 "src/ast/lex.cc" -yy591: +#line 3529 "src/ast/lex.cc" +yy584: ++YYCURSOR; -#line 680 "../src/ast/lex.re" +#line 666 "../src/ast/lex.re" { tok = cur; return; } -#line 3597 "src/ast/lex.cc" -yy593: +#line 3534 "src/ast/lex.cc" +yy586: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy591; - goto yy590; -yy594: + if (yych == '\n') goto yy584; + goto yy583; +yy587: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy590; - if (yych == '\n') goto yy590; - goto yy599; -yy595: + if (yych <= 0x00) goto yy583; + if (yych == '\n') goto yy583; + goto yy592; +yy588: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { - goto yy595; + goto yy588; } -#line 664 "../src/ast/lex.re" +#line 650 "../src/ast/lex.re" { uint32_t l; if (!s_to_u32_unsafe (tok, cur, l)) { @@ -3619,40 +3556,40 @@ yy595: set_line(l); goto sourceline; } -#line 3623 "src/ast/lex.cc" -yy598: +#line 3560 "src/ast/lex.cc" +yy591: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy599: +yy592: if (yybm[0+yych] & 128) { - goto yy598; + goto yy591; } - if (yych <= '\n') goto yy600; - if (yych <= '"') goto yy601; - goto yy603; -yy600: + if (yych <= '\n') goto yy593; + if (yych <= '"') goto yy594; + goto yy596; +yy593: YYCURSOR = YYMARKER; - goto yy590; -yy601: + goto yy583; +yy594: ++YYCURSOR; -#line 673 "../src/ast/lex.re" +#line 659 "../src/ast/lex.re" { std::string &name = get_input().escaped_name; name = std::string(tok + 1, tok_len () - 2); // strip quotes strrreplace(name, "\\", "\\\\"); goto sourceline; } -#line 3647 "src/ast/lex.cc" -yy603: +#line 3584 "src/ast/lex.cc" +yy596: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy600; - if (yych == '\n') goto yy600; - goto yy598; + if (yych <= 0x00) goto yy593; + if (yych == '\n') goto yy593; + goto yy591; } -#line 683 "../src/ast/lex.re" +#line 669 "../src/ast/lex.re" } diff --git a/re2c/bootstrap/src/ast/lex.h b/re2c/bootstrap/src/ast/lex.h index a5b65e9e..4b11a6f4 100644 --- a/re2c/bootstrap/src/ast/lex.h +++ b/re2c/bootstrap/src/ast/lex.h @@ -1,4 +1,4 @@ -/* Generated by re2c 1.1.1 on Thu Dec 27 22:37:13 2018 */ +/* Generated by re2c 1.1.1 on Thu Dec 27 22:47:12 2018 */ #include #include "src/util/forbid_copy.h" diff --git a/re2c/src/ast/lex.re b/re2c/src/ast/lex.re index 21fa7375..89d7b00e 100644 --- a/re2c/src/ast/lex.re +++ b/re2c/src/ast/lex.re @@ -109,6 +109,7 @@ struct ScannerState Scanner::ParseMode Scanner::echo(Output &out) { + const char *x, *y; if (is_eof()) return Stop; next: @@ -195,9 +196,9 @@ loop: goto next; } - "/*!include:re2c" { + "/*!include:re2c" space+ @x dstring @y space* eoc { out.wraw(tok, ptr); - lex_include(); + include(std::string(x + 1, static_cast(y - x) - 2)); goto next; } @@ -247,21 +248,6 @@ loop: */ } -void Scanner::lex_include() -{ - const char *x, *y; -/*!re2c - * { - fatal_lc(get_line(), get_column(), "syntax error in include directive"); - } - - space+ @x dstring @y space* eoc { - include(std::string(x + 1, static_cast(y - x) - 2)); - return; - } -*/ -} - void Scanner::lex_tags(Output &out, bool mtags) { std::string fmt, sep; diff --git a/re2c/src/ast/scanner.h b/re2c/src/ast/scanner.h index 742c3f64..0f2d7aea 100644 --- a/re2c/src/ast/scanner.h +++ b/re2c/src/ast/scanner.h @@ -61,7 +61,6 @@ private: size_t tok_len() const; void set_sourceline (); void lex_end_of_comment(Output &out); - void lex_include(); void lex_code_indented(); void lex_code_in_braces(); void lex_c_comment(); -- 2.40.0