]> granicus.if.org Git - re2c/commitdiff
Renamed simple tags into 'stags' and tags with history into 'mtags'.
authorUlya Trofimovich <skvadrik@gmail.com>
Fri, 28 Jul 2017 15:08:14 +0000 (16:08 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Fri, 28 Jul 2017 15:08:14 +0000 (16:08 +0100)
YYTAGP                  -> YYSTAGP
YYTAGN                  -> YYSTAGN
YYTAGLISTP              -> YYMTAGP
YYTAGLISTN              -> YYMTAGN
/*!tags:re2c ... */     -> /*!stags:re2c ... */
/*!taglists:re2c ... */ -> /*!mtags:re2c ... */

Updated tests and benchmarks.

Fixed warning message in '-Wnondeterministic-tags'.

78 files changed:
re2c/benchmarks/http/rfc7230/http_rfc7230.re
re2c/benchmarks/http/simple/http_simple.re
re2c/benchmarks/uri/rfc3986/uri_rfc3986.re
re2c/benchmarks/uri/simple/uri_simple.re
re2c/bootstrap/src/ast/lex.cc
re2c/bootstrap/src/ast/lex_conf.cc
re2c/src/adfa/adfa.cc
re2c/src/adfa/adfa.h
re2c/src/adfa/prepare.cc
re2c/src/ast/lex.re
re2c/src/ast/lex_conf.re
re2c/src/ast/scanner.h
re2c/src/code/emit_action.cc
re2c/src/code/emit_dfa.cc
re2c/src/code/output.cc
re2c/src/code/output.h
re2c/src/conf/opt.cc
re2c/src/conf/opt.h
re2c/src/conf/warn.cc
re2c/src/dfa/cfg/interfere.cc
re2c/src/dfa/cfg/rename.cc
re2c/src/dfa/determinization.cc
re2c/src/dfa/dfa.h
re2c/src/skeleton/generate_code.cc
re2c/src/skeleton/skeleton.h
re2c/test/posix_captures/.run/template
re2c/test/tags/ambiguity/cat1.i--tags.c
re2c/test/tags/ambiguity/cat3.i.c
re2c/test/tags/ambiguity/cat4.i--tags.c
re2c/test/tags/bug121_fix_multiple.i--input(custom).c
re2c/test/tags/bug121_fix_multiple.i--tags--input(custom).c
re2c/test/tags/bug121_var_multiple.i--input(custom).c
re2c/test/tags/bug121_var_multiple.i--tags--eager-skip--input(custom).c
re2c/test/tags/bug121_var_multiple.i--tags--input(custom).c
re2c/test/tags/bug121_var_multiple.i.c
re2c/test/tags/conf1.i--tags--input(custom).re
re2c/test/tags/conf1.i--tags.re
re2c/test/tags/conf2.i--tags--input(custom).c
re2c/test/tags/conf2.i--tags--input(custom).re
re2c/test/tags/conf2.i--tags.re
re2c/test/tags/conf3.i--tags--input(custom).c
re2c/test/tags/conf3.i--tags--input(custom).re
re2c/test/tags/conf3.i--tags.re
re2c/test/tags/copy_coalescing1.i--tags.re
re2c/test/tags/copy_coalescing2.i--tags.re
re2c/test/tags/copy_save.i--tags.c
re2c/test/tags/counter1.i--tags.c
re2c/test/tags/fallback4.i--tags.re
re2c/test/tags/fallback6.i--tags.re
re2c/test/tags/fix2.i--tags.re
re2c/test/tags/fix2_trail.i--tags--input(custom).c
re2c/test/tags/fix2_trail.i--tags--input(custom).re
re2c/test/tags/fix2_trail.i--tags.re
re2c/test/tags/fix3.i--tags.re
re2c/test/tags/fix3_trail.i--tags--input(custom).c
re2c/test/tags/fix3_trail.i--tags--input(custom).re
re2c/test/tags/fix3_trail.i--tags.re
re2c/test/tags/fix4.i--tags.re
re2c/test/tags/fix4_trail.i--tags--input(custom).c
re2c/test/tags/fix4_trail.i--tags--input(custom).re
re2c/test/tags/fix4_trail.i--tags.re
re2c/test/tags/fix5.i--tags.re
re2c/test/tags/fix5_trail.i--tags--input(custom).c
re2c/test/tags/fix5_trail.i--tags--input(custom).re
re2c/test/tags/fix5_trail.i--tags.re
re2c/test/tags/lost_tag.i--tags--no-lookahead--input(custom).c
re2c/test/tags/map_ord1.i--tags--no-lookahead.c
re2c/test/tags/map_ord1.i--tags.c
re2c/test/tags/map_ord2.i--tags--no-lookahead.c
re2c/test/tags/map_ord2.i--tags.c
re2c/test/tags/skip_tags_disorder1.i--tags--no-lookahead.c
re2c/test/tags/skip_tags_disorder2.i--tags--no-lookahead.c
re2c/test/tags/skip_tags_disorder4.i--tags--no-lookahead.c
re2c/test/tags/topsort1.i--tags.c
re2c/test/tags/topsort2.i--tags.c
re2c/test/tags/topsort3.i--tags--no-lookahead.c
re2c/test/tags/twopass.i--tags.c
re2c/test/tags/uniq.i--tags.c

index 32184fd4583dc2a36b4ef444bfe96a3fbef02332..b39d747c5cca1963be2df3c90c5b0933228a0096 100644 (file)
@@ -22,8 +22,8 @@ typedef struct {
     char *cur;
     char *mar;
     char *tok;
-    /*!tags:re2c format = "char *@@;\n"; */
-    /*!taglists:re2c format = "taglist_t *@@;\n"; */
+    /*!stags:re2c format = "char *@@;\n"; */
+    /*!mtags:re2c format = "taglist_t *@@;\n"; */
     taglistpool_t tlp;
     int eof;
 } input_t;
@@ -31,7 +31,7 @@ typedef struct {
 static void taglistpool_clear(taglistpool_t *tlp, input_t *in)
 {
     tlp->next = tlp->head;
-    /*!taglists:re2c format = "in->@@ = 0;\n"; */
+    /*!mtags:re2c format = "in->@@ = 0;\n"; */
 }
 
 static void taglistpool_init(taglistpool_t *tlp)
@@ -83,8 +83,8 @@ static void init_input(input_t *in, const char *fname)
     in->cur = in->lim;
     in->mar = in->lim;
     in->tok = in->lim;
-    /*!tags:re2c format = "in->@@ = 0;\n"; */
-    /*!taglists:re2c format = "in->@@ = 0;\n"; */
+    /*!stags:re2c format = "in->@@ = 0;\n"; */
+    /*!mtags:re2c format = "in->@@ = 0;\n"; */
     taglistpool_init(&in->tlp);
     in->eof = 0;
 }
@@ -110,7 +110,7 @@ static int fill(input_t *in, size_t need)
     in->cur -= free;
     in->mar -= free;
     in->tok -= free;
-    /*!tags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
+    /*!stags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
     in->lim += fread(in->lim, 1, free, in->file);
     if (in->lim < in->buf + SIZE) {
         in->eof = 1;
@@ -137,13 +137,13 @@ static void print_headers(const char *tok,
         (int)(h5->dist - h4->dist), tok + h4->dist);
 }
 
-#define YYCTYPE            char
-#define YYCURSOR           in->cur
-#define YYMARKER           in->mar
-#define YYLIMIT            in->lim
-#define YYTAGLISTP(tl)     taglist(&tl, in->tok, in->cur, &in->tlp)
-#define YYTAGLISTN(tl)     taglist(&tl, in->tok, NULL, &in->tlp)
-#define YYFILL(n)          if (fill(in, n) != 0) return 2;
+#define YYCTYPE        char
+#define YYCURSOR       in->cur
+#define YYMARKER       in->mar
+#define YYLIMIT        in->lim
+#define YYMTAGP(tl)    taglist(&tl, in->tok, in->cur, &in->tlp)
+#define YYMTAGN(tl)    taglist(&tl, in->tok, NULL, &in->tlp)
+#define YYFILL(n)      if (fill(in, n) != 0) return 2;
 
 static int lex(input_t *in, long *count, long *total)
 {
index d4b4613d87b1c84a129ee7da1d94a851ce0aa46a..bcbbabe0cac98fa5d94125681c99e6a3ae551116 100644 (file)
@@ -22,8 +22,8 @@ typedef struct {
     char *cur;
     char *mar;
     char *tok;
-    /*!tags:re2c format = "char *@@;\n"; */
-    /*!taglists:re2c format = "taglist_t *@@;\n"; */
+    /*!stags:re2c format = "char *@@;\n"; */
+    /*!mtags:re2c format = "taglist_t *@@;\n"; */
     taglistpool_t tlp;
     int eof;
 } input_t;
@@ -31,7 +31,7 @@ typedef struct {
 static void taglistpool_clear(taglistpool_t *tlp, input_t *in)
 {
     tlp->next = tlp->head;
-    /*!taglists:re2c format = "in->@@ = 0;\n"; */
+    /*!mtags:re2c format = "in->@@ = 0;\n"; */
 }
 
 static void taglistpool_init(taglistpool_t *tlp)
@@ -83,8 +83,8 @@ static void init_input(input_t *in, const char *fname)
     in->cur = in->lim;
     in->mar = in->lim;
     in->tok = in->lim;
-    /*!tags:re2c format = "in->@@ = 0;\n"; */
-    /*!taglists:re2c format = "in->@@ = 0;\n"; */
+    /*!stags:re2c format = "in->@@ = 0;\n"; */
+    /*!mtags:re2c format = "in->@@ = 0;\n"; */
     taglistpool_init(&in->tlp);
     in->eof = 0;
 }
@@ -110,7 +110,7 @@ static int fill(input_t *in, size_t need)
     in->cur -= free;
     in->mar -= free;
     in->tok -= free;
-    /*!tags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
+    /*!stags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
     in->lim += fread(in->lim, 1, free, in->file);
     if (in->lim < in->buf + SIZE) {
         in->eof = 1;
@@ -133,13 +133,13 @@ static void print_headers(const char *tok,
         (int)(h3->dist - h2->dist), tok + h2->dist);
 }
 
-#define YYCTYPE            char
-#define YYCURSOR           in->cur
-#define YYMARKER           in->mar
-#define YYLIMIT            in->lim
-#define YYTAGLISTP(tl)     taglist(&tl, in->tok, in->cur, &in->tlp)
-#define YYTAGLISTN(tl)     taglist(&tl, in->tok, NULL, &in->tlp)
-#define YYFILL(n)          if (fill(in, n) != 0) return 2;
+#define YYCTYPE        char
+#define YYCURSOR       in->cur
+#define YYMARKER       in->mar
+#define YYLIMIT        in->lim
+#define YYMTAGP(tl)    taglist(&tl, in->tok, in->cur, &in->tlp)
+#define YYMTAGN(tl)    taglist(&tl, in->tok, NULL, &in->tlp)
+#define YYFILL(n)      if (fill(in, n) != 0) return 2;
 
 static int lex(input_t *in, long *count, long *total)
 {
index 15e358cc875b147320d2df645f318e3109f4deee..0a9c80ffb7cf2dd519d250a7dcbceedb02aa2ae6 100644 (file)
@@ -13,7 +13,7 @@ typedef struct {
     char *cur;
     char *mar;
     char *tok;
-    /*!tags:re2c format = "char *@@;\n"; */
+    /*!stags:re2c format = "char *@@;\n"; */
     int eof;
 } input_t;
 
@@ -25,7 +25,7 @@ static void init_input(input_t *in, const char *fname)
     in->cur = in->lim;
     in->mar = in->lim;
     in->tok = in->lim;
-    /*!tags:re2c format = "in->@@ = 0;\n"; */
+    /*!stags:re2c format = "in->@@ = 0;\n"; */
     in->eof = 0;
 }
 
@@ -49,7 +49,7 @@ static int fill(input_t *in, size_t need)
     in->cur -= free;
     in->mar -= free;
     in->tok -= free;
-    /*!tags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
+    /*!stags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
     in->lim += fread(in->lim, 1, free, in->file);
     if (in->lim < in->buf + SIZE) {
         in->eof = 1;
index 63a9ea8452643bc2bbf8595d11bf0be24d1ae175..24be9148bc769bf268be52f39e1a6f10a79f5b35 100644 (file)
@@ -13,7 +13,7 @@ typedef struct {
     char *cur;
     char *mar;
     char *tok;
-    /*!tags:re2c format = "char *@@;\n"; */
+    /*!stags:re2c format = "char *@@;\n"; */
     int eof;
 } input_t;
 
@@ -25,7 +25,7 @@ static void init_input(input_t *in, const char *fname)
     in->cur = in->lim;
     in->mar = in->lim;
     in->tok = in->lim;
-    /*!tags:re2c format = "in->@@ = 0;\n"; */
+    /*!stags:re2c format = "in->@@ = 0;\n"; */
     in->eof = 0;
 }
 
@@ -49,7 +49,7 @@ static int fill(input_t *in, size_t need)
     in->cur -= free;
     in->mar -= free;
     in->tok -= free;
-    /*!tags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
+    /*!stags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
     in->lim += fread(in->lim, 1, free, in->file);
     if (in->lim < in->buf + SIZE) {
         in->eof = 1;
index 8fd64dd0aab9c45880941af6a307bbb5e21e9dbc..a8297551053829550ce910564c487be0858b0dcf 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Fri Jul 14 21:52:42 2017 */
+/* Generated by re2c 0.16 on Fri Jul 28 12:23:09 2017 */
 #line 1 "../src/ast/lex.re"
 #include "src/util/c99_stdint.h"
 #include <stddef.h>
@@ -200,154 +200,154 @@ yy20:
        case 'i':       goto yy23;
        case 'm':       goto yy24;
        case 'r':       goto yy25;
-       case 't':       goto yy26;
-       case 'u':       goto yy27;
+       case 's':       goto yy26;
+       case 't':       goto yy27;
+       case 'u':       goto yy28;
        default:        goto yy13;
        }
 yy21:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy28;
+       if (yych == 'n') goto yy29;
        goto yy13;
 yy22:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy29;
+       if (yych == 'e') goto yy30;
        goto yy13;
 yy23:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy30;
+       if (yych == 'g') goto yy31;
        goto yy13;
 yy24:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy31;
+       if (yych == 'a') goto yy32;
+       if (yych == 't') goto yy33;
        goto yy13;
 yy25:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy32;
-       if (yych == 'u') goto yy33;
+       if (yych == 'e') goto yy34;
+       if (yych == 'u') goto yy35;
        goto yy13;
 yy26:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy34;
-       if (yych == 'y') goto yy35;
+       if (yych == 't') goto yy36;
        goto yy13;
 yy27:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy36;
+       if (yych == 'y') goto yy37;
        goto yy13;
 yy28:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy37;
+       if (yych == 's') goto yy38;
        goto yy13;
 yy29:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy38;
+       if (yych == 'e') goto yy39;
        goto yy13;
 yy30:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy39;
+       if (yych == 't') goto yy40;
        goto yy13;
 yy31:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'x') goto yy40;
+       if (yych == 'n') goto yy41;
        goto yy13;
 yy32:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy41;
+       if (yych == 'x') goto yy42;
        goto yy13;
 yy33:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy42;
+       if (yych == 'a') goto yy43;
        goto yy13;
 yy34:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy43;
+       if (yych == '2') goto yy44;
        goto yy13;
 yy35:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy44;
+       if (yych == 'l') goto yy45;
        goto yy13;
 yy36:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy45;
+       if (yych == 'a') goto yy46;
        goto yy13;
 yy37:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy47;
-       if (yych <= '9') goto yy13;
-       goto yy47;
+       if (yych == 'p') goto yy47;
+       goto yy13;
 yy38:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy48;
+       if (yych == 'e') goto yy48;
        goto yy13;
 yy39:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy49;
-       goto yy13;
+       if (yych <= '0') goto yy50;
+       if (yych <= '9') goto yy13;
+       goto yy50;
 yy40:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy50;
+       if (yych == 's') goto yy51;
        goto yy13;
 yy41:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy16;
+       if (yych == 'o') goto yy52;
        goto yy13;
 yy42:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy51;
+       if (yych == ':') goto yy53;
        goto yy13;
 yy43:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy52;
-       if (yych == 's') goto yy53;
+       if (yych == 'g') goto yy54;
        goto yy13;
 yy44:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy54;
+       if (yych == 'c') goto yy16;
        goto yy13;
 yy45:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy55;
+       if (yych == 'e') goto yy55;
        goto yy13;
 yy46:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'g') goto yy56;
+       goto yy13;
+yy47:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy57;
+       goto yy13;
+yy48:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == ':') goto yy58;
+       goto yy13;
+yy49:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy47:
+yy50:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy46;
+               if (yych == '\t') goto yy49;
                goto yy13;
        } else {
-               if (yych <= ' ') goto yy46;
+               if (yych <= ' ') goto yy49;
                if (yych <= '0') goto yy13;
                if (yych <= '9') {
                        YYCTXMARKER = YYCURSOR;
-                       goto yy56;
+                       goto yy59;
                }
                goto yy13;
        }
-yy48:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy58;
-       goto yy13;
-yy49:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy59;
-       goto yy13;
-yy50:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy60;
-       goto yy13;
 yy51:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy61;
+       if (yych == 't') goto yy61;
        goto yy13;
 yy52:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy62;
+       if (yych == 'r') goto yy62;
        goto yy13;
 yy53:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy63;
+       if (yych == 'r') goto yy63;
        goto yy13;
 yy54:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -355,48 +355,48 @@ yy54:
        goto yy13;
 yy55:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy65;
+       if (yych == 's') goto yy65;
        goto yy13;
 yy56:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 's') goto yy66;
+       goto yy13;
+yy57:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 's') goto yy67;
+       goto yy13;
+yy58:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'r') goto yy68;
+       goto yy13;
+yy59:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy56;
+               goto yy59;
        }
        if (yych <= '\f') {
                if (yych <= 0x08) goto yy13;
-               if (yych <= '\t') goto yy66;
-               if (yych <= '\n') goto yy68;
+               if (yych <= '\t') goto yy69;
+               if (yych <= '\n') goto yy71;
                goto yy13;
        } else {
-               if (yych <= '\r') goto yy70;
-               if (yych == ' ') goto yy66;
+               if (yych <= '\r') goto yy73;
+               if (yych == ' ') goto yy69;
                goto yy13;
        }
-yy58:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy71;
-       goto yy13;
-yy59:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy72;
-       goto yy13;
-yy60:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy73;
-       goto yy13;
 yy61:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy74;
+       if (yych == 'a') goto yy74;
        goto yy13;
 yy62:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy75;
+       if (yych == 'e') goto yy75;
        goto yy13;
 yy63:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy76;
+       if (yych == 'e') goto yy76;
        goto yy13;
 yy64:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -404,21 +404,33 @@ yy64:
        goto yy13;
 yy65:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy78;
+       if (yych == ':') goto yy78;
        goto yy13;
 yy66:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == ':') goto yy79;
+       goto yy13;
+yy67:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == ':') goto yy80;
+       goto yy13;
+yy68:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy81;
+       goto yy13;
+yy69:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy66;
+               if (yych == '\t') goto yy69;
                goto yy13;
        } else {
-               if (yych <= ' ') goto yy66;
-               if (yych == '"') goto yy79;
+               if (yych <= ' ') goto yy69;
+               if (yych == '"') goto yy82;
                goto yy13;
        }
-yy68:
+yy71:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 133 "../src/ast/lex.re"
@@ -426,34 +438,22 @@ yy68:
                set_sourceline();
                goto echo;
        }
-#line 430 "src/ast/lex.cc"
-yy70:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy68;
-       goto yy13;
-yy71:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy81;
-       goto yy13;
-yy72:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy82;
-       goto yy13;
+#line 442 "src/ast/lex.cc"
 yy73:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy83;
+       if (yych == '\n') goto yy71;
        goto yy13;
 yy74:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy84;
+       if (yych == 't') goto yy84;
        goto yy13;
 yy75:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy85;
+       if (yych == ':') goto yy85;
        goto yy13;
 yy76:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy86;
+       if (yych == '2') goto yy86;
        goto yy13;
 yy77:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -461,41 +461,41 @@ yy77:
        goto yy13;
 yy78:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy88;
+       if (yych == 'r') goto yy88;
        goto yy13;
 yy79:
-       ++YYCURSOR;
-       if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = (YYCTYPE)*YYCURSOR;
-       if (yybm[0+yych] & 128) {
-               goto yy79;
-       }
-       if (yych <= '\n') goto yy13;
-       if (yych <= '"') goto yy89;
-       goto yy90;
-yy81:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy91;
+       if (yych == 'r') goto yy89;
        goto yy13;
-yy82:
+yy80:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy92;
+       if (yych == 'r') goto yy90;
        goto yy13;
-yy83:
+yy81:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy93;
+       if (yych == '2') goto yy91;
        goto yy13;
+yy82:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+       yych = (YYCTYPE)*YYCURSOR;
+       if (yybm[0+yych] & 128) {
+               goto yy82;
+       }
+       if (yych <= '\n') goto yy13;
+       if (yych <= '"') goto yy92;
+       goto yy93;
 yy84:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy95;
+       if (yych == 'e') goto yy94;
        goto yy13;
 yy85:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy96;
+       if (yych == 'r') goto yy95;
        goto yy13;
 yy86:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy97;
+       if (yych == 'c') goto yy96;
        goto yy13;
 yy87:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -503,28 +503,40 @@ yy87:
        goto yy13;
 yy88:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy99;
+       if (yych == 'e') goto yy99;
        goto yy13;
 yy89:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy68;
-       if (yych == '\r') goto yy70;
+       if (yych == 'e') goto yy100;
        goto yy13;
 yy90:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy101;
+       goto yy13;
+yy91:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'c') goto yy102;
+       goto yy13;
+yy92:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '\n') goto yy71;
+       if (yych == '\r') goto yy73;
+       goto yy13;
+yy93:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy13;
-       goto yy79;
-yy91:
+       goto yy82;
+yy94:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy101;
+       if (yych == ':') goto yy104;
        goto yy13;
-yy92:
+yy95:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy102;
+       if (yych == 'e') goto yy105;
        goto yy13;
-yy93:
+yy96:
        ++YYCURSOR;
 #line 92 "../src/ast/lex.re"
        {
@@ -533,81 +545,90 @@ yy93:
                lex_end_of_comment(out);
                goto echo;
        }
-#line 537 "src/ast/lex.cc"
-yy95:
+#line 549 "src/ast/lex.cc"
+yy98:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy103;
+       if (yych == '2') goto yy106;
        goto yy13;
-yy96:
+yy99:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy104;
+       if (yych == '2') goto yy107;
        goto yy13;
-yy97:
+yy100:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy105;
+       if (yych == '2') goto yy108;
        goto yy13;
-yy98:
+yy101:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy107;
+       if (yych == '2') goto yy109;
        goto yy13;
-yy99:
+yy102:
        ++YYCURSOR;
 #line 81 "../src/ast/lex.re"
        {
                out.wraw(tok, ptr);
                return Reuse;
        }
-#line 561 "src/ast/lex.cc"
-yy101:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy108;
-       goto yy13;
-yy102:
+#line 573 "src/ast/lex.cc"
+yy104:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy109;
+       if (yych == 'r') goto yy110;
        goto yy13;
-yy103:
+yy105:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy110;
+       if (yych == '2') goto yy111;
        goto yy13;
-yy104:
+yy106:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy112;
+       if (yych == 'c') goto yy112;
        goto yy13;
-yy105:
-       ++YYCURSOR;
-#line 115 "../src/ast/lex.re"
-       {
-               out.wraw(tok, ptr);
-               lex_tags(out, false);
-               goto echo;
-       }
-#line 586 "src/ast/lex.cc"
 yy107:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy113;
+       if (yych == 'c') goto yy114;
        goto yy13;
 yy108:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy115;
+       if (yych == 'c') goto yy116;
        goto yy13;
 yy109:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy116;
+       if (yych == 'c') goto yy118;
        goto yy13;
 yy110:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy120;
+       goto yy13;
+yy111:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'c') goto yy121;
+       goto yy13;
+yy112:
+       ++YYCURSOR;
+#line 121 "../src/ast/lex.re"
+       {
+               out.wraw(tok, ptr);
+               lex_tags(out, true);
+               goto echo;
+       }
+#line 614 "src/ast/lex.cc"
+yy114:
        ++YYCURSOR;
 #line 76 "../src/ast/lex.re"
        {
                out.wraw(tok, ptr);
                return Rules;
        }
-#line 606 "src/ast/lex.cc"
-yy112:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy118;
-       goto yy13;
-yy113:
+#line 622 "src/ast/lex.cc"
+yy116:
+       ++YYCURSOR;
+#line 115 "../src/ast/lex.re"
+       {
+               out.wraw(tok, ptr);
+               lex_tags(out, false);
+               goto echo;
+       }
+#line 631 "src/ast/lex.cc"
+yy118:
        ++YYCURSOR;
 #line 106 "../src/ast/lex.re"
        {
@@ -618,12 +639,12 @@ yy113:
                lex_end_of_comment(out);
                goto echo;
        }
-#line 622 "src/ast/lex.cc"
-yy115:
+#line 643 "src/ast/lex.cc"
+yy120:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy119;
+       if (yych == '2') goto yy123;
        goto yy13;
-yy116:
+yy121:
        ++YYCURSOR;
 #line 86 "../src/ast/lex.re"
        {
@@ -631,20 +652,10 @@ yy116:
                lex_end_of_comment(out);
                goto echo;
        }
-#line 635 "src/ast/lex.cc"
-yy118:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy120;
-       goto yy13;
-yy119:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy121;
-       goto yy13;
-yy120:
+#line 656 "src/ast/lex.cc"
+yy123:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy123;
-       goto yy13;
-yy121:
+       if (yych != 'c') goto yy13;
        ++YYCURSOR;
 #line 99 "../src/ast/lex.re"
        {
@@ -653,16 +664,7 @@ yy121:
                lex_end_of_comment(out);
                goto echo;
        }
-#line 657 "src/ast/lex.cc"
-yy123:
-       ++YYCURSOR;
-#line 121 "../src/ast/lex.re"
-       {
-               out.wraw(tok, ptr);
-               lex_tags(out, true);
-               goto echo;
-       }
-#line 666 "src/ast/lex.cc"
+#line 668 "src/ast/lex.cc"
 }
 #line 145 "../src/ast/lex.re"
 
@@ -672,43 +674,43 @@ void Scanner::lex_end_of_comment(OutputFile &out)
 {
        uint32_t ignored = 0;
        for (;;) {
-#line 676 "src/ast/lex.cc"
+#line 678 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '\f') {
-               if (yych <= 0x00) goto yy127;
-               if (yych == '\n') goto yy131;
-               goto yy129;
+               if (yych <= 0x00) goto yy128;
+               if (yych == '\n') goto yy132;
+               goto yy130;
        } else {
-               if (yych <= '\r') goto yy133;
-               if (yych == '*') goto yy134;
-               goto yy129;
+               if (yych <= '\r') goto yy134;
+               if (yych == '*') goto yy135;
+               goto yy130;
        }
-yy127:
+yy128:
        ++YYCURSOR;
 #line 152 "../src/ast/lex.re"
        { fatal("expected end of block"); }
-#line 694 "src/ast/lex.cc"
-yy129:
-       ++YYCURSOR;
+#line 696 "src/ast/lex.cc"
 yy130:
+       ++YYCURSOR;
+yy131:
 #line 154 "../src/ast/lex.re"
        { continue; }
-#line 700 "src/ast/lex.cc"
-yy131:
+#line 702 "src/ast/lex.cc"
+yy132:
        ++YYCURSOR;
 #line 155 "../src/ast/lex.re"
        { ++ignored; continue; }
-#line 705 "src/ast/lex.cc"
-yy133:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy131;
-       goto yy130;
+#line 707 "src/ast/lex.cc"
 yy134:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '/') goto yy130;
+       if (yych == '\n') goto yy132;
+       goto yy131;
+yy135:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != '/') goto yy131;
        ++YYCURSOR;
 #line 156 "../src/ast/lex.re"
        {
@@ -719,17 +721,17 @@ yy134:
                        tok = pos = cur;
                        return;
                }
-#line 723 "src/ast/lex.cc"
+#line 725 "src/ast/lex.cc"
 }
 #line 164 "../src/ast/lex.re"
 }
 }
 
-void Scanner::lex_tags(OutputFile &out, bool lists)
+void Scanner::lex_tags(OutputFile &out, bool mtags)
 {
        std::string fmt, sep;
        for (;;) {
-#line 733 "src/ast/lex.cc"
+#line 735 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -769,117 +771,117 @@ void Scanner::lex_tags(OutputFile &out, bool lists)
        if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy141;
+               goto yy142;
        }
        if (yych <= ')') {
                if (yych <= '\n') {
-                       if (yych >= '\t') goto yy144;
+                       if (yych >= '\t') goto yy145;
                } else {
-                       if (yych == '\r') goto yy146;
+                       if (yych == '\r') goto yy147;
                }
        } else {
                if (yych <= 'f') {
-                       if (yych <= '*') goto yy147;
-                       if (yych >= 'f') goto yy148;
+                       if (yych <= '*') goto yy148;
+                       if (yych >= 'f') goto yy149;
                } else {
-                       if (yych == 's') goto yy149;
+                       if (yych == 's') goto yy150;
                }
        }
        ++YYCURSOR;
-yy140:
+yy141:
 #line 171 "../src/ast/lex.re"
        { fatal("unrecognized configuration"); }
-#line 793 "src/ast/lex.cc"
-yy141:
+#line 795 "src/ast/lex.cc"
+yy142:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy141;
+               goto yy142;
        }
 #line 176 "../src/ast/lex.re"
        { continue; }
-#line 803 "src/ast/lex.cc"
-yy144:
+#line 805 "src/ast/lex.cc"
+yy145:
        ++YYCURSOR;
 #line 177 "../src/ast/lex.re"
        { ++cline; continue; }
-#line 808 "src/ast/lex.cc"
-yy146:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy144;
-       goto yy140;
+#line 810 "src/ast/lex.cc"
 yy147:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '/') goto yy150;
-       goto yy140;
+       if (yych == '\n') goto yy145;
+       goto yy141;
 yy148:
-       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'o') goto yy152;
-       goto yy140;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '/') goto yy151;
+       goto yy141;
 yy149:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy154;
-       goto yy140;
+       if (yych == 'o') goto yy153;
+       goto yy141;
 yy150:
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == 'e') goto yy155;
+       goto yy141;
+yy151:
        ++YYCURSOR;
 #line 178 "../src/ast/lex.re"
        {
-                       out.wdelay_tags(new ConfTags(fmt, sep), lists);
+                       out.wdelay_tags(new ConfTags(fmt, sep), mtags);
                        tok = pos = cur;
                        return;
                }
-#line 833 "src/ast/lex.cc"
-yy152:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy155;
+#line 835 "src/ast/lex.cc"
 yy153:
-       YYCURSOR = YYMARKER;
-       goto yy140;
-yy154:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy156;
-       goto yy153;
+       if (yych == 'r') goto yy156;
+yy154:
+       YYCURSOR = YYMARKER;
+       goto yy141;
 yy155:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy157;
-       goto yy153;
+       if (yych == 'p') goto yy157;
+       goto yy154;
 yy156:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy158;
-       goto yy153;
+       if (yych == 'm') goto yy158;
+       goto yy154;
 yy157:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'a') goto yy159;
-       goto yy153;
+       goto yy154;
 yy158:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy160;
-       goto yy153;
+       if (yych == 'a') goto yy160;
+       goto yy154;
 yy159:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy161;
-       goto yy153;
+       if (yych == 'r') goto yy161;
+       goto yy154;
 yy160:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy163;
-       goto yy153;
+       if (yych == 't') goto yy162;
+       goto yy154;
 yy161:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'a') goto yy164;
