]> granicus.if.org Git - re2c/commitdiff
Fixed Clang warnings -Wextra-semi and -Wextra-semi-stmt.
authorUlya Trofimovich <skvadrik@gmail.com>
Sat, 13 Jul 2019 09:49:09 +0000 (10:49 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Sat, 13 Jul 2019 09:49:09 +0000 (10:49 +0100)
bootstrap/src/parse/lex.cc
bootstrap/src/parse/lex.h
bootstrap/src/parse/lex_conf.cc
lib/test.cc
src/codegen/emit_action.cc
src/codegen/go_emit.cc
src/debug/debug.h
src/parse/lex.re
src/parse/lex_conf.re
src/util/smart_ptr.h
src/util/static_assert.h

index f36829dc23578e39db28cba95cdc7ee10d74f751..f65433a31f742a41766e7b9f08ddba35571120ac 100644 (file)
@@ -1,24 +1,31 @@
-/* Generated by re2c 1.1.1 on Fri May 24 12:40:10 2019 */
+/* Generated by re2c 1.1.1 on Sat Jul 13 10:46:39 2019 */
 #line 1 "../src/parse/lex.re"
+#include <ctype.h>
 #include "src/util/c99_stdint.h"
-#include <stddef.h>
-#include <string.h>
 #include <algorithm>
 #include <limits>
 #include <string>
+#include <utility>
+#include <vector>
 
 #include "src/codegen/output.h"
 #include "src/encoding/enc.h"
-#include "src/parse/input.h"
+#include "src/msg/location.h"
+#include "src/msg/msg.h"
+#include "src/msg/warn.h"
+#include "src/options/opt.h"
 #include "src/parse/ast.h"
+#include "src/parse/input.h"
+#include "src/parse/lex.h"
 #include "src/parse/scanner.h"
 #include "src/parse/parse.h" // needed by "parser.h"
 #include "src/parse/unescape.h"
-#include "src/util/range.h"
+#include "src/regexp/rule.h"
 #include "src/util/s_to_n32_unsafe.h"
 #include "src/util/string_utils.h"
 #include "parser.h"
 
+
 extern YYSTYPE yylval;
 
 namespace re2c {
@@ -27,12 +34,12 @@ namespace re2c {
 #define YYCURSOR  cur
 #define YYLIMIT   lim
 #define YYMARKER  mar
-#define YYFILL(n) { if (!fill (n)) fatal("unexpected end of input"); }
+#define YYFILL(n) do { if (!fill(n)) fatal("unexpected end of input"); } while(0)
 
-#line 54 "../src/parse/lex.re"
+#line 61 "../src/parse/lex.re"
 
 
-#line 107 "../src/parse/lex.re"
+#line 120 "../src/parse/lex.re"
 
 
 Scanner::ParseMode Scanner::echo(Output &out)
@@ -46,7 +53,7 @@ loop:
     loc = cur_loc();
     ptr = cur;
 
-#line 50 "src/parse/lex.cc"
+#line 57 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -104,7 +111,7 @@ loop:
                }
        }
        ++YYCURSOR;
-#line 205 "../src/parse/lex.re"
+#line 218 "../src/parse/lex.re"
        {
         if (is_eof()) {
             out.wraw(tok, ptr);
@@ -112,13 +119,13 @@ loop:
         }
         goto loop;
     }
-#line 116 "src/parse/lex.cc"
+#line 123 "src/parse/lex.cc"
 yy4:
        ++YYCURSOR;
 yy5:
-#line 224 "../src/parse/lex.re"
+#line 237 "../src/parse/lex.re"
        { goto loop; }
-#line 122 "src/parse/lex.cc"
+#line 129 "src/parse/lex.cc"
 yy6:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -127,12 +134,12 @@ yy6:
        }
        if (yych == '#') goto yy14;
 yy7:
-#line 219 "../src/parse/lex.re"
+#line 232 "../src/parse/lex.re"
        {
         next_line();
         goto loop;
     }
-#line 136 "src/parse/lex.cc"
+#line 143 "src/parse/lex.cc"
 yy8:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy6;
@@ -175,12 +182,12 @@ yy14:
        }
 yy16:
        ++YYCURSOR;
-#line 120 "../src/parse/lex.re"
+#line 133 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         return Parse;
     }
-#line 184 "src/parse/lex.cc"
+#line 191 "src/parse/lex.cc"
 yy18:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '!') goto yy20;
@@ -476,13 +483,13 @@ yy80:
 yy82:
        ++YYCURSOR;
        YYCURSOR = yyt1;
-#line 213 "../src/parse/lex.re"
+#line 226 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr).ws("\n");
         set_sourceline();
         goto next;
     }
-#line 486 "src/parse/lex.cc"
+#line 493 "src/parse/lex.cc"
 yy84:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy82;
@@ -615,14 +622,14 @@ yy114:
        goto yy13;
 yy115:
        ++YYCURSOR;
-#line 141 "../src/parse/lex.re"
+#line 154 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         out.wdelay_yymaxfill();
         lex_end_of_comment(out);
         goto next;
     }
-#line 626 "src/parse/lex.cc"
+#line 633 "src/parse/lex.cc"
 yy117:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'h') goto yy128;
@@ -645,12 +652,12 @@ yy121:
        goto yy13;
 yy122:
        ++YYCURSOR;
-#line 130 "../src/parse/lex.re"
+#line 143 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         return Reuse;
     }
-#line 654 "src/parse/lex.cc"
+#line 661 "src/parse/lex.cc"
 yy124:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'r') goto yy133;
@@ -709,33 +716,33 @@ yy137:
        goto yy13;
 yy138:
        ++YYCURSOR;
-#line 177 "../src/parse/lex.re"
+#line 190 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         lex_tags(out, true);
         goto next;
     }
-#line 719 "src/parse/lex.cc"
+#line 726 "src/parse/lex.cc"
 yy140:
        ++YYCURSOR;
-#line 125 "../src/parse/lex.re"
+#line 138 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         return Rules;
     }
-#line 727 "src/parse/lex.cc"
+#line 734 "src/parse/lex.cc"
 yy142:
        ++YYCURSOR;
-#line 171 "../src/parse/lex.re"
+#line 184 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         lex_tags(out, false);
         goto next;
     }
-#line 736 "src/parse/lex.cc"
+#line 743 "src/parse/lex.cc"
 yy144:
        ++YYCURSOR;
-#line 162 "../src/parse/lex.re"
+#line 175 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         out.wdelay_line_info_output();
@@ -744,7 +751,7 @@ yy144:
         lex_end_of_comment(out);
         goto next;
     }
-#line 748 "src/parse/lex.cc"
+#line 755 "src/parse/lex.cc"
 yy146:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '2') goto yy152;
@@ -755,13 +762,13 @@ yy147:
        goto yy13;
 yy148:
        ++YYCURSOR;
-#line 135 "../src/parse/lex.re"
+#line 148 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         lex_end_of_comment(out);
         goto next;
     }
-#line 765 "src/parse/lex.cc"
+#line 772 "src/parse/lex.cc"
 yy150:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'c') goto yy154;
@@ -788,14 +795,14 @@ yy155:
        goto yy13;
 yy156:
        ++YYCURSOR;
-#line 155 "../src/parse/lex.re"
+#line 168 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         out.wdelay_state_goto(0);
         lex_end_of_comment(out);
         goto next;
     }
-#line 799 "src/parse/lex.cc"
+#line 806 "src/parse/lex.cc"
 yy158:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'f') goto yy162;
@@ -827,7 +834,7 @@ yy162:
        goto yy13;
 yy163:
        ++YYCURSOR;
-#line 183 "../src/parse/lex.re"
+#line 196 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         out.header_mode(true);
@@ -835,7 +842,7 @@ yy163:
         lex_end_of_comment(out);
         goto next;
     }
-#line 839 "src/parse/lex.cc"
+#line 846 "src/parse/lex.cc"
 yy165:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
@@ -851,17 +858,17 @@ yy165:
        }
 yy167:
        ++YYCURSOR;
-#line 148 "../src/parse/lex.re"
+#line 161 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         out.wdelay_yymaxnmatch();
         lex_end_of_comment(out);
         goto next;
     }
-#line 862 "src/parse/lex.cc"
+#line 869 "src/parse/lex.cc"
 yy169:
        ++YYCURSOR;
-#line 191 "../src/parse/lex.re"
+#line 204 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         out.header_mode(false);
@@ -869,7 +876,7 @@ yy169:
         lex_end_of_comment(out);
         goto next;
     }
-#line 873 "src/parse/lex.cc"
+#line 880 "src/parse/lex.cc"
 yy171:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 0x1F) {
@@ -913,15 +920,15 @@ yy175:
        ++YYCURSOR;
        x = yyt1;
        y = yyt2;
-#line 199 "../src/parse/lex.re"
+#line 212 "../src/parse/lex.re"
        {
         out.wraw(tok, ptr);
         include(getstr(x + 1, y - 1));
         goto next;
     }
-#line 923 "src/parse/lex.cc"
+#line 930 "src/parse/lex.cc"
 }
-#line 225 "../src/parse/lex.re"
+#line 238 "../src/parse/lex.re"
 
 }
 
@@ -930,7 +937,7 @@ void Scanner::lex_end_of_comment(Output &out)
     bool multiline = false;
 loop:
 
-#line 934 "src/parse/lex.cc"
+#line 941 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -946,26 +953,26 @@ loop:
        }
 yy180:
        ++YYCURSOR;
-#line 234 "../src/parse/lex.re"
+#line 247 "../src/parse/lex.re"
        {
         msg.fatal(cur_loc(), "expected end of block");
     }
-#line 954 "src/parse/lex.cc"
+#line 961 "src/parse/lex.cc"
 yy182:
        ++YYCURSOR;
 yy183:
-#line 233 "../src/parse/lex.re"
+#line 246 "../src/parse/lex.re"
        { goto loop; }
-#line 960 "src/parse/lex.cc"
+#line 967 "src/parse/lex.cc"
 yy184:
        ++YYCURSOR;
-#line 237 "../src/parse/lex.re"
+#line 250 "../src/parse/lex.re"
        {
         next_line();
         multiline = true;
         goto loop;
     }
-#line 969 "src/parse/lex.cc"
+#line 976 "src/parse/lex.cc"
 yy186:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy184;
@@ -974,16 +981,16 @@ yy187:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '/') goto yy183;
        ++YYCURSOR;
-#line 242 "../src/parse/lex.re"
+#line 255 "../src/parse/lex.re"
        {
         if (multiline) {
             out.wdelay_line_info_input(cur_loc());
         }
         return;
     }
-#line 985 "src/parse/lex.cc"
+#line 992 "src/parse/lex.cc"
 }
-#line 248 "../src/parse/lex.re"
+#line 261 "../src/parse/lex.re"
 
 }
 
@@ -992,7 +999,7 @@ void Scanner::lex_tags(Output &out, bool mtags)
     std::string fmt, sep;
 loop:
 
-#line 996 "src/parse/lex.cc"
+#line 1003 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1050,11 +1057,11 @@ loop:
        }
        ++YYCURSOR;
 yy193:
-#line 256 "../src/parse/lex.re"
+#line 269 "../src/parse/lex.re"
        {
         msg.fatal(cur_loc(), "unrecognized configuration");
     }
-#line 1058 "src/parse/lex.cc"
+#line 1065 "src/parse/lex.cc"
 yy194:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -1062,19 +1069,19 @@ yy194:
        if (yybm[0+yych] & 128) {
                goto yy194;
        }
-#line 267 "../src/parse/lex.re"
+#line 280 "../src/parse/lex.re"
        {
         goto loop;
     }
-#line 1070 "src/parse/lex.cc"
+#line 1077 "src/parse/lex.cc"
 yy197:
        ++YYCURSOR;
-#line 270 "../src/parse/lex.re"
+#line 283 "../src/parse/lex.re"
        {
         next_line();
         goto loop;
     }
-#line 1078 "src/parse/lex.cc"
+#line 1085 "src/parse/lex.cc"
 yy199:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy197;
@@ -1093,12 +1100,12 @@ yy202:
        goto yy193;
 yy203:
        ++YYCURSOR;
-#line 274 "../src/parse/lex.re"
+#line 287 "../src/parse/lex.re"
        {
         out.wdelay_tags(new ConfTags(fmt, sep), mtags);
         return;
     }
-#line 1102 "src/parse/lex.cc"
+#line 1109 "src/parse/lex.cc"
 yy205:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'r') goto yy208;
@@ -1135,12 +1142,12 @@ yy213:
        goto yy206;
 yy214:
        ++YYCURSOR;
-#line 259 "../src/parse/lex.re"
+#line 272 "../src/parse/lex.re"
        {
         fmt = lex_conf_string();
         goto loop;
     }
-#line 1144 "src/parse/lex.cc"
+#line 1151 "src/parse/lex.cc"
 yy216:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 't') goto yy206;
@@ -1149,14 +1156,14 @@ yy216:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy206;
        ++YYCURSOR;
-#line 263 "../src/parse/lex.re"
+#line 276 "../src/parse/lex.re"
        {
         sep = lex_conf_string();
         goto loop;
     }
-#line 1158 "src/parse/lex.cc"
+#line 1165 "src/parse/lex.cc"
 }
-#line 278 "../src/parse/lex.re"
+#line 291 "../src/parse/lex.re"
 
 }
 
@@ -1167,7 +1174,7 @@ scan:
     tok = cur;
     loc = cur_loc();
 
-#line 1171 "src/parse/lex.cc"
+#line 1178 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1277,12 +1284,12 @@ scan:
 yy223:
        ++YYCURSOR;
 yy224:
-#line 402 "../src/parse/lex.re"
+#line 415 "../src/parse/lex.re"
        {
         msg.fatal(tok_loc(), "unexpected character: '%c'", *tok);
         goto scan;
     }
-#line 1286 "src/parse/lex.cc"
+#line 1293 "src/parse/lex.cc"
 yy225:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -1290,9 +1297,9 @@ yy225:
        if (yybm[0+yych] & 16) {
                goto yy225;
        }
-#line 384 "../src/parse/lex.re"
+#line 397 "../src/parse/lex.re"
        { goto scan; }
-#line 1296 "src/parse/lex.cc"
+#line 1303 "src/parse/lex.cc"
 yy228:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -1303,7 +1310,7 @@ yy228:
                if (yych == '#') goto yy258;
        }
 yy229:
-#line 391 "../src/parse/lex.re"
+#line 404 "../src/parse/lex.re"
        {
         next_line();
         if (lexer_state == LEX_FLEX_NAME) {
@@ -1314,16 +1321,16 @@ yy229:
             goto scan;
         }
     }
-#line 1318 "src/parse/lex.cc"
+#line 1325 "src/parse/lex.cc"
 yy230:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy228;
        goto yy224;
 yy231:
        ++YYCURSOR;
-#line 304 "../src/parse/lex.re"
+#line 317 "../src/parse/lex.re"
        { yylval.regexp = lex_str('"'); return TOKEN_REGEXP; }
-#line 1327 "src/parse/lex.cc"
+#line 1334 "src/parse/lex.cc"
 yy233:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '^') {
@@ -1338,30 +1345,30 @@ yy233:
 yy234:
        ++YYCURSOR;
 yy235:
-#line 313 "../src/parse/lex.re"
+#line 326 "../src/parse/lex.re"
        { return *tok; }
-#line 1344 "src/parse/lex.cc"
+#line 1351 "src/parse/lex.cc"
 yy236:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '}') goto yy263;
        goto yy224;
 yy237:
        ++YYCURSOR;
