]> granicus.if.org Git - re2c/commitdiff
Added debug options --dump-cfg and --dump-interf.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 3 Jan 2019 21:58:53 +0000 (21:58 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 3 Jan 2019 21:58:53 +0000 (21:58 +0000)
re2c/bootstrap/src/conf/parse_opts.cc
re2c/src/compile.cc
re2c/src/conf/opt.h
re2c/src/conf/parse_opts.re
re2c/src/debug/debug.h
re2c/src/dfa/cfg/cfg.h
re2c/src/dfa/cfg/optimize.cc
re2c/src/dfa/dfa.h

index c5f7ddc60dc2423813ad9a46fff52d958ad25674..6dd3c56b0c76dbfff8d2b7c33e7821f43af72e40 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.1.1 on Tue Jan  1 13:21:42 2019 */
+/* Generated by re2c 1.1.1 on Thu Jan  3 21:26:36 2019 */
 #line 1 "../src/conf/parse_opts.re"
 #include "src/code/input_api.h"
 #include "src/conf/msg.h"
@@ -1616,1263 +1616,1305 @@ yy381:
        goto yy283;
 yy382:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 'c') {
-               if (yych == 'a') goto yy419;
-               if (yych <= 'b') goto yy283;
-               goto yy420;
-       } else {
-               if (yych <= 'd') goto yy421;
-               if (yych == 'n') goto yy422;
-               goto yy283;
+       switch (yych) {
+       case 'a':       goto yy419;
+       case 'c':       goto yy420;
+       case 'd':       goto yy421;
+       case 'i':       goto yy422;
+       case 'n':       goto yy423;
+       default:        goto yy283;
        }
 yy383:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy423;
+       if (yych == '-') goto yy424;
        goto yy283;
 yy384:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy424;
+       if (yych == 'd') goto yy425;
        goto yy283;
 yy385:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy425;
+       if (yych == '-') goto yy426;
        goto yy283;
 yy386:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy426;
+       if (yych == 'i') goto yy427;
        goto yy283;
 yy387:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy427;
+       if (yych == 's') goto yy428;
        goto yy283;
 yy388:
        ++YYCURSOR;
 #line 128 "../src/conf/parse_opts.re"
        { usage ();   return EXIT_OK; }
-#line 1653 "src/conf/parse_opts.cc"
+#line 1652 "src/conf/parse_opts.cc"
 yy390:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy428;
+       if (yych <= 0x00) goto yy429;
        goto yy283;
 yy391:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy430;
+       if (yych == 'd') goto yy431;
        goto yy283;
 yy392:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy431;
+       if (yych == 'b') goto yy432;
        goto yy283;
 yy393:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy432;
+       if (yych == 'n') goto yy433;
        goto yy283;
 yy394:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy433;
+       if (yych == 'o') goto yy434;
        goto yy283;
 yy395:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy434;
+       if (yych == 't') goto yy435;
        goto yy283;
 yy396:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy435;
+       if (yych == 'r') goto yy436;
        goto yy283;
 yy397:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy436;
+       if (yych == 't') goto yy437;
        goto yy283;
 yy398:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy437;
+       if (yych == '-') goto yy438;
        goto yy283;
 yy399:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy438;
+       if (yych == 'b') goto yy439;
        goto yy283;
 yy400:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy439;
+       if (yych == 'e') goto yy440;
        goto yy283;
 yy401:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy440;
+       if (yych == 't') goto yy441;
        goto yy283;
 yy402:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy441;
+       if (yych == '-') goto yy442;
        goto yy283;
 yy403:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy442;
+       if (yych == 'b') goto yy443;
        goto yy283;
 yy404:
        ++YYCURSOR;
 #line 148 "../src/conf/parse_opts.re"
        { opts.set_tags (true);              goto opt; }
-#line 1714 "src/conf/parse_opts.cc"
+#line 1713 "src/conf/parse_opts.cc"
 yy406:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy443;
+       if (yych == 'h') goto yy444;
        goto yy283;
 yy407:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy444;
+       if (yych == 'd') goto yy445;
        goto yy283;
 yy408:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '6') goto yy445;
+       if (yych == '6') goto yy446;
        goto yy283;
 yy409:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy446;
+       if (yych <= 0x00) goto yy447;
        goto yy283;
 yy410:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy448;
+       if (yych == 'm') goto yy449;
        goto yy283;
 yy411:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy449;
+       if (yych == 'o') goto yy450;
        goto yy283;
 yy412:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy450;
+       if (yych == 'c') goto yy451;
        goto yy283;
 yy413:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy451;
+       if (yych == 'c') goto yy452;
        goto yy283;
 yy414:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy452;
+       if (yych == 'n') goto yy453;
        goto yy283;
 yy415:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy453;
+       if (yych == 'e') goto yy454;
        goto yy283;
 yy416:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy454;
+       if (yych == 'i') goto yy455;
        goto yy283;
 yy417:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy455;
+       if (yych == 'o') goto yy456;
        goto yy283;
 yy418:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy456;
+       if (yych == 'n') goto yy457;
        goto yy283;
 yy419:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy457;
+       if (yych == 'd') goto yy458;
        goto yy283;
 yy420:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy458;
+       if (yych == 'f') goto yy459;
+       if (yych == 'l') goto yy460;
        goto yy283;
 yy421:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy459;
+       if (yych == 'f') goto yy461;
        goto yy283;
 yy422:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy460;
+       if (yych == 'n') goto yy462;
        goto yy283;
 yy423:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy461;
+       if (yych == 'f') goto yy463;
        goto yy283;
 yy424:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy462;
+       if (yych == 's') goto yy464;
        goto yy283;
 yy425:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy463;
+       if (yych == 'o') goto yy465;
        goto yy283;
 yy426:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy464;
+       if (yych == 'c') goto yy466;
        goto yy283;
 yy427:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'y') goto yy465;
+       if (yych == 'n') goto yy467;
        goto yy283;
 yy428:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'y') goto yy468;
+       goto yy283;
+yy429:
        ++YYCURSOR;
 #line 159 "../src/conf/parse_opts.re"
        { NEXT_ARG("--input",            opt_input); }
-#line 1807 "src/conf/parse_opts.cc"
-yy430:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy466;
-       goto yy283;
+#line 1811 "src/conf/parse_opts.cc"
 yy431:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy467;
+       if (yych == '-') goto yy469;
        goto yy283;
 yy432:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy468;
+       if (yych == 'u') goto yy470;
        goto yy283;
 yy433:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'k') goto yy469;
+       if (yych == 'e') goto yy471;
        goto yy283;
 yy434:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy470;
+       if (yych == 'k') goto yy472;
        goto yy283;
 yy435:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy471;
+       if (yych == 'i') goto yy473;
        goto yy283;
 yy436:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy472;
+       if (yych == 's') goto yy474;
        goto yy283;
 yy437:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy474;
+       if (yych <= 0x00) goto yy475;
        goto yy283;
 yy438:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy475;
+       if (yych == 'c') goto yy477;
        goto yy283;
 yy439:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy476;
+       if (yych == 'l') goto yy478;
        goto yy283;
 yy440:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy477;
+       if (yych == '-') goto yy479;
        goto yy283;
 yy441:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy478;
+       if (yych == 'o') goto yy480;
        goto yy283;
 yy442:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy479;
+       if (yych == 'c') goto yy481;
        goto yy283;
 yy443:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy480;
+       if (yych == 'l') goto yy482;
        goto yy283;
 yy444:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy481;
+       if (yych == 'e') goto yy483;
        goto yy283;
 yy445:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy482;
+       if (yych == 'e') goto yy484;
        goto yy283;
 yy446:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych <= 0x00) goto yy485;
+       goto yy283;
+yy447:
        ++YYCURSOR;
 #line 154 "../src/conf/parse_opts.re"
        { opts.set_encoding(Enc::UTF8);      goto opt; }
-#line 1876 "src/conf/parse_opts.cc"
-yy448:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy484;
-       goto yy283;
+#line 1880 "src/conf/parse_opts.cc"
 yy449:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy486;
+       if (yych <= 0x00) goto yy487;
        goto yy283;
 yy450:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy487;
+       if (yych == 'n') goto yy489;
        goto yy283;
 yy451:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy488;
+       if (yych == 'h') goto yy490;
        goto yy283;
 yy452:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy489;
-       if (yych == 'v') goto yy490;
+       if (yych == 't') goto yy491;
        goto yy283;
 yy453:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy491;
+       if (yych == 's') goto yy492;
+       if (yych == 'v') goto yy493;
        goto yy283;
 yy454:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy492;
+       if (yych == 'd') goto yy494;
        goto yy283;
 yy455:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy493;