+       goto yy154;
+yy162:
        ++YYCURSOR;
 #line 173 "../src/ast/lex.re"
        { fmt = lex_conf_string(); continue; }
-#line 872 "src/ast/lex.cc"
-yy163:
+#line 874 "src/ast/lex.cc"
+yy164:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy153;
+       if (yych != 't') goto yy154;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy153;
+       if (yych != 'o') goto yy154;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy153;
+       if (yych != 'r') goto yy154;
        ++YYCURSOR;
 #line 174 "../src/ast/lex.re"
        { sep = lex_conf_string(); continue; }
-#line 883 "src/ast/lex.cc"
+#line 885 "src/ast/lex.cc"
 }
 #line 183 "../src/ast/lex.re"
 }
@@ -892,7 +894,7 @@ scan:
        tchar = cur - pos;
        tok = cur;
 
-#line 896 "src/ast/lex.cc"
+#line 898 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -933,93 +935,93 @@ scan:
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
-               goto yy172;
+               goto yy173;
        }
        if (yych <= '.') {
                if (yych <= '#') {
                        if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy170;
-                               if (yych <= '\n') goto yy175;
-                               if (yych >= '\r') goto yy177;
+                               if (yych <= 0x08) goto yy171;
+                               if (yych <= '\n') goto yy176;
+                               if (yych >= '\r') goto yy178;
                        } else {
-                               if (yych <= 0x1F) goto yy170;
-                               if (yych <= '!') goto yy178;
-                               if (yych <= '"') goto yy180;
-                               goto yy182;
+                               if (yych <= 0x1F) goto yy171;
+                               if (yych <= '!') goto yy179;
+                               if (yych <= '"') goto yy181;
+                               goto yy183;
                        }
                } else {
                        if (yych <= '\'') {
-                               if (yych == '%') goto yy183;
-                               if (yych >= '\'') goto yy184;
+                               if (yych == '%') goto yy184;
+                               if (yych >= '\'') goto yy185;
                        } else {
                                if (yych <= '*') {
-                                       if (yych <= ')') goto yy178;
-                                       goto yy186;
+                                       if (yych <= ')') goto yy179;
+                                       goto yy187;
                                } else {
-                                       if (yych <= ',') goto yy178;
-                                       if (yych >= '.') goto yy187;
+                                       if (yych <= ',') goto yy179;
+                                       if (yych >= '.') goto yy188;
                                }
                        }
                }
        } else {
                if (yych <= '\\') {
                        if (yych <= '?') {
-                               if (yych <= '/') goto yy189;
-                               if (yych <= '9') goto yy190;
-                               if (yych <= ':') goto yy192;
-                               goto yy178;
+                               if (yych <= '/') goto yy190;
+                               if (yych <= '9') goto yy191;
+                               if (yych <= ':') goto yy193;
+                               goto yy179;
                        } else {
-                               if (yych <= '@') goto yy182;
-                               if (yych <= 'Z') goto yy190;
-                               if (yych <= '[') goto yy193;
-                               goto yy178;
+                               if (yych <= '@') goto yy183;
+                               if (yych <= 'Z') goto yy191;
+                               if (yych <= '[') goto yy194;
+                               goto yy179;
                        }
                } else {
                        if (yych <= 'q') {
-                               if (yych == '_') goto yy190;
-                               if (yych >= 'a') goto yy190;
+                               if (yych == '_') goto yy191;
+                               if (yych >= 'a') goto yy191;
                        } else {
                                if (yych <= 'z') {
-                                       if (yych <= 'r') goto yy195;
-                                       goto yy190;
+                                       if (yych <= 'r') goto yy196;
+                                       goto yy191;
                                } else {
-                                       if (yych <= '{') goto yy196;
-                                       if (yych <= '|') goto yy178;
+                                       if (yych <= '{') goto yy197;
+                                       if (yych <= '|') goto yy179;
                                }
                        }
                }
        }
-yy170:
-       ++YYCURSOR;
 yy171:
+       ++YYCURSOR;
+yy172:
 #line 343 "../src/ast/lex.re"
        {
                                        fatalf("unexpected character: '%c'", *tok);
                                        goto scan;
                                }
-#line 1001 "src/ast/lex.cc"
-yy172:
+#line 1003 "src/ast/lex.cc"
+yy173:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
-               goto yy172;
+               goto yy173;
        }
 #line 322 "../src/ast/lex.re"
        {
                                        goto scan;
                                }
-#line 1013 "src/ast/lex.cc"
-yy175:
+#line 1015 "src/ast/lex.cc"
+yy176:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy198;
+               if (yych == '\t') goto yy199;
        } else {
-               if (yych <= ' ') goto yy198;
-               if (yych == '#') goto yy201;
+               if (yych <= ' ') goto yy199;
+               if (yych == '#') goto yy202;
        }
-yy176:
+yy177:
 #line 331 "../src/ast/lex.re"
        {
                if (cur == eof) return 0;
@@ -1032,215 +1034,215 @@ yy176:
                        goto scan;
                }
        }
-#line 1036 "src/ast/lex.cc"
-yy177:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy175;
-       goto yy171;
+#line 1038 "src/ast/lex.cc"
 yy178:
-       ++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '\n') goto yy176;
+       goto yy172;
 yy179:
+       ++YYCURSOR;
+yy180:
 #line 235 "../src/ast/lex.re"
        { return *tok; }
-#line 1046 "src/ast/lex.cc"
-yy180:
+#line 1048 "src/ast/lex.cc"
+yy181:
        ++YYCURSOR;
 #line 225 "../src/ast/lex.re"
        { yylval.regexp = lex_str('"'); return TOKEN_REGEXP; }
-#line 1051 "src/ast/lex.cc"
-yy182:
+#line 1053 "src/ast/lex.cc"
+yy183:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 'Z') {
-               if (yych <= '/') goto yy171;
-               if (yych <= '9') goto yy203;
-               if (yych <= '@') goto yy171;
-               goto yy203;
+               if (yych <= '/') goto yy172;
+               if (yych <= '9') goto yy204;
+               if (yych <= '@') goto yy172;
+               goto yy204;
        } else {
                if (yych <= '_') {
-                       if (yych <= '^') goto yy171;
-                       goto yy203;
+                       if (yych <= '^') goto yy172;
+                       goto yy204;
                } else {
-                       if (yych <= '`') goto yy171;
-                       if (yych <= 'z') goto yy203;
-                       goto yy171;
+                       if (yych <= '`') goto yy172;
+                       if (yych <= 'z') goto yy204;
+                       goto yy172;
                }
        }
-yy183:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '}') goto yy206;
-       goto yy171;
 yy184:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '}') goto yy207;
+       goto yy172;
+yy185:
        ++YYCURSOR;
 #line 224 "../src/ast/lex.re"
        { yylval.regexp = lex_str('\''); return TOKEN_REGEXP; }
-#line 1077 "src/ast/lex.cc"
-yy186:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '/') goto yy206;
-       goto yy179;
+#line 1079 "src/ast/lex.cc"
 yy187:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '/') goto yy207;
+       goto yy180;
+yy188:
        ++YYCURSOR;
 #line 317 "../src/ast/lex.re"
        {
                                        yylval.regexp = ast_dot(cline, get_column());
                                        return TOKEN_REGEXP;
                                }
-#line 1089 "src/ast/lex.cc"
-yy189:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '*') goto yy208;
-       if (yych == '/') goto yy210;
-       goto yy179;
+#line 1091 "src/ast/lex.cc"
 yy190:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '*') goto yy209;
+       if (yych == '/') goto yy211;
+       goto yy180;
+yy191:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy191:
+yy192:
        if (yybm[0+yych] & 32) {
-               goto yy190;
+               goto yy191;
        }
        if (yych <= ' ') {
                if (yych == '\t') {
                        YYCTXMARKER = YYCURSOR;
-                       goto yy214;
+                       goto yy215;
                }
-               if (yych <= 0x1F) goto yy212;
+               if (yych <= 0x1F) goto yy213;
                YYCTXMARKER = YYCURSOR;
-               goto yy214;
+               goto yy215;
        } else {
                if (yych <= ',') {
-                       if (yych <= '+') goto yy212;
+                       if (yych <= '+') goto yy213;
                        YYCTXMARKER = YYCURSOR;
-                       goto yy216;
+                       goto yy217;
                } else {
-                       if (yych <= '<') goto yy212;
+                       if (yych <= '<') goto yy213;
                        if (yych <= '>') {
                                YYCTXMARKER = YYCURSOR;
-                               goto yy216;
+                               goto yy217;
                        }
-                       goto yy212;
+                       goto yy213;
                }
        }
-yy192:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '=') goto yy218;
-       goto yy171;
 yy193:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '^') goto yy220;
+       if (yych == '=') goto yy219;
+       goto yy172;
+yy194:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '^') goto yy221;
 #line 226 "../src/ast/lex.re"
        { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
-#line 1134 "src/ast/lex.cc"
-yy195:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy222;
-       goto yy191;
+#line 1136 "src/ast/lex.cc"
 yy196:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy223;
+       goto yy192;
+yy197:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 64) {
-               goto yy225;
+               goto yy226;
        }
        if (yych <= 'Z') {
-               if (yych == ',') goto yy223;
-               if (yych >= 'A') goto yy227;
+               if (yych == ',') goto yy224;
+               if (yych >= 'A') goto yy228;
        } else {
                if (yych <= '_') {
-                       if (yych >= '_') goto yy227;
+                       if (yych >= '_') goto yy228;
                } else {
-                       if (yych <= '`') goto yy197;
-                       if (yych <= 'z') goto yy227;
+                       if (yych <= '`') goto yy198;
+                       if (yych <= 'z') goto yy228;
                }
        }
-yy197:
+yy198:
 #line 193 "../src/ast/lex.re"
        {
                                        depth = 1;
                                        code_line = cline;
                                        goto code;
                                }
-#line 1163 "src/ast/lex.cc"
-yy198:
+#line 1165 "src/ast/lex.cc"
+yy199:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy198;
+               if (yych == '\t') goto yy199;
        } else {
-               if (yych <= ' ') goto yy198;
-               if (yych == '#') goto yy201;
+               if (yych <= ' ') goto yy199;
+               if (yych == '#') goto yy202;
        }
-yy200:
+yy201:
        YYCURSOR = YYMARKER;
        if (yyaccept <= 1) {
                if (yyaccept == 0) {
-                       goto yy176;
+                       goto yy177;
                } else {
-                       goto yy197;
+                       goto yy198;
                }
        } else {
-               goto yy224;
+               goto yy225;
        }
-yy201:
+yy202:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy201;
-               goto yy200;
+               if (yych == '\t') goto yy202;
+               goto yy201;
        } else {
-               if (yych <= ' ') goto yy201;
-               if (yych == 'l') goto yy229;
-               goto yy200;
+               if (yych <= ' ') goto yy202;
+               if (yych == 'l') goto yy230;
+               goto yy201;
        }
-yy203:
+yy204:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'Z') {
-               if (yych <= '/') goto yy205;
-               if (yych <= '9') goto yy203;
-               if (yych >= 'A') goto yy203;
+               if (yych <= '/') goto yy206;
+               if (yych <= '9') goto yy204;
+               if (yych >= 'A') goto yy204;
        } else {
                if (yych <= '_') {
-                       if (yych >= '_') goto yy203;
+                       if (yych >= '_') goto yy204;
                } else {
-                       if (yych <= '`') goto yy205;
-                       if (yych <= 'z') goto yy203;
+                       if (yych <= '`') goto yy206;
+                       if (yych <= 'z') goto yy204;
                }
        }
-yy205:
+yy206:
 #line 229 "../src/ast/lex.re"
        {
                const std::string *name = new std::string(tok + 1, tok_len() - 1);
                yylval.regexp = ast_tag(cline, get_column(), name, tok[0] == '#');
                return TOKEN_REGEXP;
        }
-#line 1220 "src/ast/lex.cc"
-yy206:
+#line 1222 "src/ast/lex.cc"
+yy207:
        ++YYCURSOR;
 #line 219 "../src/ast/lex.re"
        {
                                        tok = cur;
                                        return 0;
                                }
-#line 1228 "src/ast/lex.cc"
-yy208:
+#line 1230 "src/ast/lex.cc"
+yy209:
        ++YYCURSOR;
 #line 213 "../src/ast/lex.re"
        {
                                        depth = 1;
                                        goto comment;
                                }
-#line 1236 "src/ast/lex.cc"
-yy210:
+#line 1238 "src/ast/lex.cc"
+yy211:
        ++YYCURSOR;
 #line 210 "../src/ast/lex.re"
        {
                                goto nextLine;
                        }
-#line 1243 "src/ast/lex.cc"
-yy212:
+#line 1245 "src/ast/lex.cc"
+yy213:
        ++YYCURSOR;
        YYCURSOR -= 1;
 #line 300 "../src/ast/lex.re"
@@ -1260,24 +1262,24 @@ yy212:
                                                return TOKEN_REGEXP;
                                        }
                                }
-#line 1264 "src/ast/lex.cc"
-yy214:
+#line 1266 "src/ast/lex.cc"
+yy215:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= ' ') {
-               if (yych == '\t') goto yy214;
-               if (yych <= 0x1F) goto yy230;
-               goto yy214;
+               if (yych == '\t') goto yy215;
+               if (yych <= 0x1F) goto yy231;
+               goto yy215;
        } else {
                if (yych <= ',') {
-                       if (yych <= '+') goto yy230;
+                       if (yych <= '+') goto yy231;
                } else {
-                       if (yych <= '<') goto yy230;
-                       if (yych >= '?') goto yy230;
+                       if (yych <= '<') goto yy231;
+                       if (yych >= '?') goto yy231;
                }
        }
-yy216:
+yy217:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 295 "../src/ast/lex.re"
@@ -1285,10 +1287,10 @@ yy216:
                                        yylval.str = new std::string (tok, tok_len ());
                                        return TOKEN_ID;
                                }
-#line 1289 "src/ast/lex.cc"
-yy218:
+#line 1291 "src/ast/lex.cc"
+yy219:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '>') goto yy232;
+       if (yych == '>') goto yy233;
 #line 203 "../src/ast/lex.re"
        {
                                        tok += 2; /* skip ":=" */
@@ -1296,74 +1298,74 @@ yy218:
                                        code_line = cline;
                                        goto code;
                                }
-#line 1300 "src/ast/lex.cc"
-yy220:
+#line 1302 "src/ast/lex.cc"
+yy221:
        ++YYCURSOR;
 #line 227 "../src/ast/lex.re"
        { yylval.regexp = lex_cls(true);  return TOKEN_REGEXP; }
-#line 1305 "src/ast/lex.cc"
-yy222:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy234;
-       goto yy191;
+#line 1307 "src/ast/lex.cc"
 yy223:
-       ++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '2') goto yy235;
+       goto yy192;
 yy224:
+       ++YYCURSOR;
+yy225:
 #line 268 "../src/ast/lex.re"
        {
                                        fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
                                }
-#line 1317 "src/ast/lex.cc"
-yy225:
+#line 1319 "src/ast/lex.cc"
+yy226:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy225;
+               goto yy226;
        }
        if (yych <= '^') {
                if (yych <= ',') {
-                       if (yych <= '+') goto yy200;
-                       goto yy235;
+                       if (yych <= '+') goto yy201;
+                       goto yy236;
                } else {
-                       if (yych <= '@') goto yy200;
-                       if (yych >= '[') goto yy200;
+                       if (yych <= '@') goto yy201;
+                       if (yych >= '[') goto yy201;
                }
        } else {
                if (yych <= 'z') {
-                       if (yych == '`') goto yy200;
+                       if (yych == '`') goto yy201;
                } else {
-                       if (yych == '}') goto yy236;
-                       goto yy200;
+                       if (yych == '}') goto yy237;
+                       goto yy201;
                }
        }
-yy227:
+yy228:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '^') {
                if (yych <= '9') {
-                       if (yych <= '/') goto yy200;
-                       goto yy227;
+                       if (yych <= '/') goto yy201;
+                       goto yy228;
                } else {
-                       if (yych <= '@') goto yy200;
-                       if (yych <= 'Z') goto yy227;
-                       goto yy200;
+                       if (yych <= '@') goto yy201;
+                       if (yych <= 'Z') goto yy228;
+                       goto yy201;
                }
        } else {
                if (yych <= 'z') {
-                       if (yych == '`') goto yy200;
-                       goto yy227;
+                       if (yych == '`') goto yy201;
+                       goto yy228;
                } else {
-                       if (yych == '}') goto yy238;
-                       goto yy200;
+                       if (yych == '}') goto yy239;
+                       goto yy201;
                }
        }
-yy229:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy240;
-       goto yy200;
 yy230:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy241;
+       goto yy201;
+yy231:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 282 "../src/ast/lex.re"
@@ -1379,27 +1381,27 @@ yy230:
                                                return TOKEN_ID;
                                        }
                                }
-#line 1383 "src/ast/lex.cc"
-yy232:
+#line 1385 "src/ast/lex.cc"
+yy233:
        ++YYCURSOR;
        YYCURSOR -= 2;
 #line 199 "../src/ast/lex.re"
        {
                                        return *tok;
                                }
-#line 1391 "src/ast/lex.cc"
-yy234:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy241;
-       goto yy191;
+#line 1393 "src/ast/lex.cc"
 yy235:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'c') goto yy242;
+       goto yy192;
+yy236:
        yyaccept = 2;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy224;
-       if (yych <= '9') goto yy242;
-       if (yych == '}') goto yy244;
-       goto yy224;
-yy236:
+       if (yych <= '/') goto yy225;
+       if (yych <= '9') goto yy243;
+       if (yych == '}') goto yy245;
+       goto yy225;
+yy237:
        ++YYCURSOR;
 #line 237 "../src/ast/lex.re"
        {
@@ -1410,8 +1412,8 @@ yy236:
                                        yylval.bounds.max = yylval.bounds.min;
                                        return TOKEN_CLOSESIZE;
                                }
-#line 1414 "src/ast/lex.cc"
-yy238:
+#line 1416 "src/ast/lex.cc"
+yy239:
        ++YYCURSOR;
 #line 272 "../src/ast/lex.re"
        {
@@ -1421,24 +1423,24 @@ yy238:
                                        yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
                                        return TOKEN_ID;
                                }
-#line 1425 "src/ast/lex.cc"
-yy240:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy246;
-       goto yy200;
+#line 1427 "src/ast/lex.cc"
 yy241:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy247;
-       goto yy191;
+       if (yych == 'n') goto yy247;
+       goto yy201;
 yy242:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == ':') goto yy248;
+       goto yy192;
+yy243:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= '/') goto yy200;
-       if (yych <= '9') goto yy242;
-       if (yych == '}') goto yy249;
-       goto yy200;
-yy244:
+       if (yych <= '/') goto yy201;
+       if (yych <= '9') goto yy243;
+       if (yych == '}') goto yy250;
+       goto yy201;
+yy245:
        ++YYCURSOR;
 #line 259 "../src/ast/lex.re"
        {
@@ -1449,17 +1451,17 @@ yy244:
                                        yylval.bounds.max = std::numeric_limits<uint32_t>::max();
                                        return TOKEN_CLOSESIZE;
                                }
-#line 1453 "src/ast/lex.cc"
-yy246:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy251;
-       goto yy200;
+#line 1455 "src/ast/lex.cc"
 yy247:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy252;
+       goto yy201;
+yy248:
        ++YYCURSOR;
 #line 280 "../src/ast/lex.re"
        { return TOKEN_CONF; }
-#line 1462 "src/ast/lex.cc"
-yy249:
+#line 1464 "src/ast/lex.cc"
+yy250:
        ++YYCURSOR;
 #line 246 "../src/ast/lex.re"
        {
@@ -1474,60 +1476,60 @@ yy249:
                                        }
                                        return TOKEN_CLOSESIZE;
                                }
-#line 1478 "src/ast/lex.cc"
-yy251:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy253;
-       if (yych <= '9') goto yy200;
-       goto yy253;
+#line 1480 "src/ast/lex.cc"
 yy252:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= '0') goto yy254;
+       if (yych <= '9') goto yy201;
+       goto yy254;
+yy253:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy253:
+yy254:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy252;
-               goto yy200;
+               if (yych == '\t') goto yy253;
+               goto yy201;
        } else {
-               if (yych <= ' ') goto yy252;
-               if (yych <= '0') goto yy200;
-               if (yych >= ':') goto yy200;
+               if (yych <= ' ') goto yy253;
+               if (yych <= '0') goto yy201;
+               if (yych >= ':') goto yy201;
                YYCTXMARKER = YYCURSOR;
        }
-yy254:
+yy255:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
-                       if (yych <= 0x08) goto yy200;
+                       if (yych <= 0x08) goto yy201;
                } else {
-                       if (yych <= '\n') goto yy258;
-                       if (yych <= '\f') goto yy200;
-                       goto yy260;
+                       if (yych <= '\n') goto yy259;
+                       if (yych <= '\f') goto yy201;
+                       goto yy261;
                }
        } else {
                if (yych <= ' ') {
-                       if (yych <= 0x1F) goto yy200;
+                       if (yych <= 0x1F) goto yy201;
                } else {
-                       if (yych <= '/') goto yy200;
-                       if (yych <= '9') goto yy254;
-                       goto yy200;
+                       if (yych <= '/') goto yy201;
+                       if (yych <= '9') goto yy255;
+                       goto yy201;
                }
        }
-yy256:
+yy257:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy256;
-               goto yy200;
+               if (yych == '\t') goto yy257;
+               goto yy201;
        } else {
-               if (yych <= ' ') goto yy256;
-               if (yych == '"') goto yy261;
-               goto yy200;
+               if (yych <= ' ') goto yy257;
+               if (yych == '"') goto yy262;
+               goto yy201;
        }
-yy258:
+yy259:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 326 "../src/ast/lex.re"
@@ -1535,37 +1537,37 @@ yy258:
                set_sourceline ();
                return TOKEN_LINE_INFO;
        }
-#line 1539 "src/ast/lex.cc"
-yy260:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy258;
-       goto yy200;
+#line 1541 "src/ast/lex.cc"
 yy261:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '\n') goto yy259;
+       goto yy201;
+yy262:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy261;
+               goto yy262;
        }
-       if (yych <= '\n') goto yy200;
-       if (yych >= '#') goto yy264;
+       if (yych <= '\n') goto yy201;
+       if (yych >= '#') goto yy265;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy258;
-       if (yych == '\r') goto yy260;
-       goto yy200;
-yy264:
+       if (yych == '\n') goto yy259;
+       if (yych == '\r') goto yy261;
+       goto yy201;
+yy265:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy200;
-       goto yy261;
+       if (yych == '\n') goto yy201;
+       goto yy262;
 }
 #line 347 "../src/ast/lex.re"
 
 
 code:
 
-#line 1569 "src/ast/lex.cc"
+#line 1571 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1607,24 +1609,24 @@ code:
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '&') {
                if (yych <= '\n') {
-                       if (yych <= 0x00) goto yy267;
-                       if (yych <= '\t') goto yy269;
-                       goto yy271;
+                       if (yych <= 0x00) goto yy268;
+                       if (yych <= '\t') goto yy270;
+                       goto yy272;
                } else {
-                       if (yych == '"') goto yy273;
-                       goto yy269;
+                       if (yych == '"') goto yy274;
+                       goto yy270;
                }
        } else {
                if (yych <= '{') {
-                       if (yych <= '\'') goto yy274;
-                       if (yych <= 'z') goto yy269;
-                       goto yy275;
+                       if (yych <= '\'') goto yy275;
+                       if (yych <= 'z') goto yy270;
+                       goto yy276;
                } else {
-                       if (yych == '}') goto yy277;
-                       goto yy269;
+                       if (yych == '}') goto yy278;
+                       goto yy270;
                }
        }
-yy267:
+yy268:
        ++YYCURSOR;
 #line 410 "../src/ast/lex.re"
        {
@@ -1638,33 +1640,33 @@ yy267:
                                        }
                                        goto code;
                                }
-#line 1642 "src/ast/lex.cc"
-yy269:
-       ++YYCURSOR;
+#line 1644 "src/ast/lex.cc"
 yy270:
+       ++YYCURSOR;
+yy271:
 #line 424 "../src/ast/lex.re"
        {
                                        goto code;
                                }
-#line 1650 "src/ast/lex.cc"
-yy271:
+#line 1652 "src/ast/lex.cc"
+yy272:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '\r') {
                if (yych <= '\t') {
-                       if (yych >= '\t') goto yy279;
+                       if (yych >= '\t') goto yy280;
                } else {
-                       if (yych <= '\n') goto yy281;
-                       if (yych >= '\r') goto yy281;
+                       if (yych <= '\n') goto yy282;
+                       if (yych >= '\r') goto yy282;
                }
        } else {
                if (yych <= ' ') {
-                       if (yych >= ' ') goto yy279;
+                       if (yych >= ' ') goto yy280;
                } else {
-                       if (yych == '#') goto yy282;
+                       if (yych == '#') goto yy283;
                }
        }
-yy272:
+yy273:
 #line 391 "../src/ast/lex.re"
        {
                                        if (depth == 0)
@@ -1685,18 +1687,18 @@ yy272:
                                        cline++;
                                        goto code;
                                }
-#line 1689 "src/ast/lex.cc"
-yy273:
-       yyaccept = 1;
-       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '\n') goto yy270;
-       goto yy286;
+#line 1691 "src/ast/lex.cc"
 yy274:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '\n') goto yy270;
-       goto yy291;
+       if (yych == '\n') goto yy271;
+       goto yy287;
 yy275:
+       yyaccept = 1;
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == '\n') goto yy271;
+       goto yy292;
+yy276:
        ++YYCURSOR;
 #line 363 "../src/ast/lex.re"
        {
@@ -1710,8 +1712,8 @@ yy275:
                                        }
                                        goto code;
                                }
-#line 1714 "src/ast/lex.cc"
-yy277:
+#line 1716 "src/ast/lex.cc"
+yy278:
        ++YYCURSOR;
 #line 351 "../src/ast/lex.re"
        {
@@ -1726,17 +1728,17 @@ yy277:
                                        }
                                        goto code;
                                }
-#line 1730 "src/ast/lex.cc"
-yy279:
+#line 1732 "src/ast/lex.cc"
+yy280:
        yyaccept = 2;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy293;
+               if (yych == '\t') goto yy294;
        } else {
-               if (yych <= ' ') goto yy293;
-               if (yych == '#') goto yy282;
+               if (yych <= ' ') goto yy294;
+               if (yych == '#') goto yy283;
        }
-yy280:
+yy281:
        YYCURSOR -= 1;
 #line 378 "../src/ast/lex.re"
        {
@@ -1752,133 +1754,133 @@ yy280:
                                        cline++;
                                        goto code;
                                }
-#line 1756 "src/ast/lex.cc"
-yy281:
-       ++YYCURSOR;
-       goto yy280;
+#line 1758 "src/ast/lex.cc"
 yy282:
+       ++YYCURSOR;
+       goto yy281;
+yy283:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
-               goto yy282;
+               goto yy283;
        }
-       if (yych == 'l') goto yy295;
-yy284:
+       if (yych == 'l') goto yy296;
+yy285:
        YYCURSOR = YYMARKER;
        if (yyaccept <= 1) {
                if (yyaccept == 0) {
-                       goto yy272;
+                       goto yy273;
                } else {
-                       goto yy270;
+                       goto yy271;
                }
        } else {
-               goto yy280;
+               goto yy281;
        }
-yy285:
+yy286:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy286:
+yy287:
        if (yybm[0+yych] & 32) {
-               goto yy285;
+               goto yy286;
        }
-       if (yych <= '\n') goto yy284;
-       if (yych >= '#') goto yy289;
-yy287:
+       if (yych <= '\n') goto yy285;
+       if (yych >= '#') goto yy290;
+yy288:
        ++YYCURSOR;
 #line 421 "../src/ast/lex.re"
        {
                                        goto code;
                                }
-#line 1795 "src/ast/lex.cc"
-yy289:
+#line 1797 "src/ast/lex.cc"
+yy290:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy284;
-       goto yy285;
-yy290:
+       if (yych == '\n') goto yy285;
+       goto yy286;
+yy291:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy291:
+yy292:
        if (yybm[0+yych] & 64) {
-               goto yy290;
+               goto yy291;
        }
-       if (yych <= '\n') goto yy284;
-       if (yych <= '\'') goto yy287;
+       if (yych <= '\n') goto yy285;
+       if (yych <= '\'') goto yy288;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy284;
-       goto yy290;
-yy293:
+       if (yych == '\n') goto yy285;
+       goto yy291;
+yy294:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy293;
-               goto yy284;
+               if (yych == '\t') goto yy294;
+               goto yy285;
        } else {
-               if (yych <= ' ') goto yy293;
-               if (yych == '#') goto yy282;
-               goto yy284;
+               if (yych <= ' ') goto yy294;
+               if (yych == '#') goto yy283;
+               goto yy285;
        }
-yy295:
+yy296:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy284;
+       if (yych != 'i') goto yy285;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy284;
+       if (yych != 'n') goto yy285;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy284;
+       if (yych != 'e') goto yy285;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy300;
-       if (yych <= '9') goto yy284;
-       goto yy300;
-yy299:
+       if (yych <= '0') goto yy301;
+       if (yych <= '9') goto yy285;
+       goto yy301;
+yy300:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy300:
+yy301:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy299;
-               goto yy284;
+               if (yych == '\t') goto yy300;
+               goto yy285;
        } else {
-               if (yych <= ' ') goto yy299;
-               if (yych <= '0') goto yy284;
-               if (yych >= ':') goto yy284;
+               if (yych <= ' ') goto yy300;
+               if (yych <= '0') goto yy285;
+               if (yych >= ':') goto yy285;
                YYCTXMARKER = YYCURSOR;
        }
-yy301:
+yy302:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy301;
+               goto yy302;
        }
        if (yych <= '\f') {
-               if (yych <= 0x08) goto yy284;
-               if (yych <= '\t') goto yy303;
-               if (yych <= '\n') goto yy305;
-               goto yy284;
+               if (yych <= 0x08) goto yy285;
+               if (yych <= '\t') goto yy304;
+               if (yych <= '\n') goto yy306;
+               goto yy285;
        } else {
-               if (yych <= '\r') goto yy307;
-               if (yych != ' ') goto yy284;
+               if (yych <= '\r') goto yy308;
+               if (yych != ' ') goto yy285;
        }
-yy303:
+yy304:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy303;
-               goto yy284;
+               if (yych == '\t') goto yy304;
+               goto yy285;
        } else {
-               if (yych <= ' ') goto yy303;
-               if (yych == '"') goto yy308;
-               goto yy284;
+               if (yych <= ' ') goto yy304;
+               if (yych == '"') goto yy309;
+               goto yy285;
        }
-yy305:
+yy306:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 374 "../src/ast/lex.re"
@@ -1886,41 +1888,41 @@ yy305:
                                        set_sourceline ();
                                        goto code;
                                }
-#line 1890 "src/ast/lex.cc"
-yy307:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy305;
-       goto yy284;
+#line 1892 "src/ast/lex.cc"
 yy308:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '\n') goto yy306;
+       goto yy285;
+yy309:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
-               if (yych == '\n') goto yy284;
-               goto yy308;
+               if (yych == '\n') goto yy285;
+               goto yy309;
        } else {
-               if (yych <= '"') goto yy310;
-               if (yych == '\\') goto yy311;
-               goto yy308;
+               if (yych <= '"') goto yy311;
+               if (yych == '\\') goto yy312;
+               goto yy309;
        }
-yy310:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy305;
-       if (yych == '\r') goto yy307;
-       goto yy284;
 yy311:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '\n') goto yy306;
+       if (yych == '\r') goto yy308;
+       goto yy285;
+yy312:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy284;
-       goto yy308;
+       if (yych == '\n') goto yy285;
+       goto yy309;
 }
 #line 427 "../src/ast/lex.re"
 
 
 comment:
 