-#line 303 "../src/parse/lex.re"
+#line 316 "../src/parse/lex.re"
        { yylval.regexp = lex_str('\''); return TOKEN_REGEXP; }
-#line 1353 "src/parse/lex.cc"
+#line 1360 "src/parse/lex.cc"
 yy239:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '/') goto yy263;
        goto yy235;
 yy240:
        ++YYCURSOR;
-#line 379 "../src/parse/lex.re"
+#line 392 "../src/parse/lex.re"
        {
         yylval.regexp = ast_dot(tok_loc());
         return TOKEN_REGEXP;
     }
-#line 1365 "src/parse/lex.cc"
+#line 1372 "src/parse/lex.cc"
 yy242:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '*') goto yy265;
@@ -1373,9 +1380,9 @@ yy243:
        goto yy224;
 yy244:
        ++YYCURSOR;
-#line 296 "../src/parse/lex.re"
+#line 309 "../src/parse/lex.re"
        { return lex_clist(); }
-#line 1379 "src/parse/lex.cc"
+#line 1386 "src/parse/lex.cc"
 yy246:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -1389,7 +1396,7 @@ yy248:
        if (yybm[0+yych] & 32) {
                goto yy247;
        }
-#line 356 "../src/parse/lex.re"
+#line 369 "../src/parse/lex.re"
        {
         if (!globopts->FFlag || lex_namedef_context_re2c()) {
             yylval.str = newstr(tok, cur);
@@ -1412,13 +1419,13 @@ yy248:
             return TOKEN_REGEXP;
         }
     }
-#line 1416 "src/parse/lex.cc"
+#line 1423 "src/parse/lex.cc"
 yy250:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '^') goto yy273;
-#line 305 "../src/parse/lex.re"
+#line 318 "../src/parse/lex.re"
        { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
-#line 1422 "src/parse/lex.cc"
+#line 1429 "src/parse/lex.cc"
 yy252:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'e') goto yy275;
@@ -1441,9 +1448,9 @@ yy253:
                }
        }
 yy254:
-#line 288 "../src/parse/lex.re"
+#line 301 "../src/parse/lex.re"
        { lex_code_in_braces(); return TOKEN_CODE; }
-#line 1447 "src/parse/lex.cc"
+#line 1454 "src/parse/lex.cc"
 yy255:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -1502,35 +1509,35 @@ yy260:
                }
        }
 yy262:
-#line 308 "../src/parse/lex.re"
+#line 321 "../src/parse/lex.re"
        {
         yylval.regexp = ast_tag(tok_loc(), newstr(tok + 1, cur), tok[0] == '#');
         return TOKEN_REGEXP;
     }
-#line 1511 "src/parse/lex.cc"
+#line 1518 "src/parse/lex.cc"
 yy263:
        ++YYCURSOR;
-#line 301 "../src/parse/lex.re"
+#line 314 "../src/parse/lex.re"
        { tok = cur; return 0; }
-#line 1516 "src/parse/lex.cc"
+#line 1523 "src/parse/lex.cc"
 yy265:
        ++YYCURSOR;
-#line 299 "../src/parse/lex.re"
+#line 312 "../src/parse/lex.re"
        { lex_c_comment(); goto scan; }
-#line 1521 "src/parse/lex.cc"
+#line 1528 "src/parse/lex.cc"
 yy267:
        ++YYCURSOR;
-#line 298 "../src/parse/lex.re"
+#line 311 "../src/parse/lex.re"
        { lex_cpp_comment(); goto scan; }
-#line 1526 "src/parse/lex.cc"
+#line 1533 "src/parse/lex.cc"
 yy269:
        yyaccept = 3;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '>') goto yy271;
 yy270:
-#line 289 "../src/parse/lex.re"
+#line 302 "../src/parse/lex.re"
        { lex_code_indented(); return TOKEN_CODE; }
-#line 1534 "src/parse/lex.cc"
+#line 1541 "src/parse/lex.cc"
 yy271:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -1563,9 +1570,9 @@ yy271:
        }
 yy273:
        ++YYCURSOR;
-#line 306 "../src/parse/lex.re"
+#line 319 "../src/parse/lex.re"
        { yylval.regexp = lex_cls(true);  return TOKEN_REGEXP; }
-#line 1569 "src/parse/lex.cc"
+#line 1576 "src/parse/lex.cc"
 yy275:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '2') goto yy286;
@@ -1573,12 +1580,12 @@ yy275:
 yy276:
        ++YYCURSOR;
 yy277:
-#line 341 "../src/parse/lex.re"
+#line 354 "../src/parse/lex.re"
        {
         msg.fatal(tok_loc(), "illegal closure form, use '{n}', '{n,}', '{n,m}' "
             "where n and m are numbers");
     }
-#line 1582 "src/parse/lex.cc"
+#line 1589 "src/parse/lex.cc"
 yy278:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -1636,12 +1643,12 @@ yy283:
        }
 yy285:
        p = yyt1;
-#line 291 "../src/parse/lex.re"
+#line 304 "../src/parse/lex.re"
        {
         yylval.str = newstr(p, cur);
         return tok[0] == ':' ? TOKEN_CJUMP : TOKEN_CNEXT;
     }
-#line 1645 "src/parse/lex.cc"
+#line 1652 "src/parse/lex.cc"
 yy286:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'c') goto yy293;
@@ -1655,7 +1662,7 @@ yy287:
        goto yy277;
 yy288:
        ++YYCURSOR;
-#line 315 "../src/parse/lex.re"
+#line 328 "../src/parse/lex.re"
        {
         if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.bounds.min)) {
             msg.fatal(tok_loc(), "repetition count overflow");
@@ -1663,10 +1670,10 @@ yy288:
         yylval.bounds.max = yylval.bounds.min;
         return TOKEN_CLOSESIZE;
     }
-#line 1667 "src/parse/lex.cc"
+#line 1674 "src/parse/lex.cc"
 yy290:
        ++YYCURSOR;
-#line 346 "../src/parse/lex.re"
+#line 359 "../src/parse/lex.re"
        {
         if (!globopts->FFlag) {
             msg.fatal(tok_loc(), "curly braces for names only allowed with -F switch");
@@ -1674,7 +1681,7 @@ yy290:
         yylval.str = newstr(tok + 1, cur - 1);
         return TOKEN_ID;
     }
-#line 1678 "src/parse/lex.cc"
+#line 1685 "src/parse/lex.cc"
 yy292:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'n') goto yy298;
@@ -1693,7 +1700,7 @@ yy294:
        goto yy257;
 yy296:
        ++YYCURSOR;
-#line 333 "../src/parse/lex.re"
+#line 346 "../src/parse/lex.re"
        {
         if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.bounds.min)) {
             msg.fatal(tok_loc(), "repetition lower bound overflow");
@@ -1701,20 +1708,20 @@ yy296:
         yylval.bounds.max = std::numeric_limits<uint32_t>::max();
         return TOKEN_CLOSESIZE;
     }
-#line 1705 "src/parse/lex.cc"
+#line 1712 "src/parse/lex.cc"
 yy298:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'e') goto yy303;
        goto yy257;
 yy299:
        ++YYCURSOR;
-#line 354 "../src/parse/lex.re"
+#line 367 "../src/parse/lex.re"
        { return TOKEN_CONF; }
-#line 1714 "src/parse/lex.cc"
+#line 1721 "src/parse/lex.cc"
 yy301:
        ++YYCURSOR;
        p = yyt1;
-#line 323 "../src/parse/lex.re"
+#line 336 "../src/parse/lex.re"
        {
         if (!s_to_u32_unsafe (tok + 1, p, yylval.bounds.min)) {
             msg.fatal(tok_loc(), "repetition lower bound overflow");
@@ -1724,7 +1731,7 @@ yy301:
         }
         return TOKEN_CLOSESIZE;
     }
-#line 1728 "src/parse/lex.cc"
+#line 1735 "src/parse/lex.cc"
 yy303:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '0') goto yy305;
@@ -1780,12 +1787,12 @@ yy308:
 yy310:
        ++YYCURSOR;
        YYCURSOR = yyt1;
-#line 386 "../src/parse/lex.re"
+#line 399 "../src/parse/lex.re"
        {
         set_sourceline ();
         return TOKEN_LINE_INFO;
     }
-#line 1789 "src/parse/lex.cc"
+#line 1796 "src/parse/lex.cc"
 yy312:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy310;
@@ -1811,14 +1818,14 @@ yy316:
        if (yych == '\n') goto yy257;
        goto yy313;
 }
-#line 406 "../src/parse/lex.re"
+#line 419 "../src/parse/lex.re"
 
 }
 
 bool Scanner::lex_namedef_context_re2c()
 {
 
-#line 1822 "src/parse/lex.cc"
+#line 1829 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1873,9 +1880,9 @@ bool Scanner::lex_namedef_context_re2c()
                }
        }
 yy319:
-#line 413 "../src/parse/lex.re"
+#line 426 "../src/parse/lex.re"
        { return false; }
-#line 1879 "src/parse/lex.cc"
+#line 1886 "src/parse/lex.cc"
 yy320:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -1892,18 +1899,18 @@ yy323:
        if (yych == '>') goto yy322;
        ++YYCURSOR;
        YYCURSOR = yyt1;
-#line 412 "../src/parse/lex.re"
+#line 425 "../src/parse/lex.re"
        { return true; }
-#line 1898 "src/parse/lex.cc"
+#line 1905 "src/parse/lex.cc"
 }
-#line 414 "../src/parse/lex.re"
+#line 427 "../src/parse/lex.re"
 
 }
 
 bool Scanner::lex_namedef_context_flex()
 {
 
-#line 1907 "src/parse/lex.cc"
+#line 1914 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1950,9 +1957,9 @@ bool Scanner::lex_namedef_context_flex()
                yyt1 = YYCURSOR;
                goto yy329;
        }
-#line 422 "../src/parse/lex.re"
+#line 435 "../src/parse/lex.re"
        { return false; }
-#line 1956 "src/parse/lex.cc"
+#line 1963 "src/parse/lex.cc"
 yy329:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -1967,17 +1974,17 @@ yy329:
                if (yych == '{') goto yy332;
        }
        YYCURSOR = yyt1;
-#line 421 "../src/parse/lex.re"
+#line 434 "../src/parse/lex.re"
        { return true; }
-#line 1973 "src/parse/lex.cc"
+#line 1980 "src/parse/lex.cc"
 yy332:
        ++YYCURSOR;
        YYCURSOR = yyt1;
-#line 420 "../src/parse/lex.re"
+#line 433 "../src/parse/lex.re"
        { return false; }
-#line 1979 "src/parse/lex.cc"
+#line 1986 "src/parse/lex.cc"
 }
-#line 423 "../src/parse/lex.re"
+#line 436 "../src/parse/lex.re"
 
 }
 
@@ -1986,7 +1993,7 @@ int Scanner::lex_clist()
     int kind = TOKEN_CLIST;
     CondList *cl = new CondList;
 
-#line 1990 "src/parse/lex.cc"
+#line 1997 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2036,30 +2043,30 @@ yy334:
        if (yych <= '!') goto yy338;
        if (yych == '>') goto yy341;
 yy337:
-#line 433 "../src/parse/lex.re"
+#line 446 "../src/parse/lex.re"
        { goto cond; }
-#line 2042 "src/parse/lex.cc"
+#line 2049 "src/parse/lex.cc"
 yy338:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\t') goto yy338;
        if (yych == ' ') goto yy338;
-#line 431 "../src/parse/lex.re"
+#line 444 "../src/parse/lex.re"
        { kind = TOKEN_CSETUP; goto cond; }
-#line 2051 "src/parse/lex.cc"
+#line 2058 "src/parse/lex.cc"
 yy341:
        ++YYCURSOR;
-#line 432 "../src/parse/lex.re"
+#line 445 "../src/parse/lex.re"
        { kind = TOKEN_CZERO; goto end; }
-#line 2056 "src/parse/lex.cc"
+#line 2063 "src/parse/lex.cc"
 }
-#line 434 "../src/parse/lex.re"
+#line 447 "../src/parse/lex.re"
 
 cond:
     tok = cur;
 
-#line 2063 "src/parse/lex.cc"
+#line 2070 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2111,14 +2118,14 @@ cond:
        }
 yy345:
        ++YYCURSOR;
-#line 440 "../src/parse/lex.re"
+#line 453 "../src/parse/lex.re"
        { goto error; }
-#line 2117 "src/parse/lex.cc"
+#line 2124 "src/parse/lex.cc"
 yy347:
        ++YYCURSOR;
-#line 439 "../src/parse/lex.re"
+#line 452 "../src/parse/lex.re"
        { if (!cl->empty()) goto error; cl->insert("*"); goto next; }
-#line 2122 "src/parse/lex.cc"
+#line 2129 "src/parse/lex.cc"
 yy349:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -2126,15 +2133,15 @@ yy349:
        if (yybm[0+yych] & 128) {
                goto yy349;
        }
-#line 438 "../src/parse/lex.re"
+#line 451 "../src/parse/lex.re"
        { cl->insert(getstr(tok, cur)); goto next; }
-#line 2132 "src/parse/lex.cc"
+#line 2139 "src/parse/lex.cc"
 }
-#line 441 "../src/parse/lex.re"
+#line 454 "../src/parse/lex.re"
 
 next:
 
-#line 2138 "src/parse/lex.cc"
+#line 2145 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2185,9 +2192,9 @@ next:
        }
        ++YYCURSOR;
 yy355:
-#line 446 "../src/parse/lex.re"
+#line 459 "../src/parse/lex.re"
        { goto error; }
-#line 2191 "src/parse/lex.cc"
+#line 2198 "src/parse/lex.cc"
 yy356:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -2209,14 +2216,14 @@ yy357:
        if (yybm[0+yych] & 128) {
                goto yy357;
        }
-#line 444 "../src/parse/lex.re"
+#line 457 "../src/parse/lex.re"
        { goto cond; }
-#line 2215 "src/parse/lex.cc"
+#line 2222 "src/parse/lex.cc"
 yy360:
        ++YYCURSOR;
-#line 445 "../src/parse/lex.re"
+#line 458 "../src/parse/lex.re"
        { goto end; }
-#line 2220 "src/parse/lex.cc"
+#line 2227 "src/parse/lex.cc"
 yy362:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -2234,7 +2241,7 @@ yy362:
        YYCURSOR = YYMARKER;
        goto yy355;
 }
-#line 447 "../src/parse/lex.re"
+#line 460 "../src/parse/lex.re"
 
 end:
     yylval.clist = cl;
@@ -2250,7 +2257,7 @@ void Scanner::lex_code_indented()
     tok = cur;
 code:
 
-#line 2254 "src/parse/lex.cc"
+#line 2261 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
@@ -2278,15 +2285,15 @@ code:
        }
 yy367:
        ++YYCURSOR;
-#line 472 "../src/parse/lex.re"
+#line 485 "../src/parse/lex.re"
        { fail_if_eof(); goto code; }
-#line 2284 "src/parse/lex.cc"
+#line 2291 "src/parse/lex.cc"
 yy369:
        ++YYCURSOR;
 yy370:
-#line 477 "../src/parse/lex.re"
+#line 490 "../src/parse/lex.re"
        { goto code; }
-#line 2290 "src/parse/lex.cc"
+#line 2297 "src/parse/lex.cc"
 yy371:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '\f') {
@@ -2297,7 +2304,7 @@ yy371:
                if (yych == ' ') goto yy379;
        }
 yy372:
-#line 463 "../src/parse/lex.re"
+#line 476 "../src/parse/lex.re"
        {
         next_line();
         while (isspace(tok[0])) ++tok;
@@ -2306,16 +2313,16 @@ yy372:
         yylval.code = new Code(loc, getstr(tok, p));
         return;
     }
