]> granicus.if.org Git - re2c/commitdiff
Added option '--dfa-mapping <bijective | injective>'.
authorUlya Trofimovich <skvadrik@gmail.com>
Sun, 4 Dec 2016 14:38:53 +0000 (14:38 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Sun, 4 Dec 2016 15:00:52 +0000 (15:00 +0000)
This option controls how tag versions in DFA states are mapped to each
other during determinization. By default mapping is 'bijective', however
if it is set to 'injective' the new state must be less versatile than
the old one.

re2c/bootstrap/src/conf/parse_opts.cc
re2c/bootstrap/src/parse/lex_conf.cc
re2c/src/conf/opt.h
re2c/src/conf/parse_opts.re
re2c/src/ir/dfa/find_state.cc
re2c/src/ir/dfa/find_state.h
re2c/src/parse/lex_conf.re
re2c/src/parse/scanner.h

index 4b8cb65854a3d7515168aec74c342d6eaba302af..8edc62bb3b72f6168d2113eadbf728f4dbc2bfe1 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Thu Dec  1 15:18:43 2016 */
+/* Generated by re2c 0.16 on Sun Dec  4 14:30:33 2016 */
 #line 1 "../src/conf/parse_opts.re"
 #include "src/codegen/input_api.h"
 #include "src/conf/msg.h"
@@ -1541,376 +1541,377 @@ yy362:
        goto yy276;
 yy363:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy395;
+       if (yych == 'a') goto yy395;
+       if (yych == 'i') goto yy396;
        goto yy276;
 yy364:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy396;
-       if (yych == 'd') goto yy397;
+       if (yych == 'a') goto yy397;
+       if (yych == 'd') goto yy398;
        goto yy276;
 yy365:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy398;
+       if (yych == 'd') goto yy399;
        goto yy276;
 yy366:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy399;
+       if (yych == '-') goto yy400;
        goto yy276;
 yy367:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy400;
+       if (yych == 'i') goto yy401;
        goto yy276;
 yy368:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy401;
+       if (yych == 's') goto yy402;
        goto yy276;
 yy369:
        ++YYCURSOR;
 #line 133 "../src/conf/parse_opts.re"
        { usage ();   return EXIT_OK; }
-#line 1572 "src/conf/parse_opts.cc"
+#line 1573 "src/conf/parse_opts.cc"
 yy371:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy402;
+       if (yych <= 0x00) goto yy403;
        goto yy276;
 yy372:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy404;
+       if (yych == 'd') goto yy405;
        goto yy276;
 yy373:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy405;
+       if (yych == 'b') goto yy406;
        goto yy276;
 yy374:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy406;
+       if (yych == 'n') goto yy407;
        goto yy276;
 yy375:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy407;
+       if (yych == 'r') goto yy408;
        goto yy276;
 yy376:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy408;
+       if (yych == 't') goto yy409;
        goto yy276;
 yy377:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy409;
+       if (yych == 'b') goto yy410;
        goto yy276;
 yy378:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy410;
+       if (yych == 'e') goto yy411;
        goto yy276;
 yy379:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy411;
+       if (yych == 't') goto yy412;
        goto yy276;
 yy380:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy412;
+       if (yych == '-') goto yy413;
        goto yy276;
 yy381:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy413;
+       if (yych == 'b') goto yy414;
        goto yy276;
 yy382:
        ++YYCURSOR;
 #line 151 "../src/conf/parse_opts.re"
        { opts.set_tags (true);              goto opt; }
-#line 1621 "src/conf/parse_opts.cc"
+#line 1622 "src/conf/parse_opts.cc"
 yy384:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy414;
+       if (yych == 'h') goto yy415;
        goto yy276;
 yy385:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy415;
+       if (yych == 'd') goto yy416;
        goto yy276;
 yy386:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '6') goto yy416;
+       if (yych == '6') goto yy417;
        goto yy276;
 yy387:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy417;
+       if (yych <= 0x00) goto yy418;
        goto yy276;
 yy388:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy419;
+       if (yych == 'm') goto yy420;
        goto yy276;
 yy389:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy420;
+       if (yych == 'o') goto yy421;
        goto yy276;
 yy390:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy421;
+       if (yych == 'c') goto yy422;
        goto yy276;
 yy391:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy422;
+       if (yych == 'c') goto yy423;
        goto yy276;
 yy392:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy423;
+       if (yych == 'n') goto yy424;
        goto yy276;
 yy393:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy424;
+       if (yych == 'e') goto yy425;
        goto yy276;
 yy394:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy425;
+       if (yych == 'o') goto yy426;
        goto yy276;
 yy395:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy426;
+       if (yych == 'p') goto yy427;
        goto yy276;
 yy396:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy427;
+       if (yych == 'n') goto yy428;
        goto yy276;
 yy397:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy428;
+       if (yych == 'd') goto yy429;
        goto yy276;
 yy398:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy429;
+       if (yych == 'f') goto yy430;
        goto yy276;
 yy399:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy430;
+       if (yych == 'o') goto yy431;
        goto yy276;
 yy400:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy431;
+       if (yych == 'c') goto yy432;
        goto yy276;
 yy401:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'y') goto yy432;
+       if (yych == 'n') goto yy433;
        goto yy276;
 yy402:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'y') goto yy434;
+       goto yy276;
+yy403:
        ++YYCURSOR;
 #line 160 "../src/conf/parse_opts.re"
        { goto opt_input; }
-#line 1698 "src/conf/parse_opts.cc"
-yy404:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy433;
-       goto yy276;
+#line 1703 "src/conf/parse_opts.cc"
 yy405:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy434;
+       if (yych == '-') goto yy435;
        goto yy276;
 yy406:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy435;
+       if (yych == 'u') goto yy436;
        goto yy276;
 yy407:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy436;
+       if (yych == 'e') goto yy437;
        goto yy276;
 yy408:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy437;
+       if (yych == 's') goto yy438;
        goto yy276;
 yy409:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy439;
+       if (yych <= 0x00) goto yy439;
        goto yy276;
 yy410:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy440;
+       if (yych == 'l') goto yy441;
        goto yy276;
 yy411:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy441;
+       if (yych == '-') goto yy442;
        goto yy276;
 yy412:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy442;
+       if (yych == 'o') goto yy443;
        goto yy276;
 yy413:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy443;
+       if (yych == 'c') goto yy444;
        goto yy276;
 yy414:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy444;
+       if (yych == 'l') goto yy445;
        goto yy276;
 yy415:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy445;
+       if (yych == 'e') goto yy446;
        goto yy276;
 yy416:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy446;
+       if (yych == 'e') goto yy447;
        goto yy276;
 yy417:
-       ++YYCURSOR;
-#line 156 "../src/conf/parse_opts.re"
-       { if (!opts.set_encoding (Enc::UTF8))   { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 1755 "src/conf/parse_opts.cc"
-yy419:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 0x00) goto yy448;
        goto yy276;
+yy418:
+       ++YYCURSOR;
+#line 156 "../src/conf/parse_opts.re"
+       { if (!opts.set_encoding (Enc::UTF8))   { error_encoding (); return EXIT_FAIL; } goto opt; }
+#line 1760 "src/conf/parse_opts.cc"
 yy420:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy450;
+       if (yych <= 0x00) goto yy450;
        goto yy276;
 yy421:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy451;
+       if (yych == 'n') goto yy452;
        goto yy276;
 yy422:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy452;
+       if (yych == 'h') goto yy453;
        goto yy276;
 yy423:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy453;
-       if (yych == 'v') goto yy454;
+       if (yych == 't') goto yy454;
        goto yy276;
 yy424:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy455;
+       if (yych == 's') goto yy455;
+       if (yych == 'v') goto yy456;
        goto yy276;
 yy425:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy456;
+       if (yych == 'd') goto yy457;
        goto yy276;
 yy426:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy457;
+       if (yych == 'u') goto yy458;
        goto yy276;
 yy427:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy458;
+       if (yych == 'p') goto yy459;
        goto yy276;
 yy428:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy459;
+       if (yych == 'i') goto yy460;
        goto yy276;
 yy429:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy460;
+       if (yych == 'f') goto yy461;
        goto yy276;
 yy430:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy461;
+       if (yych == 'a') goto yy462;
        goto yy276;
 yy431:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy462;
+       if (yych == 't') goto yy463;
        goto yy276;
 yy432:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy463;
+       if (yych == 'l') goto yy464;
        goto yy276;
 yy433:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy464;
+       if (yych == 'g') goto yy465;
        goto yy276;
 yy434:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy465;
+       if (yych == 'n') goto yy466;
        goto yy276;
 yy435:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy466;
+       if (yych == 'i') goto yy467;
        goto yy276;
 yy436:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy467;
+       if (yych == 'g') goto yy468;
        goto yy276;
 yy437:
-       ++YYCURSOR;
-#line 157 "../src/conf/parse_opts.re"
-       { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
-#line 1833 "src/conf/parse_opts.cc"
-yy439:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy468;
+       if (yych == 'r') goto yy469;
        goto yy276;
-yy440:
+yy438:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy469;
+       if (yych == 'i') goto yy470;
        goto yy276;
+yy439:
+       ++YYCURSOR;
+#line 157 "../src/conf/parse_opts.re"
+       { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
+#line 1842 "src/conf/parse_opts.cc"
 yy441:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy470;
+       if (yych == 'e') goto yy471;
        goto yy276;
 yy442:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy471;
+       if (yych == 'p') goto yy472;
        goto yy276;
 yy443:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy472;
+       if (yych == 'n') goto yy473;
        goto yy276;
 yy444:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy473;
+       if (yych == 'o') goto yy474;
        goto yy276;
 yy445:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy474;
+       if (yych == 'e') goto yy475;
        goto yy276;
 yy446:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'a') goto yy476;
+       goto yy276;
+yy447:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy477;
+       goto yy276;
+yy448:
        ++YYCURSOR;
 #line 155 "../src/conf/parse_opts.re"
        { if (!opts.set_encoding (Enc::UTF16))  { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 1866 "src/conf/parse_opts.cc"
-yy448:
+#line 1875 "src/conf/parse_opts.cc"
+yy450:
        ++YYCURSOR;
 #line 135 "../src/conf/parse_opts.re"
        { vernum ();  return EXIT_OK; }
-#line 1871 "src/conf/parse_opts.cc"
-yy450:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy476;
-       goto yy276;
-yy451:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy478;
-       goto yy276;
+#line 1880 "src/conf/parse_opts.cc"
 yy452:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy479;
+       if (yych <= 0x00) goto yy479;
        goto yy276;
 yy453:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy480;
+       if (yych == 'a') goto yy481;
        goto yy276;
 yy454:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy481;
+       if (yych == 'o') goto yy482;
        goto yy276;
 yy455:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy482;
+       if (yych == 'e') goto yy483;
        goto yy276;
 yy456:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy483;
+       if (yych == 'e') goto yy484;
        goto yy276;
 yy457:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy484;
+       if (yych == '-') goto yy485;
        goto yy276;
 yy458:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy485;
+       if (yych == 't') goto yy486;
        goto yy276;
 yy459:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy486;
+       if (yych == 'i') goto yy487;
        goto yy276;
 yy460:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy487;
+       if (yych == 'm') goto yy488;
        goto yy276;
 yy461:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -1922,27 +1923,27 @@ yy462:
        goto yy276;
 yy463:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy491;
+       if (yych <= 0x00) goto yy491;
        goto yy276;
 yy464:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy492;
+       if (yych == 'a') goto yy493;
        goto yy276;
 yy465:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy493;
+       if (yych == '-') goto yy494;
        goto yy276;
 yy466:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy494;
+       if (yych == 't') goto yy495;
        goto yy276;
 yy467:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy495;
+       if (yych == 'f') goto yy496;
        goto yy276;
 yy468:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy496;
+       if (yych == '-') goto yy497;
        goto yy276;
 yy469:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -1950,219 +1951,219 @@ yy469:
        goto yy276;
 yy470:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy499;
+       if (yych == 'o') goto yy499;
        goto yy276;
 yy471:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy501;
+       if (yych <= 0x00) goto yy500;
        goto yy276;
 yy472:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy502;
+       if (yych == 'a') goto yy502;
        goto yy276;
 yy473:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy503;
+       if (yych <= 0x00) goto yy503;
        goto yy276;
 yy474:
-       ++YYCURSOR;
-#line 153 "../src/conf/parse_opts.re"
-       { if (!opts.set_encoding (Enc::UTF32))  { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 1972 "src/conf/parse_opts.cc"
-yy476:
-       ++YYCURSOR;
-#line 134 "../src/conf/parse_opts.re"
-       { version (); return EXIT_OK; }
-#line 1977 "src/conf/parse_opts.cc"
-yy478:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy504;
+       if (yych == 'n') goto yy505;
        goto yy276;
-yy479:
+yy475:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy505;
+       if (yych == '-') goto yy506;
        goto yy276;
-yy480:
+yy476:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy506;
+       if (yych == 'd') goto yy507;
        goto yy276;
+yy477:
+       ++YYCURSOR;
+#line 153 "../src/conf/parse_opts.re"
+       { if (!opts.set_encoding (Enc::UTF32))  { error_encoding (); return EXIT_FAIL; } goto opt; }
+#line 1985 "src/conf/parse_opts.cc"
+yy479:
+       ++YYCURSOR;
+#line 134 "../src/conf/parse_opts.re"
+       { version (); return EXIT_OK; }
+#line 1990 "src/conf/parse_opts.cc"
 yy481:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy507;
+       if (yych == 'r') goto yy508;
        goto yy276;
 yy482:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy508;
+       if (yych == 'r') goto yy509;
        goto yy276;
 yy483:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy509;
+       if (yych == 'n') goto yy510;
        goto yy276;
 yy484:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy510;
+       if (yych == 'r') goto yy511;
        goto yy276;
 yy485:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy511;
+       if (yych == 'g') goto yy512;
        goto yy276;
 yy486:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'p') goto yy513;
+       goto yy276;
+yy487:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'n') goto yy514;
+       goto yy276;
+yy488:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy515;
+       goto yy276;
+yy489:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy516;
+       goto yy276;
+yy490:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 'l') {
-               if (yych == 'd') goto yy513;
+               if (yych == 'd') goto yy518;
                goto yy276;
        } else {
-               if (yych <= 'm') goto yy514;
-               if (yych == 't') goto yy515;
+               if (yych <= 'm') goto yy519;
+               if (yych == 't') goto yy520;
                goto yy276;
        }
-yy487:
+yy491:
        ++YYCURSOR;
 #line 139 "../src/conf/parse_opts.re"
        { opts.set_target (opt_t::DOT);      goto opt; }
-#line 2024 "src/conf/parse_opts.cc"
-yy489:
+#line 2041 "src/conf/parse_opts.cc"
+yy493:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy516;
+       if (yych == 's') goto yy521;
        goto yy276;
-yy490:
+yy494:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy517;
+       if (yych == 'p') goto yy522;
        goto yy276;
-yy491:
+yy495:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy518;
+       if (yych == 'a') goto yy523;
        goto yy276;
-yy492:
+yy496:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy519;
+       if (yych == 's') goto yy524;
        goto yy276;
-yy493:
+yy497:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy520;
+       if (yych == 'i') goto yy525;
        goto yy276;
-yy494:
+yy498:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy521;
+       if (yych == 't') goto yy526;
        goto yy276;
-yy495:
+yy499:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy522;
+       if (yych == 'n') goto yy527;
        goto yy276;
-yy496:
+yy500:
        ++YYCURSOR;
 #line 144 "../src/conf/parse_opts.re"
        { opts.set_rFlag (true);             goto opt; }
-#line 2057 "src/conf/parse_opts.cc"
-yy498:
+#line 2074 "src/conf/parse_opts.cc"
+yy502:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy523;
+       if (yych == 's') goto yy528;
        goto yy276;
-yy499:
+yy503:
        ++YYCURSOR;
 #line 150 "../src/conf/parse_opts.re"
        { opts.set_target (opt_t::SKELETON); goto opt; }
-#line 2066 "src/conf/parse_opts.cc"
-yy501:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy524;
-       goto yy276;
-yy502:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy525;
-       goto yy276;
-yy503:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy526;
-       goto yy276;
-yy504:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy527;
-       goto yy276;
+#line 2083 "src/conf/parse_opts.cc"
 yy505:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy528;
+       if (yych == 'd') goto yy529;
        goto yy276;
 yy506:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy529;
+       if (yych == 's') goto yy530;
        goto yy276;
 yy507:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy530;
+       if (yych == 'e') goto yy531;
        goto yy276;
 yy508:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy531;
+       if (yych == 's') goto yy532;
        goto yy276;
 yy509:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy532;
+       if (yych == 's') goto yy533;
        goto yy276;
 yy510:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'z') goto yy533;
+       if (yych == 's') goto yy534;
        goto yy276;
 yy511:
-       ++YYCURSOR;
-#line 168 "../src/conf/parse_opts.re"
-       { opts.set_dump_adfa(true);       goto opt; }
-#line 2111 "src/conf/parse_opts.cc"
-yy513:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy534;
+       if (yych == 't') goto yy535;
        goto yy276;
-yy514:
+yy512:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy535;
+       if (yych == 'o') goto yy536;
        goto yy276;
-yy515:
+yy513:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy536;
+       if (yych == 'u') goto yy537;
        goto yy276;
-yy516:
+yy514:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy537;
+       if (yych == 'g') goto yy538;
        goto yy276;
-yy517:
+yy515:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy538;
+       if (yych == 'z') goto yy539;
        goto yy276;
+yy516:
+       ++YYCURSOR;
+#line 169 "../src/conf/parse_opts.re"
+       { opts.set_dump_adfa(true);       goto opt; }
+#line 2132 "src/conf/parse_opts.cc"
 yy518:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'x') goto yy539;
+       if (yych == 'e') goto yy540;
        goto yy276;
 yy519:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy540;
+       if (yych == 'i') goto yy541;
        goto yy276;
 yy520:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy542;
+       if (yych == 'a') goto yy542;
        goto yy276;
 yy521:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy543;
+       if (yych == 's') goto yy543;
        goto yy276;
 yy522:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy544;
+       if (yych == 'o') goto yy544;
        goto yy276;
 yy523:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy546;
+       if (yych == 'x') goto yy545;
        goto yy276;
 yy524:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy547;
+       if (yych <= 0x00) goto yy546;
        goto yy276;
 yy525:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy548;
+       if (yych == 'n') goto yy548;
        goto yy276;
 yy526:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy549;
+       if (yych == 'i') goto yy549;
        goto yy276;
 yy527:
        yych = (YYCTYPE)*++YYCURSOR;
@@ -2170,358 +2171,387 @@ yy527:
        goto yy276;
 yy528:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy552;
+       if (yych == 's') goto yy552;
        goto yy276;
 yy529:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy554;
+       if (yych == 'i') goto yy553;
        goto yy276;
 yy530:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy555;
+       if (yych == 't') goto yy554;
        goto yy276;
 yy531:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy556;
+       if (yych == 'r') goto yy555;
        goto yy276;
 yy532:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy557;
+       if (yych <= 0x00) goto yy556;
        goto yy276;
 yy533:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy558;
+       if (yych <= 0x00) goto yy558;
        goto yy276;
 yy534:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy559;
+       if (yych == 'i') goto yy560;
        goto yy276;
 yy535:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy560;
+       if (yych == 'e') goto yy561;
        goto yy276;
 yy536:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy561;
+       if (yych == 't') goto yy562;
        goto yy276;
 yy537:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy562;
+       if (yych == 't') goto yy563;
        goto yy276;
 yy538:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy564;
+       if (yych <= 0x00) goto yy564;
        goto yy276;
 yy539:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy565;
+       if (yych == 'a') goto yy566;
        goto yy276;
 yy540:
-       ++YYCURSOR;
-#line 145 "../src/conf/parse_opts.re"
-       { opts.set_sFlag (true);             goto opt; }
-#line 2224 "src/conf/parse_opts.cc"
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy567;
+       goto yy276;
+yy541:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'n') goto yy568;
+       goto yy276;
 yy542:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy567;