-#line 1924 "src/ast/lex.cc"
+#line 1926 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1960,13 +1962,13 @@ comment:
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= ')') {
-               if (yych == '\n') goto yy316;
+               if (yych == '\n') goto yy317;
        } else {
-               if (yych <= '*') goto yy318;
-               if (yych == '/') goto yy319;
+               if (yych <= '*') goto yy319;
+               if (yych == '/') goto yy320;
        }
        ++YYCURSOR;
-yy315:
+yy316:
 #line 459 "../src/ast/lex.re"
        {
                                        if (cur == eof)
@@ -1975,14 +1977,14 @@ yy315:
                                        }
                                        goto comment;
                                }
-#line 1979 "src/ast/lex.cc"
-yy316:
+#line 1981 "src/ast/lex.cc"
+yy317:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 32) {
-               goto yy320;
+               goto yy321;
        }
-       if (yych == '#') goto yy323;
-yy317:
+       if (yych == '#') goto yy324;
+yy318:
 #line 450 "../src/ast/lex.re"
        {
                                        if (cur == eof)
@@ -1993,39 +1995,39 @@ yy317:
                                        cline++;
                                        goto comment;
                                }
-#line 1997 "src/ast/lex.cc"
-yy318:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '/') goto yy325;
-       goto yy315;
+#line 1999 "src/ast/lex.cc"
 yy319:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '*') goto yy327;
-       goto yy315;
+       if (yych == '/') goto yy326;
+       goto yy316;
 yy320:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '*') goto yy328;
+       goto yy316;
+yy321:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 32) {
-               goto yy320;
+               goto yy321;
        }
-       if (yych == '#') goto yy323;
-yy322:
-       YYCURSOR = YYMARKER;
-       goto yy317;
+       if (yych == '#') goto yy324;
 yy323:
+       YYCURSOR = YYMARKER;
+       goto yy318;
+yy324:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy323;
-               goto yy322;
+               if (yych == '\t') goto yy324;
+               goto yy323;
        } else {
-               if (yych <= ' ') goto yy323;
-               if (yych == 'l') goto yy329;
-               goto yy322;
+               if (yych <= ' ') goto yy324;
+               if (yych == 'l') goto yy330;
+               goto yy323;
        }
-yy325:
+yy326:
        ++YYCURSOR;
 #line 431 "../src/ast/lex.re"
        {
@@ -2038,8 +2040,8 @@ yy325:
                                                goto comment;
                                        }
                                }
-#line 2042 "src/ast/lex.cc"
-yy327:
+#line 2044 "src/ast/lex.cc"
+yy328:
        ++YYCURSOR;
 #line 441 "../src/ast/lex.re"
        {
@@ -2047,61 +2049,61 @@ yy327:
                                        fatal("ambiguous /* found");
                                        goto comment;
                                }
-#line 2051 "src/ast/lex.cc"
-yy329:
+#line 2053 "src/ast/lex.cc"
+yy330:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy322;
+       if (yych != 'i') goto yy323;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy322;
+       if (yych != 'n') goto yy323;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy322;
+       if (yych != 'e') goto yy323;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy334;
-       if (yych <= '9') goto yy322;
-       goto yy334;
-yy333:
+       if (yych <= '0') goto yy335;
+       if (yych <= '9') goto yy323;
+       goto yy335;
+yy334:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy334:
+yy335:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy333;
-               goto yy322;
+               if (yych == '\t') goto yy334;
+               goto yy323;
        } else {
-               if (yych <= ' ') goto yy333;
-               if (yych <= '0') goto yy322;
-               if (yych >= ':') goto yy322;
+               if (yych <= ' ') goto yy334;
+               if (yych <= '0') goto yy323;
+               if (yych >= ':') goto yy323;
                YYCTXMARKER = YYCURSOR;
        }
-yy335:
+yy336:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy335;
+               goto yy336;
        }
        if (yych <= '\f') {
-               if (yych <= 0x08) goto yy322;
-               if (yych <= '\t') goto yy337;
-               if (yych <= '\n') goto yy339;
-               goto yy322;
+               if (yych <= 0x08) goto yy323;
+               if (yych <= '\t') goto yy338;
+               if (yych <= '\n') goto yy340;
+               goto yy323;
        } else {
-               if (yych <= '\r') goto yy341;
-               if (yych != ' ') goto yy322;
+               if (yych <= '\r') goto yy342;
+               if (yych != ' ') goto yy323;
        }
-yy337:
+yy338:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy337;
-               goto yy322;
+               if (yych == '\t') goto yy338;
+               goto yy323;
        } else {
-               if (yych <= ' ') goto yy337;
-               if (yych == '"') goto yy342;
-               goto yy322;
+               if (yych <= ' ') goto yy338;
+               if (yych == '"') goto yy343;
+               goto yy323;
        }
-yy339:
+yy340:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 446 "../src/ast/lex.re"
@@ -2109,42 +2111,42 @@ yy339:
                                        set_sourceline ();
                                        goto comment;
                                }
-#line 2113 "src/ast/lex.cc"
-yy341:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy339;
-       goto yy322;
+#line 2115 "src/ast/lex.cc"
 yy342:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == '\n') goto yy340;
+       goto yy323;
+yy343:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy342;
+               goto yy343;
        }
-       if (yych <= '\n') goto yy322;
-       if (yych >= '#') goto yy345;
+       if (yych <= '\n') goto yy323;
+       if (yych >= '#') goto yy346;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy339;
-       if (yych == '\r') goto yy341;
-       goto yy322;
-yy345:
+       if (yych == '\n') goto yy340;
+       if (yych == '\r') goto yy342;
+       goto yy323;
+yy346:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy322;
-       goto yy342;
+       if (yych == '\n') goto yy323;
+       goto yy343;
 }
 #line 466 "../src/ast/lex.re"
 
 
 nextLine:
 
-#line 2143 "src/ast/lex.cc"
+#line 2145 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy350;
+       if (yych == '\n') goto yy351;
        ++YYCURSOR;
 #line 477 "../src/ast/lex.re"
        {  if(cur == eof) {
@@ -2152,8 +2154,8 @@ nextLine:
                }
                goto nextLine;
             }
-#line 2156 "src/ast/lex.cc"
-yy350:
+#line 2158 "src/ast/lex.cc"
+yy351:
        ++YYCURSOR;
 #line 470 "../src/ast/lex.re"
        { if(cur == eof) {
@@ -2163,7 +2165,7 @@ yy350:
                cline++;
                goto scan;
             }
-#line 2167 "src/ast/lex.cc"
+#line 2169 "src/ast/lex.cc"
 }
 #line 482 "../src/ast/lex.re"
 
@@ -2191,41 +2193,41 @@ fst:
        tok = cur;
        c = get_column();
        
-#line 2195 "src/ast/lex.cc"
+#line 2197 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == ']') goto yy355;
+       if (yych == ']') goto yy356;
 #line 508 "../src/ast/lex.re"
        { l = lex_cls_chr(); goto snd; }
-#line 2203 "src/ast/lex.cc"
-yy355:
+#line 2205 "src/ast/lex.cc"
+yy356:
        ++YYCURSOR;
 #line 507 "../src/ast/lex.re"
        { return ast_cls(cline, c0, cls, neg); }
-#line 2208 "src/ast/lex.cc"
+#line 2210 "src/ast/lex.cc"
 }
 #line 509 "../src/ast/lex.re"
 
 snd:
        
-#line 2214 "src/ast/lex.cc"
+#line 2216 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
-       if (yych == '-') goto yy360;
-yy359:
+       if (yych == '-') goto yy361;
+yy360:
 #line 512 "../src/ast/lex.re"
        { u = l; goto add; }
-#line 2223 "src/ast/lex.cc"
-yy360:
+#line 2225 "src/ast/lex.cc"
+yy361:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != ']') goto yy362;
+       if (yych != ']') goto yy363;
        YYCURSOR = YYMARKER;
-       goto yy359;
-yy362:
+       goto yy360;
+yy363:
        ++YYCURSOR;
        YYCURSOR -= 1;
 #line 513 "../src/ast/lex.re"
@@ -2237,7 +2239,7 @@ yy362:
                        }
                        goto add;
                }
-#line 2241 "src/ast/lex.cc"
+#line 2243 "src/ast/lex.cc"
 }
 #line 521 "../src/ast/lex.re"
 
@@ -2250,287 +2252,287 @@ uint32_t Scanner::lex_cls_chr()
 {
        tok = cur;
        
-#line 2254 "src/ast/lex.cc"
+#line 2256 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
        if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy368;
-       if (yych == '\\') goto yy370;
+       if (yych == '\n') goto yy369;
+       if (yych == '\\') goto yy371;
        ++YYCURSOR;
 #line 536 "../src/ast/lex.re"
        { return static_cast<uint8_t>(tok[0]); }
-#line 2265 "src/ast/lex.cc"
-yy368:
+#line 2267 "src/ast/lex.cc"
+yy369:
        ++YYCURSOR;
 #line 531 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error"); }
-#line 2270 "src/ast/lex.cc"
-yy370:
+#line 2272 "src/ast/lex.cc"
+yy371:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '`') {
                if (yych <= '7') {
                        if (yych <= ',') {
-                               if (yych != '\n') goto yy372;
+                               if (yych != '\n') goto yy373;
                        } else {
-                               if (yych <= '-') goto yy374;
-                               if (yych <= '/') goto yy372;
-                               if (yych <= '3') goto yy376;
-                               goto yy378;
+                               if (yych <= '-') goto yy375;
+                               if (yych <= '/') goto yy373;
+                               if (yych <= '3') goto yy377;
+                               goto yy379;
                        }
                } else {
                        if (yych <= 'X') {
-                               if (yych == 'U') goto yy379;
-                               if (yych <= 'W') goto yy372;
-                               goto yy381;
+                               if (yych == 'U') goto yy380;
+                               if (yych <= 'W') goto yy373;
+                               goto yy382;
                        } else {
-                               if (yych <= '[') goto yy372;
-                               if (yych <= '\\') goto yy382;
-                               if (yych <= ']') goto yy384;
-                               goto yy372;
+                               if (yych <= '[') goto yy373;
+                               if (yych <= '\\') goto yy383;
+                               if (yych <= ']') goto yy385;
+                               goto yy373;
                        }
                }
        } else {
                if (yych <= 'q') {
                        if (yych <= 'e') {
-                               if (yych <= 'a') goto yy386;
-                               if (yych <= 'b') goto yy388;
-                               goto yy372;
+                               if (yych <= 'a') goto yy387;
+                               if (yych <= 'b') goto yy389;
+                               goto yy373;
                        } else {
-                               if (yych <= 'f') goto yy390;
-                               if (yych == 'n') goto yy392;
-                               goto yy372;
+                               if (yych <= 'f') goto yy391;
+                               if (yych == 'n') goto yy393;
+                               goto yy373;
                        }
                } else {
                        if (yych <= 'u') {
-                               if (yych <= 'r') goto yy394;
-                               if (yych <= 's') goto yy372;
-                               if (yych <= 't') goto yy396;
-                               goto yy381;
+                               if (yych <= 'r') goto yy395;
+                               if (yych <= 's') goto yy373;
+                               if (yych <= 't') goto yy397;
+                               goto yy382;
                        } else {
-                               if (yych <= 'v') goto yy398;
-                               if (yych == 'x') goto yy400;
-                               goto yy372;
+                               if (yych <= 'v') goto yy399;
+                               if (yych == 'x') goto yy401;
+                               goto yy373;
                        }
                }
        }
 #line 534 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error in escape sequence"); }
-#line 2321 "src/ast/lex.cc"
-yy372:
+#line 2323 "src/ast/lex.cc"
+yy373:
        ++YYCURSOR;
 #line 549 "../src/ast/lex.re"
        {
                        warn.useless_escape(cline, get_column(), tok[1]);
                        return static_cast<uint8_t>(tok[1]);
                }
-#line 2329 "src/ast/lex.cc"
-yy374:
+#line 2331 "src/ast/lex.cc"
+yy375:
        ++YYCURSOR;
 #line 547 "../src/ast/lex.re"
        { return static_cast<uint8_t>('-'); }
-#line 2334 "src/ast/lex.cc"
-yy376:
+#line 2336 "src/ast/lex.cc"
+yy377:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy377;
-       if (yych <= '7') goto yy401;
-yy377:
+       if (yych <= '/') goto yy378;
+       if (yych <= '7') goto yy402;
+yy378:
 #line 533 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error in octal escape sequence"); }
-#line 2343 "src/ast/lex.cc"
-yy378:
-       ++YYCURSOR;
-       goto yy377;
+#line 2345 "src/ast/lex.cc"
 yy379:
+       ++YYCURSOR;
+       goto yy378;
+yy380:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy380;
-               if (yych <= '9') goto yy403;
+               if (yych <= '/') goto yy381;
+               if (yych <= '9') goto yy404;
        } else {
-               if (yych <= 'F') goto yy403;
-               if (yych <= '`') goto yy380;
-               if (yych <= 'f') goto yy403;
+               if (yych <= 'F') goto yy404;
+               if (yych <= '`') goto yy381;
+               if (yych <= 'f') goto yy404;
        }
-yy380:
+yy381:
 #line 532 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error in hexadecimal escape sequence"); }
-#line 2361 "src/ast/lex.cc"
-yy381:
+#line 2363 "src/ast/lex.cc"
+yy382:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy380;
-               if (yych <= '9') goto yy404;
-               goto yy380;
+               if (yych <= '/') goto yy381;
+               if (yych <= '9') goto yy405;
+               goto yy381;
        } else {
-               if (yych <= 'F') goto yy404;
-               if (yych <= '`') goto yy380;
-               if (yych <= 'f') goto yy404;
-               goto yy380;
+               if (yych <= 'F') goto yy405;
+               if (yych <= '`') goto yy381;
+               if (yych <= 'f') goto yy405;
+               goto yy381;
        }
-yy382:
+yy383:
        ++YYCURSOR;
 #line 546 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\\'); }
-#line 2379 "src/ast/lex.cc"
-yy384:
+#line 2381 "src/ast/lex.cc"
+yy385:
        ++YYCURSOR;
 #line 548 "../src/ast/lex.re"
        { return static_cast<uint8_t>(']'); }
-#line 2384 "src/ast/lex.cc"
-yy386:
+#line 2386 "src/ast/lex.cc"
+yy387:
        ++YYCURSOR;
 #line 539 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\a'); }
-#line 2389 "src/ast/lex.cc"
-yy388:
+#line 2391 "src/ast/lex.cc"
+yy389:
        ++YYCURSOR;
 #line 540 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\b'); }
-#line 2394 "src/ast/lex.cc"
-yy390:
+#line 2396 "src/ast/lex.cc"
+yy391:
        ++YYCURSOR;
 #line 541 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\f'); }
-#line 2399 "src/ast/lex.cc"
-yy392:
+#line 2401 "src/ast/lex.cc"
+yy393:
        ++YYCURSOR;
 #line 542 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\n'); }
-#line 2404 "src/ast/lex.cc"
-yy394:
+#line 2406 "src/ast/lex.cc"
+yy395:
        ++YYCURSOR;
 #line 543 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\r'); }
-#line 2409 "src/ast/lex.cc"
-yy396:
+#line 2411 "src/ast/lex.cc"
+yy397:
        ++YYCURSOR;
 #line 544 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\t'); }
-#line 2414 "src/ast/lex.cc"
-yy398:
+#line 2416 "src/ast/lex.cc"
+yy399:
        ++YYCURSOR;
 #line 545 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\v'); }
-#line 2419 "src/ast/lex.cc"
-yy400:
+#line 2421 "src/ast/lex.cc"
+yy401:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy380;
-               if (yych <= '9') goto yy405;
-               goto yy380;
+               if (yych <= '/') goto yy381;
+               if (yych <= '9') goto yy406;
+               goto yy381;
        } else {
-               if (yych <= 'F') goto yy405;
-               if (yych <= '`') goto yy380;
-               if (yych <= 'f') goto yy405;
-               goto yy380;
+               if (yych <= 'F') goto yy406;
+               if (yych <= '`') goto yy381;
+               if (yych <= 'f') goto yy406;
+               goto yy381;
        }
-yy401:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '/') goto yy402;
-       if (yych <= '7') goto yy406;
 yy402:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= '/') goto yy403;
+       if (yych <= '7') goto yy407;
+yy403:
        YYCURSOR = YYMARKER;
        if (yyaccept == 0) {
-               goto yy377;
-       } else {
-               goto yy380;
-       }
-yy403:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '@') {
-               if (yych <= '/') goto yy402;
-               if (yych <= '9') goto yy408;
-               goto yy402;
+               goto yy378;
        } else {
-               if (yych <= 'F') goto yy408;
-               if (yych <= '`') goto yy402;
-               if (yych <= 'f') goto yy408;
-               goto yy402;
+               goto yy381;
        }
 yy404:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy402;
+               if (yych <= '/') goto yy403;
                if (yych <= '9') goto yy409;
-               goto yy402;
+               goto yy403;
        } else {
                if (yych <= 'F') goto yy409;
-               if (yych <= '`') goto yy402;
+               if (yych <= '`') goto yy403;
                if (yych <= 'f') goto yy409;
-               goto yy402;
+               goto yy403;
        }
 yy405:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy402;
+               if (yych <= '/') goto yy403;
                if (yych <= '9') goto yy410;
-               goto yy402;
+               goto yy403;
        } else {
                if (yych <= 'F') goto yy410;
-               if (yych <= '`') goto yy402;
+               if (yych <= '`') goto yy403;
                if (yych <= 'f') goto yy410;
-               goto yy402;
+               goto yy403;
        }
 yy406:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= '@') {
+               if (yych <= '/') goto yy403;
+               if (yych <= '9') goto yy411;
+               goto yy403;
+       } else {
+               if (yych <= 'F') goto yy411;
+               if (yych <= '`') goto yy403;
+               if (yych <= 'f') goto yy411;
+               goto yy403;
+       }
+yy407:
        ++YYCURSOR;
 #line 538 "../src/ast/lex.re"
        { return unesc_oct(tok, cur); }
-#line 2484 "src/ast/lex.cc"
-yy408:
+#line 2486 "src/ast/lex.cc"
+yy409:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy402;
-               if (yych <= '9') goto yy412;
-               goto yy402;
+               if (yych <= '/') goto yy403;
+               if (yych <= '9') goto yy413;
+               goto yy403;
        } else {
-               if (yych <= 'F') goto yy412;
-               if (yych <= '`') goto yy402;
-               if (yych <= 'f') goto yy412;
-               goto yy402;
+               if (yych <= 'F') goto yy413;
+               if (yych <= '`') goto yy403;
+               if (yych <= 'f') goto yy413;
+               goto yy403;
        }
-yy409:
+yy410:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy402;
-               if (yych <= '9') goto yy405;
-               goto yy402;
+               if (yych <= '/') goto yy403;
+               if (yych <= '9') goto yy406;
+               goto yy403;
        } else {
-               if (yych <= 'F') goto yy405;
-               if (yych <= '`') goto yy402;
-               if (yych <= 'f') goto yy405;
-               goto yy402;
+               if (yych <= 'F') goto yy406;
+               if (yych <= '`') goto yy403;
+               if (yych <= 'f') goto yy406;
+               goto yy403;
        }
-yy410:
+yy411:
        ++YYCURSOR;
 #line 537 "../src/ast/lex.re"
        { return unesc_hex(tok, cur); }
-#line 2513 "src/ast/lex.cc"
-yy412:
+#line 2515 "src/ast/lex.cc"
+yy413:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy402;
-               if (yych >= ':') goto yy402;
+               if (yych <= '/') goto yy403;
+               if (yych >= ':') goto yy403;
        } else {
-               if (yych <= 'F') goto yy413;
-               if (yych <= '`') goto yy402;
-               if (yych >= 'g') goto yy402;
+               if (yych <= 'F') goto yy414;
+               if (yych <= '`') goto yy403;
+               if (yych >= 'g') goto yy403;
        }
-yy413:
+yy414:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy402;
-               if (yych <= '9') goto yy404;
-               goto yy402;
+               if (yych <= '/') goto yy403;
+               if (yych <= '9') goto yy405;
+               goto yy403;
        } else {
-               if (yych <= 'F') goto yy404;
-               if (yych <= '`') goto yy402;
-               if (yych <= 'f') goto yy404;
-               goto yy402;
+               if (yych <= 'F') goto yy405;
+               if (yych <= '`') goto yy403;
+               if (yych <= 'f') goto yy405;
+               goto yy403;
        }
 }
 #line 553 "../src/ast/lex.re"
@@ -2542,75 +2544,75 @@ uint32_t Scanner::lex_str_chr(char quote, bool &end)
        end = false;
        tok = cur;
        
-#line 2546 "src/ast/lex.cc"
+#line 2548 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
        if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy418;
-       if (yych == '\\') goto yy420;
+       if (yych == '\n') goto yy419;
+       if (yych == '\\') goto yy421;
        ++YYCURSOR;
 #line 566 "../src/ast/lex.re"
        {
                        end = tok[0] == quote;
                        return static_cast<uint8_t>(tok[0]);
                }
-#line 2560 "src/ast/lex.cc"
-yy418:
+#line 2562 "src/ast/lex.cc"
+yy419:
        ++YYCURSOR;
 #line 561 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error"); }
-#line 2565 "src/ast/lex.cc"
-yy420:
+#line 2567 "src/ast/lex.cc"
+yy421:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 'a') {
                if (yych <= 'T') {
                        if (yych <= '/') {
-                               if (yych != '\n') goto yy422;
+                               if (yych != '\n') goto yy423;
                        } else {
-                               if (yych <= '3') goto yy424;
-                               if (yych <= '7') goto yy426;
-                               goto yy422;
+                               if (yych <= '3') goto yy425;
+                               if (yych <= '7') goto yy427;
+                               goto yy423;
                        }
                } else {
                        if (yych <= 'X') {
-                               if (yych <= 'U') goto yy427;
-                               if (yych <= 'W') goto yy422;
-                               goto yy429;
+                               if (yych <= 'U') goto yy428;
+                               if (yych <= 'W') goto yy423;
+                               goto yy430;
                        } else {
-                               if (yych == '\\') goto yy430;
-                               if (yych <= '`') goto yy422;
-                               goto yy432;
+                               if (yych == '\\') goto yy431;
+                               if (yych <= '`') goto yy423;
+                               goto yy433;
                        }
                }
        } else {
                if (yych <= 'r') {
                        if (yych <= 'f') {
-                               if (yych <= 'b') goto yy434;
-                               if (yych <= 'e') goto yy422;
-                               goto yy436;
+                               if (yych <= 'b') goto yy435;
+                               if (yych <= 'e') goto yy423;
+                               goto yy437;
                        } else {
-                               if (yych == 'n') goto yy438;
-                               if (yych <= 'q') goto yy422;
-                               goto yy440;
+                               if (yych == 'n') goto yy439;
+                               if (yych <= 'q') goto yy423;
+                               goto yy441;
                        }
                } else {
                        if (yych <= 'u') {
-                               if (yych <= 's') goto yy422;
-                               if (yych <= 't') goto yy442;
-                               goto yy429;
+                               if (yych <= 's') goto yy423;
+                               if (yych <= 't') goto yy443;
+                               goto yy430;
                        } else {
-                               if (yych <= 'v') goto yy444;
-                               if (yych == 'x') goto yy446;
-                               goto yy422;
+                               if (yych <= 'v') goto yy445;
+                               if (yych == 'x') goto yy447;
+                               goto yy423;
                        }
                }
        }
 #line 564 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error in escape sequence"); }
-#line 2613 "src/ast/lex.cc"
-yy422:
+#line 2615 "src/ast/lex.cc"
+yy423:
        ++YYCURSOR;
 #line 580 "../src/ast/lex.re"
        {
@@ -2619,202 +2621,202 @@ yy422:
                        }
                        return static_cast<uint8_t>(tok[1]);
                }
-#line 2623 "src/ast/lex.cc"
-yy424:
+#line 2625 "src/ast/lex.cc"
+yy425:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy425;
-       if (yych <= '7') goto yy447;
-yy425:
+       if (yych <= '/') goto yy426;
+       if (yych <= '7') goto yy448;
+yy426:
 #line 563 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error in octal escape sequence"); }
-#line 2632 "src/ast/lex.cc"
-yy426:
-       ++YYCURSOR;
-       goto yy425;
+#line 2634 "src/ast/lex.cc"
 yy427:
+       ++YYCURSOR;
+       goto yy426;
+yy428:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy428;
-               if (yych <= '9') goto yy449;
+               if (yych <= '/') goto yy429;
+               if (yych <= '9') goto yy450;
        } else {
-               if (yych <= 'F') goto yy449;
-               if (yych <= '`') goto yy428;
-               if (yych <= 'f') goto yy449;
+               if (yych <= 'F') goto yy450;
+               if (yych <= '`') goto yy429;
+               if (yych <= 'f') goto yy450;
        }
-yy428:
+yy429:
 #line 562 "../src/ast/lex.re"
        { fatal (get_column() - tchar, "syntax error in hexadecimal escape sequence"); }
-#line 2650 "src/ast/lex.cc"
-yy429:
+#line 2652 "src/ast/lex.cc"
+yy430:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy428;
-               if (yych <= '9') goto yy450;
-               goto yy428;
+               if (yych <= '/') goto yy429;
+               if (yych <= '9') goto yy451;
+               goto yy429;
        } else {
-               if (yych <= 'F') goto yy450;
-               if (yych <= '`') goto yy428;
-               if (yych <= 'f') goto yy450;
-               goto yy428;
+               if (yych <= 'F') goto yy451;
+               if (yych <= '`') goto yy429;
+               if (yych <= 'f') goto yy451;
+               goto yy429;
        }
-yy430:
+yy431:
        ++YYCURSOR;
 #line 579 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\\'); }
-#line 2668 "src/ast/lex.cc"
-yy432:
+#line 2670 "src/ast/lex.cc"
+yy433:
        ++YYCURSOR;
 #line 572 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\a'); }
-#line 2673 "src/ast/lex.cc"
-yy434:
+#line 2675 "src/ast/lex.cc"
+yy435:
        ++YYCURSOR;
 #line 573 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\b'); }
-#line 2678 "src/ast/lex.cc"
-yy436:
+#line 2680 "src/ast/lex.cc"
+yy437:
        ++YYCURSOR;
 #line 574 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\f'); }
-#line 2683 "src/ast/lex.cc"
-yy438:
+#line 2685 "src/ast/lex.cc"
+yy439:
        ++YYCURSOR;
 #line 575 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\n'); }
-#line 2688 "src/ast/lex.cc"
-yy440:
+#line 2690 "src/ast/lex.cc"
+yy441:
        ++YYCURSOR;
 #line 576 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\r'); }
-#line 2693 "src/ast/lex.cc"
-yy442:
+#line 2695 "src/ast/lex.cc"
+yy443:
        ++YYCURSOR;
 #line 577 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\t'); }
-#line 2698 "src/ast/lex.cc"
-yy444:
+#line 2700 "src/ast/lex.cc"
+yy445:
        ++YYCURSOR;
 #line 578 "../src/ast/lex.re"
        { return static_cast<uint8_t>('\v'); }
-#line 2703 "src/ast/lex.cc"
-yy446:
+#line 2705 "src/ast/lex.cc"
+yy447:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy428;
-               if (yych <= '9') goto yy451;
-               goto yy428;
+               if (yych <= '/') goto yy429;
+               if (yych <= '9') goto yy452;
+               goto yy429;
        } else {
-               if (yych <= 'F') goto yy451;
-               if (yych <= '`') goto yy428;
-               if (yych <= 'f') goto yy451;
-               goto yy428;
+               if (yych <= 'F') goto yy452;
+               if (yych <= '`') goto yy429;
+               if (yych <= 'f') goto yy452;
+               goto yy429;
        }
-yy447:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '/') goto yy448;
-       if (yych <= '7') goto yy452;
 yy448:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= '/') goto yy449;
+       if (yych <= '7') goto yy453;
+yy449:
        YYCURSOR = YYMARKER;
        if (yyaccept == 0) {
-               goto yy425;
-       } else {
-               goto yy428;
-       }
-yy449:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '@') {
-               if (yych <= '/') goto yy448;
-               if (yych <= '9') goto yy454;
-               goto yy448;
+               goto yy426;
        } else {
-               if (yych <= 'F') goto yy454;
-               if (yych <= '`') goto yy448;
-               if (yych <= 'f') goto yy454;
-               goto yy448;
+               goto yy429;
        }
 yy450:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy448;
+               if (yych <= '/') goto yy449;
                if (yych <= '9') goto yy455;
-               goto yy448;
+               goto yy449;
        } else {
                if (yych <= 'F') goto yy455;
-               if (yych <= '`') goto yy448;
+               if (yych <= '`') goto yy449;
                if (yych <= 'f') goto yy455;
-               goto yy448;
+               goto yy449;
        }
 yy451:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy448;
+               if (yych <= '/') goto yy449;
                if (yych <= '9') goto yy456;
-               goto yy448;
+               goto yy449;
        } else {
                if (yych <= 'F') goto yy456;
-               if (yych <= '`') goto yy448;
+               if (yych <= '`') goto yy449;
                if (yych <= 'f') goto yy456;
-               goto yy448;
+               goto yy449;
        }
 yy452:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= '@') {
+               if (yych <= '/') goto yy449;
+               if (yych <= '9') goto yy457;
+               goto yy449;
+       } else {
+               if (yych <= 'F') goto yy457;
+               if (yych <= '`') goto yy449;
+               if (yych <= 'f') goto yy457;
+               goto yy449;
+       }
+yy453:
        ++YYCURSOR;
 #line 571 "../src/ast/lex.re"
        { return unesc_oct(tok, cur); }
-#line 2768 "src/ast/lex.cc"
-yy454:
+#line 2770 "src/ast/lex.cc"
+yy455:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy448;
-               if (yych <= '9') goto yy458;
-               goto yy448;
+               if (yych <= '/') goto yy449;
+               if (yych <= '9') goto yy459;
+               goto yy449;
        } else {
-               if (yych <= 'F') goto yy458;
-               if (yych <= '`') goto yy448;
-               if (yych <= 'f') goto yy458;
-               goto yy448;
+               if (yych <= 'F') goto yy459;
+               if (yych <= '`') goto yy449;
+               if (yych <= 'f') goto yy459;
+               goto yy449;
        }
-yy455:
+yy456:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy448;
-               if (yych <= '9') goto yy451;
-               goto yy448;
+               if (yych <= '/') goto yy449;
+               if (yych <= '9') goto yy452;
+               goto yy449;
        } else {
-               if (yych <= 'F') goto yy451;
-               if (yych <= '`') goto yy448;
-               if (yych <= 'f') goto yy451;
-               goto yy448;
+               if (yych <= 'F') goto yy452;
+               if (yych <= '`') goto yy449;
+               if (yych <= 'f') goto yy452;
+               goto yy449;
        }
-yy456:
+yy457:
        ++YYCURSOR;
 #line 570 "../src/ast/lex.re"
        { return unesc_hex(tok, cur); }
-#line 2797 "src/ast/lex.cc"
-yy458:
+#line 2799 "src/ast/lex.cc"
+yy459:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy448;
-               if (yych >= ':') goto yy448;
+               if (yych <= '/') goto yy449;
+               if (yych >= ':') goto yy449;
        } else {
-               if (yych <= 'F') goto yy459;
-               if (yych <= '`') goto yy448;
-               if (yych >= 'g') goto yy448;
+               if (yych <= 'F') goto yy460;
+               if (yych <= '`') goto yy449;
+               if (yych >= 'g') goto yy449;
        }