-#line 2310 "src/parse/lex.cc"
+#line 2317 "src/parse/lex.cc"
 yy373:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy371;
        goto yy370;
 yy374:
        ++YYCURSOR;
-#line 476 "../src/parse/lex.re"
+#line 489 "../src/parse/lex.re"
        { lex_string(cur[-1]); goto code; }
-#line 2319 "src/parse/lex.cc"
+#line 2326 "src/parse/lex.cc"
 yy376:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '*') goto yy381;
@@ -2323,27 +2330,27 @@ yy376:
        goto yy370;
 yy377:
        ++YYCURSOR;
-#line 473 "../src/parse/lex.re"
+#line 486 "../src/parse/lex.re"
        { msg.fatal(cur_loc(), "Curly braces are not allowed after ':='"); }
-#line 2329 "src/parse/lex.cc"
+#line 2336 "src/parse/lex.cc"
 yy379:
        ++YYCURSOR;
        YYCURSOR -= 1;
-#line 462 "../src/parse/lex.re"
+#line 475 "../src/parse/lex.re"
        { next_line(); goto code; }
-#line 2335 "src/parse/lex.cc"
+#line 2342 "src/parse/lex.cc"
 yy381:
        ++YYCURSOR;
-#line 474 "../src/parse/lex.re"
+#line 487 "../src/parse/lex.re"
        { lex_c_comment(); goto code; }
-#line 2340 "src/parse/lex.cc"
+#line 2347 "src/parse/lex.cc"
 yy383:
        ++YYCURSOR;
-#line 475 "../src/parse/lex.re"
+#line 488 "../src/parse/lex.re"
        { lex_cpp_comment(); goto code; }
-#line 2345 "src/parse/lex.cc"
+#line 2352 "src/parse/lex.cc"
 }
-#line 478 "../src/parse/lex.re"
+#line 491 "../src/parse/lex.re"
 
 }
 
@@ -2353,7 +2360,7 @@ void Scanner::lex_code_in_braces()
     uint32_t depth = 1;
 code:
 
-#line 2357 "src/parse/lex.cc"
+#line 2364 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2415,15 +2422,15 @@ code:
        }
 yy387:
        ++YYCURSOR;
-#line 498 "../src/parse/lex.re"
+#line 511 "../src/parse/lex.re"
        { fail_if_eof(); goto code; }
-#line 2421 "src/parse/lex.cc"
+#line 2428 "src/parse/lex.cc"
 yy389:
        ++YYCURSOR;
 yy390:
-#line 502 "../src/parse/lex.re"
+#line 515 "../src/parse/lex.re"
        { goto code; }
-#line 2427 "src/parse/lex.cc"
+#line 2434 "src/parse/lex.cc"
 yy391:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 32) {
@@ -2431,18 +2438,18 @@ yy391:
        }
        if (yych == '#') goto yy404;
 yy392:
-#line 497 "../src/parse/lex.re"
+#line 510 "../src/parse/lex.re"
        { next_line(); goto code; }
-#line 2437 "src/parse/lex.cc"
+#line 2444 "src/parse/lex.cc"
 yy393:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy391;
        goto yy390;
 yy394:
        ++YYCURSOR;
-#line 501 "../src/parse/lex.re"
+#line 514 "../src/parse/lex.re"
        { lex_string(cur[-1]); goto code; }
-#line 2446 "src/parse/lex.cc"
+#line 2453 "src/parse/lex.cc"
 yy396:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '*') goto yy406;
@@ -2450,12 +2457,12 @@ yy396:
        goto yy390;
 yy397:
        ++YYCURSOR;
-#line 495 "../src/parse/lex.re"
+#line 508 "../src/parse/lex.re"
        { ++depth; goto code; }
-#line 2456 "src/parse/lex.cc"
+#line 2463 "src/parse/lex.cc"
 yy399:
        ++YYCURSOR;
-#line 487 "../src/parse/lex.re"
+#line 500 "../src/parse/lex.re"
        {
         if (--depth == 0) {
             yylval.code = new Code(loc, getstr(tok, cur));
@@ -2463,7 +2470,7 @@ yy399:
         }
         goto code;
     }
-#line 2467 "src/parse/lex.cc"
+#line 2474 "src/parse/lex.cc"
 yy401:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -2489,14 +2496,14 @@ yy404:
        }
 yy406:
        ++YYCURSOR;
-#line 499 "../src/parse/lex.re"
+#line 512 "../src/parse/lex.re"
        { lex_c_comment(); goto code; }
-#line 2495 "src/parse/lex.cc"
+#line 2502 "src/parse/lex.cc"
 yy408:
        ++YYCURSOR;
-#line 500 "../src/parse/lex.re"
+#line 513 "../src/parse/lex.re"
        { lex_cpp_comment(); goto code; }
-#line 2500 "src/parse/lex.cc"
+#line 2507 "src/parse/lex.cc"
 yy410:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'i') goto yy403;
@@ -2553,9 +2560,9 @@ yy418:
 yy420:
        ++YYCURSOR;
        YYCURSOR = yyt1;
-#line 496 "../src/parse/lex.re"
+#line 509 "../src/parse/lex.re"
        { set_sourceline (); goto code; }
-#line 2559 "src/parse/lex.cc"
+#line 2566 "src/parse/lex.cc"
 yy422:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy420;
@@ -2581,7 +2588,7 @@ yy426:
        if (yych == '\n') goto yy403;
        goto yy423;
 }
-#line 503 "../src/parse/lex.re"
+#line 516 "../src/parse/lex.re"
 
 }
 
@@ -2589,7 +2596,7 @@ void Scanner::lex_string(char delim)
 {
 loop:
 
-#line 2593 "src/parse/lex.cc"
+#line 2600 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -2615,29 +2622,29 @@ loop:
        }
 yy429:
        ++YYCURSOR;
-#line 513 "../src/parse/lex.re"
+#line 526 "../src/parse/lex.re"
        { fail_if_eof(); goto loop; }
-#line 2621 "src/parse/lex.cc"
+#line 2628 "src/parse/lex.cc"
 yy431:
        ++YYCURSOR;
 yy432:
-#line 514 "../src/parse/lex.re"
+#line 527 "../src/parse/lex.re"
        { goto loop; }
-#line 2627 "src/parse/lex.cc"
+#line 2634 "src/parse/lex.cc"
 yy433:
        ++YYCURSOR;
-#line 512 "../src/parse/lex.re"
+#line 525 "../src/parse/lex.re"
        { next_line(); goto loop; }
-#line 2632 "src/parse/lex.cc"
+#line 2639 "src/parse/lex.cc"
 yy435:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy433;
        goto yy432;
 yy436:
        ++YYCURSOR;
-#line 510 "../src/parse/lex.re"
+#line 523 "../src/parse/lex.re"
        { if (cur[-1] == delim) return; else goto loop; }
-#line 2641 "src/parse/lex.cc"
+#line 2648 "src/parse/lex.cc"
 yy438:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '&') {
@@ -2648,11 +2655,11 @@ yy438:
        }
 yy439:
        ++YYCURSOR;
-#line 511 "../src/parse/lex.re"
+#line 524 "../src/parse/lex.re"
        { goto loop; }
-#line 2654 "src/parse/lex.cc"
+#line 2661 "src/parse/lex.cc"
 }
-#line 515 "../src/parse/lex.re"
+#line 528 "../src/parse/lex.re"
 
 }
 
@@ -2660,7 +2667,7 @@ void Scanner::lex_c_comment()
 {
 loop:
 
-#line 2664 "src/parse/lex.cc"
+#line 2671 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -2676,20 +2683,20 @@ loop:
        }
 yy443:
        ++YYCURSOR;
-#line 524 "../src/parse/lex.re"
+#line 537 "../src/parse/lex.re"
        { fail_if_eof(); goto loop; }
-#line 2682 "src/parse/lex.cc"
+#line 2689 "src/parse/lex.cc"
 yy445:
        ++YYCURSOR;
 yy446:
-#line 525 "../src/parse/lex.re"
+#line 538 "../src/parse/lex.re"
        { goto loop; }
-#line 2688 "src/parse/lex.cc"
+#line 2695 "src/parse/lex.cc"
 yy447:
        ++YYCURSOR;
-#line 523 "../src/parse/lex.re"
+#line 536 "../src/parse/lex.re"
        { next_line(); goto loop; }
-#line 2693 "src/parse/lex.cc"
+#line 2700 "src/parse/lex.cc"
 yy449:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy447;
@@ -2698,11 +2705,11 @@ yy450:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '/') goto yy446;
        ++YYCURSOR;
-#line 522 "../src/parse/lex.re"
+#line 535 "../src/parse/lex.re"
        { return; }
-#line 2704 "src/parse/lex.cc"
+#line 2711 "src/parse/lex.cc"
 }
-#line 526 "../src/parse/lex.re"
+#line 539 "../src/parse/lex.re"
 
 }
 
@@ -2710,7 +2717,7 @@ void Scanner::lex_cpp_comment()
 {
 loop:
 
-#line 2714 "src/parse/lex.cc"
+#line 2721 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -2725,26 +2732,26 @@ loop:
        }
 yy455:
        ++YYCURSOR;
-#line 534 "../src/parse/lex.re"
+#line 547 "../src/parse/lex.re"
        { fail_if_eof(); goto loop; }
-#line 2731 "src/parse/lex.cc"
+#line 2738 "src/parse/lex.cc"
 yy457:
        ++YYCURSOR;
 yy458:
-#line 535 "../src/parse/lex.re"
+#line 548 "../src/parse/lex.re"
        { goto loop; }
-#line 2737 "src/parse/lex.cc"
+#line 2744 "src/parse/lex.cc"
 yy459:
        ++YYCURSOR;
-#line 533 "../src/parse/lex.re"
+#line 546 "../src/parse/lex.re"
        { next_line(); return; }
-#line 2742 "src/parse/lex.cc"
+#line 2749 "src/parse/lex.cc"
 yy461:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy459;
        goto yy458;
 }
-#line 536 "../src/parse/lex.re"
+#line 549 "../src/parse/lex.re"
 
 }
 
@@ -2757,35 +2764,35 @@ const AST *Scanner::lex_cls(bool neg)
 fst:
     tok = cur;
 
-#line 2761 "src/parse/lex.cc"
+#line 2768 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych == ']') goto yy465;
-#line 549 "../src/parse/lex.re"
+#line 562 "../src/parse/lex.re"
        { l = lex_cls_chr(); goto snd; }
-#line 2769 "src/parse/lex.cc"
+#line 2776 "src/parse/lex.cc"
 yy465:
        ++YYCURSOR;
-#line 548 "../src/parse/lex.re"
+#line 561 "../src/parse/lex.re"
        { return ast_cls(loc0, cls, neg); }
-#line 2774 "src/parse/lex.cc"
+#line 2781 "src/parse/lex.cc"
 }
-#line 550 "../src/parse/lex.re"
+#line 563 "../src/parse/lex.re"
 
 snd:
 
-#line 2780 "src/parse/lex.cc"
+#line 2787 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
        if (yych == '-') goto yy470;
 yy469:
-#line 553 "../src/parse/lex.re"
+#line 566 "../src/parse/lex.re"
        { u = l; goto add; }
-#line 2789 "src/parse/lex.cc"
+#line 2796 "src/parse/lex.cc"
 yy470:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ']') goto yy472;
@@ -2794,7 +2801,7 @@ yy470:
 yy472:
        ++YYCURSOR;
        YYCURSOR -= 1;
-#line 554 "../src/parse/lex.re"
+#line 567 "../src/parse/lex.re"
        {
         u = lex_cls_chr();
         if (l > u) {
@@ -2803,9 +2810,9 @@ yy472:
         }
         goto add;
     }
-#line 2807 "src/parse/lex.cc"
+#line 2814 "src/parse/lex.cc"
 }
-#line 562 "../src/parse/lex.re"
+#line 575 "../src/parse/lex.re"
 
 add:
     cls->push_back(ASTRange(l, u, loc));
@@ -2817,11 +2824,11 @@ uint32_t Scanner::lex_cls_chr()
 {
     tok = cur;
     const loc_t &loc = cur_loc();
-    #line 599 "../src/parse/lex.re"
+    #line 612 "../src/parse/lex.re"
 
     if (globopts->input_encoding == Enc::ASCII) {
         
-#line 2825 "src/parse/lex.cc"
+#line 2832 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -2838,20 +2845,20 @@ uint32_t Scanner::lex_cls_chr()
        }
 yy476:
        ++YYCURSOR;
-#line 580 "../src/parse/lex.re"
+#line 593 "../src/parse/lex.re"
        { fail_if_eof(); return 0; }
-#line 2844 "src/parse/lex.cc"
+#line 2851 "src/parse/lex.cc"
 yy478:
        ++YYCURSOR;
 yy479:
-#line 582 "../src/parse/lex.re"
+#line 595 "../src/parse/lex.re"
        { return decode(tok); }
-#line 2850 "src/parse/lex.cc"
+#line 2857 "src/parse/lex.cc"
 yy480:
        ++YYCURSOR;
-#line 574 "../src/parse/lex.re"
+#line 587 "../src/parse/lex.re"
        { msg.fatal(loc, "newline in character class"); }
-#line 2855 "src/parse/lex.cc"
+#line 2862 "src/parse/lex.cc"
 yy482:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy480;
@@ -2910,36 +2917,36 @@ yy483:
                }
        }
 yy484:
-#line 577 "../src/parse/lex.re"
+#line 590 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error in escape sequence"); }
-#line 2916 "src/parse/lex.cc"
+#line 2923 "src/parse/lex.cc"
 yy485:
        ++YYCURSOR;
 yy486:
-#line 595 "../src/parse/lex.re"
+#line 608 "../src/parse/lex.re"
        {
         msg.warn.useless_escape(loc, tok, cur);
         return decode(tok + 1);
     }
-#line 2925 "src/parse/lex.cc"
+#line 2932 "src/parse/lex.cc"
 yy487:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy480;
        goto yy486;
 yy488:
        ++YYCURSOR;
-#line 593 "../src/parse/lex.re"
+#line 606 "../src/parse/lex.re"
        { return static_cast<uint8_t>('-'); }
-#line 2934 "src/parse/lex.cc"
+#line 2941 "src/parse/lex.cc"
 yy490:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy491;
        if (yych <= '7') goto yy515;
 yy491:
-#line 576 "../src/parse/lex.re"
+#line 589 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error in octal escape sequence"); }
-#line 2943 "src/parse/lex.cc"
+#line 2950 "src/parse/lex.cc"
 yy492:
        ++YYCURSOR;
        goto yy491;
@@ -2955,9 +2962,9 @@ yy493:
                if (yych <= 'f') goto yy517;
        }
 yy494:
-#line 575 "../src/parse/lex.re"
+#line 588 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error in hexadecimal escape sequence"); }
-#line 2961 "src/parse/lex.cc"
+#line 2968 "src/parse/lex.cc"
 yy495:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -2973,49 +2980,49 @@ yy495:
        }
 yy496:
        ++YYCURSOR;
-#line 592 "../src/parse/lex.re"
+#line 605 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\\'); }
-#line 2979 "src/parse/lex.cc"
+#line 2986 "src/parse/lex.cc"
 yy498:
        ++YYCURSOR;
-#line 594 "../src/parse/lex.re"
+#line 607 "../src/parse/lex.re"
        { return static_cast<uint8_t>(']'); }
-#line 2984 "src/parse/lex.cc"
+#line 2991 "src/parse/lex.cc"
 yy500:
        ++YYCURSOR;
