]> granicus.if.org Git - re2c/commitdiff
Added codegen primitives for tags with history.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 6 Apr 2017 14:18:12 +0000 (15:18 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 6 Apr 2017 14:18:12 +0000 (15:18 +0100)
re2c/bootstrap/src/ast/lex_conf.cc
re2c/src/ast/lex_conf.re
re2c/src/code/emit_action.cc
re2c/src/conf/opt.cc
re2c/src/conf/opt.h

index 09250480fe8ccd1f9b674041b5b5ed3abcb0d9f8..2c15bb3b52ddd638c91e1be76e336ffbb7ddc9c9 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Tue Mar  7 21:23:26 2017 */
+/* Generated by re2c 0.16 on Thu Apr  6 15:15:40 2017 */
 #line 1 "../src/ast/lex_conf.re"
 #include "src/util/c99_stdint.h"
 #include <string>
@@ -101,7 +101,7 @@ void Scanner::lex_conf(Opt &opts)
                }
        }
 yy2:
-#line 158 "../src/ast/lex_conf.re"
+#line 160 "../src/ast/lex_conf.re"
        {
                fatal_error(cline, get_column(),
                        "unrecognized configuration '%.*s'",
@@ -1095,7 +1095,7 @@ yy208:
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 140 "../src/ast/lex_conf.re"
+#line 142 "../src/ast/lex_conf.re"
        { opts.set_bEmitYYCh      (lex_conf_bool()); return; }
 #line 1101 "src/ast/lex_conf.cc"
 yy210:
@@ -1131,17 +1131,17 @@ yy216:
                                goto yy253;
                        }
                } else {
-                       goto yy322;
+                       goto yy323;
                }
        } else {
                if (yyaccept <= 4) {
                        if (yyaccept == 3) {
-                               goto yy390;
+                               goto yy392;
                        } else {
-                               goto yy585;
+                               goto yy598;
                        }
                } else {
-                       goto yy665;
+                       goto yy678;
                }
        }
 yy217:
@@ -1194,91 +1194,92 @@ yy226:
 yy227:
        yych = (unsigned char)*++cur;
        if (yych == 'E') goto yy278;
+       if (yych == 'U') goto yy279;
        goto yy4;
 yy228:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy279;
+       if (yych == 'E') goto yy280;
        goto yy4;
 yy229:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy280;
-       if (yych == 'K') goto yy281;
+       if (yych == 'E') goto yy281;
+       if (yych == 'K') goto yy282;
        goto yy4;
 yy230:
        yych = (unsigned char)*++cur;
-       if (yych == 'v') goto yy282;
+       if (yych == 'v') goto yy283;
        goto yy4;
 yy231:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy283;
+       if (yych == '-') goto yy284;
        goto yy4;
 yy232:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy284;
+       if (yych == 'u') goto yy285;
        goto yy4;
 yy233:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy285;
+       if (yych == 'g') goto yy286;
        goto yy4;
 yy234:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy286;
+       if (yych == 'm') goto yy287;
        goto yy4;
 yy235:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy287;
+       if (yych == 'r') goto yy288;
        goto yy4;
 yy236:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy288;
+       if (yych == 'y') goto yy289;
        goto yy4;
 yy237:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy289;
+       if (yych == 'd') goto yy290;
        goto yy4;
 yy238:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy290;
+       if (yych == 't') goto yy291;
        goto yy4;
 yy239:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy292;
+       if (yych == 'e') goto yy293;
        goto yy4;
 yy240:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy293;
+       if (yych == 'e') goto yy294;
        goto yy4;
 yy241:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy294;
+       if (yych == 'o') goto yy295;
        goto yy4;
 yy242:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy295;
+       if (yych == 'x') goto yy296;
        goto yy4;
 yy243:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy296;
+       if (yych == 'o') goto yy297;
        goto yy4;
 yy244:
        yych = (unsigned char)*++cur;
-       if (yych == '1') goto yy297;
+       if (yych == '1') goto yy298;
        if (yych == '8') goto yy90;
        goto yy4;
 yy245:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy298;
+       if (yych == '-') goto yy299;
        goto yy4;
 yy246:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy299;
+       if (yych == 'i') goto yy300;
        goto yy4;
 yy247:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 125 "../src/ast/lex_conf.re"
+#line 127 "../src/ast/lex_conf.re"
        {
                const int32_t n = lex_conf_number ();
                if (n < 0)
@@ -1288,18 +1289,18 @@ yy247:
                opts.set_topIndent (static_cast<uint32_t> (n));
                return;
        }
-#line 1292 "src/ast/lex_conf.cc"
+#line 1293 "src/ast/lex_conf.cc"
 yy249:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy300;
+       if (yych == 'l') goto yy301;
        goto yy4;
 yy250:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy301;
+       if (yych == 'x') goto yy302;
        goto yy4;
 yy251:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy302;
+       if (yych == 'x') goto yy303;
        goto yy4;
 yy252:
        yyaccept = 1;
@@ -1310,595 +1311,603 @@ yy252:
        if (yych <= 0x1F) {
                if (yych == '\t') {
                        ctx = cur;
-                       goto yy304;
+                       goto yy305;
                }
        } else {
                if (yych <= ' ') {
                        ctx = cur;
-                       goto yy304;
+                       goto yy305;
                }
                if (yych == '=') {
                        ctx = cur;
-                       goto yy306;
+                       goto yy307;
                }
        }
 yy253:
-#line 153 "../src/ast/lex_conf.re"
+#line 155 "../src/ast/lex_conf.re"
        { opts.set_startlabel       (lex_conf_string()); return; }
-#line 1329 "src/ast/lex_conf.cc"
+#line 1330 "src/ast/lex_conf.cc"
 yy254:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy308;
+       if (yych == 't') goto yy309;
        goto yy4;
 yy255:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy310;
+       if (yych == 'l') goto yy311;
        goto yy4;
 yy256:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy311;
+       if (yych == 'l') goto yy312;
        goto yy4;
 yy257:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy312;
+       if (yych == 's') goto yy313;
        goto yy4;
 yy258:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy313;
+       if (yych == 'x') goto yy314;
        goto yy4;
 yy259:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy315;
+       if (yych == 'y') goto yy316;
        goto yy4;
 yy260:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy316;
+       if (yych == 'r') goto yy317;
        goto yy4;
 yy261:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy317;
+       if (yych == 'c') goto yy318;
        goto yy4;
 yy262:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy318;
+       if (yych == 'b') goto yy319;
        goto yy4;
 yy263:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy319;
+       if (yych == 'a') goto yy320;
        goto yy4;
 yy264:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy320;
+       if (yych == 'h') goto yy321;
        goto yy4;
 yy265:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy321;
+       if (yych == 'r') goto yy322;
        goto yy4;
 yy266:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy323;
+       if (yych == 'o') goto yy324;
        goto yy216;
 yy267:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy324;
+       if (yych == 'f') goto yy325;
        goto yy4;
 yy268:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy325;
+       if (yych == 'C') goto yy326;
        goto yy4;
 yy269:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy326;
-       if (yych == 'P') goto yy327;
+       if (yych == 'N') goto yy327;
+       if (yych == 'P') goto yy328;
        goto yy4;
 yy270:
        yych = (unsigned char)*++cur;
        if (yych <= 'W') goto yy4;
-       if (yych <= 'X') goto yy328;
-       if (yych <= 'Y') goto yy329;
+       if (yych <= 'X') goto yy329;
+       if (yych <= 'Y') goto yy330;
        goto yy4;
 yy271:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy330;
+       if (yych == 'R') goto yy331;
        goto yy4;
 yy272:
        yych = (unsigned char)*++cur;
-       if (yych == 'B') goto yy331;
+       if (yych == 'B') goto yy332;
        goto yy4;
 yy273:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy332;
+       if (yych == 'L') goto yy333;
        goto yy4;
 yy274:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy333;
+       if (yych == 'T') goto yy334;
        goto yy4;
 yy275:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy334;
+       if (yych == 'S') goto yy335;
        goto yy4;
 yy276:
        yych = (unsigned char)*++cur;
-       if (yych == 'M') goto yy335;
+       if (yych == 'M') goto yy336;
        goto yy4;
 yy277:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy336;
+       if (yych == 'R') goto yy337;
        goto yy4;
 yy278:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy337;
+       if (yych == 'E') goto yy338;
        goto yy4;
 yy279:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy338;
+       if (yych == 'S') goto yy339;
        goto yy4;
 yy280:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy339;
+       if (yych == 'S') goto yy340;
        goto yy4;
 yy281:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy340;
+       if (yych == 'T') goto yy341;
        goto yy4;
 yy282:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy341;
+       if (yych == 'I') goto yy342;
        goto yy4;
 yy283:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy342;
+       if (yych == 'e') goto yy343;
        goto yy4;
 yy284:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy343;
+       if (yych == 'i') goto yy344;
        goto yy4;
 yy285:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy344;
+       if (yych == 't') goto yy345;
        goto yy4;
 yy286:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy345;
+       if (yych == '-') goto yy346;
        goto yy4;
 yy287:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy346;
+       if (yych == 'i') goto yy347;
        goto yy4;
 yy288:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy347;
+       if (yych == '-') goto yy348;
        goto yy4;
 yy289:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy348;
+       if (yych == '-') goto yy349;
        goto yy4;
 yy290:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy350;
+       goto yy4;
+yy291:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 60 "../src/ast/lex_conf.re"
        { lex_conf_input(opts);            return; }
-#line 1484 "src/ast/lex_conf.cc"
-yy292:
-       yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy349;
-       goto yy4;
+#line 1489 "src/ast/lex_conf.cc"
 yy293:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy350;
+       if (yych == 'd') goto yy351;
        goto yy4;
 yy294:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy351;
+       if (yych == 'b') goto yy352;
        goto yy4;
 yy295:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy352;
+       if (yych == 'o') goto yy353;
        goto yy4;
 yy296:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy353;
+       if (yych == '-') goto yy354;
        goto yy4;
 yy297:
        yych = (unsigned char)*++cur;
-       if (yych == '6') goto yy114;
+       if (yych == 'd') goto yy355;
        goto yy4;
 yy298:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy354;
+       if (yych == '6') goto yy114;
        goto yy4;
 yy299:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy355;
+       if (yych == 'c') goto yy356;
        goto yy4;
 yy300:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy356;
+       if (yych == 'n') goto yy357;
        goto yy4;
 yy301:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy357;
+       if (yych == 'l') goto yy358;
        goto yy4;
 yy302:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy359;
+       goto yy4;
+yy303:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 149 "../src/ast/lex_conf.re"
+#line 151 "../src/ast/lex_conf.re"
        { opts.set_labelPrefix (lex_conf_string ()); return; }
-#line 1532 "src/ast/lex_conf.cc"
-yy304:
+#line 1537 "src/ast/lex_conf.cc"
+yy305:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 64) {
-               goto yy304;
+               goto yy305;
        }
        if (yych != '=') goto yy216;