-yy459:
+yy460:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy448;
-               if (yych <= '9') goto yy450;
-               goto yy448;
+               if (yych <= '/') goto yy449;
+               if (yych <= '9') goto yy451;
+               goto yy449;
        } else {
-               if (yych <= 'F') goto yy450;
-               if (yych <= '`') goto yy448;
-               if (yych <= 'f') goto yy450;
-               goto yy448;
+               if (yych <= 'F') goto yy451;
+               if (yych <= '`') goto yy449;
+               if (yych <= 'f') goto yy451;
+               goto yy449;
        }
 }
 #line 586 "../src/ast/lex.re"
@@ -2837,7 +2839,7 @@ void Scanner::set_sourceline ()
 sourceline:
        tok = cur;
 
-#line 2841 "src/ast/lex.cc"
+#line 2843 "src/ast/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2877,21 +2879,21 @@ sourceline:
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
-               if (yych == '\n') goto yy464;
+               if (yych == '\n') goto yy465;
        } else {
-               if (yych <= '"') goto yy466;
-               if (yych <= '0') goto yy462;
-               if (yych <= '9') goto yy467;
+               if (yych <= '"') goto yy467;
+               if (yych <= '0') goto yy463;
+               if (yych <= '9') goto yy468;
        }
-yy462:
-       ++YYCURSOR;
 yy463:
+       ++YYCURSOR;
+yy464:
 #line 628 "../src/ast/lex.re"
        {
                                        goto sourceline;
                                }
-#line 2894 "src/ast/lex.cc"
-yy464:
+#line 2896 "src/ast/lex.cc"
+yy465:
        ++YYCURSOR;
 #line 616 "../src/ast/lex.re"
        {
@@ -2906,17 +2908,17 @@ yy464:
                                        tok = cur;
                                        return; 
                                }
-#line 2910 "src/ast/lex.cc"
-yy466:
-       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '\n') goto yy463;
-       goto yy471;
+#line 2912 "src/ast/lex.cc"
 yy467:
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == '\n') goto yy464;
+       goto yy472;
+yy468:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy467;
+               goto yy468;
        }
 #line 605 "../src/ast/lex.re"
        {
@@ -2926,35 +2928,35 @@ yy467:
                                        }
                                        goto sourceline; 
                                }
-#line 2930 "src/ast/lex.cc"
-yy470:
+#line 2932 "src/ast/lex.cc"
+yy471:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy471:
+yy472:
        if (yybm[0+yych] & 128) {
-               goto yy470;
+               goto yy471;
        }
-       if (yych <= '\n') goto yy472;
-       if (yych <= '"') goto yy473;
-       goto yy475;
-yy472:
-       YYCURSOR = YYMARKER;
-       goto yy463;
+       if (yych <= '\n') goto yy473;
+       if (yych <= '"') goto yy474;
+       goto yy476;
 yy473:
+       YYCURSOR = YYMARKER;
+       goto yy464;
+yy474:
        ++YYCURSOR;
 #line 612 "../src/ast/lex.re"
        {
                                        escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes
                                        goto sourceline; 
                                }
-#line 2952 "src/ast/lex.cc"
-yy475:
+#line 2954 "src/ast/lex.cc"
+yy476:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy472;
-       goto yy470;
+       if (yych == '\n') goto yy473;
+       goto yy471;
 }
 #line 631 "../src/ast/lex.re"
 
index bd18aee95d39cfec5d0e28dc45e28a68299428f7..5e8db4b8227c969c5ceedee036438bd7cfd3496e 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Mon Jul 17 23:05:49 2017 */
+/* Generated by re2c 0.16 on Fri Jul 28 12:23:09 2017 */
 #line 1 "../src/ast/lex_conf.re"
 #include "src/util/c99_stdint.h"
 #include <string>
@@ -966,32 +966,31 @@ yy178:
        case 'P':       goto yy229;
        case 'R':       goto yy230;
        case 'S':       goto yy231;
-       case 'T':       goto yy232;
        default:        goto yy4;
        }
 yy179:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy233;
+       if (yych == '-') goto yy232;
        goto yy4;
 yy180:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy234;
+       if (yych == 'e') goto yy233;
        goto yy4;
 yy181:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy235;
+       if (yych == 'p') goto yy234;
        goto yy4;
 yy182:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy236;
+       if (yych == 'u') goto yy235;
        goto yy4;
 yy183:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy237;
+       if (yych == '-') goto yy236;
        goto yy4;
 yy184:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy238;
+       if (yych == 'e') goto yy237;
        goto yy4;
 yy185:
        yych = (unsigned char)*++cur;
@@ -1001,35 +1000,35 @@ yy185:
        goto yy99;
 yy186:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy239;
+       if (yych == 't') goto yy238;
        goto yy4;
 yy187:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy240;
+       if (yych == 'o') goto yy239;
        goto yy4;
 yy188:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy241;
+       if (yych == 'u') goto yy240;
        goto yy4;
 yy189:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy242;
+       if (yych == 'k') goto yy241;
        goto yy4;
 yy190:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy243;
+       if (yych == 't') goto yy242;
        goto yy4;
 yy191:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy244;
+       if (yych == 'd') goto yy243;
        goto yy4;
 yy192:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy245;
+       if (yych == 'i') goto yy244;
        goto yy4;
 yy193:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy246;
+       if (yych == 'i') goto yy245;
        goto yy4;
 yy194:
        yych = (unsigned char)*++cur;
@@ -1037,63 +1036,63 @@ yy194:
        goto yy4;
 yy195:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy247;
+       if (yych == 'c') goto yy246;
        goto yy4;
 yy196:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy248;
+       if (yych == '-') goto yy247;
        goto yy4;
 yy197:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy249;
+       if (yych == 'e') goto yy248;
        goto yy4;
 yy198:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy250;
+       if (yych == 'r') goto yy249;
        goto yy4;
 yy199:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy251;
+       if (yych == 'p') goto yy250;
        goto yy4;
 yy200:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy253;
+       if (yych == 'i') goto yy252;
        goto yy4;
 yy201:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy254;
+       if (yych == 'e') goto yy253;
        goto yy4;
 yy202:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy255;
+       if (yych == 'i') goto yy254;
        goto yy4;
 yy203:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy256;
+       if (yych == 'l') goto yy255;
        goto yy4;
 yy204:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy258;
+       if (yych == 'r') goto yy257;
        goto yy4;
 yy205:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy259;
+       if (yych == 't') goto yy258;
        goto yy4;
 yy206:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy260;
+       if (yych == 'e') goto yy259;
        goto yy4;
 yy207:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy261;
+       if (yych == 'i') goto yy260;
        goto yy4;
 yy208:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy262;
+       if (yych == 'y') goto yy261;
        goto yy4;
 yy209:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy263;
+       if (yych == 'e') goto yy262;
        goto yy4;
 yy210:
        yych = (unsigned char)*++cur;
@@ -1102,30 +1101,30 @@ yy210:
        }
 #line 142 "../src/ast/lex_conf.re"
        { opts.set_bEmitYYCh      (lex_conf_bool()); return; }
-#line 1106 "src/ast/lex_conf.cc"
+#line 1105 "src/ast/lex_conf.cc"
 yy212:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy264;
+       if (yych == 'e') goto yy263;
        goto yy4;
 yy213:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy265;
+       if (yych == 'a') goto yy264;
        goto yy4;
 yy214:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy266;
+       if (yych == 'r') goto yy265;
        goto yy4;
 yy215:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy267;
+       if (yych == 's') goto yy266;
        goto yy4;
 yy216:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy268;
+       if (yych == 'e') goto yy267;
        goto yy4;
 yy217:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy269;
+       if (yych == 'c') goto yy268;
 yy218:
        cur = mar;
        if (yyaccept <= 2) {
@@ -1133,7 +1132,7 @@ yy218:
                        if (yyaccept == 0) {
                                goto yy175;
                        } else {
-                               goto yy257;
+                               goto yy256;
                        }
                } else {
                        goto yy326;
@@ -1141,17 +1140,17 @@ yy218:
        } else {
                if (yyaccept <= 4) {
                        if (yyaccept == 3) {
-                               goto yy392;
+                               goto yy393;
                        } else {
-                               goto yy593;
+                               goto yy596;
                        }
                } else {
-                       goto yy676;
+                       goto yy675;
                }
        }
 yy219:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy270;
+       if (yych == 'e') goto yy269;
        goto yy4;
 yy220:
        yych = (unsigned char)*++cur;
@@ -1160,41 +1159,42 @@ yy220:
        }
 #line 71 "../src/ast/lex_conf.re"
        { opts.set_condPrefix       (lex_conf_string ()); return; }
-#line 1164 "src/ast/lex_conf.cc"
+#line 1163 "src/ast/lex_conf.cc"
 yy222:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy271;
+       if (yych == 'A') goto yy270;
        goto yy4;
 yy223:
        yych = (unsigned char)*++cur;
        if (yych <= 'S') {
-               if (yych == 'O') goto yy272;
+               if (yych == 'O') goto yy271;
                goto yy4;
        } else {
-               if (yych <= 'T') goto yy273;
-               if (yych <= 'U') goto yy274;
+               if (yych <= 'T') goto yy272;
+               if (yych <= 'U') goto yy273;
                goto yy4;
        }
 yy224:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy275;
+       if (yych == 'E') goto yy274;
        goto yy4;
 yy225:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy276;
+       if (yych == 'I') goto yy275;
        goto yy4;
 yy226:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy277;
+       if (yych == 'E') goto yy276;
        goto yy4;
 yy227:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy278;
-       if (yych == 'I') goto yy279;
+       if (yych == 'E') goto yy277;
+       if (yych == 'I') goto yy278;
        goto yy4;
 yy228:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy280;
+       if (yych == 'A') goto yy279;
+       if (yych == 'T') goto yy280;
        goto yy4;
 yy229:
        yych = (unsigned char)*++cur;
@@ -1206,87 +1206,88 @@ yy230:
        goto yy4;
 yy231:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy283;
-       if (yych == 'K') goto yy284;
-       goto yy4;
+       if (yych <= 'J') {
+               if (yych == 'E') goto yy283;
+               goto yy4;
+       } else {
+               if (yych <= 'K') goto yy284;
+               if (yych == 'T') goto yy285;
+               goto yy4;
+       }
 yy232:
-       yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy285;
-       goto yy4;
-yy233:
        yych = (unsigned char)*++cur;
        if (yych == 'v') goto yy286;
        goto yy4;
-yy234:
+yy233:
        yych = (unsigned char)*++cur;
        if (yych == '-') goto yy287;
        goto yy4;
-yy235:
+yy234:
        yych = (unsigned char)*++cur;
        if (yych == 'u') goto yy288;
        goto yy4;
-yy236:
+yy235:
        yych = (unsigned char)*++cur;
        if (yych == 'g') goto yy289;
        goto yy4;
-yy237:
+yy236:
        yych = (unsigned char)*++cur;
        if (yych == 'm') goto yy290;
        goto yy4;
-yy238:
+yy237:
        yych = (unsigned char)*++cur;
        if (yych == 'r') goto yy291;
        goto yy4;
-yy239:
+yy238:
        yych = (unsigned char)*++cur;
        if (yych == 'y') goto yy292;
        goto yy4;
-yy240:
+yy239:
        yych = (unsigned char)*++cur;
        if (yych == 'd') goto yy293;
        goto yy4;
-yy241:
+yy240:
        yych = (unsigned char)*++cur;
        if (yych == 't') goto yy294;
        goto yy4;
-yy242:
+yy241:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy296;
        goto yy4;
-yy243:
+yy242:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy297;
        goto yy4;
-yy244:
+yy243:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy298;
        goto yy4;
-yy245:
+yy244:
        yych = (unsigned char)*++cur;
        if (yych == 'm') goto yy299;
        goto yy4;
-yy246:
+yy245:
        yych = (unsigned char)*++cur;
        if (yych == 'x') goto yy300;
        goto yy4;
-yy247:
+yy246:
        yych = (unsigned char)*++cur;
        if (yych == 'o') goto yy301;
        goto yy4;
-yy248:
+yy247:
        yych = (unsigned char)*++cur;
        if (yych == '1') goto yy302;
        if (yych == '8') goto yy89;
        goto yy4;
-yy249:
+yy248:
        yych = (unsigned char)*++cur;
        if (yych == '-') goto yy303;
        goto yy4;
-yy250:
+yy249:
        yych = (unsigned char)*++cur;
        if (yych == 'i') goto yy304;
        goto yy4;
-yy251:
+yy250:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
@@ -1301,20 +1302,20 @@ yy251:
                opts.set_topIndent (static_cast<uint32_t> (n));
                return;
        }
-#line 1305 "src/ast/lex_conf.cc"
-yy253:
+#line 1306 "src/ast/lex_conf.cc"
+yy252:
        yych = (unsigned char)*++cur;
        if (yych == 'l') goto yy305;
        goto yy4;
-yy254:
+yy253:
        yych = (unsigned char)*++cur;
        if (yych == 'x') goto yy306;
        goto yy4;
-yy255:
+yy254:
        yych = (unsigned char)*++cur;
        if (yych == 'x') goto yy307;
        goto yy4;
-yy256:
+yy255:
        yyaccept = 1;
        yych = (unsigned char)*(mar = ++cur);
        if (yybm[0+yych] & 32) {
@@ -1335,155 +1336,159 @@ yy256:
                        goto yy311;
                }
        }
-yy257:
+yy256:
 #line 155 "../src/ast/lex_conf.re"
        { opts.set_startlabel       (lex_conf_string()); return; }
-#line 1342 "src/ast/lex_conf.cc"
-yy258:
+#line 1343 "src/ast/lex_conf.cc"
+yy257:
        yych = (unsigned char)*++cur;
        if (yych == 't') goto yy313;
        goto yy4;
-yy259:
+yy258:
        yych = (unsigned char)*++cur;
        if (yych == 'l') goto yy315;
        goto yy4;
-yy260:
+yy259:
        yych = (unsigned char)*++cur;
        if (yych == 's') goto yy316;
        goto yy4;
-yy261:
+yy260:
        yych = (unsigned char)*++cur;
        if (yych == 'x') goto yy317;
        goto yy4;
-yy262:
+yy261:
        yych = (unsigned char)*++cur;
        if (yych == 'y') goto yy319;
        goto yy4;
-yy263:
+yy262:
        yych = (unsigned char)*++cur;
        if (yych == 'r') goto yy320;
        goto yy4;
-yy264:
+yy263:
        yych = (unsigned char)*++cur;
        if (yych == 'c') goto yy321;
        goto yy4;
-yy265:
+yy264:
        yych = (unsigned char)*++cur;
        if (yych == 'b') goto yy322;
        goto yy4;
-yy266:
+yy265:
        yych = (unsigned char)*++cur;
        if (yych == 'a') goto yy323;
        goto yy4;
-yy267:
+yy266:
        yych = (unsigned char)*++cur;
        if (yych == 'h') goto yy324;
        goto yy4;
-yy268:
+yy267:
        yych = (unsigned char)*++cur;
        if (yych == 'r') goto yy325;
        goto yy4;
-yy269:
+yy268:
        yych = (unsigned char)*++cur;
        if (yych == 'o') goto yy327;
        goto yy218;
-yy270:
+yy269:
        yych = (unsigned char)*++cur;
        if (yych == 'f') goto yy328;
        goto yy4;
-yy271:
+yy270:
        yych = (unsigned char)*++cur;
        if (yych == 'C') goto yy329;
        goto yy4;
-yy272:
+yy271:
        yych = (unsigned char)*++cur;
        if (yych == 'N') goto yy330;
        goto yy4;
-yy273:
+yy272:
        yych = (unsigned char)*++cur;
        if (yych <= 'W') goto yy4;
        if (yych <= 'X') goto yy331;
        if (yych <= 'Y') goto yy332;
        goto yy4;
-yy274:
+yy273:
        yych = (unsigned char)*++cur;
        if (yych == 'R') goto yy333;
        goto yy4;
-yy275:
+yy274:
        yych = (unsigned char)*++cur;
        if (yych == 'B') goto yy334;
        goto yy4;
-yy276:
+yy275:
        yych = (unsigned char)*++cur;
        if (yych == 'L') goto yy335;
        goto yy4;
-yy277:
+yy276:
        yych = (unsigned char)*++cur;
        if (yych == 'T') goto yy336;
        goto yy4;
-yy278:
+yy277:
        yych = (unsigned char)*++cur;
        if (yych == 'S') goto yy337;
        goto yy4;
-yy279:
+yy278:
        yych = (unsigned char)*++cur;
        if (yych == 'M') goto yy338;
        goto yy4;
-yy280:
+yy279:
        yych = (unsigned char)*++cur;
        if (yych == 'R') goto yy339;
        goto yy4;
+yy280:
+       yych = (unsigned char)*++cur;
+       if (yych == 'A') goto yy340;
+       goto yy4;
 yy281:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy340;
+       if (yych == 'E') goto yy341;
        goto yy4;
 yy282:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy341;
+       if (yych == 'S') goto yy342;
        goto yy4;
 yy283:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy342;
+       if (yych == 'T') goto yy343;
        goto yy4;
 yy284:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy343;
+       if (yych == 'I') goto yy344;
        goto yy4;
 yy285:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy344;
+       if (yych == 'A') goto yy345;
        goto yy4;
 yy286:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy345;
+       if (yych == 'e') goto yy346;
        goto yy4;
 yy287:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy346;
+       if (yych == 'i') goto yy347;
        goto yy4;
 yy288:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy347;
+       if (yych == 't') goto yy348;
        goto yy4;
 yy289:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy348;
+       if (yych == '-') goto yy349;
        goto yy4;
 yy290:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy349;
+       if (yych == 'i') goto yy350;
        goto yy4;
 yy291:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy350;
+       if (yych == '-') goto yy351;
        goto yy4;
 yy292:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy351;
+       if (yych == '-') goto yy352;
        goto yy4;
 yy293:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy352;
+       if (yych == 'i') goto yy353;
        goto yy4;
 yy294:
        yych = (unsigned char)*++cur;
@@ -1492,30 +1497,30 @@ yy294:
        }
 #line 61 "../src/ast/lex_conf.re"
        { lex_conf_input(opts);            return; }
-#line 1496 "src/ast/lex_conf.cc"
+#line 1501 "src/ast/lex_conf.cc"
 yy296:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy353;
+       if (yych == 'h') goto yy354;
        goto yy4;
 yy297:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy354;
+       if (yych == 'd') goto yy355;
        goto yy4;
 yy298:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy355;
+       if (yych == 'b') goto yy356;
        goto yy4;
 yy299:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy356;
+       if (yych == 'i') goto yy357;
        goto yy4;
 yy300:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy357;
+       if (yych == '-') goto yy358;
        goto yy4;
 yy301:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy358;
+       if (yych == 'd') goto yy359;
        goto yy4;
 yy302:
        yych = (unsigned char)*++cur;
@@ -1523,19 +1528,19 @@ yy302:
        goto yy4;
 yy303:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy359;
+       if (yych == 'c') goto yy360;
        goto yy4;
 yy304:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy360;
+       if (yych == 'n') goto yy361;
        goto yy4;
 yy305:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy361;
+       if (yych == 'l') goto yy362;
        goto yy4;
 yy306:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy362;
+       if (yych == 't') goto yy363;
        goto yy4;
 yy307:
        yych = (unsigned char)*++cur;
@@ -1544,7 +1549,7 @@ yy307:
        }
 #line 151 "../src/ast/lex_conf.re"
        { opts.set_labelPrefix (lex_conf_string ()); return; }
-#line 1548 "src/ast/lex_conf.cc"
+#line 1553 "src/ast/lex_conf.cc"
 yy309:
        ++cur;
        if (lim <= cur) fill(1);
@@ -1567,11 +1572,11 @@ yy311:
                }
        } else {
                if (yych <= '/') {
-                       if (yych <= '-') goto yy364;
+                       if (yych <= '-') goto yy365;
                        goto yy218;
                } else {
-                       if (yych <= '0') goto yy365;
-                       if (yych <= '9') goto yy367;
+                       if (yych <= '0') goto yy366;
+                       if (yych <= '9') goto yy368;
                        goto yy218;
                }
        }
@@ -1582,14 +1587,14 @@ yy313:
        }
 #line 86 "../src/ast/lex_conf.re"
        { opts.set_bUseStateAbort  (lex_conf_bool()); return; }
-#line 1586 "src/ast/lex_conf.cc"
+#line 1591 "src/ast/lex_conf.cc"
 yy315:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy369;
+       if (yych == 'a') goto yy370;
        goto yy4;
 yy316:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy370;
+       if (yych == 's') goto yy371;
        goto yy4;
 yy317:
        yych = (unsigned char)*++cur;
@@ -1598,39 +1603,39 @@ yy317:
        }
 #line 122 "../src/ast/lex_conf.re"
        { opts.set_tags_prefix    (lex_conf_string ()); return; }
-#line 1602 "src/ast/lex_conf.cc"
+#line 1607 "src/ast/lex_conf.cc"
 yy319:
        yych = (unsigned char)*++cur;
        if (yych <= 'c') {
                if (yych <= '`') goto yy4;
-               if (yych <= 'a') goto yy371;
-               if (yych <= 'b') goto yy372;
-               goto yy373;
+               if (yych <= 'a') goto yy372;
+               if (yych <= 'b') goto yy373;
+               goto yy374;
        } else {
                if (yych <= 'r') goto yy4;
-               if (yych <= 's') goto yy374;
-               if (yych <= 't') goto yy375;
+               if (yych <= 's') goto yy375;
+               if (yych <= 't') goto yy376;
                goto yy4;
        }
 yy320:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy376;
+       if (yych == 's') goto yy377;
        goto yy4;
 yy321:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy377;
+       if (yych == 'k') goto yy378;
        goto yy4;
 yy322:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy379;
+       if (yych == 'l') goto yy380;
        goto yy4;
 yy323:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy380;
+       if (yych == 'm') goto yy381;
        goto yy4;
 yy324:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy381;
+       if (yych == 'o') goto yy382;
        goto yy4;
 yy325:
        yyaccept = 2;
@@ -1638,277 +1643,275 @@ yy325:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-       if (yych == '@') goto yy382;
+       if (yych == '@') goto yy383;
 yy326:
 #line 73 "../src/ast/lex_conf.re"
        { opts.set_condDivider      (lex_conf_string ()); return; }
-#line 1646 "src/ast/lex_conf.cc"
+#line 1651 "src/ast/lex_conf.cc"
 yy327:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy383;
+       if (yych == 'n') goto yy384;
        goto yy218;
 yy328:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy384;
+       if (yych == 'i') goto yy385;
        goto yy4;
 yy329:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy385;
+       if (yych == 'K') goto yy386;
        goto yy4;
 yy330:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy386;
+       if (yych == 'D') goto yy387;
        goto yy4;
 yy331:
        yych = (unsigned char)*++cur;
-       if (yych == 'M') goto yy387;
+       if (yych == 'M') goto yy388;
        goto yy4;
 yy332:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy388;
+       if (yych == 'P') goto yy389;
        goto yy4;
 yy333:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy389;
+       if (yych == 'S') goto yy390;
        goto yy4;
 yy334:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy390;
+       if (yych == 'U') goto yy391;
        goto yy4;
 yy335:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy391;
+       if (yych == 'L') goto yy392;
        goto yy4;
 yy336:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy393;
-       if (yych == 'S') goto yy394;
+       if (yych == 'C') goto yy394;
+       if (yych == 'S') goto yy395;
        goto yy4;
 yy337:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy395;
+       if (yych == 'S') goto yy396;
        goto yy4;
 yy338:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy396;
+       if (yych == 'I') goto yy397;
        goto yy4;
 yy339:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy397;
+       if (yych == 'K') goto yy398;
        goto yy4;
 yy340:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy398;
+       if (yych == 'G') goto yy399;
        goto yy4;
 yy341:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy400;
+       if (yych == 'K') goto yy400;
        goto yy4;
 yy342:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy401;
-       if (yych == 'S') goto yy402;
+       if (yych == 'T') goto yy402;
        goto yy4;
 yy343:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy403;
+       if (yych == 'C') goto yy403;
+       if (yych == 'S') goto yy404;
        goto yy4;
 yy344:
        yych = (unsigned char)*++cur;
-       if (yych <= 'M') {
-               if (yych == 'L') goto yy405;
-               goto yy4;
-       } else {
-               if (yych <= 'N') goto yy406;
-               if (yych == 'P') goto yy408;
-               goto yy4;
-       }
+       if (yych == 'P') goto yy405;
+       goto yy4;
 yy345:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy410;
+       if (yych == 'G') goto yy407;
        goto yy4;
 yy346:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy411;
+       if (yych == 'c') goto yy408;
        goto yy4;
 yy347:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy412;
+       if (yych == 'n') goto yy409;
        goto yy4;
 yy348:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy413;
+       if (yych == 'e') goto yy410;
        goto yy4;
 yy349:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy414;
+       if (yych == 'o') goto yy411;
        goto yy4;
 yy350:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy415;
+       if (yych == 'n') goto yy412;
        goto yy4;
 yy351:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy416;
+       if (yych == 's') goto yy413;
        goto yy4;
 yy352:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy417;
+       if (yych == 'c') goto yy414;
        goto yy4;
 yy353:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy418;
+       if (yych == 'n') goto yy415;
        goto yy4;
 yy354:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy419;
+       if (yych == 'e') goto yy416;
        goto yy4;
 yy355:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy420;
+       if (yych == '-') goto yy417;
        goto yy4;
 yy356:
        yych = (unsigned char)*++cur;
-       if (yych == 'z') goto yy421;
+       if (yych == 'u') goto yy418;
        goto yy4;
 yy357:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy422;
+       if (yych == 'z') goto yy419;
        goto yy4;
 yy358:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy423;
+       if (yych == 'c') goto yy420;
        goto yy4;
 yy359:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy424;
+       if (yych == 'e') goto yy421;
        goto yy4;
 yy360:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy425;
+       if (yych == 'h') goto yy422;
        goto yy4;
 yy361:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy427;
+       if (yych == 'g') goto yy423;
        goto yy4;
 yy362:
+       yych = (unsigned char)*++cur;
+       if (yych == 'L') goto yy425;
+       goto yy4;
+yy363:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 85 "../src/ast/lex_conf.re"
        { opts.set_yynext          (lex_conf_string ()); return; }
-#line 1802 "src/ast/lex_conf.cc"
-yy364:
+#line 1805 "src/ast/lex_conf.cc"
+yy365:
        yych = (unsigned char)*++cur;
        if (yych <= '0') goto yy218;
-       if (yych <= '9') goto yy367;
+       if (yych <= '9') goto yy368;
        goto yy218;
-yy365:
-       ++cur;
 yy366:
+       ++cur;
+yy367:
        cur = ctx;
 #line 154 "../src/ast/lex_conf.re"
        { opts.set_startlabel_force (lex_conf_bool());   return; }
-#line 1814 "src/ast/lex_conf.cc"
-yy367:
+#line 1817 "src/ast/lex_conf.cc"
+yy368:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy367;
+               goto yy368;
        }
-       goto yy366;
-yy369:
-       yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy428;
-       goto yy4;
+       goto yy367;
 yy370:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy429;
+       if (yych == 'b') goto yy426;
        goto yy4;
 yy371:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy430;
+       if (yych == 'i') goto yy427;
        goto yy4;
 yy372:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy431;
+       if (yych == 'c') goto yy428;
        goto yy4;
 yy373:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy433;
-       if (yych == 't') goto yy435;
+       if (yych == 'm') goto yy429;
        goto yy4;
 yy374:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy436;
+       if (yych == 'h') goto yy431;
+       if (yych == 't') goto yy433;
        goto yy4;
 yy375:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy437;
+       if (yych == 't') goto yy434;
        goto yy4;
 yy376:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy438;
+       if (yych == 'a') goto yy435;
        goto yy4;
 yy377:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy436;
+       goto yy4;
+yy378:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 149 "../src/ast/lex_conf.re"
        { opts.set_fill_check   (lex_conf_bool()); return; }
-#line 1863 "src/ast/lex_conf.cc"
-yy379:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy439;
-       goto yy4;
+#line 1866 "src/ast/lex_conf.cc"
 yy380:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy441;
+       if (yych == 'e') goto yy437;
        goto yy4;
 yy381:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy442;
+       if (yych == 'e') goto yy439;
        goto yy4;
 yy382:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy443;
-       goto yy218;
+       if (yych == 'l') goto yy440;
+       goto yy4;
 yy383:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy444;
+       if (yych == 'c') goto yy441;
        goto yy218;
 yy384:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy446;
-       goto yy4;
+       if (yych == 'd') goto yy442;
+       goto yy218;
 yy385:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy448;
+       if (yych == 'x') goto yy444;
        goto yy4;
 yy386:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy449;
+       if (yych == 'U') goto yy446;
        goto yy4;
 yy387:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy450;
+       if (yych == 'T') goto yy447;
        goto yy4;
 yy388:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy451;
+       if (yych == 'A') goto yy448;
        goto yy4;
 yy389:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy453;
+       if (yych == 'E') goto yy449;
        goto yy4;
 yy390:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy454;
+       if (yych == 'O') goto yy451;
        goto yy4;
 yy391:
+       yych = (unsigned char)*++cur;
+       if (yych == 'G') goto yy452;
+       goto yy4;
+yy392:
        yyaccept = 3;
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= '?') {
@@ -1916,418 +1919,436 @@ yy391:
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy456;
+                       if (yych <= ':') goto yy454;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy457;
+                       if (yych <= '@') goto yy455;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy392;
+                       if (yych == '`') goto yy393;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy392:
+yy393:
 #line 144 "../src/ast/lex_conf.re"
        { opts.set_fill         (lex_conf_string ()); return; }
-#line 1934 "src/ast/lex_conf.cc"
-yy393:
-       yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy458;
-       goto yy4;
+#line 1937 "src/ast/lex_conf.cc"
 yy394:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy459;
+       if (yych == 'O') goto yy456;
        goto yy4;
 yy395:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy460;
+       if (yych == 'T') goto yy457;
        goto yy4;
 yy396:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy461;
+       if (yych == 'T') goto yy458;
        goto yy4;
 yy397:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy463;
+       if (yych == 'T') goto yy459;
        goto yy4;
 yy398:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy461;
+       goto yy4;
+yy399:
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy462;
+       if (yych == 'P') goto yy464;
+       goto yy4;
+yy400:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 109 "../src/ast/lex_conf.re"
        { opts.set_yypeek       (lex_conf_string ()); return; }
-#line 1962 "src/ast/lex_conf.cc"
-yy400:
+#line 1970 "src/ast/lex_conf.cc"
+yy402:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy464;
+       if (yych == 'O') goto yy466;
        goto yy4;
-yy401:
+yy403:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy465;
+       if (yych == 'O') goto yy467;
        goto yy4;
-yy402:
+yy404:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy466;
+       if (yych == 'T') goto yy468;
        goto yy4;
-yy403:
+yy405:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 110 "../src/ast/lex_conf.re"
        { opts.set_yyskip       (lex_conf_string ()); return; }
-#line 1982 "src/ast/lex_conf.cc"
-yy405:
+#line 1990 "src/ast/lex_conf.cc"
+yy407:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy467;
+       if (yych == 'N') goto yy469;
+       if (yych == 'P') goto yy471;
        goto yy4;
-yy406:
-       yych = (unsigned char)*++cur;
-       if (yybm[0+yych] & 32) {
-               goto yy3;
-       }
-#line 117 "../src/ast/lex_conf.re"
-       { opts.set_yytagn       (lex_conf_string ()); return; }
-#line 1994 "src/ast/lex_conf.cc"
 yy408:
        yych = (unsigned char)*++cur;
-       if (yybm[0+yych] & 32) {
-               goto yy3;
-       }
-#line 118 "../src/ast/lex_conf.re"
-       { opts.set_yytagp       (lex_conf_string ()); return; }
-#line 2002 "src/ast/lex_conf.cc"
+       if (yych == 't') goto yy473;
+       goto yy4;
+yy409:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy474;
+       if (yych == 'v') goto yy475;
+       goto yy4;
 yy410:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy468;
+       if (yych == 'd') goto yy476;
        goto yy4;
 yy411:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy469;
-       if (yych == 'v') goto yy470;
+       if (yych == 'u') goto yy477;
        goto yy4;
 yy412:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy471;
+       if (yych == 'i') goto yy478;
        goto yy4;
 yy413:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy472;
+       if (yych == 'k') goto yy479;
        goto yy4;
 yy414:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy473;
+       if (yych == 'l') goto yy480;
        goto yy4;
 yy415:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy474;
+       if (yych == 'g') goto yy481;
        goto yy4;
 yy416:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy475;
+       if (yych == 'a') goto yy482;
        goto yy4;
 yy417:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy476;
+       if (yych == 'i') goto yy483;
        goto yy4;
 yy418:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy477;
+       if (yych == 'g') goto yy484;
        goto yy4;
 yy419:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy478;
+       if (yych == 'e') goto yy485;
        goto yy4;
 yy420:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy479;
+       if (yych == 'a') goto yy486;
        goto yy4;
 yy421:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy480;
-       goto yy4;
-yy422:
-       yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy481;
-       goto yy4;
-yy423:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy112;
-yy424:
+yy422:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy482;
+       if (yych == 'a') goto yy487;
        goto yy4;
-yy425:
+yy423:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 125 "../src/ast/lex_conf.re"
        { opts.set_indString (lex_conf_string ()); return; }
-#line 2073 "src/ast/lex_conf.cc"
-yy427:
+#line 2066 "src/ast/lex_conf.cc"
+yy425:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy483;
+       if (yych == 'a') goto yy488;
        goto yy4;
-yy428:
+yy426:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy484;
+       if (yych == 'e') goto yy489;
        goto yy4;
-yy429:
+yy427:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy485;
+       if (yych == 'o') goto yy490;
        goto yy4;
-yy430:
+yy428:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy486;
+       if (yych == 'c') goto yy491;
        goto yy4;
-yy431:
+yy429:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 90 "../src/ast/lex_conf.re"
        { opts.set_yybm         (lex_conf_string ()); return; }
-#line 2097 "src/ast/lex_conf.cc"
-yy433:
+#line 2090 "src/ast/lex_conf.cc"
+yy431:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 140 "../src/ast/lex_conf.re"
        { opts.set_yych           (lex_conf_string ()); return; }
-#line 2105 "src/ast/lex_conf.cc"
-yy435:
+#line 2098 "src/ast/lex_conf.cc"
+yy433:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy487;
+       if (yych == 'a') goto yy492;
        goto yy4;
-yy436:
+yy434:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy488;
+       if (yych == 'a') goto yy493;
        goto yy4;
-yy437:
+yy435:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy489;
+       if (yych == 'r') goto yy494;
        goto yy4;
-yy438:
+yy436:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy490;
+       if (yych == 'o') goto yy495;
        goto yy4;
-yy439:
+yy437:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 145 "../src/ast/lex_conf.re"
        { opts.set_fill_use     (lex_conf_bool()); return; }
-#line 2129 "src/ast/lex_conf.cc"
-yy441:
+#line 2122 "src/ast/lex_conf.cc"
+yy439:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy491;
+       if (yych == 't') goto yy496;
        goto yy4;
-yy442:
+yy440:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy492;
+       if (yych == 'd') goto yy497;
        goto yy4;
-yy443:
+yy441:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy494;
+       if (yych == 'o') goto yy499;
        goto yy218;
-yy444:
+yy442:
        ++cur;
 #line 76 "../src/ast/lex_conf.re"
        { opts.set_condGotoParam    (lex_conf_string ()); return; }
-#line 2146 "src/ast/lex_conf.cc"
-yy446:
+#line 2139 "src/ast/lex_conf.cc"
+yy444:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 72 "../src/ast/lex_conf.re"
        { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
-#line 2154 "src/ast/lex_conf.cc"
-yy448:
+#line 2147 "src/ast/lex_conf.cc"
+yy446:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy495;
+       if (yych == 'P') goto yy500;
        goto yy4;
-yy449:
+yy447:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy497;
+       if (yych == 'Y') goto yy502;
        goto yy4;
-yy450:
+yy448:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy498;
+       if (yych == 'R') goto yy503;
        goto yy4;
-yy451:
+yy449:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 139 "../src/ast/lex_conf.re"
        { opts.set_yyctype        (lex_conf_string ()); return; }
-#line 2174 "src/ast/lex_conf.cc"
-yy453:
+#line 2167 "src/ast/lex_conf.cc"
+yy451:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy499;
+       if (yych == 'R') goto yy504;
        goto yy4;
-yy454:
+yy452:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 137 "../src/ast/lex_conf.re"
        { opts.set_yydebug (lex_conf_string ()); return; }
-#line 2186 "src/ast/lex_conf.cc"
-yy456:
+#line 2179 "src/ast/lex_conf.cc"
+yy454:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy501;
+       if (yych == 'n') goto yy506;
        goto yy4;
-yy457:
+yy455:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy502;
+       if (yych == 'l') goto yy507;
        goto yy218;
-yy458:
+yy456:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy503;
+       if (yych == 'N') goto yy508;
        goto yy4;
-yy459:
+yy457:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy504;
+       if (yych == 'A') goto yy509;
        goto yy4;
-yy460:
+yy458:
        yych = (unsigned char)*++cur;
-       if (yych == 'H') goto yy505;
+       if (yych == 'H') goto yy510;
        goto yy4;
-yy461:
+yy459:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 107 "../src/ast/lex_conf.re"
        { opts.set_yylimit     (lex_conf_string ()); return; }
-#line 2214 "src/ast/lex_conf.cc"
-yy463:
+#line 2207 "src/ast/lex_conf.cc"
+yy461:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy506;
+       if (yych == 'R') goto yy511;
        goto yy4;
-yy464:
+yy462:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy508;
-       goto yy4;
-yy465:
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 119 "../src/ast/lex_conf.re"
+       { opts.set_yymtagn      (lex_conf_string ()); return; }
+#line 2219 "src/ast/lex_conf.cc"
+yy464:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy509;
-       goto yy4;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 120 "../src/ast/lex_conf.re"
+       { opts.set_yymtagp      (lex_conf_string ()); return; }
+#line 2227 "src/ast/lex_conf.cc"
 yy466:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy510;
+       if (yych == 'R') goto yy513;
        goto yy4;
 yy467:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy511;
+       if (yych == 'N') goto yy514;
        goto yy4;
 yy468:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy512;
+       if (yych == 'A') goto yy515;
        goto yy4;
 yy469:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy513;
-       goto yy4;
-yy470:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy514;
-       goto yy4;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 117 "../src/ast/lex_conf.re"
+       { opts.set_yystagn      (lex_conf_string ()); return; }
+#line 2247 "src/ast/lex_conf.cc"
 yy471:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy515;
-       goto yy4;
-yy472:
-       yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy516;
-       goto yy4;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 118 "../src/ast/lex_conf.re"
+       { opts.set_yystagp      (lex_conf_string ()); return; }
+#line 2255 "src/ast/lex_conf.cc"
 yy473:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy517;
+       if (yych == 'o') goto yy516;
        goto yy4;
 yy474:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy518;
+       if (yych == 'e') goto yy517;
        goto yy4;
 yy475:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy519;
+       if (yych == 'e') goto yy518;
        goto yy4;
 yy476:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy520;
+       if (yych == '-') goto yy519;
        goto yy4;
 yy477:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy521;
+       if (yych == 't') goto yy520;
        goto yy4;
 yy478:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy523;
+       if (yych == 'm') goto yy521;
        goto yy4;
 yy479:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy524;
+       if (yych == 'i') goto yy522;
        goto yy4;
 yy480:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy525;
+       if (yych == 'a') goto yy523;
        goto yy4;
 yy481:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy526;
+       if (yych == '-') goto yy524;
        goto yy4;
 yy482:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy527;
+       if (yych == 'd') goto yy525;
        goto yy4;
 yy483:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy528;
+       if (yych == 'f') goto yy527;
        goto yy4;
 yy484:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy529;
+       if (yych == '-') goto yy528;
        goto yy4;
 yy485:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy531;
+       if (yych == '-') goto yy529;
        goto yy4;
 yy486:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy533;
+       if (yych == 'p') goto yy530;
        goto yy4;
 yy487:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy534;
+       if (yych == 'r') goto yy531;
        goto yy4;
 yy488:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy535;
+       if (yych == 'b') goto yy532;
        goto yy4;
 yy489:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy536;
+       if (yych == 'l') goto yy533;
        goto yy4;
 yy490:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy537;
+       if (yych == 'n') goto yy535;
        goto yy4;
 yy491:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy539;
+       if (yych == 'e') goto yy537;
        goto yy4;
 yy492:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy538;
+       goto yy4;
+yy493:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy539;
+       goto yy4;
+yy494:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy540;
+       goto yy4;
+yy495:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy541;
+       goto yy4;
+yy496:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy543;
+       goto yy4;
+yy497:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
@@ -2342,12 +2363,12 @@ yy492:
                opts.set_cGotoThreshold (static_cast<uint32_t> (n));
                return;
        }
-#line 2346 "src/ast/lex_conf.cc"
-yy494:
+#line 2367 "src/ast/lex_conf.cc"
+yy499:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy540;
+       if (yych == 'n') goto yy544;
        goto yy218;
-yy495:
+yy500:
        yych = (unsigned char)*++cur;
        if (yych <= 'B') {
                if (yych <= '/') {
@@ -2358,425 +2379,416 @@ yy495:
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= 'C') goto yy541;
+                       if (yych <= 'C') goto yy545;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy496;
+                       if (yych == '`') goto yy501;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy496:
+yy501:
 #line 111 "../src/ast/lex_conf.re"
        { opts.set_yybackup     (lex_conf_string ()); return; }
-#line 2372 "src/ast/lex_conf.cc"
-yy497:
+#line 2393 "src/ast/lex_conf.cc"
+yy502:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy542;
+       if (yych == 'P') goto yy546;
        goto yy4;
-yy498:
+yy503:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy543;
+       if (yych == 'K') goto yy547;
        goto yy4;
-yy499:
+yy504:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 104 "../src/ast/lex_conf.re"
        { opts.set_yycursor    (lex_conf_string ()); return; }
-#line 2388 "src/ast/lex_conf.cc"
-yy501:
+#line 2409 "src/ast/lex_conf.cc"
+yy506:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy544;
+       if (yych == 'a') goto yy548;
        goto yy4;
-yy502:
+yy507:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy545;
+       if (yych == 'e') goto yy549;
        goto yy218;
-yy503:
+yy508:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy546;
+       if (yych == 'D') goto yy550;
        goto yy4;
-yy504:
+yy509:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy547;
+       if (yych == 'T') goto yy551;
        goto yy4;
-yy505:
+yy510:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy548;
+       if (yych == 'A') goto yy552;
        goto yy4;
-yy506:
+yy511:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 105 "../src/ast/lex_conf.re"
        { opts.set_yymarker    (lex_conf_string ()); return; }
-#line 2416 "src/ast/lex_conf.cc"
-yy508:
-       yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy549;
-       goto yy4;
-yy509:
-       yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy551;
-       goto yy4;
-yy510:
-       yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy552;
-       goto yy4;
-yy511:
-       yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy553;
-       goto yy4;
-yy512:
-       yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy554;
-       goto yy4;
+#line 2437 "src/ast/lex_conf.cc"
 yy513:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy555;
+       if (yych == 'E') goto yy553;
        goto yy4;
 yy514:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy556;
+       if (yych == 'D') goto yy555;
        goto yy4;
 yy515:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy557;
+       if (yych == 'T') goto yy556;
        goto yy4;
 yy516:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy558;
+       if (yych == 'r') goto yy557;
        goto yy4;
 yy517:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy559;
+       if (yych == 'n') goto yy558;
        goto yy4;
 yy518:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy560;
+       if (yych == 'r') goto yy559;
        goto yy4;
 yy519:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy562;
+       if (yych == 'g') goto yy560;
        goto yy4;
 yy520:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy563;
+       if (yych == 'p') goto yy561;
        goto yy4;
 yy521:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy562;
+       goto yy4;
+yy522:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy563;
+       goto yy4;
+yy523:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy565;
+       goto yy4;
+yy524:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy566;
+       goto yy4;
+yy525:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 50 "../src/ast/lex_conf.re"
        { opts.set_lookahead(lex_conf_bool());          return; }
-#line 2476 "src/ast/lex_conf.cc"
-yy523:
+#line 2493 "src/ast/lex_conf.cc"
+yy527:
        yych = (unsigned char)*++cur;
        if (yych == 's') goto yy108;
        goto yy4;
-yy524:
+yy528:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy564;
+       if (yych == 'i') goto yy567;
        goto yy4;
-yy525:
+yy529:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy565;
+       if (yych == 't') goto yy568;
        goto yy4;
-yy526:
+yy530:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy566;
+       if (yych == 't') goto yy569;
        goto yy4;
-yy527:
+yy531:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy567;
+       if (yych == 's') goto yy570;
        goto yy4;
-yy528:
+yy532:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy568;
+       if (yych == 'e') goto yy571;
        goto yy4;
-yy529:
+yy533:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 87 "../src/ast/lex_conf.re"
        { opts.set_bUseStateNext   (lex_conf_bool()); return; }
-#line 2508 "src/ast/lex_conf.cc"
-yy531:
+#line 2525 "src/ast/lex_conf.cc"
+yy535:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 123 "../src/ast/lex_conf.re"
        { opts.set_tags_expression(lex_conf_string ()); return; }
-#line 2516 "src/ast/lex_conf.cc"
-yy533:
+#line 2533 "src/ast/lex_conf.cc"
+yy537:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy569;
+       if (yych == 'p') goto yy572;
        goto yy4;
-yy534:
+yy538:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy570;
+       if (yych == 'l') goto yy573;
        goto yy4;
-yy535:
+yy539:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy571;
+       if (yych == 'l') goto yy574;
        goto yy4;
-yy536:
+yy540:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy572;
+       if (yych == 'e') goto yy575;
        goto yy4;
-yy537:
+yy541:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 141 "../src/ast/lex_conf.re"
        { opts.set_yychConversion (lex_conf_bool()); return; }
-#line 2540 "src/ast/lex_conf.cc"
-yy539:
-       yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy573;
-       goto yy4;
-yy540:
-       yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy575;
-       goto yy218;
-yy541:
-       yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy577;
-       goto yy4;
-yy542:
-       yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy578;
-       goto yy4;
+#line 2557 "src/ast/lex_conf.cc"
 yy543:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy580;
+       if (yych == 'r') goto yy576;
        goto yy4;
 yy544:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy581;
-       goto yy4;
+       if (yych == 'd') goto yy578;
+       goto yy218;
 yy545:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy582;
-       goto yy218;
+       if (yych == 'T') goto yy580;
+       goto yy4;
 yy546:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy584;
+       if (yych == 'E') goto yy581;
        goto yy4;
 yy547:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy585;
+       if (yych == 'E') goto yy583;
        goto yy4;
 yy548:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy587;
+       if (yych == 'k') goto yy584;
        goto yy4;
 yy549:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy585;
+       goto yy218;
+yy550:
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy587;
+       goto yy4;
+yy551:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy588;
+       goto yy4;
+yy552:
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy590;
+       goto yy4;
+yy553:
        yych = (unsigned char)*++cur;
        if (yych <= 'C') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= ':') goto yy3;
-                       if (yych <= '@') goto yy550;
+                       if (yych <= '@') goto yy554;
                        if (yych <= 'B') goto yy3;
-                       goto yy589;
+                       goto yy592;
                }
        } else {
                if (yych <= '^') {
-                       if (yych == 'T') goto yy590;
+                       if (yych == 'T') goto yy593;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy550;
+                       if (yych == '`') goto yy554;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy550:
+yy554:
 #line 113 "../src/ast/lex_conf.re"
        { opts.set_yyrestore    (lex_conf_string ()); return; }
-#line 2604 "src/ast/lex_conf.cc"
-yy551:
+#line 2621 "src/ast/lex_conf.cc"
+yy555:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy591;
+       if (yych == 'I') goto yy594;
        goto yy4;
-yy552:
+yy556:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy592;
+       if (yych == 'E') goto yy595;
        goto yy4;
-yy553:
+yy557:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy594;
-       if (yych == 'P') goto yy596;
+       if (yych == 's') goto yy597;
        goto yy4;
-yy554:
+yy558:
        yych = (unsigned char)*++cur;
        if (yych == 's') goto yy598;
        goto yy4;
-yy555:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy599;
-       goto yy4;
-yy556:
+yy559:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy600;
+       if (yych == 't') goto yy599;
        goto yy4;
-yy557:
+yy560:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy601;
+       if (yych == 'o') goto yy600;
        goto yy4;
-yy558:
+yy561:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy602;
+       if (yych == 'u') goto yy601;
        goto yy4;
-yy559:
+yy562:
        yych = (unsigned char)*++cur;
-       if (yych == 'z') goto yy603;
+       if (yych == 'z') goto yy602;
        goto yy4;
-yy560:
+yy563:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 52 "../src/ast/lex_conf.re"
        { opts.set_eager_skip(lex_conf_bool());         return; }
-#line 2649 "src/ast/lex_conf.cc"
-yy562:
+#line 2661 "src/ast/lex_conf.cc"
+yy565:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy604;
+       if (yych == 's') goto yy603;
        goto yy4;
-yy563:
+yy566:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy606;
+       if (yych == 'o') goto yy605;
        goto yy4;
-yy564:
+yy567:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy607;
+       if (yych == 'n') goto yy606;
        goto yy4;
-yy565:
+yy568:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy608;
+       if (yych == 'a') goto yy607;
        goto yy4;
-yy566:
+yy569:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy609;
+       if (yych == 'u') goto yy608;
        goto yy4;
-yy567:
+yy570:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy114;
-yy568:
+yy571:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy610;
+       if (yych == 'l') goto yy609;
        goto yy4;
-yy569:
+yy572:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy612;
+       if (yych == 't') goto yy611;
        goto yy4;
-yy570:
+yy573:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy614;
+       if (yych == 'e') goto yy613;
        goto yy4;
-yy571:
+yy574:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy616;
+       if (yych == 'e') goto yy615;
        goto yy4;
-yy572:
+yy575:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy618;
+       if (yych == 't') goto yy617;
        goto yy4;
-yy573:
+yy576:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 147 "../src/ast/lex_conf.re"
        { opts.set_fill_arg_use (lex_conf_bool()); return; }
-#line 2703 "src/ast/lex_conf.cc"
-yy575:
+#line 2715 "src/ast/lex_conf.cc"
+yy578:
        ++cur;
 #line 74 "../src/ast/lex_conf.re"
        { opts.set_condDividerParam (lex_conf_string ()); return; }
-#line 2708 "src/ast/lex_conf.cc"
-yy577:
+#line 2720 "src/ast/lex_conf.cc"
+yy580:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy620;
+       if (yych == 'X') goto yy619;
        goto yy4;
-yy578:
+yy581:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 65 "../src/ast/lex_conf.re"
        { opts.set_yycondtype       (lex_conf_string ()); return; }
-#line 2720 "src/ast/lex_conf.cc"
-yy580:
+#line 2732 "src/ast/lex_conf.cc"
+yy583:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy622;
+       if (yych == 'R') goto yy621;
        goto yy4;
-yy581:
+yy584:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy624;
+       if (yych == 'e') goto yy623;
        goto yy4;
-yy582:
+yy585:
        ++cur;
 #line 146 "../src/ast/lex_conf.re"
        { opts.set_fill_arg     (lex_conf_string ()); return; }
-#line 2733 "src/ast/lex_conf.cc"
-yy584:
+#line 2745 "src/ast/lex_conf.cc"
+yy587:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy625;
+       if (yych == 'T') goto yy624;
        goto yy4;
-yy585:
+yy588:
        yych = (unsigned char)*++cur;
        if (yych <= '@') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy626;
+                       if (yych <= ':') goto yy625;
                }
        } else {
                if (yych <= '_') {
                        if (yych <= 'Z') goto yy3;
                        if (yych >= '_') goto yy3;
                } else {
-                       if (yych <= '`') goto yy586;
+                       if (yych <= '`') goto yy589;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy586:
+yy589:
 #line 79 "../src/ast/lex_conf.re"
        { opts.set_state_get       (lex_conf_string ()); return; }
-#line 2759 "src/ast/lex_conf.cc"
-yy587:
+#line 2771 "src/ast/lex_conf.cc"
+yy590:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 116 "../src/ast/lex_conf.re"
        { opts.set_yylessthan   (lex_conf_string ()); return; }
-#line 2767 "src/ast/lex_conf.cc"
-yy589:
+#line 2779 "src/ast/lex_conf.cc"
+yy592:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy627;
+       if (yych == 'T') goto yy626;
        goto yy4;
-yy590:
+yy593:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy628;
+       if (yych == 'A') goto yy627;
        goto yy4;
-yy591:
+yy594:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy629;
+       if (yych == 'T') goto yy628;
        goto yy4;
-yy592:
+yy595:
        yyaccept = 4;
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= '?') {
@@ -2784,50 +2796,38 @@ yy592:
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy630;
+                       if (yych <= ':') goto yy629;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy631;
+                       if (yych <= '@') goto yy630;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy593;
+                       if (yych == '`') goto yy596;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy593:
+yy596:
 #line 81 "../src/ast/lex_conf.re"
        { opts.set_state_set       (lex_conf_string ()); return; }
-#line 2802 "src/ast/lex_conf.cc"
-yy594:
-       yych = (unsigned char)*++cur;
-       if (yybm[0+yych] & 32) {
-               goto yy3;
-       }
-#line 119 "../src/ast/lex_conf.re"
-       { opts.set_yytaglistn   (lex_conf_string ()); return; }
-#line 2810 "src/ast/lex_conf.cc"
-yy596:
+#line 2814 "src/ast/lex_conf.cc"
+yy597:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 120 "../src/ast/lex_conf.re"
-       { opts.set_yytaglistp   (lex_conf_string ()); return; }
-#line 2818 "src/ast/lex_conf.cc"
+       goto yy94;
 yy598:
        yych = (unsigned char)*++cur;
-       if (yybm[0+yych] & 32) {
-               goto yy3;
-       }
-       goto yy94;
+       if (yych == 'i') goto yy631;
+       goto yy4;
 yy599:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy632;
+       if (yych == 'e') goto yy632;
        goto yy4;
 yy600:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy633;
+       if (yych == 't') goto yy633;
        goto yy4;
 yy601:
        yych = (unsigned char)*++cur;
@@ -2835,315 +2835,311 @@ yy601:
        goto yy4;
 yy602:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy635;
+       if (yych == 'a') goto yy635;
        goto yy4;
 yy603:
-       yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy636;
-       goto yy4;
-yy604:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 62 "../src/ast/lex_conf.re"
        { lex_conf_empty_class(opts);      return; }
-#line 2852 "src/ast/lex_conf.cc"
+#line 2848 "src/ast/lex_conf.cc"
+yy605:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy636;
+       goto yy4;
 yy606:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy637;
+       if (yych == 'f') goto yy637;
        goto yy4;
 yy607:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy638;
+       if (yych == 'g') goto yy638;
        goto yy4;
 yy608:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy639;
+       if (yych == 'r') goto yy639;
        goto yy4;
 yy609:
-       yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy640;
-       goto yy4;
-yy610:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 84 "../src/ast/lex_conf.re"
        { opts.set_yyfilllabel     (lex_conf_string ()); return; }
-#line 2876 "src/ast/lex_conf.cc"
-yy612:
+#line 2872 "src/ast/lex_conf.cc"
+yy611:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 88 "../src/ast/lex_conf.re"
        { opts.set_yyaccept        (lex_conf_string ()); return; }
-#line 2884 "src/ast/lex_conf.cc"
-yy614:
+#line 2880 "src/ast/lex_conf.cc"
+yy613:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 77 "../src/ast/lex_conf.re"
        { opts.set_yyctable         (lex_conf_string ()); return; }
-#line 2892 "src/ast/lex_conf.cc"
-yy616:
+#line 2888 "src/ast/lex_conf.cc"
+yy615:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 158 "../src/ast/lex_conf.re"
        { lex_conf_string (); return; }
-#line 2900 "src/ast/lex_conf.cc"
-yy618:
+#line 2896 "src/ast/lex_conf.cc"
+yy617:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 102 "../src/ast/lex_conf.re"
        { opts.set_yytarget (lex_conf_string ()); return; }
-#line 2908 "src/ast/lex_conf.cc"
-yy620:
+#line 2904 "src/ast/lex_conf.cc"
+yy619:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 112 "../src/ast/lex_conf.re"
        { opts.set_yybackupctx  (lex_conf_string ()); return; }
-#line 2916 "src/ast/lex_conf.cc"
-yy622:
+#line 2912 "src/ast/lex_conf.cc"
+yy621:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 106 "../src/ast/lex_conf.re"
        { opts.set_yyctxmarker (lex_conf_string ()); return; }
-#line 2924 "src/ast/lex_conf.cc"
+#line 2920 "src/ast/lex_conf.cc"
+yy623:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy640;
+       goto yy4;
 yy624:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy641;
+       if (yych == 'I') goto yy642;
        goto yy4;
 yy625:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy643;
+       if (yych == 'n') goto yy643;
        goto yy4;
 yy626:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy644;
+       if (yych == 'X') goto yy644;
        goto yy4;
 yy627:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy645;
+       if (yych == 'G') goto yy646;
        goto yy4;
 yy628:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy647;
+       if (yych == 'I') goto yy648;
        goto yy4;
 yy629:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy649;
+       if (yych == 'n') goto yy649;
        goto yy4;
 yy630:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy650;
-       goto yy4;
+       if (yych == 's') goto yy650;
+       goto yy218;
 yy631:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy651;
-       goto yy218;
+       if (yych == 't') goto yy651;
+       goto yy4;
 yy632:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy652;
+       if (yych == 'd') goto yy652;
        goto yy4;
 yy633:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy653;
+       if (yych == 'o') goto yy654;
        goto yy4;
 yy634:
-       yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy655;
-       goto yy4;
-yy635:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy97;
+yy635:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy655;
+       goto yy4;
 yy636:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy656;
+       if (yych == 'i') goto yy656;
        goto yy4;
 yy637:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy657;
+       if (yych == 'o') goto yy657;
        goto yy4;
 yy638:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy658;
+       if (yych == 's') goto yy658;
        goto yy4;
 yy639:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy659;
+       if (yych == 'e') goto yy660;
        goto yy4;
 yy640:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy661;
-       goto yy4;
-yy641:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 148 "../src/ast/lex_conf.re"
        { opts.set_fill_naked   (lex_conf_bool()); return; }
-#line 3002 "src/ast/lex_conf.cc"
-yy643:
+#line 2998 "src/ast/lex_conf.cc"
+yy642:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy662;
+       if (yych == 'O') goto yy661;
        goto yy4;
-yy644:
+yy643:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy663;
+       if (yych == 'a') goto yy662;
        goto yy4;
-yy645:
+yy644:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 114 "../src/ast/lex_conf.re"
        { opts.set_yyrestorectx (lex_conf_string ()); return; }
-#line 3018 "src/ast/lex_conf.cc"
-yy647:
+#line 3014 "src/ast/lex_conf.cc"
+yy646:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 115 "../src/ast/lex_conf.re"
        { opts.set_yyrestoretag (lex_conf_string ()); return; }
-#line 3026 "src/ast/lex_conf.cc"
-yy649:
+#line 3022 "src/ast/lex_conf.cc"
+yy648:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy664;
+       if (yych == 'O') goto yy663;
        goto yy4;
-yy650:
+yy649:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy665;
+       if (yych == 'a') goto yy664;
        goto yy4;
-yy651:
+yy650:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy666;
+       if (yych == 't') goto yy665;
        goto yy218;
-yy652:
+yy651:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy667;
+       if (yych == 'i') goto yy666;
        goto yy4;
-yy653:
+yy652:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 49 "../src/ast/lex_conf.re"
        { opts.set_bCaseInverted(lex_conf_bool());      return; }
-#line 3050 "src/ast/lex_conf.cc"
-yy655:
+#line 3046 "src/ast/lex_conf.cc"
+yy654:
        yych = (unsigned char)*++cur;
        if (yych == 's') goto yy100;
        goto yy4;
-yy656:
+yy655:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy668;
+       if (yych == 'i') goto yy667;
        goto yy4;
-yy657:
+yy656:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy669;
+       if (yych == 'c') goto yy668;
        goto yy4;
-yy658:
+yy657:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy103;
-yy659:
+yy658:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 51 "../src/ast/lex_conf.re"
        { opts.set_optimize_tags(lex_conf_bool());      return; }
-#line 3076 "src/ast/lex_conf.cc"
+#line 3072 "src/ast/lex_conf.cc"
+yy660:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy669;
+       goto yy4;
 yy661:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy670;
+       if (yych == 'N') goto yy671;
        goto yy4;
 yy662:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy672;
+       if (yych == 'k') goto yy673;
        goto yy4;
 yy663:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy674;
+       if (yych == 'N') goto yy674;
        goto yy4;
 yy664:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy675;
+       if (yych == 'k') goto yy676;
        goto yy4;
 yy665:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy677;
-       goto yy4;
+       if (yych == 'a') goto yy677;
+       goto yy218;
 yy666:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy678;
-       goto yy218;
+       if (yych == 'v') goto yy678;
+       goto yy4;
 yy667:
        yych = (unsigned char)*++cur;
-       if (yych == 'v') goto yy679;
+       if (yych == 'o') goto yy679;
        goto yy4;
 yy668:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy680;
+       if (yych == 'y') goto yy680;
        goto yy4;
 yy669:
-       yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy681;
-       goto yy4;
-yy670:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 47 "../src/ast/lex_conf.re"
        { opts.set_posix_captures(lex_conf_bool());     return; }
-#line 3120 "src/ast/lex_conf.cc"
-yy672:
+#line 3116 "src/ast/lex_conf.cc"
+yy671:
        yych = (unsigned char)*++cur;
        if (yych <= '@') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy683;
+                       if (yych <= ':') goto yy682;
                }
        } else {
                if (yych <= '_') {
                        if (yych <= 'Z') goto yy3;
                        if (yych >= '_') goto yy3;
                } else {
-                       if (yych <= '`') goto yy673;
+                       if (yych <= '`') goto yy672;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy673:
+yy672:
 #line 66 "../src/ast/lex_conf.re"
        { opts.set_cond_get         (lex_conf_string ()); return; }
-#line 3142 "src/ast/lex_conf.cc"
-yy674:
+#line 3138 "src/ast/lex_conf.cc"
+yy673:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy684;
+       if (yych == 'e') goto yy683;
        goto yy4;
-yy675:
+yy674:
        yyaccept = 5;
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= '?') {
@@ -3151,171 +3147,171 @@ yy675:
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy685;
+                       if (yych <= ':') goto yy684;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy686;
+                       if (yych <= '@') goto yy685;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy676;
+                       if (yych == '`') goto yy675;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy676:
+yy675:
 #line 68 "../src/ast/lex_conf.re"
        { opts.set_cond_set         (lex_conf_string ()); return; }
-#line 3169 "src/ast/lex_conf.cc"
-yy677:
+#line 3165 "src/ast/lex_conf.cc"
+yy676:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy687;
+       if (yych == 'e') goto yy686;
        goto yy4;
-yy678:
+yy677:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy688;
+       if (yych == 't') goto yy687;
        goto yy218;
-yy679:
+yy678:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy689;
+       if (yych == 'e') goto yy688;
        goto yy4;
-yy680:
+yy679:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy691;
+       if (yych == 'n') goto yy690;
        goto yy4;
-yy681:
+yy680:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 60 "../src/ast/lex_conf.re"
        { lex_conf_encoding_policy(opts);  return; }
-#line 3193 "src/ast/lex_conf.cc"
+#line 3189 "src/ast/lex_conf.cc"
+yy682:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy692;
+       goto yy4;
 yy683:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy693;
+       if (yych == 'd') goto yy693;
        goto yy4;
 yy684:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy694;
+       if (yych == 'n') goto yy695;
        goto yy4;
 yy685:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy696;
-       goto yy4;
-yy686:
-       yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy697;
+       if (yych == 'c') goto yy696;
        goto yy218;
-yy687:
+yy686:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy698;
+       if (yych == 'd') goto yy697;
        goto yy4;
-yy688:
+yy687:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy700;
+       if (yych == 'e') goto yy699;
        goto yy218;
-yy689:
+yy688:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 48 "../src/ast/lex_conf.re"
        { opts.set_bCaseInsensitive(lex_conf_bool());   return; }
-#line 3225 "src/ast/lex_conf.cc"
-yy691:
+#line 3221 "src/ast/lex_conf.cc"
+yy690:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 63 "../src/ast/lex_conf.re"
        { lex_conf_dfa_minimization(opts); return; }
-#line 3233 "src/ast/lex_conf.cc"
-yy693:
+#line 3229 "src/ast/lex_conf.cc"
+yy692:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy702;
+       if (yych == 'a') goto yy701;
        goto yy4;
-yy694:
+yy693:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 80 "../src/ast/lex_conf.re"
        { opts.set_state_get_naked (lex_conf_bool()); return; }
-#line 3245 "src/ast/lex_conf.cc"
-yy696:
+#line 3241 "src/ast/lex_conf.cc"
+yy695:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy703;
+       if (yych == 'a') goto yy702;
        goto yy4;
-yy697:
+yy696:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy704;
+       if (yych == 'o') goto yy703;
        goto yy218;
-yy698:
+yy697:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 82 "../src/ast/lex_conf.re"
        { opts.set_state_set_naked (lex_conf_bool()); return; }
-#line 3261 "src/ast/lex_conf.cc"
-yy700:
+#line 3257 "src/ast/lex_conf.cc"
+yy699:
        ++cur;
 #line 83 "../src/ast/lex_conf.re"
        { opts.set_state_set_arg   (lex_conf_string ()); return; }
-#line 3266 "src/ast/lex_conf.cc"
+#line 3262 "src/ast/lex_conf.cc"
+yy701:
+       yych = (unsigned char)*++cur;
+       if (yych == 'k') goto yy704;
+       goto yy4;
 yy702:
        yych = (unsigned char)*++cur;
        if (yych == 'k') goto yy705;
        goto yy4;
 yy703:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy706;
-       goto yy4;
+       if (yych == 'n') goto yy706;
+       goto yy218;
 yy704:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy707;
-       goto yy218;
+       if (yych == 'e') goto yy707;
+       goto yy4;
 yy705:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy708;
        goto yy4;
 yy706:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy709;
-       goto yy4;
+       if (yych == 'd') goto yy709;
+       goto yy218;
 yy707:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy710;
-       goto yy218;
+       if (yych == 'd') goto yy711;
+       goto yy4;
 yy708:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy712;
+       if (yych == 'd') goto yy713;
        goto yy4;
 yy709:
-       yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy714;
-       goto yy4;
-yy710:
        ++cur;
 #line 69 "../src/ast/lex_conf.re"
        { opts.set_cond_set_arg     (lex_conf_string ()); return; }
-#line 3303 "src/ast/lex_conf.cc"
-yy712:
+#line 3299 "src/ast/lex_conf.cc"
+yy711:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 67 "../src/ast/lex_conf.re"
        { opts.set_cond_get_naked   (lex_conf_bool()); return; }
-#line 3311 "src/ast/lex_conf.cc"
-yy714:
+#line 3307 "src/ast/lex_conf.cc"
+yy713:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 70 "../src/ast/lex_conf.re"
        { opts.set_cond_set_naked   (lex_conf_bool()); return; }
-#line 3319 "src/ast/lex_conf.cc"
+#line 3315 "src/ast/lex_conf.cc"
 }
 #line 165 "../src/ast/lex_conf.re"
 
@@ -3325,100 +3321,100 @@ void Scanner::lex_conf_encoding_policy(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3329 "src/ast/lex_conf.cc"
+#line 3325 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 10) fill(10);
        yych = (unsigned char)*cur;
        if (yych <= 'h') {
-               if (yych == 'f') goto yy720;
+               if (yych == 'f') goto yy719;
        } else {
-               if (yych <= 'i') goto yy721;
-               if (yych == 's') goto yy722;
+               if (yych <= 'i') goto yy720;
+               if (yych == 's') goto yy721;
        }
        ++cur;
-yy719:
+yy718:
 #line 172 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'ignore', 'substitute', 'fail')"); }
-#line 3345 "src/ast/lex_conf.cc"
+#line 3341 "src/ast/lex_conf.cc"
+yy719:
+       yych = (unsigned char)*(mar = ++cur);
+       if (yych == 'a') goto yy722;
+       goto yy718;
 yy720:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'a') goto yy723;
-       goto yy719;
+       if (yych == 'g') goto yy724;
+       goto yy718;
 yy721:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'g') goto yy725;