-#line 585 "../src/parse/lex.re"
+#line 598 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\a'); }
-#line 2989 "src/parse/lex.cc"
+#line 2996 "src/parse/lex.cc"
 yy502:
        ++YYCURSOR;
-#line 586 "../src/parse/lex.re"
+#line 599 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\b'); }
-#line 2994 "src/parse/lex.cc"
+#line 3001 "src/parse/lex.cc"
 yy504:
        ++YYCURSOR;
-#line 587 "../src/parse/lex.re"
+#line 600 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\f'); }
-#line 2999 "src/parse/lex.cc"
+#line 3006 "src/parse/lex.cc"
 yy506:
        ++YYCURSOR;
-#line 588 "../src/parse/lex.re"
+#line 601 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\n'); }
-#line 3004 "src/parse/lex.cc"
+#line 3011 "src/parse/lex.cc"
 yy508:
        ++YYCURSOR;
-#line 589 "../src/parse/lex.re"
+#line 602 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\r'); }
-#line 3009 "src/parse/lex.cc"
+#line 3016 "src/parse/lex.cc"
 yy510:
        ++YYCURSOR;
-#line 590 "../src/parse/lex.re"
+#line 603 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\t'); }
-#line 3014 "src/parse/lex.cc"
+#line 3021 "src/parse/lex.cc"
 yy512:
        ++YYCURSOR;
-#line 591 "../src/parse/lex.re"
+#line 604 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\v'); }
-#line 3019 "src/parse/lex.cc"
+#line 3026 "src/parse/lex.cc"
 yy514:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -3078,9 +3085,9 @@ yy519:
        }
 yy520:
        ++YYCURSOR;
-#line 584 "../src/parse/lex.re"
+#line 597 "../src/parse/lex.re"
        { return unesc_oct(tok, cur); }
-#line 3084 "src/parse/lex.cc"
+#line 3091 "src/parse/lex.cc"
 yy522:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -3107,9 +3114,9 @@ yy523:
        }
 yy524:
        ++YYCURSOR;
-#line 583 "../src/parse/lex.re"
+#line 596 "../src/parse/lex.re"
        { return unesc_hex(tok, cur); }
-#line 3113 "src/parse/lex.cc"
+#line 3120 "src/parse/lex.cc"
 yy526:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -3133,12 +3140,12 @@ yy527:
                goto yy516;
        }
 }
-#line 601 "../src/parse/lex.re"
+#line 614 "../src/parse/lex.re"
 
     }
     else {
         
-#line 3142 "src/parse/lex.cc"
+#line 3149 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -3169,20 +3176,20 @@ yy527:
        }
 yy530:
        ++YYCURSOR;
-#line 580 "../src/parse/lex.re"
+#line 593 "../src/parse/lex.re"
        { fail_if_eof(); return 0; }
-#line 3175 "src/parse/lex.cc"
+#line 3182 "src/parse/lex.cc"
 yy532:
        ++YYCURSOR;
 yy533:
-#line 582 "../src/parse/lex.re"
+#line 595 "../src/parse/lex.re"
        { return decode(tok); }
-#line 3181 "src/parse/lex.cc"
+#line 3188 "src/parse/lex.cc"
 yy534:
        ++YYCURSOR;
-#line 574 "../src/parse/lex.re"
+#line 587 "../src/parse/lex.re"
        { msg.fatal(loc, "newline in character class"); }
-#line 3186 "src/parse/lex.cc"
+#line 3193 "src/parse/lex.cc"
 yy536:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy534;
@@ -3272,15 +3279,15 @@ yy537:
                }
        }
 yy538:
-#line 577 "../src/parse/lex.re"
+#line 590 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error in escape sequence"); }
-#line 3278 "src/parse/lex.cc"
+#line 3285 "src/parse/lex.cc"
 yy539:
        ++YYCURSOR;
 yy540:
-#line 578 "../src/parse/lex.re"
+#line 591 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error"); }
-#line 3284 "src/parse/lex.cc"
+#line 3291 "src/parse/lex.cc"
 yy541:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 0x7F) goto yy540;
@@ -3319,30 +3326,30 @@ yy546:
 yy547:
        ++YYCURSOR;
 yy548:
-#line 595 "../src/parse/lex.re"
+#line 608 "../src/parse/lex.re"
        {
         msg.warn.useless_escape(loc, tok, cur);
         return decode(tok + 1);
     }
-#line 3328 "src/parse/lex.cc"
+#line 3335 "src/parse/lex.cc"
 yy549:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy534;
        goto yy548;
 yy550:
        ++YYCURSOR;
-#line 593 "../src/parse/lex.re"
+#line 606 "../src/parse/lex.re"
        { return static_cast<uint8_t>('-'); }
-#line 3337 "src/parse/lex.cc"
+#line 3344 "src/parse/lex.cc"
 yy552:
        yyaccept = 2;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy553;
        if (yych <= '7') goto yy586;
 yy553:
-#line 576 "../src/parse/lex.re"
+#line 589 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error in octal escape sequence"); }
-#line 3346 "src/parse/lex.cc"
+#line 3353 "src/parse/lex.cc"
 yy554:
        ++YYCURSOR;
        goto yy553;
@@ -3358,9 +3365,9 @@ yy555:
                if (yych <= 'f') goto yy587;
        }
 yy556:
-#line 575 "../src/parse/lex.re"
+#line 588 "../src/parse/lex.re"
        { msg.fatal(loc, "syntax error in hexadecimal escape sequence"); }
-#line 3364 "src/parse/lex.cc"
+#line 3371 "src/parse/lex.cc"
 yy557:
        yyaccept = 3;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -3376,49 +3383,49 @@ yy557:
        }
 yy558:
        ++YYCURSOR;
-#line 592 "../src/parse/lex.re"
+#line 605 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\\'); }
-#line 3382 "src/parse/lex.cc"
+#line 3389 "src/parse/lex.cc"
 yy560:
        ++YYCURSOR;
-#line 594 "../src/parse/lex.re"
+#line 607 "../src/parse/lex.re"
        { return static_cast<uint8_t>(']'); }
-#line 3387 "src/parse/lex.cc"
+#line 3394 "src/parse/lex.cc"
 yy562:
        ++YYCURSOR;
-#line 585 "../src/parse/lex.re"
+#line 598 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\a'); }
-#line 3392 "src/parse/lex.cc"
+#line 3399 "src/parse/lex.cc"
 yy564:
        ++YYCURSOR;
-#line 586 "../src/parse/lex.re"
+#line 599 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\b'); }
-#line 3397 "src/parse/lex.cc"
+#line 3404 "src/parse/lex.cc"
 yy566:
        ++YYCURSOR;
-#line 587 "../src/parse/lex.re"
+#line 600 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\f'); }
-#line 3402 "src/parse/lex.cc"
+#line 3409 "src/parse/lex.cc"
 yy568:
        ++YYCURSOR;
-#line 588 "../src/parse/lex.re"
+#line 601 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\n'); }
-#line 3407 "src/parse/lex.cc"
+#line 3414 "src/parse/lex.cc"
 yy570:
        ++YYCURSOR;
-#line 589 "../src/parse/lex.re"
+#line 602 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\r'); }
-#line 3412 "src/parse/lex.cc"
+#line 3419 "src/parse/lex.cc"
 yy572:
        ++YYCURSOR;
-#line 590 "../src/parse/lex.re"
+#line 603 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\t'); }
-#line 3417 "src/parse/lex.cc"
+#line 3424 "src/parse/lex.cc"
 yy574:
        ++YYCURSOR;
-#line 591 "../src/parse/lex.re"
+#line 604 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\v'); }
-#line 3422 "src/parse/lex.cc"
+#line 3429 "src/parse/lex.cc"
 yy576:
        yyaccept = 3;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -3529,9 +3536,9 @@ yy589:
        }
 yy590:
        ++YYCURSOR;
-#line 584 "../src/parse/lex.re"
+#line 597 "../src/parse/lex.re"
        { return unesc_oct(tok, cur); }
-#line 3535 "src/parse/lex.cc"
+#line 3542 "src/parse/lex.cc"
 yy592:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -3558,9 +3565,9 @@ yy593:
        }
 yy594:
        ++YYCURSOR;
-#line 583 "../src/parse/lex.re"
+#line 596 "../src/parse/lex.re"
        { return unesc_hex(tok, cur); }
-#line 3564 "src/parse/lex.cc"
+#line 3571 "src/parse/lex.cc"
 yy596:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -3584,8 +3591,8 @@ yy597:
                goto yy578;
        }
 }
-#line 604 "../src/parse/lex.re"
- #line 604 "../src/parse/lex.re"
+#line 617 "../src/parse/lex.re"
+ #line 617 "../src/parse/lex.re"
 
     }
 }
@@ -3595,11 +3602,11 @@ bool Scanner::lex_str_chr(char quote, ASTChar &ast)
     tok = cur;
     ast.loc = cur_loc();
 
-    #line 638 "../src/parse/lex.re"
+    #line 651 "../src/parse/lex.re"
 
     if (globopts->input_encoding == Enc::ASCII) {
         
-#line 3603 "src/parse/lex.cc"
+#line 3610 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -3616,20 +3623,20 @@ bool Scanner::lex_str_chr(char quote, ASTChar &ast)
        }
 yy600:
        ++YYCURSOR;
-#line 620 "../src/parse/lex.re"
+#line 633 "../src/parse/lex.re"
        { fail_if_eof(); ast.chr = 0; return true; }
-#line 3622 "src/parse/lex.cc"
+#line 3629 "src/parse/lex.cc"
 yy602:
        ++YYCURSOR;
 yy603:
-#line 622 "../src/parse/lex.re"
+#line 635 "../src/parse/lex.re"
        { ast.chr = decode(tok); return tok[0] != quote; }
-#line 3628 "src/parse/lex.cc"
+#line 3635 "src/parse/lex.cc"
 yy604:
        ++YYCURSOR;
-#line 614 "../src/parse/lex.re"
+#line 627 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "newline in character string"); }
-#line 3633 "src/parse/lex.cc"
+#line 3640 "src/parse/lex.cc"
 yy606:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy604;
@@ -3683,19 +3690,19 @@ yy607:
                }
        }
 yy608:
-#line 617 "../src/parse/lex.re"
+#line 630 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error in escape sequence"); }
-#line 3689 "src/parse/lex.cc"
+#line 3696 "src/parse/lex.cc"
 yy609:
        ++YYCURSOR;
 yy610:
-#line 633 "../src/parse/lex.re"
+#line 646 "../src/parse/lex.re"
        {
         ast.chr = decode(tok + 1);
         if (tok[1] != quote) msg.warn.useless_escape(ast.loc, tok, cur);
         return true;
     }
-#line 3699 "src/parse/lex.cc"
+#line 3706 "src/parse/lex.cc"
 yy611:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy604;
@@ -3706,9 +3713,9 @@ yy612:
        if (yych <= '/') goto yy613;
        if (yych <= '7') goto yy635;
 yy613:
-#line 616 "../src/parse/lex.re"
+#line 629 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error in octal escape sequence"); }
-#line 3712 "src/parse/lex.cc"
+#line 3719 "src/parse/lex.cc"
 yy614:
        ++YYCURSOR;
        goto yy613;
@@ -3724,9 +3731,9 @@ yy615:
                if (yych <= 'f') goto yy637;
        }
 yy616:
-#line 615 "../src/parse/lex.re"
+#line 628 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error in hexadecimal escape sequence"); }
-#line 3730 "src/parse/lex.cc"
+#line 3737 "src/parse/lex.cc"
 yy617:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -3742,44 +3749,44 @@ yy617:
        }
 yy618:
        ++YYCURSOR;
-#line 632 "../src/parse/lex.re"
+#line 645 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\\'); return true; }
-#line 3748 "src/parse/lex.cc"
+#line 3755 "src/parse/lex.cc"
 yy620:
        ++YYCURSOR;
-#line 625 "../src/parse/lex.re"
+#line 638 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\a'); return true; }
-#line 3753 "src/parse/lex.cc"
+#line 3760 "src/parse/lex.cc"
 yy622:
        ++YYCURSOR;
-#line 626 "../src/parse/lex.re"
+#line 639 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\b'); return true; }
-#line 3758 "src/parse/lex.cc"
+#line 3765 "src/parse/lex.cc"
 yy624:
        ++YYCURSOR;
-#line 627 "../src/parse/lex.re"
+#line 640 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\f'); return true; }
-#line 3763 "src/parse/lex.cc"
+#line 3770 "src/parse/lex.cc"
 yy626:
        ++YYCURSOR;
-#line 628 "../src/parse/lex.re"
+#line 641 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\n'); return true; }
-#line 3768 "src/parse/lex.cc"
+#line 3775 "src/parse/lex.cc"
 yy628:
        ++YYCURSOR;
-#line 629 "../src/parse/lex.re"
+#line 642 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\r'); return true; }
-#line 3773 "src/parse/lex.cc"
+#line 3780 "src/parse/lex.cc"
 yy630:
        ++YYCURSOR;
-#line 630 "../src/parse/lex.re"
+#line 643 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\t'); return true; }
-#line 3778 "src/parse/lex.cc"
+#line 3785 "src/parse/lex.cc"
 yy632:
        ++YYCURSOR;
-#line 631 "../src/parse/lex.re"
+#line 644 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\v'); return true; }
-#line 3783 "src/parse/lex.cc"
+#line 3790 "src/parse/lex.cc"
 yy634:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -3842,9 +3849,9 @@ yy639:
        }
 yy640:
        ++YYCURSOR;
-#line 624 "../src/parse/lex.re"
+#line 637 "../src/parse/lex.re"
        { ast.chr = unesc_oct(tok, cur); return true; }
-#line 3848 "src/parse/lex.cc"
+#line 3855 "src/parse/lex.cc"
 yy642:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -3871,9 +3878,9 @@ yy643:
        }
 yy644:
        ++YYCURSOR;
-#line 623 "../src/parse/lex.re"
+#line 636 "../src/parse/lex.re"
        { ast.chr = unesc_hex(tok, cur); return true; }
-#line 3877 "src/parse/lex.cc"
+#line 3884 "src/parse/lex.cc"
 yy646:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -3897,12 +3904,12 @@ yy647:
                goto yy636;
        }
 }
-#line 640 "../src/parse/lex.re"
+#line 653 "../src/parse/lex.re"
 
     }
     else {
         
-#line 3906 "src/parse/lex.cc"
+#line 3913 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -3933,20 +3940,20 @@ yy647:
        }
 yy650:
        ++YYCURSOR;
-#line 620 "../src/parse/lex.re"
+#line 633 "../src/parse/lex.re"
        { fail_if_eof(); ast.chr = 0; return true; }
-#line 3939 "src/parse/lex.cc"
+#line 3946 "src/parse/lex.cc"
 yy652:
        ++YYCURSOR;
 yy653:
-#line 622 "../src/parse/lex.re"
+#line 635 "../src/parse/lex.re"
        { ast.chr = decode(tok); return tok[0] != quote; }
-#line 3945 "src/parse/lex.cc"
+#line 3952 "src/parse/lex.cc"
 yy654:
        ++YYCURSOR;
-#line 614 "../src/parse/lex.re"
+#line 627 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "newline in character string"); }
-#line 3950 "src/parse/lex.cc"
+#line 3957 "src/parse/lex.cc"
 yy656:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy654;
@@ -4029,15 +4036,15 @@ yy657:
                }
        }
 yy658:
-#line 617 "../src/parse/lex.re"
+#line 630 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error in escape sequence"); }
-#line 4035 "src/parse/lex.cc"
+#line 4042 "src/parse/lex.cc"
 yy659:
        ++YYCURSOR;
 yy660:
-#line 618 "../src/parse/lex.re"
+#line 631 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error"); }
-#line 4041 "src/parse/lex.cc"
+#line 4048 "src/parse/lex.cc"
 yy661:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 0x7F) goto yy660;
@@ -4076,13 +4083,13 @@ yy666:
 yy667:
        ++YYCURSOR;
 yy668:
-#line 633 "../src/parse/lex.re"
+#line 646 "../src/parse/lex.re"
        {
         ast.chr = decode(tok + 1);
         if (tok[1] != quote) msg.warn.useless_escape(ast.loc, tok, cur);
         return true;
     }
-#line 4086 "src/parse/lex.cc"
+#line 4093 "src/parse/lex.cc"
 yy669:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy654;
@@ -4093,9 +4100,9 @@ yy670:
        if (yych <= '/') goto yy671;
        if (yych <= '7') goto yy702;
 yy671:
-#line 616 "../src/parse/lex.re"
+#line 629 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error in octal escape sequence"); }
-#line 4099 "src/parse/lex.cc"
+#line 4106 "src/parse/lex.cc"
 yy672:
        ++YYCURSOR;
        goto yy671;
@@ -4111,9 +4118,9 @@ yy673:
                if (yych <= 'f') goto yy703;
        }
 yy674:
-#line 615 "../src/parse/lex.re"
+#line 628 "../src/parse/lex.re"
        { msg.fatal(ast.loc, "syntax error in hexadecimal escape sequence"); }
-#line 4117 "src/parse/lex.cc"
+#line 4124 "src/parse/lex.cc"
 yy675:
        yyaccept = 3;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -4129,44 +4136,44 @@ yy675:
        }
 yy676:
        ++YYCURSOR;
-#line 632 "../src/parse/lex.re"
+#line 645 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\\'); return true; }
-#line 4135 "src/parse/lex.cc"
+#line 4142 "src/parse/lex.cc"
 yy678:
        ++YYCURSOR;
-#line 625 "../src/parse/lex.re"
+#line 638 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\a'); return true; }
-#line 4140 "src/parse/lex.cc"
+#line 4147 "src/parse/lex.cc"
 yy680:
        ++YYCURSOR;
-#line 626 "../src/parse/lex.re"
+#line 639 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\b'); return true; }
-#line 4145 "src/parse/lex.cc"
+#line 4152 "src/parse/lex.cc"
 yy682:
        ++YYCURSOR;
-#line 627 "../src/parse/lex.re"
+#line 640 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\f'); return true; }
-#line 4150 "src/parse/lex.cc"
+#line 4157 "src/parse/lex.cc"
 yy684:
        ++YYCURSOR;
-#line 628 "../src/parse/lex.re"
+#line 641 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\n'); return true; }
-#line 4155 "src/parse/lex.cc"
+#line 4162 "src/parse/lex.cc"
 yy686:
        ++YYCURSOR;
-#line 629 "../src/parse/lex.re"
+#line 642 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\r'); return true; }
-#line 4160 "src/parse/lex.cc"
+#line 4167 "src/parse/lex.cc"
 yy688:
        ++YYCURSOR;
-#line 630 "../src/parse/lex.re"
+#line 643 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\t'); return true; }
-#line 4165 "src/parse/lex.cc"
+#line 4172 "src/parse/lex.cc"
 yy690:
        ++YYCURSOR;
-#line 631 "../src/parse/lex.re"
+#line 644 "../src/parse/lex.re"
        { ast.chr = static_cast<uint8_t>('\v'); return true; }
-#line 4170 "src/parse/lex.cc"
+#line 4177 "src/parse/lex.cc"
 yy692:
        yyaccept = 3;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -4277,9 +4284,9 @@ yy705:
        }
 yy706:
        ++YYCURSOR;
-#line 624 "../src/parse/lex.re"
+#line 637 "../src/parse/lex.re"
        { ast.chr = unesc_oct(tok, cur); return true; }
-#line 4283 "src/parse/lex.cc"
+#line 4290 "src/parse/lex.cc"
 yy708:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -4306,9 +4313,9 @@ yy709:
        }
 yy710:
        ++YYCURSOR;
-#line 623 "../src/parse/lex.re"
+#line 636 "../src/parse/lex.re"
        { ast.chr = unesc_hex(tok, cur); return true; }
-#line 4312 "src/parse/lex.cc"
+#line 4319 "src/parse/lex.cc"
 yy712:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
@@ -4332,8 +4339,8 @@ yy713:
                goto yy694;
        }
 }
-#line 643 "../src/parse/lex.re"
- #line 643 "../src/parse/lex.re"
+#line 656 "../src/parse/lex.re"
+ #line 656 "../src/parse/lex.re"
 
     }
 }
@@ -4356,7 +4363,7 @@ void Scanner::set_sourceline ()
 sourceline:
     tok = cur;
 
-#line 4360 "src/parse/lex.cc"
+#line 4367 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -4414,20 +4421,20 @@ sourceline:
                }
        }
        ++YYCURSOR;
-#line 685 "../src/parse/lex.re"
+#line 698 "../src/parse/lex.re"
        { --cur; return; }
-#line 4420 "src/parse/lex.cc"
+#line 4427 "src/parse/lex.cc"
 yy718:
        ++YYCURSOR;
 yy719:
-#line 686 "../src/parse/lex.re"
+#line 699 "../src/parse/lex.re"
        { goto sourceline; }
-#line 4426 "src/parse/lex.cc"
+#line 4433 "src/parse/lex.cc"
 yy720:
        ++YYCURSOR;
-#line 684 "../src/parse/lex.re"
+#line 697 "../src/parse/lex.re"
        { pos = tok = cur; return; }
-#line 4431 "src/parse/lex.cc"
+#line 4438 "src/parse/lex.cc"
 yy722:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy720;
@@ -4444,7 +4451,7 @@ yy724:
        if (yybm[0+yych] & 64) {
                goto yy724;
        }
-#line 665 "../src/parse/lex.re"
+#line 678 "../src/parse/lex.re"
        {
         uint32_t l;
         if (!s_to_u32_unsafe(tok, cur, l)) {
@@ -4453,7 +4460,7 @@ yy724:
         set_line(l);
         goto sourceline;
     }
-#line 4457 "src/parse/lex.cc"
+#line 4464 "src/parse/lex.cc"
 yy727:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -4470,7 +4477,7 @@ yy729:
        goto yy719;
 yy730:
        ++YYCURSOR;
-#line 674 "../src/parse/lex.re"
+#line 687 "../src/parse/lex.re"
        {
         Input &in = get_input();
         std::string &name = in.escaped_name;
@@ -4480,7 +4487,7 @@ yy730:
         msg.filenames.push_back(name);
         goto sourceline;
     }
-#line 4484 "src/parse/lex.cc"
+#line 4491 "src/parse/lex.cc"
 yy732:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -4489,7 +4496,7 @@ yy732:
        if (yych == '\n') goto yy729;
        goto yy727;
 }
-#line 687 "../src/parse/lex.re"
+#line 700 "../src/parse/lex.re"
 
 }
 
index b7fc26ea13d514e01d0fa3b1b574d25c183233c8..8ba656b3aac65cf67af72aaedd17f29bbcd47d08 100644 (file)
@@ -1,5 +1,9 @@
-/* Generated by re2c 1.1.1 on Fri May 24 12:40:10 2019 */
+/* Generated by re2c 1.1.1 on Sat Jul 13 10:46:39 2019 */
 
+#ifndef _RE2C_PARSE_LEX_
+#define _RE2C_PARSE_LEX_
+
+#include <stddef.h>
 #include <string.h>
 #include "src/util/forbid_copy.h"
 
@@ -51,3 +55,5 @@ struct ScannerState
     FORBID_COPY(ScannerState);
 };
 } // namespace re2c
+
+#endif // _RE2C_PARSE_LEX_
index 48de5613f3457a232fcaf472c1d6d31234b532dd..37d85a52485fee7f5a3fbf2f057da4071f49c70a 100644 (file)
@@ -1,29 +1,32 @@
-/* Generated by re2c 1.1.1 on Thu Mar  7 22:57:34 2019 */
+/* Generated by re2c 1.1.1 on Sat Jul 13 10:45:22 2019 */
 #line 1 "../src/parse/lex_conf.re"
 #include "src/util/c99_stdint.h"
 #include <string>
 
-#include "src/codegen/output.h"
+#include "src/codegen/input_api.h"
 #include "src/encoding/enc.h"
+#include "src/msg/msg.h"
+#include "src/options/opt.h"
 #include "src/parse/ast.h"
 #include "src/parse/scanner.h"
+#include "src/regexp/empty_class_policy.h"
 #include "src/util/s_to_n32_unsafe.h"
 #include "src/util/string_utils.h"
 
-namespace re2c
-{
 
-#define YYFILL(n) { if (!fill (n)) fatal("unexpected end of input"); }
+namespace re2c {
+
+#define YYFILL(n) do { if (!fill(n)) fatal("unexpected end of input"); } while(0)
 
 // global re2c config (affects the whole file)
-#line 37 "../src/parse/lex_conf.re"
+#line 40 "../src/parse/lex_conf.re"
 
 
 void Scanner::lex_conf(Opt &opts)
 {
     tok = cur;
 
-#line 27 "src/parse/lex_conf.cc"
+#line 30 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        unsigned int yyaccept = 0;
@@ -104,12 +107,12 @@ void Scanner::lex_conf(Opt &opts)
                }
        }
 yy2:
-#line 173 "../src/parse/lex_conf.re"
+#line 176 "../src/parse/lex_conf.re"
        {
         msg.fatal(tok_loc(), "unrecognized configuration '%.*s'",
             static_cast<int>(cur - tok), tok);
     }
-#line 113 "src/parse/lex_conf.cc"
+#line 116 "src/parse/lex_conf.cc"
 yy3:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -227,7 +230,7 @@ yy29:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 71 "../src/parse/lex_conf.re"
+#line 74 "../src/parse/lex_conf.re"
        {
         const int32_t eof = lex_conf_number();
         if (eof < 0) {
@@ -236,7 +239,7 @@ yy29:
         opts.set_eof(static_cast<uint32_t>(eof));
         return;
     }
-#line 240 "src/parse/lex_conf.cc"
+#line 243 "src/parse/lex_conf.cc"
 yy31:
        yych = (unsigned char)*++cur;
        if (yych == 'g') goto yy43;
@@ -520,30 +523,30 @@ yy93:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 65 "../src/parse/lex_conf.re"
+#line 68 "../src/parse/lex_conf.re"
        { lex_conf_enc(Enc::UTF8, opts);   return; }
-#line 526 "src/parse/lex_conf.cc"
+#line 529 "src/parse/lex_conf.cc"
 yy95:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 54 "../src/parse/lex_conf.re"
+#line 57 "../src/parse/lex_conf.re"
        {
         bool b = lex_conf_bool();
         opts.set_posix_syntax(b);
         opts.set_posix_semantics(b);
         return;
     }
-#line 539 "src/parse/lex_conf.cc"
+#line 542 "src/parse/lex_conf.cc"
 yy97:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 48 "../src/parse/lex_conf.re"
+#line 51 "../src/parse/lex_conf.re"
        { opts.set_tags             (lex_conf_bool());   return; }
-#line 547 "src/parse/lex_conf.cc"
+#line 550 "src/parse/lex_conf.cc"
 yy99:
        yych = (unsigned char)*++cur;
        if (yych <= 'Z') {
@@ -562,9 +565,9 @@ yy99:
                }
        }
 yy100:
-#line 43 "../src/parse/lex_conf.re"
+#line 46 "../src/parse/lex_conf.re"
        { opts.set_bFlag            (lex_conf_bool());   return; }
-#line 568 "src/parse/lex_conf.cc"
+#line 571 "src/parse/lex_conf.cc"
 yy101:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy144;
@@ -588,9 +591,9 @@ yy102:
                }
        }
 yy103:
-#line 44 "../src/parse/lex_conf.re"
+#line 47 "../src/parse/lex_conf.re"
        { opts.set_dFlag            (lex_conf_bool());   return; }
-#line 594 "src/parse/lex_conf.cc"
+#line 597 "src/parse/lex_conf.cc"
 yy104:
        yych = (unsigned char)*++cur;
        if (yych <= '_') {
@@ -614,17 +617,17 @@ yy104:
                }
        }
 yy105:
-#line 61 "../src/parse/lex_conf.re"
+#line 64 "../src/parse/lex_conf.re"
        { lex_conf_enc(Enc::EBCDIC, opts); return; }
-#line 620 "src/parse/lex_conf.cc"
+#line 623 "src/parse/lex_conf.cc"
 yy106:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 45 "../src/parse/lex_conf.re"
+#line 48 "../src/parse/lex_conf.re"
        { opts.set_gFlag            (lex_conf_bool());   return; }
-#line 628 "src/parse/lex_conf.cc"
+#line 631 "src/parse/lex_conf.cc"
 yy108:
        yych = (unsigned char)*++cur;
        if (yych <= 'Z') {
@@ -643,9 +646,9 @@ yy108:
                }
        }
 yy109:
-#line 46 "../src/parse/lex_conf.re"
+#line 49 "../src/parse/lex_conf.re"
        { opts.set_iFlag            (lex_conf_bool());   return; }
-#line 649 "src/parse/lex_conf.cc"
+#line 652 "src/parse/lex_conf.cc"
 yy110:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy151;
@@ -669,9 +672,9 @@ yy111:
                }
        }
 yy112:
-#line 51 "../src/parse/lex_conf.re"
+#line 54 "../src/parse/lex_conf.re"
        { opts.set_output_file      (lex_conf_string()); return; }
-#line 675 "src/parse/lex_conf.cc"
+#line 678 "src/parse/lex_conf.cc"
 yy113:
        yych = (unsigned char)*++cur;
        if (yych == 'o') goto yy154;
@@ -681,9 +684,9 @@ yy114:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 47 "../src/parse/lex_conf.re"
+#line 50 "../src/parse/lex_conf.re"
        { opts.set_sFlag            (lex_conf_bool());   return; }
-#line 687 "src/parse/lex_conf.cc"
+#line 690 "src/parse/lex_conf.cc"
 yy116:
        yych = (unsigned char)*++cur;
        if (yych <= '^') {
@@ -704,9 +707,9 @@ yy116:
                }
        }
 yy117:
-#line 52 "../src/parse/lex_conf.re"
+#line 55 "../src/parse/lex_conf.re"
        { opts.set_header_file      (lex_conf_string()); return; }
-#line 710 "src/parse/lex_conf.cc"
+#line 713 "src/parse/lex_conf.cc"
 yy118:
        yych = (unsigned char)*++cur;
        if (yych <= '^') {
@@ -728,9 +731,9 @@ yy118:
                }
        }
 yy119:
-#line 62 "../src/parse/lex_conf.re"
+#line 65 "../src/parse/lex_conf.re"
        { lex_conf_enc(Enc::UTF32, opts);  return; }
-#line 734 "src/parse/lex_conf.cc"
+#line 737 "src/parse/lex_conf.cc"
 yy120:
        yych = (unsigned char)*++cur;
        if (yych <= 'Z') {
@@ -749,17 +752,17 @@ yy120:
                }
        }
 yy121:
-#line 63 "../src/parse/lex_conf.re"
+#line 66 "../src/parse/lex_conf.re"
        { lex_conf_enc(Enc::UCS2, opts);   return; }