+       if (yych == 'g') goto yy569;
        goto yy276;
 yy543:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy568;
+       if (yych <= 0x00) goto yy570;
        goto yy276;
 yy544:
-       ++YYCURSOR;
-#line 147 "../src/conf/parse_opts.re"
-       { opts.set_version (false);          goto opt; }
-#line 2237 "src/conf/parse_opts.cc"
-yy546:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy569;
+       if (yych == 'l') goto yy572;
        goto yy276;
-yy547:
+yy545:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy571;
+       if (yych <= 0x00) goto yy573;
        goto yy276;
+yy546:
+       ++YYCURSOR;
+#line 145 "../src/conf/parse_opts.re"
+       { opts.set_sFlag (true);             goto opt; }
+#line 2249 "src/conf/parse_opts.cc"
 yy548:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy572;
+       if (yych == 'f') goto yy575;
        goto yy276;
 yy549:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy573;
+       if (yych == 'o') goto yy576;
        goto yy276;
 yy550:
        ++YYCURSOR;
+#line 147 "../src/conf/parse_opts.re"
+       { opts.set_version (false);          goto opt; }
+#line 2262 "src/conf/parse_opts.cc"
+yy552:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy577;
+       goto yy276;
+yy553:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy579;
+       goto yy276;
+yy554:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'a') goto yy580;
+       goto yy276;
+yy555:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy581;
+       goto yy276;
+yy556:
+       ++YYCURSOR;
 #line 154 "../src/conf/parse_opts.re"
        { if (!opts.set_encoding (Enc::UCS2))   { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 2258 "src/conf/parse_opts.cc"
-yy552:
+#line 2283 "src/conf/parse_opts.cc"
+yy558:
        ++YYCURSOR;
 #line 136 "../src/conf/parse_opts.re"
        { opts.set_bFlag (true);             goto opt; }
-#line 2263 "src/conf/parse_opts.cc"
-yy554:
+#line 2288 "src/conf/parse_opts.cc"
+yy560:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy575;
+       if (yych == 't') goto yy583;
        goto yy276;
-yy555:
+yy561:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy576;
+       if (yych == 'd') goto yy584;
        goto yy276;
-yy556:
+yy562:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy577;
+       if (yych == 'o') goto yy585;
        goto yy276;
-yy557:
+yy563:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy578;
+       if (yych <= 0x00) goto yy586;
        goto yy276;
-yy558:
+yy564:
+       ++YYCURSOR;
+#line 163 "../src/conf/parse_opts.re"
+       { goto opt_dfa_mapping; }
+#line 2309 "src/conf/parse_opts.cc"
+yy566:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy580;
+       if (yych == 't') goto yy588;
        goto yy276;
-yy559:
+yy567:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy581;
+       if (yych <= 0x00) goto yy589;
        goto yy276;
-yy560:
+yy568:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy583;
+       if (yych <= 0x00) goto yy591;
        goto yy276;
-yy561:
+yy569:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy585;
+       if (yych == 'o') goto yy593;
        goto yy276;
-yy562:
+yy570:
        ++YYCURSOR;
 #line 161 "../src/conf/parse_opts.re"
        { goto opt_empty_class; }
-#line 2300 "src/conf/parse_opts.cc"
-yy564:
+#line 2330 "src/conf/parse_opts.cc"
+yy572:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy586;
+       if (yych == 'i') goto yy594;
        goto yy276;
-yy565:
+yy573:
        ++YYCURSOR;
 #line 141 "../src/conf/parse_opts.re"
        { opts.set_FFlag (true);             goto opt; }
-#line 2309 "src/conf/parse_opts.cc"
-yy567:
+#line 2339 "src/conf/parse_opts.cc"
+yy575:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy587;
+       if (yych == 'o') goto yy595;
        goto yy276;
-yy568:
+yy576:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy588;
+       if (yych == 'n') goto yy596;
        goto yy276;
-yy569:
+yy577:
        ++YYCURSOR;
-#line 163 "../src/conf/parse_opts.re"
+#line 164 "../src/conf/parse_opts.re"
        { goto opt; }
-#line 2322 "src/conf/parse_opts.cc"
-yy571:
+#line 2352 "src/conf/parse_opts.cc"
+yy579:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy589;
+       if (yych == 'i') goto yy597;
        goto yy276;
-yy572:
+yy580:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy590;
+       if (yych == 't') goto yy598;
        goto yy276;
-yy573:
+yy581:
        ++YYCURSOR;
 #line 158 "../src/conf/parse_opts.re"
        { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
-#line 2335 "src/conf/parse_opts.cc"
-yy575:
+#line 2365 "src/conf/parse_opts.cc"
+yy583:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy591;
+       if (yych == 'i') goto yy599;
        goto yy276;
-yy576:
+yy584:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy592;
+       if (yych <= 0x00) goto yy600;
        goto yy276;
-yy577:
+yy585:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy594;
+       if (yych == 's') goto yy602;
        goto yy276;
-yy578:
+yy586:
        ++YYCURSOR;
 #line 138 "../src/conf/parse_opts.re"
        { opts.set_dFlag (true);             goto opt; }
-#line 2352 "src/conf/parse_opts.cc"
-yy580:
+#line 2382 "src/conf/parse_opts.cc"
+yy588:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy595;
+       if (yych == 'i') goto yy603;
        goto yy276;
-yy581:
+yy589:
        ++YYCURSOR;
-#line 165 "../src/conf/parse_opts.re"
+#line 166 "../src/conf/parse_opts.re"
        { opts.set_dump_dfa_det(true);    goto opt; }
-#line 2361 "src/conf/parse_opts.cc"
-yy583:
+#line 2391 "src/conf/parse_opts.cc"
+yy591:
        ++YYCURSOR;
-#line 167 "../src/conf/parse_opts.re"
+#line 168 "../src/conf/parse_opts.re"
        { opts.set_dump_dfa_min(true);    goto opt; }
-#line 2366 "src/conf/parse_opts.cc"
-yy585:
+#line 2396 "src/conf/parse_opts.cc"
+yy593:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy596;
+       if (yych == 'p') goto yy604;
        goto yy276;
-yy586:
+yy594:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy597;
+       if (yych == 'c') goto yy605;
        goto yy276;
-yy587:
+yy595:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy598;
+       if (yych <= 0x00) goto yy606;
        goto yy276;
-yy588:
+yy596:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy600;
+       if (yych == '-') goto yy608;
        goto yy276;
-yy589:
+yy597:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy601;
+       if (yych == 'o') goto yy609;
        goto yy276;
-yy590:
+yy598:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy602;
+       if (yych == 'e') goto yy610;
        goto yy276;
-yy591:
+yy599:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'v') goto yy603;
+       if (yych == 'v') goto yy611;
        goto yy276;
-yy592:
+yy600:
        ++YYCURSOR;
 #line 149 "../src/conf/parse_opts.re"
        { opts.set_bCaseInverted (true);     goto opt; }
-#line 2399 "src/conf/parse_opts.cc"
-yy594:
+#line 2429 "src/conf/parse_opts.cc"
+yy602:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy604;
+       if (yych <= 0x00) goto yy612;
        goto yy276;
-yy595:
+yy603:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy606;
+       if (yych == 'o') goto yy614;
        goto yy276;
-yy596:
+yy604:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy607;
+       if (yych == 't') goto yy615;
        goto yy276;
-yy597:
+yy605:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'y') goto yy608;
+       if (yych == 'y') goto yy616;
        goto yy276;
-yy598:
+yy606:
        ++YYCURSOR;
 #line 143 "../src/conf/parse_opts.re"
        { opts.set_iFlag (true);             goto opt; }
-#line 2420 "src/conf/parse_opts.cc"
-yy600:
+#line 2450 "src/conf/parse_opts.cc"
+yy608:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy609;
+       if (yych == 'd') goto yy617;
        goto yy276;
-yy601:
+yy609:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy610;
+       if (yych == 'n') goto yy618;
        goto yy276;
-yy602:
+yy610:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy611;
+       if (yych <= 0x00) goto yy619;
        goto yy276;
-yy603:
+yy611:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy613;
+       if (yych == 'e') goto yy621;
        goto yy276;
-yy604:
+yy612:
        ++YYCURSOR;
 #line 142 "../src/conf/parse_opts.re"
        { opts.set_gFlag (true);             goto opt; }
-#line 2441 "src/conf/parse_opts.cc"
-yy606:
+#line 2471 "src/conf/parse_opts.cc"
+yy614:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy614;
+       if (yych == 'n') goto yy622;
        goto yy276;
-yy607:
+yy615:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy615;
+       if (yych <= 0x00) goto yy623;
        goto yy276;
-yy608:
+yy616:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy617;
+       if (yych <= 0x00) goto yy625;
        goto yy276;
-yy609:
+yy617:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy619;
+       if (yych == 'a') goto yy627;
        goto yy276;
-yy610:
+yy618:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy620;
+       if (yych == 's') goto yy628;
        goto yy276;
-yy611:
+yy619:
        ++YYCURSOR;
 #line 140 "../src/conf/parse_opts.re"
        { opts.set_fFlag (true);             goto opt; }
-#line 2466 "src/conf/parse_opts.cc"
-yy613:
+#line 2496 "src/conf/parse_opts.cc"
+yy621:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy621;
+       if (yych <= 0x00) goto yy629;
        goto yy276;
-yy614:
+yy622:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy623;
+       if (yych <= 0x00) goto yy631;
        goto yy276;
-yy615:
+yy623:
        ++YYCURSOR;
-#line 166 "../src/conf/parse_opts.re"
+#line 167 "../src/conf/parse_opts.re"
        { opts.set_dump_dfa_tagopt(true); goto opt; }
-#line 2479 "src/conf/parse_opts.cc"
-yy617:
+#line 2509 "src/conf/parse_opts.cc"
+yy625:
        ++YYCURSOR;
 #line 159 "../src/conf/parse_opts.re"
        { goto opt_encoding_policy; }
-#line 2484 "src/conf/parse_opts.cc"
-yy619:
+#line 2514 "src/conf/parse_opts.cc"
+yy627:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy625;
+       if (yych == 't') goto yy633;
        goto yy276;
-yy620:
+yy628:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy626;
+       if (yych <= 0x00) goto yy634;
        goto yy276;
-yy621:
+yy629:
        ++YYCURSOR;
 #line 148 "../src/conf/parse_opts.re"
        { opts.set_bCaseInsensitive (true);  goto opt; }
-#line 2497 "src/conf/parse_opts.cc"
-yy623:
+#line 2527 "src/conf/parse_opts.cc"
+yy631:
        ++YYCURSOR;
 #line 162 "../src/conf/parse_opts.re"
        { goto opt_dfa_minimization; }
-#line 2502 "src/conf/parse_opts.cc"
-yy625:
+#line 2532 "src/conf/parse_opts.cc"
+yy633:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy628;
+       if (yych == 'e') goto yy636;
        goto yy276;
-yy626:
+yy634:
        ++YYCURSOR;
 #line 137 "../src/conf/parse_opts.re"
        { opts.set_cFlag (true);             goto opt; }
-#line 2511 "src/conf/parse_opts.cc"
-yy628:
+#line 2541 "src/conf/parse_opts.cc"
+yy636:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych >= 0x01) goto yy276;
        ++YYCURSOR;
 #line 146 "../src/conf/parse_opts.re"
        { opts.set_bNoGenerationDate (true); goto opt; }
-#line 2518 "src/conf/parse_opts.cc"
+#line 2548 "src/conf/parse_opts.cc"
 }
-#line 169 "../src/conf/parse_opts.re"
+#line 170 "../src/conf/parse_opts.re"
 
 
 opt_output:
 
-#line 2525 "src/conf/parse_opts.cc"
+#line 2555 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2559,33 +2589,33 @@ opt_output:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy633;
-       if (yych != '-') goto yy635;
-yy633:
+       if (yych <= 0x00) goto yy641;
+       if (yych != '-') goto yy643;
+yy641:
        ++YYCURSOR;
-#line 174 "../src/conf/parse_opts.re"
+#line 175 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option -o, --output: %s", *argv);
                return EXIT_FAIL;
        }
-#line 2572 "src/conf/parse_opts.cc"
-yy635:
+#line 2602 "src/conf/parse_opts.cc"
+yy643:
        ++YYCURSOR;
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy635;
+               goto yy643;
        }
        ++YYCURSOR;
-#line 178 "../src/conf/parse_opts.re"
+#line 179 "../src/conf/parse_opts.re"
        { opts.set_output_file(*argv); goto opt; }
-#line 2582 "src/conf/parse_opts.cc"
+#line 2612 "src/conf/parse_opts.cc"
 }
-#line 179 "../src/conf/parse_opts.re"
+#line 180 "../src/conf/parse_opts.re"
 
 
 opt_header:
 
-#line 2589 "src/conf/parse_opts.cc"
+#line 2619 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2623,28 +2653,28 @@ opt_header:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy641;
-       if (yych != '-') goto yy643;
-yy641:
+       if (yych <= 0x00) goto yy649;
+       if (yych != '-') goto yy651;
+yy649:
        ++YYCURSOR;
-#line 184 "../src/conf/parse_opts.re"
+#line 185 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option -t, --type-header: %s", *argv);
                return EXIT_FAIL;
        }
-#line 2636 "src/conf/parse_opts.cc"
-yy643:
+#line 2666 "src/conf/parse_opts.cc"
+yy651:
        ++YYCURSOR;
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy643;
+               goto yy651;
        }
        ++YYCURSOR;
-#line 188 "../src/conf/parse_opts.re"
+#line 189 "../src/conf/parse_opts.re"
        { opts.set_header_file (*argv); goto opt; }
-#line 2646 "src/conf/parse_opts.cc"
+#line 2676 "src/conf/parse_opts.cc"
 }
-#line 189 "../src/conf/parse_opts.re"
+#line 190 "../src/conf/parse_opts.re"
 
 
 opt_encoding_policy:
@@ -2654,115 +2684,115 @@ opt_encoding_policy:
                return EXIT_FAIL;
        }
 
-#line 2658 "src/conf/parse_opts.cc"
+#line 2688 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'h') {
-               if (yych == 'f') goto yy651;
+               if (yych == 'f') goto yy659;
        } else {
-               if (yych <= 'i') goto yy652;
-               if (yych == 's') goto yy653;
+               if (yych <= 'i') goto yy660;
+               if (yych == 's') goto yy661;
        }
        ++YYCURSOR;
-yy650:
-#line 199 "../src/conf/parse_opts.re"
+yy658:
+#line 200 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv);
                return EXIT_FAIL;
        }
-#line 2675 "src/conf/parse_opts.cc"
-yy651:
+#line 2705 "src/conf/parse_opts.cc"
+yy659:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy654;
-       goto yy650;
-yy652:
+       if (yych == 'a') goto yy662;
+       goto yy658;
+yy660:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'g') goto yy656;
-       goto yy650;
-yy653:
+       if (yych == 'g') goto yy664;
+       goto yy658;
+yy661:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'u') goto yy657;
-       goto yy650;
-yy654:
+       if (yych == 'u') goto yy665;
+       goto yy658;
+yy662:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy658;
-yy655:
+       if (yych == 'i') goto yy666;
+yy663:
        YYCURSOR = YYMARKER;