-       goto yy719;
+       if (yych == 'u') goto yy725;
+       goto yy718;
 yy722:
-       yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'u') goto yy726;
-       goto yy719;
-yy723:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy727;
-yy724:
+       if (yych == 'i') goto yy726;
+yy723:
        cur = mar;
-       goto yy719;
+       goto yy718;
+yy724:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy727;
+       goto yy723;
 yy725:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy728;
-       goto yy724;
+       if (yych == 'b') goto yy728;
+       goto yy723;
 yy726:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy729;
-       goto yy724;
+       if (yych == 'l') goto yy729;
+       goto yy723;
 yy727:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy730;
-       goto yy724;
+       if (yych == 'o') goto yy731;
+       goto yy723;
 yy728:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy732;
-       goto yy724;
+       if (yych == 's') goto yy732;
+       goto yy723;
 yy729:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy733;
-       goto yy724;
-yy730:
        ++cur;
 #line 176 "../src/ast/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_FAIL);       goto end; }
-#line 3388 "src/ast/lex_conf.cc"
+#line 3384 "src/ast/lex_conf.cc"
+yy731:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy733;
+       goto yy723;
 yy732:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy734;
-       goto yy724;
+       if (yych == 't') goto yy734;
+       goto yy723;
 yy733:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy735;
-       goto yy724;
+       if (yych == 'e') goto yy735;
+       goto yy723;
 yy734:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy736;
-       goto yy724;
+       if (yych == 'i') goto yy737;
+       goto yy723;
 yy735:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy738;
-       goto yy724;
-yy736:
        ++cur;
 #line 174 "../src/ast/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_IGNORE);     goto end; }
-#line 3409 "src/ast/lex_conf.cc"
-yy738:
+#line 3405 "src/ast/lex_conf.cc"
+yy737:
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy724;
+       if (yych != 't') goto yy723;
        yych = (unsigned char)*++cur;
-       if (yych != 'u') goto yy724;
+       if (yych != 'u') goto yy723;
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy724;
+       if (yych != 't') goto yy723;
        yych = (unsigned char)*++cur;
-       if (yych != 'e') goto yy724;
+       if (yych != 'e') goto yy723;
        ++cur;
 #line 175 "../src/ast/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); goto end; }
-#line 3422 "src/ast/lex_conf.cc"
+#line 3418 "src/ast/lex_conf.cc"
 }
 #line 177 "../src/ast/lex_conf.re"
 
@@ -3430,75 +3426,75 @@ void Scanner::lex_conf_input(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3434 "src/ast/lex_conf.cc"
+#line 3430 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 7) fill(7);
        yych = (unsigned char)*cur;
-       if (yych <= 'b') goto yy746;
-       if (yych <= 'c') goto yy748;
-       if (yych <= 'd') goto yy749;
-yy746:
+       if (yych <= 'b') goto yy745;
+       if (yych <= 'c') goto yy747;
+       if (yych <= 'd') goto yy748;
+yy745:
        ++cur;
-yy747:
+yy746:
 #line 186 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'default', 'custom')"); }
-#line 3448 "src/ast/lex_conf.cc"
+#line 3444 "src/ast/lex_conf.cc"
+yy747:
+       yych = (unsigned char)*(mar = ++cur);
+       if (yych == 'u') goto yy749;
+       goto yy746;
 yy748:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'u') goto yy750;
-       goto yy747;
+       if (yych == 'e') goto yy751;
+       goto yy746;
 yy749:
-       yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'e') goto yy752;
-       goto yy747;
-yy750:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy753;
-yy751:
+       if (yych == 's') goto yy752;
+yy750:
        cur = mar;
-       goto yy747;
+       goto yy746;
+yy751:
+       yych = (unsigned char)*++cur;
+       if (yych == 'f') goto yy753;
+       goto yy750;
 yy752:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy754;
-       goto yy751;
+       if (yych == 't') goto yy754;
+       goto yy750;
 yy753:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy755;
-       goto yy751;
+       if (yych == 'a') goto yy755;
+       goto yy750;
 yy754:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy756;
-       goto yy751;
+       if (yych == 'o') goto yy756;
+       goto yy750;
 yy755:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy757;
-       goto yy751;
+       if (yych == 'u') goto yy757;
+       goto yy750;
 yy756:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy758;
-       goto yy751;
+       if (yych == 'm') goto yy758;
+       goto yy750;
 yy757:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy759;
-       goto yy751;
+       if (yych == 'l') goto yy760;
+       goto yy750;
 yy758:
-       yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy761;
-       goto yy751;
-yy759:
        ++cur;
 #line 189 "../src/ast/lex_conf.re"
        { opts.set_input_api(INPUT_CUSTOM);  goto end; }
-#line 3495 "src/ast/lex_conf.cc"
-yy761:
+#line 3491 "src/ast/lex_conf.cc"
+yy760:
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy751;
+       if (yych != 't') goto yy750;
        ++cur;
 #line 188 "../src/ast/lex_conf.re"
        { opts.set_input_api(INPUT_DEFAULT); goto end; }
-#line 3502 "src/ast/lex_conf.cc"
+#line 3498 "src/ast/lex_conf.cc"
 }
 #line 190 "../src/ast/lex_conf.re"
 
@@ -3510,103 +3506,103 @@ void Scanner::lex_conf_empty_class(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3514 "src/ast/lex_conf.cc"
+#line 3510 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 11) fill(11);
        yych = (unsigned char)*cur;
-       if (yych == 'e') goto yy768;
-       if (yych == 'm') goto yy769;
+       if (yych == 'e') goto yy767;
+       if (yych == 'm') goto yy768;
        ++cur;
-yy767:
+yy766:
 #line 199 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'match-empty', 'match-none', 'error')"); }
-#line 3526 "src/ast/lex_conf.cc"
+#line 3522 "src/ast/lex_conf.cc"
+yy767:
+       yych = (unsigned char)*(mar = ++cur);
+       if (yych == 'r') goto yy769;
+       goto yy766;
 yy768:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'r') goto yy770;
-       goto yy767;
+       if (yych == 'a') goto yy771;
+       goto yy766;
 yy769:
-       yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'a') goto yy772;
-       goto yy767;
-yy770:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy773;
-yy771:
+       if (yych == 'r') goto yy772;
+yy770:
        cur = mar;
-       goto yy767;
+       goto yy766;
+yy771:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy773;
+       goto yy770;
 yy772:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy774;
-       goto yy771;
+       if (yych == 'o') goto yy774;
+       goto yy770;
 yy773:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy775;
-       goto yy771;
+       if (yych == 'c') goto yy775;
+       goto yy770;
 yy774:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy776;
-       goto yy771;
+       if (yych == 'r') goto yy776;
+       goto yy770;
 yy775:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy777;
-       goto yy771;
+       if (yych == 'h') goto yy778;
+       goto yy770;
 yy776:
-       yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy779;
-       goto yy771;
-yy777:
        ++cur;
 #line 203 "../src/ast/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_ERROR);       goto end; }
-#line 3565 "src/ast/lex_conf.cc"
-yy779:
+#line 3561 "src/ast/lex_conf.cc"
+yy778:
        yych = (unsigned char)*++cur;
-       if (yych != '-') goto yy771;
+       if (yych != '-') goto yy770;
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy781;
-       if (yych == 'n') goto yy782;
-       goto yy771;
+       if (yych == 'e') goto yy780;
+       if (yych == 'n') goto yy781;
+       goto yy770;
+yy780:
+       yych = (unsigned char)*++cur;
+       if (yych == 'm') goto yy782;
+       goto yy770;
 yy781:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy783;
-       goto yy771;
+       if (yych == 'o') goto yy783;
+       goto yy770;
 yy782:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy784;
-       goto yy771;
+       if (yych == 'p') goto yy784;
+       goto yy770;
 yy783:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy785;
-       goto yy771;
+       if (yych == 'n') goto yy785;
+       goto yy770;
 yy784:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy786;
-       goto yy771;
+       if (yych == 't') goto yy786;
+       goto yy770;
 yy785:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy787;
-       goto yy771;
+       if (yych == 'e') goto yy787;
+       goto yy770;
 yy786:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy788;
-       goto yy771;
+       if (yych == 'y') goto yy789;
+       goto yy770;
 yy787:
-       yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy790;
-       goto yy771;
-yy788:
        ++cur;
 #line 202 "../src/ast/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE);  goto end; }
-#line 3605 "src/ast/lex_conf.cc"
-yy790:
+#line 3601 "src/ast/lex_conf.cc"
+yy789:
        ++cur;
 #line 201 "../src/ast/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); goto end; }
-#line 3610 "src/ast/lex_conf.cc"
+#line 3606 "src/ast/lex_conf.cc"
 }
 #line 204 "../src/ast/lex_conf.re"
 
@@ -3618,63 +3614,63 @@ void Scanner::lex_conf_dfa_minimization(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3622 "src/ast/lex_conf.cc"
+#line 3618 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 5) fill(5);
        yych = (unsigned char)*cur;
-       if (yych == 'm') goto yy796;
-       if (yych == 't') goto yy797;
+       if (yych == 'm') goto yy795;
+       if (yych == 't') goto yy796;
        ++cur;
-yy795:
+yy794:
 #line 213 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'table', 'moore')"); }
-#line 3634 "src/ast/lex_conf.cc"
+#line 3630 "src/ast/lex_conf.cc"
+yy795:
+       yych = (unsigned char)*(mar = ++cur);
+       if (yych == 'o') goto yy797;
+       goto yy794;
 yy796:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'o') goto yy798;
-       goto yy795;
+       if (yych == 'a') goto yy799;
+       goto yy794;
 yy797:
-       yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'a') goto yy800;
-       goto yy795;
-yy798:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy801;
-yy799:
+       if (yych == 'o') goto yy800;
+yy798:
        cur = mar;
-       goto yy795;
+       goto yy794;
+yy799:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy801;
+       goto yy798;
 yy800:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy802;
-       goto yy799;
+       if (yych == 'r') goto yy802;
+       goto yy798;
 yy801:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy803;
-       goto yy799;
+       if (yych == 'l') goto yy803;
+       goto yy798;
 yy802:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy804;
-       goto yy799;
+       if (yych == 'e') goto yy804;
+       goto yy798;
 yy803:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy805;
-       goto yy799;
+       if (yych == 'e') goto yy806;
+       goto yy798;
 yy804:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy807;
-       goto yy799;
-yy805:
        ++cur;
 #line 216 "../src/ast/lex_conf.re"
        { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); goto end; }
-#line 3673 "src/ast/lex_conf.cc"
-yy807:
+#line 3669 "src/ast/lex_conf.cc"
+yy806:
        ++cur;
 #line 215 "../src/ast/lex_conf.re"
        { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); goto end; }
-#line 3678 "src/ast/lex_conf.cc"
+#line 3674 "src/ast/lex_conf.cc"
 }
 #line 217 "../src/ast/lex_conf.re"
 
@@ -3694,7 +3690,7 @@ void Scanner::lex_conf_enc(Enc::type_t enc, Opt &opts)
 void Scanner::lex_conf_assign ()
 {
 
-#line 3698 "src/ast/lex_conf.cc"
+#line 3694 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3734,47 +3730,47 @@ void Scanner::lex_conf_assign ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy813;
+               if (yych == '\t') goto yy812;
        } else {
-               if (yych <= ' ') goto yy813;
-               if (yych == '=') goto yy814;
+               if (yych <= ' ') goto yy812;
+               if (yych == '=') goto yy813;
        }
        ++cur;
-yy812:
+yy811:
 #line 234 "../src/ast/lex_conf.re"
        { fatal ("missing '=' in configuration"); }
-#line 3747 "src/ast/lex_conf.cc"
-yy813:
+#line 3743 "src/ast/lex_conf.cc"
+yy812:
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy817;
-               goto yy812;
+               if (yych == '\t') goto yy816;
+               goto yy811;
        } else {
-               if (yych <= ' ') goto yy817;
-               if (yych != '=') goto yy812;
+               if (yych <= ' ') goto yy816;
+               if (yych != '=') goto yy811;
        }
-yy814:
+yy813:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy814;
+               goto yy813;
        }
 #line 235 "../src/ast/lex_conf.re"
        { return; }
-#line 3766 "src/ast/lex_conf.cc"
-yy817:
+#line 3762 "src/ast/lex_conf.cc"
+yy816:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy817;
+               if (yych == '\t') goto yy816;
        } else {
-               if (yych <= ' ') goto yy817;
-               if (yych == '=') goto yy814;
+               if (yych <= ' ') goto yy816;
+               if (yych == '=') goto yy813;
        }
        cur = mar;
-       goto yy812;
+       goto yy811;
 }
 #line 236 "../src/ast/lex_conf.re"
 
@@ -3783,7 +3779,7 @@ yy817:
 void Scanner::lex_conf_semicolon ()
 {
 
-#line 3787 "src/ast/lex_conf.cc"
+#line 3783 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3823,37 +3819,37 @@ void Scanner::lex_conf_semicolon ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy824;
+               if (yych == '\t') goto yy823;
        } else {
-               if (yych <= ' ') goto yy824;
-               if (yych == ';') goto yy825;
+               if (yych <= ' ') goto yy823;
+               if (yych == ';') goto yy824;
        }
        ++cur;
-yy823:
+yy822:
 #line 242 "../src/ast/lex_conf.re"
        { fatal ("missing ending ';' in configuration"); }
-#line 3836 "src/ast/lex_conf.cc"
-yy824:
+#line 3832 "src/ast/lex_conf.cc"
+yy823:
        yych = (unsigned char)*(mar = ++cur);
        if (yybm[0+yych] & 128) {
-               goto yy827;
+               goto yy826;
        }
-       if (yych != ';') goto yy823;
-yy825:
+       if (yych != ';') goto yy822;
+yy824:
        ++cur;
 #line 243 "../src/ast/lex_conf.re"
        { return; }
-#line 3847 "src/ast/lex_conf.cc"
-yy827:
+#line 3843 "src/ast/lex_conf.cc"
+yy826:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy827;
+               goto yy826;
        }
-       if (yych == ';') goto yy825;
+       if (yych == ';') goto yy824;
        cur = mar;
-       goto yy823;
+       goto yy822;
 }
 #line 244 "../src/ast/lex_conf.re"
 
@@ -3869,7 +3865,7 @@ int32_t Scanner::lex_conf_number ()
        lex_conf_assign ();
        tok = cur;
 
-#line 3873 "src/ast/lex_conf.cc"
+#line 3869 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3909,20 +3905,20 @@ int32_t Scanner::lex_conf_number ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= '/') {
-               if (yych == '-') goto yy833;
+               if (yych == '-') goto yy832;
        } else {
-               if (yych <= '0') goto yy834;
-               if (yych <= '9') goto yy836;
+               if (yych <= '0') goto yy833;
+               if (yych <= '9') goto yy835;
        }
+yy831:
 yy832:
-yy833:
        yych = (unsigned char)*++cur;
-       if (yych <= '0') goto yy832;
-       if (yych <= '9') goto yy836;
-       goto yy832;
-yy834:
+       if (yych <= '0') goto yy831;
+       if (yych <= '9') goto yy835;
+       goto yy831;
+yy833:
        ++cur;
-yy835:
+yy834:
 #line 258 "../src/ast/lex_conf.re"
        {
                int32_t n = 0;
@@ -3933,15 +3929,15 @@ yy835:
                lex_conf_semicolon ();
                return n;
        }
-#line 3937 "src/ast/lex_conf.cc"
-yy836:
+#line 3933 "src/ast/lex_conf.cc"
+yy835:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy836;
+               goto yy835;
        }
-       goto yy835;
+       goto yy834;
 }
 #line 267 "../src/ast/lex_conf.re"
 
@@ -3953,7 +3949,7 @@ std::string Scanner::lex_conf_string ()
        std::string s;
        tok = cur;
 
-#line 3957 "src/ast/lex_conf.cc"
+#line 3953 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3994,36 +3990,36 @@ std::string Scanner::lex_conf_string ()
        yych = (unsigned char)*cur;
        if (yych <= '!') {
                if (yych <= '\n') {
-                       if (yych <= 0x08) goto yy841;
+                       if (yych <= 0x08) goto yy840;
                } else {
-                       if (yych != ' ') goto yy841;
+                       if (yych != ' ') goto yy840;
                }
        } else {
                if (yych <= '\'') {
-                       if (yych <= '"') goto yy844;
-                       if (yych <= '&') goto yy841;
-                       goto yy844;
+                       if (yych <= '"') goto yy843;
+                       if (yych <= '&') goto yy840;
+                       goto yy843;
                } else {
-                       if (yych != ';') goto yy841;
+                       if (yych != ';') goto yy840;
                }
        }
 #line 294 "../src/ast/lex_conf.re"
        { goto end; }
-#line 4013 "src/ast/lex_conf.cc"
-yy841:
+#line 4009 "src/ast/lex_conf.cc"
+yy840:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy841;
+               goto yy840;
        }
 #line 290 "../src/ast/lex_conf.re"
        {
                s = std::string(tok, tok_len());
                goto end;
        }
-#line 4026 "src/ast/lex_conf.cc"
-yy844:
+#line 4022 "src/ast/lex_conf.cc"
+yy843:
        ++cur;
 #line 276 "../src/ast/lex_conf.re"
        {
@@ -4040,7 +4036,7 @@ yy844:
                        }
                }
        }
-#line 4044 "src/ast/lex_conf.cc"
+#line 4040 "src/ast/lex_conf.cc"
 }
 #line 295 "../src/ast/lex_conf.re"
 
index 48981f42feab599e05d605436b75af31c24f1136..e1352561cecf9922dc4b1a10f37ad77bb0ad21c4 100644 (file)
@@ -37,7 +37,7 @@ DFA::DFA
        , charset(dfa.charset)
        , rules(dfa.rules)
        , tags(dfa.tags)
-       , listvers(dfa.listvers)
+       , mtagvers(dfa.mtagvers)
        , finvers(dfa.finvers)
        , tcpool(dfa.tcpool)
        , max_fill (0)
@@ -106,7 +106,7 @@ DFA::~DFA()
        delete &charset;
        delete &rules;
        delete &tags;
-       delete &listvers;
+       delete &mtagvers;
        delete[] finvers;
        delete &tcpool;
 }
index 50e3c1d3e6ea57362ecdaec2337215c4d0d04fc9..f62e9e843a0269a8e57380eb1c0933f8764a3aea 100644 (file)
@@ -70,7 +70,7 @@ struct DFA
        std::vector<uint32_t> &charset;
        std::valarray<Rule> &rules;
        std::vector<Tag> &tags;
-       std::set<tagver_t> &listvers;
+       std::set<tagver_t> &mtagvers;
        const tagver_t *finvers;
        tcpool_t &tcpool;
        size_t max_fill;
index 35155e13b6d3870aca98d9b069d81fa40d52b1d9..67cef7ddbeceb6ffca9df6cef8a140ed1f2cccaa 100644 (file)
@@ -256,7 +256,7 @@ void DFA::calc_stats(uint32_t line, bool explicit_tags)
        if (!explicit_tags && maxtagver > 1) {
                error("line %u: overlapping trailing contexts need "
                        "multiple context markers, use '-t, --tags' "
-                       "option and '/*!tags:re2c ... */' directive",
+                       "option and '/*!stags:re2c ... */' directive",
                        line);
                exit(1);
        }
index 80fbb5b4ba0dec14ff5a5f3569f5039d8d5257bd..47e5085510b13f0ac578726fe0a88c331da357d1 100644 (file)
@@ -112,13 +112,13 @@ echo:
                goto echo;
        }
 