-#line 755 "src/parse/lex_conf.cc"
+#line 758 "src/parse/lex_conf.cc"
 yy122:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 64 "../src/parse/lex_conf.re"
+#line 67 "../src/parse/lex_conf.re"
        { lex_conf_enc(Enc::UTF16, opts);  return; }
-#line 763 "src/parse/lex_conf.cc"
+#line 766 "src/parse/lex_conf.cc"
 yy124:
        yych = (unsigned char)*++cur;
        if (yych <= 'r') goto yy4;
@@ -958,9 +961,9 @@ yy170:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 108 "../src/parse/lex_conf.re"
+#line 111 "../src/parse/lex_conf.re"
        { opts.set_yybmHexTable (lex_conf_bool()); return; }
-#line 964 "src/parse/lex_conf.cc"
+#line 967 "src/parse/lex_conf.cc"
 yy172:
        yych = (unsigned char)*++cur;
        if (yych == 'v') goto yy212;
@@ -997,9 +1000,9 @@ yy179:
        }
        if (yych == '@') goto yy220;
 yy180:
-#line 92 "../src/parse/lex_conf.re"
+#line 95 "../src/parse/lex_conf.re"
        { opts.set_condGoto         (lex_conf_string ()); return; }
-#line 1003 "src/parse/lex_conf.cc"
+#line 1006 "src/parse/lex_conf.cc"
 yy181:
        yych = (unsigned char)*++cur;
        if (yych == 'r') goto yy222;
@@ -1146,9 +1149,9 @@ yy213:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 155 "../src/parse/lex_conf.re"
+#line 158 "../src/parse/lex_conf.re"
        { opts.set_bEmitYYCh      (lex_conf_bool()); return; }
-#line 1152 "src/parse/lex_conf.cc"
+#line 1155 "src/parse/lex_conf.cc"
 yy215:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy264;
@@ -1204,9 +1207,9 @@ yy223:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 88 "../src/parse/lex_conf.re"
+#line 91 "../src/parse/lex_conf.re"
        { opts.set_condPrefix       (lex_conf_string ()); return; }
-#line 1210 "src/parse/lex_conf.cc"
+#line 1213 "src/parse/lex_conf.cc"
 yy225:
        yych = (unsigned char)*++cur;
        if (yych == 'A') goto yy271;
@@ -1331,7 +1334,7 @@ yy251:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 141 "../src/parse/lex_conf.re"
+#line 144 "../src/parse/lex_conf.re"
        {
         const int32_t n = lex_conf_number ();
         if (n < 0) {
@@ -1340,7 +1343,7 @@ yy251:
         opts.set_topIndent (static_cast<uint32_t> (n));
         return;
     }
-#line 1344 "src/parse/lex_conf.cc"
+#line 1347 "src/parse/lex_conf.cc"
 yy253:
        yych = (unsigned char)*++cur;
        if (yych == 'l') goto yy304;
@@ -1375,9 +1378,9 @@ yy256:
                }
        }
 yy257:
-#line 168 "../src/parse/lex_conf.re"
+#line 171 "../src/parse/lex_conf.re"
        { opts.set_startlabel       (lex_conf_string()); return; }
-#line 1381 "src/parse/lex_conf.cc"
+#line 1384 "src/parse/lex_conf.cc"
 yy258:
        yych = (unsigned char)*++cur;
        if (yych == 't') goto yy312;
@@ -1525,9 +1528,9 @@ yy293:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 68 "../src/parse/lex_conf.re"
+#line 71 "../src/parse/lex_conf.re"
        { lex_conf_input(opts);            return; }
-#line 1531 "src/parse/lex_conf.cc"
+#line 1534 "src/parse/lex_conf.cc"
 yy295:
        yych = (unsigned char)*++cur;
        if (yych == 'd') goto yy351;
@@ -1577,9 +1580,9 @@ yy306:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 164 "../src/parse/lex_conf.re"
+#line 167 "../src/parse/lex_conf.re"
        { opts.set_labelPrefix (lex_conf_string ()); return; }
-#line 1583 "src/parse/lex_conf.cc"
+#line 1586 "src/parse/lex_conf.cc"
 yy308:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -1615,9 +1618,9 @@ yy312:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 103 "../src/parse/lex_conf.re"
+#line 106 "../src/parse/lex_conf.re"
        { opts.set_bUseStateAbort  (lex_conf_bool()); return; }
-#line 1621 "src/parse/lex_conf.cc"
+#line 1624 "src/parse/lex_conf.cc"
 yy314:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy367;
@@ -1631,9 +1634,9 @@ yy316:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 137 "../src/parse/lex_conf.re"
+#line 140 "../src/parse/lex_conf.re"
        { opts.set_tags_prefix    (lex_conf_string ()); return; }
-#line 1637 "src/parse/lex_conf.cc"
+#line 1640 "src/parse/lex_conf.cc"
 yy318:
        yych = (unsigned char)*++cur;
        if (yych <= 'c') {
@@ -1675,9 +1678,9 @@ yy324:
        }
        if (yych == '@') goto yy380;
 yy325:
-#line 90 "../src/parse/lex_conf.re"
+#line 93 "../src/parse/lex_conf.re"
        { opts.set_condDivider      (lex_conf_string ()); return; }
-#line 1681 "src/parse/lex_conf.cc"
+#line 1684 "src/parse/lex_conf.cc"
 yy326:
        yych = (unsigned char)*++cur;
        if (yych == 'n') goto yy381;
@@ -1823,9 +1826,9 @@ yy360:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 102 "../src/parse/lex_conf.re"
+#line 105 "../src/parse/lex_conf.re"
        { opts.set_yynext          (lex_conf_string ()); return; }
-#line 1829 "src/parse/lex_conf.cc"
+#line 1832 "src/parse/lex_conf.cc"
 yy362:
        yych = (unsigned char)*++cur;
        if (yych <= '0') goto yy221;
@@ -1835,9 +1838,9 @@ yy363:
        ++cur;
 yy364:
        cur = ctx;
-#line 167 "../src/parse/lex_conf.re"
+#line 170 "../src/parse/lex_conf.re"
        { opts.set_startlabel_force (lex_conf_bool());   return; }
-#line 1841 "src/parse/lex_conf.cc"
+#line 1844 "src/parse/lex_conf.cc"
 yy365:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -1884,9 +1887,9 @@ yy375:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 162 "../src/parse/lex_conf.re"
+#line 165 "../src/parse/lex_conf.re"
        { opts.set_fill_check   (lex_conf_bool()); return; }
-#line 1890 "src/parse/lex_conf.cc"
+#line 1893 "src/parse/lex_conf.cc"
 yy377:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy431;
@@ -1955,9 +1958,9 @@ yy389:
                }
        }
 yy390:
-#line 157 "../src/parse/lex_conf.re"
+#line 160 "../src/parse/lex_conf.re"
        { opts.set_fill         (lex_conf_string ()); return; }
-#line 1961 "src/parse/lex_conf.cc"
+#line 1964 "src/parse/lex_conf.cc"
 yy391:
        yych = (unsigned char)*++cur;
        if (yych == 'O') goto yy450;
@@ -1988,9 +1991,9 @@ yy397:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 124 "../src/parse/lex_conf.re"
+#line 127 "../src/parse/lex_conf.re"
        { opts.set_yypeek       (lex_conf_string ()); return; }
-#line 1994 "src/parse/lex_conf.cc"
+#line 1997 "src/parse/lex_conf.cc"
 yy399:
        yych = (unsigned char)*++cur;
        if (yych == 'O') goto yy460;
@@ -2008,9 +2011,9 @@ yy402:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 125 "../src/parse/lex_conf.re"
+#line 128 "../src/parse/lex_conf.re"
        { opts.set_yyskip       (lex_conf_string ()); return; }
-#line 2014 "src/parse/lex_conf.cc"
+#line 2017 "src/parse/lex_conf.cc"
 yy404:
        yych = (unsigned char)*++cur;
        if (yych == 'N') goto yy463;
@@ -2072,9 +2075,9 @@ yy417:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 140 "../src/parse/lex_conf.re"
+#line 143 "../src/parse/lex_conf.re"
        { opts.set_indString (lex_conf_string ()); return; }
-#line 2078 "src/parse/lex_conf.cc"
+#line 2081 "src/parse/lex_conf.cc"
 yy419:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy479;
@@ -2096,17 +2099,17 @@ yy423:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 107 "../src/parse/lex_conf.re"
+#line 110 "../src/parse/lex_conf.re"
        { opts.set_yybm         (lex_conf_string ()); return; }
-#line 2102 "src/parse/lex_conf.cc"
+#line 2105 "src/parse/lex_conf.cc"
 yy425:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 153 "../src/parse/lex_conf.re"
+#line 156 "../src/parse/lex_conf.re"
        { opts.set_yych           (lex_conf_string ()); return; }
-#line 2110 "src/parse/lex_conf.cc"
+#line 2113 "src/parse/lex_conf.cc"
 yy427:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy483;
@@ -2128,9 +2131,9 @@ yy431:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 158 "../src/parse/lex_conf.re"
+#line 161 "../src/parse/lex_conf.re"
        { opts.set_fill_use     (lex_conf_bool()); return; }
-#line 2134 "src/parse/lex_conf.cc"
+#line 2137 "src/parse/lex_conf.cc"
 yy433:
        yych = (unsigned char)*++cur;
        if (yych == 't') goto yy487;
@@ -2145,17 +2148,17 @@ yy435:
        goto yy221;
 yy436:
        ++cur;
-#line 93 "../src/parse/lex_conf.re"
+#line 96 "../src/parse/lex_conf.re"
        { opts.set_condGotoParam    (lex_conf_string ()); return; }
-#line 2151 "src/parse/lex_conf.cc"
+#line 2154 "src/parse/lex_conf.cc"
 yy438:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 89 "../src/parse/lex_conf.re"
+#line 92 "../src/parse/lex_conf.re"
        { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
-#line 2159 "src/parse/lex_conf.cc"
+#line 2162 "src/parse/lex_conf.cc"
 yy440:
        yych = (unsigned char)*++cur;
        if (yych == 'P') goto yy491;
@@ -2173,9 +2176,9 @@ yy443:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 152 "../src/parse/lex_conf.re"
+#line 155 "../src/parse/lex_conf.re"
        { opts.set_yyctype        (lex_conf_string ()); return; }
-#line 2179 "src/parse/lex_conf.cc"
+#line 2182 "src/parse/lex_conf.cc"
 yy445:
        yych = (unsigned char)*++cur;
        if (yych == 'R') goto yy495;
@@ -2185,9 +2188,9 @@ yy446:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 150 "../src/parse/lex_conf.re"
+#line 153 "../src/parse/lex_conf.re"
        { opts.set_yydebug (lex_conf_string ()); return; }
-#line 2191 "src/parse/lex_conf.cc"
+#line 2194 "src/parse/lex_conf.cc"
 yy448:
        yych = (unsigned char)*++cur;
        if (yych == 'n') goto yy497;
@@ -2213,9 +2216,9 @@ yy453:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 122 "../src/parse/lex_conf.re"
+#line 125 "../src/parse/lex_conf.re"
        { opts.set_yylimit     (lex_conf_string ()); return; }
-#line 2219 "src/parse/lex_conf.cc"
+#line 2222 "src/parse/lex_conf.cc"
 yy455:
        yych = (unsigned char)*++cur;
        if (yych == 'R') goto yy502;
@@ -2225,17 +2228,17 @@ yy456:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 134 "../src/parse/lex_conf.re"
+#line 137 "../src/parse/lex_conf.re"
        { opts.set_yymtagn      (lex_conf_string ()); return; }
-#line 2231 "src/parse/lex_conf.cc"
+#line 2234 "src/parse/lex_conf.cc"
 yy458:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 135 "../src/parse/lex_conf.re"
+#line 138 "../src/parse/lex_conf.re"
        { opts.set_yymtagp      (lex_conf_string ()); return; }
-#line 2239 "src/parse/lex_conf.cc"
+#line 2242 "src/parse/lex_conf.cc"
 yy460:
        yych = (unsigned char)*++cur;
        if (yych == 'R') goto yy504;
@@ -2253,17 +2256,17 @@ yy463:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 132 "../src/parse/lex_conf.re"
+#line 135 "../src/parse/lex_conf.re"
        { opts.set_yystagn      (lex_conf_string ()); return; }
-#line 2259 "src/parse/lex_conf.cc"
+#line 2262 "src/parse/lex_conf.cc"
 yy465:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 133 "../src/parse/lex_conf.re"
+#line 136 "../src/parse/lex_conf.re"
        { opts.set_yystagp      (lex_conf_string ()); return; }
-#line 2267 "src/parse/lex_conf.cc"
+#line 2270 "src/parse/lex_conf.cc"
 yy467:
        yych = (unsigned char)*++cur;
        if (yych == 'o') goto yy507;
@@ -2353,7 +2356,7 @@ yy488:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 109 "../src/parse/lex_conf.re"
+#line 112 "../src/parse/lex_conf.re"
        {
         const int32_t n = lex_conf_number ();
         if (n < 0) {
@@ -2362,7 +2365,7 @@ yy488:
         opts.set_cGotoThreshold (static_cast<uint32_t> (n));
         return;
     }
-#line 2366 "src/parse/lex_conf.cc"
+#line 2369 "src/parse/lex_conf.cc"
 yy490:
        yych = (unsigned char)*++cur;
        if (yych == 'n') goto yy531;
@@ -2386,9 +2389,9 @@ yy491:
                }
        }
 yy492:
-#line 126 "../src/parse/lex_conf.re"
+#line 129 "../src/parse/lex_conf.re"
        { opts.set_yybackup     (lex_conf_string ()); return; }
-#line 2392 "src/parse/lex_conf.cc"
+#line 2395 "src/parse/lex_conf.cc"
 yy493:
        yych = (unsigned char)*++cur;
        if (yych == 'P') goto yy533;
@@ -2402,9 +2405,9 @@ yy495:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 119 "../src/parse/lex_conf.re"
+#line 122 "../src/parse/lex_conf.re"
        { opts.set_yycursor    (lex_conf_string ()); return; }
-#line 2408 "src/parse/lex_conf.cc"
+#line 2411 "src/parse/lex_conf.cc"
 yy497:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy535;
@@ -2430,9 +2433,9 @@ yy502:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 120 "../src/parse/lex_conf.re"
+#line 123 "../src/parse/lex_conf.re"
        { opts.set_yymarker    (lex_conf_string ()); return; }
-#line 2436 "src/parse/lex_conf.cc"
+#line 2439 "src/parse/lex_conf.cc"
 yy504:
        yych = (unsigned char)*++cur;
        if (yych == 'E') goto yy540;
@@ -2502,17 +2505,17 @@ yy520:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 104 "../src/parse/lex_conf.re"
+#line 107 "../src/parse/lex_conf.re"
        { opts.set_bUseStateNext   (lex_conf_bool()); return; }
-#line 2508 "src/parse/lex_conf.cc"
+#line 2511 "src/parse/lex_conf.cc"
 yy522:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 138 "../src/parse/lex_conf.re"
+#line 141 "../src/parse/lex_conf.re"
        { opts.set_tags_expression(lex_conf_string ()); return; }
-#line 2516 "src/parse/lex_conf.cc"
+#line 2519 "src/parse/lex_conf.cc"
 yy524:
        yych = (unsigned char)*++cur;
        if (yych == 'p') goto yy556;
@@ -2534,9 +2537,9 @@ yy528:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 154 "../src/parse/lex_conf.re"
+#line 157 "../src/parse/lex_conf.re"
        { opts.set_yychConversion (lex_conf_bool()); return; }