-       goto yy650;
-yy656:
+       goto yy658;
+yy664:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy659;
-       goto yy655;
-yy657:
+       if (yych == 'n') goto yy667;
+       goto yy663;
+yy665:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy660;
-       goto yy655;
-yy658:
+       if (yych == 'b') goto yy668;
+       goto yy663;
+yy666:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy661;
-       goto yy655;
-yy659:
+       if (yych == 'l') goto yy669;
+       goto yy663;
+yy667:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy662;
-       goto yy655;
-yy660:
+       if (yych == 'o') goto yy670;
+       goto yy663;
+yy668:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy663;
-       goto yy655;
-yy661:
+       if (yych == 's') goto yy671;
+       goto yy663;
+yy669:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy664;
-       goto yy655;
-yy662:
+       if (yych <= 0x00) goto yy672;
+       goto yy663;
+yy670:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy666;
-       goto yy655;
-yy663:
+       if (yych == 'r') goto yy674;
+       goto yy663;
+yy671:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy667;
-       goto yy655;
-yy664:
+       if (yych == 't') goto yy675;
+       goto yy663;
+yy672:
        ++YYCURSOR;
-#line 205 "../src/conf/parse_opts.re"
+#line 206 "../src/conf/parse_opts.re"
        { opts.set_encoding_policy (Enc::POLICY_FAIL);       goto opt; }
-#line 2730 "src/conf/parse_opts.cc"
-yy666:
+#line 2760 "src/conf/parse_opts.cc"
+yy674:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy668;
-       goto yy655;
-yy667:
+       if (yych == 'e') goto yy676;
+       goto yy663;
+yy675:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy669;
-       goto yy655;
-yy668:
+       if (yych == 'i') goto yy677;
+       goto yy663;
+yy676:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy670;
-       goto yy655;
-yy669:
+       if (yych <= 0x00) goto yy678;
+       goto yy663;
+yy677:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy672;
-       goto yy655;
-yy670:
+       if (yych == 't') goto yy680;
+       goto yy663;
+yy678:
        ++YYCURSOR;
-#line 203 "../src/conf/parse_opts.re"
+#line 204 "../src/conf/parse_opts.re"
        { opts.set_encoding_policy (Enc::POLICY_IGNORE);     goto opt; }
-#line 2751 "src/conf/parse_opts.cc"
-yy672:
+#line 2781 "src/conf/parse_opts.cc"
+yy680:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy655;
+       if (yych != 'u') goto yy663;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy655;
+       if (yych != 't') goto yy663;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy655;
+       if (yych != 'e') goto yy663;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy655;
+       if (yych >= 0x01) goto yy663;
        ++YYCURSOR;
-#line 204 "../src/conf/parse_opts.re"
+#line 205 "../src/conf/parse_opts.re"
        { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; }
-#line 2764 "src/conf/parse_opts.cc"
+#line 2794 "src/conf/parse_opts.cc"
 }
-#line 206 "../src/conf/parse_opts.re"
+#line 207 "../src/conf/parse_opts.re"
 
 
 opt_input:
@@ -2772,86 +2802,86 @@ opt_input:
                return EXIT_FAIL;
        }
 
-#line 2776 "src/conf/parse_opts.cc"
+#line 2806 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 'b') goto yy680;
-       if (yych <= 'c') goto yy682;
-       if (yych <= 'd') goto yy683;
-yy680:
+       if (yych <= 'b') goto yy688;
+       if (yych <= 'c') goto yy690;
+       if (yych <= 'd') goto yy691;
+yy688:
        ++YYCURSOR;
-yy681:
-#line 216 "../src/conf/parse_opts.re"
+yy689:
+#line 217 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --input (expected: default | custom): %s", *argv);
                return EXIT_FAIL;
        }
-#line 2791 "src/conf/parse_opts.cc"
-yy682:
+#line 2821 "src/conf/parse_opts.cc"
+yy690:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'u') goto yy684;
-       goto yy681;
-yy683:
+       if (yych == 'u') goto yy692;
+       goto yy689;
+yy691:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy686;
-       goto yy681;
-yy684:
+       if (yych == 'e') goto yy694;
+       goto yy689;
+yy692:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy687;
-yy685:
+       if (yych == 's') goto yy695;
+yy693:
        YYCURSOR = YYMARKER;
-       goto yy681;
-yy686:
+       goto yy689;
+yy694:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy688;
-       goto yy685;
-yy687:
+       if (yych == 'f') goto yy696;
+       goto yy693;
+yy695:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy689;
-       goto yy685;
-yy688:
+       if (yych == 't') goto yy697;
+       goto yy693;
+yy696:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy690;
-       goto yy685;
-yy689:
+       if (yych == 'a') goto yy698;
+       goto yy693;
+yy697:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy691;
-       goto yy685;
-yy690:
+       if (yych == 'o') goto yy699;
+       goto yy693;
+yy698:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy692;
-       goto yy685;
-yy691:
+       if (yych == 'u') goto yy700;
+       goto yy693;
+yy699:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy693;
-       goto yy685;
-yy692:
+       if (yych == 'm') goto yy701;
+       goto yy693;
+yy700:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy694;
-       goto yy685;
-yy693:
+       if (yych == 'l') goto yy702;
+       goto yy693;
+yy701:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy695;
-       goto yy685;
-yy694:
+       if (yych <= 0x00) goto yy703;
+       goto yy693;
+yy702:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy697;
-       goto yy685;
-yy695:
+       if (yych == 't') goto yy705;
+       goto yy693;
+yy703:
        ++YYCURSOR;
-#line 221 "../src/conf/parse_opts.re"
+#line 222 "../src/conf/parse_opts.re"
        { opts.set_input_api (InputAPI::CUSTOM);  goto opt; }
-#line 2846 "src/conf/parse_opts.cc"
-yy697:
+#line 2876 "src/conf/parse_opts.cc"
+yy705:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy685;
+       if (yych >= 0x01) goto yy693;
        ++YYCURSOR;
-#line 220 "../src/conf/parse_opts.re"
+#line 221 "../src/conf/parse_opts.re"
        { opts.set_input_api (InputAPI::DEFAULT); goto opt; }
-#line 2853 "src/conf/parse_opts.cc"
+#line 2883 "src/conf/parse_opts.cc"
 }
-#line 222 "../src/conf/parse_opts.re"
+#line 223 "../src/conf/parse_opts.re"
 
 
 opt_empty_class:
@@ -2861,120 +2891,120 @@ opt_empty_class:
                return EXIT_FAIL;
        }
 
-#line 2865 "src/conf/parse_opts.cc"
+#line 2895 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == 'e') goto yy704;
-       if (yych == 'm') goto yy705;
+       if (yych == 'e') goto yy712;
+       if (yych == 'm') goto yy713;
        ++YYCURSOR;
-yy703:
-#line 232 "../src/conf/parse_opts.re"
+yy711:
+#line 233 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --empty-class (expected: match-empty | match-none | error): %s", *argv);
                return EXIT_FAIL;
        }
-#line 2878 "src/conf/parse_opts.cc"
-yy704:
-       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'r') goto yy706;
-       goto yy703;
-yy705:
-       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy708;
-       goto yy703;
-yy706:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy709;
-yy707:
-       YYCURSOR = YYMARKER;
-       goto yy703;
-yy708:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy710;
-       goto yy707;
-yy709:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy711;
-       goto yy707;
-yy710:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy712;
-       goto yy707;
-yy711:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy713;
-       goto yy707;
+#line 2908 "src/conf/parse_opts.cc"
 yy712:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy714;
-       goto yy707;
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == 'r') goto yy714;
+       goto yy711;
 yy713:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy715;
-       goto yy707;
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == 'a') goto yy716;
+       goto yy711;
 yy714:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy717;
-       goto yy707;
+       if (yych == 'r') goto yy717;
 yy715:
-       ++YYCURSOR;
-#line 238 "../src/conf/parse_opts.re"
-       { opts.set_empty_class_policy (EMPTY_CLASS_ERROR);       goto opt; }
-#line 2925 "src/conf/parse_opts.cc"
+       YYCURSOR = YYMARKER;
+       goto yy711;
+yy716:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy718;
+       goto yy715;
 yy717:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy718;
-       if (yych == 'n') goto yy719;
-       goto yy707;
+       if (yych == 'o') goto yy719;
+       goto yy715;
 yy718:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy720;
-       goto yy707;
+       if (yych == 'c') goto yy720;
+       goto yy715;
 yy719:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy721;
-       goto yy707;
+       if (yych == 'r') goto yy721;
+       goto yy715;
 yy720:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy722;
-       goto yy707;
+       if (yych == 'h') goto yy722;
+       goto yy715;
 yy721:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy723;
-       goto yy707;
+       if (yych <= 0x00) goto yy723;
+       goto yy715;
 yy722:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy724;
-       goto yy707;
+       if (yych == '-') goto yy725;
+       goto yy715;
 yy723:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy725;
-       goto yy707;
-yy724:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'y') goto yy726;
-       goto yy707;
+       ++YYCURSOR;
+#line 239 "../src/conf/parse_opts.re"
+       { opts.set_empty_class_policy (EMPTY_CLASS_ERROR);       goto opt; }
+#line 2955 "src/conf/parse_opts.cc"
 yy725:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy727;
-       goto yy707;
+       if (yych == 'e') goto yy726;
+       if (yych == 'n') goto yy727;
+       goto yy715;
 yy726:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy729;
-       goto yy707;
+       if (yych == 'm') goto yy728;
+       goto yy715;
 yy727:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'o') goto yy729;
+       goto yy715;
+yy728:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'p') goto yy730;
+       goto yy715;
+yy729:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'n') goto yy731;
+       goto yy715;
+yy730:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy732;
+       goto yy715;
+yy731:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy733;
+       goto yy715;
+yy732:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'y') goto yy734;
+       goto yy715;
+yy733:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy735;
+       goto yy715;
+yy734:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy737;
+       goto yy715;
+yy735:
        ++YYCURSOR;
-#line 237 "../src/conf/parse_opts.re"
+#line 238 "../src/conf/parse_opts.re"
        { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE);  goto opt; }
-#line 2971 "src/conf/parse_opts.cc"
-yy729:
+#line 3001 "src/conf/parse_opts.cc"
+yy737:
        ++YYCURSOR;
-#line 236 "../src/conf/parse_opts.re"
+#line 237 "../src/conf/parse_opts.re"
        { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; }
-#line 2976 "src/conf/parse_opts.cc"
+#line 3006 "src/conf/parse_opts.cc"
 }
-#line 239 "../src/conf/parse_opts.re"
+#line 240 "../src/conf/parse_opts.re"
 
 
 opt_dfa_minimization:
@@ -2984,74 +3014,182 @@ opt_dfa_minimization:
                return EXIT_FAIL;
        }
 
-#line 2988 "src/conf/parse_opts.cc"
+#line 3018 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == 'm') goto yy735;
-       if (yych == 't') goto yy736;
+       if (yych == 'm') goto yy743;
+       if (yych == 't') goto yy744;
        ++YYCURSOR;
-yy734:
-#line 249 "../src/conf/parse_opts.re"
+yy742:
+#line 250 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --dfa-minimization (expected: table | moore): %s", *argv);
                return EXIT_FAIL;
        }
-#line 3001 "src/conf/parse_opts.cc"
-yy735:
+#line 3031 "src/conf/parse_opts.cc"
+yy743:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'o') goto yy737;
-       goto yy734;
-yy736:
+       if (yych == 'o') goto yy745;
+       goto yy742;
+yy744:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy739;
-       goto yy734;
-yy737:
+       if (yych == 'a') goto yy747;
+       goto yy742;
+yy745:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy740;
-yy738:
+       if (yych == 'o') goto yy748;
+yy746:
        YYCURSOR = YYMARKER;
-       goto yy734;
-yy739:
+       goto yy742;
+yy747:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy741;
-       goto yy738;
-yy740:
+       if (yych == 'b') goto yy749;
+       goto yy746;
+yy748:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy742;
-       goto yy738;
-yy741:
+       if (yych == 'r') goto yy750;
+       goto yy746;
+yy749:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy743;
-       goto yy738;
-yy742:
+       if (yych == 'l') goto yy751;
+       goto yy746;
+yy750:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy744;
-       goto yy738;
-yy743:
+       if (yych == 'e') goto yy752;
+       goto yy746;
+yy751:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy745;
-       goto yy738;
-yy744:
+       if (yych == 'e') goto yy753;
+       goto yy746;
+yy752:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy746;
-       goto yy738;
-yy745:
+       if (yych <= 0x00) goto yy754;
+       goto yy746;
+yy753:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy748;
-       goto yy738;
-yy746:
+       if (yych <= 0x00) goto yy756;
+       goto yy746;
+yy754:
        ++YYCURSOR;
-#line 254 "../src/conf/parse_opts.re"
+#line 255 "../src/conf/parse_opts.re"
        { opts.set_dfa_minimization (DFA_MINIMIZATION_MOORE); goto opt; }
-#line 3048 "src/conf/parse_opts.cc"
-yy748:
+#line 3078 "src/conf/parse_opts.cc"
+yy756:
        ++YYCURSOR;
-#line 253 "../src/conf/parse_opts.re"
+#line 254 "../src/conf/parse_opts.re"
        { opts.set_dfa_minimization (DFA_MINIMIZATION_TABLE); goto opt; }
-#line 3053 "src/conf/parse_opts.cc"
+#line 3083 "src/conf/parse_opts.cc"
 }
-#line 255 "../src/conf/parse_opts.re"
+#line 256 "../src/conf/parse_opts.re"
+
+
+opt_dfa_mapping:
+       if (!next(YYCURSOR, argv)) {
+               error_arg("--mapping");
+               return EXIT_FAIL;
+       }
+
+#line 3094 "src/conf/parse_opts.cc"
+{
+       YYCTYPE yych;
+       yych = (YYCTYPE)*YYCURSOR;
+       if (yych == 'b') goto yy762;
+       if (yych == 'i') goto yy763;
+       ++YYCURSOR;
+yy761:
+#line 264 "../src/conf/parse_opts.re"
+       {
+               error("bad argument to option --dfa-mapping (expected: bijective | injective): %s", *argv);
+               return EXIT_FAIL;
+       }
+#line 3107 "src/conf/parse_opts.cc"
+yy762:
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == 'i') goto yy764;
+       goto yy761;
+yy763:
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == 'n') goto yy766;
+       goto yy761;
+yy764:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'j') goto yy767;
+yy765:
+       YYCURSOR = YYMARKER;
+       goto yy761;
+yy766:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'j') goto yy768;
+       goto yy765;
+yy767:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy769;
+       goto yy765;
+yy768:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy770;
+       goto yy765;
+yy769:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'c') goto yy771;
+       goto yy765;
+yy770:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'c') goto yy772;
+       goto yy765;
+yy771:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy773;
+       goto yy765;
+yy772:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy774;
+       goto yy765;
+yy773:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy775;
+       goto yy765;
+yy774:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy776;
+       goto yy765;
+yy775:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'v') goto yy777;
+       goto yy765;
+yy776:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'v') goto yy778;
+       goto yy765;
+yy777:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy779;
+       goto yy765;
+yy778:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy780;
+       goto yy765;
+yy779:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy781;
+       goto yy765;
+yy780:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy783;
+       goto yy765;
+yy781:
+       ++YYCURSOR;
+#line 268 "../src/conf/parse_opts.re"
+       { opts.set_dfa_mapping(mapping_t::BIJECTIVE); goto opt; }
+#line 3186 "src/conf/parse_opts.cc"
+yy783:
+       ++YYCURSOR;
+#line 269 "../src/conf/parse_opts.re"
+       { opts.set_dfa_mapping(mapping_t::INJECTIVE); goto opt; }
+#line 3191 "src/conf/parse_opts.cc"
+}
+#line 270 "../src/conf/parse_opts.re"
 
 
 end:
index 9f705b68071742ad004b367b4702cc7398851de2..b4e2f05e8ef85dc44443a8b29dc47d2b71a2b40b 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Tue Nov 15 17:31:03 2016 */
+/* Generated by re2c 0.16 on Sun Dec  4 14:46:23 2016 */
 #line 1 "../src/parse/lex_conf.re"
 #include "src/util/c99_stdint.h"
 #include <string>
@@ -193,28 +193,28 @@ yy14:
                                        if (yyaccept == 15) {
                                                goto yy358;
                                        } else {
-                                               goto yy433;
+                                               goto yy434;
                                        }
                                } else {
-                                       goto yy540;
+                                       goto yy543;
                                }
                        }
                } else {
                        if (yyaccept <= 20) {
                                if (yyaccept <= 19) {
                                        if (yyaccept == 18) {
-                                               goto yy598;
+                                               goto yy602;
                                        } else {
-                                               goto yy638;
+                                               goto yy643;
                                        }
                                } else {
-                                       goto yy645;
+                                       goto yy650;
                                }
                        } else {
                                if (yyaccept == 21) {
-                                       goto yy727;
+                                       goto yy734;
                                } else {
-                                       goto yy730;
+                                       goto yy737;
                                }
                        }
                }
@@ -931,7 +931,7 @@ yy180:
        goto yy14;
 yy181:
        ++cur;
-#line 102 "../src/parse/lex_conf.re"
+#line 103 "../src/parse/lex_conf.re"
        { opts.set_yybmHexTable (lex_conf_bool()); return; }
 #line 937 "src/parse/lex_conf.cc"
 yy183:
@@ -967,7 +967,7 @@ yy190:
        yych = (unsigned char)*(ptr = ++cur);
        if (yych == '@') goto yy238;
 yy191:
-#line 86 "../src/parse/lex_conf.re"
+#line 87 "../src/parse/lex_conf.re"
        { opts.set_condGoto         (lex_conf_string ()); return; }
 #line 973 "src/parse/lex_conf.cc"
 yy192:
@@ -1144,7 +1144,7 @@ yy230:
        goto yy14;
 yy231:
        ++cur;
-#line 152 "../src/parse/lex_conf.re"
+#line 153 "../src/parse/lex_conf.re"
        { opts.set_bEmitYYCh      (lex_conf_bool()); return; }
 #line 1150 "src/parse/lex_conf.cc"
 yy233:
@@ -1177,7 +1177,7 @@ yy239:
        goto yy14;
 yy240:
        ++cur;
-#line 82 "../src/parse/lex_conf.re"
+#line 83 "../src/parse/lex_conf.re"
        { opts.set_condPrefix       (lex_conf_string ()); return; }
 #line 1183 "src/parse/lex_conf.cc"
 yy242:
@@ -1327,7 +1327,7 @@ yy275:
        goto yy14;
 yy276:
        ++cur;
-#line 137 "../src/parse/lex_conf.re"
+#line 138 "../src/parse/lex_conf.re"
        {
                const int32_t n = lex_conf_number ();
                if (n < 0)
@@ -1369,7 +1369,7 @@ yy281:
                }
        }
 yy282:
-#line 165 "../src/parse/lex_conf.re"
+#line 166 "../src/parse/lex_conf.re"
        { out.block().user_start_label = lex_conf_string(); return; }
 #line 1375 "src/parse/lex_conf.cc"
 yy283:
@@ -1505,72 +1505,73 @@ yy314:
        goto yy14;
 yy315:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy381;
+       if (yych == 'a') goto yy381;
+       if (yych == 'i') goto yy382;
        goto yy14;
 yy316:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy382;
+       if (yych == 'd') goto yy383;
        goto yy14;
 yy317:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy383;
+       if (yych == '-') goto yy384;
        goto yy14;
 yy318:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy384;
+       if (yych == 'i') goto yy385;
        goto yy14;
 yy319:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy385;
+       if (yych == 's') goto yy386;
        goto yy14;
 yy320:
        ++cur;
 #line 72 "../src/parse/lex_conf.re"
        { lex_conf_input();            return; }
-#line 1531 "src/parse/lex_conf.cc"
+#line 1532 "src/parse/lex_conf.cc"
 yy322:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy386;
+       if (yych == 'd') goto yy387;
        goto yy14;
 yy323:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy387;
+       if (yych == 'b') goto yy388;
        goto yy14;
 yy324:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy388;
+       if (yych == 'n') goto yy389;
        goto yy14;
 yy325:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy389;
+       if (yych == 'r') goto yy390;
        goto yy14;
 yy326:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy390;
+       if (yych == 't') goto yy391;
        goto yy14;
 yy327:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy391;
+       if (yych == 'b') goto yy392;
        goto yy14;
 yy328:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy392;
+       if (yych == 't') goto yy393;
        goto yy14;
 yy329:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy393;
+       if (yych == '-') goto yy394;
        goto yy14;
 yy330:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy394;
+       if (yych == 'b') goto yy395;
        goto yy14;
 yy331:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy395;
+       if (yych == 'h') goto yy396;
        goto yy14;
 yy332:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy396;
+       if (yych == 'd') goto yy397;
        goto yy14;
 yy333:
        yych = (unsigned char)*++cur;
@@ -1578,25 +1579,25 @@ yy333:
        goto yy14;
 yy334:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy397;
+       if (yych == 'c') goto yy398;
        goto yy14;
 yy335:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy398;
+       if (yych == 'n') goto yy399;
        goto yy14;
 yy336:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy399;
+       if (yych == 'l') goto yy400;
        goto yy14;
 yy337:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy400;
+       if (yych == 't') goto yy401;
        goto yy14;
 yy338:
        ++cur;
-#line 161 "../src/parse/lex_conf.re"
+#line 162 "../src/parse/lex_conf.re"
        { opts.set_labelPrefix (lex_conf_string ()); return; }
-#line 1600 "src/parse/lex_conf.cc"
+#line 1601 "src/parse/lex_conf.cc"
 yy340:
        ++cur;
        if (lim <= cur) fill(1);
@@ -1619,748 +1620,760 @@ yy342:
                }
        } else {
                if (yych <= '/') {
-                       if (yych <= '-') goto yy402;
+                       if (yych <= '-') goto yy403;
                        goto yy14;
                } else {
-                       if (yych <= '0') goto yy403;
-                       if (yych <= '9') goto yy405;
+                       if (yych <= '0') goto yy404;
+                       if (yych <= '9') goto yy406;
                        goto yy14;
                }
        }
 yy344:
        ++cur;
-#line 97 "../src/parse/lex_conf.re"
+#line 98 "../src/parse/lex_conf.re"
        { opts.set_bUseStateAbort  (lex_conf_bool()); return; }
-#line 1635 "src/parse/lex_conf.cc"
+#line 1636 "src/parse/lex_conf.cc"
 yy346:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy407;
+       if (yych == 'a') goto yy408;
        goto yy14;
 yy347:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy408;
+       if (yych == 't') goto yy409;
        goto yy14;
 yy348:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy410;
+       if (yych == 's') goto yy411;
        goto yy14;
 yy349:
        ++cur;
-#line 132 "../src/parse/lex_conf.re"
+#line 133 "../src/parse/lex_conf.re"
        { opts.set_tags_prefix    (lex_conf_string ()); return; }
-#line 1652 "src/parse/lex_conf.cc"
+#line 1653 "src/parse/lex_conf.cc"
 yy351:
        yych = (unsigned char)*++cur;
        if (yych <= 'c') {
                if (yych <= '`') goto yy14;
-               if (yych <= 'a') goto yy411;
-               if (yych <= 'b') goto yy412;
-               goto yy413;
+               if (yych <= 'a') goto yy412;
+               if (yych <= 'b') goto yy413;
+               goto yy414;
        } else {
                if (yych <= 'r') goto yy14;
-               if (yych <= 's') goto yy414;
-               if (yych <= 't') goto yy415;
+               if (yych <= 's') goto yy415;
+               if (yych <= 't') goto yy416;
                goto yy14;
        }
 yy352:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy416;
+       if (yych == 's') goto yy417;
        goto yy14;
 yy353:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy417;
+       if (yych == 'k') goto yy418;
        goto yy14;
 yy354:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy419;
+       if (yych == 'l') goto yy420;
        goto yy14;
 yy355:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy420;
+       if (yych == 'm') goto yy421;
        goto yy14;
 yy356:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy421;
+       if (yych == 'o') goto yy422;
        goto yy14;
 yy357:
        yyaccept = 15;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == '@') goto yy422;
+       if (yych == '@') goto yy423;
 yy358:
-#line 84 "../src/parse/lex_conf.re"
+#line 85 "../src/parse/lex_conf.re"
        { opts.set_condDivider      (lex_conf_string ()); return; }
-#line 1693 "src/parse/lex_conf.cc"
+#line 1694 "src/parse/lex_conf.cc"
 yy359:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy423;
+       if (yych == 'n') goto yy424;
        goto yy14;
 yy360:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy424;
+       if (yych == 'i') goto yy425;
        goto yy14;
 yy361:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy425;
+       if (yych == 'K') goto yy426;
        goto yy14;
 yy362:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy426;
+       if (yych == 'D') goto yy427;
        goto yy14;
 yy363:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy427;
+       if (yych == 'Y') goto yy428;
        goto yy14;
 yy364:
        yych = (unsigned char)*++cur;
-       if (yych == 'M') goto yy428;
+       if (yych == 'M') goto yy429;
        goto yy14;
 yy365:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy429;
+       if (yych == 'P') goto yy430;
        goto yy14;
 yy366:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy430;
+       if (yych == 'S') goto yy431;
        goto yy14;
 yy367:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy431;
+       if (yych == 'U') goto yy432;
        goto yy14;
 yy368:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy432;
+       if (yych == 'L') goto yy433;
        goto yy14;
 yy369:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy434;
-       if (yych == 'S') goto yy435;
+       if (yych == 'C') goto yy435;
+       if (yych == 'S') goto yy436;
        goto yy14;
 yy370:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy436;
+       if (yych == 'S') goto yy437;
        goto yy14;
 yy371:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy437;
+       if (yych == 'I') goto yy438;
        goto yy14;
 yy372:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy438;
+       if (yych == 'K') goto yy439;
        goto yy14;
 yy373:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy439;
+       if (yych == 'K') goto yy440;
        goto yy14;
 yy374:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy441;
+       if (yych == 'T') goto yy442;
        goto yy14;
 yy375:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy442;
-       if (yych == 'S') goto yy443;
+       if (yych == 'C') goto yy443;
+       if (yych == 'S') goto yy444;
        goto yy14;
 yy376:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy444;
+       if (yych == 'P') goto yy445;
        goto yy14;
 yy377:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy446;
+       if (yych == 'c') goto yy447;
        goto yy14;
 yy378:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy447;
+       if (yych == 'n') goto yy448;
        goto yy14;
 yy379:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy448;
+       if (yych == 'e') goto yy449;
        goto yy14;
 yy380:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy449;
+       if (yych == 'o') goto yy450;
        goto yy14;
 yy381:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy450;
+       if (yych == 'p') goto yy451;
        goto yy14;
 yy382:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy451;
+       if (yych == 'n') goto yy452;
        goto yy14;
 yy383:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy452;
+       if (yych == 'o') goto yy453;
        goto yy14;
 yy384:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy453;
+       if (yych == 'c') goto yy454;
        goto yy14;
 yy385:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy454;
+       if (yych == 'n') goto yy455;
        goto yy14;
 yy386:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy455;
+       if (yych == 'y') goto yy456;
        goto yy14;
 yy387:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy456;
+       if (yych == '-') goto yy457;
        goto yy14;
 yy388:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy457;
+       if (yych == 'u') goto yy458;
        goto yy14;
 yy389:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy458;
+       if (yych == 'e') goto yy459;
        goto yy14;
 yy390:
        yych = (unsigned char)*++cur;
-       goto yy116;
+       if (yych == 's') goto yy460;
+       goto yy14;
 yy391:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy459;
-       goto yy14;
+       goto yy116;
 yy392:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy460;
+       if (yych == 'l') goto yy461;
        goto yy14;
 yy393:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy461;
+       if (yych == 'o') goto yy462;
        goto yy14;
 yy394:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy462;
+       if (yych == 'c') goto yy463;
        goto yy14;
 yy395:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy463;
+       if (yych == 'l') goto yy464;
        goto yy14;
 yy396:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy464;
+       if (yych == 'e') goto yy465;
        goto yy14;
 yy397:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy465;
+       if (yych == 'e') goto yy466;
        goto yy14;
 yy398:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy466;
+       if (yych == 'h') goto yy467;
        goto yy14;
 yy399:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy468;
+       if (yych == 'g') goto yy468;
        goto yy14;
 yy400:
+       yych = (unsigned char)*++cur;
+       if (yych == 'L') goto yy470;
+       goto yy14;
+yy401:
        ++cur;
-#line 96 "../src/parse/lex_conf.re"
+#line 97 "../src/parse/lex_conf.re"
        { opts.set_yynext          (lex_conf_string ()); return; }
-#line 1863 "src/parse/lex_conf.cc"
-yy402:
+#line 1868 "src/parse/lex_conf.cc"
+yy403:
        yych = (unsigned char)*++cur;
        if (yych <= '0') goto yy14;
-       if (yych <= '9') goto yy405;
+       if (yych <= '9') goto yy406;
        goto yy14;
-yy403:
-       ++cur;
 yy404:
+       ++cur;
+yy405:
        cur = ctx;
-#line 164 "../src/parse/lex_conf.re"
+#line 165 "../src/parse/lex_conf.re"
        { out.block().force_start_label = lex_conf_bool(); return; }
-#line 1875 "src/parse/lex_conf.cc"
-yy405:
+#line 1880 "src/parse/lex_conf.cc"
+yy406:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy405;
+               goto yy406;
        }
-       goto yy404;
-yy407:
+       goto yy405;
+yy408:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy469;
+       if (yych == 'b') goto yy471;
        goto yy14;
-yy408:
+yy409:
        ++cur;
-#line 131 "../src/parse/lex_conf.re"
+#line 132 "../src/parse/lex_conf.re"
        { opts.set_tags_default   (lex_conf_string ()); return; }
-#line 1892 "src/parse/lex_conf.cc"
-yy410:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy470;
-       goto yy14;
+#line 1897 "src/parse/lex_conf.cc"
 yy411:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy471;
+       if (yych == 'i') goto yy472;
        goto yy14;
 yy412:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy472;
+       if (yych == 'c') goto yy473;
        goto yy14;
 yy413:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy474;
-       if (yych == 't') goto yy476;
+       if (yych == 'm') goto yy474;
        goto yy14;
 yy414:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy477;
+       if (yych == 'h') goto yy476;
+       if (yych == 't') goto yy478;
        goto yy14;
 yy415:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy478;
+       if (yych == 't') goto yy479;
        goto yy14;
 yy416:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy479;
+       if (yych == 'a') goto yy480;
        goto yy14;
 yy417:
-       ++cur;
-#line 159 "../src/parse/lex_conf.re"
-       { opts.set_fill_check   (lex_conf_bool()); return; }
-#line 1926 "src/parse/lex_conf.cc"
-yy419:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy480;
+       if (yych == 'i') goto yy481;
        goto yy14;
+yy418:
+       ++cur;
+#line 160 "../src/parse/lex_conf.re"
+       { opts.set_fill_check   (lex_conf_bool()); return; }
+#line 1931 "src/parse/lex_conf.cc"
 yy420:
        yych = (unsigned char)*++cur;
        if (yych == 'e') goto yy482;
        goto yy14;
 yy421:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy483;
+       if (yych == 'e') goto yy484;
        goto yy14;
 yy422:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy484;
+       if (yych == 'l') goto yy485;
        goto yy14;
 yy423:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy485;
+       if (yych == 'c') goto yy486;
        goto yy14;
 yy424:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy487;
+       if (yych == 'd') goto yy487;
        goto yy14;
 yy425:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy489;
+       if (yych == 'x') goto yy489;
        goto yy14;
 yy426:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy490;
+       if (yych == 'U') goto yy491;
        goto yy14;
 yy427:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy491;
+       if (yych == 'T') goto yy492;
        goto yy14;
 yy428:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy492;
+       if (yych == 'T') goto yy493;
        goto yy14;
 yy429:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy493;
+       if (yych == 'A') goto yy494;
        goto yy14;
 yy430:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy495;
+       if (yych == 'E') goto yy495;
        goto yy14;
 yy431:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy496;
+       if (yych == 'O') goto yy497;
        goto yy14;
 yy432:
+       yych = (unsigned char)*++cur;
+       if (yych == 'G') goto yy498;
+       goto yy14;
+yy433:
        yyaccept = 16;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy498;
-       if (yych == '@') goto yy499;
-yy433:
-#line 154 "../src/parse/lex_conf.re"
-       { opts.set_fill         (lex_conf_string ()); return; }
-#line 1987 "src/parse/lex_conf.cc"
+       if (yych == ':') goto yy500;
+       if (yych == '@') goto yy501;
 yy434:
-       yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy500;
-       goto yy14;
+#line 155 "../src/parse/lex_conf.re"
+       { opts.set_fill         (lex_conf_string ()); return; }
+#line 1992 "src/parse/lex_conf.cc"
 yy435:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy501;
+       if (yych == 'O') goto yy502;
        goto yy14;
 yy436:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy502;
+       if (yych == 'T') goto yy503;
        goto yy14;
 yy437:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy503;
+       if (yych == 'T') goto yy504;
        goto yy14;
 yy438:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy505;
+       if (yych == 'T') goto yy505;
        goto yy14;
 yy439:
-       ++cur;
-#line 120 "../src/parse/lex_conf.re"
-       { opts.set_yypeek       (lex_conf_string ()); return; }
-#line 2012 "src/parse/lex_conf.cc"
-yy441:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy506;
+       if (yych == 'E') goto yy507;
        goto yy14;
+yy440:
+       ++cur;
+#line 121 "../src/parse/lex_conf.re"
+       { opts.set_yypeek       (lex_conf_string ()); return; }
+#line 2017 "src/parse/lex_conf.cc"
 yy442:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy507;
+       if (yych == 'O') goto yy508;
        goto yy14;
 yy443:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy508;
+       if (yych == 'O') goto yy509;
        goto yy14;
 yy444:
-       ++cur;
-#line 121 "../src/parse/lex_conf.re"
-       { opts.set_yyskip       (lex_conf_string ()); return; }
-#line 2029 "src/parse/lex_conf.cc"
-yy446:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy509;
+       if (yych == 'T') goto yy510;
        goto yy14;
+yy445:
+       ++cur;
+#line 122 "../src/parse/lex_conf.re"
+       { opts.set_yyskip       (lex_conf_string ()); return; }
+#line 2034 "src/parse/lex_conf.cc"
 yy447:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy510;
-       if (yych == 'v') goto yy511;
+       if (yych == 't') goto yy511;
        goto yy14;
 yy448:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy512;
+       if (yych == 's') goto yy512;
+       if (yych == 'v') goto yy513;
        goto yy14;
 yy449:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy513;
+       if (yych == 'd') goto yy514;
        goto yy14;
 yy450:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy514;
+       if (yych == 'u') goto yy515;
        goto yy14;
 yy451:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy92;
+       if (yych == 'p') goto yy516;
        goto yy14;
 yy452:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy515;
+       if (yych == 'i') goto yy517;
        goto yy14;
 yy453:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy516;
+       if (yych == 't') goto yy92;
        goto yy14;
 yy454:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy517;
+       if (yych == 'l') goto yy518;
        goto yy14;
 yy455:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy518;
+       if (yych == 'g') goto yy519;
        goto yy14;
 yy456:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy519;