-yy306:
+yy307:
        ++cur;
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= ',') {
                if (yych <= '\t') {
                        if (yych <= 0x08) goto yy216;
-                       goto yy306;
+                       goto yy307;
                } else {
-                       if (yych == ' ') goto yy306;
+                       if (yych == ' ') goto yy307;
                        goto yy216;
                }
        } else {
                if (yych <= '/') {
-                       if (yych <= '-') goto yy359;
+                       if (yych <= '-') goto yy361;
                        goto yy216;
                } else {
-                       if (yych <= '0') goto yy360;
-                       if (yych <= '9') goto yy362;
+                       if (yych <= '0') goto yy362;
+                       if (yych <= '9') goto yy364;
                        goto yy216;
                }
        }
-yy308:
+yy309:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 85 "../src/ast/lex_conf.re"
        { opts.set_bUseStateAbort  (lex_conf_bool()); return; }
-#line 1570 "src/ast/lex_conf.cc"
-yy310:
-       yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy364;
-       goto yy4;
+#line 1575 "src/ast/lex_conf.cc"
 yy311:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy365;
+       if (yych == 'a') goto yy366;
        goto yy4;
 yy312:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy367;
+       if (yych == 't') goto yy367;
        goto yy4;
 yy313:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy369;
+       goto yy4;
+yy314:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 120 "../src/ast/lex_conf.re"
+#line 122 "../src/ast/lex_conf.re"
        { opts.set_tags_prefix    (lex_conf_string ()); return; }
-#line 1590 "src/ast/lex_conf.cc"
-yy315:
+#line 1595 "src/ast/lex_conf.cc"
+yy316:
        yych = (unsigned char)*++cur;
        if (yych <= 'c') {
                if (yych <= '`') goto yy4;
-               if (yych <= 'a') goto yy368;
-               if (yych <= 'b') goto yy369;
-               goto yy370;
+               if (yych <= 'a') goto yy370;
+               if (yych <= 'b') goto yy371;
+               goto yy372;
        } else {
                if (yych <= 'r') goto yy4;
-               if (yych <= 's') goto yy371;
-               if (yych <= 't') goto yy372;
+               if (yych <= 's') goto yy373;
+               if (yych <= 't') goto yy374;
                goto yy4;
        }
-yy316:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy373;
-       goto yy4;
 yy317:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy374;
+       if (yych == 's') goto yy375;
        goto yy4;
 yy318:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy376;
+       if (yych == 'k') goto yy376;
        goto yy4;
 yy319:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy377;
+       if (yych == 'l') goto yy378;
        goto yy4;
 yy320:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy378;
+       if (yych == 'm') goto yy379;
        goto yy4;
 yy321:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy380;
+       goto yy4;
+yy322:
        yyaccept = 2;
        yych = (unsigned char)*(mar = ++cur);
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-       if (yych == '@') goto yy379;
-yy322:
+       if (yych == '@') goto yy381;
+yy323:
 #line 72 "../src/ast/lex_conf.re"
        { opts.set_condDivider      (lex_conf_string ()); return; }
-#line 1634 "src/ast/lex_conf.cc"
-yy323:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy380;
-       goto yy216;
+#line 1639 "src/ast/lex_conf.cc"
 yy324:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy381;
-       goto yy4;
+       if (yych == 'n') goto yy382;
+       goto yy216;
 yy325:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy382;
+       if (yych == 'i') goto yy383;
        goto yy4;
 yy326:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy383;
+       if (yych == 'K') goto yy384;
        goto yy4;
 yy327:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy384;
+       if (yych == 'D') goto yy385;
        goto yy4;
 yy328:
        yych = (unsigned char)*++cur;
-       if (yych == 'M') goto yy385;
+       if (yych == 'Y') goto yy386;
        goto yy4;
 yy329:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy386;
+       if (yych == 'M') goto yy387;
        goto yy4;
 yy330:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy387;
+       if (yych == 'P') goto yy388;
        goto yy4;
 yy331:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy388;
+       if (yych == 'S') goto yy389;
        goto yy4;
 yy332:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy389;
+       if (yych == 'U') goto yy390;
        goto yy4;
 yy333:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy391;
-       if (yych == 'S') goto yy392;
+       if (yych == 'L') goto yy391;
        goto yy4;
 yy334:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy393;
+       if (yych == 'C') goto yy393;
+       if (yych == 'S') goto yy394;
        goto yy4;
 yy335:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy394;
+       if (yych == 'S') goto yy395;
        goto yy4;
 yy336:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy395;
+       if (yych == 'I') goto yy396;
        goto yy4;
 yy337:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy396;
+       if (yych == 'K') goto yy397;
        goto yy4;
 yy338:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy398;
+       if (yych == 'K') goto yy398;
        goto yy4;
 yy339:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy399;
-       if (yych == 'S') goto yy400;
+       if (yych == 'H') goto yy400;
        goto yy4;
 yy340:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy401;
+       if (yych == 'T') goto yy401;
        goto yy4;
 yy341:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy403;
+       if (yych == 'C') goto yy402;
+       if (yych == 'S') goto yy403;
        goto yy4;
 yy342:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy404;
+       if (yych == 'P') goto yy404;
        goto yy4;
 yy343:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy405;
+       if (yych == 'c') goto yy406;
        goto yy4;
 yy344:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy406;
+       if (yych == 'n') goto yy407;
        goto yy4;
 yy345:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy407;
+       if (yych == 'e') goto yy408;
        goto yy4;
 yy346:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy408;
+       if (yych == 'o') goto yy409;
        goto yy4;
 yy347:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy409;
+       if (yych == 'n') goto yy410;
        goto yy4;
 yy348:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy410;
+       if (yych == 's') goto yy411;
        goto yy4;
 yy349:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy411;
+       if (yych == 'c') goto yy412;
        goto yy4;
 yy350:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy412;
+       if (yych == 'n') goto yy413;
        goto yy4;
 yy351:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy413;
+       if (yych == '-') goto yy414;
        goto yy4;
 yy352:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy414;
+       if (yych == 'u') goto yy415;
        goto yy4;
 yy353:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy415;
+       if (yych == 'k') goto yy416;
        goto yy4;
 yy354:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy416;
+       if (yych == 'c') goto yy417;
        goto yy4;
 yy355:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy417;
+       if (yych == 'e') goto yy418;
        goto yy4;
 yy356:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy419;
+       if (yych == 'h') goto yy419;
        goto yy4;
 yy357:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy420;
+       goto yy4;
+yy358:
+       yych = (unsigned char)*++cur;
+       if (yych == 'L') goto yy422;
+       goto yy4;
+yy359:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 84 "../src/ast/lex_conf.re"
        { opts.set_yynext          (lex_conf_string ()); return; }
-#line 1780 "src/ast/lex_conf.cc"
-yy359:
+#line 1789 "src/ast/lex_conf.cc"
+yy361:
        yych = (unsigned char)*++cur;
        if (yych <= '0') goto yy216;
-       if (yych <= '9') goto yy362;
+       if (yych <= '9') goto yy364;
        goto yy216;
-yy360:
+yy362:
        ++cur;
-yy361:
+yy363:
        cur = ctx;
-#line 152 "../src/ast/lex_conf.re"
+#line 154 "../src/ast/lex_conf.re"
        { opts.set_startlabel_force (lex_conf_bool());   return; }
-#line 1792 "src/ast/lex_conf.cc"
-yy362:
+#line 1801 "src/ast/lex_conf.cc"
+yy364:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy362;
+               goto yy364;
        }
-       goto yy361;
-yy364:
+       goto yy363;
+yy366:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy420;
+       if (yych == 'b') goto yy423;
        goto yy4;
-yy365:
+yy367:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 119 "../src/ast/lex_conf.re"
+#line 121 "../src/ast/lex_conf.re"
        { opts.set_tags_default   (lex_conf_string ()); return; }
-#line 1812 "src/ast/lex_conf.cc"
-yy367:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy421;
-       goto yy4;
-yy368:
-       yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy422;
-       goto yy4;
+#line 1821 "src/ast/lex_conf.cc"
 yy369:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy423;
+       if (yych == 'i') goto yy424;
        goto yy4;
 yy370:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy425;
-       if (yych == 't') goto yy427;
+       if (yych == 'c') goto yy425;
        goto yy4;
 yy371:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy428;
+       if (yych == 'm') goto yy426;
        goto yy4;
 yy372:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy429;
+       if (yych == 'h') goto yy428;
+       if (yych == 't') goto yy430;
        goto yy4;
 yy373:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy430;
+       if (yych == 't') goto yy431;
        goto yy4;
 yy374:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy432;
+       goto yy4;
+yy375:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy433;
+       goto yy4;
+yy376:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 147 "../src/ast/lex_conf.re"
+#line 149 "../src/ast/lex_conf.re"
        { opts.set_fill_check   (lex_conf_bool()); return; }
-#line 1849 "src/ast/lex_conf.cc"
-yy376:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy431;
-       goto yy4;
-yy377:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy433;
-       goto yy4;
+#line 1858 "src/ast/lex_conf.cc"
 yy378:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy434;
+       if (yych == 'e') goto yy434;
        goto yy4;
 yy379:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy435;
-       goto yy216;
+       if (yych == 'e') goto yy436;
+       goto yy4;
 yy380:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy436;
-       goto yy216;
+       if (yych == 'l') goto yy437;
+       goto yy4;
 yy381:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy438;
-       goto yy4;
+       if (yych == 'c') goto yy438;
+       goto yy216;
 yy382:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy440;
-       goto yy4;
+       if (yych == 'd') goto yy439;
+       goto yy216;
 yy383:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy441;
+       if (yych == 'x') goto yy441;
        goto yy4;
 yy384:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy442;
+       if (yych == 'U') goto yy443;
        goto yy4;
 yy385:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy443;
+       if (yych == 'T') goto yy444;
        goto yy4;
 yy386:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy444;
+       if (yych == 'T') goto yy445;
        goto yy4;
 yy387:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy446;
+       if (yych == 'A') goto yy446;
        goto yy4;
 yy388:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy447;
+       if (yych == 'E') goto yy447;
        goto yy4;
 yy389:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy449;