+       if (yych == 'o') goto yy495;
        goto yy283;
 yy456:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy494;
+       if (yych == 'u') goto yy496;
        goto yy283;
 yy457:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy495;
+       if (yych == 'i') goto yy497;
        goto yy283;
 yy458:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy496;
+       if (yych == 'f') goto yy498;
        goto yy283;
 yy459:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy497;
+       if (yych == 'g') goto yy499;
        goto yy283;
 yy460:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy498;
+       if (yych == 'o') goto yy500;
        goto yy283;
 yy461:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'k') goto yy499;
+       if (yych == 'a') goto yy501;
        goto yy283;
 yy462:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy500;
+       if (yych == 't') goto yy502;
        goto yy283;
 yy463:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy501;
+       if (yych == 'a') goto yy503;
        goto yy283;
 yy464:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy502;
+       if (yych == 'k') goto yy504;
        goto yy283;
 yy465:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy503;
+       if (yych == 't') goto yy505;
        goto yy283;
 yy466:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy504;
+       if (yych == 'l') goto yy506;
        goto yy283;
 yy467:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy505;
+       if (yych == 'g') goto yy507;
        goto yy283;
 yy468:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy506;
+       if (yych == 'n') goto yy508;
        goto yy283;
 yy469:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy507;
+       if (yych == 'i') goto yy509;
        goto yy283;
 yy470:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy508;
+       if (yych == 'g') goto yy510;
        goto yy283;
 yy471:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy509;
+       if (yych == 'r') goto yy511;
        goto yy283;
 yy472:
-       ++YYCURSOR;
-#line 156 "../src/conf/parse_opts.re"
-       { NEXT_ARG("-o, --output",       opt_output); }
-#line 1978 "src/conf/parse_opts.cc"
-yy474:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy510;
-       if (yych == 'l') goto yy511;
+       if (yych == 'a') goto yy512;
        goto yy283;
-yy475:
+yy473:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy512;
+       if (yych == 'm') goto yy513;
        goto yy283;
-yy476:
+yy474:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy513;
+       if (yych == 'i') goto yy514;
        goto yy283;
+yy475:
+       ++YYCURSOR;
+#line 156 "../src/conf/parse_opts.re"
+       { NEXT_ARG("-o, --output",       opt_output); }
+#line 1990 "src/conf/parse_opts.cc"
 yy477:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy514;
+       if (yych == 'a') goto yy515;
+       if (yych == 'l') goto yy516;
        goto yy283;
 yy478:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy515;
+       if (yych == 'e') goto yy517;
        goto yy283;
 yy479:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy516;
+       if (yych == 'p') goto yy518;
        goto yy283;
 yy480:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy517;
+       if (yych == 'n') goto yy519;
        goto yy283;
 yy481:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy518;
+       if (yych == 'o') goto yy520;
        goto yy283;
 yy482:
-       ++YYCURSOR;
-#line 153 "../src/conf/parse_opts.re"
-       { opts.set_encoding(Enc::UTF16);     goto opt; }
-#line 2016 "src/conf/parse_opts.cc"
-yy484:
-       ++YYCURSOR;
-#line 130 "../src/conf/parse_opts.re"
-       { vernum ();  return EXIT_OK; }
-#line 2021 "src/conf/parse_opts.cc"
-yy486:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy520;
+       if (yych == 'e') goto yy521;
        goto yy283;
-yy487:
+yy483:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'a') goto yy522;
        goto yy283;
-yy488:
+yy484:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy523;
+       if (yych <= 0x00) goto yy523;
        goto yy283;
+yy485:
+       ++YYCURSOR;
+#line 153 "../src/conf/parse_opts.re"
+       { opts.set_encoding(Enc::UTF16);     goto opt; }
+#line 2028 "src/conf/parse_opts.cc"
+yy487:
+       ++YYCURSOR;
+#line 130 "../src/conf/parse_opts.re"
+       { vernum ();  return EXIT_OK; }
+#line 2033 "src/conf/parse_opts.cc"
 yy489:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy524;
+       if (yych <= 0x00) goto yy525;
        goto yy283;
 yy490:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy525;
+       if (yych == 'a') goto yy527;
        goto yy283;
 yy491:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy526;
+       if (yych == 'o') goto yy528;
        goto yy283;
 yy492:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy527;
+       if (yych == 'e') goto yy529;
        goto yy283;
 yy493:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy528;
+       if (yych == 'e') goto yy530;
        goto yy283;
 yy494:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy529;
+       if (yych == '-') goto yy531;
        goto yy283;
 yy495:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy530;
+       if (yych == 'n') goto yy532;
        goto yy283;
 yy496:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy531;
+       if (yych == 't') goto yy533;
        goto yy283;
 yy497:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy532;
+       if (yych == 'm') goto yy534;
        goto yy283;
 yy498:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy533;
+       if (yych == 'a') goto yy535;
        goto yy283;
 yy499:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy535;
+       if (yych <= 0x00) goto yy536;
        goto yy283;
 yy500:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy536;
+       if (yych == 's') goto yy538;
        goto yy283;
 yy501:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy538;
+       if (yych == '-') goto yy539;
        goto yy283;
 yy502:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy539;
+       if (yych == 'e') goto yy540;
        goto yy283;
 yy503:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy540;
+       if (yych <= 0x00) goto yy541;
        goto yy283;
 yy504:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy541;
+       if (yych == 'i') goto yy543;
        goto yy283;
 yy505:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy542;
+       if (yych <= 0x00) goto yy544;
        goto yy283;
 yy506:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy543;
+       if (yych == 'a') goto yy546;
        goto yy283;
 yy507:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy544;
+       if (yych == '-') goto yy547;
        goto yy283;
 yy508:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy545;
+       if (yych == 't') goto yy548;
        goto yy283;
 yy509:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy546;
+       if (yych == 'f') goto yy549;
        goto yy283;
 yy510:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy547;
+       if (yych == '-') goto yy550;
        goto yy283;
 yy511:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy548;
+       if (yych == 'a') goto yy551;
        goto yy283;
 yy512:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy549;
+       if (yych == 'h') goto yy552;
        goto yy283;
 yy513:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy551;
+       if (yych == 'i') goto yy553;
        goto yy283;
 yy514:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy552;
+       if (yych == 'o') goto yy554;
        goto yy283;
 yy515:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy313;
+       if (yych == 'p') goto yy555;
        goto yy283;
 yy516:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy554;
+       if (yych == 'o') goto yy556;
        goto yy283;
 yy517:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy555;
+       if (yych <= 0x00) goto yy557;
        goto yy283;
 yy518:
-       ++YYCURSOR;
-#line 151 "../src/conf/parse_opts.re"
-       { opts.set_encoding(Enc::UTF32);     goto opt; }
-#line 2154 "src/conf/parse_opts.cc"
-yy520:
-       ++YYCURSOR;
-#line 129 "../src/conf/parse_opts.re"
-       { version (); return EXIT_OK; }
-#line 2159 "src/conf/parse_opts.cc"
-yy522:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy556;
+       if (yych == 'a') goto yy559;
        goto yy283;
-yy523:
+yy519:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy557;
+       if (yych <= 0x00) goto yy560;
        goto yy283;
-yy524:
+yy520:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy558;
+       if (yych == 'n') goto yy313;
        goto yy283;
-yy525:
+yy521:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy559;
+       if (yych == '-') goto yy562;
        goto yy283;
-yy526:
+yy522:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy560;
+       if (yych == 'd') goto yy563;
        goto yy283;
+yy523:
+       ++YYCURSOR;
+#line 151 "../src/conf/parse_opts.re"
+       { opts.set_encoding(Enc::UTF32);     goto opt; }
+#line 2174 "src/conf/parse_opts.cc"
+yy525:
+       ++YYCURSOR;
+#line 129 "../src/conf/parse_opts.re"
+       { version (); return EXIT_OK; }
+#line 2179 "src/conf/parse_opts.cc"
 yy527:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy561;
+       if (yych == 'r') goto yy564;
        goto yy283;
 yy528:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy562;
+       if (yych == 'r') goto yy565;
        goto yy283;
 yy529:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy563;
+       if (yych == 'n') goto yy566;
        goto yy283;
 yy530:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy564;
+       if (yych == 'r') goto yy567;
        goto yy283;
 yy531:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy566;
+       if (yych == 'g') goto yy568;
        goto yy283;
 yy532:
        yych = (YYCTYPE)*++YYCURSOR;
-       switch (yych) {
-       case 'd':       goto yy567;
-       case 'm':       goto yy568;
-       case 'r':       goto yy569;
-       case 't':       goto yy570;
-       default:        goto yy283;
-       }
+       if (yych == 's') goto yy569;
+       goto yy283;
 yy533:
-       ++YYCURSOR;
-#line 172 "../src/conf/parse_opts.re"
-       { globopts.dump_nfa = true;           goto opt; }
-#line 2213 "src/conf/parse_opts.cc"
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'p') goto yy570;
+       goto yy283;
+yy534:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy571;
+       goto yy283;
 yy535:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy571;
+       if (yych <= 0x00) goto yy572;
        goto yy283;
 yy536:
        ++YYCURSOR;
-#line 133 "../src/conf/parse_opts.re"
-       { globopts.target = TARGET_DOT;      goto opt; }
-#line 2222 "src/conf/parse_opts.cc"
+#line 178 "../src/conf/parse_opts.re"
+       { globopts.dump_cfg = true;           goto opt; }
+#line 2220 "src/conf/parse_opts.cc"
 yy538:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy572;
+       if (yych == 'u') goto yy574;
        goto yy283;
 yy539:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy573;
-       goto yy283;
+       switch (yych) {
+       case 'd':       goto yy575;
+       case 'm':       goto yy576;
+       case 'r':       goto yy577;
+       case 't':       goto yy578;
+       default:        goto yy283;
+       }
 yy540:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy574;
+       if (yych == 'r') goto yy579;
        goto yy283;
 yy541:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy575;
-       goto yy283;
-yy542:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy576;
-       goto yy283;
+       ++YYCURSOR;
+#line 172 "../src/conf/parse_opts.re"
+       { globopts.dump_nfa = true;           goto opt; }
+#line 2242 "src/conf/parse_opts.cc"
 yy543:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy577;
+       if (yych == 'p') goto yy580;
        goto yy283;
 yy544:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy578;
-       goto yy283;
-yy545:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'z') goto yy579;
-       goto yy283;
+       ++YYCURSOR;
+#line 133 "../src/conf/parse_opts.re"
+       { globopts.target = TARGET_DOT;      goto opt; }
+#line 2251 "src/conf/parse_opts.cc"
 yy546:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy580;
+       if (yych == 's') goto yy581;
        goto yy283;
 yy547:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy581;
+       if (yych == 'p') goto yy582;
        goto yy283;
 yy548:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy582;
+       if (yych == 'a') goto yy583;
        goto yy283;
 yy549:
-       ++YYCURSOR;
-#line 136 "../src/conf/parse_opts.re"
-       { globopts.rFlag = true;             goto opt; }
-#line 2271 "src/conf/parse_opts.cc"
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 's') goto yy584;
+       goto yy283;
+yy550:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy585;
+       goto yy283;
 yy551:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy583;
+       if (yych == 't') goto yy586;
        goto yy283;
 yy552:
-       ++YYCURSOR;
-#line 139 "../src/conf/parse_opts.re"
-       { globopts.target = TARGET_SKELETON; goto opt; }
-#line 2280 "src/conf/parse_opts.cc"
-yy554:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy584;
+       if (yych == 'e') goto yy587;
        goto yy283;
-yy555:
+yy553:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy585;
+       if (yych == 'z') goto yy588;
        goto yy283;
-yy556:
+yy554:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy586;
+       if (yych == 'n') goto yy589;
        goto yy283;
-yy557:
+yy555:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy587;
+       if (yych == 't') goto yy590;
        goto yy283;
-yy558:
+yy556:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy588;
+       if (yych == 's') goto yy591;
        goto yy283;
+yy557:
+       ++YYCURSOR;
+#line 136 "../src/conf/parse_opts.re"
+       { globopts.rFlag = true;             goto opt; }
+#line 2300 "src/conf/parse_opts.cc"
 yy559:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy589;
+       if (yych == 's') goto yy592;
        goto yy283;
 yy560:
+       ++YYCURSOR;
+#line 139 "../src/conf/parse_opts.re"
+       { globopts.target = TARGET_SKELETON; goto opt; }
+#line 2309 "src/conf/parse_opts.cc"
+yy562:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy590;
+       if (yych == 's') goto yy593;
        goto yy283;
-yy561:
+yy563:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy591;
+       if (yych == 'e') goto yy594;
        goto yy283;
-yy562:
+yy564:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy593;
+       if (yych == 's') goto yy595;
        goto yy283;
-yy563:
+yy565:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'z') goto yy594;
+       if (yych == 's') goto yy596;
        goto yy283;
-yy564:
-       ++YYCURSOR;
-#line 177 "../src/conf/parse_opts.re"
-       { globopts.dump_adfa = true;          goto opt; }
-#line 2325 "src/conf/parse_opts.cc"
 yy566:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy595;
+       if (yych == 's') goto yy597;
        goto yy283;
 yy567:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy596;
+       if (yych == 't') goto yy598;
        goto yy283;
 yy568:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy597;
+       if (yych == 'o') goto yy599;
        goto yy283;
 yy569:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy598;
+       if (yych <= 0x00) goto yy600;
        goto yy283;
 yy570:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy599;
+       if (yych == 'u') goto yy602;
        goto yy283;
 yy571:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy600;
+       if (yych == 'z') goto yy603;
        goto yy283;
 yy572:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy602;
-       goto yy283;
-yy573:
-       yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy603;
-       goto yy283;
+       ++YYCURSOR;
+#line 177 "../src/conf/parse_opts.re"
+       { globopts.dump_adfa = true;          goto opt; }
+#line 2354 "src/conf/parse_opts.cc"
 yy574:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'x') goto yy604;
+       if (yych == 'r') goto yy604;
        goto yy283;
 yy575:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy605;
+       if (yych == 'e') goto yy605;
        goto yy283;
 yy576:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy607;
+       if (yych == 'i') goto yy606;
        goto yy283;
 yy577:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy608;
+       if (yych == 'a') goto yy607;
        goto yy283;
 yy578:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy609;
+       if (yych == 'a') goto yy608;
        goto yy283;
 yy579:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy610;
+       if (yych == 'f') goto yy609;
        goto yy283;
 yy580:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy611;
+       if (yych <= 0x00) goto yy610;
        goto yy283;
 yy581:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy613;
+       if (yych == 's') goto yy612;
        goto yy283;
 yy582:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy614;
+       if (yych == 'o') goto yy613;
        goto yy283;
 yy583:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy615;
+       if (yych == 'x') goto yy614;
        goto yy283;
 yy584:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy616;
+       if (yych <= 0x00) goto yy615;
        goto yy283;
 yy585:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy617;
+       if (yych == 'n') goto yy617;
        goto yy283;
 yy586:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy618;
+       if (yych == 'i') goto yy618;
        goto yy283;
 yy587:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy620;
+       if (yych == 'a') goto yy619;
        goto yy283;
 yy588:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy622;
+       if (yych == 'e') goto yy620;
        goto yy283;
 yy589:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy623;
+       if (yych <= 0x00) goto yy621;
        goto yy283;
 yy590:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy624;
+       if (yych == 'u') goto yy623;
        goto yy283;
 yy591:
-       ++YYCURSOR;
-#line 132 "../src/conf/parse_opts.re"
-       { globopts.cFlag = true;             goto opt; }
-#line 2430 "src/conf/parse_opts.cc"
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'u') goto yy624;
+       goto yy283;
+yy592:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 's') goto yy625;
+       goto yy283;
 yy593:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy625;
+       if (yych == 't') goto yy626;
        goto yy283;
 yy594:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy626;
+       if (yych == 'r') goto yy627;
        goto yy283;
 yy595:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy627;
+       if (yych <= 0x00) goto yy628;
        goto yy283;
 yy596:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy628;
+       if (yych <= 0x00) goto yy630;
        goto yy283;
 yy597:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy629;
+       if (yych == 'i') goto yy632;
        goto yy283;
 yy598:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'w') goto yy630;
+       if (yych == 'e') goto yy633;
        goto yy283;
 yy599:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy631;
+       if (yych == 't') goto yy634;
        goto yy283;
 yy600:
        ++YYCURSOR;
-#line 169 "../src/conf/parse_opts.re"
-       { globopts.eager_skip = true;     goto opt; }
+#line 132 "../src/conf/parse_opts.re"
+       { globopts.cFlag = true;             goto opt; }
 #line 2463 "src/conf/parse_opts.cc"
 yy602:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy632;
+       if (yych == 't') goto yy635;
        goto yy283;
 yy603:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy634;
+       if (yych == 'a') goto yy636;
        goto yy283;
 yy604:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy635;
+       if (yych == 'e') goto yy637;
        goto yy283;
 yy605:
-       ++YYCURSOR;
-#line 145 "../src/conf/parse_opts.re"
-       { opts.set_sFlag (true);             goto opt; }
-#line 2480 "src/conf/parse_opts.cc"
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy638;
+       goto yy283;
+yy606:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'n') goto yy639;
+       goto yy283;
 yy607:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy637;