+       if (yych == 'n') goto yy520;
        goto yy14;
 yy457:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy520;
+       if (yych == 'i') goto yy521;
        goto yy14;
 yy458:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy521;
+       if (yych == 'g') goto yy522;
        goto yy14;
 yy459:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy522;
+       if (yych == 'r') goto yy523;
        goto yy14;
 yy460:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy96;
+       if (yych == 'i') goto yy524;
        goto yy14;
 yy461:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy523;
+       if (yych == 'e') goto yy525;
        goto yy14;
 yy462:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy524;
+       if (yych == 'n') goto yy96;
        goto yy14;
 yy463:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy525;
+       if (yych == 'o') goto yy526;
        goto yy14;
 yy464:
        yych = (unsigned char)*++cur;
-       goto yy124;
+       if (yych == 'e') goto yy527;
+       goto yy14;
 yy465:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy526;
+       if (yych == 'a') goto yy528;
        goto yy14;
 yy466:
-       ++cur;
-#line 135 "../src/parse/lex_conf.re"
-       { opts.set_indString (lex_conf_string ()); return; }
-#line 2114 "src/parse/lex_conf.cc"
-yy468:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy527;
-       goto yy14;
-yy469:
+       goto yy124;
+yy467:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy528;
+       if (yych == 'a') goto yy529;
        goto yy14;
+yy468:
+       ++cur;
+#line 136 "../src/parse/lex_conf.re"
+       { opts.set_indString (lex_conf_string ()); return; }
+#line 2123 "src/parse/lex_conf.cc"
 yy470:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy529;
+       if (yych == 'a') goto yy530;
        goto yy14;
 yy471:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy530;
+       if (yych == 'e') goto yy531;
        goto yy14;
 yy472:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy532;
+       goto yy14;
+yy473:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy533;
+       goto yy14;
+yy474:
        ++cur;
-#line 101 "../src/parse/lex_conf.re"
+#line 102 "../src/parse/lex_conf.re"
        { opts.set_yybm         (lex_conf_string ()); return; }
-#line 2135 "src/parse/lex_conf.cc"
-yy474:
+#line 2144 "src/parse/lex_conf.cc"
+yy476:
        ++cur;
-#line 150 "../src/parse/lex_conf.re"
+#line 151 "../src/parse/lex_conf.re"
        { opts.set_yych           (lex_conf_string ()); return; }
-#line 2140 "src/parse/lex_conf.cc"
-yy476:
+#line 2149 "src/parse/lex_conf.cc"
+yy478:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy531;
+       if (yych == 'a') goto yy534;
        goto yy14;
-yy477:
+yy479:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy532;
+       if (yych == 'a') goto yy535;
        goto yy14;
-yy478:
+yy480:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy533;
+       if (yych == 'r') goto yy536;
        goto yy14;
-yy479:
+yy481:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy534;
+       if (yych == 'o') goto yy537;
        goto yy14;
-yy480:
+yy482:
        ++cur;
-#line 155 "../src/parse/lex_conf.re"
+#line 156 "../src/parse/lex_conf.re"
        { opts.set_fill_use     (lex_conf_bool()); return; }
-#line 2161 "src/parse/lex_conf.cc"
-yy482:
+#line 2170 "src/parse/lex_conf.cc"
+yy484:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy535;
+       if (yych == 't') goto yy538;
        goto yy14;
-yy483:
+yy485:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy536;
+       if (yych == 'd') goto yy539;
        goto yy14;
-yy484:
+yy486:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy538;
+       if (yych == 'o') goto yy541;
        goto yy14;
-yy485:
+yy487:
        ++cur;
-#line 87 "../src/parse/lex_conf.re"
+#line 88 "../src/parse/lex_conf.re"
        { opts.set_condGotoParam    (lex_conf_string ()); return; }
-#line 2178 "src/parse/lex_conf.cc"
-yy487:
+#line 2187 "src/parse/lex_conf.cc"
+yy489:
        ++cur;
-#line 83 "../src/parse/lex_conf.re"
+#line 84 "../src/parse/lex_conf.re"
        { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
-#line 2183 "src/parse/lex_conf.cc"
-yy489:
+#line 2192 "src/parse/lex_conf.cc"
+yy491:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy539;
+       if (yych == 'P') goto yy542;
        goto yy14;
-yy490:
+yy492:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy541;
+       if (yych == 'Y') goto yy544;
        goto yy14;
-yy491:
+yy493:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy542;
+       if (yych == 'A') goto yy545;
        goto yy14;
-yy492:
+yy494:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy543;
+       if (yych == 'R') goto yy546;
        goto yy14;
-yy493:
+yy495:
        ++cur;
-#line 149 "../src/parse/lex_conf.re"
+#line 150 "../src/parse/lex_conf.re"
        { opts.set_yyctype        (lex_conf_string ()); return; }
-#line 2204 "src/parse/lex_conf.cc"
-yy495:
+#line 2213 "src/parse/lex_conf.cc"
+yy497:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy544;
+       if (yych == 'R') goto yy547;
        goto yy14;
-yy496:
+yy498:
        ++cur;
-#line 147 "../src/parse/lex_conf.re"
+#line 148 "../src/parse/lex_conf.re"
        { opts.set_yydebug (lex_conf_string ()); return; }
-#line 2213 "src/parse/lex_conf.cc"
-yy498:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy546;
-       goto yy14;
-yy499:
-       yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy547;
-       goto yy14;
+#line 2222 "src/parse/lex_conf.cc"
 yy500:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy548;
+       if (yych == 'n') goto yy549;
        goto yy14;
 yy501:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy549;
+       if (yych == 'l') goto yy550;
        goto yy14;
 yy502:
        yych = (unsigned char)*++cur;
-       if (yych == 'H') goto yy550;
+       if (yych == 'N') goto yy551;
        goto yy14;
 yy503:
-       ++cur;
-#line 118 "../src/parse/lex_conf.re"
-       { opts.set_yylimit     (lex_conf_string ()); return; }
-#line 2238 "src/parse/lex_conf.cc"
-yy505:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy551;
+       if (yych == 'A') goto yy552;
        goto yy14;
-yy506:
+yy504:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy553;
+       if (yych == 'H') goto yy553;
        goto yy14;
+yy505:
+       ++cur;
+#line 119 "../src/parse/lex_conf.re"
+       { opts.set_yylimit     (lex_conf_string ()); return; }
+#line 2247 "src/parse/lex_conf.cc"
 yy507:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy554;
+       if (yych == 'R') goto yy554;
        goto yy14;
 yy508:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy555;
+       if (yych == 'R') goto yy556;
        goto yy14;
 yy509:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy556;
+       if (yych == 'N') goto yy557;
        goto yy14;
 yy510:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy557;
+       if (yych == 'A') goto yy558;
        goto yy14;
 yy511:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy558;
+       if (yych == 'o') goto yy559;
        goto yy14;
 yy512:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy559;
+       if (yych == 'e') goto yy560;
        goto yy14;
 yy513:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy560;
+       if (yych == 'e') goto yy561;
        goto yy14;
 yy514:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy561;
+       if (yych == '-') goto yy562;
        goto yy14;
 yy515:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy562;
+       if (yych == 't') goto yy563;
        goto yy14;
 yy516:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy563;
+       if (yych == 'i') goto yy564;
        goto yy14;
 yy517:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy564;
+       if (yych == 'm') goto yy565;
        goto yy14;
 yy518:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy565;
+       if (yych == 'a') goto yy566;
        goto yy14;
 yy519:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy566;
+       if (yych == '-') goto yy567;
        goto yy14;
 yy520:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy567;
+       if (yych == 't') goto yy568;
        goto yy14;
 yy521:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy568;
+       if (yych == 'f') goto yy569;
        goto yy14;
 yy522:
        yych = (unsigned char)*++cur;
-       goto yy118;
+       if (yych == '-') goto yy570;
+       goto yy14;
 yy523:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy569;
+       if (yych == 'a') goto yy571;
        goto yy14;
 yy524:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy570;
+       if (yych == 'o') goto yy572;
        goto yy14;
 yy525:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy571;
-       goto yy14;
+       goto yy118;
 yy526:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy572;
+       if (yych == 'n') goto yy573;
        goto yy14;
 yy527:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy573;
+       if (yych == '-') goto yy574;
        goto yy14;
 yy528:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy574;
+       if (yych == 'd') goto yy575;
        goto yy14;
 yy529:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy576;
+       if (yych == 'r') goto yy576;
        goto yy14;
 yy530:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy578;
+       if (yych == 'b') goto yy577;
        goto yy14;
 yy531:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy579;
+       if (yych == 'l') goto yy578;
        goto yy14;
 yy532:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy580;
+       if (yych == 'n') goto yy580;
        goto yy14;
 yy533:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy581;
+       if (yych == 'e') goto yy582;
        goto yy14;
 yy534:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy582;
+       if (yych == 'b') goto yy583;
        goto yy14;
 yy535:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy584;
+       if (yych == 'b') goto yy584;
        goto yy14;
 yy536:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy585;
+       goto yy14;
+yy537:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy586;
+       goto yy14;
+yy538:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy588;
+       goto yy14;
+yy539:
        ++cur;
-#line 104 "../src/parse/lex_conf.re"
+#line 105 "../src/parse/lex_conf.re"
        {
                const int32_t n = lex_conf_number ();
                if (n < 0)
@@ -2370,270 +2383,258 @@ yy536:
                opts.set_cGotoThreshold (static_cast<uint32_t> (n));
                return;
        }
-#line 2374 "src/parse/lex_conf.cc"
-yy538:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy585;
-       goto yy14;
-yy539:
-       yyaccept = 17;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'C') goto yy586;
-       if (yych == 'T') goto yy587;
-yy540:
-#line 122 "../src/parse/lex_conf.re"
-       { opts.set_yybackup     (lex_conf_string ()); return; }
 #line 2387 "src/parse/lex_conf.cc"
 yy541:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy588;
+       if (yych == 'n') goto yy589;
        goto yy14;
 yy542:
-       yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy589;
-       goto yy14;
+       yyaccept = 17;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'C') goto yy590;
+       if (yych == 'T') goto yy591;
 yy543:
-       yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy591;
-       goto yy14;
+#line 123 "../src/parse/lex_conf.re"
+       { opts.set_yybackup     (lex_conf_string ()); return; }
+#line 2400 "src/parse/lex_conf.cc"
 yy544:
-       ++cur;
-#line 115 "../src/parse/lex_conf.re"
-       { opts.set_yycursor    (lex_conf_string ()); return; }
-#line 2404 "src/parse/lex_conf.cc"
-yy546:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy592;
+       if (yych == 'P') goto yy592;
        goto yy14;
-yy547:
+yy545:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy593;
+       if (yych == 'G') goto yy593;
        goto yy14;
-yy548:
+yy546:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy594;
+       if (yych == 'K') goto yy595;
        goto yy14;
+yy547:
+       ++cur;
+#line 116 "../src/parse/lex_conf.re"
+       { opts.set_yycursor    (lex_conf_string ()); return; }
+#line 2417 "src/parse/lex_conf.cc"
 yy549:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy595;
+       if (yych == 'a') goto yy596;
        goto yy14;
 yy550:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy596;
+       if (yych == 'e') goto yy597;
        goto yy14;
 yy551:
-       ++cur;
-#line 116 "../src/parse/lex_conf.re"
-       { opts.set_yymarker    (lex_conf_string ()); return; }
-#line 2429 "src/parse/lex_conf.cc"
-yy553:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy597;
+       if (yych == 'D') goto yy598;
        goto yy14;
-yy554:
+yy552:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy599;
+       if (yych == 'T') goto yy599;
        goto yy14;
-yy555:
+yy553:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy600;
+       if (yych == 'A') goto yy600;
        goto yy14;
+yy554:
+       ++cur;
+#line 117 "../src/parse/lex_conf.re"
+       { opts.set_yymarker    (lex_conf_string ()); return; }
+#line 2442 "src/parse/lex_conf.cc"
 yy556:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy601;
+       if (yych == 'E') goto yy601;
        goto yy14;
 yy557:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy602;
+       if (yych == 'D') goto yy603;
        goto yy14;
 yy558:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy603;
+       if (yych == 'T') goto yy604;
        goto yy14;
 yy559:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy604;
+       if (yych == 'r') goto yy605;
        goto yy14;
 yy560:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy605;
+       if (yych == 'n') goto yy606;
        goto yy14;
 yy561:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy606;
+       if (yych == 'r') goto yy607;
        goto yy14;
 yy562:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy607;
+       if (yych == 'g') goto yy608;
        goto yy14;
 yy563:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy608;
+       if (yych == 'p') goto yy609;
        goto yy14;
 yy564:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy609;
+       if (yych == 'n') goto yy610;
        goto yy14;
 yy565:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy610;
+       if (yych == 'i') goto yy611;
        goto yy14;
 yy566:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy611;
+       if (yych == 's') goto yy612;
        goto yy14;
 yy567:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy612;
+       if (yych == 'p') goto yy613;
        goto yy14;
 yy568:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy613;
+       if (yych == 'a') goto yy614;
        goto yy14;
 yy569:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy615;
+       if (yych == 's') goto yy615;
        goto yy14;
 yy570:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy616;
+       if (yych == 'i') goto yy616;
        goto yy14;
 yy571:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy617;
+       if (yych == 't') goto yy617;
        goto yy14;
 yy572:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy618;
+       if (yych == 'n') goto yy618;
        goto yy14;
 yy573:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy619;
+       if (yych == 'd') goto yy620;
        goto yy14;
 yy574:
-       ++cur;
-#line 98 "../src/parse/lex_conf.re"
-       { opts.set_bUseStateNext   (lex_conf_bool()); return; }
-#line 2518 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy621;
+       goto yy14;
+yy575:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy622;
+       goto yy14;
 yy576:
-       ++cur;
-#line 133 "../src/parse/lex_conf.re"
-       { opts.set_tags_expression(lex_conf_string ()); return; }
-#line 2523 "src/parse/lex_conf.cc"
-yy578:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy620;
+       if (yych == 's') goto yy623;
        goto yy14;
-yy579:
+yy577:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy621;
+       if (yych == 'e') goto yy624;
        goto yy14;
+yy578:
+       ++cur;
+#line 99 "../src/parse/lex_conf.re"
+       { opts.set_bUseStateNext   (lex_conf_bool()); return; }
+#line 2535 "src/parse/lex_conf.cc"
 yy580:
+       ++cur;
+#line 134 "../src/parse/lex_conf.re"
+       { opts.set_tags_expression(lex_conf_string ()); return; }
+#line 2540 "src/parse/lex_conf.cc"
+yy582:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy622;
+       if (yych == 'p') goto yy625;
        goto yy14;
-yy581:
+yy583:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy623;
+       if (yych == 'l') goto yy626;
        goto yy14;
-yy582:
-       ++cur;
-#line 151 "../src/parse/lex_conf.re"
-       { opts.set_yychConversion (lex_conf_bool()); return; }
-#line 2544 "src/parse/lex_conf.cc"
 yy584:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy624;
+       if (yych == 'l') goto yy627;
        goto yy14;
 yy585:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy626;
+       if (yych == 'e') goto yy628;
        goto yy14;
 yy586:
+       ++cur;
+#line 152 "../src/parse/lex_conf.re"
+       { opts.set_yychConversion (lex_conf_bool()); return; }
+#line 2561 "src/parse/lex_conf.cc"
+yy588:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy628;
+       if (yych == 'r') goto yy629;
        goto yy14;
-yy587:
+yy589:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy629;
+       if (yych == 'd') goto yy631;
        goto yy14;
-yy588:
+yy590:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy630;
+       if (yych == 'T') goto yy633;
        goto yy14;
-yy589:
-       ++cur;
-#line 128 "../src/parse/lex_conf.re"
-       { opts.set_yycopytag    (lex_conf_string ()); return; }
-#line 2569 "src/parse/lex_conf.cc"
 yy591:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy632;
+       if (yych == 'A') goto yy634;
        goto yy14;
 yy592:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy633;
+       if (yych == 'E') goto yy635;
        goto yy14;
 yy593:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy634;
-       goto yy14;
-yy594:
-       yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy636;
-       goto yy14;
+       ++cur;
+#line 129 "../src/parse/lex_conf.re"
+       { opts.set_yycopytag    (lex_conf_string ()); return; }
+#line 2586 "src/parse/lex_conf.cc"
 yy595:
        yych = (unsigned char)*++cur;
        if (yych == 'E') goto yy637;
        goto yy14;
 yy596:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy639;
+       if (yych == 'k') goto yy638;
        goto yy14;
 yy597:
-       yyaccept = 18;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'C') goto yy641;
-       if (yych == 'T') goto yy642;
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy639;
+       goto yy14;
 yy598:
-#line 125 "../src/parse/lex_conf.re"
-       { opts.set_yyrestore    (lex_conf_string ()); return; }
-#line 2602 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy641;
+       goto yy14;
 yy599:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy643;
+       if (yych == 'E') goto yy642;
        goto yy14;
 yy600:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy644;
+       if (yych == 'N') goto yy644;
        goto yy14;
 yy601:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy646;
-       goto yy14;
+       yyaccept = 18;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'C') goto yy646;
+       if (yych == 'T') goto yy647;
 yy602:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy647;
-       goto yy14;
+#line 126 "../src/parse/lex_conf.re"
+       { opts.set_yyrestore    (lex_conf_string ()); return; }
+#line 2619 "src/parse/lex_conf.cc"
 yy603:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy648;
+       if (yych == 'I') goto yy648;
        goto yy14;
 yy604:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy649;
+       if (yych == 'E') goto yy649;
        goto yy14;
 yy605:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy650;