+       goto yy4;
+yy390:
+       yych = (unsigned char)*++cur;
+       if (yych == 'G') goto yy450;
+       goto yy4;
+yy391:
        yyaccept = 3;
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= '?') {
@@ -1906,372 +1915,365 @@ yy389:
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy449;
+                       if (yych <= ':') goto yy452;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy450;
+                       if (yych <= '@') goto yy453;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy390;
+                       if (yych == '`') goto yy392;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy390:
-#line 142 "../src/ast/lex_conf.re"
-       { opts.set_fill         (lex_conf_string ()); return; }
-#line 1924 "src/ast/lex_conf.cc"
-yy391:
-       yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy451;
-       goto yy4;
 yy392:
-       yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy452;
-       goto yy4;
+#line 144 "../src/ast/lex_conf.re"
+       { opts.set_fill         (lex_conf_string ()); return; }
+#line 1933 "src/ast/lex_conf.cc"
 yy393:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy453;
+       if (yych == 'O') goto yy454;
        goto yy4;
 yy394:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy454;
+       if (yych == 'T') goto yy455;
        goto yy4;
 yy395:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy456;
+       if (yych == 'T') goto yy456;
        goto yy4;
 yy396:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy457;
+       goto yy4;
+yy397:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy459;
+       goto yy4;
+yy398:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 108 "../src/ast/lex_conf.re"
        { opts.set_yypeek       (lex_conf_string ()); return; }
-#line 1952 "src/ast/lex_conf.cc"
-yy398:
+#line 1961 "src/ast/lex_conf.cc"
+yy400:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy457;
+       if (yych == 'N') goto yy460;
+       if (yych == 'P') goto yy461;
        goto yy4;
-yy399:
+yy401:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy458;
+       if (yych == 'O') goto yy462;
        goto yy4;
-yy400:
+yy402:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy459;
+       if (yych == 'O') goto yy463;
        goto yy4;
-yy401:
+yy403:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy464;
+       goto yy4;
+yy404:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 109 "../src/ast/lex_conf.re"
        { opts.set_yyskip       (lex_conf_string ()); return; }
-#line 1972 "src/ast/lex_conf.cc"
-yy403:
-       yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy460;
-       goto yy4;
-yy404:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy461;
-       if (yych == 'v') goto yy462;
-       goto yy4;
-yy405:
-       yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy463;
-       goto yy4;
+#line 1986 "src/ast/lex_conf.cc"
 yy406:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy464;
+       if (yych == 't') goto yy465;
        goto yy4;
 yy407:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy465;
+       if (yych == 's') goto yy466;
+       if (yych == 'v') goto yy467;
        goto yy4;
 yy408:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy466;
+       if (yych == 'd') goto yy468;
        goto yy4;
 yy409:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy467;
+       if (yych == 'u') goto yy469;
        goto yy4;
 yy410:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy468;
+       if (yych == 'i') goto yy470;
        goto yy4;
 yy411:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy469;
+       if (yych == 'k') goto yy471;
        goto yy4;
 yy412:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy470;
+       if (yych == 'l') goto yy472;
        goto yy4;
 yy413:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy471;
+       if (yych == 'g') goto yy473;
        goto yy4;
 yy414:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy472;
+       if (yych == 'i') goto yy474;
        goto yy4;
 yy415:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy475;
+       goto yy4;
+yy416:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy476;
+       goto yy4;
+yy417:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy477;
+       goto yy4;
+yy418:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy111;
-yy416:
+yy419:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy473;
+       if (yych == 'a') goto yy478;
        goto yy4;
-yy417:
+yy420:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 123 "../src/ast/lex_conf.re"
+#line 125 "../src/ast/lex_conf.re"
        { opts.set_indString (lex_conf_string ()); return; }
-#line 2039 "src/ast/lex_conf.cc"
-yy419:
+#line 2053 "src/ast/lex_conf.cc"
+yy422:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy474;
+       if (yych == 'a') goto yy479;
        goto yy4;
-yy420:
+yy423:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy475;
+       if (yych == 'e') goto yy480;
        goto yy4;
-yy421:
+yy424:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy476;
+       if (yych == 'o') goto yy481;
        goto yy4;
-yy422:
+yy425:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy477;
+       if (yych == 'c') goto yy482;
        goto yy4;
-yy423:
+yy426:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 89 "../src/ast/lex_conf.re"
        { opts.set_yybm         (lex_conf_string ()); return; }
-#line 2063 "src/ast/lex_conf.cc"
-yy425:
+#line 2077 "src/ast/lex_conf.cc"
+yy428:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 138 "../src/ast/lex_conf.re"
+#line 140 "../src/ast/lex_conf.re"
        { opts.set_yych           (lex_conf_string ()); return; }
-#line 2071 "src/ast/lex_conf.cc"
-yy427:
+#line 2085 "src/ast/lex_conf.cc"
+yy430:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy478;
+       if (yych == 'a') goto yy483;
        goto yy4;
-yy428:
+yy431:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy479;
+       if (yych == 'a') goto yy484;
        goto yy4;
-yy429:
+yy432:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy480;
+       if (yych == 'r') goto yy485;
        goto yy4;
-yy430:
+yy433:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy481;
+       if (yych == 'o') goto yy486;
        goto yy4;
-yy431:
+yy434:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 143 "../src/ast/lex_conf.re"
+#line 145 "../src/ast/lex_conf.re"
        { opts.set_fill_use     (lex_conf_bool()); return; }
-#line 2095 "src/ast/lex_conf.cc"
-yy433:
+#line 2109 "src/ast/lex_conf.cc"
+yy436:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy482;
+       if (yych == 't') goto yy487;
        goto yy4;
-yy434:
+yy437:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy483;
+       if (yych == 'd') goto yy488;
        goto yy4;
-yy435:
+yy438:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy485;
+       if (yych == 'o') goto yy490;
        goto yy216;
-yy436:
+yy439:
        ++cur;
 #line 75 "../src/ast/lex_conf.re"
        { opts.set_condGotoParam    (lex_conf_string ()); return; }
-#line 2112 "src/ast/lex_conf.cc"
-yy438:
+#line 2126 "src/ast/lex_conf.cc"
+yy441:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 71 "../src/ast/lex_conf.re"
        { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
-#line 2120 "src/ast/lex_conf.cc"
-yy440:
+#line 2134 "src/ast/lex_conf.cc"
+yy443:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy486;
+       if (yych == 'P') goto yy491;
        goto yy4;
-yy441:
+yy444:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy488;
+       if (yych == 'Y') goto yy493;
        goto yy4;
-yy442:
+yy445:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy489;
+       if (yych == 'A') goto yy494;
        goto yy4;
-yy443:
+yy446:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy490;
+       if (yych == 'R') goto yy495;
        goto yy4;
-yy444:
+yy447:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 137 "../src/ast/lex_conf.re"
+#line 139 "../src/ast/lex_conf.re"
        { opts.set_yyctype        (lex_conf_string ()); return; }
-#line 2144 "src/ast/lex_conf.cc"
-yy446:
+#line 2158 "src/ast/lex_conf.cc"
+yy449:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy491;
+       if (yych == 'R') goto yy496;
        goto yy4;
-yy447:
+yy450:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 135 "../src/ast/lex_conf.re"
+#line 137 "../src/ast/lex_conf.re"
        { opts.set_yydebug (lex_conf_string ()); return; }
-#line 2156 "src/ast/lex_conf.cc"
-yy449:
+#line 2170 "src/ast/lex_conf.cc"
+yy452:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy493;
+       if (yych == 'n') goto yy498;
        goto yy4;
-yy450:
+yy453:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy494;
+       if (yych == 'l') goto yy499;
        goto yy216;
-yy451:
+yy454:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy495;
+       if (yych == 'N') goto yy500;
        goto yy4;
-yy452:
+yy455:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy496;
+       if (yych == 'A') goto yy501;
        goto yy4;
-yy453:
+yy456:
        yych = (unsigned char)*++cur;
-       if (yych == 'H') goto yy497;
+       if (yych == 'H') goto yy502;
        goto yy4;
-yy454:
+yy457:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 106 "../src/ast/lex_conf.re"
        { opts.set_yylimit     (lex_conf_string ()); return; }
-#line 2184 "src/ast/lex_conf.cc"
-yy456:
-       yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy498;
-       goto yy4;
-yy457:
-       yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy500;
-       goto yy4;
-yy458:
-       yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy501;
-       goto yy4;
+#line 2198 "src/ast/lex_conf.cc"
 yy459:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy502;
+       if (yych == 'R') goto yy503;
        goto yy4;
 yy460:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy503;
+       if (yych == 'T') goto yy505;
        goto yy4;
 yy461:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy504;
+       if (yych == 'T') goto yy506;
        goto yy4;
 yy462:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy505;
+       if (yych == 'R') goto yy507;
        goto yy4;
 yy463:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy506;
+       if (yych == 'N') goto yy508;
        goto yy4;
 yy464:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy507;
+       if (yych == 'A') goto yy509;
        goto yy4;
 yy465:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy508;
+       if (yych == 'o') goto yy510;
        goto yy4;
 yy466:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy509;
+       if (yych == 'e') goto yy511;
        goto yy4;
 yy467:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy510;
+       if (yych == 'e') goto yy512;
        goto yy4;
 yy468:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy511;
+       if (yych == '-') goto yy513;
        goto yy4;
 yy469:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy512;
+       if (yych == 't') goto yy514;
        goto yy4;
 yy470:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy513;
+       if (yych == 'm') goto yy515;
        goto yy4;
 yy471:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy514;
+       if (yych == 'i') goto yy516;
        goto yy4;
 yy472:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy515;
+       if (yych == 'a') goto yy517;
        goto yy4;
 yy473:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy516;
+       if (yych == '-') goto yy518;
        goto yy4;
 yy474:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy517;
+       if (yych == 'f') goto yy519;
        goto yy4;
 yy475:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy518;
+       if (yych == '-') goto yy520;
        goto yy4;
 yy476:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy520;
+       if (yych == 'h') goto yy521;
        goto yy4;
 yy477:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy522;
+       if (yych == 'p') goto yy522;
        goto yy4;
 yy478:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy523;
+       if (yych == 'r') goto yy523;
        goto yy4;
 yy479:
        yych = (unsigned char)*++cur;
@@ -2279,17 +2281,37 @@ yy479:
        goto yy4;
 yy480:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy525;
+       if (yych == 'l') goto yy525;
        goto yy4;
 yy481:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy526;
+       if (yych == 'n') goto yy527;
        goto yy4;
 yy482:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy528;
+       if (yych == 'e') goto yy529;
        goto yy4;
 yy483:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy530;
+       goto yy4;
+yy484:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy531;
+       goto yy4;
+yy485:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy532;
+       goto yy4;
+yy486:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy533;
+       goto yy4;
+yy487:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy535;
+       goto yy4;
+yy488:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
@@ -2304,446 +2326,478 @@ yy483:
                opts.set_cGotoThreshold (static_cast<uint32_t> (n));
                return;
        }
-#line 2308 "src/ast/lex_conf.cc"
-yy485:
+#line 2330 "src/ast/lex_conf.cc"
+yy490:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy529;
+       if (yych == 'n') goto yy536;
        goto yy216;
-yy486:
+yy491:
        yych = (unsigned char)*++cur;
        if (yych <= 'C') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= ':') goto yy3;
-                       if (yych <= '@') goto yy487;
+                       if (yych <= '@') goto yy492;
                        if (yych <= 'B') goto yy3;