-#line 2540 "src/parse/lex_conf.cc"
+#line 2543 "src/parse/lex_conf.cc"
 yy530:
        yych = (unsigned char)*++cur;
        if (yych == 'r') goto yy560;
@@ -2598,9 +2601,9 @@ yy540:
                }
        }
 yy541:
-#line 128 "../src/parse/lex_conf.re"
+#line 131 "../src/parse/lex_conf.re"
        { opts.set_yyrestore    (lex_conf_string ()); return; }
-#line 2604 "src/parse/lex_conf.cc"
+#line 2607 "src/parse/lex_conf.cc"
 yy542:
        yych = (unsigned char)*++cur;
        if (yych == 'I') goto yy578;
@@ -2680,14 +2683,14 @@ yy560:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 160 "../src/parse/lex_conf.re"
+#line 163 "../src/parse/lex_conf.re"
        { opts.set_fill_arg_use (lex_conf_bool()); return; }
-#line 2686 "src/parse/lex_conf.cc"
+#line 2689 "src/parse/lex_conf.cc"
 yy562:
        ++cur;
-#line 91 "../src/parse/lex_conf.re"
+#line 94 "../src/parse/lex_conf.re"
        { opts.set_condDividerParam (lex_conf_string ()); return; }
-#line 2691 "src/parse/lex_conf.cc"
+#line 2694 "src/parse/lex_conf.cc"
 yy564:
        yych = (unsigned char)*++cur;
        if (yych == 'X') goto yy602;
@@ -2697,9 +2700,9 @@ yy565:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 82 "../src/parse/lex_conf.re"
+#line 85 "../src/parse/lex_conf.re"
        { opts.set_yycondtype       (lex_conf_string ()); return; }
-#line 2703 "src/parse/lex_conf.cc"
+#line 2706 "src/parse/lex_conf.cc"
 yy567:
        yych = (unsigned char)*++cur;
        if (yych == 'R') goto yy604;
@@ -2710,9 +2713,9 @@ yy568:
        goto yy4;
 yy569:
        ++cur;
-#line 159 "../src/parse/lex_conf.re"
+#line 162 "../src/parse/lex_conf.re"
        { opts.set_fill_arg     (lex_conf_string ()); return; }
-#line 2716 "src/parse/lex_conf.cc"
+#line 2719 "src/parse/lex_conf.cc"
 yy571:
        yych = (unsigned char)*++cur;
        if (yych == 'T') goto yy607;
@@ -2736,17 +2739,17 @@ yy572:
                }
        }
 yy573:
-#line 96 "../src/parse/lex_conf.re"
+#line 99 "../src/parse/lex_conf.re"
        { opts.set_state_get       (lex_conf_string ()); return; }
-#line 2742 "src/parse/lex_conf.cc"
+#line 2745 "src/parse/lex_conf.cc"
 yy574:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 131 "../src/parse/lex_conf.re"
+#line 134 "../src/parse/lex_conf.re"
        { opts.set_yylessthan   (lex_conf_string ()); return; }
-#line 2750 "src/parse/lex_conf.cc"
+#line 2753 "src/parse/lex_conf.cc"
 yy576:
        yych = (unsigned char)*++cur;
        if (yych == 'T') goto yy609;
@@ -2779,9 +2782,9 @@ yy579:
                }
        }
 yy580:
-#line 98 "../src/parse/lex_conf.re"
+#line 101 "../src/parse/lex_conf.re"
        { opts.set_state_set       (lex_conf_string ()); return; }
-#line 2785 "src/parse/lex_conf.cc"
+#line 2788 "src/parse/lex_conf.cc"
 yy581:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
@@ -2809,9 +2812,9 @@ yy586:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 69 "../src/parse/lex_conf.re"
+#line 72 "../src/parse/lex_conf.re"
        { lex_conf_empty_class(opts);      return; }
-#line 2815 "src/parse/lex_conf.cc"
+#line 2818 "src/parse/lex_conf.cc"
 yy588:
        yych = (unsigned char)*++cur;
        if (yych == 'l') goto yy618;
@@ -2835,57 +2838,57 @@ yy592:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 101 "../src/parse/lex_conf.re"
+#line 104 "../src/parse/lex_conf.re"
        { opts.set_yyfilllabel     (lex_conf_string ()); return; }
-#line 2841 "src/parse/lex_conf.cc"
+#line 2844 "src/parse/lex_conf.cc"
 yy594:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 105 "../src/parse/lex_conf.re"
+#line 108 "../src/parse/lex_conf.re"
        { opts.set_yyaccept        (lex_conf_string ()); return; }
-#line 2849 "src/parse/lex_conf.cc"
+#line 2852 "src/parse/lex_conf.cc"
 yy596:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 94 "../src/parse/lex_conf.re"
+#line 97 "../src/parse/lex_conf.re"
        { opts.set_yyctable         (lex_conf_string ()); return; }
-#line 2857 "src/parse/lex_conf.cc"
+#line 2860 "src/parse/lex_conf.cc"
 yy598:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 171 "../src/parse/lex_conf.re"
+#line 174 "../src/parse/lex_conf.re"
        { lex_conf_string (); return; }
-#line 2865 "src/parse/lex_conf.cc"
+#line 2868 "src/parse/lex_conf.cc"
 yy600:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 117 "../src/parse/lex_conf.re"
+#line 120 "../src/parse/lex_conf.re"
        { opts.set_yytarget (lex_conf_string ()); return; }
-#line 2873 "src/parse/lex_conf.cc"
+#line 2876 "src/parse/lex_conf.cc"
 yy602:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 127 "../src/parse/lex_conf.re"
+#line 130 "../src/parse/lex_conf.re"
        { opts.set_yybackupctx  (lex_conf_string ()); return; }
-#line 2881 "src/parse/lex_conf.cc"
+#line 2884 "src/parse/lex_conf.cc"
 yy604:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 121 "../src/parse/lex_conf.re"
+#line 124 "../src/parse/lex_conf.re"
        { opts.set_yyctxmarker (lex_conf_string ()); return; }
-#line 2889 "src/parse/lex_conf.cc"
+#line 2892 "src/parse/lex_conf.cc"
 yy606:
        yych = (unsigned char)*++cur;
        if (yych == 'd') goto yy621;
@@ -2953,9 +2956,9 @@ yy621:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 161 "../src/parse/lex_conf.re"
+#line 164 "../src/parse/lex_conf.re"
        { opts.set_fill_naked   (lex_conf_bool()); return; }
-#line 2959 "src/parse/lex_conf.cc"
+#line 2962 "src/parse/lex_conf.cc"
 yy623:
        yych = (unsigned char)*++cur;
        if (yych == 'O') goto yy639;
@@ -2969,17 +2972,17 @@ yy625:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 129 "../src/parse/lex_conf.re"
+#line 132 "../src/parse/lex_conf.re"
        { opts.set_yyrestorectx (lex_conf_string ()); return; }
-#line 2975 "src/parse/lex_conf.cc"
+#line 2978 "src/parse/lex_conf.cc"
 yy627:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 130 "../src/parse/lex_conf.re"
+#line 133 "../src/parse/lex_conf.re"
        { opts.set_yyrestoretag (lex_conf_string ()); return; }
-#line 2983 "src/parse/lex_conf.cc"
+#line 2986 "src/parse/lex_conf.cc"
 yy629:
        yych = (unsigned char)*++cur;
        if (yych == 'O') goto yy641;
@@ -3001,9 +3004,9 @@ yy633:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 50 "../src/parse/lex_conf.re"
+#line 53 "../src/parse/lex_conf.re"
        { opts.set_bCaseInverted    (lex_conf_bool());   return; }
-#line 3007 "src/parse/lex_conf.cc"
+#line 3010 "src/parse/lex_conf.cc"
 yy635:
        yych = (unsigned char)*++cur;
        if (yych == 's') goto yy106;
@@ -3069,9 +3072,9 @@ yy646:
                }
        }
 yy647:
-#line 83 "../src/parse/lex_conf.re"
+#line 86 "../src/parse/lex_conf.re"
        { opts.set_cond_get         (lex_conf_string ()); return; }
-#line 3075 "src/parse/lex_conf.cc"
+#line 3078 "src/parse/lex_conf.cc"
 yy648:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy657;
@@ -3096,9 +3099,9 @@ yy649:
                }
        }
 yy650:
-#line 85 "../src/parse/lex_conf.re"
+#line 88 "../src/parse/lex_conf.re"
        { opts.set_cond_set         (lex_conf_string ()); return; }
-#line 3102 "src/parse/lex_conf.cc"
+#line 3105 "src/parse/lex_conf.cc"
 yy651:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy660;
@@ -3116,9 +3119,9 @@ yy654:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 67 "../src/parse/lex_conf.re"
+#line 70 "../src/parse/lex_conf.re"
        { lex_conf_encoding_policy(opts);  return; }
-#line 3122 "src/parse/lex_conf.cc"
+#line 3125 "src/parse/lex_conf.cc"
 yy656:
        yych = (unsigned char)*++cur;
        if (yych == 'n') goto yy664;
@@ -3148,9 +3151,9 @@ yy662:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 49 "../src/parse/lex_conf.re"
+#line 52 "../src/parse/lex_conf.re"
        { opts.set_bCaseInsensitive (lex_conf_bool());   return; }
-#line 3154 "src/parse/lex_conf.cc"
+#line 3157 "src/parse/lex_conf.cc"
 yy664:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy673;
@@ -3160,9 +3163,9 @@ yy665:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 97 "../src/parse/lex_conf.re"
+#line 100 "../src/parse/lex_conf.re"
        { opts.set_state_get_naked (lex_conf_bool()); return; }
-#line 3166 "src/parse/lex_conf.cc"
+#line 3169 "src/parse/lex_conf.cc"
 yy667:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy674;
@@ -3176,14 +3179,14 @@ yy669:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 99 "../src/parse/lex_conf.re"
+#line 102 "../src/parse/lex_conf.re"
        { opts.set_state_set_naked (lex_conf_bool()); return; }
-#line 3182 "src/parse/lex_conf.cc"
+#line 3185 "src/parse/lex_conf.cc"
 yy671:
        ++cur;
-#line 100 "../src/parse/lex_conf.re"
+#line 103 "../src/parse/lex_conf.re"
        { opts.set_state_set_arg   (lex_conf_string ()); return; }
-#line 3187 "src/parse/lex_conf.cc"
+#line 3190 "src/parse/lex_conf.cc"
 yy673:
        yych = (unsigned char)*++cur;
        if (yych == 'k') goto yy676;
@@ -3218,27 +3221,27 @@ yy680:
        goto yy4;
 yy681:
        ++cur;
-#line 86 "../src/parse/lex_conf.re"
+#line 89 "../src/parse/lex_conf.re"
        { opts.set_cond_set_arg     (lex_conf_string ()); return; }
-#line 3224 "src/parse/lex_conf.cc"
+#line 3227 "src/parse/lex_conf.cc"
 yy683:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 84 "../src/parse/lex_conf.re"
+#line 87 "../src/parse/lex_conf.re"
        { opts.set_cond_get_naked   (lex_conf_bool()); return; }
-#line 3232 "src/parse/lex_conf.cc"
+#line 3235 "src/parse/lex_conf.cc"
 yy685:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 87 "../src/parse/lex_conf.re"
+#line 90 "../src/parse/lex_conf.re"
        { opts.set_cond_set_naked   (lex_conf_bool()); return; }
-#line 3240 "src/parse/lex_conf.cc"
+#line 3243 "src/parse/lex_conf.cc"
 }
-#line 177 "../src/parse/lex_conf.re"
+#line 180 "../src/parse/lex_conf.re"
 
 }
 
@@ -3246,7 +3249,7 @@ void Scanner::lex_conf_encoding_policy(Opt &opts)
 {
     lex_conf_assign ();
 
-#line 3250 "src/parse/lex_conf.cc"
+#line 3253 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 10) YYFILL(10);
@@ -3259,10 +3262,10 @@ void Scanner::lex_conf_encoding_policy(Opt &opts)
        }
        ++cur;
 yy690:
-#line 184 "../src/parse/lex_conf.re"
+#line 187 "../src/parse/lex_conf.re"
        { msg.fatal(cur_loc(),
         "bad configuration value (expected: 'ignore', 'substitute', 'fail')"); }
-#line 3266 "src/parse/lex_conf.cc"
+#line 3269 "src/parse/lex_conf.cc"
 yy691:
        yych = (unsigned char)*(mar = ++cur);
        if (yych == 'a') goto yy694;
@@ -3303,9 +3306,9 @@ yy700:
        goto yy695;
 yy701:
        ++cur;
-#line 188 "../src/parse/lex_conf.re"
+#line 191 "../src/parse/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_FAIL);       goto end; }
-#line 3309 "src/parse/lex_conf.cc"
+#line 3312 "src/parse/lex_conf.cc"
 yy703:
        yych = (unsigned char)*++cur;
        if (yych == 'r') goto yy705;
@@ -3324,9 +3327,9 @@ yy706:
        goto yy695;
 yy707:
        ++cur;
-#line 186 "../src/parse/lex_conf.re"
+#line 189 "../src/parse/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_IGNORE);     goto end; }
-#line 3330 "src/parse/lex_conf.cc"
+#line 3333 "src/parse/lex_conf.cc"
 yy709:
        yych = (unsigned char)*++cur;
        if (yych != 't') goto yy695;
@@ -3337,11 +3340,11 @@ yy709:
        yych = (unsigned char)*++cur;
        if (yych != 'e') goto yy695;
        ++cur;
-#line 187 "../src/parse/lex_conf.re"
+#line 190 "../src/parse/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); goto end; }
-#line 3343 "src/parse/lex_conf.cc"
+#line 3346 "src/parse/lex_conf.cc"
 }
-#line 189 "../src/parse/lex_conf.re"
+#line 192 "../src/parse/lex_conf.re"
 
 end:
     lex_conf_semicolon();
@@ -3351,7 +3354,7 @@ void Scanner::lex_conf_input(Opt &opts)
 {
     lex_conf_assign ();
 
-#line 3355 "src/parse/lex_conf.cc"
+#line 3358 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 7) YYFILL(7);
@@ -3362,9 +3365,9 @@ void Scanner::lex_conf_input(Opt &opts)
 yy717:
        ++cur;
 yy718:
-#line 198 "../src/parse/lex_conf.re"
+#line 201 "../src/parse/lex_conf.re"
        { msg.fatal(cur_loc(), "bad configuration value (expected: 'default', 'custom')"); }
-#line 3368 "src/parse/lex_conf.cc"
+#line 3371 "src/parse/lex_conf.cc"
 yy719:
        yych = (unsigned char)*(mar = ++cur);
        if (yych == 'u') goto yy721;
@@ -3409,18 +3412,18 @@ yy729:
        goto yy722;
 yy730:
        ++cur;
-#line 200 "../src/parse/lex_conf.re"
+#line 203 "../src/parse/lex_conf.re"
        { opts.set_input_api(INPUT_CUSTOM);  goto end; }
-#line 3415 "src/parse/lex_conf.cc"
+#line 3418 "src/parse/lex_conf.cc"
 yy732:
        yych = (unsigned char)*++cur;
        if (yych != 't') goto yy722;
        ++cur;
-#line 199 "../src/parse/lex_conf.re"
+#line 202 "../src/parse/lex_conf.re"
        { opts.set_input_api(INPUT_DEFAULT); goto end; }
-#line 3422 "src/parse/lex_conf.cc"
+#line 3425 "src/parse/lex_conf.cc"
 }
-#line 201 "../src/parse/lex_conf.re"
+#line 204 "../src/parse/lex_conf.re"
 
 end:
     lex_conf_semicolon();