+       if (yych == 's') goto yy651;
        goto yy14;
 yy606:
        yych = (unsigned char)*++cur;
-       if (yych == 'z') goto yy651;
+       if (yych == 's') goto yy652;
        goto yy14;
 yy607:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy652;
+       if (yych == 't') goto yy653;
        goto yy14;
 yy608:
        yych = (unsigned char)*++cur;
@@ -2641,585 +2642,610 @@ yy608:
        goto yy14;
 yy609:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy94;
+       if (yych == 'u') goto yy655;
        goto yy14;
 yy610:
        yych = (unsigned char)*++cur;
-       goto yy120;
+       if (yych == 'g') goto yy656;
+       goto yy14;
 yy611:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy655;
+       if (yych == 'z') goto yy658;
        goto yy14;
 yy612:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy656;
+       if (yych == 's') goto yy659;
        goto yy14;
 yy613:
-       ++cur;
-#line 58 "../src/parse/lex_conf.re"
-       { opts.set_version(!lex_conf_bool());          return; }
-#line 2662 "src/parse/lex_conf.cc"
-yy615:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy657;
+       if (yych == 'o') goto yy661;
        goto yy14;
-yy616:
+yy614:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy658;
+       if (yych == 'x') goto yy94;
        goto yy14;
-yy617:
+yy615:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy659;
-       goto yy14;
-yy618:
+       goto yy120;
+yy616:
        yych = (unsigned char)*++cur;
-       goto yy126;
-yy619:
+       if (yych == 'n') goto yy662;
+       goto yy14;
+yy617:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy660;
+       if (yych == 'i') goto yy663;
        goto yy14;
+yy618:
+       ++cur;
+#line 58 "../src/parse/lex_conf.re"
+       { opts.set_version(!lex_conf_bool());          return; }
+#line 2683 "src/parse/lex_conf.cc"
 yy620:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy662;
+       if (yych == 'i') goto yy664;
        goto yy14;
 yy621:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy664;
+       if (yych == 't') goto yy665;
        goto yy14;
 yy622:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy666;
+       if (yych == 'r') goto yy666;
        goto yy14;
 yy623:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy668;
-       goto yy14;
+       goto yy126;
 yy624:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy667;
+       goto yy14;
+yy625:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy669;
+       goto yy14;
+yy626:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy671;
+       goto yy14;
+yy627:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy673;
+       goto yy14;
+yy628:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy675;
+       goto yy14;
+yy629:
        ++cur;
-#line 157 "../src/parse/lex_conf.re"
+#line 158 "../src/parse/lex_conf.re"
        { opts.set_fill_arg_use (lex_conf_bool()); return; }
-#line 2702 "src/parse/lex_conf.cc"
-yy626:
+#line 2723 "src/parse/lex_conf.cc"
+yy631:
        ++cur;
-#line 85 "../src/parse/lex_conf.re"
+#line 86 "../src/parse/lex_conf.re"
        { opts.set_condDividerParam (lex_conf_string ()); return; }
-#line 2707 "src/parse/lex_conf.cc"
-yy628:
+#line 2728 "src/parse/lex_conf.cc"
+yy633:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy670;
+       if (yych == 'X') goto yy677;
        goto yy14;
-yy629:
+yy634:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy672;
+       if (yych == 'G') goto yy679;
        goto yy14;
-yy630:
+yy635:
        ++cur;
-#line 76 "../src/parse/lex_conf.re"
+#line 77 "../src/parse/lex_conf.re"
        { opts.set_yycondtype       (lex_conf_string ()); return; }
-#line 2720 "src/parse/lex_conf.cc"
-yy632:
+#line 2741 "src/parse/lex_conf.cc"
+yy637:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy674;
+       if (yych == 'R') goto yy681;
        goto yy14;
-yy633:
+yy638:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy676;
+       if (yych == 'e') goto yy683;
        goto yy14;
-yy634:
+yy639:
        ++cur;
-#line 156 "../src/parse/lex_conf.re"
+#line 157 "../src/parse/lex_conf.re"
        { opts.set_fill_arg     (lex_conf_string ()); return; }
-#line 2733 "src/parse/lex_conf.cc"
-yy636:
+#line 2754 "src/parse/lex_conf.cc"
+yy641:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy677;
+       if (yych == 'T') goto yy684;
        goto yy14;
-yy637:
+yy642:
        yyaccept = 19;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy678;
-yy638:
-#line 90 "../src/parse/lex_conf.re"
+       if (yych == ':') goto yy685;
+yy643:
+#line 91 "../src/parse/lex_conf.re"
        { opts.set_state_get       (lex_conf_string ()); return; }
-#line 2745 "src/parse/lex_conf.cc"
-yy639:
+#line 2766 "src/parse/lex_conf.cc"
+yy644:
        ++cur;
-#line 129 "../src/parse/lex_conf.re"
+#line 130 "../src/parse/lex_conf.re"
        { opts.set_yylessthan   (lex_conf_string ()); return; }
-#line 2750 "src/parse/lex_conf.cc"
-yy641:
+#line 2771 "src/parse/lex_conf.cc"
+yy646:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy679;
+       if (yych == 'T') goto yy686;
        goto yy14;
-yy642:
+yy647:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy680;
+       if (yych == 'A') goto yy687;
        goto yy14;
-yy643:
+yy648:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy681;
+       if (yych == 'T') goto yy688;
        goto yy14;
-yy644:
+yy649:
        yyaccept = 20;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy682;
-       if (yych == '@') goto yy683;
-yy645:
-#line 92 "../src/parse/lex_conf.re"
+       if (yych == ':') goto yy689;
+       if (yych == '@') goto yy690;
+yy650:
+#line 93 "../src/parse/lex_conf.re"
        { opts.set_state_set       (lex_conf_string ()); return; }
-#line 2771 "src/parse/lex_conf.cc"
-yy646:
+#line 2792 "src/parse/lex_conf.cc"
+yy651:
        yych = (unsigned char)*++cur;
        goto yy101;
-yy647:
+yy652:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy684;
+       if (yych == 'i') goto yy691;
        goto yy14;
-yy648:
+yy653:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy685;
+       if (yych == 'e') goto yy692;
        goto yy14;
-yy649:
+yy654:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy686;
+       if (yych == 't') goto yy693;
        goto yy14;
-yy650:
+yy655:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy687;
+       if (yych == 't') goto yy694;
        goto yy14;
-yy651:
+yy656:
+       ++cur;
+#line 75 "../src/parse/lex_conf.re"
+       { lex_conf_dfa_mapping();      return; }
+#line 2816 "src/parse/lex_conf.cc"
+yy658:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy688;
+       if (yych == 'a') goto yy695;
        goto yy14;
-yy652:
+yy659:
        ++cur;
 #line 73 "../src/parse/lex_conf.re"
        { lex_conf_empty_class();      return; }
-#line 2799 "src/parse/lex_conf.cc"
-yy654:
+#line 2825 "src/parse/lex_conf.cc"
+yy661:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy689;
+       if (yych == 'l') goto yy696;
        goto yy14;
-yy655:
+yy662:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy690;
+       if (yych == 'f') goto yy697;
        goto yy14;
-yy656:
+yy663:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy691;
+       if (yych == 'o') goto yy698;
        goto yy14;
-yy657:
+yy664:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy692;
+       if (yych == 't') goto yy699;
        goto yy14;
-yy658:
+yy665:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy693;
+       if (yych == 'a') goto yy700;
        goto yy14;
-yy659:
+yy666:
        yych = (unsigned char)*++cur;
        goto yy122;
-yy660:
+yy667:
        ++cur;
-#line 95 "../src/parse/lex_conf.re"
+#line 96 "../src/parse/lex_conf.re"
        { opts.set_yyfilllabel     (lex_conf_string ()); return; }
-#line 2827 "src/parse/lex_conf.cc"
-yy662:
+#line 2853 "src/parse/lex_conf.cc"
+yy669:
        ++cur;
-#line 99 "../src/parse/lex_conf.re"
+#line 100 "../src/parse/lex_conf.re"
        { opts.set_yyaccept        (lex_conf_string ()); return; }
-#line 2832 "src/parse/lex_conf.cc"
-yy664:
+#line 2858 "src/parse/lex_conf.cc"
+yy671:
        ++cur;
-#line 88 "../src/parse/lex_conf.re"
+#line 89 "../src/parse/lex_conf.re"
        { opts.set_yyctable         (lex_conf_string ()); return; }
-#line 2837 "src/parse/lex_conf.cc"
-yy666:
+#line 2863 "src/parse/lex_conf.cc"
+yy673:
        ++cur;
-#line 168 "../src/parse/lex_conf.re"
+#line 169 "../src/parse/lex_conf.re"
        { lex_conf_string (); return; }
-#line 2842 "src/parse/lex_conf.cc"
-yy668:
+#line 2868 "src/parse/lex_conf.cc"
+yy675:
        ++cur;
-#line 113 "../src/parse/lex_conf.re"
+#line 114 "../src/parse/lex_conf.re"
        { opts.set_yytarget (lex_conf_string ()); return; }
-#line 2847 "src/parse/lex_conf.cc"
-yy670:
+#line 2873 "src/parse/lex_conf.cc"
+yy677:
        ++cur;
-#line 123 "../src/parse/lex_conf.re"
+#line 124 "../src/parse/lex_conf.re"
        { opts.set_yybackupctx  (lex_conf_string ()); return; }
-#line 2852 "src/parse/lex_conf.cc"
-yy672:
+#line 2878 "src/parse/lex_conf.cc"
+yy679:
        ++cur;
-#line 124 "../src/parse/lex_conf.re"
+#line 125 "../src/parse/lex_conf.re"
        { opts.set_yybackuptag  (lex_conf_string ()); return; }
-#line 2857 "src/parse/lex_conf.cc"
-yy674:
+#line 2883 "src/parse/lex_conf.cc"
+yy681:
        ++cur;
-#line 117 "../src/parse/lex_conf.re"
+#line 118 "../src/parse/lex_conf.re"
        { opts.set_yyctxmarker (lex_conf_string ()); return; }
-#line 2862 "src/parse/lex_conf.cc"
-yy676:
-       yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy694;
-       goto yy14;
-yy677:
-       yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy696;
-       goto yy14;
-yy678:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy697;
-       goto yy14;
-yy679:
-       yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy698;
-       goto yy14;
-yy680:
-       yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy700;
-       goto yy14;
-yy681:
-       yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy702;
-       goto yy14;
-yy682:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy703;
-       goto yy14;
+#line 2888 "src/parse/lex_conf.cc"
 yy683:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy704;
+       if (yych == 'd') goto yy701;
        goto yy14;
 yy684:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy705;
+       if (yych == 'I') goto yy703;
        goto yy14;
 yy685:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy706;
+       if (yych == 'n') goto yy704;
        goto yy14;
 yy686:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy708;
+       if (yych == 'X') goto yy705;
        goto yy14;
 yy687:
        yych = (unsigned char)*++cur;
-       goto yy105;
+       if (yych == 'G') goto yy707;
+       goto yy14;
 yy688:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy709;
+       if (yych == 'I') goto yy709;
        goto yy14;
 yy689:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy710;
+       if (yych == 'n') goto yy710;
        goto yy14;
 yy690:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy711;
+       if (yych == 's') goto yy711;
        goto yy14;
 yy691:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy712;
+       if (yych == 't') goto yy712;
        goto yy14;
 yy692:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy713;
+       if (yych == 'd') goto yy713;
        goto yy14;
 yy693:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy714;
+       if (yych == 'o') goto yy715;
        goto yy14;
 yy694:
-       ++cur;
-#line 158 "../src/parse/lex_conf.re"
-       { opts.set_fill_naked   (lex_conf_bool()); return; }
-#line 2938 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       goto yy105;
+yy695:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy716;
+       goto yy14;
 yy696:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy715;
+       if (yych == 'i') goto yy717;
        goto yy14;
 yy697:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy716;
+       if (yych == 'o') goto yy718;
        goto yy14;
 yy698:
-       ++cur;
-#line 126 "../src/parse/lex_conf.re"
-       { opts.set_yyrestorectx (lex_conf_string ()); return; }
-#line 2951 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy719;
+       goto yy14;
+yy699:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy720;
+       goto yy14;
 yy700:
-       ++cur;
-#line 127 "../src/parse/lex_conf.re"
-       { opts.set_yyrestoretag (lex_conf_string ()); return; }
-#line 2956 "src/parse/lex_conf.cc"
-yy702:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy717;
+       if (yych == 't') goto yy721;
        goto yy14;
+yy701:
+       ++cur;
+#line 159 "../src/parse/lex_conf.re"
+       { opts.set_fill_naked   (lex_conf_bool()); return; }
+#line 2964 "src/parse/lex_conf.cc"
 yy703:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy718;
+       if (yych == 'O') goto yy722;
        goto yy14;
 yy704:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy719;
+       if (yych == 'a') goto yy723;
        goto yy14;
 yy705:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy720;
-       goto yy14;
-yy706:
        ++cur;
-#line 60 "../src/parse/lex_conf.re"
-       { opts.set_bCaseInverted(lex_conf_bool());     return; }
+#line 127 "../src/parse/lex_conf.re"
+       { opts.set_yyrestorectx (lex_conf_string ()); return; }
 #line 2977 "src/parse/lex_conf.cc"
-yy708:
-       yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy110;
-       goto yy14;
+yy707:
+       ++cur;
+#line 128 "../src/parse/lex_conf.re"
+       { opts.set_yyrestoretag (lex_conf_string ()); return; }
+#line 2982 "src/parse/lex_conf.cc"
 yy709:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy721;
+       if (yych == 'O') goto yy724;
        goto yy14;
 yy710:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy722;
+       if (yych == 'a') goto yy725;
        goto yy14;
 yy711:
        yych = (unsigned char)*++cur;
-       goto yy113;
+       if (yych == 't') goto yy726;
+       goto yy14;
 yy712:
        yych = (unsigned char)*++cur;
-       if (yych == '-') goto yy723;
+       if (yych == 'i') goto yy727;
        goto yy14;
 yy713:
-       yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy724;
-       goto yy14;
-yy714:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy725;
-       goto yy14;
+       ++cur;
+#line 60 "../src/parse/lex_conf.re"
+       { opts.set_bCaseInverted(lex_conf_bool());     return; }
+#line 3003 "src/parse/lex_conf.cc"
 yy715:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy726;
+       if (yych == 's') goto yy110;
        goto yy14;
 yy716:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy728;
+       if (yych == 'i') goto yy728;
        goto yy14;
 yy717:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy729;
+       if (yych == 'c') goto yy729;
        goto yy14;
 yy718:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy731;
-       goto yy14;
+       goto yy113;
 yy719:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy732;
+       if (yych == '-') goto yy730;
        goto yy14;
 yy720:
        yych = (unsigned char)*++cur;
-       if (yych == 'v') goto yy733;
+       if (yych == 'o') goto yy731;
        goto yy14;
 yy721:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy734;
+       if (yych == 'e') goto yy732;
        goto yy14;
 yy722:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy735;
+       if (yych == 'N') goto yy733;
        goto yy14;
 yy723:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy737;
+       if (yych == 'k') goto yy735;
        goto yy14;
 yy724:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy738;
+       if (yych == 'N') goto yy736;
        goto yy14;
 yy725:
        yych = (unsigned char)*++cur;
-       goto yy109;
+       if (yych == 'k') goto yy738;
+       goto yy14;
 yy726:
-       yyaccept = 21;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy739;
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy739;
+       goto yy14;
 yy727:
-#line 77 "../src/parse/lex_conf.re"
-       { opts.set_cond_get         (lex_conf_string ()); return; }
-#line 3055 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'v') goto yy740;
+       goto yy14;
 yy728:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy740;
+       if (yych == 'o') goto yy741;
        goto yy14;
 yy729:
-       yyaccept = 22;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy741;
-       if (yych == '@') goto yy742;
+       yych = (unsigned char)*++cur;
+       if (yych == 'y') goto yy742;
+       goto yy14;
 yy730:
-#line 79 "../src/parse/lex_conf.re"
-       { opts.set_cond_set         (lex_conf_string ()); return; }
-#line 3068 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy744;
+       goto yy14;
 yy731:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy743;
+       if (yych == 'n') goto yy745;
        goto yy14;
 yy732:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy744;
-       goto yy14;
+       goto yy109;
 yy733:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy745;
-       goto yy14;
+       yyaccept = 21;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == ':') goto yy746;
 yy734:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy747;
-       goto yy14;
+#line 78 "../src/parse/lex_conf.re"
+       { opts.set_cond_get         (lex_conf_string ()); return; }
+#line 3081 "src/parse/lex_conf.cc"
 yy735:
-       ++cur;
-#line 71 "../src/parse/lex_conf.re"
-       { lex_conf_encoding_policy();  return; }
-#line 3089 "src/parse/lex_conf.cc"
-yy737:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy749;
+       if (yych == 'e') goto yy747;
        goto yy14;
+yy736:
+       yyaccept = 22;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == ':') goto yy748;
+       if (yych == '@') goto yy749;
+yy737:
+#line 80 "../src/parse/lex_conf.re"
+       { opts.set_cond_set         (lex_conf_string ()); return; }
+#line 3094 "src/parse/lex_conf.cc"
 yy738:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy750;
+       if (yych == 'e') goto yy750;
        goto yy14;
 yy739:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy751;
+       if (yych == 't') goto yy751;
        goto yy14;
 yy740:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy752;
+       if (yych == 'e') goto yy752;
        goto yy14;
 yy741:
        yych = (unsigned char)*++cur;
        if (yych == 'n') goto yy754;
        goto yy14;
 yy742:
+       ++cur;
+#line 71 "../src/parse/lex_conf.re"
+       { lex_conf_encoding_policy();  return; }
+#line 3115 "src/parse/lex_conf.cc"
+yy744:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy755;
+       if (yych == 'a') goto yy756;
        goto yy14;
-yy743:
+yy745:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy756;
+       if (yych == 's') goto yy757;
        goto yy14;
-yy744:
+yy746:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy758;
+       if (yych == 'n') goto yy758;
        goto yy14;
-yy745:
+yy747:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy759;
+       goto yy14;
+yy748:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy761;
+       goto yy14;
+yy749:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy762;
+       goto yy14;
+yy750:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy763;
+       goto yy14;
+yy751:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy765;
+       goto yy14;
+yy752:
        ++cur;
 #line 59 "../src/parse/lex_conf.re"
        { opts.set_bCaseInsensitive(lex_conf_bool());  return; }
-#line 3126 "src/parse/lex_conf.cc"
-yy747:
+#line 3152 "src/parse/lex_conf.cc"
+yy754:
        ++cur;
 #line 74 "../src/parse/lex_conf.re"
        { lex_conf_dfa_minimization(); return; }
-#line 3131 "src/parse/lex_conf.cc"
-yy749:
+#line 3157 "src/parse/lex_conf.cc"
+yy756:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy760;
+       if (yych == 't') goto yy767;
        goto yy14;
-yy750:
+yy757:
        yych = (unsigned char)*++cur;
        goto yy103;
-yy751:
+yy758:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy761;
+       if (yych == 'a') goto yy768;
        goto yy14;
-yy752:
+yy759:
        ++cur;
-#line 91 "../src/parse/lex_conf.re"
+#line 92 "../src/parse/lex_conf.re"
        { opts.set_state_get_naked (lex_conf_bool()); return; }
-#line 3147 "src/parse/lex_conf.cc"
-yy754:
+#line 3173 "src/parse/lex_conf.cc"
+yy761:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy762;
+       if (yych == 'a') goto yy769;
        goto yy14;
-yy755:
+yy762:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy763;
+       if (yych == 'o') goto yy770;
        goto yy14;
-yy756:
+yy763:
        ++cur;
-#line 93 "../src/parse/lex_conf.re"
+#line 94 "../src/parse/lex_conf.re"
        { opts.set_state_set_naked (lex_conf_bool()); return; }
-#line 3160 "src/parse/lex_conf.cc"
-yy758:
+#line 3186 "src/parse/lex_conf.cc"
+yy765:
        ++cur;
-#line 94 "../src/parse/lex_conf.re"
+#line 95 "../src/parse/lex_conf.re"
        { opts.set_state_set_arg   (lex_conf_string ()); return; }
-#line 3165 "src/parse/lex_conf.cc"
-yy760:
+#line 3191 "src/parse/lex_conf.cc"
+yy767:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy764;
+       if (yych == 'e') goto yy771;
        goto yy14;
-yy761:
+yy768:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy766;
+       if (yych == 'k') goto yy773;
        goto yy14;
-yy762:
+yy769:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy767;
+       if (yych == 'k') goto yy774;
        goto yy14;
-yy763:
+yy770:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy768;
+       if (yych == 'n') goto yy775;
        goto yy14;
-yy764:
+yy771:
        ++cur;
 #line 57 "../src/parse/lex_conf.re"
        { opts.set_bNoGenerationDate(lex_conf_bool()); return; }
-#line 3186 "src/parse/lex_conf.cc"
-yy766:
+#line 3212 "src/parse/lex_conf.cc"
+yy773:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy769;
+       if (yych == 'e') goto yy776;
        goto yy14;
-yy767:
+yy774:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy770;
+       if (yych == 'e') goto yy777;
        goto yy14;
-yy768:
+yy775:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy771;
+       if (yych == 'd') goto yy778;
        goto yy14;
-yy769:
+yy776:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy773;
+       if (yych == 'd') goto yy780;
        goto yy14;
-yy770:
+yy777:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy775;
+       if (yych == 'd') goto yy782;
        goto yy14;
-yy771:
+yy778:
        ++cur;
-#line 80 "../src/parse/lex_conf.re"
+#line 81 "../src/parse/lex_conf.re"
        { opts.set_cond_set_arg     (lex_conf_string ()); return; }
-#line 3211 "src/parse/lex_conf.cc"
-yy773:
+#line 3237 "src/parse/lex_conf.cc"
+yy780:
        ++cur;
-#line 78 "../src/parse/lex_conf.re"
+#line 79 "../src/parse/lex_conf.re"
        { opts.set_cond_get_naked   (lex_conf_bool()); return; }
-#line 3216 "src/parse/lex_conf.cc"
-yy775:
+#line 3242 "src/parse/lex_conf.cc"
+yy782:
        ++cur;
-#line 81 "../src/parse/lex_conf.re"
+#line 82 "../src/parse/lex_conf.re"
        { opts.set_cond_set_naked   (lex_conf_bool()); return; }
-#line 3221 "src/parse/lex_conf.cc"
+#line 3247 "src/parse/lex_conf.cc"
 }
-#line 169 "../src/parse/lex_conf.re"
+#line 170 "../src/parse/lex_conf.re"
 
 }
 
@@ -3227,102 +3253,102 @@ void Scanner::lex_conf_encoding_policy()
 {
        lex_conf_assign ();
 
-#line 3231 "src/parse/lex_conf.cc"
+#line 3257 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 10) fill(10);
        yych = (unsigned char)*cur;
        if (yych <= 'h') {
-               if (yych == 'f') goto yy781;
+               if (yych == 'f') goto yy788;
        } else {
-               if (yych <= 'i') goto yy782;
-               if (yych == 's') goto yy783;
+               if (yych <= 'i') goto yy789;
+               if (yych == 's') goto yy790;
        }
        ++cur;
-yy780:
-#line 176 "../src/parse/lex_conf.re"
+yy787:
+#line 177 "../src/parse/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'ignore', 'substitute', 'fail')"); }
-#line 3247 "src/parse/lex_conf.cc"
-yy781:
+#line 3273 "src/parse/lex_conf.cc"
+yy788:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'a') goto yy784;
-       goto yy780;
-yy782:
+       if (yych == 'a') goto yy791;
+       goto yy787;
+yy789:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'g') goto yy786;
-       goto yy780;
-yy783:
+       if (yych == 'g') goto yy793;
+       goto yy787;
+yy790:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'u') goto yy787;
-       goto yy780;
-yy784:
+       if (yych == 'u') goto yy794;
+       goto yy787;
+yy791:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy788;
-yy785:
+       if (yych == 'i') goto yy795;
+yy792:
        cur = ptr;
-       goto yy780;
-yy786:
+       goto yy787;
+yy793:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy789;
-       goto yy785;
-yy787:
+       if (yych == 'n') goto yy796;
+       goto yy792;
+yy794:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy790;
-       goto yy785;
-yy788:
+       if (yych == 'b') goto yy797;
+       goto yy792;
+yy795:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy791;
-       goto yy785;
-yy789:
+       if (yych == 'l') goto yy798;
+       goto yy792;
+yy796:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy793;
-       goto yy785;
-yy790:
+       if (yych == 'o') goto yy800;
+       goto yy792;
+yy797:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy794;
-       goto yy785;
-yy791:
+       if (yych == 's') goto yy801;
+       goto yy792;
+yy798:
        ++cur;
-#line 180 "../src/parse/lex_conf.re"
+#line 181 "../src/parse/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_FAIL);       goto end; }
-#line 3290 "src/parse/lex_conf.cc"
-yy793:
+#line 3316 "src/parse/lex_conf.cc"
+yy800:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy795;
-       goto yy785;
-yy794:
+       if (yych == 'r') goto yy802;
+       goto yy792;
+yy801:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy796;
-       goto yy785;
-yy795:
+       if (yych == 't') goto yy803;
+       goto yy792;
+yy802:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy797;
-       goto yy785;
-yy796:
+       if (yych == 'e') goto yy804;
+       goto yy792;
+yy803:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy799;
-       goto yy785;
-yy797:
+       if (yych == 'i') goto yy806;
+       goto yy792;
+yy804:
        ++cur;
-#line 178 "../src/parse/lex_conf.re"
+#line 179 "../src/parse/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_IGNORE);     goto end; }
-#line 3311 "src/parse/lex_conf.cc"
-yy799:
+#line 3337 "src/parse/lex_conf.cc"
+yy806:
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy785;
+       if (yych != 't') goto yy792;
        yych = (unsigned char)*++cur;
-       if (yych != 'u') goto yy785;
+       if (yych != 'u') goto yy792;
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy785;
+       if (yych != 't') goto yy792;
        yych = (unsigned char)*++cur;
-       if (yych != 'e') goto yy785;
+       if (yych != 'e') goto yy792;
        ++cur;
-#line 179 "../src/parse/lex_conf.re"
+#line 180 "../src/parse/lex_conf.re"
        { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); goto end; }
-#line 3324 "src/parse/lex_conf.cc"
+#line 3350 "src/parse/lex_conf.cc"
 }
-#line 181 "../src/parse/lex_conf.re"
+#line 182 "../src/parse/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3332,77 +3358,77 @@ void Scanner::lex_conf_input()
 {
        lex_conf_assign ();
 
-#line 3336 "src/parse/lex_conf.cc"
+#line 3362 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 7) fill(7);
        yych = (unsigned char)*cur;
-       if (yych <= 'b') goto yy807;
-       if (yych <= 'c') goto yy809;
-       if (yych <= 'd') goto yy810;
-yy807:
+       if (yych <= 'b') goto yy814;
+       if (yych <= 'c') goto yy816;
+       if (yych <= 'd') goto yy817;
+yy814:
        ++cur;
-yy808:
-#line 190 "../src/parse/lex_conf.re"
+yy815:
+#line 191 "../src/parse/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'default', 'custom')"); }
-#line 3350 "src/parse/lex_conf.cc"
-yy809:
+#line 3376 "src/parse/lex_conf.cc"
+yy816:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'u') goto yy811;
-       goto yy808;
-yy810:
+       if (yych == 'u') goto yy818;
+       goto yy815;
+yy817:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'e') goto yy813;
-       goto yy808;
-yy811:
+       if (yych == 'e') goto yy820;
+       goto yy815;
+yy818:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy814;
-yy812:
+       if (yych == 's') goto yy821;
+yy819:
        cur = ptr;
-       goto yy808;
-yy813:
+       goto yy815;
+yy820:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy815;
-       goto yy812;
-yy814:
+       if (yych == 'f') goto yy822;
+       goto yy819;
+yy821:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy816;
-       goto yy812;
-yy815:
+       if (yych == 't') goto yy823;
+       goto yy819;
+yy822:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy817;
-       goto yy812;
-yy816:
+       if (yych == 'a') goto yy824;
+       goto yy819;
+yy823:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy818;
-       goto yy812;
-yy817:
+       if (yych == 'o') goto yy825;
+       goto yy819;
+yy824:
        yych = (unsigned char)*++cur;
-       if (yych == 'u') goto yy819;
-       goto yy812;
-yy818:
+       if (yych == 'u') goto yy826;
+       goto yy819;
+yy825:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy820;
-       goto yy812;
-yy819:
+       if (yych == 'm') goto yy827;
+       goto yy819;
+yy826:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy822;
-       goto yy812;
-yy820:
+       if (yych == 'l') goto yy829;
+       goto yy819;
+yy827:
        ++cur;
-#line 193 "../src/parse/lex_conf.re"
+#line 194 "../src/parse/lex_conf.re"
        { opts.set_input_api(InputAPI::CUSTOM);  goto end; }
-#line 3397 "src/parse/lex_conf.cc"
-yy822:
+#line 3423 "src/parse/lex_conf.cc"
+yy829:
        yych = (unsigned char)*++cur;
-       if (yych != 't') goto yy812;
+       if (yych != 't') goto yy819;
        ++cur;
-#line 192 "../src/parse/lex_conf.re"
+#line 193 "../src/parse/lex_conf.re"
        { opts.set_input_api(InputAPI::DEFAULT); goto end; }
-#line 3404 "src/parse/lex_conf.cc"
+#line 3430 "src/parse/lex_conf.cc"
 }
-#line 194 "../src/parse/lex_conf.re"
+#line 195 "../src/parse/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3412,105 +3438,105 @@ void Scanner::lex_conf_empty_class()
 {
        lex_conf_assign ();
 
-#line 3416 "src/parse/lex_conf.cc"
+#line 3442 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 11) fill(11);
        yych = (unsigned char)*cur;
-       if (yych == 'e') goto yy829;
-       if (yych == 'm') goto yy830;
+       if (yych == 'e') goto yy836;
+       if (yych == 'm') goto yy837;
        ++cur;
-yy828:
-#line 203 "../src/parse/lex_conf.re"
+yy835:
+#line 204 "../src/parse/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'match-empty', 'match-none', 'error')"); }
-#line 3428 "src/parse/lex_conf.cc"
-yy829:
+#line 3454 "src/parse/lex_conf.cc"
+yy836:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'r') goto yy831;
-       goto yy828;
-yy830:
+       if (yych == 'r') goto yy838;
+       goto yy835;
+yy837:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'a') goto yy833;
-       goto yy828;
-yy831:
+       if (yych == 'a') goto yy840;
+       goto yy835;
+yy838:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy834;
-yy832:
+       if (yych == 'r') goto yy841;
+yy839:
        cur = ptr;
-       goto yy828;
-yy833:
+       goto yy835;
+yy840:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy835;
-       goto yy832;
-yy834:
+       if (yych == 't') goto yy842;
+       goto yy839;
+yy841:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy836;
-       goto yy832;
-yy835:
+       if (yych == 'o') goto yy843;
+       goto yy839;
+yy842:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy837;
-       goto yy832;
-yy836:
+       if (yych == 'c') goto yy844;
+       goto yy839;
+yy843:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy838;
-       goto yy832;
-yy837:
+       if (yych == 'r') goto yy845;
+       goto yy839;
+yy844:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy840;
-       goto yy832;
-yy838:
+       if (yych == 'h') goto yy847;
+       goto yy839;
+yy845:
        ++cur;
-#line 207 "../src/parse/lex_conf.re"
+#line 208 "../src/parse/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_ERROR);       goto end; }
-#line 3467 "src/parse/lex_conf.cc"
-yy840:
+#line 3493 "src/parse/lex_conf.cc"
+yy847:
        yych = (unsigned char)*++cur;
-       if (yych != '-') goto yy832;
+       if (yych != '-') goto yy839;
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy842;
-       if (yych == 'n') goto yy843;
-       goto yy832;
-yy842:
+       if (yych == 'e') goto yy849;
+       if (yych == 'n') goto yy850;
+       goto yy839;
+yy849:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy844;
-       goto yy832;
-yy843:
+       if (yych == 'm') goto yy851;
+       goto yy839;
+yy850:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy845;
-       goto yy832;
-yy844:
+       if (yych == 'o') goto yy852;
+       goto yy839;
+yy851:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy846;
-       goto yy832;
-yy845:
+       if (yych == 'p') goto yy853;
+       goto yy839;
+yy852:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy847;
-       goto yy832;
-yy846:
+       if (yych == 'n') goto yy854;
+       goto yy839;
+yy853:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy848;
-       goto yy832;
-yy847:
+       if (yych == 't') goto yy855;
+       goto yy839;
+yy854:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy849;
-       goto yy832;
-yy848:
+       if (yych == 'e') goto yy856;
+       goto yy839;
+yy855:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy851;
-       goto yy832;
-yy849:
+       if (yych == 'y') goto yy858;
+       goto yy839;
+yy856:
        ++cur;
-#line 206 "../src/parse/lex_conf.re"
+#line 207 "../src/parse/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE);  goto end; }
-#line 3507 "src/parse/lex_conf.cc"
-yy851:
+#line 3533 "src/parse/lex_conf.cc"
+yy858:
        ++cur;
-#line 205 "../src/parse/lex_conf.re"
+#line 206 "../src/parse/lex_conf.re"
        { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); goto end; }
-#line 3512 "src/parse/lex_conf.cc"
+#line 3538 "src/parse/lex_conf.cc"
 }
-#line 208 "../src/parse/lex_conf.re"
+#line 209 "../src/parse/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3520,65 +3546,165 @@ void Scanner::lex_conf_dfa_minimization()
 {
        lex_conf_assign ();
 
-#line 3524 "src/parse/lex_conf.cc"
+#line 3550 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        if ((lim - cur) < 5) fill(5);
        yych = (unsigned char)*cur;
-       if (yych == 'm') goto yy857;
-       if (yych == 't') goto yy858;
+       if (yych == 'm') goto yy864;
+       if (yych == 't') goto yy865;
        ++cur;
-yy856:
-#line 217 "../src/parse/lex_conf.re"
+yy863:
+#line 218 "../src/parse/lex_conf.re"
        { fatal("bad configuration value"
                " (expected: 'table', 'moore')"); }
-#line 3536 "src/parse/lex_conf.cc"
-yy857:
+#line 3562 "src/parse/lex_conf.cc"
+yy864:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'o') goto yy859;
-       goto yy856;
-yy858:
+       if (yych == 'o') goto yy866;
+       goto yy863;
+yy865:
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'a') goto yy861;
-       goto yy856;
-yy859:
+       if (yych == 'a') goto yy868;
+       goto yy863;
+yy866:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy862;
-yy860:
+       if (yych == 'o') goto yy869;
+yy867:
        cur = ptr;