-                       goto yy530;
+                       goto yy537;
                }
        } else {
                if (yych <= '^') {
-                       if (yych == 'T') goto yy531;
+                       if (yych == 'T') goto yy538;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy487;
+                       if (yych == '`') goto yy492;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy487:
+yy492:
 #line 110 "../src/ast/lex_conf.re"
        { opts.set_yybackup     (lex_conf_string ()); return; }
-#line 2336 "src/ast/lex_conf.cc"
-yy488:
+#line 2358 "src/ast/lex_conf.cc"
+yy493:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy532;
+       if (yych == 'P') goto yy539;
        goto yy4;
-yy489:
+yy494:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy533;
+       if (yych == 'G') goto yy540;
        goto yy4;
-yy490:
+yy495:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy535;
+       if (yych == 'K') goto yy542;
        goto yy4;
-yy491:
+yy496:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 103 "../src/ast/lex_conf.re"
        { opts.set_yycursor    (lex_conf_string ()); return; }
-#line 2356 "src/ast/lex_conf.cc"
-yy493:
+#line 2378 "src/ast/lex_conf.cc"
+yy498:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy536;
+       if (yych == 'a') goto yy543;
        goto yy4;
-yy494:
+yy499:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy537;
+       if (yych == 'e') goto yy544;
        goto yy216;
-yy495:
+yy500:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy538;
+       if (yych == 'D') goto yy545;
        goto yy4;
-yy496:
+yy501:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy539;
+       if (yych == 'T') goto yy546;
        goto yy4;
-yy497:
+yy502:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy540;
+       if (yych == 'A') goto yy547;
        goto yy4;
-yy498:
+yy503:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 104 "../src/ast/lex_conf.re"
        { opts.set_yymarker    (lex_conf_string ()); return; }
-#line 2384 "src/ast/lex_conf.cc"
-yy500:
-       yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy541;
-       goto yy4;
-yy501:
-       yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy543;
-       goto yy4;
-yy502:
-       yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy544;
-       goto yy4;
-yy503:
-       yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy545;
-       goto yy4;
-yy504:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy546;
-       goto yy4;
+#line 2406 "src/ast/lex_conf.cc"
 yy505:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy547;
+       if (yych == 'A') goto yy548;
        goto yy4;
 yy506:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy548;
+       if (yych == 'A') goto yy549;
        goto yy4;
 yy507:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy549;
+       if (yych == 'E') goto yy550;
        goto yy4;
 yy508:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy550;
+       if (yych == 'D') goto yy552;
        goto yy4;
 yy509:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy551;
+       if (yych == 'T') goto yy553;
        goto yy4;
 yy510:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy553;
+       if (yych == 'r') goto yy554;
        goto yy4;
 yy511:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy554;
+       if (yych == 'n') goto yy555;
        goto yy4;
 yy512:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy107;
+       if (yych == 'r') goto yy556;
        goto yy4;
 yy513:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy555;
+       if (yych == 'g') goto yy557;
        goto yy4;
 yy514:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy556;
+       if (yych == 'p') goto yy558;
        goto yy4;
 yy515:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy557;
+       if (yych == 'i') goto yy559;
        goto yy4;
 yy516:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy558;
+       if (yych == 'p') goto yy560;
        goto yy4;
 yy517:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy559;
+       if (yych == 's') goto yy562;
        goto yy4;
 yy518:
        yych = (unsigned char)*++cur;
-       if (yybm[0+yych] & 32) {
-               goto yy3;
-       }
-#line 86 "../src/ast/lex_conf.re"
-       { opts.set_bUseStateNext   (lex_conf_bool()); return; }
-#line 2464 "src/ast/lex_conf.cc"
+       if (yych == 'p') goto yy563;
+       goto yy4;
+yy519:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy107;
+       goto yy4;
 yy520:
        yych = (unsigned char)*++cur;
-       if (yybm[0+yych] & 32) {
-               goto yy3;
-       }
-#line 121 "../src/ast/lex_conf.re"
-       { opts.set_tags_expression(lex_conf_string ()); return; }
-#line 2472 "src/ast/lex_conf.cc"
+       if (yych == 'i') goto yy564;
+       goto yy4;
+yy521:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy565;
+       goto yy4;
 yy522:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy560;
+       if (yych == 't') goto yy566;
        goto yy4;
 yy523:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy561;
+       if (yych == 's') goto yy567;
        goto yy4;
 yy524:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy562;
+       if (yych == 'e') goto yy568;
        goto yy4;
 yy525:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy563;
-       goto yy4;
-yy526:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 139 "../src/ast/lex_conf.re"
-       { opts.set_yychConversion (lex_conf_bool()); return; }
-#line 2496 "src/ast/lex_conf.cc"
-yy528:
+#line 86 "../src/ast/lex_conf.re"
+       { opts.set_bUseStateNext   (lex_conf_bool()); return; }
+#line 2494 "src/ast/lex_conf.cc"
+yy527:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy564;
-       goto yy4;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 123 "../src/ast/lex_conf.re"
+       { opts.set_tags_expression(lex_conf_string ()); return; }
+#line 2502 "src/ast/lex_conf.cc"
 yy529:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy566;
-       goto yy216;
+       if (yych == 'p') goto yy569;
+       goto yy4;
 yy530:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy568;
+       if (yych == 'l') goto yy570;
        goto yy4;
 yy531:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy569;
+       if (yych == 'l') goto yy571;
        goto yy4;
 yy532:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy570;
+       if (yych == 'e') goto yy572;
        goto yy4;
 yy533:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 116 "../src/ast/lex_conf.re"
-       { opts.set_yycopytag    (lex_conf_string ()); return; }
-#line 2524 "src/ast/lex_conf.cc"
+#line 141 "../src/ast/lex_conf.re"
+       { opts.set_yychConversion (lex_conf_bool()); return; }
+#line 2526 "src/ast/lex_conf.cc"
 yy535:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy572;
+       if (yych == 'r') goto yy573;
        goto yy4;
 yy536:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy573;
-       goto yy4;
+       if (yych == 'd') goto yy575;
+       goto yy216;
 yy537:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy574;
-       goto yy216;
+       if (yych == 'T') goto yy577;
+       goto yy4;
 yy538:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy576;
+       if (yych == 'A') goto yy578;
        goto yy4;
 yy539:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy577;
+       if (yych == 'E') goto yy579;
        goto yy4;
 yy540:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy579;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 116 "../src/ast/lex_conf.re"
+       { opts.set_yycopytag    (lex_conf_string ()); return; }
+#line 2554 "src/ast/lex_conf.cc"
+yy542:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy581;
        goto yy4;
-yy541:
+yy543:
+       yych = (unsigned char)*++cur;
+       if (yych == 'k') goto yy582;
+       goto yy4;
+yy544:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy583;
+       goto yy216;
+yy545:
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy585;
+       goto yy4;
+yy546:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy586;
+       goto yy4;
+yy547:
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy588;
+       goto yy4;
+yy548:
+       yych = (unsigned char)*++cur;
+       if (yych == 'G') goto yy590;
+       goto yy4;
+yy549:
+       yych = (unsigned char)*++cur;
+       if (yych == 'G') goto yy592;
+       goto yy4;
+yy550:
        yych = (unsigned char)*++cur;
        if (yych <= 'C') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= ':') goto yy3;
-                       if (yych <= '@') goto yy542;
+                       if (yych <= '@') goto yy551;
                        if (yych <= 'B') goto yy3;
-                       goto yy581;
+                       goto yy594;
                }
        } else {
                if (yych <= '^') {
-                       if (yych == 'T') goto yy582;
+                       if (yych == 'T') goto yy595;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy542;
+                       if (yych == '`') goto yy551;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy542:
+yy551:
 #line 113 "../src/ast/lex_conf.re"
        { opts.set_yyrestore    (lex_conf_string ()); return; }
-#line 2572 "src/ast/lex_conf.cc"
-yy543:
+#line 2610 "src/ast/lex_conf.cc"
+yy552:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy583;
+       if (yych == 'I') goto yy596;
        goto yy4;
-yy544:
+yy553:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy584;
+       if (yych == 'E') goto yy597;
        goto yy4;
-yy545:
+yy554:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy586;
+       if (yych == 's') goto yy599;
        goto yy4;
-yy546:
+yy555:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy587;
+       if (yych == 's') goto yy600;
        goto yy4;
-yy547:
+yy556:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy588;
+       if (yych == 't') goto yy601;
        goto yy4;
-yy548:
+yy557:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy589;
+       if (yych == 'o') goto yy602;
        goto yy4;
-yy549:
+yy558:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy590;
+       if (yych == 'u') goto yy603;
        goto yy4;
-yy550:
+yy559:
        yych = (unsigned char)*++cur;
-       if (yych == 'z') goto yy591;
+       if (yych == 'z') goto yy604;
        goto yy4;
-yy551:
+yy560:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 51 "../src/ast/lex_conf.re"
        { opts.set_eager_skip(lex_conf_bool());         return; }
-#line 2612 "src/ast/lex_conf.cc"
-yy553:
+#line 2650 "src/ast/lex_conf.cc"
+yy562:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy592;
+       if (yych == 's') goto yy605;
        goto yy4;
-yy554:
+yy563:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy594;
+       if (yych == 'o') goto yy607;
        goto yy4;
-yy555:
+yy564:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy595;
+       if (yych == 'n') goto yy608;
        goto yy4;
-yy556:
+yy565:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy596;
+       if (yych == 'a') goto yy609;
        goto yy4;
-yy557:
+yy566:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy597;
+       if (yych == 'u') goto yy610;
        goto yy4;
-yy558:
+yy567:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy113;
-yy559:
+yy568:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy598;
+       if (yych == 'l') goto yy611;
        goto yy4;
-yy560:
+yy569:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy600;
+       if (yych == 't') goto yy613;
        goto yy4;
-yy561:
+yy570:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy602;
+       if (yych == 'e') goto yy615;
        goto yy4;
-yy562:
+yy571:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy604;
+       if (yych == 'e') goto yy617;
        goto yy4;
-yy563:
+yy572:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy606;
+       if (yych == 't') goto yy619;
        goto yy4;
-yy564:
+yy573:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 145 "../src/ast/lex_conf.re"
+#line 147 "../src/ast/lex_conf.re"
        { opts.set_fill_arg_use (lex_conf_bool()); return; }
-#line 2666 "src/ast/lex_conf.cc"
-yy566:
+#line 2704 "src/ast/lex_conf.cc"
+yy575:
        ++cur;
 #line 73 "../src/ast/lex_conf.re"
        { opts.set_condDividerParam (lex_conf_string ()); return; }
-#line 2671 "src/ast/lex_conf.cc"
-yy568:
+#line 2709 "src/ast/lex_conf.cc"
+yy577:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy608;
+       if (yych == 'X') goto yy621;
        goto yy4;
-yy569:
+yy578:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy610;
+       if (yych == 'G') goto yy623;
        goto yy4;
-yy570:
+yy579:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 64 "../src/ast/lex_conf.re"
        { opts.set_yycondtype       (lex_conf_string ()); return; }
-#line 2687 "src/ast/lex_conf.cc"
-yy572:
+#line 2725 "src/ast/lex_conf.cc"
+yy581:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy612;
+       if (yych == 'R') goto yy625;
        goto yy4;
-yy573:
+yy582:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy614;
+       if (yych == 'e') goto yy627;
        goto yy4;
-yy574:
+yy583:
        ++cur;
-#line 144 "../src/ast/lex_conf.re"
+#line 146 "../src/ast/lex_conf.re"
        { opts.set_fill_arg     (lex_conf_string ()); return; }
-#line 2700 "src/ast/lex_conf.cc"
-yy576:
+#line 2738 "src/ast/lex_conf.cc"
+yy585:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy615;
+       if (yych == 'T') goto yy628;
        goto yy4;
-yy577:
+yy586:
        yych = (unsigned char)*++cur;
        if (yych <= '@') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy616;
+                       if (yych <= ':') goto yy629;
                }
        } else {
                if (yych <= '_') {
                        if (yych <= 'Z') goto yy3;
                        if (yych >= '_') goto yy3;
                } else {
-                       if (yych <= '`') goto yy578;
+                       if (yych <= '`') goto yy587;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy578:
+yy587:
 #line 78 "../src/ast/lex_conf.re"
        { opts.set_state_get       (lex_conf_string ()); return; }
-#line 2726 "src/ast/lex_conf.cc"
-yy579:
+#line 2764 "src/ast/lex_conf.cc"
+yy588:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 117 "../src/ast/lex_conf.re"
+#line 119 "../src/ast/lex_conf.re"
        { opts.set_yylessthan   (lex_conf_string ()); return; }
-#line 2734 "src/ast/lex_conf.cc"
-yy581:
+#line 2772 "src/ast/lex_conf.cc"
+yy590:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy617;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 117 "../src/ast/lex_conf.re"
+       { opts.set_yypushntag   (lex_conf_string ()); return; }
+#line 2780 "src/ast/lex_conf.cc"
+yy592:
+       yych = (unsigned char)*++cur;
+       if (yybm[0+yych] & 32) {
+               goto yy3;
+       }
+#line 118 "../src/ast/lex_conf.re"
+       { opts.set_yypushptag   (lex_conf_string ()); return; }
+#line 2788 "src/ast/lex_conf.cc"
+yy594:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy630;
        goto yy4;
-yy582:
+yy595:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy618;
+       if (yych == 'A') goto yy631;
        goto yy4;
-yy583:
+yy596:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy619;
+       if (yych == 'T') goto yy632;
        goto yy4;
-yy584:
+yy597:
        yyaccept = 4;
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= '?') {
@@ -2751,354 +2805,354 @@ yy584:
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy620;
+                       if (yych <= ':') goto yy633;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy621;
+                       if (yych <= '@') goto yy634;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy585;
+                       if (yych == '`') goto yy598;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy585:
+yy598:
 #line 80 "../src/ast/lex_conf.re"
        { opts.set_state_set       (lex_conf_string ()); return; }
-#line 2769 "src/ast/lex_conf.cc"
-yy586:
+#line 2823 "src/ast/lex_conf.cc"
+yy599:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy95;
-yy587:
+yy600:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy622;
+       if (yych == 'i') goto yy635;
        goto yy4;
-yy588:
+yy601:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy623;
+       if (yych == 'e') goto yy636;
        goto yy4;
-yy589:
+yy602:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy624;
+       if (yych == 't') goto yy637;
        goto yy4;
-yy590:
+yy603:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy625;
+       if (yych == 't') goto yy638;
        goto yy4;
-yy591:
+yy604:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy626;
+       if (yych == 'a') goto yy639;
        goto yy4;
-yy592:
+yy605:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 61 "../src/ast/lex_conf.re"
        { lex_conf_empty_class(opts);      return; }
-#line 2803 "src/ast/lex_conf.cc"
-yy594:
+#line 2857 "src/ast/lex_conf.cc"
+yy607:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy627;
+       if (yych == 'l') goto yy640;
        goto yy4;
-yy595:
+yy608:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy628;
+       if (yych == 'f') goto yy641;
        goto yy4;
-yy596:
+yy609:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy629;
+       if (yych == 'd') goto yy642;
        goto yy4;
-yy597:
+yy610:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy631;
+       if (yych == 'r') goto yy644;
        goto yy4;
-yy598:
+yy611:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 83 "../src/ast/lex_conf.re"
        { opts.set_yyfilllabel     (lex_conf_string ()); return; }
-#line 2827 "src/ast/lex_conf.cc"
-yy600:
+#line 2881 "src/ast/lex_conf.cc"
+yy613:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 87 "../src/ast/lex_conf.re"
        { opts.set_yyaccept        (lex_conf_string ()); return; }
-#line 2835 "src/ast/lex_conf.cc"
-yy602:
+#line 2889 "src/ast/lex_conf.cc"
+yy615:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 76 "../src/ast/lex_conf.re"
        { opts.set_yyctable         (lex_conf_string ()); return; }
-#line 2843 "src/ast/lex_conf.cc"
-yy604:
+#line 2897 "src/ast/lex_conf.cc"
+yy617:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 156 "../src/ast/lex_conf.re"
+#line 158 "../src/ast/lex_conf.re"
        { lex_conf_string (); return; }
-#line 2851 "src/ast/lex_conf.cc"
-yy606:
+#line 2905 "src/ast/lex_conf.cc"
+yy619:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 101 "../src/ast/lex_conf.re"
        { opts.set_yytarget (lex_conf_string ()); return; }
-#line 2859 "src/ast/lex_conf.cc"
-yy608:
+#line 2913 "src/ast/lex_conf.cc"
+yy621:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 111 "../src/ast/lex_conf.re"
        { opts.set_yybackupctx  (lex_conf_string ()); return; }
-#line 2867 "src/ast/lex_conf.cc"
-yy610:
+#line 2921 "src/ast/lex_conf.cc"
+yy623:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 112 "../src/ast/lex_conf.re"
        { opts.set_yybackuptag  (lex_conf_string ()); return; }
-#line 2875 "src/ast/lex_conf.cc"
-yy612:
+#line 2929 "src/ast/lex_conf.cc"
+yy625:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 105 "../src/ast/lex_conf.re"
        { opts.set_yyctxmarker (lex_conf_string ()); return; }
-#line 2883 "src/ast/lex_conf.cc"
-yy614:
+#line 2937 "src/ast/lex_conf.cc"
+yy627:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy632;
+       if (yych == 'd') goto yy645;
        goto yy4;
-yy615:
+yy628:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy634;
+       if (yych == 'I') goto yy647;
        goto yy4;
-yy616:
+yy629:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy635;
+       if (yych == 'n') goto yy648;
        goto yy4;
-yy617:
+yy630:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy636;
+       if (yych == 'X') goto yy649;
        goto yy4;
-yy618:
+yy631:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy638;
+       if (yych == 'G') goto yy651;
        goto yy4;
-yy619:
+yy632:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy640;
+       if (yych == 'I') goto yy653;
        goto yy4;
-yy620:
+yy633:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy641;
+       if (yych == 'n') goto yy654;
        goto yy4;
-yy621:
+yy634:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy642;
+       if (yych == 's') goto yy655;
        goto yy216;
-yy622:
+yy635:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy643;
+       if (yych == 't') goto yy656;
        goto yy4;
-yy623:
+yy636:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy644;
+       if (yych == 'd') goto yy657;
        goto yy4;
-yy624:
+yy637:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy646;
+       if (yych == 'o') goto yy659;
        goto yy4;
-yy625:
+yy638:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy98;
-yy626:
+yy639:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy647;
+       if (yych == 't') goto yy660;
        goto yy4;
-yy627:
+yy640:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy648;
+       if (yych == 'i') goto yy661;
        goto yy4;
-yy628:
+yy641:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy649;
+       if (yych == 'o') goto yy662;
        goto yy4;
-yy629:
+yy642:
        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 2953 "src/ast/lex_conf.cc"
-yy631:
+#line 3007 "src/ast/lex_conf.cc"
+yy644:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy650;
+       if (yych == 'e') goto yy663;
        goto yy4;
-yy632:
+yy645:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
-#line 146 "../src/ast/lex_conf.re"
+#line 148 "../src/ast/lex_conf.re"
        { opts.set_fill_naked   (lex_conf_bool()); return; }
-#line 2965 "src/ast/lex_conf.cc"
-yy634:
+#line 3019 "src/ast/lex_conf.cc"
+yy647:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy651;
+       if (yych == 'O') goto yy664;
        goto yy4;
-yy635:
+yy648:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy652;
+       if (yych == 'a') goto yy665;
        goto yy4;
-yy636:
+yy649:
        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 2981 "src/ast/lex_conf.cc"
-yy638:
+#line 3035 "src/ast/lex_conf.cc"
+yy651:
        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 2989 "src/ast/lex_conf.cc"
-yy640:
+#line 3043 "src/ast/lex_conf.cc"
+yy653:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy653;
+       if (yych == 'O') goto yy666;
        goto yy4;
-yy641:
+yy654:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy654;
+       if (yych == 'a') goto yy667;
        goto yy4;
-yy642:
+yy655:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy655;
+       if (yych == 't') goto yy668;
        goto yy216;
-yy643:
+yy656:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy656;
+       if (yych == 'i') goto yy669;
        goto yy4;
-yy644:
+yy657:
        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 3013 "src/ast/lex_conf.cc"
-yy646:
+#line 3067 "src/ast/lex_conf.cc"
+yy659:
        yych = (unsigned char)*++cur;
        if (yych == 's') goto yy101;
        goto yy4;
-yy647:
+yy660:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy657;
+       if (yych == 'i') goto yy670;
        goto yy4;
-yy648:
+yy661:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy658;
+       if (yych == 'c') goto yy671;
        goto yy4;
-yy649:
+yy662:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
        goto yy104;
-yy650:
+yy663:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy659;
+       if (yych == 's') goto yy672;
        goto yy4;
-yy651:
+yy664:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy661;
+       if (yych == 'N') goto yy674;
        goto yy4;
-yy652:
+yy665:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy663;
+       if (yych == 'k') goto yy676;
        goto yy4;
-yy653:
+yy666:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy664;
+       if (yych == 'N') goto yy677;
        goto yy4;
-yy654:
+yy667:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy666;
+       if (yych == 'k') goto yy679;
        goto yy4;
-yy655:
+yy668:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy667;
+       if (yych == 'a') goto yy680;
        goto yy216;
-yy656:
+yy669:
        yych = (unsigned char)*++cur;
-       if (yych == 'v') goto yy668;
+       if (yych == 'v') goto yy681;
        goto yy4;
-yy657:
+yy670:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy669;
+       if (yych == 'o') goto yy682;
        goto yy4;
-yy658:
+yy671:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy670;
+       if (yych == 'y') goto yy683;
        goto yy4;
-yy659:
+yy672:
        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 3075 "src/ast/lex_conf.cc"
-yy661:
+#line 3129 "src/ast/lex_conf.cc"
+yy674:
        yych = (unsigned char)*++cur;
        if (yych <= '@') {
                if (yych <= '/') {
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy672;
+                       if (yych <= ':') goto yy685;
                }
        } else {
                if (yych <= '_') {
                        if (yych <= 'Z') goto yy3;
                        if (yych >= '_') goto yy3;
                } else {
-                       if (yych <= '`') goto yy662;
+                       if (yych <= '`') goto yy675;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy662:
+yy675:
 #line 65 "../src/ast/lex_conf.re"
        { opts.set_cond_get         (lex_conf_string ()); return; }
-#line 3097 "src/ast/lex_conf.cc"
-yy663:
+#line 3151 "src/ast/lex_conf.cc"
+yy676:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy673;
+       if (yych == 'e') goto yy686;
        goto yy4;
-yy664:
+yy677:
        yyaccept = 5;
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= '?') {
@@ -3106,173 +3160,173 @@ yy664:
                        if (yych == '-') goto yy3;
                } else {
                        if (yych <= '9') goto yy3;
-                       if (yych <= ':') goto yy674;
+                       if (yych <= ':') goto yy687;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy675;
+                       if (yych <= '@') goto yy688;
                        if (yych <= 'Z') goto yy3;
                } else {
-                       if (yych == '`') goto yy665;
+                       if (yych == '`') goto yy678;
                        if (yych <= 'z') goto yy3;
                }
        }
-yy665:
+yy678:
 #line 67 "../src/ast/lex_conf.re"
        { opts.set_cond_set         (lex_conf_string ()); return; }
-#line 3124 "src/ast/lex_conf.cc"
-yy666:
+#line 3178 "src/ast/lex_conf.cc"
+yy679:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy676;
+       if (yych == 'e') goto yy689;
        goto yy4;
-yy667:
+yy680:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy677;
+       if (yych == 't') goto yy690;
        goto yy216;
-yy668:
+yy681:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy678;
+       if (yych == 'e') goto yy691;
        goto yy4;
-yy669:
+yy682:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy680;
+       if (yych == 'n') goto yy693;
        goto yy4;
-yy670:
+yy683:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 59 "../src/ast/lex_conf.re"
        { lex_conf_encoding_policy(opts);  return; }
-#line 3148 "src/ast/lex_conf.cc"
-yy672:
+#line 3202 "src/ast/lex_conf.cc"
+yy685:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy682;
+       if (yych == 'n') goto yy695;
        goto yy4;
-yy673:
+yy686:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy683;
+       if (yych == 'd') goto yy696;
        goto yy4;
-yy674:
+yy687:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy685;
+       if (yych == 'n') goto yy698;
        goto yy4;
-yy675:
+yy688:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy686;
+       if (yych == 'c') goto yy699;
        goto yy216;
-yy676:
+yy689:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy687;
+       if (yych == 'd') goto yy700;
        goto yy4;
-yy677:
+yy690:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy689;
+       if (yych == 'e') goto yy702;
        goto yy216;
-yy678:
+yy691:
        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 3180 "src/ast/lex_conf.cc"
-yy680:
+#line 3234 "src/ast/lex_conf.cc"
+yy693:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 62 "../src/ast/lex_conf.re"
        { lex_conf_dfa_minimization(opts); return; }
-#line 3188 "src/ast/lex_conf.cc"
-yy682:
+#line 3242 "src/ast/lex_conf.cc"
+yy695:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy691;
+       if (yych == 'a') goto yy704;
        goto yy4;
-yy683:
+yy696:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 79 "../src/ast/lex_conf.re"
        { opts.set_state_get_naked (lex_conf_bool()); return; }
-#line 3200 "src/ast/lex_conf.cc"
-yy685:
+#line 3254 "src/ast/lex_conf.cc"
+yy698:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy692;
+       if (yych == 'a') goto yy705;
        goto yy4;
-yy686:
+yy699:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy693;
+       if (yych == 'o') goto yy706;
        goto yy216;
-yy687:
+yy700:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 81 "../src/ast/lex_conf.re"
        { opts.set_state_set_naked (lex_conf_bool()); return; }
-#line 3216 "src/ast/lex_conf.cc"
-yy689:
+#line 3270 "src/ast/lex_conf.cc"
+yy702:
        ++cur;
 #line 82 "../src/ast/lex_conf.re"
        { opts.set_state_set_arg   (lex_conf_string ()); return; }
-#line 3221 "src/ast/lex_conf.cc"
-yy691:
+#line 3275 "src/ast/lex_conf.cc"
+yy704:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy694;
+       if (yych == 'k') goto yy707;
        goto yy4;
-yy692:
+yy705:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy695;
+       if (yych == 'k') goto yy708;
        goto yy4;
-yy693:
+yy706:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy696;
+       if (yych == 'n') goto yy709;
        goto yy216;
-yy694:
+yy707:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy697;
+       if (yych == 'e') goto yy710;
        goto yy4;
-yy695:
+yy708:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy698;
+       if (yych == 'e') goto yy711;
        goto yy4;
-yy696:
+yy709:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy699;
+       if (yych == 'd') goto yy712;
        goto yy216;
-yy697:
+yy710:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy701;
+       if (yych == 'd') goto yy714;
        goto yy4;
-yy698:
+yy711:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy703;
+       if (yych == 'd') goto yy716;
        goto yy4;
-yy699:
+yy712:
        ++cur;
 #line 68 "../src/ast/lex_conf.re"
        { opts.set_cond_set_arg     (lex_conf_string ()); return; }
-#line 3258 "src/ast/lex_conf.cc"
-yy701:
+#line 3312 "src/ast/lex_conf.cc"
+yy714:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 66 "../src/ast/lex_conf.re"
        { opts.set_cond_get_naked   (lex_conf_bool()); return; }
-#line 3266 "src/ast/lex_conf.cc"
-yy703:
+#line 3320 "src/ast/lex_conf.cc"
+yy716:
        yych = (unsigned char)*++cur;
        if (yybm[0+yych] & 32) {
                goto yy3;
        }
 #line 69 "../src/ast/lex_conf.re"
        { opts.set_cond_set_naked   (lex_conf_bool()); return; }
-#line 3274 "src/ast/lex_conf.cc"
+#line 3328 "src/ast/lex_conf.cc"
 }
-#line 163 "../src/ast/lex_conf.re"
+#line 165 "../src/ast/lex_conf.re"
 
 }
 