+       if (yych == 'w') goto yy640;
        goto yy283;
 yy608:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy638;
+       if (yych == 'g') goto yy641;
        goto yy283;
 yy609:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy639;
+       if (yych <= 0x00) goto yy642;
        goto yy283;
 yy610:
+       ++YYCURSOR;
+#line 169 "../src/conf/parse_opts.re"
+       { globopts.eager_skip = true;     goto opt; }
+#line 2500 "src/conf/parse_opts.cc"
+yy612:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy640;
+       if (yych <= 0x00) goto yy644;
        goto yy283;
-yy611:
-       ++YYCURSOR;
-#line 138 "../src/conf/parse_opts.re"
-       { globopts.version = false;          goto opt; }
-#line 2501 "src/conf/parse_opts.cc"
 yy613:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy641;
+       if (yych == 'l') goto yy646;
        goto yy283;
 yy614:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy642;
+       if (yych <= 0x00) goto yy647;
        goto yy283;
 yy615:
+       ++YYCURSOR;
+#line 145 "../src/conf/parse_opts.re"
+       { opts.set_sFlag (true);             goto opt; }
+#line 2517 "src/conf/parse_opts.cc"
+yy617:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy643;
+       if (yych == 'f') goto yy649;
        goto yy283;
-yy616:
+yy618:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy645;
+       if (yych == 'o') goto yy650;
        goto yy283;
-yy617:
+yy619:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy646;
+       if (yych == 'd') goto yy651;
        goto yy283;
-yy618:
-       ++YYCURSOR;
-#line 152 "../src/conf/parse_opts.re"
-       { opts.set_encoding(Enc::UCS2);      goto opt; }
-#line 2526 "src/conf/parse_opts.cc"
 yy620:
-       ++YYCURSOR;
-#line 141 "../src/conf/parse_opts.re"
-       { opts.set_bFlag (true);             goto opt; }
-#line 2531 "src/conf/parse_opts.cc"
-yy622:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy648;
+       if (yych == '-') goto yy652;
        goto yy283;
+yy621:
+       ++YYCURSOR;
+#line 138 "../src/conf/parse_opts.re"
+       { globopts.version = false;          goto opt; }
+#line 2538 "src/conf/parse_opts.cc"
 yy623:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy649;
+       if (yych == 'r') goto yy653;
        goto yy283;
 yy624:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy650;
+       if (yych == 'r') goto yy654;
        goto yy283;
 yy625:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy651;
+       if (yych <= 0x00) goto yy655;
        goto yy283;
 yy626:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy653;
+       if (yych == 'a') goto yy657;
        goto yy283;
 yy627:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy654;
+       if (yych <= 0x00) goto yy658;
        goto yy283;
 yy628:
+       ++YYCURSOR;
+#line 152 "../src/conf/parse_opts.re"
+       { opts.set_encoding(Enc::UCS2);      goto opt; }
+#line 2563 "src/conf/parse_opts.cc"
+yy630:
+       ++YYCURSOR;
+#line 141 "../src/conf/parse_opts.re"
+       { opts.set_bFlag (true);             goto opt; }
+#line 2568 "src/conf/parse_opts.cc"
+yy632:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy655;
+       if (yych == 't') goto yy660;
        goto yy283;
-yy629:
+yy633:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy657;
+       if (yych == 'd') goto yy661;
        goto yy283;
-yy630:
+yy634:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy659;
+       if (yych == 'o') goto yy662;
        goto yy283;
-yy631:
+yy635:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy661;
+       if (yych <= 0x00) goto yy663;
        goto yy283;
-yy632:
-       ++YYCURSOR;
-#line 160 "../src/conf/parse_opts.re"
-       { NEXT_ARG("--empty-class",      opt_empty_class); }
-#line 2576 "src/conf/parse_opts.cc"
-yy634:
+yy636:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy662;
+       if (yych == 't') goto yy665;
        goto yy283;
-yy635:
-       ++YYCURSOR;
-#line 135 "../src/conf/parse_opts.re"
-       { globopts.FFlag = true;             goto opt; }
-#line 2585 "src/conf/parse_opts.cc"
 yy637:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy663;
+       if (yych == '-') goto yy666;
        goto yy283;
 yy638:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy664;
+       if (yych <= 0x00) goto yy667;
        goto yy283;
 yy639:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy665;
+       if (yych <= 0x00) goto yy669;
        goto yy283;
 yy640:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy667;
+       if (yych <= 0x00) goto yy671;
        goto yy283;
 yy641:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy668;
+       if (yych == 'o') goto yy673;
        goto yy283;
 yy642:
+       ++YYCURSOR;
+#line 179 "../src/conf/parse_opts.re"
+       { globopts.dump_interf = true;        goto opt; }
+#line 2613 "src/conf/parse_opts.cc"
+yy644:
+       ++YYCURSOR;
+#line 160 "../src/conf/parse_opts.re"
+       { NEXT_ARG("--empty-class",      opt_empty_class); }
+#line 2618 "src/conf/parse_opts.cc"
+yy646:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'i') goto yy674;
+       goto yy283;
+yy647:
+       ++YYCURSOR;
+#line 135 "../src/conf/parse_opts.re"
+       { globopts.FFlag = true;             goto opt; }
+#line 2627 "src/conf/parse_opts.cc"
+yy649:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'o') goto yy675;
+       goto yy283;
+yy650:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'n') goto yy676;
+       goto yy283;
+yy651:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy669;
+       if (yych <= 0x00) goto yy677;
        goto yy283;
-yy643:
+yy652:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy679;
+       goto yy283;
+yy653:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy680;
+       goto yy283;
+yy654:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'e') goto yy681;
+       goto yy283;
+yy655:
        ++YYCURSOR;
 #line 162 "../src/conf/parse_opts.re"
        { goto opt; }
-#line 2614 "src/conf/parse_opts.cc"
-yy645:
+#line 2656 "src/conf/parse_opts.cc"
+yy657:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy670;
+       if (yych == 't') goto yy682;
        goto yy283;
-yy646:
+yy658:
        ++YYCURSOR;
 #line 157 "../src/conf/parse_opts.re"
        { NEXT_ARG("-t, --type-header",  opt_header); }
-#line 2623 "src/conf/parse_opts.cc"
-yy648:
+#line 2665 "src/conf/parse_opts.cc"
+yy660:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy671;
+       if (yych == 'i') goto yy683;
        goto yy283;
-yy649:
+yy661:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy672;
+       if (yych <= 0x00) goto yy684;
        goto yy283;
-yy650:
+yy662:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy674;
+       if (yych == 's') goto yy686;
        goto yy283;
-yy651:
+yy663:
        ++YYCURSOR;
 #line 142 "../src/conf/parse_opts.re"
        { opts.set_dFlag (true);             goto opt; }
-#line 2640 "src/conf/parse_opts.cc"
-yy653:
+#line 2682 "src/conf/parse_opts.cc"
+yy665:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy675;
+       if (yych == 'i') goto yy687;
        goto yy283;
-yy654:
+yy666:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy676;
+       if (yych == 's') goto yy688;
        goto yy283;
-yy655:
+yy667:
        ++YYCURSOR;
 #line 174 "../src/conf/parse_opts.re"
        { globopts.dump_dfa_det = true;       goto opt; }
-#line 2653 "src/conf/parse_opts.cc"
-yy657:
+#line 2695 "src/conf/parse_opts.cc"
+yy669:
        ++YYCURSOR;
 #line 176 "../src/conf/parse_opts.re"
        { globopts.dump_dfa_min = true;       goto opt; }
-#line 2658 "src/conf/parse_opts.cc"
-yy659:
+#line 2700 "src/conf/parse_opts.cc"
+yy671:
        ++YYCURSOR;
 #line 173 "../src/conf/parse_opts.re"
        { globopts.dump_dfa_raw = true;       goto opt; }
-#line 2663 "src/conf/parse_opts.cc"
-yy661:
+#line 2705 "src/conf/parse_opts.cc"
+yy673:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy677;
+       if (yych == 'p') goto yy689;
        goto yy283;
-yy662:
+yy674:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy678;
+       if (yych == 'c') goto yy690;
        goto yy283;
-yy663:
+yy675:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy679;
+       if (yych <= 0x00) goto yy691;
        goto yy283;
-yy664:
+yy676:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy681;
+       if (yych == '-') goto yy693;
        goto yy283;
-yy665:
+yy677:
        ++YYCURSOR;
 #line 167 "../src/conf/parse_opts.re"
        { globopts.lookahead = false;     goto opt; }
-#line 2684 "src/conf/parse_opts.cc"
-yy667:
+#line 2726 "src/conf/parse_opts.cc"
+yy679:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy682;
+       if (yych == 'a') goto yy694;
        goto yy283;