-       goto yy856;
-yy861:
+       goto yy863;
+yy868:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy863;
-       goto yy860;
-yy862:
+       if (yych == 'b') goto yy870;
+       goto yy867;
+yy869:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy864;
-       goto yy860;
-yy863:
+       if (yych == 'r') goto yy871;
+       goto yy867;
+yy870:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy865;
-       goto yy860;
-yy864:
+       if (yych == 'l') goto yy872;
+       goto yy867;
+yy871:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy866;
-       goto yy860;
-yy865:
+       if (yych == 'e') goto yy873;
+       goto yy867;
+yy872:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy868;
-       goto yy860;
-yy866:
+       if (yych == 'e') goto yy875;
+       goto yy867;
+yy873:
        ++cur;
-#line 220 "../src/parse/lex_conf.re"
+#line 221 "../src/parse/lex_conf.re"
        { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); goto end; }
-#line 3575 "src/parse/lex_conf.cc"
-yy868:
+#line 3601 "src/parse/lex_conf.cc"
+yy875:
        ++cur;
-#line 219 "../src/parse/lex_conf.re"
+#line 220 "../src/parse/lex_conf.re"
        { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); goto end; }
-#line 3580 "src/parse/lex_conf.cc"
+#line 3606 "src/parse/lex_conf.cc"
 }
-#line 221 "../src/parse/lex_conf.re"
+#line 222 "../src/parse/lex_conf.re"
+
+end:
+       lex_conf_semicolon();
+}
+
+void Scanner::lex_conf_dfa_mapping()
+{
+       lex_conf_assign ();
+
+#line 3618 "src/parse/lex_conf.cc"
+{
+       unsigned char yych;
+       if ((lim - cur) < 9) fill(9);
+       yych = (unsigned char)*cur;
+       if (yych == 'b') goto yy881;
+       if (yych == 'i') goto yy882;
+       ++cur;
+yy880:
+#line 231 "../src/parse/lex_conf.re"
+       { fatal("bad configuration value"
+               " (expected: 'bijective', 'injective')"); }
+#line 3630 "src/parse/lex_conf.cc"
+yy881:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'i') goto yy883;
+       goto yy880;
+yy882:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'n') goto yy885;
+       goto yy880;
+yy883:
+       yych = (unsigned char)*++cur;
+       if (yych == 'j') goto yy886;
+yy884:
+       cur = ptr;
+       goto yy880;
+yy885:
+       yych = (unsigned char)*++cur;
+       if (yych == 'j') goto yy887;
+       goto yy884;
+yy886:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy888;
+       goto yy884;
+yy887:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy889;
+       goto yy884;
+yy888:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy890;
+       goto yy884;
+yy889:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy891;
+       goto yy884;
+yy890:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy892;
+       goto yy884;
+yy891:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy893;
+       goto yy884;
+yy892:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy894;
+       goto yy884;
+yy893:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy895;
+       goto yy884;
+yy894:
+       yych = (unsigned char)*++cur;
+       if (yych == 'v') goto yy896;
+       goto yy884;
+yy895:
+       yych = (unsigned char)*++cur;
+       if (yych == 'v') goto yy897;
+       goto yy884;
+yy896:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy898;
+       goto yy884;
+yy897:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy900;
+       goto yy884;
+yy898:
+       ++cur;
+#line 233 "../src/parse/lex_conf.re"
+       { opts.set_dfa_mapping(mapping_t::BIJECTIVE); goto end; }
+#line 3701 "src/parse/lex_conf.cc"
+yy900:
+       ++cur;
+#line 234 "../src/parse/lex_conf.re"
+       { opts.set_dfa_mapping(mapping_t::INJECTIVE); goto end; }
+#line 3706 "src/parse/lex_conf.cc"
+}
+#line 235 "../src/parse/lex_conf.re"
 
 end:
        lex_conf_semicolon();
@@ -3599,7 +3725,7 @@ void Scanner::lex_conf_enc(Enc::type_t enc)
 void Scanner::lex_conf_assign ()
 {
 
-#line 3603 "src/parse/lex_conf.cc"
+#line 3729 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3639,56 +3765,56 @@ void Scanner::lex_conf_assign ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy874;
+               if (yych == '\t') goto yy906;
        } else {
-               if (yych <= ' ') goto yy874;
-               if (yych == '=') goto yy875;
+               if (yych <= ' ') goto yy906;
+               if (yych == '=') goto yy907;
        }
        ++cur;
-yy873:
-#line 241 "../src/parse/lex_conf.re"
+yy905:
+#line 255 "../src/parse/lex_conf.re"
        { fatal ("missing '=' in configuration"); }
-#line 3652 "src/parse/lex_conf.cc"
-yy874:
+#line 3778 "src/parse/lex_conf.cc"
+yy906:
        yych = (unsigned char)*(ptr = ++cur);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy878;
-               goto yy873;
+               if (yych == '\t') goto yy910;
+               goto yy905;
        } else {
-               if (yych <= ' ') goto yy878;
-               if (yych != '=') goto yy873;
+               if (yych <= ' ') goto yy910;
+               if (yych != '=') goto yy905;
        }
-yy875:
+yy907:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy875;
+               goto yy907;
        }
-#line 242 "../src/parse/lex_conf.re"
+#line 256 "../src/parse/lex_conf.re"
        { return; }
-#line 3671 "src/parse/lex_conf.cc"
-yy878:
+#line 3797 "src/parse/lex_conf.cc"
+yy910:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy878;
+               if (yych == '\t') goto yy910;
        } else {
-               if (yych <= ' ') goto yy878;
-               if (yych == '=') goto yy875;
+               if (yych <= ' ') goto yy910;
+               if (yych == '=') goto yy907;
        }
        cur = ptr;
-       goto yy873;
+       goto yy905;
 }
-#line 243 "../src/parse/lex_conf.re"
+#line 257 "../src/parse/lex_conf.re"
 
 }
 
 void Scanner::lex_conf_semicolon ()
 {
 
-#line 3692 "src/parse/lex_conf.cc"
+#line 3818 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3728,39 +3854,39 @@ void Scanner::lex_conf_semicolon ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy885;
+               if (yych == '\t') goto yy917;
        } else {
-               if (yych <= ' ') goto yy885;
-               if (yych == ';') goto yy886;
+               if (yych <= ' ') goto yy917;
+               if (yych == ';') goto yy918;
        }
        ++cur;
-yy884:
-#line 249 "../src/parse/lex_conf.re"
+yy916:
+#line 263 "../src/parse/lex_conf.re"
        { fatal ("missing ending ';' in configuration"); }
-#line 3741 "src/parse/lex_conf.cc"
-yy885:
+#line 3867 "src/parse/lex_conf.cc"
+yy917:
        yych = (unsigned char)*(ptr = ++cur);
        if (yybm[0+yych] & 128) {
-               goto yy888;
+               goto yy920;
        }
-       if (yych != ';') goto yy884;
-yy886:
+       if (yych != ';') goto yy916;
+yy918:
        ++cur;
-#line 250 "../src/parse/lex_conf.re"
+#line 264 "../src/parse/lex_conf.re"
        { return; }
-#line 3752 "src/parse/lex_conf.cc"
-yy888:
+#line 3878 "src/parse/lex_conf.cc"
+yy920:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy888;
+               goto yy920;
        }
-       if (yych == ';') goto yy886;
+       if (yych == ';') goto yy918;
        cur = ptr;
-       goto yy884;
+       goto yy916;
 }
-#line 251 "../src/parse/lex_conf.re"
+#line 265 "../src/parse/lex_conf.re"
 
 }
 
@@ -3774,7 +3900,7 @@ int32_t Scanner::lex_conf_number ()
        lex_conf_assign ();
        tok = cur;
 
-#line 3778 "src/parse/lex_conf.cc"
+#line 3904 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3814,21 +3940,21 @@ int32_t Scanner::lex_conf_number ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= '/') {
-               if (yych == '-') goto yy894;
+               if (yych == '-') goto yy926;
        } else {
-               if (yych <= '0') goto yy895;
-               if (yych <= '9') goto yy897;
+               if (yych <= '0') goto yy927;
+               if (yych <= '9') goto yy929;
        }
-yy893:
-yy894:
+yy925:
+yy926:
        yych = (unsigned char)*++cur;
-       if (yych <= '0') goto yy893;
-       if (yych <= '9') goto yy897;
-       goto yy893;
-yy895:
+       if (yych <= '0') goto yy925;
+       if (yych <= '9') goto yy929;
+       goto yy925;
+yy927:
        ++cur;
-yy896:
-#line 265 "../src/parse/lex_conf.re"
+yy928:
+#line 279 "../src/parse/lex_conf.re"
        {
                int32_t n = 0;
                if (!s_to_i32_unsafe (tok, cur, n))
@@ -3838,17 +3964,17 @@ yy896:
                lex_conf_semicolon ();
                return n;
        }
-#line 3842 "src/parse/lex_conf.cc"
-yy897:
+#line 3968 "src/parse/lex_conf.cc"
+yy929:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy897;
+               goto yy929;
        }
-       goto yy896;
+       goto yy928;
 }
-#line 274 "../src/parse/lex_conf.re"
+#line 288 "../src/parse/lex_conf.re"
 
 }
 
@@ -3858,7 +3984,7 @@ std::string Scanner::lex_conf_string ()
        std::string s;
        tok = cur;
 
-#line 3862 "src/parse/lex_conf.cc"
+#line 3988 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -3899,38 +4025,38 @@ std::string Scanner::lex_conf_string ()
        yych = (unsigned char)*cur;
        if (yych <= '!') {
                if (yych <= '\n') {
-                       if (yych <= 0x08) goto yy902;
+                       if (yych <= 0x08) goto yy934;
                } else {
-                       if (yych != ' ') goto yy902;
+                       if (yych != ' ') goto yy934;
                }
        } else {
                if (yych <= '\'') {
-                       if (yych <= '"') goto yy905;
-                       if (yych <= '&') goto yy902;
-                       goto yy905;
+                       if (yych <= '"') goto yy937;
+                       if (yych <= '&') goto yy934;
+                       goto yy937;
                } else {
-                       if (yych != ';') goto yy902;
+                       if (yych != ';') goto yy934;
                }
        }
-#line 301 "../src/parse/lex_conf.re"
+#line 315 "../src/parse/lex_conf.re"
        { goto end; }
-#line 3918 "src/parse/lex_conf.cc"
-yy902:
+#line 4044 "src/parse/lex_conf.cc"
+yy934:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy902;
+               goto yy934;
        }
-#line 297 "../src/parse/lex_conf.re"
+#line 311 "../src/parse/lex_conf.re"
        {
                s = std::string(tok, tok_len());
                goto end;
        }
-#line 3931 "src/parse/lex_conf.cc"
-yy905:
+#line 4057 "src/parse/lex_conf.cc"
+yy937:
        ++cur;
-#line 283 "../src/parse/lex_conf.re"
+#line 297 "../src/parse/lex_conf.re"
        {
                const char quote = tok[0];
                for (bool end;;) {
@@ -3945,9 +4071,9 @@ yy905:
                        }
                }
        }
-#line 3949 "src/parse/lex_conf.cc"
+#line 4075 "src/parse/lex_conf.cc"
 }
-#line 302 "../src/parse/lex_conf.re"
+#line 316 "../src/parse/lex_conf.re"
 
 end:
        lex_conf_semicolon ();
index e255f42a17cab466438bd8128865e37c7bb19a01..4e4e2cadff9a2454123da2b3758687bf0ba5bdbe 100644 (file)
@@ -7,6 +7,7 @@
 
 #include "src/codegen/input_api.h"
 #include "src/ir/dfa/dfa.h"
+#include "src/ir/dfa/find_state.h"
 #include "src/ir/regexp/empty_class_policy.h"
 #include "src/ir/regexp/encoding/enc.h"
 #include "src/util/forbid_copy.h"
@@ -113,6 +114,7 @@ namespace re2c
        OPT (std::string, labelPrefix, "yy") \
        /* internals */ \
        OPT (dfa_minimization_t, dfa_minimization, DFA_MINIMIZATION_MOORE) \
+       OPT (mapping_t::type_t, dfa_mapping, mapping_t::BIJECTIVE) \
        /* dump */ \
        OPT (bool, dump_dfa_det, false) \
        OPT (bool, dump_dfa_tagopt, false) \
index 164744f59a158ec2096bf173b2875da551d9a7f3..2bbb9347ae37f9db2239dc718ef4673741b9f54c 100644 (file)
@@ -160,6 +160,7 @@ opt_long:
        "input"              end { goto opt_input; }
        "empty-class"        end { goto opt_empty_class; }
        "dfa-minimization"   end { goto opt_dfa_minimization; }
+       "dfa-mapping"        end { goto opt_dfa_mapping; }
        "single-pass"        end { goto opt; } // deprecated
 
        "dump-dfa-det"       end { opts.set_dump_dfa_det(true);    goto opt; }
@@ -254,6 +255,20 @@ opt_dfa_minimization:
        "moore" end { opts.set_dfa_minimization (DFA_MINIMIZATION_MOORE); goto opt; }
 */
 
+opt_dfa_mapping:
+       if (!next(YYCURSOR, argv)) {
+               error_arg("--mapping");
+               return EXIT_FAIL;
+       }
+/*!re2c
+       * {
+               error("bad argument to option --dfa-mapping (expected: bijective | injective): %s", *argv);
+               return EXIT_FAIL;
+       }
+       "bijective" end { opts.set_dfa_mapping(mapping_t::BIJECTIVE); goto opt; }
+       "injective" end { opts.set_dfa_mapping(mapping_t::INJECTIVE); goto opt; }
+*/
+
 end:
        if (!opts.source_file)
        {
index 71e9ad3e714ccfda8c52357641913fea61b49b88..6b837149078dfa757c7bfc4ab09fda9d1e6a8ffe 100644 (file)
@@ -1,7 +1,9 @@
 #include <string.h>
 
+#include "src/conf/opt.h"
 #include "src/ir/dfa/find_state.h"
 #include "src/util/hash32.h"
+#include "src/globals.h"
 
 namespace re2c
 {
@@ -41,9 +43,9 @@ struct kernel_eq_t
        }
 };
 
-mapping_t::mapping_t(Tagpool &tagp, tcpool_t &tcp, bool injective)
+mapping_t::mapping_t(Tagpool &tagp, tcpool_t &tcp)
        : cmd(NULL)
-       , INJECTIVE(injective)
+       , type(opts->dfa_mapping)
        , tagpool(tagp)
        , tcpool(tcp)
        , max(0)
@@ -163,7 +165,7 @@ bool mapping_t::operator()(const kernel_t *k1, const kernel_t *k2)
                                x2y[x] = y;
                                y2x[y] = x;
                        } else if (!(y == y0
-                               && (INJECTIVE || x == x0))) return false;
+                               && (type == INJECTIVE || x == x0))) return false;
                }
        }
 
@@ -205,7 +207,7 @@ bool mapping_t::operator()(const kernel_t *k1, const kernel_t *k2)
 
 kernels_t::kernels_t(Tagpool &tagpool, tcpool_t &tcpool)
        : lookup()
-       , mapping(tagpool, tcpool, false)
+       , mapping(tagpool, tcpool)
        , maxsize(256) // usually ranges from one to some twenty
        , buffer(new kernel_t(maxsize))
 {}
index a15e56dc1ba5006432042f1a6ec1bb4453a328b3..201b24a6bccb565e259ce7f8fc8e1d03eef41390 100644 (file)
@@ -23,10 +23,12 @@ struct kernel_t
 
 struct mapping_t
 {
+       enum type_t {BIJECTIVE, INJECTIVE};
+
        tcmd_t *cmd;
 
 private:
-       const bool INJECTIVE;
+       const type_t type;
 
        Tagpool &tagpool;
        tcpool_t &tcpool;
@@ -40,7 +42,7 @@ private:
        uint32_t *indeg;
 
 public:
-       mapping_t(Tagpool &tagp, tcpool_t &tcp, bool injective);
+       mapping_t(Tagpool &tagp, tcpool_t &tcp);
        ~mapping_t();
        void init(tagver_t v, tcmd_t *c);
        bool operator()(const kernel_t *k1, const kernel_t *k2);
index 94942bebdae50037bdaf04f03503104be49a6863..95fe12bde276d9cff946bfff120fed1a7fd0c8da 100644 (file)
@@ -72,6 +72,7 @@ void Scanner::lex_conf ()
        "flags:input"            { lex_conf_input();            return; }
        "flags:empty-class"      { lex_conf_empty_class();      return; }
        "flags:dfa-minimization" { lex_conf_dfa_minimization(); return; }
+       "flags:dfa-mapping"      { lex_conf_dfa_mapping();      return; }
 
        "define:YYCONDTYPE"           { opts.set_yycondtype       (lex_conf_string ()); return; }
        "define:YYGETCONDITION"       { opts.set_cond_get         (lex_conf_string ()); return; }
@@ -223,6 +224,19 @@ end:
        lex_conf_semicolon();
 }
 
+void Scanner::lex_conf_dfa_mapping()
+{
+       lex_conf_assign ();
+/*!re2c
+       * { fatal("bad configuration value"
+               " (expected: 'bijective', 'injective')"); }
+       "bijective" { opts.set_dfa_mapping(mapping_t::BIJECTIVE); goto end; }
+       "injective" { opts.set_dfa_mapping(mapping_t::INJECTIVE); goto end; }
+*/
+end:
+       lex_conf_semicolon();
+}
+
 void Scanner::lex_conf_enc(Enc::type_t enc)
 {
        const bool off = !lex_conf_bool();
index b2f9506c05cd70a46f5268cdadcd2db80c721bb8..a2eeb9628f442b5e3d7ddda01351a48fa3e8065e 100644 (file)
@@ -75,6 +75,7 @@ private:
        void lex_conf_input();
        void lex_conf_empty_class();
        void lex_conf_dfa_minimization();
+       void lex_conf_dfa_mapping();
        void lex_conf_enc(Enc::type_t enc);
        void lex_conf_assign();
        void lex_conf_semicolon();