@@ -3280,102 +3334,102 @@ void Scanner::lex_conf_encoding_policy(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3284 "src/ast/lex_conf.cc"
+#line 3338 "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 yy709;
+               if (yych == 'f') goto yy722;
        } else {
-               if (yych <= 'i') goto yy710;
-               if (yych == 's') goto yy711;
+               if (yych <= 'i') goto yy723;
+               if (yych == 's') goto yy724;
        }
        ++cur;
-yy708:
-#line 170 "../src/ast/lex_conf.re"
+yy721:
+#line 172 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'ignore', 'substitute', 'fail')"); }
-#line 3300 "src/ast/lex_conf.cc"
-yy709:
+#line 3354 "src/ast/lex_conf.cc"
+yy722:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'a') goto yy712;
-       goto yy708;
-yy710:
+       if (yych == 'a') goto yy725;
+       goto yy721;
+yy723:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'g') goto yy714;
-       goto yy708;
-yy711:
+       if (yych == 'g') goto yy727;
+       goto yy721;
+yy724:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'u') goto yy715;
-       goto yy708;
-yy712:
+       if (yych == 'u') goto yy728;
+       goto yy721;
+yy725:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy716;
-yy713:
+       if (yych == 'i') goto yy729;
+yy726:
        cur = mar;