@@ -3430,7 +3433,7 @@ void Scanner::lex_conf_empty_class(Opt &opts)
 {
     lex_conf_assign ();
 
-#line 3434 "src/parse/lex_conf.cc"
+#line 3437 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 11) YYFILL(11);
@@ -3439,10 +3442,10 @@ void Scanner::lex_conf_empty_class(Opt &opts)
        if (yych == 'm') goto yy740;
        ++cur;
 yy738:
-#line 210 "../src/parse/lex_conf.re"
+#line 213 "../src/parse/lex_conf.re"
        { msg.fatal(cur_loc(),
         "bad configuration value (expected: 'match-empty', 'match-none', 'error')"); }
-#line 3446 "src/parse/lex_conf.cc"
+#line 3449 "src/parse/lex_conf.cc"
 yy739:
        yych = (unsigned char)*(mar = ++cur);
        if (yych == 'r') goto yy741;
@@ -3479,9 +3482,9 @@ yy747:
        goto yy742;
 yy748:
        ++cur;
-#line 214 "../src/parse/lex_conf.re"
+#line 217 "../src/parse/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_ERROR);       goto end; }
-#line 3485 "src/parse/lex_conf.cc"
+#line 3488 "src/parse/lex_conf.cc"
 yy750:
        yych = (unsigned char)*++cur;
        if (yych != '-') goto yy742;
@@ -3519,16 +3522,16 @@ yy758:
        goto yy742;
 yy759:
        ++cur;
-#line 213 "../src/parse/lex_conf.re"
+#line 216 "../src/parse/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE);  goto end; }
-#line 3525 "src/parse/lex_conf.cc"
+#line 3528 "src/parse/lex_conf.cc"
 yy761:
        ++cur;
-#line 212 "../src/parse/lex_conf.re"
+#line 215 "../src/parse/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); goto end; }
-#line 3530 "src/parse/lex_conf.cc"
+#line 3533 "src/parse/lex_conf.cc"
 }
-#line 215 "../src/parse/lex_conf.re"
+#line 218 "../src/parse/lex_conf.re"
 
 end:
     lex_conf_semicolon();
@@ -3546,7 +3549,7 @@ void Scanner::lex_conf_enc(Enc::type_t enc, Opt &opts)
 void Scanner::lex_conf_assign ()
 {
 
-#line 3550 "src/parse/lex_conf.cc"
+#line 3553 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3593,9 +3596,9 @@ void Scanner::lex_conf_assign ()
        }
        ++cur;
 yy766:
-#line 232 "../src/parse/lex_conf.re"
+#line 235 "../src/parse/lex_conf.re"
        { msg.fatal(cur_loc(), "missing '=' in configuration"); }
-#line 3599 "src/parse/lex_conf.cc"
+#line 3602 "src/parse/lex_conf.cc"
 yy767:
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= 0x1F) {
@@ -3612,9 +3615,9 @@ yy768:
        if (yybm[0+yych] & 128) {
                goto yy768;
        }
-#line 233 "../src/parse/lex_conf.re"
+#line 236 "../src/parse/lex_conf.re"
        { return; }
-#line 3618 "src/parse/lex_conf.cc"
+#line 3621 "src/parse/lex_conf.cc"
 yy771:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -3628,14 +3631,14 @@ yy771:
        cur = mar;
        goto yy766;
 }
-#line 234 "../src/parse/lex_conf.re"
+#line 237 "../src/parse/lex_conf.re"
 
 }
 
 void Scanner::lex_conf_semicolon ()
 {
 
-#line 3639 "src/parse/lex_conf.cc"
+#line 3642 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3682,9 +3685,9 @@ void Scanner::lex_conf_semicolon ()
        }
        ++cur;
 yy777:
-#line 240 "../src/parse/lex_conf.re"
+#line 243 "../src/parse/lex_conf.re"
        { msg.fatal(cur_loc(), "missing ending ';' in configuration"); }
-#line 3688 "src/parse/lex_conf.cc"
+#line 3691 "src/parse/lex_conf.cc"
 yy778:
        yych = (unsigned char)*(mar = ++cur);
        if (yybm[0+yych] & 128) {
@@ -3693,9 +3696,9 @@ yy778:
        if (yych != ';') goto yy777;
 yy779:
        ++cur;
-#line 241 "../src/parse/lex_conf.re"
+#line 244 "../src/parse/lex_conf.re"
        { return; }
-#line 3699 "src/parse/lex_conf.cc"
+#line 3702 "src/parse/lex_conf.cc"
 yy781:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -3707,7 +3710,7 @@ yy781:
        cur = mar;
        goto yy777;
 }
-#line 242 "../src/parse/lex_conf.re"
+#line 245 "../src/parse/lex_conf.re"
 
 }
 
@@ -3721,7 +3724,7 @@ int32_t Scanner::lex_conf_number ()
     lex_conf_assign ();
     tok = cur;
 
-#line 3725 "src/parse/lex_conf.cc"
+#line 3728 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3768,9 +3771,9 @@ int32_t Scanner::lex_conf_number ()
        }
        ++cur;
 yy787:
-#line 255 "../src/parse/lex_conf.re"
+#line 258 "../src/parse/lex_conf.re"
        { msg.fatal(cur_loc(), "bad configuration value (expected number)"); }
-#line 3774 "src/parse/lex_conf.cc"
+#line 3777 "src/parse/lex_conf.cc"
 yy788:
        yych = (unsigned char)*++cur;
        if (yych <= '0') goto yy787;
@@ -3779,7 +3782,7 @@ yy788:
 yy789:
        ++cur;
 yy790:
-#line 256 "../src/parse/lex_conf.re"
+#line 259 "../src/parse/lex_conf.re"
        {
         int32_t n = 0;
         if (!s_to_i32_unsafe (tok, cur, n)) {
@@ -3788,7 +3791,7 @@ yy790:
         lex_conf_semicolon ();
         return n;
     }
-#line 3792 "src/parse/lex_conf.cc"
+#line 3795 "src/parse/lex_conf.cc"
 yy791:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -3798,7 +3801,7 @@ yy791:
        }
        goto yy790;
 }
-#line 264 "../src/parse/lex_conf.re"
+#line 267 "../src/parse/lex_conf.re"
 
 }
 
@@ -3808,7 +3811,7 @@ std::string Scanner::lex_conf_string ()
     std::string s;
     tok = cur;
 
-#line 3812 "src/parse/lex_conf.cc"
+#line 3815 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3864,9 +3867,9 @@ std::string Scanner::lex_conf_string ()
                }
        }
 yy795:
-#line 293 "../src/parse/lex_conf.re"
+#line 296 "../src/parse/lex_conf.re"
        { goto end; }
-#line 3870 "src/parse/lex_conf.cc"
+#line 3873 "src/parse/lex_conf.cc"
 yy796:
        ++cur;
        if (lim <= cur) YYFILL(1);
@@ -3874,15 +3877,15 @@ yy796:
        if (yybm[0+yych] & 128) {
                goto yy796;
        }
-#line 289 "../src/parse/lex_conf.re"
+#line 292 "../src/parse/lex_conf.re"
        {
         s = getstr(tok, cur);
         goto end;
     }
-#line 3883 "src/parse/lex_conf.cc"
+#line 3886 "src/parse/lex_conf.cc"
 yy799:
        ++cur;
-#line 273 "../src/parse/lex_conf.re"
+#line 276 "../src/parse/lex_conf.re"
        {
         const char quote = tok[0];
         for (;;) {
@@ -3899,9 +3902,9 @@ yy799:
             }
         }
     }
-#line 3903 "src/parse/lex_conf.cc"
+#line 3906 "src/parse/lex_conf.cc"
 }
-#line 294 "../src/parse/lex_conf.re"
+#line 297 "../src/parse/lex_conf.re"
 
 end:
     lex_conf_semicolon ();
index 923020f552508b11ce8506d24aea403d5896c3d1..70fe0f835c1708739065d4c07e186253eaf39226 100644 (file)
@@ -86,18 +86,18 @@ end:
 // 'long' as vararg requres suffix 'L', which is easy to forget and hard
 // to notice (the problem is platform/toolchain-specific).
 #define  GS                                              static const regoff_t gs[]
-#define  T(R,S,gs)                                       e |= test(R,S,sizeof(gs)/sizeof(gs[0])/2,gs,flags);
-#define  T0(R,S)                                         e |= test(R,S,0,NULL,flags);
-#define  T1(R,S,a,b)                                     { GS = {a,b};                                     T(R,S,gs); }
-#define  T2(R,S,a,b,c,d)                                 { GS = {a,b,c,d};                                 T(R,S,gs); }
-#define  T3(R,S,a,b,c,d,e,f)                             { GS = {a,b,c,d,e,f};                             T(R,S,gs); }
-#define  T4(R,S,a,b,c,d,e,f,g,h)                         { GS = {a,b,c,d,e,f,g,h};                         T(R,S,gs); }
-#define  T5(R,S,a,b,c,d,e,f,g,h,i,j)                     { GS = {a,b,c,d,e,f,g,h,i,j};                     T(R,S,gs); }
-#define  T6(R,S,a,b,c,d,e,f,g,h,i,j,k,l)                 { GS = {a,b,c,d,e,f,g,h,i,j,k,l};                 T(R,S,gs); }
-#define  T7(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n)             { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n};             T(R,S,gs); }
-#define  T8(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)         { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p};         T(R,S,gs); }
-#define  T9(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)     { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r};     T(R,S,gs); }
-#define T10(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t}; T(R,S,gs); }
+#define  T(R,S,gs)                                       do { e |= test(R,S,sizeof(gs)/sizeof(gs[0])/2,gs,flags); } while(0)
+#define  T0(R,S)                                         do { e |= test(R,S,0,NULL,flags); } while(0)
+#define  T1(R,S,a,b)                                     do { GS = {a,b};                                     T(R,S,gs); } while(0)
+#define  T2(R,S,a,b,c,d)                                 do { GS = {a,b,c,d};                                 T(R,S,gs); } while(0)
+#define  T3(R,S,a,b,c,d,e,f)                             do { GS = {a,b,c,d,e,f};                             T(R,S,gs); } while(0)
+#define  T4(R,S,a,b,c,d,e,f,g,h)                         do { GS = {a,b,c,d,e,f,g,h};                         T(R,S,gs); } while(0)
+#define  T5(R,S,a,b,c,d,e,f,g,h,i,j)                     do { GS = {a,b,c,d,e,f,g,h,i,j};                     T(R,S,gs); } while(0)
+#define  T6(R,S,a,b,c,d,e,f,g,h,i,j,k,l)                 do { GS = {a,b,c,d,e,f,g,h,i,j,k,l};                 T(R,S,gs); } while(0)
+#define  T7(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n)             do { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n};             T(R,S,gs); } while(0)
+#define  T8(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)         do { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p};         T(R,S,gs); } while(0)
+#define  T9(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)     do { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r};     T(R,S,gs); } while(0)
+#define T10(R,S,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) do { GS = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t}; T(R,S,gs); } while(0)
 
 static int test_all_posix(int flags)
 {
index 930c491fe183d2030b9ab1494789bea082dece6a..2fc165040a8c651e7990ad03aa0cc3faedb4a4dc 100644 (file)
@@ -244,7 +244,7 @@ void gen_rescan_label(Output &o, const State *s)
 {
     const opt_t *opts = o.block().opts;
     if (opts->eof == NOEOF || endstate(s)) {
-        // no rescan label
+        // no rescan label
     }
     else if (opts->fFlag) {
         o.wstring(opts->yyfilllabel).wu32(o.fill_index).ws(":\n");
index 1e98250fe797c06a1c35623935ec3c023ed74a34..6d6347141db5341fc0dc7343e75fd0a2655e8e04 100644 (file)
@@ -155,7 +155,7 @@ label_t CpgotoTable::max_label () const
         if (max < table[i]->label)
         {
             max = table[i]->label;
-        };
+        }
     }
     return max;
 }
index d9fea7f2d488bb0669c6ee7dafcaf10a759427b4..9f367373dde26b6bd764bdfa76360b846b0a6ba6 100644 (file)
@@ -59,9 +59,9 @@ struct dump_dfa_t
     template<typename ctx_t> void state(const ctx_t &, bool);
 };
 
-#define DASSERT(x) assert(x)
+#define DASSERT(x)                   assert(x)
 #define DDUMP_NFA(opts, nfa)         if (opts->dump_nfa) dump_nfa(nfa)
-#define DDUMP_DFA_RAW(ctx, isnew)    ctx.dc_dump.state(ctx, is_new);
+#define DDUMP_DFA_RAW(ctx, isnew)    do { ctx.dc_dump.state(ctx, is_new); } while(0)
 #define DDUMP_DFA_DET(opts, dfa)     if (opts->dump_dfa_det) dump_dfa(dfa)
 #define DDUMP_DFA_TAGOPT(opts, dfa)  if (opts->dump_dfa_tagopt) dump_dfa(dfa)
 #define DDUMP_DFA_MIN(opts, dfa)     if (opts->dump_dfa_min) dump_dfa(dfa)
index 7085078291b877f2c35cfe7759f524e3bcd178e6..2b66c716f1a536d15fb20635318bcbfb29a92373 100644 (file)
@@ -32,7 +32,7 @@ namespace re2c {
 #define YYCURSOR  cur
 #define YYLIMIT   lim
 #define YYMARKER  mar
-#define YYFILL(n) { if (!fill (n)) fatal("unexpected end of input"); }
+#define YYFILL(n) do { if (!fill(n)) fatal("unexpected end of input"); } while(0)
 
 /*!re2c
     // source code is in ASCII, but re2c assumes unsigned chars
@@ -61,6 +61,9 @@ namespace re2c {
 */
 
 /*!header:re2c:on*/
+#ifndef _RE2C_PARSE_LEX_
+#define _RE2C_PARSE_LEX_
+
 #include <stddef.h>
 #include <string.h>
 #include "src/util/forbid_copy.h"
@@ -112,6 +115,8 @@ struct ScannerState
     FORBID_COPY(ScannerState);
 };
 } // namespace re2c
+
+#endif // _RE2C_PARSE_LEX_
 /*!header:re2c:off*/
 
 Scanner::ParseMode Scanner::echo(Output &out)
index e52ddcd6b51b162a0963911da7c689ddf453061c..de2ec3639ba5abeb9d8156ac5459b48213499adf 100644 (file)
@@ -14,7 +14,7 @@
 
 namespace re2c {
 
-#define YYFILL(n) { if (!fill (n)) fatal("unexpected end of input"); }
+#define YYFILL(n) do { if (!fill(n)) fatal("unexpected end of input"); } while(0)
 
 // global re2c config (affects the whole file)
 /*!re2c
index 3d02e1e545cc7bfd73cbfdec09cd37272fda8865..56e1ffbe245830ff92289a0a95934577c8d77137 100644 (file)
@@ -42,7 +42,7 @@ private:
             delete count;
             delete ptr;
         }
-    };
+    }
 };
 
 template <typename T>
index ee81ecf9654ccdc1d0a5f4fdc9cb8c0b481f53c0..b016398e16ed5fce46f49849ed6ea3fb5788cffd 100644 (file)
@@ -10,6 +10,6 @@ template<> struct static_assert_t<true> {};
 } // namespace re2c
 
 #define RE2C_STATIC_ASSERT(e) \
-    { re2c::static_assert_t<e> _; (void) _; }
+    do { re2c::static_assert_t<e> _; (void) _; } while(0)
 
 #endif // _RE2C_UTIL_STATIC_ASSERT_