From 5b85eba0ebe8f15065fab78078d3826334f81fd9 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Sun, 18 Nov 2018 12:19:27 +0000 Subject: [PATCH] Added missing #line info after /*!header:re2c: ... */ directive. Renamed: /*!header:re2c:1*/ -> /*!header:re2c:on*/ /*!header:re2c:0*/ -> /*!header:re2c:off*/ --- re2c/bootstrap/src/ast/lex.cc | 2337 ++++++++++---------- re2c/src/ast/lex.re | 12 +- re2c/test/header/header_01.theader_01.h.c | 7 +- re2c/test/header/header_01.theader_01.h.re | 4 +- re2c/test/header/header_02.theader_02.h.c | 5 +- re2c/test/header/header_02.theader_02.h.re | 4 +- 6 files changed, 1200 insertions(+), 1169 deletions(-) diff --git a/re2c/bootstrap/src/ast/lex.cc b/re2c/bootstrap/src/ast/lex.cc index 25286085..82e586b2 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 Sat Nov 17 22:59:36 2018 */ +/* Generated by re2c 1.1.1 on Sun Nov 18 12:18:36 2018 */ #line 1 "../src/ast/lex.re" #include "src/util/c99_stdint.h" #include @@ -85,7 +85,7 @@ echo: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17); + if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { @@ -105,7 +105,7 @@ echo: } } ++YYCURSOR; -#line 140 "../src/ast/lex.re" +#line 148 "../src/ast/lex.re" { if (cur != eof) goto echo; out.wraw(tok, ptr); @@ -115,7 +115,7 @@ echo: yy4: ++YYCURSOR; yy5: -#line 158 "../src/ast/lex.re" +#line 166 "../src/ast/lex.re" { goto echo; } #line 121 "src/ast/lex.cc" yy6: @@ -126,7 +126,7 @@ yy6: } if (yych == '#') goto yy14; yy7: -#line 152 "../src/ast/lex.re" +#line 160 "../src/ast/lex.re" { cline++; pos = cur; @@ -459,7 +459,7 @@ yy76: yy78: ++YYCURSOR; YYCURSOR = YYCTXMARKER; -#line 146 "../src/ast/lex.re" +#line 154 "../src/ast/lex.re" { out.wraw(tok, ptr + 1); set_sourceline(); @@ -735,12 +735,11 @@ yy142: goto yy13; yy143: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '1') goto yy147; + if (yych == 'o') goto yy147; goto yy13; yy144: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '2') goto yy149; + if (yych == '2') goto yy148; goto yy13; yy145: ++YYCURSOR; @@ -751,20 +750,31 @@ yy145: lex_end_of_comment(out); goto echo; } -#line 755 "src/ast/lex.cc" +#line 754 "src/ast/lex.cc" yy147: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'f') goto yy149; + if (yych == 'n') goto yy150; + goto yy13; +yy148: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'c') goto yy152; + goto yy13; +yy149: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'f') goto yy154; + goto yy13; +yy150: ++YYCURSOR; #line 133 "../src/ast/lex.re" { out.wraw(tok, ptr); - out.header_mode(cur[-1] == '1'); + out.header_mode(true); lex_end_of_comment(out); goto echo; } -#line 765 "src/ast/lex.cc" -yy149: - yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy13; +#line 777 "src/ast/lex.cc" +yy152: ++YYCURSOR; #line 98 "../src/ast/lex.re" { @@ -773,9 +783,20 @@ yy149: lex_end_of_comment(out); goto echo; } -#line 777 "src/ast/lex.cc" +#line 787 "src/ast/lex.cc" +yy154: + ++YYCURSOR; +#line 140 "../src/ast/lex.re" + { + out.wraw(tok, ptr); + out.header_mode(false); + out.wdelay_line_info_input(cline, get_fname()); + lex_end_of_comment(out); + goto echo; + } +#line 798 "src/ast/lex.cc" } -#line 159 "../src/ast/lex.re" +#line 167 "../src/ast/lex.re" } @@ -783,45 +804,45 @@ void Scanner::lex_end_of_comment(OutputFile &out) { uint32_t ignored = 0; for (;;) { -#line 787 "src/ast/lex.cc" +#line 808 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy154; - if (yych == '\n') goto yy158; - goto yy156; + if (yych <= 0x00) goto yy158; + if (yych == '\n') goto yy162; + goto yy160; } else { - if (yych <= '\r') goto yy160; - if (yych == '*') goto yy161; - goto yy156; + if (yych <= '\r') goto yy164; + if (yych == '*') goto yy165; + goto yy160; } -yy154: +yy158: ++YYCURSOR; -#line 166 "../src/ast/lex.re" +#line 174 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "expected end of block"); } -#line 805 "src/ast/lex.cc" -yy156: +#line 826 "src/ast/lex.cc" +yy160: ++YYCURSOR; -yy157: -#line 168 "../src/ast/lex.re" +yy161: +#line 176 "../src/ast/lex.re" { continue; } -#line 811 "src/ast/lex.cc" -yy158: +#line 832 "src/ast/lex.cc" +yy162: ++YYCURSOR; -#line 169 "../src/ast/lex.re" +#line 177 "../src/ast/lex.re" { ++ignored; continue; } -#line 816 "src/ast/lex.cc" -yy160: +#line 837 "src/ast/lex.cc" +yy164: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy158; - goto yy157; -yy161: + if (yych == '\n') goto yy162; + goto yy161; +yy165: yych = (YYCTYPE)*++YYCURSOR; - if (yych != '/') goto yy157; + if (yych != '/') goto yy161; ++YYCURSOR; -#line 170 "../src/ast/lex.re" +#line 178 "../src/ast/lex.re" { if (ignored > 0) { cline += ignored; @@ -830,9 +851,9 @@ yy161: tok = pos = cur; return; } -#line 834 "src/ast/lex.cc" +#line 855 "src/ast/lex.cc" } -#line 178 "../src/ast/lex.re" +#line 186 "../src/ast/lex.re" } } @@ -840,7 +861,7 @@ void Scanner::lex_tags(OutputFile &out, bool mtags) { std::string fmt, sep; for (;;) { -#line 844 "src/ast/lex.cc" +#line 865 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -880,119 +901,119 @@ void Scanner::lex_tags(OutputFile &out, bool mtags) if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy168; + goto yy172; } if (yych <= ')') { if (yych <= '\n') { - if (yych >= '\t') goto yy171; + if (yych >= '\t') goto yy175; } else { - if (yych == '\r') goto yy173; + if (yych == '\r') goto yy177; } } else { if (yych <= 'f') { - if (yych <= '*') goto yy174; - if (yych >= 'f') goto yy175; + if (yych <= '*') goto yy178; + if (yych >= 'f') goto yy179; } else { - if (yych == 's') goto yy176; + if (yych == 's') goto yy180; } } ++YYCURSOR; -yy167: -#line 185 "../src/ast/lex.re" +yy171: +#line 193 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "unrecognized configuration"); } -#line 904 "src/ast/lex.cc" -yy168: +#line 925 "src/ast/lex.cc" +yy172: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy168; + goto yy172; } -#line 190 "../src/ast/lex.re" +#line 198 "../src/ast/lex.re" { continue; } -#line 914 "src/ast/lex.cc" -yy171: +#line 935 "src/ast/lex.cc" +yy175: ++YYCURSOR; -#line 191 "../src/ast/lex.re" +#line 199 "../src/ast/lex.re" { ++cline; continue; } -#line 919 "src/ast/lex.cc" -yy173: +#line 940 "src/ast/lex.cc" +yy177: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy171; - goto yy167; -yy174: + if (yych == '\n') goto yy175; + goto yy171; +yy178: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '/') goto yy177; - goto yy167; -yy175: + if (yych == '/') goto yy181; + goto yy171; +yy179: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'o') goto yy179; - goto yy167; -yy176: + if (yych == 'o') goto yy183; + goto yy171; +yy180: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy181; - goto yy167; -yy177: + if (yych == 'e') goto yy185; + goto yy171; +yy181: ++YYCURSOR; -#line 192 "../src/ast/lex.re" +#line 200 "../src/ast/lex.re" { out.wdelay_tags(new ConfTags(fmt, sep), mtags); tok = pos = cur; return; } -#line 944 "src/ast/lex.cc" -yy179: - yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'r') goto yy182; -yy180: - YYCURSOR = YYMARKER; - goto yy167; -yy181: - yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'p') goto yy183; - goto yy180; -yy182: - yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'm') goto yy184; - goto yy180; +#line 965 "src/ast/lex.cc" yy183: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy185; - goto yy180; + if (yych == 'r') goto yy186; yy184: - yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy186; - goto yy180; + YYCURSOR = YYMARKER; + goto yy171; yy185: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'r') goto yy187; - goto yy180; + if (yych == 'p') goto yy187; + goto yy184; yy186: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 't') goto yy188; - goto yy180; + if (yych == 'm') goto yy188; + goto yy184; yy187: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy190; - goto yy180; + if (yych == 'a') goto yy189; + goto yy184; yy188: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'a') goto yy190; + goto yy184; +yy189: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'r') goto yy191; + goto yy184; +yy190: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 't') goto yy192; + goto yy184; +yy191: + yych = (YYCTYPE)*++YYCURSOR; + if (yych == 'a') goto yy194; + goto yy184; +yy192: ++YYCURSOR; -#line 187 "../src/ast/lex.re" +#line 195 "../src/ast/lex.re" { fmt = lex_conf_string(); continue; } -#line 983 "src/ast/lex.cc" -yy190: +#line 1004 "src/ast/lex.cc" +yy194: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy180; + if (yych != 't') goto yy184; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy180; + if (yych != 'o') goto yy184; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy180; + if (yych != 'r') goto yy184; ++YYCURSOR; -#line 188 "../src/ast/lex.re" +#line 196 "../src/ast/lex.re" { sep = lex_conf_string(); continue; } -#line 994 "src/ast/lex.cc" +#line 1015 "src/ast/lex.cc" } -#line 197 "../src/ast/lex.re" +#line 205 "../src/ast/lex.re" } } @@ -1002,7 +1023,7 @@ scan: tchar = cur - pos; tok = cur; -#line 1006 "src/ast/lex.cc" +#line 1027 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1043,101 +1064,101 @@ scan: if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { - goto yy199; + goto yy203; } if (yych <= '9') { if (yych <= '%') { if (yych <= '\r') { - if (yych <= 0x08) goto yy197; - if (yych <= '\n') goto yy202; - if (yych >= '\r') goto yy204; + if (yych <= 0x08) goto yy201; + if (yych <= '\n') goto yy206; + if (yych >= '\r') goto yy208; } else { if (yych <= '"') { - if (yych >= '"') goto yy205; + if (yych >= '"') goto yy209; } else { - if (yych <= '#') goto yy207; - if (yych >= '%') goto yy208; + if (yych <= '#') goto yy211; + if (yych >= '%') goto yy212; } } } else { if (yych <= '*') { - if (yych <= '&') goto yy197; - if (yych <= '\'') goto yy209; - if (yych <= ')') goto yy211; - goto yy213; + if (yych <= '&') goto yy201; + if (yych <= '\'') goto yy213; + if (yych <= ')') goto yy215; + goto yy217; } else { if (yych <= '-') { - if (yych <= '+') goto yy211; + if (yych <= '+') goto yy215; } else { - if (yych <= '.') goto yy214; - if (yych <= '/') goto yy216; + if (yych <= '.') goto yy218; + if (yych <= '/') goto yy220; } } } } else { if (yych <= '[') { if (yych <= '=') { - if (yych <= ':') goto yy217; - if (yych <= ';') goto yy211; - if (yych <= '<') goto yy218; - goto yy220; + if (yych <= ':') goto yy221; + if (yych <= ';') goto yy215; + if (yych <= '<') goto yy222; + goto yy224; } else { if (yych <= '?') { - if (yych >= '?') goto yy211; + if (yych >= '?') goto yy215; } else { - if (yych <= '@') goto yy207; - if (yych <= 'Z') goto yy221; - goto yy224; + if (yych <= '@') goto yy211; + if (yych <= 'Z') goto yy225; + goto yy228; } } } else { if (yych <= 'q') { if (yych <= '^') { - if (yych <= '\\') goto yy211; + if (yych <= '\\') goto yy215; } else { - if (yych != '`') goto yy221; + if (yych != '`') goto yy225; } } else { if (yych <= 'z') { - if (yych <= 'r') goto yy226; - goto yy221; + if (yych <= 'r') goto yy230; + goto yy225; } else { - if (yych <= '{') goto yy227; - if (yych <= '|') goto yy211; + if (yych <= '{') goto yy231; + if (yych <= '|') goto yy215; } } } } -yy197: +yy201: ++YYCURSOR; -yy198: -#line 321 "../src/ast/lex.re" +yy202: +#line 329 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "unexpected character: '%c'", *tok); goto scan; } -#line 1120 "src/ast/lex.cc" -yy199: +#line 1141 "src/ast/lex.cc" +yy203: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { - goto yy199; + goto yy203; } -#line 302 "../src/ast/lex.re" +#line 310 "../src/ast/lex.re" { goto scan; } -#line 1130 "src/ast/lex.cc" -yy202: +#line 1151 "src/ast/lex.cc" +yy206: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy229; + if (yych == '\t') goto yy233; } else { - if (yych <= ' ') goto yy229; - if (yych == '#') goto yy232; + if (yych <= ' ') goto yy233; + if (yych == '#') goto yy236; } -yy203: -#line 309 "../src/ast/lex.re" +yy207: +#line 317 "../src/ast/lex.re" { pos = cur; cline++; @@ -1149,81 +1170,81 @@ yy203: goto scan; } } -#line 1153 "src/ast/lex.cc" -yy204: +#line 1174 "src/ast/lex.cc" +yy208: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy202; - goto yy198; -yy205: + if (yych == '\n') goto yy206; + goto yy202; +yy209: ++YYCURSOR; -#line 219 "../src/ast/lex.re" +#line 227 "../src/ast/lex.re" { yylval.regexp = lex_str('"'); return TOKEN_REGEXP; } -#line 1162 "src/ast/lex.cc" -yy207: +#line 1183 "src/ast/lex.cc" +yy211: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '^') { - if (yych <= '@') goto yy198; - if (yych <= 'Z') goto yy234; - goto yy198; + if (yych <= '@') goto yy202; + if (yych <= 'Z') goto yy238; + goto yy202; } else { - if (yych == '`') goto yy198; - if (yych <= 'z') goto yy234; - goto yy198; + if (yych == '`') goto yy202; + if (yych <= 'z') goto yy238; + goto yy202; } -yy208: +yy212: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '}') goto yy237; - goto yy198; -yy209: + if (yych == '}') goto yy241; + goto yy202; +yy213: ++YYCURSOR; -#line 218 "../src/ast/lex.re" +#line 226 "../src/ast/lex.re" { yylval.regexp = lex_str('\''); return TOKEN_REGEXP; } -#line 1182 "src/ast/lex.cc" -yy211: +#line 1203 "src/ast/lex.cc" +yy215: ++YYCURSOR; -yy212: -#line 229 "../src/ast/lex.re" +yy216: +#line 237 "../src/ast/lex.re" { return *tok; } -#line 1188 "src/ast/lex.cc" -yy213: +#line 1209 "src/ast/lex.cc" +yy217: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '/') goto yy237; - goto yy212; -yy214: + if (yych == '/') goto yy241; + goto yy216; +yy218: ++YYCURSOR; -#line 297 "../src/ast/lex.re" +#line 305 "../src/ast/lex.re" { yylval.regexp = ast_dot(cline, get_column()); return TOKEN_REGEXP; } -#line 1200 "src/ast/lex.cc" -yy216: +#line 1221 "src/ast/lex.cc" +yy220: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '*') goto yy239; - if (yych == '/') goto yy241; - goto yy212; -yy217: + if (yych == '*') goto yy243; + if (yych == '/') goto yy245; + goto yy216; +yy221: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '=') goto yy243; - goto yy198; -yy218: + if (yych == '=') goto yy247; + goto yy202; +yy222: ++YYCURSOR; -#line 211 "../src/ast/lex.re" +#line 219 "../src/ast/lex.re" { return lex_clist(); } -#line 1214 "src/ast/lex.cc" -yy220: +#line 1235 "src/ast/lex.cc" +yy224: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '>') goto yy245; - goto yy212; -yy221: + if (yych == '>') goto yy249; + goto yy216; +yy225: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy222: +yy226: if (yybm[0+yych] & 32) { - goto yy221; + goto yy225; } -#line 274 "../src/ast/lex.re" +#line 282 "../src/ast/lex.re" { if (!globopts->FFlag || lex_namedef_context_re2c()) { yylval.str = new std::string (tok, tok_len()); @@ -1246,194 +1267,194 @@ yy222: return TOKEN_REGEXP; } } -#line 1250 "src/ast/lex.cc" -yy224: +#line 1271 "src/ast/lex.cc" +yy228: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '^') goto yy247; -#line 220 "../src/ast/lex.re" + if (yych == '^') goto yy251; +#line 228 "../src/ast/lex.re" { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; } -#line 1256 "src/ast/lex.cc" -yy226: +#line 1277 "src/ast/lex.cc" +yy230: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy249; - goto yy222; -yy227: + if (yych == 'e') goto yy253; + goto yy226; +yy231: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { - goto yy252; + goto yy256; } if (yych <= 'Z') { - if (yych == ',') goto yy250; - if (yych >= 'A') goto yy254; + if (yych == ',') goto yy254; + if (yych >= 'A') goto yy258; } else { if (yych <= '_') { - if (yych >= '_') goto yy254; + if (yych >= '_') goto yy258; } else { - if (yych <= '`') goto yy228; - if (yych <= 'z') goto yy254; + if (yych <= '`') goto yy232; + if (yych <= 'z') goto yy258; } } -yy228: -#line 206 "../src/ast/lex.re" +yy232: +#line 214 "../src/ast/lex.re" { lex_code_in_braces(); return TOKEN_CODE; } -#line 1281 "src/ast/lex.cc" -yy229: +#line 1302 "src/ast/lex.cc" +yy233: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy229; + if (yych == '\t') goto yy233; } else { - if (yych <= ' ') goto yy229; - if (yych == '#') goto yy232; + if (yych <= ' ') goto yy233; + if (yych == '#') goto yy236; } -yy231: +yy235: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept == 0) { - goto yy203; + goto yy207; } else { - goto yy228; + goto yy232; } } else { - goto yy251; + goto yy255; } -yy232: +yy236: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy232; - goto yy231; + if (yych == '\t') goto yy236; + goto yy235; } else { - if (yych <= ' ') goto yy232; - if (yych == 'l') goto yy256; - goto yy231; + if (yych <= ' ') goto yy236; + if (yych == 'l') goto yy260; + goto yy235; } -yy234: +yy238: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 'Z') { - if (yych <= '/') goto yy236; - if (yych <= '9') goto yy234; - if (yych >= 'A') goto yy234; + if (yych <= '/') goto yy240; + if (yych <= '9') goto yy238; + if (yych >= 'A') goto yy238; } else { if (yych <= '_') { - if (yych >= '_') goto yy234; + if (yych >= '_') goto yy238; } else { - if (yych <= '`') goto yy236; - if (yych <= 'z') goto yy234; + if (yych <= '`') goto yy240; + if (yych <= 'z') goto yy238; } } -yy236: -#line 223 "../src/ast/lex.re" +yy240: +#line 231 "../src/ast/lex.re" { const std::string *name = new std::string(tok + 1, tok_len() - 1); yylval.regexp = ast_tag(cline, get_column(), name, tok[0] == '#'); return TOKEN_REGEXP; } -#line 1338 "src/ast/lex.cc" -yy237: +#line 1359 "src/ast/lex.cc" +yy241: ++YYCURSOR; -#line 216 "../src/ast/lex.re" +#line 224 "../src/ast/lex.re" { tok = cur; return 0; } -#line 1343 "src/ast/lex.cc" -yy239: +#line 1364 "src/ast/lex.cc" +yy243: ++YYCURSOR; -#line 214 "../src/ast/lex.re" +#line 222 "../src/ast/lex.re" { lex_c_comment(); goto scan; } -#line 1348 "src/ast/lex.cc" -yy241: +#line 1369 "src/ast/lex.cc" +yy245: ++YYCURSOR; -#line 213 "../src/ast/lex.re" +#line 221 "../src/ast/lex.re" { lex_cpp_comment(); goto scan; } -#line 1353 "src/ast/lex.cc" -yy243: +#line 1374 "src/ast/lex.cc" +yy247: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '>') goto yy257; -#line 207 "../src/ast/lex.re" + if (yych == '>') goto yy261; +#line 215 "../src/ast/lex.re" { lex_code_indented(); return TOKEN_CODE; } -#line 1359 "src/ast/lex.cc" -yy245: +#line 1380 "src/ast/lex.cc" +yy249: ++YYCURSOR; -#line 209 "../src/ast/lex.re" +#line 217 "../src/ast/lex.re" { lex_cgoto(); return TOKEN_CNEXT; } -#line 1364 "src/ast/lex.cc" -yy247: +#line 1385 "src/ast/lex.cc" +yy251: ++YYCURSOR; -#line 221 "../src/ast/lex.re" +#line 229 "../src/ast/lex.re" { yylval.regexp = lex_cls(true); return TOKEN_REGEXP; } -#line 1369 "src/ast/lex.cc" -yy249: +#line 1390 "src/ast/lex.cc" +yy253: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '2') goto yy259; - goto yy222; -yy250: + if (yych == '2') goto yy263; + goto yy226; +yy254: ++YYCURSOR; -yy251: -#line 258 "../src/ast/lex.re" +yy255: +#line 266 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } -#line 1382 "src/ast/lex.cc" -yy252: +#line 1403 "src/ast/lex.cc" +yy256: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { - goto yy252; + goto yy256; } - if (yych == ',') goto yy260; - if (yych == '}') goto yy261; - goto yy231; -yy254: + if (yych == ',') goto yy264; + if (yych == '}') goto yy265; + goto yy235; +yy258: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= '^') { if (yych <= '9') { - if (yych <= '/') goto yy231; - goto yy254; + if (yych <= '/') goto yy235; + goto yy258; } else { - if (yych <= '@') goto yy231; - if (yych <= 'Z') goto yy254; - goto yy231; + if (yych <= '@') goto yy235; + if (yych <= 'Z') goto yy258; + goto yy235; } } else { if (yych <= 'z') { - if (yych == '`') goto yy231; - goto yy254; + if (yych == '`') goto yy235; + goto yy258; } else { - if (yych == '}') goto yy263; - goto yy231; + if (yych == '}') goto yy267; + goto yy235; } } -yy256: +yy260: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'i') goto yy265; - goto yy231; -yy257: + if (yych == 'i') goto yy269; + goto yy235; +yy261: ++YYCURSOR; -#line 210 "../src/ast/lex.re" +#line 218 "../src/ast/lex.re" { lex_cgoto(); return TOKEN_CJUMP; } -#line 1423 "src/ast/lex.cc" -yy259: +#line 1444 "src/ast/lex.cc" +yy263: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'c') goto yy266; - goto yy222; -yy260: + if (yych == 'c') goto yy270; + goto yy226; +yy264: yyaccept = 2; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy251; - if (yych <= '9') goto yy267; - if (yych == '}') goto yy269; - goto yy251; -yy261: + if (yych <= '/') goto yy255; + if (yych <= '9') goto yy271; + if (yych == '}') goto yy273; + goto yy255; +yy265: ++YYCURSOR; -#line 231 "../src/ast/lex.re" +#line 239 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition count overflow"); @@ -1441,10 +1462,10 @@ yy261: yylval.bounds.max = yylval.bounds.min; return TOKEN_CLOSESIZE; } -#line 1445 "src/ast/lex.cc" -yy263: +#line 1466 "src/ast/lex.cc" +yy267: ++YYCURSOR; -#line 263 "../src/ast/lex.re" +#line 271 "../src/ast/lex.re" { if (!globopts->FFlag) { fatal_lc(get_cline(), get_column(), @@ -1453,26 +1474,26 @@ yy263: yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces return TOKEN_ID; } -#line 1457 "src/ast/lex.cc" -yy265: +#line 1478 "src/ast/lex.cc" +yy269: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'n') goto yy271; - goto yy231; -yy266: + if (yych == 'n') goto yy275; + goto yy235; +yy270: yych = (YYCTYPE)*++YYCURSOR; - if (yych == ':') goto yy272; - goto yy222; -yy267: + if (yych == ':') goto yy276; + goto yy226; +yy271: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= '/') goto yy231; - if (yych <= '9') goto yy267; - if (yych == '}') goto yy274; - goto yy231; -yy269: + if (yych <= '/') goto yy235; + if (yych <= '9') goto yy271; + if (yych == '}') goto yy278; + goto yy235; +yy273: ++YYCURSOR; -#line 250 "../src/ast/lex.re" +#line 258 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition lower bound overflow"); @@ -1480,19 +1501,19 @@ yy269: yylval.bounds.max = std::numeric_limits::max(); return TOKEN_CLOSESIZE; } -#line 1484 "src/ast/lex.cc" -yy271: +#line 1505 "src/ast/lex.cc" +yy275: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy276; - goto yy231; -yy272: + if (yych == 'e') goto yy280; + goto yy235; +yy276: ++YYCURSOR; -#line 272 "../src/ast/lex.re" +#line 280 "../src/ast/lex.re" { return TOKEN_CONF; } -#line 1493 "src/ast/lex.cc" -yy274: +#line 1514 "src/ast/lex.cc" +yy278: ++YYCURSOR; -#line 239 "../src/ast/lex.re" +#line 247 "../src/ast/lex.re" { const char * p = strchr (tok, ','); if (!s_to_u32_unsafe (tok + 1, p, yylval.bounds.min)) { @@ -1503,101 +1524,101 @@ yy274: } return TOKEN_CLOSESIZE; } -#line 1507 "src/ast/lex.cc" -yy276: +#line 1528 "src/ast/lex.cc" +yy280: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '0') goto yy278; - if (yych <= '9') goto yy231; - goto yy278; -yy277: + if (yych <= '0') goto yy282; + if (yych <= '9') goto yy235; + goto yy282; +yy281: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy278: +yy282: if (yych <= 0x1F) { - if (yych == '\t') goto yy277; - goto yy231; + if (yych == '\t') goto yy281; + goto yy235; } else { - if (yych <= ' ') goto yy277; - if (yych <= '0') goto yy231; - if (yych >= ':') goto yy231; + if (yych <= ' ') goto yy281; + if (yych <= '0') goto yy235; + if (yych >= ':') goto yy235; YYCTXMARKER = YYCURSOR; } -yy279: +yy283: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { - if (yych <= 0x08) goto yy231; + if (yych <= 0x08) goto yy235; } else { - if (yych <= '\n') goto yy283; - if (yych <= '\f') goto yy231; - goto yy285; + if (yych <= '\n') goto yy287; + if (yych <= '\f') goto yy235; + goto yy289; } } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy231; + if (yych <= 0x1F) goto yy235; } else { - if (yych <= '/') goto yy231; - if (yych <= '9') goto yy279; - goto yy231; + if (yych <= '/') goto yy235; + if (yych <= '9') goto yy283; + goto yy235; } } -yy281: +yy285: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy281; - goto yy231; + if (yych == '\t') goto yy285; + goto yy235; } else { - if (yych <= ' ') goto yy281; - if (yych == '"') goto yy286; - goto yy231; + if (yych <= ' ') goto yy285; + if (yych == '"') goto yy290; + goto yy235; } -yy283: +yy287: ++YYCURSOR; YYCURSOR = YYCTXMARKER; -#line 304 "../src/ast/lex.re" +#line 312 "../src/ast/lex.re" { set_sourceline (); return TOKEN_LINE_INFO; } -#line 1568 "src/ast/lex.cc" -yy285: +#line 1589 "src/ast/lex.cc" +yy289: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy283; - goto yy231; -yy286: + if (yych == '\n') goto yy287; + goto yy235; +yy290: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy286; + goto yy290; } - if (yych <= '\n') goto yy231; - if (yych >= '#') goto yy289; + if (yych <= '\n') goto yy235; + if (yych >= '#') goto yy293; yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy283; - if (yych == '\r') goto yy285; - goto yy231; -yy289: + if (yych == '\n') goto yy287; + if (yych == '\r') goto yy289; + goto yy235; +yy293: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy231; - if (yych == '\n') goto yy231; - goto yy286; + if (yych <= 0x00) goto yy235; + if (yych == '\n') goto yy235; + goto yy290; } -#line 325 "../src/ast/lex.re" +#line 333 "../src/ast/lex.re" } bool Scanner::lex_namedef_context_re2c() { -#line 1601 "src/ast/lex.cc" +#line 1622 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1639,50 +1660,50 @@ bool Scanner::lex_namedef_context_re2c() if (yych <= 0x1F) { if (yych == '\t') { YYCTXMARKER = YYCURSOR; - goto yy293; + goto yy297; } } else { if (yych <= ' ') { YYCTXMARKER = YYCURSOR; - goto yy293; + goto yy297; } if (yych == '=') { YYCTXMARKER = YYCURSOR; - goto yy296; + goto yy300; } } -yy292: -#line 332 "../src/ast/lex.re" +yy296: +#line 340 "../src/ast/lex.re" { return false; } -#line 1658 "src/ast/lex.cc" -yy293: +#line 1679 "src/ast/lex.cc" +yy297: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy293; + goto yy297; } - if (yych == '=') goto yy296; -yy295: + if (yych == '=') goto yy300; +yy299: YYCURSOR = YYMARKER; - goto yy292; -yy296: + goto yy296; +yy300: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '>') goto yy295; + if (yych == '>') goto yy299; ++YYCURSOR; YYCURSOR = YYCTXMARKER; -#line 331 "../src/ast/lex.re" +#line 339 "../src/ast/lex.re" { return true; } -#line 1677 "src/ast/lex.cc" +#line 1698 "src/ast/lex.cc" } -#line 333 "../src/ast/lex.re" +#line 341 "../src/ast/lex.re" } bool Scanner::lex_namedef_context_flex() { -#line 1686 "src/ast/lex.cc" +#line 1707 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1723,40 +1744,40 @@ bool Scanner::lex_namedef_context_flex() yych = (YYCTYPE)*YYCURSOR; if (yych == '\t') { YYCTXMARKER = YYCURSOR; - goto yy302; + goto yy306; } if (yych == ' ') { YYCTXMARKER = YYCURSOR; - goto yy302; + goto yy306; } -#line 341 "../src/ast/lex.re" +#line 349 "../src/ast/lex.re" { return false; } -#line 1735 "src/ast/lex.cc" -yy302: +#line 1756 "src/ast/lex.cc" +yy306: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy302; + goto yy306; } if (yych <= '<') { - if (yych == ':') goto yy305; + if (yych == ':') goto yy309; } else { - if (yych <= '=') goto yy305; - if (yych == '{') goto yy305; + if (yych <= '=') goto yy309; + if (yych == '{') goto yy309; } YYCURSOR = YYCTXMARKER; -#line 340 "../src/ast/lex.re" +#line 348 "../src/ast/lex.re" { return true; } -#line 1752 "src/ast/lex.cc" -yy305: +#line 1773 "src/ast/lex.cc" +yy309: ++YYCURSOR; YYCURSOR = YYCTXMARKER; -#line 339 "../src/ast/lex.re" +#line 347 "../src/ast/lex.re" { return false; } -#line 1758 "src/ast/lex.cc" +#line 1779 "src/ast/lex.cc" } -#line 342 "../src/ast/lex.re" +#line 350 "../src/ast/lex.re" } @@ -1765,7 +1786,7 @@ int Scanner::lex_clist() int kind = TOKEN_CLIST; CondList *cl = new CondList; -#line 1769 "src/ast/lex.cc" +#line 1790 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1802,43 +1823,43 @@ int Scanner::lex_clist() 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - goto yy307; -yy308: + goto yy311; +yy312: ++YYCURSOR; -yy307: +yy311: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy308; + goto yy312; } - if (yych <= 0x1F) goto yy310; - if (yych <= '!') goto yy311; - if (yych == '>') goto yy314; -yy310: -#line 352 "../src/ast/lex.re" + if (yych <= 0x1F) goto yy314; + if (yych <= '!') goto yy315; + if (yych == '>') goto yy318; +yy314: +#line 360 "../src/ast/lex.re" { goto cond; } -#line 1821 "src/ast/lex.cc" -yy311: +#line 1842 "src/ast/lex.cc" +yy315: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych == '\t') goto yy311; - if (yych == ' ') goto yy311; -#line 350 "../src/ast/lex.re" + if (yych == '\t') goto yy315; + if (yych == ' ') goto yy315; +#line 358 "../src/ast/lex.re" { kind = TOKEN_CSETUP; goto cond; } -#line 1830 "src/ast/lex.cc" -yy314: +#line 1851 "src/ast/lex.cc" +yy318: ++YYCURSOR; -#line 351 "../src/ast/lex.re" +#line 359 "../src/ast/lex.re" { kind = TOKEN_CZERO; goto end; } -#line 1835 "src/ast/lex.cc" +#line 1856 "src/ast/lex.cc" } -#line 353 "../src/ast/lex.re" +#line 361 "../src/ast/lex.re" cond: tok = cur; -#line 1842 "src/ast/lex.cc" +#line 1863 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1878,42 +1899,42 @@ cond: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 'Z') { - if (yych == '*') goto yy320; - if (yych >= 'A') goto yy322; + if (yych == '*') goto yy324; + if (yych >= 'A') goto yy326; } else { if (yych <= '_') { - if (yych >= '_') goto yy322; + if (yych >= '_') goto yy326; } else { - if (yych <= '`') goto yy318; - if (yych <= 'z') goto yy322; + if (yych <= '`') goto yy322; + if (yych <= 'z') goto yy326; } } -yy318: +yy322: ++YYCURSOR; -#line 359 "../src/ast/lex.re" +#line 367 "../src/ast/lex.re" { goto error; } -#line 1896 "src/ast/lex.cc" -yy320: +#line 1917 "src/ast/lex.cc" +yy324: ++YYCURSOR; -#line 358 "../src/ast/lex.re" +#line 366 "../src/ast/lex.re" { if (!cl->empty()) goto error; cl->insert("*"); goto next; } -#line 1901 "src/ast/lex.cc" -yy322: +#line 1922 "src/ast/lex.cc" +yy326: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy322; + goto yy326; } -#line 357 "../src/ast/lex.re" +#line 365 "../src/ast/lex.re" { cl->insert(std::string(tok, tok_len())); goto next; } -#line 1911 "src/ast/lex.cc" +#line 1932 "src/ast/lex.cc" } -#line 360 "../src/ast/lex.re" +#line 368 "../src/ast/lex.re" next: -#line 1917 "src/ast/lex.cc" +#line 1938 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1953,67 +1974,67 @@ next: if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= ' ') { - if (yych == '\t') goto yy329; - if (yych >= ' ') goto yy329; + if (yych == '\t') goto yy333; + if (yych >= ' ') goto yy333; } else { if (yych <= ',') { - if (yych >= ',') goto yy330; + if (yych >= ',') goto yy334; } else { - if (yych == '>') goto yy333; + if (yych == '>') goto yy337; } } ++YYCURSOR; -yy328: -#line 365 "../src/ast/lex.re" +yy332: +#line 373 "../src/ast/lex.re" { goto error; } -#line 1970 "src/ast/lex.cc" -yy329: +#line 1991 "src/ast/lex.cc" +yy333: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy335; - if (yych <= 0x1F) goto yy328; - goto yy335; + if (yych == '\t') goto yy339; + if (yych <= 0x1F) goto yy332; + goto yy339; } else { if (yych <= ',') { - if (yych <= '+') goto yy328; + if (yych <= '+') goto yy332; } else { - if (yych == '>') goto yy333; - goto yy328; + if (yych == '>') goto yy337; + goto yy332; } } -yy330: +yy334: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy330; + goto yy334; } -#line 363 "../src/ast/lex.re" +#line 371 "../src/ast/lex.re" { goto cond; } -#line 1994 "src/ast/lex.cc" -yy333: +#line 2015 "src/ast/lex.cc" +yy337: ++YYCURSOR; -#line 364 "../src/ast/lex.re" +#line 372 "../src/ast/lex.re" { goto end; } -#line 1999 "src/ast/lex.cc" -yy335: +#line 2020 "src/ast/lex.cc" +yy339: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= ' ') { - if (yych == '\t') goto yy335; - if (yych >= ' ') goto yy335; + if (yych == '\t') goto yy339; + if (yych >= ' ') goto yy339; } else { if (yych <= ',') { - if (yych >= ',') goto yy330; + if (yych >= ',') goto yy334; } else { - if (yych == '>') goto yy333; + if (yych == '>') goto yy337; } } YYCURSOR = YYMARKER; - goto yy328; + goto yy332; } -#line 366 "../src/ast/lex.re" +#line 374 "../src/ast/lex.re" end: yylval.clist = cl; @@ -2026,7 +2047,7 @@ error: void Scanner::lex_cgoto() { -#line 2030 "src/ast/lex.cc" +#line 2051 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2063,25 +2084,25 @@ void Scanner::lex_cgoto() 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - goto yy338; -yy339: + goto yy342; +yy343: ++YYCURSOR; -yy338: +yy342: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy339; + goto yy343; } -#line 378 "../src/ast/lex.re" +#line 386 "../src/ast/lex.re" { goto name; } -#line 2078 "src/ast/lex.cc" +#line 2099 "src/ast/lex.cc" } -#line 379 "../src/ast/lex.re" +#line 387 "../src/ast/lex.re" name: tok = cur; -#line 2085 "src/ast/lex.cc" +#line 2106 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2121,29 +2142,29 @@ name: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= '^') { - if (yych <= '@') goto yy344; - if (yych <= 'Z') goto yy346; + if (yych <= '@') goto yy348; + if (yych <= 'Z') goto yy350; } else { - if (yych == '`') goto yy344; - if (yych <= 'z') goto yy346; + if (yych == '`') goto yy348; + if (yych <= 'z') goto yy350; } -yy344: +yy348: ++YYCURSOR; -#line 384 "../src/ast/lex.re" +#line 392 "../src/ast/lex.re" { fatal_l(get_cline(), "syntax error in condition goto"); } -#line 2135 "src/ast/lex.cc" -yy346: +#line 2156 "src/ast/lex.cc" +yy350: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy346; + goto yy350; } -#line 383 "../src/ast/lex.re" +#line 391 "../src/ast/lex.re" { yylval.str = new std::string (tok, tok_len ()); return; } -#line 2145 "src/ast/lex.cc" +#line 2166 "src/ast/lex.cc" } -#line 385 "../src/ast/lex.re" +#line 393 "../src/ast/lex.re" } @@ -2153,98 +2174,98 @@ void Scanner::lex_code_indented() tok = cur; code: -#line 2157 "src/ast/lex.cc" +#line 2178 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yych <= '&') { if (yych <= '\f') { - if (yych <= 0x00) goto yy351; - if (yych == '\n') goto yy355; - goto yy353; + if (yych <= 0x00) goto yy355; + if (yych == '\n') goto yy359; + goto yy357; } else { - if (yych <= '\r') goto yy357; - if (yych == '"') goto yy358; - goto yy353; + if (yych <= '\r') goto yy361; + if (yych == '"') goto yy362; + goto yy357; } } else { if (yych <= 'z') { - if (yych <= '\'') goto yy358; - if (yych == '/') goto yy360; - goto yy353; + if (yych <= '\'') goto yy362; + if (yych == '/') goto yy364; + goto yy357; } else { - if (yych == '|') goto yy353; - if (yych <= '}') goto yy361; - goto yy353; + if (yych == '|') goto yy357; + if (yych <= '}') goto yy365; + goto yy357; } } -yy351: +yy355: ++YYCURSOR; -#line 402 "../src/ast/lex.re" +#line 410 "../src/ast/lex.re" { fail_if_eof(); goto code; } -#line 2187 "src/ast/lex.cc" -yy353: +#line 2208 "src/ast/lex.cc" +yy357: ++YYCURSOR; -yy354: -#line 407 "../src/ast/lex.re" +yy358: +#line 415 "../src/ast/lex.re" { goto code; } -#line 2193 "src/ast/lex.cc" -yy355: +#line 2214 "src/ast/lex.cc" +yy359: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '\f') { - if (yych <= 0x08) goto yy356; - if (yych <= '\n') goto yy363; + if (yych <= 0x08) goto yy360; + if (yych <= '\n') goto yy367; } else { - if (yych <= '\r') goto yy363; - if (yych == ' ') goto yy363; + if (yych <= '\r') goto yy367; + if (yych == ' ') goto yy367; } -yy356: -#line 395 "../src/ast/lex.re" +yy360: +#line 403 "../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 2211 "src/ast/lex.cc" -yy357: +#line 2232 "src/ast/lex.cc" +yy361: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy355; - goto yy354; -yy358: + if (yych == '\n') goto yy359; + goto yy358; +yy362: ++YYCURSOR; -#line 406 "../src/ast/lex.re" +#line 414 "../src/ast/lex.re" { lex_string(cur[-1]); goto code; } -#line 2220 "src/ast/lex.cc" -yy360: +#line 2241 "src/ast/lex.cc" +yy364: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '*') goto yy365; - if (yych == '/') goto yy367; - goto yy354; -yy361: + if (yych == '*') goto yy369; + if (yych == '/') goto yy371; + goto yy358; +yy365: ++YYCURSOR; -#line 403 "../src/ast/lex.re" +#line 411 "../src/ast/lex.re" { fatal_l(get_cline(), "Curly braces are not allowed after ':='"); } -#line 2230 "src/ast/lex.cc" -yy363: +#line 2251 "src/ast/lex.cc" +yy367: ++YYCURSOR; YYCURSOR -= 1; -#line 394 "../src/ast/lex.re" +#line 402 "../src/ast/lex.re" { goto code; } -#line 2236 "src/ast/lex.cc" -yy365: +#line 2257 "src/ast/lex.cc" +yy369: ++YYCURSOR; -#line 404 "../src/ast/lex.re" +#line 412 "../src/ast/lex.re" { lex_c_comment(); goto code; } -#line 2241 "src/ast/lex.cc" -yy367: +#line 2262 "src/ast/lex.cc" +yy371: ++YYCURSOR; -#line 405 "../src/ast/lex.re" +#line 413 "../src/ast/lex.re" { lex_cpp_comment(); goto code; } -#line 2246 "src/ast/lex.cc" +#line 2267 "src/ast/lex.cc" } -#line 408 "../src/ast/lex.re" +#line 416 "../src/ast/lex.re" } @@ -2254,7 +2275,7 @@ void Scanner::lex_code_in_braces() uint32_t depth = 1; code: -#line 2258 "src/ast/lex.cc" +#line 2279 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -2295,68 +2316,68 @@ code: yych = (YYCTYPE)*YYCURSOR; if (yych <= '&') { if (yych <= '\f') { - if (yych <= 0x00) goto yy371; - if (yych == '\n') goto yy375; - goto yy373; + if (yych <= 0x00) goto yy375; + if (yych == '\n') goto yy379; + goto yy377; } else { - if (yych <= '\r') goto yy377; - if (yych == '"') goto yy378; - goto yy373; + if (yych <= '\r') goto yy381; + if (yych == '"') goto yy382; + goto yy377; } } else { if (yych <= 'z') { - if (yych <= '\'') goto yy378; - if (yych == '/') goto yy380; - goto yy373; + if (yych <= '\'') goto yy382; + if (yych == '/') goto yy384; + goto yy377; } else { - if (yych <= '{') goto yy381; - if (yych == '}') goto yy383; - goto yy373; + if (yych <= '{') goto yy385; + if (yych == '}') goto yy387; + goto yy377; } } -yy371: +yy375: ++YYCURSOR; -#line 428 "../src/ast/lex.re" +#line 436 "../src/ast/lex.re" { fail_if_eof(); goto code; } -#line 2322 "src/ast/lex.cc" -yy373: +#line 2343 "src/ast/lex.cc" +yy377: ++YYCURSOR; -yy374: -#line 432 "../src/ast/lex.re" +yy378: +#line 440 "../src/ast/lex.re" { goto code; } -#line 2328 "src/ast/lex.cc" -yy375: +#line 2349 "src/ast/lex.cc" +yy379: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { - goto yy385; + goto yy389; } - if (yych == '#') goto yy388; -yy376: -#line 427 "../src/ast/lex.re" + if (yych == '#') goto yy392; +yy380: +#line 435 "../src/ast/lex.re" { pos = cur; cline++; goto code; } -#line 2338 "src/ast/lex.cc" -yy377: +#line 2359 "src/ast/lex.cc" +yy381: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy375; - goto yy374; -yy378: + if (yych == '\n') goto yy379; + goto yy378; +yy382: ++YYCURSOR; -#line 431 "../src/ast/lex.re" +#line 439 "../src/ast/lex.re" { lex_string(cur[-1]); goto code; } -#line 2347 "src/ast/lex.cc" -yy380: +#line 2368 "src/ast/lex.cc" +yy384: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '*') goto yy390; - if (yych == '/') goto yy392; - goto yy374; -yy381: + if (yych == '*') goto yy394; + if (yych == '/') goto yy396; + goto yy378; +yy385: ++YYCURSOR; -#line 425 "../src/ast/lex.re" +#line 433 "../src/ast/lex.re" { ++depth; goto code; } -#line 2357 "src/ast/lex.cc" -yy383: +#line 2378 "src/ast/lex.cc" +yy387: ++YYCURSOR; -#line 417 "../src/ast/lex.re" +#line 425 "../src/ast/lex.re" { if (--depth == 0) { yylval.code = new Code(get_fname (), line, tok, tok_len ()); @@ -2364,125 +2385,125 @@ yy383: } goto code; } -#line 2368 "src/ast/lex.cc" -yy385: +#line 2389 "src/ast/lex.cc" +yy389: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 32) { - goto yy385; + goto yy389; } - if (yych == '#') goto yy388; -yy387: + if (yych == '#') goto yy392; +yy391: YYCURSOR = YYMARKER; - goto yy376; -yy388: + goto yy380; +yy392: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy388; - goto yy387; + if (yych == '\t') goto yy392; + goto yy391; } else { - if (yych <= ' ') goto yy388; - if (yych == 'l') goto yy394; - goto yy387; + if (yych <= ' ') goto yy392; + if (yych == 'l') goto yy398; + goto yy391; } -yy390: +yy394: ++YYCURSOR; -#line 429 "../src/ast/lex.re" +#line 437 "../src/ast/lex.re" { lex_c_comment(); goto code; } -#line 2396 "src/ast/lex.cc" -yy392: +#line 2417 "src/ast/lex.cc" +yy396: ++YYCURSOR; -#line 430 "../src/ast/lex.re" +#line 438 "../src/ast/lex.re" { lex_cpp_comment(); goto code; } -#line 2401 "src/ast/lex.cc" -yy394: +#line 2422 "src/ast/lex.cc" +yy398: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy387; + if (yych != 'i') goto yy391; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy387; + if (yych != 'n') goto yy391; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy387; + if (yych != 'e') goto yy391; yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '0') goto yy399; - if (yych <= '9') goto yy387; - goto yy399; -yy398: + if (yych <= '0') goto yy403; + if (yych <= '9') goto yy391; + goto yy403; +yy402: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy399: +yy403: if (yych <= 0x1F) { - if (yych == '\t') goto yy398; - goto yy387; + if (yych == '\t') goto yy402; + goto yy391; } else { - if (yych <= ' ') goto yy398; - if (yych <= '0') goto yy387; - if (yych >= ':') goto yy387; + if (yych <= ' ') goto yy402; + if (yych <= '0') goto yy391; + if (yych >= ':') goto yy391; YYCTXMARKER = YYCURSOR; } -yy400: +yy404: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { - goto yy400; + goto yy404; } if (yych <= '\f') { - if (yych <= 0x08) goto yy387; - if (yych <= '\t') goto yy402; - if (yych <= '\n') goto yy404; - goto yy387; + if (yych <= 0x08) goto yy391; + if (yych <= '\t') goto yy406; + if (yych <= '\n') goto yy408; + goto yy391; } else { - if (yych <= '\r') goto yy406; - if (yych != ' ') goto yy387; + if (yych <= '\r') goto yy410; + if (yych != ' ') goto yy391; } -yy402: +yy406: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { - if (yych == '\t') goto yy402; - goto yy387; + if (yych == '\t') goto yy406; + goto yy391; } else { - if (yych <= ' ') goto yy402; - if (yych == '"') goto yy407; - goto yy387; + if (yych <= ' ') goto yy406; + if (yych == '"') goto yy411; + goto yy391; } -yy404: +yy408: ++YYCURSOR; YYCURSOR = YYCTXMARKER; -#line 426 "../src/ast/lex.re" +#line 434 "../src/ast/lex.re" { set_sourceline (); goto code; } -#line 2460 "src/ast/lex.cc" -yy406: +#line 2481 "src/ast/lex.cc" +yy410: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy404; - goto yy387; -yy407: + if (yych == '\n') goto yy408; + goto yy391; +yy411: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { - goto yy407; + goto yy411; } - if (yych <= '\n') goto yy387; - if (yych >= '#') goto yy410; + if (yych <= '\n') goto yy391; + if (yych >= '#') goto yy414; yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy404; - if (yych == '\r') goto yy406; - goto yy387; -yy410: + if (yych == '\n') goto yy408; + if (yych == '\r') goto yy410; + goto yy391; +yy414: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy387; - if (yych == '\n') goto yy387; - goto yy407; + if (yych <= 0x00) goto yy391; + if (yych == '\n') goto yy391; + goto yy411; } -#line 433 "../src/ast/lex.re" +#line 441 "../src/ast/lex.re" } @@ -2490,70 +2511,70 @@ void Scanner::lex_string(char delim) { loop: -#line 2494 "src/ast/lex.cc" +#line 2515 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '!') { if (yych <= '\n') { - if (yych <= 0x00) goto yy413; - if (yych <= '\t') goto yy415; - goto yy417; + if (yych <= 0x00) goto yy417; + if (yych <= '\t') goto yy419; + goto yy421; } else { - if (yych == '\r') goto yy419; - goto yy415; + if (yych == '\r') goto yy423; + goto yy419; } } else { if (yych <= '\'') { - if (yych <= '"') goto yy420; - if (yych <= '&') goto yy415; - goto yy420; + if (yych <= '"') goto yy424; + if (yych <= '&') goto yy419; + goto yy424; } else { - if (yych == '\\') goto yy422; - goto yy415; + if (yych == '\\') goto yy426; + goto yy419; } } -yy413: +yy417: ++YYCURSOR; -#line 443 "../src/ast/lex.re" +#line 451 "../src/ast/lex.re" { fail_if_eof(); goto loop; } -#line 2522 "src/ast/lex.cc" -yy415: +#line 2543 "src/ast/lex.cc" +yy419: ++YYCURSOR; -yy416: -#line 444 "../src/ast/lex.re" +yy420: +#line 452 "../src/ast/lex.re" { goto loop; } -#line 2528 "src/ast/lex.cc" -yy417: +#line 2549 "src/ast/lex.cc" +yy421: ++YYCURSOR; -#line 442 "../src/ast/lex.re" +#line 450 "../src/ast/lex.re" { pos = cur; ++cline; goto loop; } -#line 2533 "src/ast/lex.cc" -yy419: +#line 2554 "src/ast/lex.cc" +yy423: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy417; - goto yy416; -yy420: + if (yych == '\n') goto yy421; + goto yy420; +yy424: ++YYCURSOR; -#line 440 "../src/ast/lex.re" +#line 448 "../src/ast/lex.re" { if (cur[-1] == delim) return; else goto loop; } -#line 2542 "src/ast/lex.cc" -yy422: +#line 2563 "src/ast/lex.cc" +yy426: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '&') { - if (yych != '"') goto yy416; + if (yych != '"') goto yy420; } else { - if (yych <= '\'') goto yy423; - if (yych != '\\') goto yy416; + if (yych <= '\'') goto yy427; + if (yych != '\\') goto yy420; } -yy423: +yy427: ++YYCURSOR; -#line 441 "../src/ast/lex.re" +#line 449 "../src/ast/lex.re" { goto loop; } -#line 2555 "src/ast/lex.cc" +#line 2576 "src/ast/lex.cc" } -#line 445 "../src/ast/lex.re" +#line 453 "../src/ast/lex.re" } @@ -2561,49 +2582,49 @@ void Scanner::lex_c_comment() { loop: -#line 2565 "src/ast/lex.cc" +#line 2586 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy427; - if (yych == '\n') goto yy431; - goto yy429; + if (yych <= 0x00) goto yy431; + if (yych == '\n') goto yy435; + goto yy433; } else { - if (yych <= '\r') goto yy433; - if (yych == '*') goto yy434; - goto yy429; + if (yych <= '\r') goto yy437; + if (yych == '*') goto yy438; + goto yy433; } -yy427: +yy431: ++YYCURSOR; -#line 454 "../src/ast/lex.re" +#line 462 "../src/ast/lex.re" { fail_if_eof(); goto loop; } -#line 2583 "src/ast/lex.cc" -yy429: +#line 2604 "src/ast/lex.cc" +yy433: ++YYCURSOR; -yy430: -#line 455 "../src/ast/lex.re" +yy434: +#line 463 "../src/ast/lex.re" { goto loop; } -#line 2589 "src/ast/lex.cc" -yy431: +#line 2610 "src/ast/lex.cc" +yy435: ++YYCURSOR; -#line 453 "../src/ast/lex.re" +#line 461 "../src/ast/lex.re" { pos = cur; ++cline; goto loop; } -#line 2594 "src/ast/lex.cc" -yy433: +#line 2615 "src/ast/lex.cc" +yy437: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy431; - goto yy430; -yy434: + if (yych == '\n') goto yy435; + goto yy434; +yy438: yych = (YYCTYPE)*++YYCURSOR; - if (yych != '/') goto yy430; + if (yych != '/') goto yy434; ++YYCURSOR; -#line 452 "../src/ast/lex.re" +#line 460 "../src/ast/lex.re" { return; } -#line 2605 "src/ast/lex.cc" +#line 2626 "src/ast/lex.cc" } -#line 456 "../src/ast/lex.re" +#line 464 "../src/ast/lex.re" } @@ -2611,41 +2632,41 @@ void Scanner::lex_cpp_comment() { loop: -#line 2615 "src/ast/lex.cc" +#line 2636 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\n') { - if (yych <= 0x00) goto yy439; - if (yych <= '\t') goto yy441; - goto yy443; + if (yych <= 0x00) goto yy443; + if (yych <= '\t') goto yy445; + goto yy447; } else { - if (yych == '\r') goto yy445; - goto yy441; + if (yych == '\r') goto yy449; + goto yy445; } -yy439: +yy443: ++YYCURSOR; -#line 464 "../src/ast/lex.re" +#line 472 "../src/ast/lex.re" { fail_if_eof(); goto loop; } -#line 2632 "src/ast/lex.cc" -yy441: +#line 2653 "src/ast/lex.cc" +yy445: ++YYCURSOR; -yy442: -#line 465 "../src/ast/lex.re" +yy446: +#line 473 "../src/ast/lex.re" { goto loop; } -#line 2638 "src/ast/lex.cc" -yy443: +#line 2659 "src/ast/lex.cc" +yy447: ++YYCURSOR; -#line 463 "../src/ast/lex.re" +#line 471 "../src/ast/lex.re" { pos = cur; ++cline; return; } -#line 2643 "src/ast/lex.cc" -yy445: +#line 2664 "src/ast/lex.cc" +yy449: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy443; - goto yy442; + if (yych == '\n') goto yy447; + goto yy446; } -#line 466 "../src/ast/lex.re" +#line 474 "../src/ast/lex.re" } @@ -2657,44 +2678,44 @@ fst: tok = cur; c = get_column(); -#line 2661 "src/ast/lex.cc" +#line 2682 "src/ast/lex.cc" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych == ']') goto yy449; -#line 478 "../src/ast/lex.re" + if (yych == ']') goto yy453; +#line 486 "../src/ast/lex.re" { l = lex_cls_chr(); goto snd; } -#line 2669 "src/ast/lex.cc" -yy449: +#line 2690 "src/ast/lex.cc" +yy453: ++YYCURSOR; -#line 477 "../src/ast/lex.re" +#line 485 "../src/ast/lex.re" { return ast_cls(cline, c0, cls, neg); } -#line 2674 "src/ast/lex.cc" +#line 2695 "src/ast/lex.cc" } -#line 479 "../src/ast/lex.re" +#line 487 "../src/ast/lex.re" snd: -#line 2680 "src/ast/lex.cc" +#line 2701 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*(YYMARKER = YYCURSOR); - if (yych == '-') goto yy454; -yy453: -#line 482 "../src/ast/lex.re" + if (yych == '-') goto yy458; +yy457: +#line 490 "../src/ast/lex.re" { u = l; goto add; } -#line 2689 "src/ast/lex.cc" -yy454: +#line 2710 "src/ast/lex.cc" +yy458: yych = (YYCTYPE)*++YYCURSOR; - if (yych != ']') goto yy456; + if (yych != ']') goto yy460; YYCURSOR = YYMARKER; - goto yy453; -yy456: + goto yy457; +yy460: ++YYCURSOR; YYCURSOR -= 1; -#line 483 "../src/ast/lex.re" +#line 491 "../src/ast/lex.re" { u = lex_cls_chr(); if (l > u) { @@ -2703,9 +2724,9 @@ yy456: } goto add; } -#line 2707 "src/ast/lex.cc" +#line 2728 "src/ast/lex.cc" } -#line 491 "../src/ast/lex.re" +#line 499 "../src/ast/lex.re" add: cls->push_back(ASTRange(l, u, c)); @@ -2717,319 +2738,319 @@ uint32_t Scanner::lex_cls_chr() tok = cur; const uint32_t l = get_cline(), c = get_column(); -#line 2721 "src/ast/lex.cc" +#line 2742 "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 yy460; - if (yych == '\n') goto yy464; - goto yy462; + if (yych <= 0x00) goto yy464; + if (yych == '\n') goto yy468; + goto yy466; } else { - if (yych <= '\r') goto yy466; - if (yych == '\\') goto yy467; - goto yy462; + if (yych <= '\r') goto yy470; + if (yych == '\\') goto yy471; + goto yy466; } -yy460: +yy464: ++YYCURSOR; -#line 503 "../src/ast/lex.re" +#line 511 "../src/ast/lex.re" { fail_if_eof(); return 0; } -#line 2740 "src/ast/lex.cc" -yy462: +#line 2761 "src/ast/lex.cc" +yy466: ++YYCURSOR; -yy463: -#line 509 "../src/ast/lex.re" +yy467: +#line 517 "../src/ast/lex.re" { return static_cast(tok[0]); } -#line 2746 "src/ast/lex.cc" -yy464: +#line 2767 "src/ast/lex.cc" +yy468: ++YYCURSOR; -#line 504 "../src/ast/lex.re" +#line 512 "../src/ast/lex.re" { fatal_lc(l, c, "newline in character class"); } -#line 2751 "src/ast/lex.cc" -yy466: +#line 2772 "src/ast/lex.cc" +yy470: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy464; - goto yy463; -yy467: + if (yych == '\n') goto yy468; + goto yy467; +yy471: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '\\') { if (yych <= '/') { if (yych <= '\f') { - if (yych <= 0x00) goto yy468; - if (yych == '\n') goto yy464; - goto yy469; + if (yych <= 0x00) goto yy472; + if (yych == '\n') goto yy468; + goto yy473; } else { - if (yych <= '\r') goto yy471; - if (yych == '-') goto yy472; - goto yy469; + if (yych <= '\r') goto yy475; + if (yych == '-') goto yy476; + goto yy473; } } else { if (yych <= 'U') { - if (yych <= '3') goto yy474; - if (yych <= '7') goto yy476; - if (yych <= 'T') goto yy469; - goto yy477; + if (yych <= '3') goto yy478; + if (yych <= '7') goto yy480; + if (yych <= 'T') goto yy473; + goto yy481; } else { - if (yych == 'X') goto yy479; - if (yych <= '[') goto yy469; - goto yy480; + if (yych == 'X') goto yy483; + if (yych <= '[') goto yy473; + goto yy484; } } } else { if (yych <= 'n') { if (yych <= 'b') { - if (yych <= ']') goto yy482; - if (yych <= '`') goto yy469; - if (yych <= 'a') goto yy484; - goto yy486; - } else { - if (yych == 'f') goto yy488; - if (yych <= 'm') goto yy469; + if (yych <= ']') goto yy486; + if (yych <= '`') goto yy473; + if (yych <= 'a') goto yy488; goto yy490; + } else { + if (yych == 'f') goto yy492; + if (yych <= 'm') goto yy473; + goto yy494; } } else { if (yych <= 't') { - if (yych == 'r') goto yy492; - if (yych <= 's') goto yy469; - goto yy494; + if (yych == 'r') goto yy496; + if (yych <= 's') goto yy473; + goto yy498; } else { if (yych <= 'v') { - if (yych <= 'u') goto yy479; - goto yy496; + if (yych <= 'u') goto yy483; + goto yy500; } else { - if (yych == 'x') goto yy498; - goto yy469; + if (yych == 'x') goto yy502; + goto yy473; } } } } -yy468: -#line 507 "../src/ast/lex.re" +yy472: +#line 515 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in escape sequence"); } -#line 2812 "src/ast/lex.cc" -yy469: +#line 2833 "src/ast/lex.cc" +yy473: ++YYCURSOR; -yy470: -#line 522 "../src/ast/lex.re" +yy474: +#line 530 "../src/ast/lex.re" { warn.useless_escape(cline, get_column(), tok[1]); return static_cast(tok[1]); } -#line 2821 "src/ast/lex.cc" -yy471: +#line 2842 "src/ast/lex.cc" +yy475: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy464; - goto yy470; -yy472: + if (yych == '\n') goto yy468; + goto yy474; +yy476: ++YYCURSOR; -#line 520 "../src/ast/lex.re" +#line 528 "../src/ast/lex.re" { return static_cast('-'); } -#line 2830 "src/ast/lex.cc" -yy474: +#line 2851 "src/ast/lex.cc" +yy478: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy475; - if (yych <= '7') goto yy499; -yy475: -#line 506 "../src/ast/lex.re" + if (yych <= '/') goto yy479; + if (yych <= '7') goto yy503; +yy479: +#line 514 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in octal escape sequence"); } -#line 2839 "src/ast/lex.cc" -yy476: +#line 2860 "src/ast/lex.cc" +yy480: ++YYCURSOR; - goto yy475; -yy477: + goto yy479; +yy481: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy478; - if (yych <= '9') goto yy501; + if (yych <= '/') goto yy482; + if (yych <= '9') goto yy505; } else { - if (yych <= 'F') goto yy501; - if (yych <= '`') goto yy478; - if (yych <= 'f') goto yy501; + if (yych <= 'F') goto yy505; + if (yych <= '`') goto yy482; + if (yych <= 'f') goto yy505; } -yy478: -#line 505 "../src/ast/lex.re" +yy482: +#line 513 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } -#line 2857 "src/ast/lex.cc" -yy479: +#line 2878 "src/ast/lex.cc" +yy483: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy478; - if (yych <= '9') goto yy502; - goto yy478; + if (yych <= '/') goto yy482; + if (yych <= '9') goto yy506; + goto yy482; } else { - if (yych <= 'F') goto yy502; - if (yych <= '`') goto yy478; - if (yych <= 'f') goto yy502; - goto yy478; + if (yych <= 'F') goto yy506; + if (yych <= '`') goto yy482; + if (yych <= 'f') goto yy506; + goto yy482; } -yy480: +yy484: ++YYCURSOR; -#line 519 "../src/ast/lex.re" +#line 527 "../src/ast/lex.re" { return static_cast('\\'); } -#line 2875 "src/ast/lex.cc" -yy482: +#line 2896 "src/ast/lex.cc" +yy486: ++YYCURSOR; -#line 521 "../src/ast/lex.re" +#line 529 "../src/ast/lex.re" { return static_cast(']'); } -#line 2880 "src/ast/lex.cc" -yy484: +#line 2901 "src/ast/lex.cc" +yy488: ++YYCURSOR; -#line 512 "../src/ast/lex.re" +#line 520 "../src/ast/lex.re" { return static_cast('\a'); } -#line 2885 "src/ast/lex.cc" -yy486: +#line 2906 "src/ast/lex.cc" +yy490: ++YYCURSOR; -#line 513 "../src/ast/lex.re" +#line 521 "../src/ast/lex.re" { return static_cast('\b'); } -#line 2890 "src/ast/lex.cc" -yy488: +#line 2911 "src/ast/lex.cc" +yy492: ++YYCURSOR; -#line 514 "../src/ast/lex.re" +#line 522 "../src/ast/lex.re" { return static_cast('\f'); } -#line 2895 "src/ast/lex.cc" -yy490: +#line 2916 "src/ast/lex.cc" +yy494: ++YYCURSOR; -#line 515 "../src/ast/lex.re" +#line 523 "../src/ast/lex.re" { return static_cast('\n'); } -#line 2900 "src/ast/lex.cc" -yy492: +#line 2921 "src/ast/lex.cc" +yy496: ++YYCURSOR; -#line 516 "../src/ast/lex.re" +#line 524 "../src/ast/lex.re" { return static_cast('\r'); } -#line 2905 "src/ast/lex.cc" -yy494: +#line 2926 "src/ast/lex.cc" +yy498: ++YYCURSOR; -#line 517 "../src/ast/lex.re" +#line 525 "../src/ast/lex.re" { return static_cast('\t'); } -#line 2910 "src/ast/lex.cc" -yy496: +#line 2931 "src/ast/lex.cc" +yy500: ++YYCURSOR; -#line 518 "../src/ast/lex.re" +#line 526 "../src/ast/lex.re" { return static_cast('\v'); } -#line 2915 "src/ast/lex.cc" -yy498: +#line 2936 "src/ast/lex.cc" +yy502: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy478; - if (yych <= '9') goto yy503; - goto yy478; + if (yych <= '/') goto yy482; + if (yych <= '9') goto yy507; + goto yy482; } else { - if (yych <= 'F') goto yy503; - if (yych <= '`') goto yy478; - if (yych <= 'f') goto yy503; - goto yy478; + if (yych <= 'F') goto yy507; + if (yych <= '`') goto yy482; + if (yych <= 'f') goto yy507; + goto yy482; } -yy499: +yy503: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '/') goto yy500; - if (yych <= '7') goto yy504; -yy500: + if (yych <= '/') goto yy504; + if (yych <= '7') goto yy508; +yy504: YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy475; + goto yy479; } else { - goto yy478; + goto yy482; } -yy501: +yy505: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych <= '9') goto yy506; - goto yy500; + if (yych <= '/') goto yy504; + if (yych <= '9') goto yy510; + goto yy504; } else { - if (yych <= 'F') goto yy506; - if (yych <= '`') goto yy500; - if (yych <= 'f') goto yy506; - goto yy500; + if (yych <= 'F') goto yy510; + if (yych <= '`') goto yy504; + if (yych <= 'f') goto yy510; + goto yy504; } -yy502: +yy506: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych <= '9') goto yy507; - goto yy500; + if (yych <= '/') goto yy504; + if (yych <= '9') goto yy511; + goto yy504; } else { - if (yych <= 'F') goto yy507; - if (yych <= '`') goto yy500; - if (yych <= 'f') goto yy507; - goto yy500; + if (yych <= 'F') goto yy511; + if (yych <= '`') goto yy504; + if (yych <= 'f') goto yy511; + goto yy504; } -yy503: +yy507: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych <= '9') goto yy508; - goto yy500; + if (yych <= '/') goto yy504; + if (yych <= '9') goto yy512; + goto yy504; } else { - if (yych <= 'F') goto yy508; - if (yych <= '`') goto yy500; - if (yych <= 'f') goto yy508; - goto yy500; + if (yych <= 'F') goto yy512; + if (yych <= '`') goto yy504; + if (yych <= 'f') goto yy512; + goto yy504; } -yy504: +yy508: ++YYCURSOR; -#line 511 "../src/ast/lex.re" +#line 519 "../src/ast/lex.re" { return unesc_oct(tok, cur); } -#line 2980 "src/ast/lex.cc" -yy506: +#line 3001 "src/ast/lex.cc" +yy510: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych <= '9') goto yy510; - goto yy500; + if (yych <= '/') goto yy504; + if (yych <= '9') goto yy514; + goto yy504; } else { - if (yych <= 'F') goto yy510; - if (yych <= '`') goto yy500; - if (yych <= 'f') goto yy510; - goto yy500; + if (yych <= 'F') goto yy514; + if (yych <= '`') goto yy504; + if (yych <= 'f') goto yy514; + goto yy504; } -yy507: +yy511: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych <= '9') goto yy503; - goto yy500; + if (yych <= '/') goto yy504; + if (yych <= '9') goto yy507; + goto yy504; } else { - if (yych <= 'F') goto yy503; - if (yych <= '`') goto yy500; - if (yych <= 'f') goto yy503; - goto yy500; + if (yych <= 'F') goto yy507; + if (yych <= '`') goto yy504; + if (yych <= 'f') goto yy507; + goto yy504; } -yy508: +yy512: ++YYCURSOR; -#line 510 "../src/ast/lex.re" +#line 518 "../src/ast/lex.re" { return unesc_hex(tok, cur); } -#line 3009 "src/ast/lex.cc" -yy510: +#line 3030 "src/ast/lex.cc" +yy514: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych >= ':') goto yy500; + if (yych <= '/') goto yy504; + if (yych >= ':') goto yy504; } else { - if (yych <= 'F') goto yy511; - if (yych <= '`') goto yy500; - if (yych >= 'g') goto yy500; + if (yych <= 'F') goto yy515; + if (yych <= '`') goto yy504; + if (yych >= 'g') goto yy504; } -yy511: +yy515: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy500; - if (yych <= '9') goto yy502; - goto yy500; + if (yych <= '/') goto yy504; + if (yych <= '9') goto yy506; + goto yy504; } else { - if (yych <= 'F') goto yy502; - if (yych <= '`') goto yy500; - if (yych <= 'f') goto yy502; - goto yy500; + if (yych <= 'F') goto yy506; + if (yych <= '`') goto yy504; + if (yych <= 'f') goto yy506; + goto yy504; } } -#line 526 "../src/ast/lex.re" +#line 534 "../src/ast/lex.re" } @@ -3039,309 +3060,309 @@ uint32_t Scanner::lex_str_chr(char quote, bool &end) tok = cur; const uint32_t l = get_cline(), c = get_column(); -#line 3043 "src/ast/lex.cc" +#line 3064 "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 yy514; - if (yych == '\n') goto yy518; - goto yy516; + if (yych <= 0x00) goto yy518; + if (yych == '\n') goto yy522; + goto yy520; } else { - if (yych <= '\r') goto yy520; - if (yych == '\\') goto yy521; - goto yy516; + if (yych <= '\r') goto yy524; + if (yych == '\\') goto yy525; + goto yy520; } -yy514: +yy518: ++YYCURSOR; -#line 536 "../src/ast/lex.re" +#line 544 "../src/ast/lex.re" { fail_if_eof(); return 0; } -#line 3062 "src/ast/lex.cc" -yy516: +#line 3083 "src/ast/lex.cc" +yy520: ++YYCURSOR; -yy517: -#line 542 "../src/ast/lex.re" +yy521: +#line 550 "../src/ast/lex.re" { end = tok[0] == quote; return static_cast(tok[0]); } -#line 3071 "src/ast/lex.cc" -yy518: +#line 3092 "src/ast/lex.cc" +yy522: ++YYCURSOR; -#line 537 "../src/ast/lex.re" +#line 545 "../src/ast/lex.re" { fatal_lc(l, c, "newline in character string"); } -#line 3076 "src/ast/lex.cc" -yy520: +#line 3097 "src/ast/lex.cc" +yy524: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy518; - goto yy517; -yy521: + if (yych == '\n') goto yy522; + goto yy521; +yy525: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '`') { if (yych <= '3') { if (yych <= '\n') { - if (yych <= 0x00) goto yy522; - if (yych <= '\t') goto yy523; - goto yy518; + if (yych <= 0x00) goto yy526; + if (yych <= '\t') goto yy527; + goto yy522; } else { - if (yych == '\r') goto yy525; - if (yych <= '/') goto yy523; - goto yy526; + if (yych == '\r') goto yy529; + if (yych <= '/') goto yy527; + goto yy530; } } else { if (yych <= 'W') { - if (yych <= '7') goto yy528; - if (yych == 'U') goto yy529; - goto yy523; + if (yych <= '7') goto yy532; + if (yych == 'U') goto yy533; + goto yy527; } else { - if (yych <= 'X') goto yy531; - if (yych == '\\') goto yy532; - goto yy523; + if (yych <= 'X') goto yy535; + if (yych == '\\') goto yy536; + goto yy527; } } } else { if (yych <= 'q') { if (yych <= 'e') { - if (yych <= 'a') goto yy534; - if (yych <= 'b') goto yy536; - goto yy523; + if (yych <= 'a') goto yy538; + if (yych <= 'b') goto yy540; + goto yy527; } else { - if (yych <= 'f') goto yy538; - if (yych == 'n') goto yy540; - goto yy523; + if (yych <= 'f') goto yy542; + if (yych == 'n') goto yy544; + goto yy527; } } else { if (yych <= 'u') { - if (yych <= 'r') goto yy542; - if (yych <= 's') goto yy523; - if (yych <= 't') goto yy544; - goto yy531; + if (yych <= 'r') goto yy546; + if (yych <= 's') goto yy527; + if (yych <= 't') goto yy548; + goto yy535; } else { - if (yych <= 'v') goto yy546; - if (yych == 'x') goto yy548; - goto yy523; + if (yych <= 'v') goto yy550; + if (yych == 'x') goto yy552; + goto yy527; } } } -yy522: -#line 540 "../src/ast/lex.re" +yy526: +#line 548 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in escape sequence"); } -#line 3132 "src/ast/lex.cc" -yy523: +#line 3153 "src/ast/lex.cc" +yy527: ++YYCURSOR; -yy524: -#line 556 "../src/ast/lex.re" +yy528: +#line 564 "../src/ast/lex.re" { if (tok[1] != quote) { warn.useless_escape(cline, get_column(), tok[1]); } return static_cast(tok[1]); } -#line 3143 "src/ast/lex.cc" -yy525: +#line 3164 "src/ast/lex.cc" +yy529: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy518; - goto yy524; -yy526: + if (yych == '\n') goto yy522; + goto yy528; +yy530: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy527; - if (yych <= '7') goto yy549; -yy527: -#line 539 "../src/ast/lex.re" + if (yych <= '/') goto yy531; + if (yych <= '7') goto yy553; +yy531: +#line 547 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in octal escape sequence"); } -#line 3156 "src/ast/lex.cc" -yy528: +#line 3177 "src/ast/lex.cc" +yy532: ++YYCURSOR; - goto yy527; -yy529: + goto yy531; +yy533: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy530; - if (yych <= '9') goto yy551; + if (yych <= '/') goto yy534; + if (yych <= '9') goto yy555; } else { - if (yych <= 'F') goto yy551; - if (yych <= '`') goto yy530; - if (yych <= 'f') goto yy551; + if (yych <= 'F') goto yy555; + if (yych <= '`') goto yy534; + if (yych <= 'f') goto yy555; } -yy530: -#line 538 "../src/ast/lex.re" +yy534: +#line 546 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } -#line 3174 "src/ast/lex.cc" -yy531: +#line 3195 "src/ast/lex.cc" +yy535: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy530; - if (yych <= '9') goto yy552; - goto yy530; + if (yych <= '/') goto yy534; + if (yych <= '9') goto yy556; + goto yy534; } else { - if (yych <= 'F') goto yy552; - if (yych <= '`') goto yy530; - if (yych <= 'f') goto yy552; - goto yy530; + if (yych <= 'F') goto yy556; + if (yych <= '`') goto yy534; + if (yych <= 'f') goto yy556; + goto yy534; } -yy532: +yy536: ++YYCURSOR; -#line 555 "../src/ast/lex.re" +#line 563 "../src/ast/lex.re" { return static_cast('\\'); } -#line 3192 "src/ast/lex.cc" -yy534: +#line 3213 "src/ast/lex.cc" +yy538: ++YYCURSOR; -#line 548 "../src/ast/lex.re" +#line 556 "../src/ast/lex.re" { return static_cast('\a'); } -#line 3197 "src/ast/lex.cc" -yy536: +#line 3218 "src/ast/lex.cc" +yy540: ++YYCURSOR; -#line 549 "../src/ast/lex.re" +#line 557 "../src/ast/lex.re" { return static_cast('\b'); } -#line 3202 "src/ast/lex.cc" -yy538: +#line 3223 "src/ast/lex.cc" +yy542: ++YYCURSOR; -#line 550 "../src/ast/lex.re" +#line 558 "../src/ast/lex.re" { return static_cast('\f'); } -#line 3207 "src/ast/lex.cc" -yy540: +#line 3228 "src/ast/lex.cc" +yy544: ++YYCURSOR; -#line 551 "../src/ast/lex.re" +#line 559 "../src/ast/lex.re" { return static_cast('\n'); } -#line 3212 "src/ast/lex.cc" -yy542: +#line 3233 "src/ast/lex.cc" +yy546: ++YYCURSOR; -#line 552 "../src/ast/lex.re" +#line 560 "../src/ast/lex.re" { return static_cast('\r'); } -#line 3217 "src/ast/lex.cc" -yy544: +#line 3238 "src/ast/lex.cc" +yy548: ++YYCURSOR; -#line 553 "../src/ast/lex.re" +#line 561 "../src/ast/lex.re" { return static_cast('\t'); } -#line 3222 "src/ast/lex.cc" -yy546: +#line 3243 "src/ast/lex.cc" +yy550: ++YYCURSOR; -#line 554 "../src/ast/lex.re" +#line 562 "../src/ast/lex.re" { return static_cast('\v'); } -#line 3227 "src/ast/lex.cc" -yy548: +#line 3248 "src/ast/lex.cc" +yy552: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych <= '/') goto yy530; - if (yych <= '9') goto yy553; - goto yy530; + if (yych <= '/') goto yy534; + if (yych <= '9') goto yy557; + goto yy534; } else { - if (yych <= 'F') goto yy553; - if (yych <= '`') goto yy530; - if (yych <= 'f') goto yy553; - goto yy530; + if (yych <= 'F') goto yy557; + if (yych <= '`') goto yy534; + if (yych <= 'f') goto yy557; + goto yy534; } -yy549: +yy553: yych = (YYCTYPE)*++YYCURSOR; - if (yych <= '/') goto yy550; - if (yych <= '7') goto yy554; -yy550: + if (yych <= '/') goto yy554; + if (yych <= '7') goto yy558; +yy554: YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy527; + goto yy531; } else { - goto yy530; + goto yy534; } -yy551: +yy555: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych <= '9') goto yy556; - goto yy550; + if (yych <= '/') goto yy554; + if (yych <= '9') goto yy560; + goto yy554; } else { - if (yych <= 'F') goto yy556; - if (yych <= '`') goto yy550; - if (yych <= 'f') goto yy556; - goto yy550; + if (yych <= 'F') goto yy560; + if (yych <= '`') goto yy554; + if (yych <= 'f') goto yy560; + goto yy554; } -yy552: +yy556: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych <= '9') goto yy557; - goto yy550; + if (yych <= '/') goto yy554; + if (yych <= '9') goto yy561; + goto yy554; } else { - if (yych <= 'F') goto yy557; - if (yych <= '`') goto yy550; - if (yych <= 'f') goto yy557; - goto yy550; + if (yych <= 'F') goto yy561; + if (yych <= '`') goto yy554; + if (yych <= 'f') goto yy561; + goto yy554; } -yy553: +yy557: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych <= '9') goto yy558; - goto yy550; + if (yych <= '/') goto yy554; + if (yych <= '9') goto yy562; + goto yy554; } else { - if (yych <= 'F') goto yy558; - if (yych <= '`') goto yy550; - if (yych <= 'f') goto yy558; - goto yy550; + if (yych <= 'F') goto yy562; + if (yych <= '`') goto yy554; + if (yych <= 'f') goto yy562; + goto yy554; } -yy554: +yy558: ++YYCURSOR; -#line 547 "../src/ast/lex.re" +#line 555 "../src/ast/lex.re" { return unesc_oct(tok, cur); } -#line 3292 "src/ast/lex.cc" -yy556: +#line 3313 "src/ast/lex.cc" +yy560: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych <= '9') goto yy560; - goto yy550; + if (yych <= '/') goto yy554; + if (yych <= '9') goto yy564; + goto yy554; } else { - if (yych <= 'F') goto yy560; - if (yych <= '`') goto yy550; - if (yych <= 'f') goto yy560; - goto yy550; + if (yych <= 'F') goto yy564; + if (yych <= '`') goto yy554; + if (yych <= 'f') goto yy564; + goto yy554; } -yy557: +yy561: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych <= '9') goto yy553; - goto yy550; + if (yych <= '/') goto yy554; + if (yych <= '9') goto yy557; + goto yy554; } else { - if (yych <= 'F') goto yy553; - if (yych <= '`') goto yy550; - if (yych <= 'f') goto yy553; - goto yy550; + if (yych <= 'F') goto yy557; + if (yych <= '`') goto yy554; + if (yych <= 'f') goto yy557; + goto yy554; } -yy558: +yy562: ++YYCURSOR; -#line 546 "../src/ast/lex.re" +#line 554 "../src/ast/lex.re" { return unesc_hex(tok, cur); } -#line 3321 "src/ast/lex.cc" -yy560: +#line 3342 "src/ast/lex.cc" +yy564: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych >= ':') goto yy550; + if (yych <= '/') goto yy554; + if (yych >= ':') goto yy554; } else { - if (yych <= 'F') goto yy561; - if (yych <= '`') goto yy550; - if (yych >= 'g') goto yy550; + if (yych <= 'F') goto yy565; + if (yych <= '`') goto yy554; + if (yych >= 'g') goto yy554; } -yy561: +yy565: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy550; - if (yych <= '9') goto yy552; - goto yy550; + if (yych <= '/') goto yy554; + if (yych <= '9') goto yy556; + goto yy554; } else { - if (yych <= 'F') goto yy552; - if (yych <= '`') goto yy550; - if (yych <= 'f') goto yy552; - goto yy550; + if (yych <= 'F') goto yy556; + if (yych <= '`') goto yy554; + if (yych <= 'f') goto yy556; + goto yy554; } } -#line 562 "../src/ast/lex.re" +#line 570 "../src/ast/lex.re" } @@ -3361,7 +3382,7 @@ void Scanner::set_sourceline () sourceline: tok = cur; -#line 3365 "src/ast/lex.cc" +#line 3386 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -3402,100 +3423,100 @@ sourceline: yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { - if (yych >= 0x01) goto yy566; + if (yych >= 0x01) goto yy570; } else { - if (yych <= '\n') goto yy568; - if (yych <= '\f') goto yy566; - goto yy570; + if (yych <= '\n') goto yy572; + if (yych <= '\f') goto yy570; + goto yy574; } } else { if (yych <= '"') { - if (yych <= '!') goto yy566; - goto yy571; + if (yych <= '!') goto yy570; + goto yy575; } else { - if (yych <= '0') goto yy566; - if (yych <= '9') goto yy572; - goto yy566; + if (yych <= '0') goto yy570; + if (yych <= '9') goto yy576; + goto yy570; } } ++YYCURSOR; -#line 599 "../src/ast/lex.re" +#line 607 "../src/ast/lex.re" { --cur; tok = cur; return; } -#line 3429 "src/ast/lex.cc" -yy566: +#line 3450 "src/ast/lex.cc" +yy570: ++YYCURSOR; -yy567: -#line 605 "../src/ast/lex.re" +yy571: +#line 613 "../src/ast/lex.re" { goto sourceline; } -#line 3435 "src/ast/lex.cc" -yy568: +#line 3456 "src/ast/lex.cc" +yy572: ++YYCURSOR; -#line 594 "../src/ast/lex.re" +#line 602 "../src/ast/lex.re" { tok = cur; return; } -#line 3443 "src/ast/lex.cc" -yy570: +#line 3464 "src/ast/lex.cc" +yy574: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '\n') goto yy568; - goto yy567; -yy571: + if (yych == '\n') goto yy572; + goto yy571; +yy575: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy567; - if (yych == '\n') goto yy567; - goto yy576; -yy572: + if (yych <= 0x00) goto yy571; + if (yych == '\n') goto yy571; + goto yy580; +yy576: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { - goto yy572; + goto yy576; } -#line 581 "../src/ast/lex.re" +#line 589 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok, cur, cline)) { fatal_lc(get_cline(), get_column(), "line number overflow"); } goto sourceline; } -#line 3467 "src/ast/lex.cc" -yy575: +#line 3488 "src/ast/lex.cc" +yy579: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; -yy576: +yy580: if (yybm[0+yych] & 128) { - goto yy575; + goto yy579; } - if (yych <= '\n') goto yy577; - if (yych <= '"') goto yy578; - goto yy580; -yy577: + if (yych <= '\n') goto yy581; + if (yych <= '"') goto yy582; + goto yy584; +yy581: YYCURSOR = YYMARKER; - goto yy567; -yy578: + goto yy571; +yy582: ++YYCURSOR; -#line 588 "../src/ast/lex.re" +#line 596 "../src/ast/lex.re" { in.escaped_file_name = std::string (tok + 1, tok_len () - 2); // strip quotes strrreplace (in.escaped_file_name, "\\", "\\\\"); goto sourceline; } -#line 3490 "src/ast/lex.cc" -yy580: +#line 3511 "src/ast/lex.cc" +yy584: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy577; - if (yych == '\n') goto yy577; - goto yy575; + if (yych <= 0x00) goto yy581; + if (yych == '\n') goto yy581; + goto yy579; } -#line 606 "../src/ast/lex.re" +#line 614 "../src/ast/lex.re" } diff --git a/re2c/src/ast/lex.re b/re2c/src/ast/lex.re index 13e4f8a8..f891b09d 100644 --- a/re2c/src/ast/lex.re +++ b/re2c/src/ast/lex.re @@ -130,9 +130,17 @@ echo: goto echo; } - "/*!header:re2c:" [01] { + "/*!header:re2c:on" { out.wraw(tok, ptr); - out.header_mode(cur[-1] == '1'); + out.header_mode(true); + lex_end_of_comment(out); + goto echo; + } + + "/*!header:re2c:off" { + out.wraw(tok, ptr); + out.header_mode(false); + out.wdelay_line_info_input(cline, get_fname()); lex_end_of_comment(out); goto echo; } diff --git a/re2c/test/header/header_01.theader_01.h.c b/re2c/test/header/header_01.theader_01.h.c index a0ed09d6..d503b38d 100644 --- a/re2c/test/header/header_01.theader_01.h.c +++ b/re2c/test/header/header_01.theader_01.h.c @@ -1,5 +1,6 @@ /* Generated by re2c */ #line 1 "header/header_01.theader_01.h.re" +#line 3 "header/header_01.theader_01.h.re" #include "header_01.h" @@ -7,7 +8,7 @@ bool lex(const char *YYCURSOR) { -#line 11 "header/header_01.theader_01.h.c" +#line 12 "header/header_01.theader_01.h.c" { char yych; yych = *YYCURSOR; @@ -19,12 +20,12 @@ yy2: ++YYCURSOR; #line 14 "header/header_01.theader_01.h.re" { return false; } -#line 23 "header/header_01.theader_01.h.c" +#line 24 "header/header_01.theader_01.h.c" yy4: ++YYCURSOR; #line 13 "header/header_01.theader_01.h.re" { return true; } -#line 28 "header/header_01.theader_01.h.c" +#line 29 "header/header_01.theader_01.h.c" } #line 15 "header/header_01.theader_01.h.re" diff --git a/re2c/test/header/header_01.theader_01.h.re b/re2c/test/header/header_01.theader_01.h.re index 97ffcd54..9004c117 100644 --- a/re2c/test/header/header_01.theader_01.h.re +++ b/re2c/test/header/header_01.theader_01.h.re @@ -1,6 +1,6 @@ -/*!header:re2c:1*/ +/*!header:re2c:on*/ bool lex(const char *); -/*!header:re2c:0*/ +/*!header:re2c:off*/ #include "header_01.h" diff --git a/re2c/test/header/header_02.theader_02.h.c b/re2c/test/header/header_02.theader_02.h.c index 4e6daa5b..07e58e68 100644 --- a/re2c/test/header/header_02.theader_02.h.c +++ b/re2c/test/header/header_02.theader_02.h.c @@ -3,6 +3,7 @@ #line 1 "header/header_02.theader_02.h.re" +#line 11 "header/header_02.theader_02.h.re" #include "header_02.h" @@ -11,7 +12,7 @@ void lex(const YYCTYPE *s, tags_t &tags) { const YYCTYPE *YYCURSOR = s, *x, *y; -#line 15 "header/header_02.theader_02.h.c" +#line 16 "header/header_02.theader_02.h.c" { YYCTYPE yych; goto yy0; @@ -36,7 +37,7 @@ yy3: y = tags.yyt2; #line 22 "header/header_02.theader_02.h.re" { return; } -#line 40 "header/header_02.theader_02.h.c" +#line 41 "header/header_02.theader_02.h.c" yy4: yych = *++YYCURSOR; switch (yych) { diff --git a/re2c/test/header/header_02.theader_02.h.re b/re2c/test/header/header_02.theader_02.h.re index 4b5d297a..98aa70ee 100644 --- a/re2c/test/header/header_02.theader_02.h.re +++ b/re2c/test/header/header_02.theader_02.h.re @@ -1,6 +1,6 @@ /*!re2c re2c:flags:tags = 1; */ -/*!header:re2c:1*/ +/*!header:re2c:on*/ #define YYCTYPE char struct tags_t { @@ -8,7 +8,7 @@ struct tags_t }; void lex(const YYCTYPE *, tags_t &); -/*!header:re2c:0*/ +/*!header:re2c:off*/ #include "header_02.h" -- 2.40.0