-       goto yy708;
-yy714:
+       goto yy721;
+yy727:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy717;
-       goto yy713;
-yy715:
+       if (yych == 'n') goto yy730;
+       goto yy726;
+yy728:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy718;
-       goto yy713;
-yy716:
+       if (yych == 'b') goto yy731;
+       goto yy726;
+yy729:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy719;
-       goto yy713;
-yy717:
+       if (yych == 'l') goto yy732;
+       goto yy726;
+yy730:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy721;
-       goto yy713;
-yy718:
+       if (yych == 'o') goto yy734;
+       goto yy726;
+yy731:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy722;
-       goto yy713;
-yy719:
+       if (yych == 's') goto yy735;
+       goto yy726;
+yy732:
        ++cur;
-#line 174 "../src/ast/lex_conf.re"
+#line 176 "../src/ast/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_FAIL);       goto end; }
-#line 3343 "src/ast/lex_conf.cc"
-yy721:
+#line 3397 "src/ast/lex_conf.cc"
+yy734:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy723;
-       goto yy713;
-yy722:
+       if (yych == 'r') goto yy736;
+       goto yy726;
+yy735:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy724;
-       goto yy713;
-yy723:
+       if (yych == 't') goto yy737;
+       goto yy726;
+yy736:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy725;
-       goto yy713;
-yy724:
+       if (yych == 'e') goto yy738;
+       goto yy726;
+yy737:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy727;
-       goto yy713;
-yy725:
+       if (yych == 'i') goto yy740;
+       goto yy726;
+yy738:
        ++cur;
-#line 172 "../src/ast/lex_conf.re"
+#line 174 "../src/ast/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_IGNORE);     goto end; }
-#line 3364 "src/ast/lex_conf.cc"
-yy727:
+#line 3418 "src/ast/lex_conf.cc"
+yy740:
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy713;
+       if (yych != 't') goto yy726;
        yych = (unsigned char)*++cur;
-       if (yych != 'u') goto yy713;
+       if (yych != 'u') goto yy726;
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy713;
+       if (yych != 't') goto yy726;
        yych = (unsigned char)*++cur;
-       if (yych != 'e') goto yy713;
+       if (yych != 'e') goto yy726;
        ++cur;
-#line 173 "../src/ast/lex_conf.re"
+#line 175 "../src/ast/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); goto end; }
-#line 3377 "src/ast/lex_conf.cc"
+#line 3431 "src/ast/lex_conf.cc"
 }
-#line 175 "../src/ast/lex_conf.re"
+#line 177 "../src/ast/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3385,77 +3439,77 @@ void Scanner::lex_conf_input(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3389 "src/ast/lex_conf.cc"
+#line 3443 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 7) fill(7);
        yych = (unsigned char)*cur;
-       if (yych <= 'b') goto yy735;
-       if (yych <= 'c') goto yy737;
-       if (yych <= 'd') goto yy738;
-yy735:
+       if (yych <= 'b') goto yy748;
+       if (yych <= 'c') goto yy750;
+       if (yych <= 'd') goto yy751;
+yy748:
        ++cur;
-yy736:
-#line 184 "../src/ast/lex_conf.re"
+yy749:
+#line 186 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'default', 'custom')"); }
-#line 3403 "src/ast/lex_conf.cc"
-yy737:
+#line 3457 "src/ast/lex_conf.cc"
+yy750:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'u') goto yy739;
-       goto yy736;
-yy738:
+       if (yych == 'u') goto yy752;
+       goto yy749;
+yy751:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'e') goto yy741;
-       goto yy736;
-yy739:
+       if (yych == 'e') goto yy754;
+       goto yy749;
+yy752:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy742;
-yy740:
+       if (yych == 's') goto yy755;
+yy753:
        cur = mar;
-       goto yy736;
-yy741:
+       goto yy749;
+yy754:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy743;
-       goto yy740;
-yy742:
+       if (yych == 'f') goto yy756;
+       goto yy753;
+yy755:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy744;
-       goto yy740;
-yy743:
+       if (yych == 't') goto yy757;
+       goto yy753;
+yy756:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy745;
-       goto yy740;
-yy744:
+       if (yych == 'a') goto yy758;
+       goto yy753;
+yy757:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy746;
-       goto yy740;
-yy745:
+       if (yych == 'o') goto yy759;
+       goto yy753;
+yy758:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy747;
-       goto yy740;
-yy746:
+       if (yych == 'u') goto yy760;
+       goto yy753;
+yy759:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy748;
-       goto yy740;
-yy747:
+       if (yych == 'm') goto yy761;
+       goto yy753;
+yy760:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy750;
-       goto yy740;
-yy748:
+       if (yych == 'l') goto yy763;
+       goto yy753;
+yy761:
        ++cur;