-yy668:
+yy680:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy683;
+       if (yych == 's') goto yy695;
        goto yy283;
-yy669:
+yy681:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy684;
+       if (yych <= 0x00) goto yy696;
        goto yy283;
-yy670:
+yy682:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy686;
+       if (yych == 'e') goto yy698;
        goto yy283;
-yy671:
+yy683:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'v') goto yy687;
+       if (yych == 'v') goto yy699;
        goto yy283;
-yy672:
+yy684:
        ++YYCURSOR;
 #line 147 "../src/conf/parse_opts.re"
        { opts.set_bCaseInverted (true);     goto opt; }
-#line 2709 "src/conf/parse_opts.cc"
-yy674:
+#line 2751 "src/conf/parse_opts.cc"
+yy686:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy688;
+       if (yych <= 0x00) goto yy700;
        goto yy283;
-yy675:
+yy687:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy690;
+       if (yych == 'o') goto yy702;
        goto yy283;
-yy676:
+yy688:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy691;
+       if (yych == 't') goto yy703;
        goto yy283;
-yy677:
+yy689:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy692;
+       if (yych == 't') goto yy704;
        goto yy283;
-yy678:
+yy690:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'y') goto yy693;
+       if (yych == 'y') goto yy705;
        goto yy283;
-yy679:
+yy691:
        ++YYCURSOR;
 #line 144 "../src/conf/parse_opts.re"
        { opts.set_iFlag (true);             goto opt; }
-#line 2734 "src/conf/parse_opts.cc"
-yy681:
+#line 2776 "src/conf/parse_opts.cc"
+yy693:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy694;
+       if (yych == 'd') goto yy706;
        goto yy283;
-yy682:
+yy694:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'g') goto yy695;
+       if (yych == 'g') goto yy707;
        goto yy283;
-yy683:
+yy695:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy696;
+       if (yych <= 0x00) goto yy708;
        goto yy283;
-yy684:
+yy696:
        ++YYCURSOR;
 #line 166 "../src/conf/parse_opts.re"
        { NEXT_ARG("--posix-closure",    opt_posix_closure); }
-#line 2751 "src/conf/parse_opts.cc"
-yy686:
+#line 2793 "src/conf/parse_opts.cc"
+yy698:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy698;
+       if (yych <= 0x00) goto yy710;
        goto yy283;
-yy687:
+yy699:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy700;
+       if (yych == 'e') goto yy712;
        goto yy283;
-yy688:
+yy700:
        ++YYCURSOR;
 #line 143 "../src/conf/parse_opts.re"
        { opts.set_gFlag (true);             goto opt; }
-#line 2764 "src/conf/parse_opts.cc"
-yy690:
+#line 2806 "src/conf/parse_opts.cc"
+yy702:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy701;
+       if (yych == 'n') goto yy713;
        goto yy283;
-yy691:
+yy703:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy702;
+       if (yych == 'a') goto yy714;
        goto yy283;
-yy692:
+yy704:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy703;
+       if (yych <= 0x00) goto yy715;
        goto yy283;
-yy693:
+yy705:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy705;
+       if (yych <= 0x00) goto yy717;
        goto yy283;
-yy694:
+yy706:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy707;
+       if (yych == 'a') goto yy719;
        goto yy283;
-yy695:
+yy707:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy708;
+       if (yych == 's') goto yy720;
        goto yy283;
-yy696:
+yy708:
        ++YYCURSOR;
 #line 149 "../src/conf/parse_opts.re"
        { opts.set_posix_captures(true);     goto opt; }
-#line 2793 "src/conf/parse_opts.cc"
-yy698:
+#line 2835 "src/conf/parse_opts.cc"
+yy710:
        ++YYCURSOR;
 #line 134 "../src/conf/parse_opts.re"
        { globopts.fFlag = true;             goto opt; }
-#line 2798 "src/conf/parse_opts.cc"
-yy700:
+#line 2840 "src/conf/parse_opts.cc"
+yy712:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy709;
+       if (yych <= 0x00) goto yy721;
        goto yy283;
-yy701:
+yy713:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy711;
+       if (yych <= 0x00) goto yy723;
        goto yy283;
-yy702:
+yy714:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy713;
+       if (yych == 't') goto yy725;
        goto yy283;
-yy703:
+yy715:
        ++YYCURSOR;
 #line 175 "../src/conf/parse_opts.re"
        { globopts.dump_dfa_tagopt = true;    goto opt; }
-#line 2815 "src/conf/parse_opts.cc"
-yy705:
+#line 2857 "src/conf/parse_opts.cc"
+yy717:
        ++YYCURSOR;
 #line 158 "../src/conf/parse_opts.re"
        { NEXT_ARG("--encoding-policy",  opt_encoding_policy); }
-#line 2820 "src/conf/parse_opts.cc"
-yy707:
+#line 2862 "src/conf/parse_opts.cc"
+yy719:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy714;
+       if (yych == 't') goto yy726;
        goto yy283;
-yy708:
+yy720:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy715;
+       if (yych <= 0x00) goto yy727;
        goto yy283;
-yy709:
+yy721:
        ++YYCURSOR;
 #line 146 "../src/conf/parse_opts.re"
        { opts.set_bCaseInsensitive (true);  goto opt; }
-#line 2833 "src/conf/parse_opts.cc"
-yy711:
+#line 2875 "src/conf/parse_opts.cc"
+yy723:
        ++YYCURSOR;
 #line 165 "../src/conf/parse_opts.re"
        { NEXT_ARG("--dfa-minimization", opt_dfa_minimization); }
-#line 2838 "src/conf/parse_opts.cc"
-yy713:
+#line 2880 "src/conf/parse_opts.cc"
+yy725:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy717;
+       if (yych == 's') goto yy729;
        goto yy283;
-yy714:
+yy726:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy718;
+       if (yych == 'e') goto yy730;
        goto yy283;
-yy715:
+yy727:
        ++YYCURSOR;
 #line 168 "../src/conf/parse_opts.re"
        { globopts.optimize_tags = false; goto opt; }
-#line 2851 "src/conf/parse_opts.cc"
-yy717:
+#line 2893 "src/conf/parse_opts.cc"
+yy729:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy719;
+       if (yych <= 0x00) goto yy731;
        goto yy283;
-yy718:
+yy730:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy721;
+       if (yych <= 0x00) goto yy733;
        goto yy283;
-yy719:
+yy731:
        ++YYCURSOR;
-#line 178 "../src/conf/parse_opts.re"
+#line 180 "../src/conf/parse_opts.re"
        { globopts.dump_closure_stats = true; goto opt; }
-#line 2864 "src/conf/parse_opts.cc"
-yy721:
+#line 2906 "src/conf/parse_opts.cc"
+yy733:
        ++YYCURSOR;
 #line 137 "../src/conf/parse_opts.re"
        { globopts.bNoGenerationDate = true; goto opt; }
-#line 2869 "src/conf/parse_opts.cc"
+#line 2911 "src/conf/parse_opts.cc"
 }
-#line 179 "../src/conf/parse_opts.re"
+#line 181 "../src/conf/parse_opts.re"
 
 
 opt_output:
 
-#line 2876 "src/conf/parse_opts.cc"
+#line 2918 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2910,29 +2952,29 @@ opt_output:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy725;
-       if (yych != '-') goto yy727;
-yy725:
+       if (yych <= 0x00) goto yy737;
+       if (yych != '-') goto yy739;
+yy737:
        ++YYCURSOR;
-#line 183 "../src/conf/parse_opts.re"
+#line 185 "../src/conf/parse_opts.re"
        { ERROR("bad argument to option -o, --output: %s", *argv); }
-#line 2920 "src/conf/parse_opts.cc"
-yy727:
+#line 2962 "src/conf/parse_opts.cc"
+yy739:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy727;
+               goto yy739;
        }
        ++YYCURSOR;
-#line 184 "../src/conf/parse_opts.re"
+#line 186 "../src/conf/parse_opts.re"
        { opts.set_output_file (*argv); goto opt; }
-#line 2929 "src/conf/parse_opts.cc"
+#line 2971 "src/conf/parse_opts.cc"
 }
-#line 185 "../src/conf/parse_opts.re"
+#line 187 "../src/conf/parse_opts.re"
 
 
 opt_header:
 
-#line 2936 "src/conf/parse_opts.cc"
+#line 2978 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2970,29 +3012,29 @@ opt_header:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy733;
-       if (yych != '-') goto yy735;
-yy733:
+       if (yych <= 0x00) goto yy745;
+       if (yych != '-') goto yy747;
+yy745:
        ++YYCURSOR;