-       "/*!tags:re2c" {
+       "/*!stags:re2c" {
                out.wraw(tok, ptr);
                lex_tags(out, false);
                goto echo;
        }
 
-       "/*!taglists:re2c" {
+       "/*!mtags:re2c" {
                out.wraw(tok, ptr);
                lex_tags(out, true);
                goto echo;
@@ -164,7 +164,7 @@ void Scanner::lex_end_of_comment(OutputFile &out)
        */}
 }
 
-void Scanner::lex_tags(OutputFile &out, bool lists)
+void Scanner::lex_tags(OutputFile &out, bool mtags)
 {
        std::string fmt, sep;
        for (;;) {/*!re2c
@@ -176,7 +176,7 @@ void Scanner::lex_tags(OutputFile &out, bool lists)
                space+ { continue; }
                eol    { ++cline; continue; }
                eoc    {
-                       out.wdelay_tags(new ConfTags(fmt, sep), lists);
+                       out.wdelay_tags(new ConfTags(fmt, sep), mtags);
                        tok = pos = cur;
                        return;
                }
index 5b71eb1ea260cc6fcf93c68322605016e2f6b73a..b5081f0b16dac480c55ccb38ccb4610936e988bb 100644 (file)
@@ -114,10 +114,10 @@ void Scanner::lex_conf(Opt &opts)
        "define:YYRESTORECTX" { opts.set_yyrestorectx (lex_conf_string ()); return; }
        "define:YYRESTORETAG" { opts.set_yyrestoretag (lex_conf_string ()); return; }
        "define:YYLESSTHAN"   { opts.set_yylessthan   (lex_conf_string ()); return; }
-       "define:YYTAGN"       { opts.set_yytagn       (lex_conf_string ()); return; }
-       "define:YYTAGP"       { opts.set_yytagp       (lex_conf_string ()); return; }
-       "define:YYTAGLISTN"   { opts.set_yytaglistn   (lex_conf_string ()); return; }
-       "define:YYTAGLISTP"   { opts.set_yytaglistp   (lex_conf_string ()); return; }
+       "define:YYSTAGN"      { opts.set_yystagn      (lex_conf_string ()); return; }
+       "define:YYSTAGP"      { opts.set_yystagp      (lex_conf_string ()); return; }
+       "define:YYMTAGN"      { opts.set_yymtagn      (lex_conf_string ()); return; }
+       "define:YYMTAGP"      { opts.set_yymtagp      (lex_conf_string ()); return; }
 
        "tags:prefix"     { opts.set_tags_prefix    (lex_conf_string ()); return; }
        "tags:expression" { opts.set_tags_expression(lex_conf_string ()); return; }
index 9df32522ac13edff591f246d127536547fb860e8..85ab93680806f28e96b32d32058c04cef7284793 100644 (file)
@@ -57,7 +57,7 @@ class Scanner: private ScannerState
 
        void fill (uint32_t);
        void lex_end_of_comment(OutputFile &out);
-       void lex_tags(OutputFile &out, bool lists);
+       void lex_tags(OutputFile &out, bool mtags);
        void set_sourceline ();
        uint32_t lex_cls_chr();
        uint32_t lex_str_chr(char quote, bool &end);
index 13fb2ea7e2dc58e811bd58b03bfeabc6498912fc..0299538a249ee2e6c6fa5f5b7bbf25a594fdc843 100644 (file)
@@ -334,8 +334,8 @@ void gen_settags(code_lines_t &code, const DFA &dfa, tcid_t tcid, const opt_t *o
                        code_lines_t code1;
                        for (; *h != TAGVER_ZERO; ++h) {
                                const std::string s = *h == TAGVER_BOTTOM
-                                       ? opts->yytaglistn + " (" + le + ");\n"
-                                       : opts->yytaglistp + " (" + le + ");\n";
+                                       ? opts->yymtagn + " (" + le + ");\n"
+                                       : opts->yymtagp + " (" + le + ");\n";
                                code1.push_back(s);
                        }
                        code.insert(code.end(), code1.rbegin(), code1.rend());
@@ -345,8 +345,8 @@ void gen_settags(code_lines_t &code, const DFA &dfa, tcid_t tcid, const opt_t *o
                        const std::string
                                v = vartag_expr(l, prefix, expression),
                                s = *h == TAGVER_BOTTOM
-                                       ? opts->yytagn + " (" + v + ");\n"
-                                       : opts->yytagp + " (" + v + ");\n";
+                                       ? opts->yystagn + " (" + v + ");\n"
+                                       : opts->yystagp + " (" + v + ");\n";
                        code.push_back(s);
 
                // save command; no history; default API
index 93600359a8ba98e0080bb644a273818190d0a692..a47609b12b2f9286f4bdda6a5c6a78afe59a3cd1 100644 (file)
@@ -127,26 +127,26 @@ void DFA::emit(Output & output, uint32_t& ind, bool isLastCond, bool& bPrologBra
        OutputBlock &ob = o.block();
        const opt_t *opts = ob.opts;
 
-       std::set<std::string> tagnames, tagvars, taglistnames, taglistvars;
+       std::set<std::string> stagnames, stagvars, mtagnames, mtagvars;
        if (!oldstyle_ctxmarker) {
                for (size_t i = 0; i < tags.size(); ++i) {
                        const Tag &tag = tags[i];
                        if (history(tag)) {
-                               taglistvars.insert(*tag.name);
+                               mtagvars.insert(*tag.name);
                        } else if (tag.name) {
-                               tagvars.insert(*tag.name);
+                               stagvars.insert(*tag.name);
                        }
                }
                for (tagver_t v = 1; v <= maxtagver; ++v) {
                        const std::string name = vartag_name(v, opts->tags_prefix);
-                       if (listvers.find(v) != listvers.end()) {
-                               taglistnames.insert(name);
+                       if (mtagvers.find(v) != mtagvers.end()) {
+                               mtagnames.insert(name);
                        } else {
-                               tagnames.insert(name);
+                               stagnames.insert(name);
                        }
                }
-               ob.tags.insert(tagnames.begin(), tagnames.end());
-               ob.taglists.insert(taglistnames.begin(), taglistnames.end());
+               ob.stags.insert(stagnames.begin(), stagnames.end());
+               ob.mtags.insert(mtagnames.begin(), mtagnames.end());
        }
        if (!cond.empty()) o.block().types.push_back(cond);
 
@@ -175,11 +175,11 @@ void DFA::emit(Output & output, uint32_t& ind, bool isLastCond, bool& bPrologBra
                if (output.skeletons.insert (name).second)
                {
                        emit_start(o, max_fill, name, key_size, def_rule, need_backup,
-                               need_accept, oldstyle_ctxmarker, tagnames, tagvars,
-                               taglistnames, taglistvars, bitmaps);
+                               need_accept, oldstyle_ctxmarker, stagnames, stagvars,
+                               mtagnames, mtagvars, bitmaps);
                        uint32_t i = 2;
                        emit_body (o, i, used_labels, initial_label);
-                       emit_end(o, name, need_backup, oldstyle_ctxmarker, taglistnames);
+                       emit_end(o, name, need_backup, oldstyle_ctxmarker, mtagnames);
                }
        } else if (opts->target == TARGET_DOT) {
                emit_dot(o, isLastCond);
index 291fbfffa4cfb2999f2b0b1361a80dbd181b644f..f48706c7f83bbe114b52058dd02c7fa008a2a4b5 100644 (file)
@@ -19,9 +19,7 @@ OutputFragment::OutputFragment (type_t t, uint32_t i)
 
 OutputFragment::~OutputFragment()
 {
-       if (type == TAGS || type == TAGLISTS) {
-               delete tags;
-       }
+       if (type == STAGS || type == MTAGS) delete tags;
 }
 
 uint32_t OutputFragment::count_lines ()
@@ -44,8 +42,8 @@ OutputBlock::OutputBlock ()
        , used_yyaccept (false)
        , line (0)
        , types ()
-       , tags ()
-       , taglists ()
+       , stags ()
+       , mtags ()
        , opts(NULL)
 {
        fragments.push_back (new OutputFragment (OutputFragment::CODE, 0));
@@ -210,11 +208,11 @@ void OutputFile::insert_code ()
        }
 }
 
-OutputFile &OutputFile::wdelay_tags(const ConfTags *cf, bool lists)
+OutputFile &OutputFile::wdelay_tags(const ConfTags *cf, bool mtags)
 {
        if (block().opts->target == TARGET_CODE) {
                OutputFragment *frag = new OutputFragment(
-                       lists ? OutputFragment::TAGLISTS : OutputFragment::TAGS, 0);
+                       mtags ? OutputFragment::MTAGS : OutputFragment::STAGS, 0);
                frag->tags = cf;
                blocks.back()->fragments.push_back(frag);
        }
@@ -316,20 +314,19 @@ void OutputFile::new_block(Opt &opts)
 }
 
 void OutputFile::global_lists(uniq_vector_t<std::string> &types,
-       std::set<std::string> &tags, std::set<std::string> &taglists) const
+       std::set<std::string> &stags, std::set<std::string> &mtags) const
 {
        for (unsigned int i = 0; i < blocks.size(); ++i) {
-
                const std::vector<std::string> &cs = blocks[i]->types;
                for (size_t j = 0; j < cs.size(); ++j) {
                        types.find_or_add(cs[j]);
                }
 
-               const std::set<std::string> &ts = blocks[i]->tags;
-               tags.insert(ts.begin(), ts.end());
-
-               const std::set<std::string> &tls = blocks[i]->taglists;
-               taglists.insert(tls.begin(), tls.end());
+               const std::set<std::string>
+                       &st = blocks[i]->stags,
+                       &mt = blocks[i]->mtags;
+               stags.insert(st.begin(), st.end());
+               mtags.insert(mt.begin(), mt.end());
        }
 }
 
@@ -393,8 +390,8 @@ static void foldexpr(std::vector<OutputFragment*> &frags)
 }
 
 bool OutputFile::emit(const uniq_vector_t<std::string> &global_types,
-       const std::set<std::string> &global_tags,
-       const std::set<std::string> &global_taglists,
+       const std::set<std::string> &global_stags,
+       const std::set<std::string> &global_mtags,
        size_t max_fill)
 {
        FILE *file = NULL;
@@ -441,11 +438,11 @@ bool OutputFile::emit(const uniq_vector_t<std::string> &global_types,
                        case OutputFragment::STATE_GOTO:
                                output_state_goto(o, ind, 0, fill_index, bopt);
                                break;
-                       case OutputFragment::TAGS:
-                               output_tags(o, ind, *f.tags, global_tags, bopt);
+                       case OutputFragment::STAGS:
+                               output_tags(o, ind, *f.tags, global_stags, bopt);
                                break;
-                       case OutputFragment::TAGLISTS:
-                               output_tags(o, ind, *f.tags, global_taglists, bopt);
+                       case OutputFragment::MTAGS:
+                               output_tags(o, ind, *f.tags, global_mtags, bopt);
                                break;
                        case OutputFragment::TYPES:
                                output_types(o, ind, block().opts, global_types);
@@ -535,13 +532,13 @@ bool Output::emit()
        }
 
        uniq_vector_t<std::string> types;
-       std::set<std::string> tags, taglists;
-       source.global_lists(types, tags, taglists);
+       std::set<std::string> stags, mtags;
+       source.global_lists(types, stags, mtags);
 
        // global options are last block's options
        const opt_t *opts = source.block().opts;
 
-       return source.emit(types, tags, taglists, max_fill)
+       return source.emit(types, stags, mtags, max_fill)
                && header.emit(opts, types);
 }
 
index 5e9b9a0cac28a98f0e60326eeffecde68263e9c9..6e0be3f65e0ce7844398d62bfb6d499eb48ccb4b 100644 (file)
@@ -38,8 +38,8 @@ struct OutputFragment
                , COND_TABLE
                , LINE_INFO
                , STATE_GOTO
-               , TAGS
-               , TAGLISTS
+               , STAGS
+               , MTAGS
                , TYPES
                , YYACCEPT_INIT
                , YYMAXFILL
@@ -75,8 +75,8 @@ struct OutputBlock
        bool used_yyaccept;
        uint32_t line;
        std::vector<std::string> types;
-       std::set<std::string> tags;
-       std::set<std::string> taglists;
+       std::set<std::string> stags;
+       std::set<std::string> mtags;
        const opt_t *opts;
 
        OutputBlock ();
@@ -123,7 +123,7 @@ public:
        OutputFile & wind (uint32_t ind);
 
        // delayed output
-       OutputFile & wdelay_tags(const ConfTags *cf, bool lists);
+       OutputFile & wdelay_tags(const ConfTags *cf, bool mtags);
        OutputFile & wdelay_line_info ();
        OutputFile & wdelay_cond_goto(uint32_t ind);
        OutputFile & wdelay_cond_table(uint32_t ind);
@@ -136,11 +136,11 @@ public:
        OutputFile& wdelay_backup(uint32_t ind, bool backup);
 
        void global_lists(uniq_vector_t<std::string> &types,
-               std::set<std::string> &tags, std::set<std::string> &taglists) const;
+               std::set<std::string> &stags, std::set<std::string> &mtags) const;
 
        bool emit(const uniq_vector_t<std::string> &global_types,
-               const std::set<std::string> &global_tags,
-               const std::set<std::string> &global_taglists, size_t max_fill);
+               const std::set<std::string> &global_stags,
+               const std::set<std::string> &global_mtags, size_t max_fill);
 
        FORBID_COPY (OutputFile);
 };
index ed05bf2b67f89564d953367a37c2e11d0180cbe0..2f24e3576cd4976d0c2d30d6de792c630ac32a52 100644 (file)
@@ -76,10 +76,10 @@ void mutopt_t::fix(const conopt_t *globopts)
                        yyrestore = Opt::baseopt.yyrestore;
                        yyrestorectx = Opt::baseopt.yyrestorectx;
                        yyrestoretag = Opt::baseopt.yyrestoretag;
-                       yytagn = Opt::baseopt.yytagn;
-                       yytagp = Opt::baseopt.yytagp;
-                       yytaglistn = Opt::baseopt.yytaglistn;
-                       yytaglistp = Opt::baseopt.yytaglistp;
+                       yystagn = Opt::baseopt.yystagn;
+                       yystagp = Opt::baseopt.yystagp;
+                       yymtagn = Opt::baseopt.yymtagn;
+                       yymtagp = Opt::baseopt.yymtagp;
                        yylessthan = Opt::baseopt.yylessthan;
                        dFlag = Opt::baseopt.dFlag;
                        yydebug = Opt::baseopt.yydebug;
@@ -170,11 +170,10 @@ void mutopt_t::fix(const conopt_t *globopts)
                yyrestore = Opt::baseopt.yyrestore;
                yyrestorectx = Opt::baseopt.yyrestorectx;
                yyrestoretag = Opt::baseopt.yyrestoretag;
-               yytagn = Opt::baseopt.yytagn;
-               yytagp = Opt::baseopt.yytagp;
-               yytaglistn = Opt::baseopt.yytaglistn;
-               yytaglistp = Opt::baseopt.yytaglistp;
-               yylessthan = Opt::baseopt.yylessthan;
+               yystagn = Opt::baseopt.yystagn;
+               yystagp = Opt::baseopt.yystagp;
+               yymtagn = Opt::baseopt.yymtagn;
+               yymtagp = Opt::baseopt.yymtagp;
        }
        if (!dFlag)
        {
@@ -272,10 +271,10 @@ void Opt::reset_mapCodeName ()
        set_yyrestore(Opt::baseopt.yyrestore);
        set_yyrestorectx(Opt::baseopt.yyrestorectx);
        set_yyrestoretag(Opt::baseopt.yyrestoretag);
-       set_yytagn(Opt::baseopt.yytagn);
-       set_yytagp(Opt::baseopt.yytagp);
-       set_yytaglistn(Opt::baseopt.yytaglistn);
-       set_yytaglistp(Opt::baseopt.yytaglistp);
+       set_yystagn(Opt::baseopt.yystagn);
+       set_yystagp(Opt::baseopt.yystagp);
+       set_yymtagn(Opt::baseopt.yymtagn);
+       set_yymtagp(Opt::baseopt.yymtagp);
        set_yyskip(Opt::baseopt.yyskip);
        set_yyfilllabel(Opt::baseopt.yyfilllabel);
        set_yynext(Opt::baseopt.yynext);
index e6c1fce7f09d6b0eb139ae80dfcd96d8a25d0083..91d41954388fba38568130dd4f6486d63c097dc9 100644 (file)
@@ -118,10 +118,10 @@ enum target_t
        MUTOPT (std::string, yyrestorectx, "YYRESTORECTX") \
        MUTOPT (std::string, yyrestoretag, "YYRESTORETAG") \
        MUTOPT (std::string, yylessthan, "YYLESSTHAN") \
-       MUTOPT (std::string, yytagn, "YYTAGN") \
-       MUTOPT (std::string, yytagp, "YYTAGP") \
-       MUTOPT (std::string, yytaglistn, "YYTAGLISTN") \
-       MUTOPT (std::string, yytaglistp, "YYTAGLISTP") \
+       MUTOPT (std::string, yystagn, "YYSTAGN") \
+       MUTOPT (std::string, yystagp, "YYSTAGP") \
+       MUTOPT (std::string, yymtagn, "YYMTAGN") \
+       MUTOPT (std::string, yymtagp, "YYMTAGP") \
        /* #line directives */ \
        MUTOPT (bool, iFlag, false) \
        /* debug */ \
index ac383881bbdfd5df06bd6960ab85c4832b69d641..2170aa07d93801ca40d455261c259b9a3ba13398 100644 (file)
@@ -131,8 +131,9 @@ void Warn::nondeterministic_tags(uint32_t line, const std::string &cond,
                        fprintf(stderr, "tag '%s'", tagname->c_str());
                }
                fprintf(stderr,
-                       " %sis non-deterministic and induces %u parallel instances",
-                       incond(cond).c_str(), static_cast<uint32_t>(nver));
+                       " %shas %u%s degree of nondeterminism",
+                       incond(cond).c_str(), static_cast<uint32_t>(nver),
+                       nver == 2 ? "nd" : nver == 3 ? "rd" : "th");
                warning_end(names[NONDETERMINISTIC_TAGS], e);
        }
 }
index e2d91b920002d20f9a03f4800093dc02c3b4bb68..0c9d7f6f4911981fa7e6e098d354ce3e0bf0139e 100644 (file)
@@ -22,10 +22,10 @@ void cfg_t::interference(const cfg_t &cfg, const bool *live, bool *interf)
        }
 
        // versions of tags with/without history interfere
-       std::set<tagver_t> &lvs = cfg.dfa.listvers;
-       for (std::set<tagver_t>::iterator i = lvs.begin(); i != lvs.end(); ++i) {
+       std::set<tagver_t> &mt = cfg.dfa.mtagvers;
+       for (std::set<tagver_t>::iterator i = mt.begin(); i != mt.end(); ++i) {
                for (tagver_t u = *i, v = 0; v < maxver; ++v) {
-                       if (lvs.find(v) == lvs.end()) {
+                       if (mt.find(v) == mt.end()) {
                                interf[v * maxver + u] = interf[u * maxver + v] = true;
                        }
                }
index 5b660ecd63a5d57e7396a0c1e50577a4b41aeed0..f271c2e8439abe0032a67e06343c0e1058bdba4d 100644 (file)
@@ -37,11 +37,11 @@ void cfg_t::renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver)
        }
 
        // versions of tags with history
-       std::set<tagver_t> newlvs, &oldlvs = cfg.dfa.listvers;
-       for (std::set<tagver_t>::iterator i = oldlvs.begin(); i != oldlvs.end(); ++i) {
-               newlvs.insert(ver2new[*i]);
+       std::set<tagver_t> newmt, &oldmt = cfg.dfa.mtagvers;
+       for (std::set<tagver_t>::iterator i = oldmt.begin(); i != oldmt.end(); ++i) {
+               newmt.insert(ver2new[*i]);
        }
-       oldlvs.swap(newlvs);
+       oldmt.swap(newmt);
 }
 
 } // namespace re2c
index 6efbf292a590ca6013f88c6de611ab0be90a62ad..07fa5ca2ab26f4e2d3a84a6e51d15200622402b0 100644 (file)
@@ -56,7 +56,7 @@ dfa_t::dfa_t(const nfa_t &nfa, const opt_t *opts,
        , charset(nfa.charset)
        , rules(nfa.rules)
        , tags(nfa.tags)
-       , listvers(*new std::set<tagver_t>)
+       , mtagvers(*new std::set<tagver_t>)
        , finvers(NULL)
        , tcpool(*new tcpool_t)
        , maxtagver(0)
@@ -89,8 +89,8 @@ dfa_t::dfa_t(const nfa_t &nfa, const opt_t *opts,
        for (size_t i = 0; i < ntag; ++i) {
                if (history(tags[i])) {
                        tagver_t v = static_cast<tagver_t>(i) + 1, f = finvers[i];
-                       if (f != TAGVER_ZERO) listvers.insert(f);
-                       listvers.insert(v);
+                       if (f != TAGVER_ZERO) mtagvers.insert(f);
+                       mtagvers.insert(v);
                }
        }
 
@@ -112,7 +112,7 @@ dfa_t::dfa_t(const nfa_t &nfa, const opt_t *opts,
                }
                // mark tags with history
                for (newvers_t::iterator j = newvers.begin(); j != newvers.end(); ++j) {
-                       if (history(tags[j->first.tag])) listvers.insert(abs(j->second));
+                       if (history(tags[j->first.tag])) mtagvers.insert(abs(j->second));
                }
        }
 
index 6654a038da2ec1e7787e78553a6cdfd7a6a92879..2135623f0ff8d32d1d5b07ec16c540f14249eadc 100644 (file)
@@ -54,7 +54,7 @@ struct dfa_t
        std::vector<uint32_t> &charset;
        std::valarray<Rule> &rules;
        std::vector<Tag> &tags;
-       std::set<tagver_t> &listvers;
+       std::set<tagver_t> &mtagvers;
        tagver_t *finvers;
        tcpool_t &tcpool;
        tagver_t maxtagver;
index 82c4687747456ec7878677bea4b0f16598819fb9..b54d765ec4954ffbd6fb93034672767522dc56e9 100644 (file)
@@ -95,8 +95,8 @@ void emit_prolog(OutputFile &o)
 
 void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
        size_t sizeof_key, size_t def, bool backup, bool accept, bool oldstyle_ctxmarker,
-       const std::set<std::string> &tagnames, const std::set<std::string> &tagvars,
-       const std::set<std::string> &taglistnames, const std::set<std::string> &taglistvars,
+       const std::set<std::string> &stagnames, const std::set<std::string> &stagvars,
+       const std::set<std::string> &mtagnames, const std::set<std::string> &mtagvars,
        bitmaps_t &bitmaps)
 {
        const opt_t *opts = o.block().opts;
@@ -122,11 +122,11 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
                o.ws("\n#define YYRESTORECTX() cursor = ctxmarker");
        }
        if (opts->tags) {
-               o.ws("\n#define YYTAGP(t) t = cursor");
-               o.ws("\n#define YYTAGN(t) t = NULL");
-               o.ws("\n#define YYTAGLISTP(tl) yytaglist(&tl, cursor, &yytlp)");
-               o.ws("\n#define YYTAGLISTN(tl) yytaglist(&tl, NULL, &yytlp)");
-               o.ws("\n#define YYRESTORETAG(tag) cursor = tag");
+               o.ws("\n#define YYSTAGP(t) t = cursor");
+               o.ws("\n#define YYSTAGN(t) t = NULL");
+               o.ws("\n#define YYMTAGP(t) yymtag(&t, cursor, &yytp)");
+               o.ws("\n#define YYMTAGN(t) yymtag(&t, NULL, &yytp)");
+               o.ws("\n#define YYRESTORETAG(t) cursor = t");
        }
        o.ws("\n#define YYLESSTHAN(n) (limit - cursor) < n");
        o.ws("\n#define YYFILL(n) { break; }");
@@ -176,9 +176,9 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
        o.ws("\n").wind(1).ws("}");
        o.ws("\n}");
 
-       if (!tagnames.empty()) {
+       if (!stagnames.empty()) {
                o.ws("\n");
-               o.ws("\nstatic int check_tag_").wstring(name)
+               o.ws("\nstatic int check_stag_").wstring(name)
                        .ws("(unsigned *pkix, YYKEYTYPE *keys, const YYCTYPE *tag,\n")
                        .wind(1).ws("const YYCTYPE *input, const YYCTYPE *token, const char *name)");
                o.ws("\n{");
@@ -198,69 +198,69 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
                o.ws("\n}");
        }
 
-       if (!taglistnames.empty()) {
+       if (!mtagnames.empty()) {
                o.ws("\n");
-               o.ws("\ntypedef struct yytaglist_t {");
-               o.ws("\n").wind(1).ws("struct yytaglist_t *list;");
+               o.ws("\ntypedef struct yymtag_t {");
+               o.ws("\n").wind(1).ws("struct yymtag_t *pred;");
                o.ws("\n").wind(1).ws("const YYCTYPE *tag;");
-               o.ws("\n} yytaglist_t;");
+               o.ws("\n} yymtag_t;");
 
                o.ws("\n");
-               o.ws("\ntypedef struct yytaglistpool_t {");
-               o.ws("\n").wind(1).ws("yytaglist_t *head;");
-               o.ws("\n").wind(1).ws("yytaglist_t *next;");
-               o.ws("\n").wind(1).ws("yytaglist_t *last;");
-               o.ws("\n} yytaglistpool_t;");
+               o.ws("\ntypedef struct yymtagpool_t {");
+               o.ws("\n").wind(1).ws("yymtag_t *head;");
+               o.ws("\n").wind(1).ws("yymtag_t *next;");
+               o.ws("\n").wind(1).ws("yymtag_t *last;");
+               o.ws("\n} yymtagpool_t;");
 
                o.ws("\n");
-               o.ws("\nstatic void yytaglistpool_clear(yytaglistpool_t *tlp)");
+               o.ws("\nstatic void yymtagpool_clear(yymtagpool_t *tp)");
                o.ws("\n{");
-               o.ws("\n").wind(1).ws("tlp->next = tlp->head;");
+               o.ws("\n").wind(1).ws("tp->next = tp->head;");
                o.ws("\n}");
 
                o.ws("\n");
-               o.ws("\nstatic void yytaglistpool_init(yytaglistpool_t *tlp)");
+               o.ws("\nstatic void yymtagpool_init(yymtagpool_t *tp)");
                o.ws("\n{");
                o.ws("\n").wind(1).ws("static const unsigned size = 256;");
-               o.ws("\n").wind(1).ws("tlp->head = (yytaglist_t*)malloc(size * sizeof(yytaglist_t));");
-               o.ws("\n").wind(1).ws("tlp->next = tlp->head;");
-               o.ws("\n").wind(1).ws("tlp->last = tlp->head + size;");
+               o.ws("\n").wind(1).ws("tp->head = (yymtag_t*)malloc(size * sizeof(yymtag_t));");
+               o.ws("\n").wind(1).ws("tp->next = tp->head;");
+               o.ws("\n").wind(1).ws("tp->last = tp->head + size;");
                o.ws("\n}");
 
                o.ws("\n");
-               o.ws("\nstatic void yytaglistpool_free(yytaglistpool_t *tlp)");
+               o.ws("\nstatic void yymtagpool_free(yymtagpool_t *tp)");
                o.ws("\n{");
-               o.ws("\n").wind(1).ws("free(tlp->head);");
-               o.ws("\n").wind(1).ws("tlp->head = tlp->next = tlp->last = NULL;");
+               o.ws("\n").wind(1).ws("free(tp->head);");
+               o.ws("\n").wind(1).ws("tp->head = tp->next = tp->last = NULL;");
                o.ws("\n}");
 
                o.ws("\n");
-               o.ws("\nstatic yytaglist_t *yytaglistpool_next(yytaglistpool_t *tlp)");
+               o.ws("\nstatic yymtag_t *yymtagpool_next(yymtagpool_t *tp)");
                o.ws("\n{");
-               o.ws("\n").wind(1).ws("if (tlp->next == tlp->last) {");
-               o.ws("\n").wind(2).ws("const unsigned size = tlp->last - tlp->head;");
-               o.ws("\n").wind(2).ws("yytaglist_t *head = (yytaglist_t*)malloc(2 * size * sizeof(yytaglist_t));");
-               o.ws("\n").wind(2).ws("memcpy(head, tlp->head, size * sizeof(yytaglist_t));");
-               o.ws("\n").wind(2).ws("free(tlp->head);");
-               o.ws("\n").wind(2).ws("tlp->head = head;");
-               o.ws("\n").wind(2).ws("tlp->next = head + size;");
-               o.ws("\n").wind(2).ws("tlp->last = head + size * 2;");
+               o.ws("\n").wind(1).ws("if (tp->next == tp->last) {");
+               o.ws("\n").wind(2).ws("const unsigned size = tp->last - tp->head;");
+               o.ws("\n").wind(2).ws("yymtag_t *head = (yymtag_t*)malloc(2 * size * sizeof(yymtag_t));");
+               o.ws("\n").wind(2).ws("memcpy(head, tp->head, size * sizeof(yymtag_t));");
+               o.ws("\n").wind(2).ws("free(tp->head);");
+               o.ws("\n").wind(2).ws("tp->head = head;");
+               o.ws("\n").wind(2).ws("tp->next = head + size;");
+               o.ws("\n").wind(2).ws("tp->last = head + size * 2;");
                o.ws("\n").wind(1).ws("}");
-               o.ws("\n").wind(1).ws("return tlp->next++;");
+               o.ws("\n").wind(1).ws("return tp->next++;");
                o.ws("\n}");
 
                o.ws("\n");
-               o.ws("\nstatic void yytaglist(yytaglist_t **ptl, const YYCTYPE *t, yytaglistpool_t *tlp)");
+               o.ws("\nstatic void yymtag(yymtag_t **pt, const YYCTYPE *t, yymtagpool_t *tp)");
                o.ws("\n{");
-               o.ws("\n").wind(1).ws("yytaglist_t *tl = yytaglistpool_next(tlp);");
-               o.ws("\n").wind(1).ws("tl->list = *ptl;");
-               o.ws("\n").wind(1).ws("tl->tag = t;");
-               o.ws("\n").wind(1).ws("*ptl = tl;");
+               o.ws("\n").wind(1).ws("yymtag_t *t = yymtagpool_next(tp);");
+               o.ws("\n").wind(1).ws("t->pred = *pt;");
+               o.ws("\n").wind(1).ws("t->tag = t;");
+               o.ws("\n").wind(1).ws("*pt = t;");
                o.ws("\n}");
 
                o.ws("\n");
-               o.ws("\nstatic int check_taglist_").wstring(name)
-                       .ws("(unsigned *pkix, YYKEYTYPE *keys, const yytaglist_t *list,\n")
+               o.ws("\nstatic int check_mtag_").wstring(name)
+                       .ws("(unsigned *pkix, YYKEYTYPE *keys, const yymtag_t *tag,\n")
                        .wind(1).ws("const YYCTYPE *input, const YYCTYPE *token, const char *name)");
                o.ws("\n{");
 //             o.ws("\n").wind(1).ws("check_key_count_").wstring(name).ws("(1) && return 1;");
@@ -269,14 +269,14 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
                o.ws("\n").wind(1).ws("*pkix = kix + n + 1;");
 //             o.ws("\n").wind(1).ws("check_key_count_").wstring(name).ws("(n) && return 1;");
                o.ws("\n").wind(1).ws("for (; n > 0; --n) {");
-               o.ws("\n").wind(2).ws("if (list == NULL) {");
+               o.ws("\n").wind(2).ws("if (tag == NULL) {");
                o.ws("\n").wind(3).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": at position %ld, key %u: \"")
                        .ws("\n").wind(4).ws("\"history for tag '%s' is too short\\n\",")
                        .ws("\n").wind(4).ws("token - input, kix + n, name);");
                o.ws("\n").wind(3).ws("return 1;");
                o.ws("\n").wind(2).ws("}");
-               o.ws("\n").wind(2).ws("const YYCTYPE *tag = list->tag;");
-               o.ws("\n").wind(2).ws("list = list->list;");
+               o.ws("\n").wind(2).ws("const YYCTYPE *tag = tag->offs;");
+               o.ws("\n").wind(2).ws("tag = tag->pred;");
                o.ws("\n").wind(2).ws("const YYKEYTYPE\n")
                        .wind(3).ws("exp = keys[kix + n],\n")
                        .wind(3).ws("act = (YYKEYTYPE)(tag - token),\n")
@@ -288,7 +288,7 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
                o.ws("\n").wind(3).ws("return 1;");
                o.ws("\n").wind(2).ws("}");
                o.ws("\n").wind(1).ws("}");
-               o.ws("\n").wind(1).ws("if (list != NULL) {");
+               o.ws("\n").wind(1).ws("if (tag != NULL) {");
                o.ws("\n").wind(2).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": at position %ld, key %u: \"")
                        .ws("\n").wind(3).ws("\"history for tag '%s' is too long\\n\",")
                        .ws("\n").wind(3).ws("token - input, kix, name);");
@@ -320,10 +320,10 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
        o.ws("\n").wind(1).ws("const YYCTYPE *token = NULL;");
        o.ws("\n").wind(1).ws("const YYCTYPE *eof = NULL;");
        o.ws("\n").wind(1).ws("unsigned int i = 0;");
-       if (!taglistnames.empty()) {
+       if (!mtagnames.empty()) {
                o.ws("\n");
-               o.ws("\n").wind(1).ws("yytaglistpool_t yytlp;");
-               o.ws("\n").wind(1).ws("yytaglistpool_init(&yytlp);");
+               o.ws("\n").wind(1).ws("yymtagpool_t yytp;");
+               o.ws("\n").wind(1).ws("yymtagpool_init(&yytp);");
        }
        o.ws("\n");
        o.ws("\n").wind(1).ws("input = (YYCTYPE *) read_file");
@@ -378,13 +378,13 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
                o.ws("\n").wind(2).ws("unsigned int yyaccept = 0;");
        }
 
-       // autogenerated tag variables
+       // autogenerated stag variables
        ConfTags conf("\n" + indent(2, opts->indString) + "const YYCTYPE *@@ = NULL;", "");
-       output_tags(o.stream(), 0, conf, tagnames, opts);
-       // user-defined tag variables
+       output_tags(o.stream(), 0, conf, stagnames, opts);
+       // user-defined stag variables
        std::set<std::string>::const_iterator
-               var1 = tagvars.begin(),
-               var2 = tagvars.end();
+               var1 = stagvars.begin(),
+               var2 = stagvars.end();
        if (var1 != var2) {
                o.ws("\n").wind(2).ws("const YYCTYPE *").wstring(*var1);
                for (++var1; var1 != var2; ++var1) {
@@ -392,16 +392,16 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
                }
                o.ws(";");
        }
-       if (!taglistnames.empty()) {
-               o.ws("\n").wind(2).ws("yytaglistpool_clear(&yytlp);");
-               // autogenerated tag list variables
-               conf.format = "yytaglist_t *@@ = NULL;";
-               output_tags(o.stream(), 0, conf, taglistnames, opts);
-               // user-defined tag list variables
-               var1 = taglistvars.begin();
-               var2 = taglistvars.end();
+       if (!mtagnames.empty()) {
+               o.ws("\n").wind(2).ws("yymtagpool_clear(&yytp);");
+               // autogenerated mtag variables
+               conf.format = "yymtag_t *@@ = NULL;";
+               output_tags(o.stream(), 0, conf, mtagnames, opts);
+               // user-defined mtag variables
+               var1 = mtagvars.begin();
+               var2 = mtagvars.end();
                if (var1 != var2) {
-                       o.ws("\n").wind(2).ws("yytaglist_t *").wstring(*var1);
+                       o.ws("\n").wind(2).ws("yymtag_t *").wstring(*var1);
                        for (++var1; var1 != var2; ++var1) {
                                o.ws(", *").wstring(*var1);
                        }
@@ -417,7 +417,7 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
 }
 
 void emit_end(OutputFile &o, const std::string &name, bool backup, bool oldstyle_ctxmarker,
-       const std::set<std::string> &taglistnames)
+       const std::set<std::string> &mtagnames)
 {
        o.ws("\n").wind(1).ws("}");
        o.ws("\n").wind(1).ws("if (status == 0) {");
@@ -435,8 +435,8 @@ void emit_end(OutputFile &o, const std::string &name, bool backup, bool oldstyle
        o.ws("\nend:");
        o.ws("\n").wind(1).ws("free(input);");
        o.ws("\n").wind(1).ws("free(keys);");
-       if (!taglistnames.empty()) {
-               o.ws("\n").wind(1).ws("yytaglistpool_free(&yytlp);");
+       if (!mtagnames.empty()) {
+               o.ws("\n").wind(1).ws("yymtagpool_free(&yytp);");
        }
        o.ws("\n");
        o.ws("\n").wind(1).ws("return status;");
@@ -499,8 +499,8 @@ void emit_action(OutputFile &o, uint32_t ind, const DFA &dfa, size_t rid)
                const Tag &tag = dfa.tags[t];
                if (t == r.ttag || fictive(tag)) continue;
                const std::string tname = tagname(tag),
-                       list = history(tag) ? "list" : "";
-               o.ws("\n").wind(ind + 1).ws(" || check_tag").wstring(list).ws("_").wstring(name)
+                       prefix = history(tag) ? "m" : "s";
+               o.ws("\n").wind(ind + 1).ws(" || check_").wstring(prefix).ws("tag").ws("_").wstring(name)
                        .ws("(&i, keys, ").wstring(tname).ws(", input, token, \"")
                        .wstring(tname).ws("\")");
        }
index 35369fc3f9cba55fe0200bb86e1911dd9ddf14a1..1d91cdfb597111c6a6ebc440f964b0e667eca354 100644 (file)
@@ -107,11 +107,11 @@ void emit_data(const Skeleton &skel);
 void emit_prolog(OutputFile & o);
 void emit_start(OutputFile &o, size_t maxfill, const std::string &name,
        size_t sizeof_key, size_t def, bool backup, bool accept, bool oldstyle_ctxmarker,
-       const std::set<std::string> &tagnames, const std::set<std::string> &tagvars,
-       const std::set<std::string> &taglistnames, const std::set<std::string> &taglistvars,
+       const std::set<std::string> &stagnames, const std::set<std::string> &stagvars,
+       const std::set<std::string> &mtagnames, const std::set<std::string> &mtagvars,
        bitmaps_t &bitmaps);
 void emit_end(OutputFile &o, const std::string &name, bool backup, bool oldstyle_ctxmarker,
-       const std::set<std::string> &taglistnames);
+       const std::set<std::string> &mtagnames);
 void emit_epilog(OutputFile &o, const std::set<std::string> &names);
 void emit_action(OutputFile &o, uint32_t ind, const DFA &dfa, size_t rid);
 
index d36fe447222d84304d781d51a5bade2fe6a48090..fdb5238de67e728dea9af388e0c7f88739358a27 100644 (file)
@@ -3,7 +3,7 @@
 static int lex(const char *YYCURSOR)
 {
     const char *YYMARKER;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:yyfill:enable = 0;
         re2c:define:YYCTYPE = char;
index cf775a71be3a5a6a1b4222f34b42c3f1179b6bb0..2ef72cc1694356fe9c1e15b6dd00398f73d81be9 100644 (file)
@@ -35,4 +35,4 @@ yy7:
        { @p }
 }
 
-re2c: warning: line 2: tag 'p' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 2: tag 'p' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index bb498ed62f3623885edd55369c0f7dda182723ce..ee355643ac3f2c968349707806c5f53a668a94ec 100644 (file)
@@ -125,7 +125,7 @@ yy28:
        yych = YYPEEK ();
        switch (yych) {
        case 'a':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy29;
        default:        goto yy27;
        }
@@ -135,7 +135,7 @@ yy29:
        yych = YYPEEK ();
        switch (yych) {
        case 'a':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy29;
        default:        goto yy31;
        }
@@ -144,5 +144,5 @@ yy31:
        {}
 }
 
-re2c: warning: line 21: trailing context is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 29: trailing context is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 21: trailing context has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 29: trailing context has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 8ffbc8c2694cb17b2fb00974697dc0baabc4eea9..312fa7f79406b8a9d106123218041b9b13258c4b 100644 (file)
@@ -41,4 +41,4 @@ yy7:
        }
 }
 