-#line 187 "../src/ast/lex_conf.re"
+#line 189 "../src/ast/lex_conf.re"
        { opts.set_input_api(INPUT_CUSTOM);  goto end; }
-#line 3450 "src/ast/lex_conf.cc"
-yy750:
+#line 3504 "src/ast/lex_conf.cc"
+yy763:
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy740;
+       if (yych != 't') goto yy753;
        ++cur;
-#line 186 "../src/ast/lex_conf.re"
+#line 188 "../src/ast/lex_conf.re"
        { opts.set_input_api(INPUT_DEFAULT); goto end; }
-#line 3457 "src/ast/lex_conf.cc"
+#line 3511 "src/ast/lex_conf.cc"
 }
-#line 188 "../src/ast/lex_conf.re"
+#line 190 "../src/ast/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3465,105 +3519,105 @@ void Scanner::lex_conf_empty_class(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3469 "src/ast/lex_conf.cc"
+#line 3523 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 11) fill(11);
        yych = (unsigned char)*cur;
-       if (yych == 'e') goto yy757;
-       if (yych == 'm') goto yy758;
+       if (yych == 'e') goto yy770;
+       if (yych == 'm') goto yy771;
        ++cur;
-yy756:
-#line 197 "../src/ast/lex_conf.re"
+yy769:
+#line 199 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'match-empty', 'match-none', 'error')"); }
-#line 3481 "src/ast/lex_conf.cc"
-yy757:
+#line 3535 "src/ast/lex_conf.cc"
+yy770:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'r') goto yy759;
-       goto yy756;
-yy758:
+       if (yych == 'r') goto yy772;
+       goto yy769;
+yy771:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'a') goto yy761;
-       goto yy756;
-yy759:
+       if (yych == 'a') goto yy774;
+       goto yy769;
+yy772:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy762;
-yy760:
+       if (yych == 'r') goto yy775;
+yy773:
        cur = mar;
-       goto yy756;
-yy761:
+       goto yy769;
+yy774:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy763;
-       goto yy760;
-yy762:
+       if (yych == 't') goto yy776;
+       goto yy773;
+yy775:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy764;
-       goto yy760;
-yy763:
+       if (yych == 'o') goto yy777;
+       goto yy773;
+yy776:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy765;
-       goto yy760;
-yy764:
+       if (yych == 'c') goto yy778;
+       goto yy773;
+yy777:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy766;
-       goto yy760;
-yy765:
+       if (yych == 'r') goto yy779;
+       goto yy773;
+yy778:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy768;
-       goto yy760;
-yy766:
+       if (yych == 'h') goto yy781;
+       goto yy773;
+yy779:
        ++cur;
-#line 201 "../src/ast/lex_conf.re"
+#line 203 "../src/ast/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_ERROR);       goto end; }
-#line 3520 "src/ast/lex_conf.cc"
-yy768:
+#line 3574 "src/ast/lex_conf.cc"
+yy781:
        yych = (unsigned char)*++cur;
-       if (yych != '-') goto yy760;
+       if (yych != '-') goto yy773;
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy770;
-       if (yych == 'n') goto yy771;
-       goto yy760;
-yy770:
+       if (yych == 'e') goto yy783;
+       if (yych == 'n') goto yy784;
+       goto yy773;
+yy783:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy772;
-       goto yy760;
-yy771:
+       if (yych == 'm') goto yy785;
+       goto yy773;
+yy784:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy773;
-       goto yy760;
-yy772:
+       if (yych == 'o') goto yy786;
+       goto yy773;
+yy785:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy774;
-       goto yy760;
-yy773:
+       if (yych == 'p') goto yy787;
+       goto yy773;
+yy786:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy775;
-       goto yy760;
-yy774:
+       if (yych == 'n') goto yy788;
+       goto yy773;
+yy787:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy776;
-       goto yy760;
-yy775:
+       if (yych == 't') goto yy789;
+       goto yy773;
+yy788:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy777;
-       goto yy760;
-yy776:
+       if (yych == 'e') goto yy790;
+       goto yy773;
+yy789:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy779;
-       goto yy760;
-yy777:
+       if (yych == 'y') goto yy792;
+       goto yy773;
+yy790:
        ++cur;
-#line 200 "../src/ast/lex_conf.re"
+#line 202 "../src/ast/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE);  goto end; }
-#line 3560 "src/ast/lex_conf.cc"
-yy779:
+#line 3614 "src/ast/lex_conf.cc"
+yy792:
        ++cur;
-#line 199 "../src/ast/lex_conf.re"
+#line 201 "../src/ast/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); goto end; }
-#line 3565 "src/ast/lex_conf.cc"
+#line 3619 "src/ast/lex_conf.cc"
 }
-#line 202 "../src/ast/lex_conf.re"
+#line 204 "../src/ast/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3573,65 +3627,65 @@ void Scanner::lex_conf_dfa_minimization(Opt &opts)
 {
        lex_conf_assign ();
 
-#line 3577 "src/ast/lex_conf.cc"
+#line 3631 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 5) fill(5);
        yych = (unsigned char)*cur;
-       if (yych == 'm') goto yy785;
-       if (yych == 't') goto yy786;
+       if (yych == 'm') goto yy798;
+       if (yych == 't') goto yy799;
        ++cur;
-yy784:
-#line 211 "../src/ast/lex_conf.re"
+yy797:
+#line 213 "../src/ast/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'table', 'moore')"); }
-#line 3589 "src/ast/lex_conf.cc"
-yy785:
+#line 3643 "src/ast/lex_conf.cc"
+yy798:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'o') goto yy787;
-       goto yy784;
-yy786:
+       if (yych == 'o') goto yy800;
+       goto yy797;
+yy799:
        yych = (unsigned char)*(mar = ++cur);
-       if (yych == 'a') goto yy789;
-       goto yy784;
-yy787:
+       if (yych == 'a') goto yy802;
+       goto yy797;
+yy800:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy790;
-yy788:
+       if (yych == 'o') goto yy803;
+yy801:
        cur = mar;
-       goto yy784;
-yy789:
+       goto yy797;
+yy802:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy791;
-       goto yy788;
-yy790:
+       if (yych == 'b') goto yy804;
+       goto yy801;
+yy803:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy792;
-       goto yy788;
-yy791:
+       if (yych == 'r') goto yy805;
+       goto yy801;
+yy804:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy793;
-       goto yy788;
-yy792:
+       if (yych == 'l') goto yy806;
+       goto yy801;
+yy805:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy794;
-       goto yy788;
-yy793:
+       if (yych == 'e') goto yy807;
+       goto yy801;
+yy806:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy796;
-       goto yy788;
-yy794:
+       if (yych == 'e') goto yy809;
+       goto yy801;
+yy807:
        ++cur;
-#line 214 "../src/ast/lex_conf.re"
+#line 216 "../src/ast/lex_conf.re"
        { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); goto end; }
-#line 3628 "src/ast/lex_conf.cc"
-yy796:
+#line 3682 "src/ast/lex_conf.cc"
+yy809:
        ++cur;
-#line 213 "../src/ast/lex_conf.re"
+#line 215 "../src/ast/lex_conf.re"
        { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); goto end; }
-#line 3633 "src/ast/lex_conf.cc"
+#line 3687 "src/ast/lex_conf.cc"
 }
-#line 215 "../src/ast/lex_conf.re"
+#line 217 "../src/ast/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3649,7 +3703,7 @@ void Scanner::lex_conf_enc(Enc::type_t enc, Opt &opts)
 void Scanner::lex_conf_assign ()
 {
 
-#line 3653 "src/ast/lex_conf.cc"
+#line 3707 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3689,56 +3743,56 @@ void Scanner::lex_conf_assign ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy802;
+               if (yych == '\t') goto yy815;
        } else {
-               if (yych <= ' ') goto yy802;
-               if (yych == '=') goto yy803;
+               if (yych <= ' ') goto yy815;
+               if (yych == '=') goto yy816;
        }
        ++cur;
-yy801:
-#line 232 "../src/ast/lex_conf.re"
+yy814:
+#line 234 "../src/ast/lex_conf.re"
        { fatal ("missing '=' in configuration"); }
-#line 3702 "src/ast/lex_conf.cc"
-yy802:
+#line 3756 "src/ast/lex_conf.cc"
+yy815:
        yych = (unsigned char)*(mar = ++cur);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy806;
-               goto yy801;
+               if (yych == '\t') goto yy819;
+               goto yy814;
        } else {
-               if (yych <= ' ') goto yy806;
-               if (yych != '=') goto yy801;
+               if (yych <= ' ') goto yy819;
+               if (yych != '=') goto yy814;
        }
-yy803:
+yy816:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy803;
+               goto yy816;
        }
-#line 233 "../src/ast/lex_conf.re"
+#line 235 "../src/ast/lex_conf.re"
        { return; }
-#line 3721 "src/ast/lex_conf.cc"
-yy806:
+#line 3775 "src/ast/lex_conf.cc"
+yy819:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy806;
+               if (yych == '\t') goto yy819;
        } else {
-               if (yych <= ' ') goto yy806;
-               if (yych == '=') goto yy803;
+               if (yych <= ' ') goto yy819;
+               if (yych == '=') goto yy816;
        }
        cur = mar;
-       goto yy801;
+       goto yy814;
 }
-#line 234 "../src/ast/lex_conf.re"
+#line 236 "../src/ast/lex_conf.re"
 
 }
 
 void Scanner::lex_conf_semicolon ()
 {
 
-#line 3742 "src/ast/lex_conf.cc"
+#line 3796 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3778,39 +3832,39 @@ void Scanner::lex_conf_semicolon ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy813;
+               if (yych == '\t') goto yy826;
        } else {
-               if (yych <= ' ') goto yy813;
-               if (yych == ';') goto yy814;
+               if (yych <= ' ') goto yy826;
+               if (yych == ';') goto yy827;
        }
        ++cur;
-yy812:
-#line 240 "../src/ast/lex_conf.re"
+yy825:
+#line 242 "../src/ast/lex_conf.re"
        { fatal ("missing ending ';' in configuration"); }
-#line 3791 "src/ast/lex_conf.cc"
-yy813:
+#line 3845 "src/ast/lex_conf.cc"
+yy826:
        yych = (unsigned char)*(mar = ++cur);
        if (yybm[0+yych] & 128) {
-               goto yy816;
+               goto yy829;
        }
-       if (yych != ';') goto yy812;
-yy814:
+       if (yych != ';') goto yy825;
+yy827:
        ++cur;
-#line 241 "../src/ast/lex_conf.re"
+#line 243 "../src/ast/lex_conf.re"
        { return; }
-#line 3802 "src/ast/lex_conf.cc"
-yy816:
+#line 3856 "src/ast/lex_conf.cc"
+yy829:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy816;
+               goto yy829;
        }
-       if (yych == ';') goto yy814;
+       if (yych == ';') goto yy827;
        cur = mar;