-#line 189 "../src/conf/parse_opts.re"
+#line 191 "../src/conf/parse_opts.re"
        { ERROR("bad argument to option -t, --type-header: %s", *argv); }
-#line 2980 "src/conf/parse_opts.cc"
-yy735:
+#line 3022 "src/conf/parse_opts.cc"
+yy747:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy735;
+               goto yy747;
        }
        ++YYCURSOR;
-#line 190 "../src/conf/parse_opts.re"
+#line 192 "../src/conf/parse_opts.re"
        { opts.set_header_file (*argv); goto opt; }
-#line 2989 "src/conf/parse_opts.cc"
+#line 3031 "src/conf/parse_opts.cc"
 }
-#line 191 "../src/conf/parse_opts.re"
+#line 193 "../src/conf/parse_opts.re"
 
 
 opt_incpath:
 
-#line 2996 "src/conf/parse_opts.cc"
+#line 3038 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -3030,471 +3072,471 @@ opt_incpath:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy741;
-       if (yych != '-') goto yy743;
-yy741:
+       if (yych <= 0x00) goto yy753;
+       if (yych != '-') goto yy755;
+yy753:
        ++YYCURSOR;
-#line 195 "../src/conf/parse_opts.re"
+#line 197 "../src/conf/parse_opts.re"
        { ERROR("bad argument to option -I: %s", *argv); }
-#line 3040 "src/conf/parse_opts.cc"
-yy743:
+#line 3082 "src/conf/parse_opts.cc"
+yy755:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy743;
+               goto yy755;
        }
        ++YYCURSOR;
-#line 196 "../src/conf/parse_opts.re"
+#line 198 "../src/conf/parse_opts.re"
        { globopts.incpaths.push_back(*argv); goto opt; }
-#line 3049 "src/conf/parse_opts.cc"
+#line 3091 "src/conf/parse_opts.cc"
 }
-#line 197 "../src/conf/parse_opts.re"
+#line 199 "../src/conf/parse_opts.re"
 
 
 opt_encoding_policy:
 
-#line 3056 "src/conf/parse_opts.cc"
+#line 3098 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'h') {
-               if (yych == 'f') goto yy751;
+               if (yych == 'f') goto yy763;
        } else {
-               if (yych <= 'i') goto yy752;
-               if (yych == 's') goto yy753;
+               if (yych <= 'i') goto yy764;
+               if (yych == 's') goto yy765;
        }
        ++YYCURSOR;
-yy750:
-#line 201 "../src/conf/parse_opts.re"
+yy762:
+#line 203 "../src/conf/parse_opts.re"
        {
         ERROR("bad argument to option --encoding-policy "
             "(expected: ignore | substitute | fail): %s", *argv);
     }
-#line 3073 "src/conf/parse_opts.cc"
-yy751:
+#line 3115 "src/conf/parse_opts.cc"
+yy763:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy754;
-       goto yy750;
-yy752:
+       if (yych == 'a') goto yy766;
+       goto yy762;
+yy764:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'g') goto yy756;
-       goto yy750;
-yy753:
+       if (yych == 'g') goto yy768;
+       goto yy762;
+yy765:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'u') goto yy757;
-       goto yy750;
-yy754:
+       if (yych == 'u') goto yy769;
+       goto yy762;
+yy766:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy758;
-yy755:
+       if (yych == 'i') goto yy770;
+yy767:
        YYCURSOR = YYMARKER;
-       goto yy750;
-yy756:
+       goto yy762;
+yy768:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy759;
-       goto yy755;
-yy757:
+       if (yych == 'n') goto yy771;
+       goto yy767;
+yy769:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy760;
-       goto yy755;
-yy758:
+       if (yych == 'b') goto yy772;
+       goto yy767;
+yy770:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy761;
-       goto yy755;
-yy759:
+       if (yych == 'l') goto yy773;
+       goto yy767;
+yy771:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy762;
-       goto yy755;
-yy760:
+       if (yych == 'o') goto yy774;
+       goto yy767;
+yy772:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy763;
-       goto yy755;
-yy761:
+       if (yych == 's') goto yy775;
+       goto yy767;
+yy773:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy764;
-       goto yy755;
-yy762:
+       if (yych <= 0x00) goto yy776;
+       goto yy767;
+yy774:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy766;
-       goto yy755;
-yy763:
+       if (yych == 'r') goto yy778;
+       goto yy767;
+yy775:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy767;
-       goto yy755;
-yy764:
+       if (yych == 't') goto yy779;
+       goto yy767;
+yy776:
        ++YYCURSOR;
-#line 207 "../src/conf/parse_opts.re"
+#line 209 "../src/conf/parse_opts.re"
        { opts.set_encoding_policy (Enc::POLICY_FAIL);       goto opt; }
-#line 3128 "src/conf/parse_opts.cc"
-yy766:
+#line 3170 "src/conf/parse_opts.cc"
+yy778:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy768;
-       goto yy755;
-yy767:
+       if (yych == 'e') goto yy780;
+       goto yy767;
+yy779:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy769;
-       goto yy755;
-yy768:
+       if (yych == 'i') goto yy781;
+       goto yy767;
+yy780:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy770;
-       goto yy755;
-yy769:
+       if (yych <= 0x00) goto yy782;
+       goto yy767;
+yy781:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy772;
-       goto yy755;
-yy770:
+       if (yych == 't') goto yy784;
+       goto yy767;
+yy782:
        ++YYCURSOR;
-#line 205 "../src/conf/parse_opts.re"
+#line 207 "../src/conf/parse_opts.re"
        { opts.set_encoding_policy (Enc::POLICY_IGNORE);     goto opt; }
-#line 3149 "src/conf/parse_opts.cc"
-yy772:
+#line 3191 "src/conf/parse_opts.cc"
+yy784:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy755;
+       if (yych != 'u') goto yy767;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy755;
+       if (yych != 't') goto yy767;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy755;
+       if (yych != 'e') goto yy767;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy755;
+       if (yych >= 0x01) goto yy767;
        ++YYCURSOR;
-#line 206 "../src/conf/parse_opts.re"
+#line 208 "../src/conf/parse_opts.re"
        { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; }
-#line 3162 "src/conf/parse_opts.cc"
+#line 3204 "src/conf/parse_opts.cc"
 }
-#line 208 "../src/conf/parse_opts.re"
+#line 210 "../src/conf/parse_opts.re"
 
 
 opt_input:
 
-#line 3169 "src/conf/parse_opts.cc"
+#line 3211 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 'b') goto yy780;
-       if (yych <= 'c') goto yy782;
-       if (yych <= 'd') goto yy783;
-yy780:
+       if (yych <= 'b') goto yy792;
+       if (yych <= 'c') goto yy794;
+       if (yych <= 'd') goto yy795;
+yy792:
        ++YYCURSOR;
-yy781:
-#line 212 "../src/conf/parse_opts.re"
+yy793:
+#line 214 "../src/conf/parse_opts.re"
        {
         ERROR("bad argument to option --input "
             "(expected: default | custom): %s", *argv);
     }
-#line 3184 "src/conf/parse_opts.cc"
-yy782:
+#line 3226 "src/conf/parse_opts.cc"
+yy794:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'u') goto yy784;
-       goto yy781;
-yy783:
+       if (yych == 'u') goto yy796;
+       goto yy793;
+yy795:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy786;
-       goto yy781;
-yy784:
+       if (yych == 'e') goto yy798;
+       goto yy793;
+yy796:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy787;
-yy785:
+       if (yych == 's') goto yy799;
+yy797:
        YYCURSOR = YYMARKER;
-       goto yy781;
-yy786:
+       goto yy793;
+yy798:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy788;
-       goto yy785;
-yy787:
+       if (yych == 'f') goto yy800;
+       goto yy797;
+yy799:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy789;
-       goto yy785;
-yy788:
+       if (yych == 't') goto yy801;
+       goto yy797;
+yy800:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy790;
-       goto yy785;
-yy789:
+       if (yych == 'a') goto yy802;
+       goto yy797;
+yy801:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy791;
-       goto yy785;
-yy790:
+       if (yych == 'o') goto yy803;
+       goto yy797;
+yy802:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy792;
-       goto yy785;
-yy791:
+       if (yych == 'u') goto yy804;
+       goto yy797;
+yy803:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy793;
-       goto yy785;
-yy792:
+       if (yych == 'm') goto yy805;
+       goto yy797;
+yy804:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy794;
-       goto yy785;
-yy793:
+       if (yych == 'l') goto yy806;
+       goto yy797;
+yy805:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy795;
-       goto yy785;
-yy794:
+       if (yych <= 0x00) goto yy807;
+       goto yy797;
+yy806:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy797;
-       goto yy785;
-yy795:
+       if (yych == 't') goto yy809;
+       goto yy797;
+yy807:
        ++YYCURSOR;