-re2c: warning: line 4: tag 'p' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 4: tag 'p' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 2d0ddf8e6372fd98d5333983c61b0563b128170f..d5edc36d4cdb4fc40a94269fdcd46d0246f7e09e 100644 (file)
@@ -1 +1 @@
-re2c: error: line 10: overlapping trailing contexts need multiple context markers, use '-t, --tags' option and '/*!tags:re2c ... */' directive
+re2c: error: line 10: overlapping trailing contexts need multiple context markers, use '-t, --tags' option and '/*!stags:re2c ... */' directive
index 69b5145eb4adfeca377b403a0dbd956aa99d011b..fafac041f5528c764513bfb183776a165494a63f 100644 (file)
@@ -25,7 +25,7 @@ yy4:
        yych = YYPEEK ();
        switch (yych) {
        case 'b':
-               YYTAGP (yyt2);
+               YYSTAGP (yyt2);
                goto yy5;
        default:        goto yy3;
        }
@@ -50,7 +50,7 @@ yy7:
        yych = YYPEEK ();
        switch (yych) {
        case 'b':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy9;
        default:        goto yy8;
        }
index 555e5584792657ae4f516c2673a5c3ea6b8b24fe..0cc024b5dd8ffe0b5cefc9fe0d21dee361b7b6ea 100644 (file)
@@ -1 +1 @@
-re2c: error: line 8: overlapping trailing contexts need multiple context markers, use '-t, --tags' option and '/*!tags:re2c ... */' directive
+re2c: error: line 8: overlapping trailing contexts need multiple context markers, use '-t, --tags' option and '/*!stags:re2c ... */' directive
index e6a535338fa81551e27739a9b1d3817eb7447f1a..c2b38380cc6c289bfd4ce6464fbddef9e8ce67ed 100644 (file)
@@ -16,7 +16,7 @@ yy2:
        { d }
 yy4:
        yych = YYPEEK ();
-       YYTAGP (yyt2);
+       YYSTAGP (yyt2);
        switch (yych) {
        case 'b':
                YYSKIP ();
@@ -31,7 +31,7 @@ yy6:
        yych = YYPEEK ();
        switch (yych) {
        case 'c':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                YYSKIP ();
                goto yy9;
        default:        goto yy8;
index b63af7ae02c72ee3887e3ca5b5a545371e670baf..69508eac821915e764e0d6eeb306aa5f9234e065 100644 (file)
@@ -17,7 +17,7 @@ yy2:
 yy4:
        YYSKIP ();
        yych = YYPEEK ();
-       YYTAGP (yyt2);
+       YYSTAGP (yyt2);
        switch (yych) {
        case 'b':       goto yy6;
        default:        goto yy5;
@@ -31,7 +31,7 @@ yy6:
        yych = YYPEEK ();
        switch (yych) {
        case 'c':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy9;
        default:        goto yy8;
        }
index 555e5584792657ae4f516c2673a5c3ea6b8b24fe..0cc024b5dd8ffe0b5cefc9fe0d21dee361b7b6ea 100644 (file)
@@ -1 +1 @@
-re2c: error: line 8: overlapping trailing contexts need multiple context markers, use '-t, --tags' option and '/*!tags:re2c ... */' directive
+re2c: error: line 8: overlapping trailing contexts need multiple context markers, use '-t, --tags' option and '/*!stags:re2c ... */' directive
index fe1bc27328942f2c3c73c7c8d337b5cfc35ffd61..d5050998dc4e4c33d56fe6077373ee239a5b8b94 100644 (file)
@@ -20,7 +20,7 @@ static void lex(const char *s)
 #define ZZTN(t)      t = NULL
 #define ZZRT(t)      s = t
     const char *marker, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
@@ -43,8 +43,8 @@ static void lex(const char *s)
             return;
         }
 
-        re2c:define:YYTAGP = "ZZTP";
-        re2c:define:YYTAGN = "ZZTN";
+        re2c:define:YYSTAGP = "ZZTP";
+        re2c:define:YYSTAGN = "ZZTN";
         re2c:define:YYRESTORETAG = "ZZRT";
         re2c:tags:prefix = "zz_";
     */
index dbe44f3ca6363b29d2bba53258e8db116ee7fb15..50cf14bd72d7ae456235123c26412d17508d2d59 100644 (file)
@@ -13,7 +13,7 @@ static inline unsigned parse_oct(const char *s, const char *e)
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 10434366e2dab217eb6e3a4cbe584c6bf3aac647..8a01b74407e049540b7fce1ac66e560c4db8a160 100644 (file)
@@ -68,8 +68,8 @@ static bool lex(input_t & in)
 #define YYSKIP()           ++in.cur
 #define YYBACKUP()         in.mar = in.cur
 #define YYRESTORE()        in.cur = in.mar
-#define YYTAGP(t)          t = in.cur
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = in.cur
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    in.cur = t
 #define YYLESSTHAN(n)      in.lim - in.cur < n
 loop:
@@ -107,7 +107,7 @@ yy6:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt1);
+               YYSTAGP (in.yyt1);
                goto yy7;
        case '0':
        case '1':
@@ -145,7 +145,7 @@ yy9:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt1);
+               YYSTAGP (in.yyt1);
                goto yy7;
        case '0':
        case '1':
@@ -164,7 +164,7 @@ yy10:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt2);
+               YYSTAGP (in.yyt2);
                goto yy12;
        case '0':
        case '1':
@@ -183,7 +183,7 @@ yy11:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt1);
+               YYSTAGP (in.yyt1);
                goto yy7;
        default:        goto yy8;
        }
@@ -208,7 +208,7 @@ yy13:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt2);
+               YYSTAGP (in.yyt2);
                goto yy12;
        case '0':
        case '1':
@@ -227,7 +227,7 @@ yy14:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt3);
+               YYSTAGP (in.yyt3);
                goto yy16;
        case '0':
        case '1':
@@ -246,7 +246,7 @@ yy15:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt2);
+               YYSTAGP (in.yyt2);
                goto yy12;
        default:        goto yy8;
        }
@@ -271,7 +271,7 @@ yy17:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt3);
+               YYSTAGP (in.yyt3);
                goto yy16;
        case '0':
        case '1':
@@ -307,7 +307,7 @@ yy19:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (in.yyt3);
+               YYSTAGP (in.yyt3);
                goto yy16;
        default:        goto yy8;
        }
index 70d66d2e02071a9d7bf285a7667850ade503fc48..971e69efd7902c2ce3bd467fc622dfd8d1042a98 100644 (file)
@@ -21,7 +21,7 @@ struct input_t {
     char *cur;
     char *mar;
     char *tok;
-    /*!tags:re2c format = "char *@@;"; */
+    /*!stags:re2c format = "char *@@;"; */
     bool eof;
 
     input_t()
@@ -30,7 +30,7 @@ struct input_t {
         , cur(lim)
         , mar(lim)
         , tok(lim)
-        /*!tags:re2c format = ", @@(0)"; */
+        /*!stags:re2c format = ", @@(0)"; */
         , eof(false)
     {}
     bool fill(size_t need)
@@ -49,7 +49,7 @@ struct input_t {
         cur -= free;
         mar -= free;
         tok -= free;
-        /*!tags:re2c format = "@@ -= free;"; */
+        /*!stags:re2c format = "@@ -= free;"; */
         lim += fread(lim, 1, free, stdin);
         if (lim < buf + SIZE) {
             eof = true;
@@ -66,8 +66,8 @@ static bool lex(input_t & in)
 #define YYSKIP()           ++in.cur
 #define YYBACKUP()         in.mar = in.cur
 #define YYRESTORE()        in.cur = in.mar
-#define YYTAGP(t)          t = in.cur
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = in.cur
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    in.cur = t
 #define YYLESSTHAN(n)      in.lim - in.cur < n
 loop:
index 78cd325bba66afd04b89ac70efee42221d3d2cd4..82b223b444a0d9d8a4e993d6aabb74f1a1cc4b76 100644 (file)
@@ -21,7 +21,7 @@ struct input_t {
     char *cur;
     char *mar;
     char *tok;
-    /*!tags:re2c format = "char *@@;"; */
+    /*!stags:re2c format = "char *@@;"; */
     bool eof;
 
     input_t()
@@ -30,7 +30,7 @@ struct input_t {
         , cur(lim)
         , mar(lim)
         , tok(lim)
-        /*!tags:re2c format = ", @@(0)"; */
+        /*!stags:re2c format = ", @@(0)"; */
         , eof(false)
     {}
     bool fill(size_t need)
@@ -49,7 +49,7 @@ struct input_t {
         cur -= free;
         mar -= free;
         tok -= free;
-        /*!tags:re2c format = "@@ -= free;"; */
+        /*!stags:re2c format = "@@ -= free;"; */
         lim += fread(lim, 1, free, stdin);
         if (lim < buf + SIZE) {
             eof = true;
index c5385a3e3dd4333c73c49098a9afcefb57d2a251..cfc3827aaf34f38796523d9ab7a33dfe1e9eb06c 100644 (file)
@@ -26,8 +26,8 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
     tags_t tags;
@@ -46,7 +46,7 @@ static void lex(const char *s)
        case '7':
        case '8':
        case '9':
-               YYTAGP (tags.yyt1);
+               YYSTAGP (tags.yyt1);
                goto yy4;
        default:        goto yy2;
        }
@@ -60,7 +60,7 @@ yy4:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt2);
+               YYSTAGP (tags.yyt2);
                goto yy5;
        case '0':
        case '1':
@@ -98,7 +98,7 @@ yy7:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt2);
+               YYSTAGP (tags.yyt2);
                goto yy5;
        case '0':
        case '1':
@@ -117,7 +117,7 @@ yy8:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt3);
+               YYSTAGP (tags.yyt3);
                goto yy10;
        case '0':
        case '1':
@@ -136,7 +136,7 @@ yy9:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt2);
+               YYSTAGP (tags.yyt2);
                goto yy5;
        default:        goto yy6;
        }
@@ -161,7 +161,7 @@ yy11:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt3);
+               YYSTAGP (tags.yyt3);
                goto yy10;
        case '0':
        case '1':
@@ -180,7 +180,7 @@ yy12:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt4);
+               YYSTAGP (tags.yyt4);
                goto yy14;
        case '0':
        case '1':
@@ -199,7 +199,7 @@ yy13:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt3);
+               YYSTAGP (tags.yyt3);
                goto yy10;
        default:        goto yy6;
        }
@@ -224,7 +224,7 @@ yy15:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt4);
+               YYSTAGP (tags.yyt4);
                goto yy14;
        case '0':
        case '1':
@@ -272,7 +272,7 @@ yy18:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               YYTAGP (tags.yyt4);
+               YYSTAGP (tags.yyt4);
                goto yy14;
        default:        goto yy6;
        }
index 49a01fdab00daf785eb6f8ec68ac2ff33c5d0977..7bb6c854191ecb2458187fef1447545c808a7d18 100644 (file)
@@ -12,13 +12,13 @@ static inline unsigned parse_oct(const char *s, const char *e)
 
 struct tags_t
 {
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
 
     tags_t();
-    void push(/*!tags:re2c
+    void push(/*!stags:re2c
         format = "const char *arg_@@";
         separator = ","; */);
-    void pop(/*!tags:re2c
+    void pop(/*!stags:re2c
         format = "const char *&arg_@@";
         separator = ","; */);
 };
@@ -29,8 +29,8 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
     tags_t tags;
@@ -59,23 +59,23 @@ static void lex(const char *s)
     */
 }
 
-tags_t::tags_t(): /*!tags:re2c
+tags_t::tags_t(): /*!stags:re2c
     format = "@@(0)";
     separator = ",";
 */ {}
 
-void tags_t::push(/*!tags:re2c
+void tags_t::push(/*!stags:re2c
     format = "const char *arg_@@";
     separator = ","; */)
 {
-    /*!tags:re2c format = "@@ = arg_@@;"; */
+    /*!stags:re2c format = "@@ = arg_@@;"; */
 }
 
-void tags_t::pop(/*!tags:re2c
+void tags_t::pop(/*!stags:re2c
     format = "const char *&arg_@@";
     separator = ","; */)
 {
-    /*!tags:re2c format = "arg_@@ = @@;"; */
+    /*!stags:re2c format = "arg_@@ = @@;"; */
 }
 
 int main(int argc, char **argv)
index 2b95261d2e3e2284330c2066b097bbfaef1081b1..ad4f4091f528a8400270e8c747793dc454df807c 100644 (file)
@@ -12,13 +12,13 @@ static inline unsigned parse_oct(const char *s, const char *e)
 
 struct tags_t
 {
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
 
     tags_t();
-    void push(/*!tags:re2c
+    void push(/*!stags:re2c
         format = "const char *arg_@@";
         separator = ","; */);
-    void pop(/*!tags:re2c
+    void pop(/*!stags:re2c
         format = "const char *&arg_@@";
         separator = ","; */);
 };
@@ -52,23 +52,23 @@ static void lex(const char *YYCURSOR)
     */
 }
 
-tags_t::tags_t(): /*!tags:re2c
+tags_t::tags_t(): /*!stags:re2c
     format = "@@(0)";
     separator = ",";
 */ {}
 
-void tags_t::push(/*!tags:re2c
+void tags_t::push(/*!stags:re2c
     format = "const char *arg_@@";
     separator = ","; */)
 {
-    /*!tags:re2c format = "@@ = arg_@@;"; */
+    /*!stags:re2c format = "@@ = arg_@@;"; */
 }
 
-void tags_t::pop(/*!tags:re2c
+void tags_t::pop(/*!stags:re2c
     format = "const char *&arg_@@";
     separator = ","; */)
 {
-    /*!tags:re2c format = "arg_@@ = @@;"; */
+    /*!stags:re2c format = "arg_@@ = @@;"; */
 }
 
 int main(int argc, char **argv)
index 429ae3b9b612a82687544639901158e62b3f254c..1c773b51d3ba74e409be57a58887aa0f8fc26ead 100644 (file)
@@ -7,7 +7,7 @@
 // Coalescing adds bias to this choice: we first try to merge
 // copy operands, then examine the rest of tags.
 
-/*!tags:re2c format = "@@\n"; */
+/*!stags:re2c format = "@@\n"; */
 /*!re2c
     ("a" @p "c" @q)* { p q }
     ("a" @r "d" @s)* { r s }
index a21d7119dbebf47c99ed4d4dc372a1bdf553bf89..25b4de1658ce786e2ff260f36ea6b0925739593a 100644 (file)
@@ -2,7 +2,7 @@
 // of tag versions after copy coalescing during allocation of
 // tag variables.
 
-/*!tags:re2c format = "@@\n"; */
+/*!stags:re2c format = "@@\n"; */
 /*!re2c
     ("a" @p "c")* { p }
     ("a" @q "d")* { q }
index f064ada3145b88698e6c9be1973b852d1ed4f993..f882684d9f2563cdfe57226e8a1b6ff9e305c399 100644 (file)
@@ -53,4 +53,4 @@ yy7:
 }
 
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 'p' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'p' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 9b373ac6ae5cabda68a7275e74df47d513b6a2cc..c710581d9f2ecaed43b9ca875db2b2154cbfce8f 100644 (file)
@@ -115,4 +115,4 @@ yy16:
        {}
 }
 
-re2c: warning: line 3: tag 'z' is non-deterministic and induces 11 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'z' has 11th degree of nondeterminism [-Wnondeterministic-tags]
index d5e76d7eb405395879e66188718e4920aa504c9e..94e3630a8e19cd8e56693dffe038bd6005808bf4 100644 (file)
@@ -2,7 +2,7 @@
 // in tag optimization: there is a chance that they will be
 // merged with other tags.
 
-/*!tags:re2c format = "@@\n"; */
+/*!stags:re2c format = "@@\n"; */
 /*!re2c
 
     ("a" @p "bc")+ { p } // needs fallback tag for @p
index 34670fd610e2b75356b3fa09818be63dc0e8d3a7..2e8038f391b92ea5086ca9a7e91ef7d50a43529f 100644 (file)
@@ -1,4 +1,4 @@
-/*!tags:re2c format = "@@\n"; */
+/*!stags:re2c format = "@@\n"; */
 /*!re2c
 
     (@p "ab" | "c"    "d")*     { p }
index ba31a5b2ad6c3747c97d687d4a86b5c3a498e663..439897e43659b9a0f6891be52bea801e7ac78f15 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3, *p4;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 3ad4e069b3c4c9812b4c079a19d45b564cbabfff..c5a2fc50eda3de7c49e0dedfd1af03b0e74c6bb9 100644 (file)
@@ -8,8 +8,8 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
     const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;
@@ -19,7 +19,7 @@ static void lex(const char *s)
        yych = YYPEEK ();
        switch (yych) {
        case '0':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy4;
        default:        goto yy2;
        }
@@ -33,7 +33,7 @@ yy4:
        yych = YYPEEK ();
        switch (yych) {
        case '1':
-               YYTAGP (yyt2);
+               YYSTAGP (yyt2);
                goto yy5;
        default:        goto yy3;
        }
@@ -52,7 +52,7 @@ yy7:
        yych = YYPEEK ();
        switch (yych) {
        case '2':
-               YYTAGP (yyt3);
+               YYSTAGP (yyt3);
                goto yy8;
        default:        goto yy6;
        }
@@ -75,7 +75,7 @@ yy10:
        yych = YYPEEK ();
        switch (yych) {
        case '3':
-               YYTAGP (yyt4);
+               YYSTAGP (yyt4);
                goto yy11;
        default:        goto yy6;
        }
@@ -105,7 +105,7 @@ yy14:
        yych = YYPEEK ();
        switch (yych) {
        case '4':
-               YYTAGP (yyt5);
+               YYSTAGP (yyt5);
                goto yy15;
        default:        goto yy6;
        }
index f8b2825129ecc95350f88593c11aa8b7e9cf3a2c..8968f11ef21ee16d0cdc3703ff03ff88c0b5c4b3 100644 (file)
@@ -7,11 +7,11 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 254bb48267c094091cdf4371c53b134014dc12ca..505b0e0652565b29dfedec5d3681bd1e07bf3fac 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 4b34b83f660335e92dc5ded31356e4b8eab81e3a..801438c110307cd1e8e8dfe417252bf7f0bf47c4 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3, *p4;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index c1e667f8bc052fae04c12d1aae72459a5546510e..83ebe0ab545fca63aec83a2677e85b3497912a88 100644 (file)
@@ -8,8 +8,8 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
     const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;
@@ -19,29 +19,29 @@ static void lex(const char *s)
        yych = YYPEEK ();
        switch (yych) {
        case '0':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy4;
        case '1':
-               YYTAGP (yyt1);
-               YYTAGP (yyt2);
+               YYSTAGP (yyt1);
+               YYSTAGP (yyt2);
                goto yy7;
        case '2':
-               YYTAGP (yyt1);
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
+               YYSTAGP (yyt1);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
                goto yy9;
        case '3':
-               YYTAGP (yyt1);
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
+               YYSTAGP (yyt1);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
                goto yy11;
        case '4':
-               YYTAGP (yyt1);
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt1);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy13;
        default:        goto yy2;
        }
@@ -54,28 +54,28 @@ yy4:
        switch (yych) {
        case '0':       goto yy4;
        case '1':
-               YYTAGP (yyt2);
+               YYSTAGP (yyt2);
                goto yy7;
        case '2':
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
                goto yy9;
        case '3':
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
                goto yy11;
        case '4':
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy13;
        default:
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy6;
        }
 yy6:
@@ -99,21 +99,21 @@ yy7:
        switch (yych) {
        case '1':       goto yy7;
        case '2':
-               YYTAGP (yyt3);
+               YYSTAGP (yyt3);
                goto yy9;
        case '3':
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
                goto yy11;
        case '4':
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy13;
        default:
-               YYTAGP (yyt3);
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt3);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy6;
        }
 yy9:
@@ -122,15 +122,15 @@ yy9:
        switch (yych) {
        case '2':       goto yy9;
        case '3':
-               YYTAGP (yyt4);
+               YYSTAGP (yyt4);
                goto yy11;
        case '4':
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy13;
        default:
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy6;
        }
 yy11:
@@ -139,10 +139,10 @@ yy11:
        switch (yych) {
        case '3':       goto yy11;
        case '4':
-               YYTAGP (yyt5);
+               YYSTAGP (yyt5);
                goto yy13;
        default:
-               YYTAGP (yyt5);
+               YYSTAGP (yyt5);
                goto yy6;
        }
 yy13:
index 65b2f90e0e57896b3bfd4abc2b5215c95d76bfb0..b36d49e7cfaa8d0da5ae005c2108eb81b6bf644a 100644 (file)
@@ -7,11 +7,11 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index f4034bcc7f6bb472cd1ea4d70a20dd2a430bd6fb..1e9a52297aec504cb27e14e947dad362c30641cf 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index e39a69206560001b1f5d3b95c38c47dd7aaa3784..6e168f8e5611694c3123666330ce05c8a6f3e405 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3, *p4;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index e73da6e29048d2051db4eac0337f6fd296269b2d..34a06a7bc33c0cb92928b9bbd2812755759c88dc 100644 (file)
@@ -8,8 +8,8 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
     const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;
@@ -19,7 +19,7 @@ static void lex(const char *s)
        yych = YYPEEK ();
        switch (yych) {
        case '0':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy4;
        default:        goto yy2;
        }
@@ -33,11 +33,11 @@ yy4:
        yych = YYPEEK ();
        switch (yych) {
        case '1':
-               YYTAGP (yyt2);
+               YYSTAGP (yyt2);
                goto yy5;
        case '2':
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
                goto yy8;
        default:        goto yy3;
        }
@@ -47,7 +47,7 @@ yy5:
        switch (yych) {
        case '1':       goto yy5;
        case '2':
-               YYTAGP (yyt3);
+               YYSTAGP (yyt3);
                goto yy8;
        default:        goto yy7;
        }
@@ -59,11 +59,11 @@ yy8:
        yych = YYPEEK ();
        switch (yych) {
        case '3':
-               YYTAGP (yyt4);
+               YYSTAGP (yyt4);
                goto yy9;
        case '4':
-               YYTAGP (yyt4);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt4);
+               YYSTAGP (yyt5);
                goto yy11;
        default:        goto yy7;
        }
@@ -73,7 +73,7 @@ yy9:
        switch (yych) {
        case '3':       goto yy9;
        case '4':
-               YYTAGP (yyt5);
+               YYSTAGP (yyt5);
                goto yy11;
        default:        goto yy7;
        }
index e2af241db902445f68130465b3e58cdad548feed..3b011cf4a18c172e99cf403b597155c42a7e02f4 100644 (file)
@@ -7,11 +7,11 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 8a4a53e3c5cc7d1965f6b660c3725473138b100b..7db1646573f424a8a3c1ef2682f4465860f26024 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 9344278f44031fa6c0549fc2e11c670dd23de322..1e6b61300cc19bd9c83ffd2190c5dc700fe9efcd 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3, *p4;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 4abc6229eb0dc46ce8c79b5bf563a4e6031c1845..3c8cbab2021ed4571c3b7a11104077fbe5885806 100644 (file)
@@ -8,8 +8,8 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
     const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;
@@ -19,11 +19,11 @@ static void lex(const char *s)
        yych = YYPEEK ();
        switch (yych) {
        case '0':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy4;
        case '1':
-               YYTAGP (yyt1);
-               YYTAGP (yyt5);
+               YYSTAGP (yyt1);
+               YYSTAGP (yyt5);
                goto yy5;
        default:        goto yy2;
        }
@@ -46,11 +46,11 @@ yy5:
        yych = YYPEEK ();
        switch (yych) {
        case '2':
-               YYTAGP (yyt2);
+               YYSTAGP (yyt2);
                goto yy10;
        case '3':
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
                goto yy12;
        default:        goto yy3;
        }
@@ -61,7 +61,7 @@ yy7:
        switch (yych) {
        case '0':       goto yy6;
        case '1':
-               YYTAGP (yyt5);
+               YYSTAGP (yyt5);
                goto yy9;
        default:        goto yy8;
        }
@@ -73,11 +73,11 @@ yy9:
        yych = YYPEEK ();
        switch (yych) {
        case '2':
-               YYTAGP (yyt2);
+               YYSTAGP (yyt2);
                goto yy10;
        case '3':
-               YYTAGP (yyt2);
-               YYTAGP (yyt3);
+               YYSTAGP (yyt2);
+               YYSTAGP (yyt3);
                goto yy12;
        default:        goto yy8;
        }
@@ -87,14 +87,14 @@ yy10:
        switch (yych) {
        case '2':       goto yy10;
        case '3':
-               YYTAGP (yyt3);
+               YYSTAGP (yyt3);
                goto yy12;
        default:        goto yy8;
        }
 yy12:
        YYSKIP ();
        yych = YYPEEK ();
-       YYTAGP (yyt4);
+       YYSTAGP (yyt4);
        goto yy15;
 yy13:
        p0 = yyt1;
index 6945d924d9930aabb85e9a8137604d2ee795e5a3..b8b87e605811fa2ff471b6ec02072e06c444702e 100644 (file)
@@ -7,11 +7,11 @@ static void lex(const char *s)
 #define YYSKIP()           ++s
 #define YYBACKUP()         marker = s
 #define YYRESTORE()        s = marker
-#define YYTAGP(t)          t = s
-#define YYTAGN(t)          t = NULL
+#define YYSTAGP(t)         t = s
+#define YYSTAGN(t)         t = NULL
 #define YYRESTORETAG(t)    s = t
     const char *marker, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 218e739536cb6d0b47f57f4520a5cca7471560f5..c080646f843bbb578f97cd97fcefaa6751b58dd7 100644 (file)
@@ -4,7 +4,7 @@
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *p0, *p1, *p2, *p3;
-    /*!tags:re2c format = "const char *@@;"; */
+    /*!stags:re2c format = "const char *@@;"; */
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 3e064d852fc9541f463f86cf86a2ce313f70fab9..68558bc53f9efb3a8eb06c4d614debf1d24d994d 100644 (file)
@@ -2,17 +2,17 @@
 
 {
        YYCTYPE yych;
-       YYTAGP (yyt2);
+       YYSTAGP (yyt2);
        if (YYLESSTHAN (1)) YYFILL(1);
        yych = YYPEEK ();
        YYSKIP ();
        switch (yych) {
        case 'a':
-               YYTAGP (yyt1);
+               YYSTAGP (yyt1);
                goto yy2;
        default:
-               YYTAGP (yyt1);
-               YYTAGN (yyt2);
+               YYSTAGP (yyt1);
+               YYSTAGN (yyt2);
                goto yy2;
        }
 yy2:
@@ -21,4 +21,4 @@ yy2:
        {}
 }
 
-re2c: warning: line 3: tag 'a' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'a' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 1b23b576f2d07e11e9d3d2f00f5a21c582ebb682..86b3f8c12178694515510fc2e51ef52a9bf96c61 100644 (file)
@@ -48,4 +48,4 @@ yy5:
 }
 
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 4: tag 't' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 4: tag 't' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index bcd17eb5549e136cbe191d607204181fea4034a4..86307d47a8d90e393b2241f24cb69d0dfe5c229c 100644 (file)
@@ -42,4 +42,4 @@ yy5:
 }
 
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 4: tag 't' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 4: tag 't' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index a2669def04f246d7532bd02241de943b10aedaae..8ab15f1a9656007223613408db6400af963501d7 100644 (file)
@@ -95,4 +95,4 @@ yy11:
 }
 
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 4: tag 't' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 4: tag 't' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 4354280243b7fb1409b529c1917199d7231ac8e4..9c16e71af716f85b5bb4f9cf6cd54aaa8da5ed0c 100644 (file)
@@ -80,4 +80,4 @@ yy11:
 }
 
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 4: tag 't' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 4: tag 't' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index b1909f0870e71c324a2813de51c2d72aad9c0c2f..c78e224c0c462ef19df5a4f9063b86b9fa50bcec 100644 (file)
@@ -27,4 +27,4 @@ yy3:
 }
 
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 'a' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'a' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 3cc902d322063efb5a65ca93c0a10223123fd215..574ad7ce37283a552354cfab5debe976edd520ad 100644 (file)
@@ -51,5 +51,5 @@ yy8:
 
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 'a' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 4: tag 'b' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'a' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 4: tag 'b' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index a74db64f76407db745e1e54a0a9b32dd3464bda0..ebd23fb3b44158fe1d400ad52e543c6c91bb3f7a 100644 (file)
@@ -63,4 +63,4 @@ yy12:
 }
 
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 't' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 't' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 68607f3af0a3b056f12d868066ea3ae0b5db48a0..eb254ad18e7902974cdfe4bcf6a5c553f50c3a38 100644 (file)
@@ -60,4 +60,4 @@ yy9:
 }
 
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 'p' is non-deterministic and induces 5 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'p' has 5th degree of nondeterminism [-Wnondeterministic-tags]
index 817f7c1cb2a249b1c6ed7d16024477875579dcbb..4986ed817dd42512df3be400dfc6df2ad2db114d 100644 (file)
@@ -53,5 +53,5 @@ yy8:
 }
 
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 'p' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 3: tag 'q' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'p' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'q' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 74f0f3448a92fb737a983781b9aa9bc7d4ca499c..d15beb0aec938cfa8673097f2406eaef155f592b 100644 (file)
@@ -68,4 +68,4 @@ yy10:
 }
 
 re2c: warning: line 4: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 3: tag 'c' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 3: tag 'c' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index 38593335cdbea6e39d19ffe21721125dd3bb3662..609c5a98494a28013baa573c155bed3e57b3d128 100644 (file)
@@ -203,8 +203,8 @@ yy21:
 }
 
 re2c: warning: line 7: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 6: tag 'p' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 6: tag 'q' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 6: tag 'y' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 7: tag 'r' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 7: tag 's' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 6: tag 'p' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 6: tag 'q' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 6: tag 'y' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 7: tag 'r' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 7: tag 's' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
index f209235d4c02e280f17399668026e6ce62040335..93d0e5321ff8272288c4473920ba1d559d2faec5 100644 (file)
@@ -48,9 +48,9 @@ yy6:
 }
 
 re2c: warning: line 6: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 5: tag 'u' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 5: tag 'v' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 5: tag 'w' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 5: tag 'x' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 5: tag 'y' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
-re2c: warning: line 5: tag 'z' is non-deterministic and induces 2 parallel instances [-Wnondeterministic-tags]
+re2c: warning: line 5: tag 'u' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 5: tag 'v' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 5: tag 'w' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 5: tag 'x' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 5: tag 'y' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 5: tag 'z' has 2nd degree of nondeterminism [-Wnondeterministic-tags]