-       goto yy812;
+       goto yy825;
 }
-#line 242 "../src/ast/lex_conf.re"
+#line 244 "../src/ast/lex_conf.re"
 
 }
 
@@ -3824,7 +3878,7 @@ int32_t Scanner::lex_conf_number ()
        lex_conf_assign ();
        tok = cur;
 
-#line 3828 "src/ast/lex_conf.cc"
+#line 3882 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3864,21 +3918,21 @@ int32_t Scanner::lex_conf_number ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= '/') {
-               if (yych == '-') goto yy822;
+               if (yych == '-') goto yy835;
        } else {
-               if (yych <= '0') goto yy823;
-               if (yych <= '9') goto yy825;
+               if (yych <= '0') goto yy836;
+               if (yych <= '9') goto yy838;
        }
-yy821:
-yy822:
+yy834:
+yy835:
        yych = (unsigned char)*++cur;
-       if (yych <= '0') goto yy821;
-       if (yych <= '9') goto yy825;
-       goto yy821;
-yy823:
+       if (yych <= '0') goto yy834;
+       if (yych <= '9') goto yy838;
+       goto yy834;
+yy836:
        ++cur;
-yy824:
-#line 256 "../src/ast/lex_conf.re"
+yy837:
+#line 258 "../src/ast/lex_conf.re"
        {
                int32_t n = 0;
                if (!s_to_i32_unsafe (tok, cur, n))
@@ -3888,17 +3942,17 @@ yy824:
                lex_conf_semicolon ();
                return n;
        }
-#line 3892 "src/ast/lex_conf.cc"
-yy825:
+#line 3946 "src/ast/lex_conf.cc"
+yy838:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy825;
+               goto yy838;
        }
-       goto yy824;
+       goto yy837;
 }
-#line 265 "../src/ast/lex_conf.re"
+#line 267 "../src/ast/lex_conf.re"
 
 }
 
@@ -3908,7 +3962,7 @@ std::string Scanner::lex_conf_string ()
        std::string s;
        tok = cur;
 
-#line 3912 "src/ast/lex_conf.cc"
+#line 3966 "src/ast/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3949,38 +4003,38 @@ std::string Scanner::lex_conf_string ()
        yych = (unsigned char)*cur;
        if (yych <= '!') {
                if (yych <= '\n') {
-                       if (yych <= 0x08) goto yy830;
+                       if (yych <= 0x08) goto yy843;
                } else {
-                       if (yych != ' ') goto yy830;
+                       if (yych != ' ') goto yy843;
                }
        } else {
                if (yych <= '\'') {
-                       if (yych <= '"') goto yy833;
-                       if (yych <= '&') goto yy830;
-                       goto yy833;
+                       if (yych <= '"') goto yy846;
+                       if (yych <= '&') goto yy843;
+                       goto yy846;
                } else {
-                       if (yych != ';') goto yy830;
+                       if (yych != ';') goto yy843;
                }
        }
-#line 292 "../src/ast/lex_conf.re"
+#line 294 "../src/ast/lex_conf.re"
        { goto end; }
-#line 3968 "src/ast/lex_conf.cc"
-yy830:
+#line 4022 "src/ast/lex_conf.cc"
+yy843:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy830;
+               goto yy843;
        }
-#line 288 "../src/ast/lex_conf.re"
+#line 290 "../src/ast/lex_conf.re"
        {
                s = std::string(tok, tok_len());
                goto end;
        }
-#line 3981 "src/ast/lex_conf.cc"
-yy833:
+#line 4035 "src/ast/lex_conf.cc"
+yy846:
        ++cur;
-#line 274 "../src/ast/lex_conf.re"
+#line 276 "../src/ast/lex_conf.re"
        {
                const char quote = tok[0];
                for (bool end;;) {
@@ -3995,9 +4049,9 @@ yy833:
                        }
                }
        }
-#line 3999 "src/ast/lex_conf.cc"
+#line 4053 "src/ast/lex_conf.cc"
 }
-#line 293 "../src/ast/lex_conf.re"
+#line 295 "../src/ast/lex_conf.re"
 
 end:
        lex_conf_semicolon ();
index 3b78b1262270005b904f789fc742dcc54808123c..4c143a8c9ca2f95618524caf1cbe06d245b502b6 100644 (file)
@@ -114,6 +114,8 @@ 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:YYCOPYTAG"    { opts.set_yycopytag    (lex_conf_string ()); return; }
+       "define:YYPUSHNTAG"   { opts.set_yypushntag   (lex_conf_string ()); return; }
+       "define:YYPUSHPTAG"   { opts.set_yypushptag   (lex_conf_string ()); return; }
        "define:YYLESSTHAN"   { opts.set_yylessthan   (lex_conf_string ()); return; }
 
        "tags:default"    { opts.set_tags_default   (lex_conf_string ()); return; }
index 057c550872d7718c5b54bfcaa515cbf06ada20ac..08c6ddd0bc1489fba5bbed5ef7b379bc0e572ba9 100644 (file)
@@ -311,40 +311,45 @@ void gen_settags(code_lines_t &code, const DFA &dfa, tcid_t tcid, const opt_t *o
                return;
        }
 
-       // copy commands
+       std::string s1 = "", s2 = "";
        for (const tcmd_t *p = cmd; p; p = p->next) {
-               const tagver_t l = p->lhs, r = p->rhs;
-               if (!tcmd_t::iscopy(r)) continue;
-
-               const std::string
-                       le = vartag_expr(l, prefix, expression),
-                       re = vartag_expr(r, prefix, expression),
-                       s = generic
-                               ? opts->yycopytag + " (" + le + ", " + re + ");\n"
-                               : le + " = " + re + ";\n";
-               code.push_back(s);
-       }
+               const tagver_t l = p->lhs, r = p->rhs, h = p->pred;
+
+               // copy command
+               if (tcmd_t::iscopy(r)) {
+                       const std::string
+                               le = vartag_expr(l, prefix, expression),
+                               re = vartag_expr(r, prefix, expression),
+                               s = generic
+                                       ? opts->yycopytag + " (" + le + ", " + re + ");\n"
+                                       : le + " = " + re + ";\n";
+                       code.push_back(s);
 
-       // save commands
-       if (generic) {
-               for (const tcmd_t *p = cmd; p; p = p->next) {
-                       const tagver_t l = p->lhs, r = p->rhs;
-                       if (tcmd_t::iscopy(r)) continue;
+               // save command; history
+               } else if (h != TAGVER_ZERO) {
+                       const std::string
+                               le = vartag_expr(l, prefix, expression),
+                               he = vartag_expr(h, prefix, expression);
+                       if (l != h) {
+                               const std::string s = opts->yycopytag + " (" + le + ", " + he + ");\n";
+                               code.push_back(s);
+                       }
+                       const std::string s = r == TAGVER_BOTTOM
+                               ? opts->yypushntag + " (" + le + ");\n"
+                               : opts->yypushptag + " (" + le + ");\n";
+                       code.push_back(s);
 
+               // save command; no history; generic API
+               } else if (generic) {
                        const std::string
                                v = vartag_expr(l, prefix, expression),
                                s = r == TAGVER_BOTTOM
                                        ? opts->yycopytag + " (" + v + ", " + opts->tags_default + ");\n"
                                        : opts->yybackuptag + " (" + v + ");\n";
                        code.push_back(s);
-               }
-       } else if (cmd) {
-               std::string s1 = "", s2 = "";
-
-               for (const tcmd_t *p = cmd; p; p = p->next) {
-                       const tagver_t l = p->lhs, r = p->rhs;
-                       if (tcmd_t::iscopy(r)) continue;
 
+               // save command; no history; default API
+               } else {
                        const std::string v = vartag_expr(l, prefix, expression);
                        if (r == TAGVER_BOTTOM) {
                                s1 += v + " = ";
@@ -352,14 +357,14 @@ void gen_settags(code_lines_t &code, const DFA &dfa, tcid_t tcid, const opt_t *o
                                s2 += v + " = ";
                        }
                }
-               if (!s1.empty()) {
-                       s1 += opts->tags_default + ";\n";
-                       code.push_back(s1);
-               }
-               if (!s2.empty()) {
-                       s2 += opts->yycursor + ";\n";
-                       code.push_back(s2);
-               }
+       }
+       if (!s1.empty()) {
+               s1 += opts->tags_default + ";\n";
+               code.push_back(s1);
+       }
+       if (!s2.empty()) {
+               s2 += opts->yycursor + ";\n";
+               code.push_back(s2);
        }
 }
 
index 97c79a93447a3fb79779d1d08675ee220fdc4152..2297791c5bcf2a11c7c213ff2b36dfcf2925a614 100644 (file)
@@ -78,6 +78,8 @@ void mutopt_t::fix(const conopt_t *globopts)
                        yyrestorectx = Opt::baseopt.yyrestorectx;
                        yyrestoretag = Opt::baseopt.yyrestoretag;
                        yycopytag = Opt::baseopt.yycopytag;
+                       yypushntag = Opt::baseopt.yypushntag;
+                       yypushptag = Opt::baseopt.yypushptag;
                        yylessthan = Opt::baseopt.yylessthan;
                        dFlag = Opt::baseopt.dFlag;
                        yydebug = Opt::baseopt.yydebug;
@@ -169,6 +171,8 @@ void mutopt_t::fix(const conopt_t *globopts)
                yyrestorectx = Opt::baseopt.yyrestorectx;
                yyrestoretag = Opt::baseopt.yyrestoretag;
                yycopytag = Opt::baseopt.yycopytag;
+               yypushntag = Opt::baseopt.yypushntag;
+               yypushptag = Opt::baseopt.yypushptag;
                yylessthan = Opt::baseopt.yylessthan;
        }
        if (!dFlag)
@@ -269,6 +273,8 @@ void Opt::reset_mapCodeName ()
        set_yyrestorectx(Opt::baseopt.yyrestorectx);
        set_yyrestoretag(Opt::baseopt.yyrestoretag);
        set_yycopytag(Opt::baseopt.yycopytag);
+       set_yypushntag(Opt::baseopt.yypushntag);
+       set_yypushptag(Opt::baseopt.yypushptag);
        set_yyskip(Opt::baseopt.yyskip);
        set_yyfilllabel(Opt::baseopt.yyfilllabel);
        set_yynext(Opt::baseopt.yynext);
index 80d520ef4d5e502466ffab3b67e0289b8a71eba9..6a7afec9df49c0c2c41539c2d0d33612b4dd8bed 100644 (file)
@@ -119,6 +119,8 @@ enum target_t
        MUTOPT (std::string, yyrestorectx, "YYRESTORECTX") \
        MUTOPT (std::string, yyrestoretag, "YYRESTORETAG") \
        MUTOPT (std::string, yycopytag, "YYCOPYTAG") \
+       MUTOPT (std::string, yypushntag, "YYPUSHNTAG") \
+       MUTOPT (std::string, yypushptag, "YYPUSHPTAG") \
        MUTOPT (std::string, yylessthan, "YYLESSTHAN") \
        /* #line directives */ \
        MUTOPT (bool, iFlag, false) \