-#line 217 "../src/conf/parse_opts.re"
+#line 219 "../src/conf/parse_opts.re"
        { opts.set_input_api(INPUT_CUSTOM);  goto opt; }
-#line 3239 "src/conf/parse_opts.cc"
-yy797:
+#line 3281 "src/conf/parse_opts.cc"
+yy809:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy785;
+       if (yych >= 0x01) goto yy797;
        ++YYCURSOR;
-#line 216 "../src/conf/parse_opts.re"
+#line 218 "../src/conf/parse_opts.re"
        { opts.set_input_api(INPUT_DEFAULT); goto opt; }
-#line 3246 "src/conf/parse_opts.cc"
+#line 3288 "src/conf/parse_opts.cc"
 }
-#line 218 "../src/conf/parse_opts.re"
+#line 220 "../src/conf/parse_opts.re"
 
 
 opt_empty_class:
 
-#line 3253 "src/conf/parse_opts.cc"
+#line 3295 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == 'e') goto yy804;
-       if (yych == 'm') goto yy805;
+       if (yych == 'e') goto yy816;
+       if (yych == 'm') goto yy817;
        ++YYCURSOR;
-yy803:
-#line 222 "../src/conf/parse_opts.re"
+yy815:
+#line 224 "../src/conf/parse_opts.re"
        {
         ERROR("bad argument to option --empty-class "
             "(expected: match-empty | match-none | error): %s", *argv);
     }
-#line 3266 "src/conf/parse_opts.cc"
-yy804:
+#line 3308 "src/conf/parse_opts.cc"
+yy816:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'r') goto yy806;
-       goto yy803;
-yy805:
+       if (yych == 'r') goto yy818;
+       goto yy815;
+yy817:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy808;
-       goto yy803;
-yy806:
+       if (yych == 'a') goto yy820;
+       goto yy815;
+yy818:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy809;
-yy807:
+       if (yych == 'r') goto yy821;
+yy819:
        YYCURSOR = YYMARKER;
-       goto yy803;
-yy808:
+       goto yy815;
+yy820:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy810;
-       goto yy807;
-yy809:
+       if (yych == 't') goto yy822;
+       goto yy819;
+yy821:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy811;
-       goto yy807;
-yy810:
+       if (yych == 'o') goto yy823;
+       goto yy819;
+yy822:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy812;
-       goto yy807;
-yy811:
+       if (yych == 'c') goto yy824;
+       goto yy819;
+yy823:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy813;
-       goto yy807;
-yy812:
+       if (yych == 'r') goto yy825;
+       goto yy819;
+yy824:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'h') goto yy814;
-       goto yy807;
-yy813:
+       if (yych == 'h') goto yy826;
+       goto yy819;
+yy825:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy815;
-       goto yy807;
-yy814:
+       if (yych <= 0x00) goto yy827;
+       goto yy819;
+yy826:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy817;
-       goto yy807;
-yy815:
+       if (yych == '-') goto yy829;
+       goto yy819;
+yy827:
        ++YYCURSOR;
-#line 228 "../src/conf/parse_opts.re"
+#line 230 "../src/conf/parse_opts.re"
        { opts.set_empty_class_policy (EMPTY_CLASS_ERROR);       goto opt; }
-#line 3313 "src/conf/parse_opts.cc"
-yy817:
+#line 3355 "src/conf/parse_opts.cc"
+yy829:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy818;
-       if (yych == 'n') goto yy819;
-       goto yy807;
-yy818:
+       if (yych == 'e') goto yy830;
+       if (yych == 'n') goto yy831;
+       goto yy819;
+yy830:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy820;
-       goto yy807;
-yy819:
+       if (yych == 'm') goto yy832;
+       goto yy819;
+yy831:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy821;
-       goto yy807;
-yy820:
+       if (yych == 'o') goto yy833;
+       goto yy819;
+yy832:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy822;
-       goto yy807;
-yy821:
+       if (yych == 'p') goto yy834;
+       goto yy819;
+yy833:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy823;
-       goto yy807;
-yy822:
+       if (yych == 'n') goto yy835;
+       goto yy819;
+yy834:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy824;
-       goto yy807;
-yy823:
+       if (yych == 't') goto yy836;
+       goto yy819;
+yy835:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy825;
-       goto yy807;
-yy824:
+       if (yych == 'e') goto yy837;
+       goto yy819;
+yy836:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'y') goto yy826;
-       goto yy807;
-yy825:
+       if (yych == 'y') goto yy838;
+       goto yy819;
+yy837:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy827;
-       goto yy807;
-yy826:
+       if (yych <= 0x00) goto yy839;
+       goto yy819;
+yy838:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy829;
-       goto yy807;
-yy827:
+       if (yych <= 0x00) goto yy841;
+       goto yy819;
+yy839:
        ++YYCURSOR;
-#line 227 "../src/conf/parse_opts.re"
+#line 229 "../src/conf/parse_opts.re"
        { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE);  goto opt; }
-#line 3359 "src/conf/parse_opts.cc"
-yy829:
+#line 3401 "src/conf/parse_opts.cc"
+yy841:
        ++YYCURSOR;
-#line 226 "../src/conf/parse_opts.re"
+#line 228 "../src/conf/parse_opts.re"
        { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; }
-#line 3364 "src/conf/parse_opts.cc"
+#line 3406 "src/conf/parse_opts.cc"
 }
-#line 229 "../src/conf/parse_opts.re"
+#line 231 "../src/conf/parse_opts.re"
 
 
 opt_dfa_minimization:
 
-#line 3371 "src/conf/parse_opts.cc"
+#line 3413 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == 'm') goto yy835;
-       if (yych == 't') goto yy836;
+       if (yych == 'm') goto yy847;
+       if (yych == 't') goto yy848;
        ++YYCURSOR;
-yy834:
-#line 233 "../src/conf/parse_opts.re"
+yy846:
+#line 235 "../src/conf/parse_opts.re"
        {
         ERROR("bad argument to option --dfa-minimization "
             "(expected: table | moore): %s", *argv);
     }
-#line 3384 "src/conf/parse_opts.cc"
-yy835:
+#line 3426 "src/conf/parse_opts.cc"
+yy847:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'o') goto yy837;
-       goto yy834;
-yy836:
+       if (yych == 'o') goto yy849;
+       goto yy846;
+yy848:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy839;
-       goto yy834;
-yy837:
+       if (yych == 'a') goto yy851;
+       goto yy846;
+yy849:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy840;
-yy838:
+       if (yych == 'o') goto yy852;
+yy850:
        YYCURSOR = YYMARKER;
-       goto yy834;
-yy839:
+       goto yy846;
+yy851:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy841;
-       goto yy838;
-yy840:
+       if (yych == 'b') goto yy853;
+       goto yy850;
+yy852:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy842;
-       goto yy838;
-yy841:
+       if (yych == 'r') goto yy854;
+       goto yy850;
+yy853:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'l') goto yy843;
-       goto yy838;
-yy842:
+       if (yych == 'l') goto yy855;
+       goto yy850;
+yy854:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy844;
-       goto yy838;
-yy843:
+       if (yych == 'e') goto yy856;
+       goto yy850;
+yy855:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy845;
-       goto yy838;
-yy844:
+       if (yych == 'e') goto yy857;
+       goto yy850;
+yy856:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy846;
-       goto yy838;
-yy845:
+       if (yych <= 0x00) goto yy858;
+       goto yy850;
+yy857:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy848;
-       goto yy838;
-yy846:
+       if (yych <= 0x00) goto yy860;
+       goto yy850;
+yy858:
        ++YYCURSOR;
-#line 238 "../src/conf/parse_opts.re"
+#line 240 "../src/conf/parse_opts.re"
        { globopts.dfa_minimization = DFA_MINIMIZATION_MOORE; goto opt; }
-#line 3431 "src/conf/parse_opts.cc"
-yy848:
+#line 3473 "src/conf/parse_opts.cc"
+yy860:
        ++YYCURSOR;
-#line 237 "../src/conf/parse_opts.re"
+#line 239 "../src/conf/parse_opts.re"
        { globopts.dfa_minimization = DFA_MINIMIZATION_TABLE; goto opt; }
-#line 3436 "src/conf/parse_opts.cc"
+#line 3478 "src/conf/parse_opts.cc"
 }
-#line 239 "../src/conf/parse_opts.re"
+#line 241 "../src/conf/parse_opts.re"
 
 
 opt_posix_closure:
 
-#line 3443 "src/conf/parse_opts.cc"
+#line 3485 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == 'g') goto yy854;
+       if (yych == 'g') goto yy866;
        ++YYCURSOR;
-yy853:
-#line 243 "../src/conf/parse_opts.re"
+yy865:
+#line 245 "../src/conf/parse_opts.re"
        {
         ERROR("bad argument to option --posix_closure "
             "(expected: gor1 | gtop): %s", *argv);
     }
-#line 3455 "src/conf/parse_opts.cc"
-yy854:
+#line 3497 "src/conf/parse_opts.cc"
+yy866:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'o') goto yy855;
-       if (yych == 't') goto yy857;
-       goto yy853;
-yy855:
+       if (yych == 'o') goto yy867;
+       if (yych == 't') goto yy869;
+       goto yy865;
+yy867:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy858;
-yy856:
+       if (yych == 'r') goto yy870;
+yy868:
        YYCURSOR = YYMARKER;
-       goto yy853;
-yy857:
+       goto yy865;
+yy869:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'o') goto yy859;
-       goto yy856;
-yy858:
+       if (yych == 'o') goto yy871;
+       goto yy868;
+yy870:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '1') goto yy860;
-       goto yy856;
-yy859:
+       if (yych == '1') goto yy872;
+       goto yy868;
+yy871:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'p') goto yy861;
-       goto yy856;
-yy860:
+       if (yych == 'p') goto yy873;
+       goto yy868;
+yy872:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy862;
-       goto yy856;
-yy861:
+       if (yych <= 0x00) goto yy874;
+       goto yy868;
+yy873:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= 0x00) goto yy864;
-       goto yy856;
-yy862:
+       if (yych <= 0x00) goto yy876;
+       goto yy868;
+yy874:
        ++YYCURSOR;
-#line 247 "../src/conf/parse_opts.re"
+#line 249 "../src/conf/parse_opts.re"
        { globopts.posix_closure = POSIX_CLOSURE_GOR1; goto opt; }
-#line 3491 "src/conf/parse_opts.cc"
-yy864:
+#line 3533 "src/conf/parse_opts.cc"
+yy876:
        ++YYCURSOR;
-#line 248 "../src/conf/parse_opts.re"
+#line 250 "../src/conf/parse_opts.re"
        { globopts.posix_closure = POSIX_CLOSURE_GTOP; goto opt; }
-#line 3496 "src/conf/parse_opts.cc"
+#line 3538 "src/conf/parse_opts.cc"
 }
-#line 249 "../src/conf/parse_opts.re"
+#line 251 "../src/conf/parse_opts.re"
 
 
 end:
index 3966c00e7d5080157b3a13eaffed694179997b87..30bd14ec5de25bffb0ee46c449b4d540d11e4813 100644 (file)
@@ -80,7 +80,7 @@ static smart_ptr<DFA> ast_to_dfa(const spec_t &spec, Output &output)
     insert_fallback_tags(dfa);
 
     // try to minimize the number of tag variables
-    compact_and_optimize_tags(dfa, opts->optimize_tags);
+    compact_and_optimize_tags(opts, dfa);
     DDUMP_DFA_TAGOPT(opts, dfa);
 
     freeze_tags(dfa);
index 67603d5272578dbe6e11ebd713404f6b682397a8..4eca3ef7da03c93812ccc6cfe92a392436c5a717 100644 (file)
@@ -65,6 +65,8 @@ const uint32_t NOEOF = ~0u - 1;
     CONSTOPT (bool, dump_dfa_tagopt, false) \
     CONSTOPT (bool, dump_dfa_min, false) \
     CONSTOPT (bool, dump_adfa, false) \
+    CONSTOPT (bool, dump_cfg, false) \
+    CONSTOPT (bool, dump_interf, false) \
     CONSTOPT (bool, dump_closure_stats, false) \
     /* end */
 
index 311bf0f396e22691c4573ba2619f2bbc991a4395..be2e9a52a7da0518abbfd8eb220545f408981472 100644 (file)
@@ -175,6 +175,8 @@ opt_long:
     "dump-dfa-tagopt"       end { globopts.dump_dfa_tagopt = true;    goto opt; }
     "dump-dfa-min"          end { globopts.dump_dfa_min = true;       goto opt; }
     "dump-adfa"             end { globopts.dump_adfa = true;          goto opt; }
+    "dump-cfg"              end { globopts.dump_cfg = true;           goto opt; }
+    "dump-interf"           end { globopts.dump_interf = true;        goto opt; }
     "dump-closure-stats"    end { globopts.dump_closure_stats = true; goto opt; }
 */
 
index c542b13a0fb178b8d4f68e2974f039fba0c23311..44f0688e514a74341fd84f0662708b46ffc98898 100644 (file)
@@ -19,6 +19,8 @@ struct dump_dfa_t { dump_dfa_t(const opt_t *) {} };
 #define DDUMP_DFA_MIN(opts, dfa)
 #define DDUMP_ADFA(opts, adfa)
 #define DDUMP_CLSTATS(ctx)
+#define DDUMP_CFG(opts, cfg, live)
+#define DDUMP_INTERF(opts, cfg, itf)
 #define DINCCOUNT_CLSCANS(ctx)
 #define DINCCOUNT_CLPREC(ctx)
 #define DINCCOUNT_CLLENGTH(ctx, len)
@@ -66,6 +68,8 @@ struct dump_dfa_t
 #define DDUMP_DFA_MIN(opts, dfa)     if (opts->dump_dfa_min) dump_dfa(dfa)
 #define DDUMP_ADFA(opts, adfa)       if (opts->dump_adfa) dump_adfa(adfa)
 #define DDUMP_CLSTATS(ctx)           dump_clstats(ctx)
+#define DDUMP_CFG(opts, cfg, live)   if (opts->dump_cfg) dump_cfg(cfg, live)
+#define DDUMP_INTERF(opts, cfg, itf) if (opts->dump_interf) dump_interf(cfg, itf)
 #define DINCCOUNT_CLSCANS(ctx)       ++ctx.dc_clstats.nscans
 #define DINCCOUNT_CLPREC(ctx)        ++ctx.dc_clstats.nprec
 #define DINCCOUNT_CLLENGTH(ctx, len) ctx.dc_clstats.length += len
index 5fd8fbfbf07814b0f47e52381ba055187970494b..b1804d801cd82c159c729512147b5efdae85daec 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "src/util/c99_stdint.h"
 
+#include "src/conf/opt.h"
 #include "src/dfa/dfa.h"
 #include "src/re/tag.h"
 #include "src/util/forbid_copy.h"
index 723bf448a3f70f82bc4954bf7be9231f1d6aa7ee..368bc2634550040df5439c78d30ef539e5ae1be1 100644 (file)
@@ -8,7 +8,7 @@
 namespace re2c
 {
 
-void compact_and_optimize_tags(dfa_t &dfa, bool optimize)
+void compact_and_optimize_tags(const opt_t *opts, dfa_t &dfa)
 {
     tagver_t maxver = dfa.maxtagver;
     if (maxver > 0) {
@@ -20,18 +20,26 @@ void compact_and_optimize_tags(dfa_t &dfa, bool optimize)
         maxver = cfg_t::compact(cfg, ver2new);
         cfg_t::renaming(cfg, ver2new, maxver);
 
-        if (optimize && maxver > 0) {
+        if (opts->optimize_tags && maxver > 0) {
             nver = static_cast<size_t>(maxver) + 1;
             bool *live = new bool[cfg.nbbfin * nver];
             bool *interf = new bool[nver * nver];
 
             static const uint32_t NPASS = 2;
             for (uint32_t n = 0; n < NPASS; ++n) {
+
                 cfg_t::liveness_analysis(cfg, live);
+                DDUMP_CFG(opts, cfg, live);
+
                 cfg_t::dead_code_elimination(cfg, live);
+
                 cfg_t::interference(cfg, live, interf);
+                DDUMP_INTERF(opts, cfg, interf);
+
                 maxver = cfg_t::variable_allocation(cfg, interf, ver2new);
+
                 cfg_t::renaming(cfg, ver2new, maxver);
+
                 cfg_t::normalization(cfg);
             }
 
index 8a75a39b4e6e4b09cdfff9c974000c0b2f91acd0..d642d17fd510edd696c503c4025f850e7485890b 100644 (file)
@@ -88,7 +88,7 @@ void minimization(dfa_t &dfa, dfa_minimization_t type);
 void fillpoints(const dfa_t &dfa, std::vector<size_t> &fill);
 void cutoff_dead_rules(dfa_t &dfa, size_t defrule, const std::string &cond, Warn &warn);
 void insert_fallback_tags(dfa_t &dfa);
-void compact_and_optimize_tags(dfa_t &dfa, bool optimize);
+void compact_and_optimize_tags(const opt_t *opts, dfa_t &dfa);
 void freeze_tags(dfa_t &dfa);
 
 } // namespace re2c