]> granicus.if.org Git - re2c/commitdiff
Added configurations for all command-line options.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 5 Apr 2016 11:38:53 +0000 (12:38 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 5 Apr 2016 11:38:53 +0000 (12:38 +0100)
re2c/bootstrap/src/parse/lex_conf.cc
re2c/src/codegen/output.cc
re2c/src/codegen/output.h
re2c/src/conf/opt.cc
re2c/src/conf/opt.h
re2c/src/ir/skeleton/generate_data.cc
re2c/src/ir/skeleton/skeleton.h
re2c/src/main.cc
re2c/src/parse/lex_conf.re
re2c/src/parse/scanner.h

index dc04017e4baaa07402973d00ef87d5a902e91429..48ba8d2fe8538f2173509c368c0dfcf525b78c54 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Sat Apr  2 18:14:17 2016 */
+/* Generated by re2c 0.16 on Tue Apr  5 11:39:03 2016 */
 #line 1 "../src/parse/lex_conf.re"
 #include "src/util/c99_stdint.h"
 #include <string>
@@ -124,48 +124,96 @@ yy12:
        if (yych == 'o') goto yy22;
 yy13:
        cur = ptr;
-       if (yyaccept <= 5) {
-               if (yyaccept <= 2) {
-                       if (yyaccept <= 1) {
-                               if (yyaccept == 0) {
-                                       goto yy3;
+       if (yyaccept <= 11) {
+               if (yyaccept <= 5) {
+                       if (yyaccept <= 2) {
+                               if (yyaccept <= 1) {
+                                       if (yyaccept == 0) {
+                                               goto yy3;
+                                       } else {
+                                               goto yy97;
+                                       }
                                } else {
-                                       goto yy124;
+                                       goto yy99;
                                }
                        } else {
-                               goto yy169;
+                               if (yyaccept <= 4) {
+                                       if (yyaccept == 3) {
+                                               goto yy101;
+                                       } else {
+                                               goto yy103;
+                                       }
+                               } else {
+                                       goto yy105;
+                               }
                        }
                } else {
-                       if (yyaccept <= 4) {
-                               if (yyaccept == 3) {
-                                       goto yy217;
+                       if (yyaccept <= 8) {
+                               if (yyaccept <= 7) {
+                                       if (yyaccept == 6) {
+                                               goto yy109;
+                                       } else {
+                                               goto yy112;
+                                       }
                                } else {
-                                       goto yy225;
+                                       goto yy114;
                                }
                        } else {
-                               goto yy275;
+                               if (yyaccept <= 10) {
+                                       if (yyaccept == 9) {
+                                               goto yy116;
+                                       } else {
+                                               goto yy118;
+                                       }
+                               } else {
+                                       goto yy120;
+                               }
                        }
                }
        } else {
-               if (yyaccept <= 8) {
-                       if (yyaccept <= 7) {
-                               if (yyaccept == 6) {
-                                       goto yy344;
+               if (yyaccept <= 17) {
+                       if (yyaccept <= 14) {
+                               if (yyaccept <= 13) {
+                                       if (yyaccept == 12) {
+                                               goto yy122;
+                                       } else {
+                                               goto yy181;
+                                       }
                                } else {
-                                       goto yy379;
+                                       goto yy273;
                                }
                        } else {
-                               goto yy400;
+                               if (yyaccept <= 16) {
+                                       if (yyaccept == 15) {
+                                               goto yy346;
+                                       } else {
+                                               goto yy354;
+                                       }
+                               } else {
+                                       goto yy426;
+                               }
                        }
                } else {
-                       if (yyaccept <= 10) {
-                               if (yyaccept == 9) {
-                                       goto yy406;
+                       if (yyaccept <= 20) {
+                               if (yyaccept <= 19) {
+                                       if (yyaccept == 18) {
+                                               goto yy534;
+                                       } else {
+                                               goto yy586;
+                                       }
                                } else {
-                                       goto yy443;
+                                       goto yy625;
                                }
                        } else {
-                               goto yy446;
+                               if (yyaccept <= 22) {
+                                       if (yyaccept == 21) {
+                                               goto yy631;
+                                       } else {
+                                               goto yy708;
+                                       }
+                               } else {
+                                       goto yy711;
+                               }
                        }
                }
        }
@@ -404,1625 +452,3066 @@ yy67:
        goto yy13;
 yy68:
        yych = (unsigned char)*++cur;
-       if (yych <= 'e') {
-               if (yych == '8') goto yy86;
-               if (yych <= 'd') goto yy13;
-               goto yy86;
-       } else {
-               if (yych <= 'u') {
-                       if (yych <= 't') goto yy13;
-                       goto yy86;
-               } else {
-                       if (yych <= 'v') goto yy13;
-                       if (yych <= 'x') goto yy86;
-                       goto yy13;
-               }
+       switch (yych) {
+       case '8':       goto yy86;
+       case 'C':       goto yy88;
+       case 'D':       goto yy90;
+       case 'F':       goto yy92;
+       case 'S':       goto yy94;
+       case 'b':       goto yy96;
+       case 'c':       goto yy98;
+       case 'd':       goto yy100;
+       case 'e':       goto yy102;
+       case 'f':       goto yy104;
+       case 'g':       goto yy106;
+       case 'i':       goto yy108;
+       case 'n':       goto yy110;
+       case 'o':       goto yy111;
+       case 'r':       goto yy113;
+       case 's':       goto yy115;
+       case 't':       goto yy117;
+       case 'u':       goto yy119;
+       case 'w':       goto yy121;
+       case 'x':       goto yy123;
+       default:        goto yy13;
        }
 yy69:
        yych = (unsigned char)*++cur;
-       if (yych == ':') goto yy88;
+       if (yych == ':') goto yy125;
        goto yy13;
 yy70:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy89;
+       if (yych == 'y') goto yy126;
        goto yy13;
 yy71:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy90;
+       if (yych == 'r') goto yy127;
        goto yy13;
 yy72:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy91;
+       if (yych == 'a') goto yy128;
        goto yy13;
 yy73:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy92;
-       if (yych == 'n') goto yy93;
+       if (yych == 'a') goto yy129;
+       if (yych == 'n') goto yy130;
        goto yy13;
 yy74:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy94;
+       if (yych == 'l') goto yy131;
        goto yy13;
 yy75:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy95;
+       if (yych == 'e') goto yy132;
        goto yy13;
 yy76:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy96;
+       if (yych == 'o') goto yy133;
        goto yy13;
 yy77:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy97;
+       if (yych == 'm') goto yy134;
        goto yy13;
 yy78:
        yych = (unsigned char)*++cur;
-       if (yych == ':') goto yy98;
+       if (yych == ':') goto yy135;
        goto yy13;
 yy79:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy99;
+       if (yych == 'h') goto yy136;
        goto yy13;
 yy80:
        yych = (unsigned char)*++cur;
-       if (yych == 'v') goto yy100;
+       if (yych == 'v') goto yy137;
        goto yy13;
 yy81:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy101;
+       if (yych == 't') goto yy138;
        goto yy13;
 yy82:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy102;
+       if (yych == 'm') goto yy139;
        goto yy13;
 yy83:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy103;
+       if (yych == 'f') goto yy140;
        goto yy13;
 yy84:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy104;
+       if (yych == 's') goto yy141;
        goto yy13;
 yy85:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy105;
+       if (yych == 'Y') goto yy142;
        goto yy13;
 yy86:
        ++cur;
-#line 45 "../src/parse/lex_conf.re"
-       {
-               Enc::type_t enc = Enc::ASCII;
-               switch (cur[-1])
-               {
-                       case 'e': enc = Enc::EBCDIC; break;
-                       case 'w': enc = Enc::UCS2;   break;
-                       case 'x': enc = Enc::UTF16;  break;
-                       case 'u': enc = Enc::UTF32;  break;
-                       case '8': enc = Enc::UTF8;   break;
-               }
-               const int32_t n = lex_conf_number ();
-               if (n == 0)
-               {
-                       opts.unset_encoding (enc);
-               }
-               else if (!opts.set_encoding (enc))
-               {
-                       fatalf ("Cannot set %s encoding: please reset %s encoding first"
-                               , Enc::name (enc)
-                               , Enc::name (opts->encoding.type ()));
-               }
-               return;
-       }
-#line 517 "src/parse/lex_conf.cc"
+#line 66 "../src/parse/lex_conf.re"
+       { lex_conf_enc(Enc::UTF8);   return; }
+#line 552 "src/parse/lex_conf.cc"
 yy88:
-       yych = (unsigned char)*++cur;
-       if (yych <= 'r') goto yy13;
-       if (yych <= 's') goto yy106;
-       if (yych <= 't') goto yy107;
-       goto yy13;
-yy89:
-       yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy108;
-       goto yy13;
+       ++cur;
+#line 49 "../src/parse/lex_conf.re"
+       { opts.set_contexts(lex_conf_bool());          return; }
+#line 557 "src/parse/lex_conf.cc"
 yy90:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy109;
-       goto yy13;
-yy91:
-       yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy110;
-       goto yy13;
+       ++cur;
+#line 44 "../src/parse/lex_conf.re"
+       { opts.set_target(opt_t::DOT);      lex_conf_semicolon(); return; }
+#line 562 "src/parse/lex_conf.cc"
 yy92:
-       yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy111;
-       goto yy13;
-yy93:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy112;
-       goto yy13;
+       ++cur;
+#line 52 "../src/parse/lex_conf.re"
+       { opts.set_FFlag(lex_conf_bool());             return; }
+#line 567 "src/parse/lex_conf.cc"
 yy94:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy113;
-       goto yy13;
-yy95:
-       yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy114;
-       goto yy13;
+       ++cur;
+#line 45 "../src/parse/lex_conf.re"
+       { opts.set_target(opt_t::SKELETON); lex_conf_semicolon(); return; }
+#line 572 "src/parse/lex_conf.cc"
 yy96:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy116;
-       goto yy13;
+       yyaccept = 1;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'i') goto yy143;
 yy97:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy117;
-       goto yy13;
+#line 47 "../src/parse/lex_conf.re"
+       { opts.set_bFlag(lex_conf_bool());             return; }
+#line 580 "src/parse/lex_conf.cc"
 yy98:
-       yych = (unsigned char)*++cur;
-       if (yych <= 'd') {
-               if (yych == 'c') goto yy118;
-               goto yy13;
-       } else {
-               if (yych <= 'e') goto yy119;
-               if (yych == 'p') goto yy120;
-               goto yy13;
-       }
+       yyaccept = 2;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'a') goto yy144;
+       if (yych == 'o') goto yy145;
 yy99:
-       yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy121;
-       goto yy13;
+#line 48 "../src/parse/lex_conf.re"
+       { opts.set_cFlag(lex_conf_bool());             return; }
+#line 589 "src/parse/lex_conf.cc"
 yy100:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy122;
-       goto yy13;
+       yyaccept = 3;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych <= 'd') goto yy101;
+       if (yych <= 'e') goto yy146;
+       if (yych <= 'f') goto yy147;
 yy101:
-       yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy123;
-       goto yy13;
+#line 50 "../src/parse/lex_conf.re"
+       { opts.set_dFlag(lex_conf_bool());             return; }
+#line 599 "src/parse/lex_conf.cc"
 yy102:
-       yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy125;
-       goto yy13;
+       yyaccept = 4;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych <= 'l') {
+               if (yych == 'c') goto yy148;
+       } else {
+               if (yych <= 'm') goto yy149;
+               if (yych <= 'n') goto yy150;
+       }
 yy103:
-       yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy126;
-       goto yy13;
+#line 62 "../src/parse/lex_conf.re"
+       { lex_conf_enc(Enc::EBCDIC); return; }
+#line 612 "src/parse/lex_conf.cc"
 yy104:
-       yych = (unsigned char)*++cur;
-       if (yych == ':') goto yy127;
-       goto yy13;
+       yyaccept = 5;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'l') goto yy151;
 yy105:
-       yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy128;
-       goto yy13;
+#line 51 "../src/parse/lex_conf.re"
+       { opts.set_fFlag(lex_conf_bool());             return; }
+#line 620 "src/parse/lex_conf.cc"
 yy106:
-       yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy129;
-       goto yy13;
-yy107:
-       yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy130;
-       goto yy13;
+       ++cur;
+#line 53 "../src/parse/lex_conf.re"
+       { opts.set_gFlag(lex_conf_bool());             return; }
+#line 625 "src/parse/lex_conf.cc"
 yy108:
-       yych = (unsigned char)*++cur;
-       if (yych == 'F') goto yy131;
-       if (yych == 'N') goto yy132;
-       goto yy13;
+       yyaccept = 6;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'n') goto yy152;
 yy109:
-       yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy133;
-       goto yy13;
+#line 54 "../src/parse/lex_conf.re"
+       { opts.set_iFlag(lex_conf_bool());             return; }
+#line 633 "src/parse/lex_conf.cc"
 yy110:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy134;
+       if (yych == 'e') goto yy153;
+       if (yych == 'o') goto yy154;
        goto yy13;
 yy111:
-       yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy135;
-       goto yy13;
+       yyaccept = 7;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'u') goto yy155;
 yy112:
-       yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy136;
-       goto yy13;
+#line 68 "../src/parse/lex_conf.re"
+       { if (!opts.output(lex_conf_string())) exit(1); return; }
+#line 646 "src/parse/lex_conf.cc"
 yy113:
-       yych = (unsigned char)*++cur;
-       if (yych == ':') goto yy137;
-       goto yy13;
+       yyaccept = 8;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'e') goto yy156;
 yy114:
-       ++cur;
-#line 95 "../src/parse/lex_conf.re"
-       { opts.set_yybmHexTable (lex_conf_number () != 0); return; }
-#line 635 "src/parse/lex_conf.cc"
+#line 55 "../src/parse/lex_conf.re"
+       { opts.set_rFlag(lex_conf_bool());             return; }
+#line 654 "src/parse/lex_conf.cc"
+yy115:
+       yyaccept = 9;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'k') goto yy157;
+       if (yych == 't') goto yy158;
 yy116:
-       yych = (unsigned char)*++cur;
-       if (yych == 'v') goto yy138;
-       goto yy13;
+#line 56 "../src/parse/lex_conf.re"
+       { opts.set_sFlag(lex_conf_bool());             return; }
+#line 663 "src/parse/lex_conf.cc"
 yy117:
-       yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy139;
-       goto yy13;
+       yyaccept = 10;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'y') goto yy159;
 yy118:
-       yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy141;
-       goto yy13;
+#line 69 "../src/parse/lex_conf.re"
+       { opts.set_header_file(lex_conf_string()); return; }
+#line 671 "src/parse/lex_conf.cc"
 yy119:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy142;
-       goto yy13;
+       yyaccept = 11;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'n') goto yy160;
+       if (yych == 't') goto yy161;
 yy120:
-       yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy143;
-       goto yy13;
+#line 63 "../src/parse/lex_conf.re"
+       { lex_conf_enc(Enc::UTF32);  return; }
+#line 680 "src/parse/lex_conf.cc"
 yy121:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy144;
-       goto yy13;
+       yyaccept = 12;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'i') goto yy162;
 yy122:
-       yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy145;
-       goto yy13;
+#line 64 "../src/parse/lex_conf.re"
+       { lex_conf_enc(Enc::UCS2);   return; }
+#line 688 "src/parse/lex_conf.cc"
 yy123:
-       yyaccept = 1;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == '@') goto yy146;
-yy124:
-#line 79 "../src/parse/lex_conf.re"
-       { opts.set_condGoto         (lex_conf_string ()); return; }
-#line 671 "src/parse/lex_conf.cc"
+       ++cur;
+#line 65 "../src/parse/lex_conf.re"
+       { lex_conf_enc(Enc::UTF16);  return; }
+#line 693 "src/parse/lex_conf.cc"
 yy125:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy147;
+       if (yych <= 'r') goto yy13;
+       if (yych <= 's') goto yy163;
+       if (yych <= 't') goto yy164;
        goto yy13;
 yy126:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy148;
+       if (yych == 'y') goto yy165;
        goto yy13;
 yy127:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy150;
-       if (yych == 'p') goto yy151;
+       if (yych == 'e') goto yy166;
        goto yy13;
 yy128:
        yych = (unsigned char)*++cur;
-       switch (yych) {
-       case 'B':       goto yy152;
-       case 'C':       goto yy153;
-       case 'D':       goto yy154;
-       case 'F':       goto yy155;
-       case 'G':       goto yy156;
-       case 'L':       goto yy157;
-       case 'M':       goto yy158;
-       case 'P':       goto yy159;
-       case 'R':       goto yy160;
-       case 'S':       goto yy161;
-       default:        goto yy13;
-       }
+       if (yych == 'b') goto yy167;
+       goto yy13;
 yy129:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy162;
+       if (yych == 'b') goto yy168;
        goto yy13;
 yy130:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy163;
+       if (yych == 'e') goto yy169;
        goto yy13;
 yy131:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy165;
+       if (yych == 'e') goto yy170;
        goto yy13;
 yy132:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy166;
+       if (yych == 'x') goto yy171;
        goto yy13;
 yy133:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy167;
+       if (yych == 'n') goto yy173;
        goto yy13;
 yy134:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy168;
+       if (yych == 'i') goto yy174;
        goto yy13;
 yy135:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy170;
-       goto yy13;
+       if (yych <= 'd') {
+               if (yych == 'c') goto yy175;
+               goto yy13;
+       } else {
+               if (yych <= 'e') goto yy176;
+               if (yych == 'p') goto yy177;
+               goto yy13;
+       }
 yy136:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy171;
+       if (yych == 'r') goto yy178;
        goto yy13;
 yy137:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy172;
+       if (yych == 'i') goto yy179;
        goto yy13;
 yy138:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy173;
+       if (yych == 'o') goto yy180;
        goto yy13;
 yy139:
-       ++cur;
-#line 143 "../src/parse/lex_conf.re"
-       { opts.set_bEmitYYCh      (lex_conf_number () != 0); return; }
-#line 744 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy182;
+       goto yy13;
+yy140:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy183;
+       goto yy13;
 yy141:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy174;
+       if (yych == ':') goto yy184;
        goto yy13;
 yy142:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy175;
+       if (yych == 'Y') goto yy185;
        goto yy13;
 yy143:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy176;
+       if (yych == 't') goto yy186;
        goto yy13;
 yy144:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy177;
+       if (yych == 's') goto yy187;
        goto yy13;
 yy145:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy178;
+       if (yych <= 'l') goto yy13;
+       if (yych <= 'm') goto yy188;
+       if (yych <= 'n') goto yy189;
        goto yy13;
 yy146:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy179;
+       if (yych == 'b') goto yy190;
        goto yy13;
 yy147:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy180;
+       if (yych == 'a') goto yy191;
        goto yy13;
 yy148:
-       ++cur;
-#line 75 "../src/parse/lex_conf.re"
-       { opts.set_condPrefix       (lex_conf_string ()); return; }
-#line 777 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy192;
+       goto yy13;
+yy149:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy193;
+       if (yych == 'p') goto yy194;
+       goto yy13;
 yy150:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy181;
+       if (yych == 'c') goto yy195;
        goto yy13;
 yy151:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy182;
+       if (yych == 'e') goto yy196;
        goto yy13;
 yy152:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy183;
+       if (yych == 'p') goto yy197;
        goto yy13;
 yy153:
        yych = (unsigned char)*++cur;
-       if (yych <= 'S') {
-               if (yych == 'O') goto yy184;
-               goto yy13;
-       } else {
-               if (yych <= 'T') goto yy185;
-               if (yych <= 'U') goto yy186;
-               goto yy13;
-       }
+       if (yych == 's') goto yy198;
+       goto yy13;
 yy154:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy187;
-       if (yych == 'I') goto yy188;
+       if (yych == '-') goto yy199;
        goto yy13;
 yy155:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy189;
+       if (yych == 't') goto yy200;
        goto yy13;
 yy156:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy190;
+       if (yych == 'u') goto yy201;
        goto yy13;
 yy157:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy191;
-       if (yych == 'I') goto yy192;
+       if (yych == 'e') goto yy202;
        goto yy13;
 yy158:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy193;
+       if (yych == 'a') goto yy203;
+       if (yych == 'o') goto yy204;
        goto yy13;
 yy159:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy194;
+       if (yych == 'p') goto yy205;
        goto yy13;
 yy160:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy195;
+       if (yych == 'i') goto yy206;
        goto yy13;
 yy161:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy196;
-       if (yych == 'K') goto yy197;
+       if (yych == 'f') goto yy207;
        goto yy13;
 yy162:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy198;
+       if (yych == 'd') goto yy208;
        goto yy13;
 yy163:
-       ++cur;
-#line 128 "../src/parse/lex_conf.re"
-       {
-               const int32_t n = lex_conf_number ();
-               if (n < 0)
-               {
-                       fatal ("configuration 'indent:top' must be nonnegative");
-               }
-               opts.set_topIndent (static_cast<uint32_t> (n));
-               return;
-       }
-#line 851 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy209;
+       goto yy13;
+yy164:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy210;
+       goto yy13;
 yy165:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy199;
+       if (yych == 'F') goto yy211;
+       if (yych == 'N') goto yy212;
        goto yy13;
 yy166:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy200;
+       if (yych == 'f') goto yy213;
        goto yy13;
 yy167:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy201;
+       if (yych == 'e') goto yy214;
        goto yy13;
 yy168:
-       yyaccept = 2;
-       yych = (unsigned char)*(ptr = ++cur);
-       ctx = cur;
-       if (yybm[0+yych] & 64) {
-               goto yy203;
-       }
-       if (yych == '=') goto yy205;
-yy169:
-#line 156 "../src/parse/lex_conf.re"
-       { out.set_user_start_label (lex_conf_string ()); return; }
-#line 875 "src/parse/lex_conf.cc"
-yy170:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy207;
+       if (yych == 'o') goto yy215;
        goto yy13;
-yy171:
+yy169:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy209;
+       if (yych == 'x') goto yy216;
        goto yy13;
-yy172:
+yy170:
        yych = (unsigned char)*++cur;
-       if (yych == 'y') goto yy210;
+       if (yych == ':') goto yy217;
        goto yy13;
+yy171:
+       ++cur;
+#line 102 "../src/parse/lex_conf.re"
+       { opts.set_yybmHexTable (lex_conf_bool()); return; }
+#line 895 "src/parse/lex_conf.cc"
 yy173:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy211;
+       if (yych == 'v') goto yy218;
        goto yy13;
 yy174:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy212;
+       if (yych == 't') goto yy219;
        goto yy13;
 yy175:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy213;
+       if (yych == 'h') goto yy221;
        goto yy13;
 yy176:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy214;
+       if (yych == 'n') goto yy222;
        goto yy13;
 yy177:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy215;
+       if (yych == 'a') goto yy223;
        goto yy13;
 yy178:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy216;
+       if (yych == 'e') goto yy224;
        goto yy13;
 yy179:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy218;
+       if (yych == 'd') goto yy225;
        goto yy13;
 yy180:
-       yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy219;
-       goto yy13;
+       yyaccept = 13;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == '@') goto yy226;
 yy181:
-       yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy220;
-       goto yy13;
+#line 86 "../src/parse/lex_conf.re"
+       { opts.set_condGoto         (lex_conf_string ()); return; }
+#line 931 "src/parse/lex_conf.cc"
 yy182:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy221;
+       if (yych == 'r') goto yy227;
        goto yy13;
 yy183:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy222;
+       if (yych == 'x') goto yy228;
        goto yy13;
 yy184:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy223;
+       if (yych == 'e') goto yy230;
+       if (yych == 'p') goto yy231;
        goto yy13;
 yy185:
        yych = (unsigned char)*++cur;
-       if (yych <= 'W') goto yy13;
-       if (yych <= 'X') goto yy224;
-       if (yych <= 'Y') goto yy226;
-       goto yy13;
+       switch (yych) {
+       case 'B':       goto yy232;
+       case 'C':       goto yy233;
+       case 'D':       goto yy234;
+       case 'F':       goto yy235;
+       case 'G':       goto yy236;
+       case 'L':       goto yy237;
+       case 'M':       goto yy238;
+       case 'P':       goto yy239;
+       case 'R':       goto yy240;
+       case 'S':       goto yy241;
+       default:        goto yy13;
+       }
 yy186:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy227;
+       if (yych == '-') goto yy242;
        goto yy13;
 yy187:
        yych = (unsigned char)*++cur;
-       if (yych == 'B') goto yy228;
+       if (yych == 'e') goto yy243;
        goto yy13;
 yy188:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy229;
+       if (yych == 'p') goto yy244;
        goto yy13;
 yy189:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy230;
+       if (yych == 't') goto yy245;
        goto yy13;
 yy190:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy231;
+       if (yych == 'u') goto yy246;
        goto yy13;
 yy191:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy232;
+       if (yych == '-') goto yy247;
        goto yy13;
 yy192:
        yych = (unsigned char)*++cur;
-       if (yych == 'M') goto yy233;
-       goto yy13;
+       goto yy103;
 yy193:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy234;
+       if (yych == 't') goto yy248;
        goto yy13;
 yy194:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy235;
+       if (yych == 't') goto yy249;
        goto yy13;
 yy195:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy236;
+       if (yych == 'o') goto yy250;
        goto yy13;
 yy196:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy237;
+       if (yych == 'x') goto yy251;
        goto yy13;
 yy197:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy238;
+       if (yych == 'u') goto yy252;
        goto yy13;
 yy198:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy239;
+       if (yych == 't') goto yy253;
        goto yy13;
 yy199:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy240;
-       goto yy13;
+       if (yych <= 'f') {
+               if (yych == 'd') goto yy254;
+               goto yy13;
+       } else {
+               if (yych <= 'g') goto yy255;
+               if (yych == 'v') goto yy256;
+               goto yy13;
+       }
 yy200:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy241;
+       if (yych == 'p') goto yy257;
        goto yy13;
 yy201:
-       ++cur;
-#line 152 "../src/parse/lex_conf.re"
-       { opts.set_labelPrefix (lex_conf_string ()); return; }
-#line 1006 "src/parse/lex_conf.cc"
-yy203:
-       ++cur;
-       if (lim <= cur) fill(1);
-       yych = (unsigned char)*cur;
-       if (yybm[0+yych] & 64) {
-               goto yy203;
-       }
-       if (yych != '=') goto yy13;
-yy205:
-       ++cur;
-       if ((lim - cur) < 2) fill(2);
-       yych = (unsigned char)*cur;
-       if (yych <= ',') {
-               if (yych <= '\t') {
-                       if (yych <= 0x08) goto yy13;
-                       goto yy205;
-               } else {
-                       if (yych == ' ') goto yy205;
-                       goto yy13;
-               }
-       } else {
-               if (yych <= '/') {
-                       if (yych <= '-') goto yy243;
-                       goto yy13;
-               } else {
-                       if (yych <= '0') goto yy244;
-                       if (yych <= '9') goto yy246;
-                       goto yy13;
-               }
-       }
-yy207:
-       ++cur;
-#line 90 "../src/parse/lex_conf.re"
-       { opts.set_bUseStateAbort  (lex_conf_number () != 0); return; }
-#line 1041 "src/parse/lex_conf.cc"
-yy209:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy248;
+       if (yych == 's') goto yy258;
        goto yy13;
-yy210:
+yy202:
        yych = (unsigned char)*++cur;
-       if (yych <= 'c') {
-               if (yych <= '`') goto yy13;
-               if (yych <= 'a') goto yy249;
-               if (yych <= 'b') goto yy250;
-               goto yy251;
-       } else {
-               if (yych <= 'r') goto yy13;
-               if (yych <= 's') goto yy252;
-               if (yych <= 't') goto yy253;
-               goto yy13;
-       }
-yy211:
+       if (yych == 'l') goto yy259;
+       goto yy13;
+yy203:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy254;
+       if (yych == 'r') goto yy260;
        goto yy13;
-yy212:
+yy204:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy255;
+       if (yych == 'r') goto yy261;
        goto yy13;
-yy213:
+yy205:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy257;
+       if (yych == 'e') goto yy262;
+       goto yy13;
+yy206:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy263;
+       goto yy13;
+yy207:
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy264;
+       goto yy13;
+yy208:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy265;
+       goto yy13;
+yy209:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy266;
+       goto yy13;
+yy210:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy267;
+       goto yy13;
+yy211:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy269;
+       goto yy13;
+yy212:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy270;
+       goto yy13;
+yy213:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy271;
        goto yy13;
 yy214:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy258;
+       if (yych == 'l') goto yy272;
        goto yy13;
 yy215:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy259;
+       if (yych == 'r') goto yy274;
        goto yy13;
 yy216:
-       yyaccept = 3;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == '@') goto yy260;
-yy217:
-#line 77 "../src/parse/lex_conf.re"
-       { opts.set_condDivider      (lex_conf_string ()); return; }
-#line 1086 "src/parse/lex_conf.cc"
-yy218:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy261;
+       if (yych == 't') goto yy275;
        goto yy13;
-yy219:
+yy217:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy262;
+       if (yych == 'y') goto yy276;
        goto yy13;
-yy220:
+yy218:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy263;
+       if (yych == 'e') goto yy277;
        goto yy13;
+yy219:
+       ++cur;
+#line 150 "../src/parse/lex_conf.re"
+       { opts.set_bEmitYYCh      (lex_conf_bool()); return; }
+#line 1101 "src/parse/lex_conf.cc"
 yy221:
        yych = (unsigned char)*++cur;
-       if (yych == 'f') goto yy265;
+       if (yych == 'e') goto yy278;
        goto yy13;
 yy222:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy266;
+       if (yych == 'a') goto yy279;
        goto yy13;
 yy223:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy267;
+       if (yych == 'r') goto yy280;
        goto yy13;
 yy224:
-       yyaccept = 4;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'M') goto yy268;
-yy225:
-#line 120 "../src/parse/lex_conf.re"
-       { opts.set_yyctx        (lex_conf_string ()); return; }
-#line 1118 "src/parse/lex_conf.cc"
-yy226:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy269;
+       if (yych == 's') goto yy281;
        goto yy13;
-yy227:
+yy225:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy270;
+       if (yych == 'e') goto yy282;
        goto yy13;
-yy228:
+yy226:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy271;
+       if (yych == 'c') goto yy283;
        goto yy13;
-yy229:
+yy227:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy272;
+       if (yych == 'e') goto yy284;
        goto yy13;
+yy228:
+       ++cur;
+#line 82 "../src/parse/lex_conf.re"
+       { opts.set_condPrefix       (lex_conf_string ()); return; }
+#line 1134 "src/parse/lex_conf.cc"
 yy230:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy274;
+       if (yych == 'x') goto yy285;
        goto yy13;
 yy231:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy276;
-       if (yych == 'S') goto yy277;
+       if (yych == 'r') goto yy286;
        goto yy13;
 yy232:
        yych = (unsigned char)*++cur;
-       if (yych == 'S') goto yy278;
+       if (yych == 'A') goto yy287;
        goto yy13;
 yy233:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy279;
-       goto yy13;
+       if (yych <= 'S') {
+               if (yych == 'O') goto yy288;
+               goto yy13;
+       } else {
+               if (yych <= 'T') goto yy289;
+               if (yych <= 'U') goto yy290;
+               goto yy13;
+       }
 yy234:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy280;
+       if (yych == 'E') goto yy291;
+       if (yych == 'I') goto yy292;
        goto yy13;
 yy235:
        yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy281;
+       if (yych == 'I') goto yy293;
        goto yy13;
 yy236:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy283;
+       if (yych == 'E') goto yy294;
        goto yy13;
 yy237:
        yych = (unsigned char)*++cur;
-       if (yych == 'C') goto yy284;
-       if (yych == 'S') goto yy285;
+       if (yych == 'E') goto yy295;
+       if (yych == 'I') goto yy296;
        goto yy13;
 yy238:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy286;
+       if (yych == 'A') goto yy297;
        goto yy13;
 yy239:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy288;
+       if (yych == 'E') goto yy298;
        goto yy13;
 yy240:
        yych = (unsigned char)*++cur;
-       if (yych == 'L') goto yy290;
+       if (yych == 'E') goto yy299;
        goto yy13;
 yy241:
-       ++cur;
-#line 89 "../src/parse/lex_conf.re"
-       { opts.set_yynext          (lex_conf_string ()); return; }
-#line 1185 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy300;
+       if (yych == 'K') goto yy301;
+       goto yy13;
+yy242:
+       yych = (unsigned char)*++cur;
+       if (yych == 'v') goto yy302;
+       goto yy13;
 yy243:
        yych = (unsigned char)*++cur;
-       if (yych <= '0') goto yy13;
-       if (yych <= '9') goto yy246;
+       if (yych == '-') goto yy303;
        goto yy13;
 yy244:
-       ++cur;
+       yych = (unsigned char)*++cur;
+       if (yych == 'u') goto yy304;
+       goto yy13;
 yy245:
-       cur = ctx;
-#line 155 "../src/parse/lex_conf.re"
-       { out.set_force_start_label (lex_conf_number () != 0); return; }
-#line 1197 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy305;
+       goto yy13;
 yy246:
-       ++cur;
-       if (lim <= cur) fill(1);
-       yych = (unsigned char)*cur;
-       if (yybm[0+yych] & 128) {
-               goto yy246;
-       }
-       goto yy245;
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy306;
+       goto yy13;
+yy247:
+       yych = (unsigned char)*++cur;
+       if (yych == 'm') goto yy307;
+       goto yy13;
 yy248:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy291;
+       if (yych == '-') goto yy308;
        goto yy13;
 yy249:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy292;
+       if (yych == 'y') goto yy309;
        goto yy13;
 yy250:
        yych = (unsigned char)*++cur;
-       if (yych == 'm') goto yy293;
+       if (yych == 'd') goto yy310;
        goto yy13;
 yy251:
        yych = (unsigned char)*++cur;
-       if (yych == 'h') goto yy295;
-       if (yych == 't') goto yy297;
+       if (yych == '-') goto yy311;
        goto yy13;
 yy252:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy298;
+       if (yych == 't') goto yy312;
        goto yy13;
 yy253:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy299;
+       if (yych == 'e') goto yy314;
        goto yy13;
 yy254:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy300;
+       if (yych == 'e') goto yy315;
        goto yy13;
 yy255:
-       ++cur;
-#line 150 "../src/parse/lex_conf.re"
-       { opts.set_fill_check   (lex_conf_number () != 0); return; }
-#line 1239 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy316;
+       goto yy13;
+yy256:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy317;
+       goto yy13;
 yy257:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy301;
+       if (yych == 'u') goto yy318;
        goto yy13;
 yy258:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy303;
+       if (yych == 'a') goto yy319;
        goto yy13;
 yy259:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy304;
+       if (yych == 'e') goto yy320;
        goto yy13;
 yy260:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy305;
+       if (yych == 't') goto yy321;
        goto yy13;
 yy261:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy306;
+       if (yych == 'a') goto yy322;
        goto yy13;
 yy262:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy308;
+       if (yych == '-') goto yy323;
        goto yy13;
 yy263:
-       ++cur;
-#line 124 "../src/parse/lex_conf.re"
-       { opts.set_contexts_expr  (lex_conf_string ()); return; }
-#line 1268 "src/parse/lex_conf.cc"
-yy265:
        yych = (unsigned char)*++cur;
-       if (yych == 'i') goto yy310;
+       if (yych == 'o') goto yy324;
        goto yy13;
-yy266:
+yy264:
        yych = (unsigned char)*++cur;
-       if (yych == 'U') goto yy311;
+       if (yych == '1') goto yy325;
+       if (yych == '8') goto yy86;
        goto yy13;
-yy267:
+yy265:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy312;
+       if (yych == '-') goto yy326;
        goto yy13;
-yy268:
+yy266:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy313;
+       if (yych == 'i') goto yy327;
        goto yy13;
+yy267:
+       ++cur;
+#line 135 "../src/parse/lex_conf.re"
+       {
+               const int32_t n = lex_conf_number ();
+               if (n < 0)
+               {
+                       fatal ("configuration 'indent:top' must be nonnegative");
+               }
+               opts.set_topIndent (static_cast<uint32_t> (n));
+               return;
+       }
+#line 1305 "src/parse/lex_conf.cc"
 yy269:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy314;
+       if (yych == 'l') goto yy328;
        goto yy13;
 yy270:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy316;
+       if (yych == 'x') goto yy329;
        goto yy13;
 yy271:
        yych = (unsigned char)*++cur;
-       if (yych == 'G') goto yy317;
+       if (yych == 'x') goto yy330;
        goto yy13;
 yy272:
-       ++cur;
-#line 121 "../src/parse/lex_conf.re"
-       { opts.set_yydist       (lex_conf_string ()); return; }
-#line 1301 "src/parse/lex_conf.cc"
-yy274:
-       yyaccept = 5;
+       yyaccept = 14;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy319;
-       if (yych == '@') goto yy320;
+       ctx = cur;
+       if (yybm[0+yych] & 64) {
+               goto yy332;
+       }
+       if (yych == '=') goto yy334;
+yy273:
+#line 163 "../src/parse/lex_conf.re"
+       { out.set_user_start_label (lex_conf_string ()); return; }
+#line 1329 "src/parse/lex_conf.cc"
+yy274:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy336;
+       goto yy13;
 yy275:
-#line 145 "../src/parse/lex_conf.re"
-       { opts.set_fill         (lex_conf_string ()); return; }
-#line 1310 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy338;
+       goto yy13;
 yy276:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy321;
+       if (yych == 'y') goto yy339;
        goto yy13;
 yy277:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy322;
+       if (yych == 'r') goto yy340;
        goto yy13;
 yy278:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy323;
+       if (yych == 'c') goto yy341;
        goto yy13;
 yy279:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy324;
+       if (yych == 'b') goto yy342;
        goto yy13;
 yy280:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy326;
+       if (yych == 'a') goto yy343;
        goto yy13;
 yy281:
-       ++cur;
-#line 113 "../src/parse/lex_conf.re"
-       { opts.set_yypeek       (lex_conf_string ()); return; }
-#line 1335 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'h') goto yy344;
+       goto yy13;
+yy282:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy345;
+       goto yy13;
 yy283:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy327;
+       if (yych == 'o') goto yy347;
        goto yy13;
 yy284:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy328;
+       if (yych == 'f') goto yy348;
        goto yy13;
 yy285:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy329;
+       if (yych == 'p') goto yy349;
        goto yy13;
 yy286:
-       ++cur;
-#line 114 "../src/parse/lex_conf.re"
-       { opts.set_yyskip       (lex_conf_string ()); return; }
-#line 1352 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy350;
+       goto yy13;
+yy287:
+       yych = (unsigned char)*++cur;
+       if (yych == 'C') goto yy351;
+       goto yy13;
 yy288:
-       ++cur;
-#line 126 "../src/parse/lex_conf.re"
-       { opts.set_indString (lex_conf_string ()); return; }
-#line 1357 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy352;
+       goto yy13;
+yy289:
+       yych = (unsigned char)*++cur;
+       if (yych <= 'W') goto yy13;
+       if (yych <= 'X') goto yy353;
+       if (yych <= 'Y') goto yy355;
+       goto yy13;
 yy290:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy330;
+       if (yych == 'R') goto yy356;
        goto yy13;
 yy291:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy331;
+       if (yych == 'B') goto yy357;
        goto yy13;
 yy292:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy332;
+       if (yych == 'S') goto yy358;
        goto yy13;
 yy293:
-       ++cur;
-#line 94 "../src/parse/lex_conf.re"
-       { opts.set_yybm         (lex_conf_string ()); return; }
-#line 1374 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'L') goto yy359;
+       goto yy13;
+yy294:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy360;
+       goto yy13;
 yy295:
-       ++cur;
-#line 141 "../src/parse/lex_conf.re"
-       { opts.set_yych           (lex_conf_string ()); return; }
-#line 1379 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'S') goto yy361;
+       goto yy13;
+yy296:
+       yych = (unsigned char)*++cur;
+       if (yych == 'M') goto yy362;
+       goto yy13;
 yy297:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy333;
+       if (yych == 'R') goto yy363;
        goto yy13;
 yy298:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy334;
+       if (yych == 'E') goto yy364;
        goto yy13;
 yy299:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy335;
+       if (yych == 'S') goto yy365;
        goto yy13;
 yy300:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy336;
+       if (yych == 'T') goto yy366;
        goto yy13;
 yy301:
-       ++cur;
-#line 146 "../src/parse/lex_conf.re"
-       { opts.set_fill_use     (lex_conf_number () != 0); return; }
-#line 1400 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy367;
+       goto yy13;
+yy302:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy368;
+       goto yy13;
 yy303:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy337;
+       if (yych == 'i') goto yy369;
        goto yy13;
 yy304:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy338;
+       if (yych == 't') goto yy370;
        goto yy13;
 yy305:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy340;
+       if (yych == 'x') goto yy371;
        goto yy13;
 yy306:
-       ++cur;
-#line 80 "../src/parse/lex_conf.re"
-       { opts.set_condGotoParam    (lex_conf_string ()); return; }
-#line 1417 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy372;
+       goto yy13;
+yy307:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy373;
+       goto yy13;
 yy308:
-       ++cur;
-#line 76 "../src/parse/lex_conf.re"
-       { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
-#line 1422 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy374;
+       goto yy13;
+yy309:
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy375;
+       goto yy13;
 yy310:
        yych = (unsigned char)*++cur;
-       if (yych == 'x') goto yy341;
+       if (yych == 'i') goto yy376;
        goto yy13;
 yy311:
        yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy343;
+       if (yych == 's') goto yy377;
        goto yy13;
 yy312:
+       ++cur;
+#line 72 "../src/parse/lex_conf.re"
+       { lex_conf_input();            return; }
+#line 1488 "src/parse/lex_conf.cc"
+yy314:
        yych = (unsigned char)*++cur;
-       if (yych == 'Y') goto yy345;
+       if (yych == 'd') goto yy378;
        goto yy13;
-yy313:
+yy315:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy346;
+       if (yych == 'b') goto yy379;
        goto yy13;
-yy314:
-       ++cur;
-#line 140 "../src/parse/lex_conf.re"
-       { opts.set_yyctype        (lex_conf_string ()); return; }
-#line 1443 "src/parse/lex_conf.cc"
 yy316:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy347;
+       if (yych == 'n') goto yy380;
        goto yy13;
 yy317:
-       ++cur;
-#line 138 "../src/parse/lex_conf.re"
-       { opts.set_yydebug (lex_conf_string ()); return; }
-#line 1452 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy381;
+       goto yy13;
+yy318:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy382;
+       goto yy13;
 yy319:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy349;
+       if (yych == 'b') goto yy383;
        goto yy13;
 yy320:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy350;
+       if (yych == 't') goto yy384;
        goto yy13;
 yy321:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy351;
+       if (yych == '-') goto yy385;
        goto yy13;
 yy322:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy352;
+       if (yych == 'b') goto yy386;
        goto yy13;
 yy323:
        yych = (unsigned char)*++cur;
-       if (yych == 'H') goto yy353;
+       if (yych == 'h') goto yy387;
        goto yy13;
 yy324:
-       ++cur;
-#line 111 "../src/parse/lex_conf.re"
-       { opts.set_yylimit     (lex_conf_string ()); return; }
-#line 1477 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy388;
+       goto yy13;
+yy325:
+       yych = (unsigned char)*++cur;
+       if (yych == '6') goto yy123;
+       goto yy13;
 yy326:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy354;
+       if (yych == 'c') goto yy389;
        goto yy13;
 yy327:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy356;
+       if (yych == 'n') goto yy390;
        goto yy13;
 yy328:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy357;
+       if (yych == 'l') goto yy391;
        goto yy13;
 yy329:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy358;
+       if (yych == 't') goto yy392;
        goto yy13;
 yy330:
+       ++cur;
+#line 159 "../src/parse/lex_conf.re"
+       { opts.set_labelPrefix (lex_conf_string ()); return; }
+#line 1557 "src/parse/lex_conf.cc"
+yy332:
+       ++cur;
+       if (lim <= cur) fill(1);
+       yych = (unsigned char)*cur;
+       if (yybm[0+yych] & 64) {
+               goto yy332;
+       }
+       if (yych != '=') goto yy13;
+yy334:
+       ++cur;
+       if ((lim - cur) < 2) fill(2);
+       yych = (unsigned char)*cur;
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy13;
+                       goto yy334;
+               } else {
+                       if (yych == ' ') goto yy334;
+                       goto yy13;
+               }
+       } else {
+               if (yych <= '/') {
+                       if (yych <= '-') goto yy394;
+                       goto yy13;
+               } else {
+                       if (yych <= '0') goto yy395;
+                       if (yych <= '9') goto yy397;
+                       goto yy13;
+               }
+       }
+yy336:
+       ++cur;
+#line 97 "../src/parse/lex_conf.re"
+       { opts.set_bUseStateAbort  (lex_conf_bool()); return; }
+#line 1592 "src/parse/lex_conf.cc"
+yy338:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy359;
+       if (yych == 'a') goto yy399;
        goto yy13;
-yy331:
+yy339:
+       yych = (unsigned char)*++cur;
+       if (yych <= 'c') {
+               if (yych <= '`') goto yy13;
+               if (yych <= 'a') goto yy400;
+               if (yych <= 'b') goto yy401;
+               goto yy402;
+       } else {
+               if (yych <= 'r') goto yy13;
+               if (yych <= 's') goto yy403;
+               if (yych <= 't') goto yy404;
+               goto yy13;
+       }
+yy340:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy360;
+       if (yych == 's') goto yy405;
        goto yy13;
-yy332:
+yy341:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy362;
+       if (yych == 'k') goto yy406;
        goto yy13;
-yy333:
+yy342:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy363;
+       if (yych == 'l') goto yy408;
        goto yy13;
-yy334:
+yy343:
        yych = (unsigned char)*++cur;
-       if (yych == 'b') goto yy364;
+       if (yych == 'm') goto yy409;
        goto yy13;
-yy335:
+yy344:
        yych = (unsigned char)*++cur;
-       if (yych == 'g') goto yy365;
+       if (yych == 'o') goto yy410;
        goto yy13;
-yy336:
+yy345:
+       yyaccept = 15;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == '@') goto yy411;
+yy346:
+#line 84 "../src/parse/lex_conf.re"
+       { opts.set_condDivider      (lex_conf_string ()); return; }
+#line 1637 "src/parse/lex_conf.cc"
+yy347:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy366;
+       if (yych == 'n') goto yy412;
        goto yy13;
-yy337:
+yy348:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy368;
+       if (yych == 'i') goto yy413;
        goto yy13;
-yy338:
-       ++cur;
-#line 97 "../src/parse/lex_conf.re"
-       {
-               const int32_t n = lex_conf_number ();
-               if (n < 0)
-               {
-                       fatal ("configuration 'cgoto:threshold' must be nonnegative");
-               }
-               opts.set_cGotoThreshold (static_cast<uint32_t> (n));
-               return;
-       }
-#line 1538 "src/parse/lex_conf.cc"
-yy340:
-       yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy369;
-       goto yy13;
-yy341:
-       ++cur;
-#line 123 "../src/parse/lex_conf.re"
-       { opts.set_contexts_prefix(lex_conf_string ()); return; }
-#line 1547 "src/parse/lex_conf.cc"
-yy343:
-       yyaccept = 6;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'C') goto yy370;
-yy344:
-#line 115 "../src/parse/lex_conf.re"
-       { opts.set_yybackup     (lex_conf_string ()); return; }
-#line 1555 "src/parse/lex_conf.cc"
-yy345:
-       yych = (unsigned char)*++cur;
-       if (yych == 'P') goto yy371;
-       goto yy13;
-yy346:
-       yych = (unsigned char)*++cur;
-       if (yych == 'K') goto yy372;
-       goto yy13;
-yy347:
-       ++cur;
-#line 108 "../src/parse/lex_conf.re"
-       { opts.set_yycursor    (lex_conf_string ()); return; }
-#line 1568 "src/parse/lex_conf.cc"
 yy349:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy373;
+       if (yych == 'r') goto yy414;
        goto yy13;
 yy350:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy374;
+       if (yych == 'f') goto yy416;
        goto yy13;
 yy351:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy375;
+       if (yych == 'K') goto yy417;
        goto yy13;
 yy352:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy376;
+       if (yych == 'D') goto yy418;
        goto yy13;
 yy353:
+       yyaccept = 16;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'M') goto yy419;
+yy354:
+#line 127 "../src/parse/lex_conf.re"
+       { opts.set_yyctx        (lex_conf_string ()); return; }
+#line 1669 "src/parse/lex_conf.cc"
+yy355:
        yych = (unsigned char)*++cur;
-       if (yych == 'A') goto yy377;
+       if (yych == 'P') goto yy420;
        goto yy13;
-yy354:
-       ++cur;
-#line 109 "../src/parse/lex_conf.re"
-       { opts.set_yymarker    (lex_conf_string ()); return; }
-#line 1593 "src/parse/lex_conf.cc"
 yy356:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy378;
+       if (yych == 'S') goto yy421;
        goto yy13;
 yy357:
        yych = (unsigned char)*++cur;
-       if (yych == 'D') goto yy380;
+       if (yych == 'U') goto yy422;
        goto yy13;
 yy358:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy381;
+       if (yych == 'T') goto yy423;
        goto yy13;
 yy359:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy382;
+       if (yych == 'L') goto yy425;
        goto yy13;
 yy360:
-       ++cur;
-#line 91 "../src/parse/lex_conf.re"
-       { opts.set_bUseStateNext   (lex_conf_number () != 0); return; }
-#line 1614 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'C') goto yy427;
+       if (yych == 'S') goto yy428;
+       goto yy13;
+yy361:
+       yych = (unsigned char)*++cur;
+       if (yych == 'S') goto yy429;
+       goto yy13;
 yy362:
        yych = (unsigned char)*++cur;
-       if (yych == 'p') goto yy383;
+       if (yych == 'I') goto yy430;
        goto yy13;
 yy363:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy384;
+       if (yych == 'K') goto yy431;
        goto yy13;
 yy364:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy385;
+       if (yych == 'K') goto yy432;
        goto yy13;
 yy365:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy386;
+       if (yych == 'T') goto yy434;
        goto yy13;
 yy366:
-       ++cur;
-#line 142 "../src/parse/lex_conf.re"
-       { opts.set_yychConversion (lex_conf_number () != 0); return; }
-#line 1635 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'C') goto yy435;
+       if (yych == 'S') goto yy436;
+       goto yy13;
+yy367:
+       yych = (unsigned char)*++cur;
+       if (yych == 'P') goto yy437;
+       goto yy13;
 yy368:
        yych = (unsigned char)*++cur;
-       if (yych == 'r') goto yy387;
+       if (yych == 'c') goto yy439;
        goto yy13;
 yy369:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy389;
+       if (yych == 'n') goto yy440;
        goto yy13;
 yy370:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy391;
+       if (yych == 'e') goto yy441;
        goto yy13;
 yy371:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy392;
+       if (yych == 't') goto yy442;
        goto yy13;
 yy372:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy394;
+       if (yych == 'o') goto yy443;
        goto yy13;
 yy373:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy395;
+       if (yych == 'n') goto yy444;
        goto yy13;
 yy374:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy396;
+       if (yych == 'o') goto yy445;
        goto yy13;
 yy375:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy398;
+       if (yych == 'c') goto yy446;
        goto yy13;
 yy376:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy399;
+       if (yych == 'n') goto yy447;
        goto yy13;
 yy377:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy401;
+       if (yych == 'y') goto yy448;
        goto yy13;
 yy378:
-       yyaccept = 7;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == 'C') goto yy403;
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy449;
+       goto yy13;
 yy379:
-#line 117 "../src/parse/lex_conf.re"
-       { opts.set_yyrestore    (lex_conf_string ()); return; }
-#line 1683 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'u') goto yy450;
+       goto yy13;
 yy380:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy404;
+       if (yych == 'e') goto yy451;
        goto yy13;
 yy381:
        yych = (unsigned char)*++cur;
-       if (yych == 'E') goto yy405;
+       if (yych == 's') goto yy452;
        goto yy13;
 yy382:
        yych = (unsigned char)*++cur;
-       if (yych == 'l') goto yy407;
-       goto yy13;
+       goto yy112;
 yy383:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy409;
+       if (yych == 'l') goto yy453;
        goto yy13;
 yy384:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy411;
+       if (yych == 'o') goto yy454;
        goto yy13;
 yy385:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy413;
+       if (yych == 'c') goto yy455;
        goto yy13;
 yy386:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy415;
+       if (yych == 'l') goto yy456;
        goto yy13;
 yy387:
-       ++cur;
-#line 148 "../src/parse/lex_conf.re"
-       { opts.set_fill_arg_use (lex_conf_number () != 0); return; }
-#line 1716 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy457;
+       goto yy13;
+yy388:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy458;
+       goto yy13;
 yy389:
-       ++cur;
-#line 78 "../src/parse/lex_conf.re"
-       { opts.set_condDividerParam (lex_conf_string ()); return; }
-#line 1721 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'h') goto yy459;
+       goto yy13;
+yy390:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy460;
+       goto yy13;
 yy391:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy417;
+       if (yych == 'L') goto yy462;
        goto yy13;
 yy392:
        ++cur;
-#line 69 "../src/parse/lex_conf.re"
-       { opts.set_yycondtype       (lex_conf_string ()); return; }
-#line 1730 "src/parse/lex_conf.cc"
+#line 96 "../src/parse/lex_conf.re"
+       { opts.set_yynext          (lex_conf_string ()); return; }
+#line 1823 "src/parse/lex_conf.cc"
 yy394:
        yych = (unsigned char)*++cur;
-       if (yych == 'R') goto yy419;
+       if (yych <= '0') goto yy13;
+       if (yych <= '9') goto yy397;
        goto yy13;
 yy395:
-       yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy421;
-       goto yy13;
+       ++cur;
 yy396:
+       cur = ctx;
+#line 162 "../src/parse/lex_conf.re"
+       { out.set_force_start_label (lex_conf_bool()); return; }
+#line 1835 "src/parse/lex_conf.cc"
+yy397:
        ++cur;
-#line 147 "../src/parse/lex_conf.re"
-       { opts.set_fill_arg     (lex_conf_string ()); return; }
-#line 1743 "src/parse/lex_conf.cc"
-yy398:
+       if (lim <= cur) fill(1);
+       yych = (unsigned char)*cur;
+       if (yybm[0+yych] & 128) {
+               goto yy397;
+       }
+       goto yy396;
+yy399:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy422;
+       if (yych == 'b') goto yy463;
        goto yy13;
-yy399:
-       yyaccept = 8;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy423;
 yy400:
-#line 83 "../src/parse/lex_conf.re"
-       { opts.set_state_get       (lex_conf_string ()); return; }
-#line 1755 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy464;
+       goto yy13;
 yy401:
-       ++cur;
-#line 119 "../src/parse/lex_conf.re"
-       { opts.set_yylessthan   (lex_conf_string ()); return; }
-#line 1760 "src/parse/lex_conf.cc"
+       yych = (unsigned char)*++cur;
+       if (yych == 'm') goto yy465;
+       goto yy13;
+yy402:
+       yych = (unsigned char)*++cur;
+       if (yych == 'h') goto yy467;
+       if (yych == 't') goto yy469;
+       goto yy13;
 yy403:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy424;
+       if (yych == 't') goto yy470;
+       goto yy13;
+yy404:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy471;
+       goto yy13;
+yy405:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy472;
+       goto yy13;
+yy406:
+       ++cur;
+#line 157 "../src/parse/lex_conf.re"
+       { opts.set_fill_check   (lex_conf_bool()); return; }
+#line 1877 "src/parse/lex_conf.cc"
+yy408:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy473;
+       goto yy13;
+yy409:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy475;
+       goto yy13;
+yy410:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy476;
+       goto yy13;
+yy411:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy477;
+       goto yy13;
+yy412:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy478;
+       goto yy13;
+yy413:
+       yych = (unsigned char)*++cur;
+       if (yych == 'x') goto yy480;
+       goto yy13;
+yy414:
+       ++cur;
+#line 131 "../src/parse/lex_conf.re"
+       { opts.set_contexts_expr  (lex_conf_string ()); return; }
+#line 1906 "src/parse/lex_conf.cc"
+yy416:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy482;
+       goto yy13;
+yy417:
+       yych = (unsigned char)*++cur;
+       if (yych == 'U') goto yy483;
+       goto yy13;
+yy418:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy484;
+       goto yy13;
+yy419:
+       yych = (unsigned char)*++cur;
+       if (yych == 'A') goto yy485;
+       goto yy13;
+yy420:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy486;
+       goto yy13;
+yy421:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy488;
+       goto yy13;
+yy422:
+       yych = (unsigned char)*++cur;
+       if (yych == 'G') goto yy489;
+       goto yy13;
+yy423:
+       ++cur;
+#line 128 "../src/parse/lex_conf.re"
+       { opts.set_yydist       (lex_conf_string ()); return; }
+#line 1939 "src/parse/lex_conf.cc"
+yy425:
+       yyaccept = 17;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == ':') goto yy491;
+       if (yych == '@') goto yy492;
+yy426:
+#line 152 "../src/parse/lex_conf.re"
+       { opts.set_fill         (lex_conf_string ()); return; }
+#line 1948 "src/parse/lex_conf.cc"
+yy427:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy493;
+       goto yy13;
+yy428:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy494;
+       goto yy13;
+yy429:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy495;
+       goto yy13;
+yy430:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy496;
+       goto yy13;
+yy431:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy498;
+       goto yy13;
+yy432:
+       ++cur;
+#line 120 "../src/parse/lex_conf.re"
+       { opts.set_yypeek       (lex_conf_string ()); return; }
+#line 1973 "src/parse/lex_conf.cc"
+yy434:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy499;
+       goto yy13;
+yy435:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy500;
+       goto yy13;
+yy436:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy501;
+       goto yy13;
+yy437:
+       ++cur;
+#line 121 "../src/parse/lex_conf.re"
+       { opts.set_yyskip       (lex_conf_string ()); return; }
+#line 1990 "src/parse/lex_conf.cc"
+yy439:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy502;
+       goto yy13;
+yy440:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy503;
+       if (yych == 'v') goto yy504;
+       goto yy13;
+yy441:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy505;
+       goto yy13;
+yy442:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy88;
+       goto yy13;
+yy443:
+       yych = (unsigned char)*++cur;
+       if (yych == 'u') goto yy506;
+       goto yy13;
+yy444:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy507;
+       goto yy13;
+yy445:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy90;
+       goto yy13;
+yy446:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy508;
+       goto yy13;
+yy447:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy509;
+       goto yy13;
+yy448:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy510;
+       goto yy13;
+yy449:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy511;
+       goto yy13;
+yy450:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy512;
+       goto yy13;
+yy451:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy513;
+       goto yy13;
+yy452:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy514;
+       goto yy13;
+yy453:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy515;
+       goto yy13;
+yy454:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy94;
+       goto yy13;
+yy455:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy516;
+       goto yy13;
+yy456:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy517;
+       goto yy13;
+yy457:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy518;
+       goto yy13;
+yy458:
+       yych = (unsigned char)*++cur;
+       goto yy120;
+yy459:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy519;
+       goto yy13;
+yy460:
+       ++cur;
+#line 133 "../src/parse/lex_conf.re"
+       { opts.set_indString (lex_conf_string ()); return; }
+#line 2079 "src/parse/lex_conf.cc"
+yy462:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy520;
+       goto yy13;
+yy463:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy521;
+       goto yy13;
+yy464:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy522;
+       goto yy13;
+yy465:
+       ++cur;
+#line 101 "../src/parse/lex_conf.re"
+       { opts.set_yybm         (lex_conf_string ()); return; }
+#line 2096 "src/parse/lex_conf.cc"
+yy467:
+       ++cur;
+#line 148 "../src/parse/lex_conf.re"
+       { opts.set_yych           (lex_conf_string ()); return; }
+#line 2101 "src/parse/lex_conf.cc"
+yy469:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy523;
+       goto yy13;
+yy470:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy524;
+       goto yy13;
+yy471:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy525;
+       goto yy13;
+yy472:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy526;
+       goto yy13;
+yy473:
+       ++cur;
+#line 153 "../src/parse/lex_conf.re"
+       { opts.set_fill_use     (lex_conf_bool()); return; }
+#line 2122 "src/parse/lex_conf.cc"
+yy475:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy527;
+       goto yy13;
+yy476:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy528;
+       goto yy13;
+yy477:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy530;
+       goto yy13;
+yy478:
+       ++cur;
+#line 87 "../src/parse/lex_conf.re"
+       { opts.set_condGotoParam    (lex_conf_string ()); return; }
+#line 2139 "src/parse/lex_conf.cc"
+yy480:
+       ++cur;
+#line 83 "../src/parse/lex_conf.re"
+       { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
+#line 2144 "src/parse/lex_conf.cc"
+yy482:
+       yych = (unsigned char)*++cur;
+       if (yych == 'x') goto yy531;
+       goto yy13;
+yy483:
+       yych = (unsigned char)*++cur;
+       if (yych == 'P') goto yy533;
+       goto yy13;
+yy484:
+       yych = (unsigned char)*++cur;
+       if (yych == 'Y') goto yy535;
+       goto yy13;
+yy485:
+       yych = (unsigned char)*++cur;
+       if (yych == 'R') goto yy536;
+       goto yy13;
+yy486:
+       ++cur;
+#line 147 "../src/parse/lex_conf.re"
+       { opts.set_yyctype        (lex_conf_string ()); return; }
+#line 2165 "src/parse/lex_conf.cc"
+yy488:
+       yych = (unsigned char)*++cur;
+       if (yych == 'R') goto yy537;
+       goto yy13;
+yy489:
+       ++cur;
+#line 145 "../src/parse/lex_conf.re"
+       { opts.set_yydebug (lex_conf_string ()); return; }
+#line 2174 "src/parse/lex_conf.cc"
+yy491:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy539;
+       goto yy13;
+yy492:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy540;
+       goto yy13;
+yy493:
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy541;
+       goto yy13;
+yy494:
+       yych = (unsigned char)*++cur;
+       if (yych == 'A') goto yy542;
+       goto yy13;
+yy495:
+       yych = (unsigned char)*++cur;
+       if (yych == 'H') goto yy543;
+       goto yy13;
+yy496:
+       ++cur;
+#line 118 "../src/parse/lex_conf.re"
+       { opts.set_yylimit     (lex_conf_string ()); return; }
+#line 2199 "src/parse/lex_conf.cc"
+yy498:
+       yych = (unsigned char)*++cur;
+       if (yych == 'R') goto yy544;
+       goto yy13;
+yy499:
+       yych = (unsigned char)*++cur;
+       if (yych == 'R') goto yy546;
+       goto yy13;
+yy500:
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy547;
+       goto yy13;
+yy501:
+       yych = (unsigned char)*++cur;
+       if (yych == 'A') goto yy548;
+       goto yy13;
+yy502:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy549;
+       goto yy13;
+yy503:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy550;
+       goto yy13;
+yy504:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy551;
+       goto yy13;
+yy505:
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy552;
+       goto yy13;
+yy506:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy553;
+       goto yy13;
+yy507:
+       yych = (unsigned char)*++cur;
+       if (yych == 'm') goto yy554;
+       goto yy13;
+yy508:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy555;
+       goto yy13;
+yy509:
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy556;
+       goto yy13;
+yy510:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy557;
+       goto yy13;
+yy511:
+       yych = (unsigned char)*++cur;
+       if (yych == 'f') goto yy558;
+       goto yy13;
+yy512:
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy559;
+       goto yy13;
+yy513:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy560;
+       goto yy13;
+yy514:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy561;
+       goto yy13;
+yy515:
+       yych = (unsigned char)*++cur;
+       goto yy114;
+yy516:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy562;
+       goto yy13;
+yy517:
+       yych = (unsigned char)*++cur;
+       if (yych == '-') goto yy563;
+       goto yy13;
+yy518:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy564;
+       goto yy13;
+yy519:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy565;
+       goto yy13;
+yy520:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy566;
+       goto yy13;
+yy521:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy567;
+       goto yy13;
+yy522:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy569;
+       goto yy13;
+yy523:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy570;
+       goto yy13;
+yy524:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy571;
+       goto yy13;
+yy525:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy572;
+       goto yy13;
+yy526:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy573;
+       goto yy13;
+yy527:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy575;
+       goto yy13;
+yy528:
+       ++cur;
+#line 104 "../src/parse/lex_conf.re"
+       {
+               const int32_t n = lex_conf_number ();
+               if (n < 0)
+               {
+                       fatal ("configuration 'cgoto:threshold' must be nonnegative");
+               }
+               opts.set_cGotoThreshold (static_cast<uint32_t> (n));
+               return;
+       }
+#line 2331 "src/parse/lex_conf.cc"
+yy530:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy576;
+       goto yy13;
+yy531:
+       ++cur;
+#line 130 "../src/parse/lex_conf.re"
+       { opts.set_contexts_prefix(lex_conf_string ()); return; }
+#line 2340 "src/parse/lex_conf.cc"
+yy533:
+       yyaccept = 18;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'C') goto yy577;
+yy534:
+#line 122 "../src/parse/lex_conf.re"
+       { opts.set_yybackup     (lex_conf_string ()); return; }
+#line 2348 "src/parse/lex_conf.cc"
+yy535:
+       yych = (unsigned char)*++cur;
+       if (yych == 'P') goto yy578;
+       goto yy13;
+yy536:
+       yych = (unsigned char)*++cur;
+       if (yych == 'K') goto yy579;
+       goto yy13;
+yy537:
+       ++cur;
+#line 115 "../src/parse/lex_conf.re"
+       { opts.set_yycursor    (lex_conf_string ()); return; }
+#line 2361 "src/parse/lex_conf.cc"
+yy539:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy580;
+       goto yy13;
+yy540:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy581;
+       goto yy13;
+yy541:
+       yych = (unsigned char)*++cur;
+       if (yych == 'D') goto yy582;
+       goto yy13;
+yy542:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy583;
+       goto yy13;
+yy543:
+       yych = (unsigned char)*++cur;
+       if (yych == 'A') goto yy584;
+       goto yy13;
+yy544:
+       ++cur;
+#line 116 "../src/parse/lex_conf.re"
+       { opts.set_yymarker    (lex_conf_string ()); return; }
+#line 2386 "src/parse/lex_conf.cc"
+yy546:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy585;
+       goto yy13;
+yy547:
+       yych = (unsigned char)*++cur;
+       if (yych == 'D') goto yy587;
+       goto yy13;
+yy548:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy588;
+       goto yy13;
+yy549:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy589;
+       goto yy13;
+yy550:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy590;
+       goto yy13;
+yy551:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy591;
+       goto yy13;
+yy552:
+       yych = (unsigned char)*++cur;
+       if (yych == 'g') goto yy592;
+       goto yy13;
+yy553:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy593;
+       goto yy13;
+yy554:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy594;
+       goto yy13;
+yy555:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy595;
+       goto yy13;
+yy556:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy596;
+       goto yy13;
+yy557:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy597;
+       goto yy13;
+yy558:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy598;
+       goto yy13;
+yy559:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy599;
+       goto yy13;
+yy560:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy600;
+       goto yy13;
+yy561:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy601;
+       goto yy13;
+yy562:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy603;
+       goto yy13;
+yy563:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy604;
+       goto yy13;
+yy564:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy605;
+       goto yy13;
+yy565:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy606;
+       goto yy13;
+yy566:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy607;
+       goto yy13;
+yy567:
+       ++cur;
+#line 98 "../src/parse/lex_conf.re"
+       { opts.set_bUseStateNext   (lex_conf_bool()); return; }
+#line 2475 "src/parse/lex_conf.cc"
+yy569:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy608;
+       goto yy13;
+yy570:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy609;
+       goto yy13;
+yy571:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy610;
+       goto yy13;
+yy572:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy611;
+       goto yy13;
+yy573:
+       ++cur;
+#line 149 "../src/parse/lex_conf.re"
+       { opts.set_yychConversion (lex_conf_bool()); return; }
+#line 2496 "src/parse/lex_conf.cc"
+yy575:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy612;
+       goto yy13;
+yy576:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy614;
+       goto yy13;
+yy577:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy616;
+       goto yy13;
+yy578:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy617;
+       goto yy13;
+yy579:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy619;
+       goto yy13;
+yy580:
+       yych = (unsigned char)*++cur;
+       if (yych == 'k') goto yy620;
+       goto yy13;
+yy581:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy621;
+       goto yy13;
+yy582:
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy623;
+       goto yy13;
+yy583:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy624;
+       goto yy13;
+yy584:
+       yych = (unsigned char)*++cur;
+       if (yych == 'N') goto yy626;
+       goto yy13;
+yy585:
+       yyaccept = 19;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'C') goto yy628;
+yy586:
+#line 124 "../src/parse/lex_conf.re"
+       { opts.set_yyrestore    (lex_conf_string ()); return; }
+#line 2544 "src/parse/lex_conf.cc"
+yy587:
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy629;
+       goto yy13;
+yy588:
+       yych = (unsigned char)*++cur;
+       if (yych == 'E') goto yy630;
+       goto yy13;
+yy589:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy632;
+       goto yy13;
+yy590:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy633;
+       goto yy13;
+yy591:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy634;
+       goto yy13;
+yy592:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy635;
+       goto yy13;
+yy593:
+       yych = (unsigned char)*++cur;
+       if (yych == 'u') goto yy636;
+       goto yy13;
+yy594:
+       yych = (unsigned char)*++cur;
+       if (yych == 'z') goto yy637;
+       goto yy13;
+yy595:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy638;
+       goto yy13;
+yy596:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy640;
+       goto yy13;
+yy597:
+       yych = (unsigned char)*++cur;
+       if (yych == 'x') goto yy92;
+       goto yy13;
+yy598:
+       yych = (unsigned char)*++cur;
+       goto yy116;
+yy599:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy641;
+       goto yy13;
+yy600:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy642;
+       goto yy13;
+yy601:
+       ++cur;
+#line 58 "../src/parse/lex_conf.re"
+       { opts.set_version(!lex_conf_bool());          return; }
+#line 2604 "src/parse/lex_conf.cc"
+yy603:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy643;
+       goto yy13;
+yy604:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy644;
+       goto yy13;
+yy605:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy645;
+       goto yy13;
+yy606:
+       yych = (unsigned char)*++cur;
+       goto yy122;
+yy607:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy646;
+       goto yy13;
+yy608:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy648;
+       goto yy13;
+yy609:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy650;
+       goto yy13;
+yy610:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy652;
+       goto yy13;
+yy611:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy654;
+       goto yy13;
+yy612:
+       ++cur;
+#line 155 "../src/parse/lex_conf.re"
+       { opts.set_fill_arg_use (lex_conf_bool()); return; }
+#line 2644 "src/parse/lex_conf.cc"
+yy614:
+       ++cur;
+#line 85 "../src/parse/lex_conf.re"
+       { opts.set_condDividerParam (lex_conf_string ()); return; }
+#line 2649 "src/parse/lex_conf.cc"
+yy616:
+       yych = (unsigned char)*++cur;
+       if (yych == 'X') goto yy656;
+       goto yy13;
+yy617:
+       ++cur;
+#line 76 "../src/parse/lex_conf.re"
+       { opts.set_yycondtype       (lex_conf_string ()); return; }
+#line 2658 "src/parse/lex_conf.cc"
+yy619:
+       yych = (unsigned char)*++cur;
+       if (yych == 'R') goto yy658;
+       goto yy13;
+yy620:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy660;
+       goto yy13;
+yy621:
+       ++cur;
+#line 154 "../src/parse/lex_conf.re"
+       { opts.set_fill_arg     (lex_conf_string ()); return; }
+#line 2671 "src/parse/lex_conf.cc"
+yy623:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy661;
+       goto yy13;
+yy624:
+       yyaccept = 20;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == ':') goto yy662;
+yy625:
+#line 90 "../src/parse/lex_conf.re"
+       { opts.set_state_get       (lex_conf_string ()); return; }
+#line 2683 "src/parse/lex_conf.cc"
+yy626:
+       ++cur;
+#line 126 "../src/parse/lex_conf.re"
+       { opts.set_yylessthan   (lex_conf_string ()); return; }
+#line 2688 "src/parse/lex_conf.cc"
+yy628:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy663;
+       goto yy13;
+yy629:
+       yych = (unsigned char)*++cur;
+       if (yych == 'T') goto yy664;
+       goto yy13;
+yy630:
+       yyaccept = 21;
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == ':') goto yy665;
+       if (yych == '@') goto yy666;
+yy631:
+#line 92 "../src/parse/lex_conf.re"
+       { opts.set_state_set       (lex_conf_string ()); return; }
+#line 2705 "src/parse/lex_conf.cc"
+yy632:
+       yych = (unsigned char)*++cur;
+       goto yy97;
+yy633:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy667;
+       goto yy13;
+yy634:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy668;
+       goto yy13;
+yy635:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy669;
+       goto yy13;
+yy636:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy670;
+       goto yy13;
+yy637:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy671;
+       goto yy13;
+yy638:
+       ++cur;
+#line 73 "../src/parse/lex_conf.re"
+       { lex_conf_empty_class();      return; }
+#line 2733 "src/parse/lex_conf.cc"
+yy640:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy672;
+       goto yy13;
+yy641:
+       yych = (unsigned char)*++cur;
+       if (yych == 'f') goto yy673;
+       goto yy13;
+yy642:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy674;
+       goto yy13;
+yy643:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy675;
+       goto yy13;
+yy644:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy676;
+       goto yy13;
+yy645:
+       yych = (unsigned char)*++cur;
+       goto yy118;
+yy646:
+       ++cur;
+#line 95 "../src/parse/lex_conf.re"
+       { opts.set_yyfilllabel     (lex_conf_string ()); return; }
+#line 2761 "src/parse/lex_conf.cc"
+yy648:
+       ++cur;
+#line 99 "../src/parse/lex_conf.re"
+       { opts.set_yyaccept        (lex_conf_string ()); return; }
+#line 2766 "src/parse/lex_conf.cc"
+yy650:
+       ++cur;
+#line 88 "../src/parse/lex_conf.re"
+       { opts.set_yyctable         (lex_conf_string ()); return; }
+#line 2771 "src/parse/lex_conf.cc"
+yy652:
+       ++cur;
+#line 166 "../src/parse/lex_conf.re"
+       { lex_conf_string (); return; }
+#line 2776 "src/parse/lex_conf.cc"
+yy654:
+       ++cur;
+#line 113 "../src/parse/lex_conf.re"
+       { opts.set_yytarget (lex_conf_string ()); return; }
+#line 2781 "src/parse/lex_conf.cc"
+yy656:
+       ++cur;
+#line 123 "../src/parse/lex_conf.re"
+       { opts.set_yybackupctx  (lex_conf_string ()); return; }
+#line 2786 "src/parse/lex_conf.cc"
+yy658:
+       ++cur;
+#line 117 "../src/parse/lex_conf.re"
+       { opts.set_yyctxmarker (lex_conf_string ()); return; }
+#line 2791 "src/parse/lex_conf.cc"
+yy660:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy677;
+       goto yy13;
+yy661:
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy679;
+       goto yy13;
+yy662:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy680;
+       goto yy13;
+yy663:
+       yych = (unsigned char)*++cur;
+       if (yych == 'X') goto yy681;
+       goto yy13;
+yy664:
+       yych = (unsigned char)*++cur;
+       if (yych == 'I') goto yy683;
+       goto yy13;
+yy665:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy684;
+       goto yy13;
+yy666:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy685;
+       goto yy13;
+yy667:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy686;
+       goto yy13;
+yy668:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy687;
+       goto yy13;
+yy669:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy689;
+       goto yy13;
+yy670:
+       yych = (unsigned char)*++cur;
+       goto yy101;
+yy671:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy690;
+       goto yy13;
+yy672:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy691;
+       goto yy13;
+yy673:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy692;
+       goto yy13;
+yy674:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy693;
+       goto yy13;
+yy675:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy694;
+       goto yy13;
+yy676:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy695;
+       goto yy13;
+yy677:
+       ++cur;
+#line 156 "../src/parse/lex_conf.re"
+       { opts.set_fill_naked   (lex_conf_bool()); return; }
+#line 2863 "src/parse/lex_conf.cc"
+yy679:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy696;
+       goto yy13;
+yy680:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy697;
+       goto yy13;
+yy681:
+       ++cur;
+#line 125 "../src/parse/lex_conf.re"
+       { opts.set_yyrestorectx (lex_conf_string ()); return; }
+#line 2876 "src/parse/lex_conf.cc"
+yy683:
+       yych = (unsigned char)*++cur;
+       if (yych == 'O') goto yy698;
+       goto yy13;
+yy684:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy699;
        goto yy13;
-yy404:
+yy685:
        yych = (unsigned char)*++cur;
-       if (yych == 'T') goto yy425;
+       if (yych == 't') goto yy700;
        goto yy13;
-yy405:
-       yyaccept = 9;
-       yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy426;
-       if (yych == '@') goto yy427;
-yy406:
-#line 85 "../src/parse/lex_conf.re"
-       { opts.set_state_set       (lex_conf_string ()); return; }
-#line 1777 "src/parse/lex_conf.cc"
-yy407:
-       ++cur;
-#line 88 "../src/parse/lex_conf.re"
-       { opts.set_yyfilllabel     (lex_conf_string ()); return; }
-#line 1782 "src/parse/lex_conf.cc"
-yy409:
-       ++cur;
-#line 92 "../src/parse/lex_conf.re"
-       { opts.set_yyaccept        (lex_conf_string ()); return; }
-#line 1787 "src/parse/lex_conf.cc"
-yy411:
-       ++cur;
-#line 81 "../src/parse/lex_conf.re"
-       { opts.set_yyctable         (lex_conf_string ()); return; }
-#line 1792 "src/parse/lex_conf.cc"
-yy413:
-       ++cur;
-#line 159 "../src/parse/lex_conf.re"
-       { lex_conf_string (); return; }
-#line 1797 "src/parse/lex_conf.cc"
-yy415:
-       ++cur;
-#line 106 "../src/parse/lex_conf.re"
-       { opts.set_yytarget (lex_conf_string ()); return; }
-#line 1802 "src/parse/lex_conf.cc"
-yy417:
-       ++cur;
-#line 116 "../src/parse/lex_conf.re"
-       { opts.set_yybackupctx  (lex_conf_string ()); return; }
-#line 1807 "src/parse/lex_conf.cc"
-yy419:
-       ++cur;
-#line 110 "../src/parse/lex_conf.re"
-       { opts.set_yyctxmarker (lex_conf_string ()); return; }
-#line 1812 "src/parse/lex_conf.cc"
-yy421:
+yy686:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy428;
+       if (yych == 'i') goto yy701;
        goto yy13;
-yy422:
+yy687:
+       ++cur;
+#line 60 "../src/parse/lex_conf.re"
+       { opts.set_bCaseInverted(lex_conf_bool());     return; }
+#line 2897 "src/parse/lex_conf.cc"
+yy689:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy430;
+       if (yych == 's') goto yy106;
        goto yy13;
-yy423:
+yy690:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy431;
+       if (yych == 'i') goto yy702;
        goto yy13;
-yy424:
+yy691:
        yych = (unsigned char)*++cur;
-       if (yych == 'X') goto yy432;
+       if (yych == 'c') goto yy703;
        goto yy13;
-yy425:
+yy692:
+       yych = (unsigned char)*++cur;
+       goto yy109;
+yy693:
        yych = (unsigned char)*++cur;
-       if (yych == 'I') goto yy434;
+       if (yych == '-') goto yy704;
        goto yy13;
-yy426:
+yy694:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy435;
+       if (yych == 'o') goto yy705;
        goto yy13;
-yy427:
+yy695:
        yych = (unsigned char)*++cur;
-       if (yych == 's') goto yy436;
+       if (yych == 'e') goto yy706;
        goto yy13;
-yy428:
-       ++cur;
-#line 149 "../src/parse/lex_conf.re"
-       { opts.set_fill_naked   (lex_conf_number () != 0); return; }
-#line 1845 "src/parse/lex_conf.cc"
-yy430:
+yy696:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy437;
+       if (yych == 'N') goto yy707;
        goto yy13;
-yy431:
+yy697:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy438;
+       if (yych == 'k') goto yy709;
        goto yy13;
-yy432:
-       ++cur;
-#line 118 "../src/parse/lex_conf.re"
-       { opts.set_yyrestorectx (lex_conf_string ()); return; }
-#line 1858 "src/parse/lex_conf.cc"
-yy434:
+yy698:
        yych = (unsigned char)*++cur;
-       if (yych == 'O') goto yy439;
+       if (yych == 'N') goto yy710;
        goto yy13;
-yy435:
+yy699:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy440;
+       if (yych == 'k') goto yy712;
        goto yy13;
-yy436:
+yy700:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy441;
+       if (yych == 'a') goto yy713;
        goto yy13;
-yy437:
+yy701:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy442;
+       if (yych == 'v') goto yy714;
        goto yy13;
-yy438:
+yy702:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy444;
+       if (yych == 'o') goto yy715;
        goto yy13;
-yy439:
+yy703:
        yych = (unsigned char)*++cur;
-       if (yych == 'N') goto yy445;
+       if (yych == 'y') goto yy716;
        goto yy13;
-yy440:
+yy704:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy447;
+       if (yych == 'd') goto yy718;
        goto yy13;
-yy441:
+yy705:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy448;
+       if (yych == 'n') goto yy719;
        goto yy13;
-yy442:
-       yyaccept = 10;
+yy706:
+       yych = (unsigned char)*++cur;
+       goto yy105;
+yy707:
+       yyaccept = 22;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy449;
-yy443:
-#line 70 "../src/parse/lex_conf.re"
+       if (yych == ':') goto yy720;
+yy708:
+#line 77 "../src/parse/lex_conf.re"
        { opts.set_cond_get         (lex_conf_string ()); return; }
-#line 1898 "src/parse/lex_conf.cc"
-yy444:
+#line 2975 "src/parse/lex_conf.cc"
+yy709:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy450;
+       if (yych == 'e') goto yy721;
        goto yy13;
-yy445:
-       yyaccept = 11;
+yy710:
+       yyaccept = 23;
        yych = (unsigned char)*(ptr = ++cur);
-       if (yych == ':') goto yy451;
-       if (yych == '@') goto yy452;
-yy446:
-#line 72 "../src/parse/lex_conf.re"
+       if (yych == ':') goto yy722;
+       if (yych == '@') goto yy723;
+yy711:
+#line 79 "../src/parse/lex_conf.re"
        { opts.set_cond_set         (lex_conf_string ()); return; }
-#line 1911 "src/parse/lex_conf.cc"
-yy447:
+#line 2988 "src/parse/lex_conf.cc"
+yy712:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy453;
+       if (yych == 'e') goto yy724;
        goto yy13;
-yy448:
+yy713:
        yych = (unsigned char)*++cur;
-       if (yych == 't') goto yy454;
+       if (yych == 't') goto yy725;
        goto yy13;
-yy449:
+yy714:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy455;
+       if (yych == 'e') goto yy726;
        goto yy13;
-yy450:
+yy715:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy456;
+       if (yych == 'n') goto yy728;
        goto yy13;
-yy451:
+yy716:
+       ++cur;
+#line 71 "../src/parse/lex_conf.re"
+       { lex_conf_encoding_policy();  return; }
+#line 3009 "src/parse/lex_conf.cc"
+yy718:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy458;
+       if (yych == 'a') goto yy730;
        goto yy13;
-yy452:
+yy719:
        yych = (unsigned char)*++cur;
-       if (yych == 'c') goto yy459;
+       if (yych == 's') goto yy731;
        goto yy13;
-yy453:
+yy720:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy460;
+       if (yych == 'n') goto yy732;
        goto yy13;
-yy454:
+yy721:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy462;
+       if (yych == 'd') goto yy733;
        goto yy13;
-yy455:
+yy722:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy464;
+       if (yych == 'n') goto yy735;
        goto yy13;
-yy456:
+yy723:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy736;
+       goto yy13;
+yy724:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy737;
+       goto yy13;
+yy725:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy739;
+       goto yy13;
+yy726:
        ++cur;
-#line 84 "../src/parse/lex_conf.re"
-       { opts.set_state_get_naked (lex_conf_number () != 0); return; }
-#line 1952 "src/parse/lex_conf.cc"
-yy458:
+#line 59 "../src/parse/lex_conf.re"
+       { opts.set_bCaseInsensitive(lex_conf_bool());  return; }
+#line 3046 "src/parse/lex_conf.cc"
+yy728:
+       ++cur;
+#line 74 "../src/parse/lex_conf.re"
+       { lex_conf_dfa_minimization(); return; }
+#line 3051 "src/parse/lex_conf.cc"
+yy730:
        yych = (unsigned char)*++cur;
-       if (yych == 'a') goto yy465;
+       if (yych == 't') goto yy741;
        goto yy13;
-yy459:
+yy731:
        yych = (unsigned char)*++cur;
-       if (yych == 'o') goto yy466;
+       goto yy99;
+yy732:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy742;
        goto yy13;
-yy460:
+yy733:
        ++cur;
-#line 86 "../src/parse/lex_conf.re"
-       { opts.set_state_set_naked (lex_conf_number () != 0); return; }
-#line 1965 "src/parse/lex_conf.cc"
-yy462:
+#line 91 "../src/parse/lex_conf.re"
+       { opts.set_state_get_naked (lex_conf_bool()); return; }
+#line 3067 "src/parse/lex_conf.cc"
+yy735:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy743;
+       goto yy13;
+yy736:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy744;
+       goto yy13;
+yy737:
        ++cur;
-#line 87 "../src/parse/lex_conf.re"
+#line 93 "../src/parse/lex_conf.re"
+       { opts.set_state_set_naked (lex_conf_bool()); return; }
+#line 3080 "src/parse/lex_conf.cc"
+yy739:
+       ++cur;
+#line 94 "../src/parse/lex_conf.re"
        { opts.set_state_set_arg   (lex_conf_string ()); return; }
-#line 1970 "src/parse/lex_conf.cc"
-yy464:
+#line 3085 "src/parse/lex_conf.cc"
+yy741:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy467;
+       if (yych == 'e') goto yy745;
        goto yy13;
-yy465:
+yy742:
        yych = (unsigned char)*++cur;
-       if (yych == 'k') goto yy468;
+       if (yych == 'k') goto yy747;
        goto yy13;
-yy466:
+yy743:
        yych = (unsigned char)*++cur;
-       if (yych == 'n') goto yy469;
+       if (yych == 'k') goto yy748;
        goto yy13;
-yy467:
+yy744:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy470;
+       if (yych == 'n') goto yy749;
        goto yy13;
-yy468:
+yy745:
+       ++cur;
+#line 57 "../src/parse/lex_conf.re"
+       { opts.set_bNoGenerationDate(lex_conf_bool()); return; }
+#line 3106 "src/parse/lex_conf.cc"
+yy747:
        yych = (unsigned char)*++cur;
-       if (yych == 'e') goto yy471;
+       if (yych == 'e') goto yy750;
        goto yy13;
-yy469:
+yy748:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy472;
+       if (yych == 'e') goto yy751;
        goto yy13;
-yy470:
+yy749:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy474;
+       if (yych == 'd') goto yy752;
        goto yy13;
-yy471:
+yy750:
        yych = (unsigned char)*++cur;
-       if (yych == 'd') goto yy476;
+       if (yych == 'd') goto yy754;
        goto yy13;
-yy472:
+yy751:
+       yych = (unsigned char)*++cur;
+       if (yych == 'd') goto yy756;
+       goto yy13;
+yy752:
        ++cur;
-#line 73 "../src/parse/lex_conf.re"
+#line 80 "../src/parse/lex_conf.re"
        { opts.set_cond_set_arg     (lex_conf_string ()); return; }
-#line 2007 "src/parse/lex_conf.cc"
-yy474:
+#line 3131 "src/parse/lex_conf.cc"
+yy754:
        ++cur;
-#line 71 "../src/parse/lex_conf.re"
-       { opts.set_cond_get_naked   (lex_conf_number () != 0); return; }
-#line 2012 "src/parse/lex_conf.cc"
-yy476:
+#line 78 "../src/parse/lex_conf.re"
+       { opts.set_cond_get_naked   (lex_conf_bool()); return; }
+#line 3136 "src/parse/lex_conf.cc"
+yy756:
        ++cur;
-#line 74 "../src/parse/lex_conf.re"
-       { opts.set_cond_set_naked   (lex_conf_number () != 0); return; }
-#line 2017 "src/parse/lex_conf.cc"
+#line 81 "../src/parse/lex_conf.re"
+       { opts.set_cond_set_naked   (lex_conf_bool()); return; }
+#line 3141 "src/parse/lex_conf.cc"
+}
+#line 167 "../src/parse/lex_conf.re"
+
+}
+
+void Scanner::lex_conf_encoding_policy()
+{
+       lex_conf_assign ();
+
+#line 3151 "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 yy762;
+       } else {
+               if (yych <= 'i') goto yy763;
+               if (yych == 's') goto yy764;
+       }
+       ++cur;
+yy761:
+#line 174 "../src/parse/lex_conf.re"
+       { fatal("bad configuration value"
+               " (expected: 'ignore', 'substitute', 'fail')"); }
+#line 3167 "src/parse/lex_conf.cc"
+yy762:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'a') goto yy765;
+       goto yy761;
+yy763:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'g') goto yy767;
+       goto yy761;
+yy764:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'u') goto yy768;
+       goto yy761;
+yy765:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy769;
+yy766:
+       cur = ptr;
+       goto yy761;
+yy767:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy770;
+       goto yy766;
+yy768:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy771;
+       goto yy766;
+yy769:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy772;
+       goto yy766;
+yy770:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy774;
+       goto yy766;
+yy771:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy775;
+       goto yy766;
+yy772:
+       ++cur;
+#line 178 "../src/parse/lex_conf.re"
+       { opts.set_encoding_policy(Enc::POLICY_FAIL);       return; }
+#line 3210 "src/parse/lex_conf.cc"
+yy774:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy776;
+       goto yy766;
+yy775:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy777;
+       goto yy766;
+yy776:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy778;
+       goto yy766;
+yy777:
+       yych = (unsigned char)*++cur;
+       if (yych == 'i') goto yy780;
+       goto yy766;
+yy778:
+       ++cur;
+#line 176 "../src/parse/lex_conf.re"
+       { opts.set_encoding_policy(Enc::POLICY_IGNORE);     return; }
+#line 3231 "src/parse/lex_conf.cc"
+yy780:
+       yych = (unsigned char)*++cur;
+       if (yych != 't') goto yy766;
+       yych = (unsigned char)*++cur;
+       if (yych != 'u') goto yy766;
+       yych = (unsigned char)*++cur;
+       if (yych != 't') goto yy766;
+       yych = (unsigned char)*++cur;
+       if (yych != 'e') goto yy766;
+       ++cur;
+#line 177 "../src/parse/lex_conf.re"
+       { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); return; }
+#line 3244 "src/parse/lex_conf.cc"
+}
+#line 179 "../src/parse/lex_conf.re"
+
+}
+
+void Scanner::lex_conf_input()
+{
+       lex_conf_assign ();
+
+#line 3254 "src/parse/lex_conf.cc"
+{
+       unsigned char yych;
+       if ((lim - cur) < 7) fill(7);
+       yych = (unsigned char)*cur;
+       if (yych <= 'b') goto yy788;
+       if (yych <= 'c') goto yy790;
+       if (yych <= 'd') goto yy791;
+yy788:
+       ++cur;
+yy789:
+#line 186 "../src/parse/lex_conf.re"
+       { fatal("bad configuration value"
+               " (expected: 'default', 'custom')"); }
+#line 3268 "src/parse/lex_conf.cc"
+yy790:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'u') goto yy792;
+       goto yy789;
+yy791:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'e') goto yy794;
+       goto yy789;
+yy792:
+       yych = (unsigned char)*++cur;
+       if (yych == 's') goto yy795;
+yy793:
+       cur = ptr;
+       goto yy789;
+yy794:
+       yych = (unsigned char)*++cur;
+       if (yych == 'f') goto yy796;
+       goto yy793;
+yy795:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy797;
+       goto yy793;
+yy796:
+       yych = (unsigned char)*++cur;
+       if (yych == 'a') goto yy798;
+       goto yy793;
+yy797:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy799;
+       goto yy793;
+yy798:
+       yych = (unsigned char)*++cur;
+       if (yych == 'u') goto yy800;
+       goto yy793;
+yy799:
+       yych = (unsigned char)*++cur;
+       if (yych == 'm') goto yy801;
+       goto yy793;
+yy800:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy803;
+       goto yy793;
+yy801:
+       ++cur;
+#line 189 "../src/parse/lex_conf.re"
+       { opts.set_input_api(InputAPI::CUSTOM);  return; }
+#line 3315 "src/parse/lex_conf.cc"
+yy803:
+       yych = (unsigned char)*++cur;
+       if (yych != 't') goto yy793;
+       ++cur;
+#line 188 "../src/parse/lex_conf.re"
+       { opts.set_input_api(InputAPI::DEFAULT); return; }
+#line 3322 "src/parse/lex_conf.cc"
+}
+#line 190 "../src/parse/lex_conf.re"
+
+}
+
+void Scanner::lex_conf_empty_class()
+{
+       lex_conf_assign ();
+
+#line 3332 "src/parse/lex_conf.cc"
+{
+       unsigned char yych;
+       if ((lim - cur) < 11) fill(11);
+       yych = (unsigned char)*cur;
+       if (yych == 'e') goto yy810;
+       if (yych == 'm') goto yy811;
+       ++cur;
+yy809:
+#line 197 "../src/parse/lex_conf.re"
+       { fatal("bad configuration value"
+               " (expected: 'match-empty', 'match-none', 'error')"); }
+#line 3344 "src/parse/lex_conf.cc"
+yy810:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'r') goto yy812;
+       goto yy809;
+yy811:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'a') goto yy814;
+       goto yy809;
+yy812:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy815;
+yy813:
+       cur = ptr;
+       goto yy809;
+yy814:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy816;
+       goto yy813;
+yy815:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy817;
+       goto yy813;
+yy816:
+       yych = (unsigned char)*++cur;
+       if (yych == 'c') goto yy818;
+       goto yy813;
+yy817:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy819;
+       goto yy813;
+yy818:
+       yych = (unsigned char)*++cur;
+       if (yych == 'h') goto yy821;
+       goto yy813;
+yy819:
+       ++cur;
+#line 201 "../src/parse/lex_conf.re"
+       { opts.set_empty_class_policy(EMPTY_CLASS_ERROR);       return; }
+#line 3383 "src/parse/lex_conf.cc"
+yy821:
+       yych = (unsigned char)*++cur;
+       if (yych != '-') goto yy813;
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy823;
+       if (yych == 'n') goto yy824;
+       goto yy813;
+yy823:
+       yych = (unsigned char)*++cur;
+       if (yych == 'm') goto yy825;
+       goto yy813;
+yy824:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy826;
+       goto yy813;
+yy825:
+       yych = (unsigned char)*++cur;
+       if (yych == 'p') goto yy827;
+       goto yy813;
+yy826:
+       yych = (unsigned char)*++cur;
+       if (yych == 'n') goto yy828;
+       goto yy813;
+yy827:
+       yych = (unsigned char)*++cur;
+       if (yych == 't') goto yy829;
+       goto yy813;
+yy828:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy830;
+       goto yy813;
+yy829:
+       yych = (unsigned char)*++cur;
+       if (yych == 'y') goto yy832;
+       goto yy813;
+yy830:
+       ++cur;
+#line 200 "../src/parse/lex_conf.re"
+       { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE);  return; }
+#line 3423 "src/parse/lex_conf.cc"
+yy832:
+       ++cur;
+#line 199 "../src/parse/lex_conf.re"
+       { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); return; }
+#line 3428 "src/parse/lex_conf.cc"
+}
+#line 202 "../src/parse/lex_conf.re"
+
+}
+
+void Scanner::lex_conf_dfa_minimization()
+{
+       lex_conf_assign ();
+
+#line 3438 "src/parse/lex_conf.cc"
+{
+       unsigned char yych;
+       if ((lim - cur) < 5) fill(5);
+       yych = (unsigned char)*cur;
+       if (yych == 'm') goto yy838;
+       if (yych == 't') goto yy839;
+       ++cur;
+yy837:
+#line 209 "../src/parse/lex_conf.re"
+       { fatal("bad configuration value"
+               " (expected: 'table', 'moore')"); }
+#line 3450 "src/parse/lex_conf.cc"
+yy838:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'o') goto yy840;
+       goto yy837;
+yy839:
+       yych = (unsigned char)*(ptr = ++cur);
+       if (yych == 'a') goto yy842;
+       goto yy837;
+yy840:
+       yych = (unsigned char)*++cur;
+       if (yych == 'o') goto yy843;
+yy841:
+       cur = ptr;
+       goto yy837;
+yy842:
+       yych = (unsigned char)*++cur;
+       if (yych == 'b') goto yy844;
+       goto yy841;
+yy843:
+       yych = (unsigned char)*++cur;
+       if (yych == 'r') goto yy845;
+       goto yy841;
+yy844:
+       yych = (unsigned char)*++cur;
+       if (yych == 'l') goto yy846;
+       goto yy841;
+yy845:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy847;
+       goto yy841;
+yy846:
+       yych = (unsigned char)*++cur;
+       if (yych == 'e') goto yy849;
+       goto yy841;
+yy847:
+       ++cur;
+#line 212 "../src/parse/lex_conf.re"
+       { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); return; }
+#line 3489 "src/parse/lex_conf.cc"
+yy849:
+       ++cur;
+#line 211 "../src/parse/lex_conf.re"
+       { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); return; }
+#line 3494 "src/parse/lex_conf.cc"
+}
+#line 213 "../src/parse/lex_conf.re"
+
 }
-#line 160 "../src/parse/lex_conf.re"
 
+void Scanner::lex_conf_enc(Enc::type_t enc)
+{
+       const bool off = !lex_conf_bool();
+       if (off) {
+               opts.unset_encoding(enc);
+       } else if (!opts.set_encoding(enc)) {
+               fatalf ("Cannot set %s encoding: please reset %s encoding first"
+                       , Enc::name(enc)
+                       , Enc::name(opts->encoding.type()));
+       }
 }
 
 void Scanner::lex_conf_assign ()
 {
 
-#line 2026 "src/parse/lex_conf.cc"
+#line 3515 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -2062,56 +3551,56 @@ void Scanner::lex_conf_assign ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy482;
+               if (yych == '\t') goto yy855;
        } else {
-               if (yych <= ' ') goto yy482;
-               if (yych == '=') goto yy483;
+               if (yych <= ' ') goto yy855;
+               if (yych == '=') goto yy856;
        }
        ++cur;
-yy481:
-#line 166 "../src/parse/lex_conf.re"
+yy854:
+#line 231 "../src/parse/lex_conf.re"
        { fatal ("missing '=' in configuration"); }
-#line 2075 "src/parse/lex_conf.cc"
-yy482:
+#line 3564 "src/parse/lex_conf.cc"
+yy855:
        yych = (unsigned char)*(ptr = ++cur);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy486;
-               goto yy481;
+               if (yych == '\t') goto yy859;
+               goto yy854;
        } else {
-               if (yych <= ' ') goto yy486;
-               if (yych != '=') goto yy481;
+               if (yych <= ' ') goto yy859;
+               if (yych != '=') goto yy854;
        }
-yy483:
+yy856:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy483;
+               goto yy856;
        }
-#line 167 "../src/parse/lex_conf.re"
+#line 232 "../src/parse/lex_conf.re"
        { return; }
-#line 2094 "src/parse/lex_conf.cc"
-yy486:
+#line 3583 "src/parse/lex_conf.cc"
+yy859:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy486;
+               if (yych == '\t') goto yy859;
        } else {
-               if (yych <= ' ') goto yy486;
-               if (yych == '=') goto yy483;
+               if (yych <= ' ') goto yy859;
+               if (yych == '=') goto yy856;
        }
        cur = ptr;
-       goto yy481;
+       goto yy854;
 }
-#line 168 "../src/parse/lex_conf.re"
+#line 233 "../src/parse/lex_conf.re"
 
 }
 
 void Scanner::lex_conf_semicolon ()
 {
 
-#line 2115 "src/parse/lex_conf.cc"
+#line 3604 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -2151,40 +3640,45 @@ void Scanner::lex_conf_semicolon ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy493;
+               if (yych == '\t') goto yy866;
        } else {
-               if (yych <= ' ') goto yy493;
-               if (yych == ';') goto yy494;
+               if (yych <= ' ') goto yy866;
+               if (yych == ';') goto yy867;
        }
        ++cur;
-yy492:
-#line 174 "../src/parse/lex_conf.re"
+yy865:
+#line 239 "../src/parse/lex_conf.re"
        { fatal ("missing ending ';' in configuration"); }
-#line 2164 "src/parse/lex_conf.cc"
-yy493:
+#line 3653 "src/parse/lex_conf.cc"
+yy866:
        yych = (unsigned char)*(ptr = ++cur);
        if (yybm[0+yych] & 128) {
-               goto yy496;
+               goto yy869;
        }
-       if (yych != ';') goto yy492;
-yy494:
+       if (yych != ';') goto yy865;
+yy867:
        ++cur;
-#line 175 "../src/parse/lex_conf.re"
+#line 240 "../src/parse/lex_conf.re"
        { return; }
-#line 2175 "src/parse/lex_conf.cc"
-yy496:
+#line 3664 "src/parse/lex_conf.cc"
+yy869:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy496;
+               goto yy869;
        }
-       if (yych == ';') goto yy494;
+       if (yych == ';') goto yy867;
        cur = ptr;
-       goto yy492;
+       goto yy865;
+}
+#line 241 "../src/parse/lex_conf.re"
+
 }
-#line 176 "../src/parse/lex_conf.re"
 
+bool Scanner::lex_conf_bool()
+{
+       return lex_conf_number() != 0;
 }
 
 int32_t Scanner::lex_conf_number ()
@@ -2192,7 +3686,7 @@ int32_t Scanner::lex_conf_number ()
        lex_conf_assign ();
        tok = cur;
 
-#line 2196 "src/parse/lex_conf.cc"
+#line 3690 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -2232,21 +3726,21 @@ int32_t Scanner::lex_conf_number ()
        if ((lim - cur) < 2) fill(2);
        yych = (unsigned char)*cur;
        if (yych <= '/') {
-               if (yych == '-') goto yy502;
+               if (yych == '-') goto yy875;
        } else {
-               if (yych <= '0') goto yy503;
-               if (yych <= '9') goto yy505;
+               if (yych <= '0') goto yy876;
+               if (yych <= '9') goto yy878;
        }
-yy501:
-yy502:
+yy874:
+yy875:
        yych = (unsigned char)*++cur;
-       if (yych <= '0') goto yy501;
-       if (yych <= '9') goto yy505;
-       goto yy501;
-yy503:
+       if (yych <= '0') goto yy874;
+       if (yych <= '9') goto yy878;
+       goto yy874;
+yy876:
        ++cur;
-yy504:
-#line 185 "../src/parse/lex_conf.re"
+yy877:
+#line 255 "../src/parse/lex_conf.re"
        {
                int32_t n = 0;
                if (!s_to_i32_unsafe (tok, cur, n))
@@ -2256,17 +3750,17 @@ yy504:
                lex_conf_semicolon ();
                return n;
        }
-#line 2260 "src/parse/lex_conf.cc"
-yy505:
+#line 3754 "src/parse/lex_conf.cc"
+yy878:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy505;
+               goto yy878;
        }
-       goto yy504;
+       goto yy877;
 }
-#line 194 "../src/parse/lex_conf.re"
+#line 264 "../src/parse/lex_conf.re"
 
 }
 
@@ -2276,7 +3770,7 @@ std::string Scanner::lex_conf_string ()
        std::string s;
        tok = cur;
 
-#line 2280 "src/parse/lex_conf.cc"
+#line 3774 "src/parse/lex_conf.cc"
 {
        unsigned char yych;
        static const unsigned char yybm[] = {
@@ -2317,38 +3811,38 @@ std::string Scanner::lex_conf_string ()
        yych = (unsigned char)*cur;
        if (yych <= '!') {
                if (yych <= '\n') {
-                       if (yych <= 0x08) goto yy510;
+                       if (yych <= 0x08) goto yy883;
                } else {
-                       if (yych != ' ') goto yy510;
+                       if (yych != ' ') goto yy883;
                }
        } else {
                if (yych <= '\'') {
-                       if (yych <= '"') goto yy513;
-                       if (yych <= '&') goto yy510;
-                       goto yy513;
+                       if (yych <= '"') goto yy886;
+                       if (yych <= '&') goto yy883;
+                       goto yy886;
                } else {
-                       if (yych != ';') goto yy510;
+                       if (yych != ';') goto yy883;
                }
        }
-#line 221 "../src/parse/lex_conf.re"
+#line 291 "../src/parse/lex_conf.re"
        { goto end; }
-#line 2336 "src/parse/lex_conf.cc"
-yy510:
+#line 3830 "src/parse/lex_conf.cc"
+yy883:
        ++cur;
        if (lim <= cur) fill(1);
        yych = (unsigned char)*cur;
        if (yybm[0+yych] & 128) {
-               goto yy510;
+               goto yy883;
        }
-#line 217 "../src/parse/lex_conf.re"
+#line 287 "../src/parse/lex_conf.re"
        {
                s = std::string(tok, tok_len());
                goto end;
        }
-#line 2349 "src/parse/lex_conf.cc"
-yy513:
+#line 3843 "src/parse/lex_conf.cc"
+yy886:
        ++cur;
-#line 203 "../src/parse/lex_conf.re"
+#line 273 "../src/parse/lex_conf.re"
        {
                const char quote = tok[0];
                for (bool end;;) {
@@ -2363,9 +3857,9 @@ yy513:
                        }
                }
        }
-#line 2367 "src/parse/lex_conf.cc"
+#line 3861 "src/parse/lex_conf.cc"
 }
-#line 222 "../src/parse/lex_conf.re"
+#line 292 "../src/parse/lex_conf.re"
 
 end:
        lex_conf_semicolon ();
index e037211e4c6428224451f9044a3a1f94e2b6b5a8..182533cf378602aa78a8f142ae0fa7075ecf7a22 100644 (file)
@@ -59,7 +59,7 @@ OutputBlock::~OutputBlock ()
        }
 }
 
-OutputFile::OutputFile (const char * fn)
+OutputFile::OutputFile(const std::string &fn)
        : file_name (fn)
        , file (NULL)
        , blocks ()
@@ -72,14 +72,14 @@ OutputFile::OutputFile (const char * fn)
 
 bool OutputFile::open ()
 {
-       if (file_name == NULL)
+       if (file_name.empty())
        {
                file_name = "<stdout>";
                file = stdout;
        }
        else
        {
-               file = fopen (file_name, "wb");
+               file = fopen (file_name.c_str(), "wb");
        }
        return file != NULL;
 }
@@ -356,18 +356,22 @@ void OutputFile::emit(
        }
 }
 
-HeaderFile::HeaderFile (const char * fn)
+HeaderFile::HeaderFile(const std::string &fn)
        : stream ()
        // header is always generated, but not always dumped to file
        // NULL filename crashes 'operator <<' on some platforms
        // TODO: generate header only if necessary
-       , file_name (fn ? fn : "<stdout>.h")
+       , file_name (fn)
        , file (NULL)
-{}
+{
+       if (file_name.empty()) {
+               file_name = "<stdout>.h";
+       }
+}
 
 bool HeaderFile::open ()
 {
-       file = fopen (file_name, "wb");
+       file = fopen (file_name.c_str(), "wb");
        return file != NULL;
 }
 
@@ -389,13 +393,13 @@ HeaderFile::~HeaderFile ()
        }
 }
 
-Output::Output (const char * source_name, const char * header_name)
-       : source (source_name)
-       , header (header_name)
-       , types ()
-       , skeletons ()
-       , contexts ()
-       , max_fill (1)
+Output::Output(const std::string &source_name, const std::string &header_name)
+       : source(source_name)
+       , header(header_name)
+       , types()
+       , skeletons()
+       , contexts()
+       , max_fill(1)
 {}
 
 Output::~Output ()
@@ -475,7 +479,7 @@ void output_yymaxfill (std::ostream & o, size_t max_fill)
        o << "#define YYMAXFILL " << max_fill << "\n";
 }
 
-void output_line_info (std::ostream & o, uint32_t line_number, const char * file_name)
+void output_line_info (std::ostream & o, uint32_t line_number, const std::string &file_name)
 {
        if (!opts->iFlag)
        {
index 0af7cfc3b14c9348f1af543000e878cdec158f0d..641ecf4637704be872c55d6f8bdeaeaf853df612 100644 (file)
@@ -66,7 +66,7 @@ struct OutputBlock
 struct OutputFile
 {
 public:
-       const char * file_name;
+       std::string file_name;
 
 private:
        FILE * file;
@@ -77,7 +77,7 @@ public:
        bool warn_condition_order;
        bool default_contexts;
 
-       OutputFile (const char * fn);
+       OutputFile(const std::string &fn);
        ~OutputFile ();
 
        std::ostream & stream ();
@@ -127,14 +127,14 @@ public:
 
 struct HeaderFile
 {
-       HeaderFile (const char * fn);
+       HeaderFile(const std::string &fn);
        ~HeaderFile ();
        bool open ();
        void emit (const std::vector<std::string> & types);
 
 private:
        std::ostringstream stream;
-       const char * file_name;
+       std::string file_name;
        FILE * file;
 
        FORBID_COPY (HeaderFile);
@@ -149,7 +149,7 @@ struct Output
        std::set<std::string> contexts;
        size_t max_fill;
 
-       Output (const char * source_name, const char * header_name);
+       Output(const std::string &source_name, const std::string &header_name);
        ~Output ();
 };
 
@@ -157,7 +157,7 @@ void output_contexts(std::ostream &o, const ConfContexts &conf,
        const std::set<std::string> &contexts);
 void output_contexts_default(std::ostream &o, uint32_t ind,
        const std::set<std::string> &contexts);
-void output_line_info (std::ostream &, uint32_t, const char *);
+void output_line_info (std::ostream &, uint32_t, const std::string&);
 void output_state_goto (std::ostream &, uint32_t, uint32_t);
 void output_types (std::ostream &, uint32_t, const std::vector<std::string> &);
 void output_version_time (std::ostream &);
index 0bcaf46c45754ddee1bf9a42548384ef9222bc57..f89f5bd20d523a5ce008cb2f30d0a8a33c090211 100644 (file)
@@ -238,7 +238,7 @@ void opt_t::fix ()
                bFlag = true;
                sFlag = true;
        }
-       if (header_file != NULL)
+       if (!header_file.empty())
        {
                tFlag = true;
        }
@@ -278,7 +278,7 @@ opt_t * useropt_t::operator -> ()
 
 const opt_t Opt::baseopt;
 
-bool Opt::source (const char * s)
+bool Opt::source (const char *s)
 {
        if (source_file)
        {
@@ -292,11 +292,11 @@ bool Opt::source (const char * s)
        }
 }
 
-bool Opt::output (const char * s)
+bool Opt::output (const std::string &s)
 {
-       if (output_file)
+       if (!output_file.empty())
        {
-               error ("multiple output files: %s, %s", output_file, s);
+               error ("multiple output files: %s, %s", output_file.c_str(), s.c_str());
                return false;
        }
        else
index 4452c460e0728387c9fd1bcff5bb342afaa392da..31d358bcc0a6df38b9c99362854e092ee0f0b411 100644 (file)
@@ -28,7 +28,7 @@ namespace re2c
        /* conditions */ \
        OPT (bool, cFlag, false) \
        OPT (bool, tFlag, false) \
-       OPT (const char *,  header_file, NULL) \
+       OPT (std::string,  header_file, "") \
        OPT (std::string, yycondtype, "YYCONDTYPE") \
        OPT (std::string, cond_get, "YYGETCONDITION") \
        OPT (bool, cond_get_naked, false) \
@@ -156,8 +156,8 @@ struct Opt
 {
        static const opt_t baseopt;
 
-       const char * source_file;
-       const char * output_file;
+       const char *source_file;
+       std::string output_file;
 
 private:
        useropt_t useropt;
@@ -166,7 +166,7 @@ private:
 public:
        Opt ()
                : source_file (NULL)
-               , output_file (NULL)
+               , output_file ()
                , useropt ()
                , realopt (useropt)
        {}
@@ -177,8 +177,8 @@ public:
                return realopt.operator -> ();
        }
 
-       bool source (const char * s);
-       bool output (const char * s);
+       bool source (const char *s);
+       bool output (const std::string &s);
 
        // Inplace configurations are applied immediately when parsed.
        // This is very bad: first, re2c behaviour is changed in the middle
index e16f71bd8bdb6b9ecdd741ad4072481681dd08f5..b73f34d87e5f0745239817c367115350aec2f8e0 100644 (file)
@@ -228,9 +228,9 @@ static void generate_paths(const Skeleton &skel, cover_t &cover)
        }
 }
 
-void emit_data(const Skeleton &skel, const char *fname)
+void emit_data(const Skeleton &skel, const std::string &fname)
 {
-       const std::string input_name = std::string(fname) + "." + skel.name + ".input";
+       const std::string input_name = fname + "." + skel.name + ".input";
        FILE *input = fopen(input_name.c_str(), "wb");
        if (!input) {
                error("cannot open file: %s", input_name.c_str());
index 3690d6313ee573bac2072540f830d8d191902779..456d646aa91dbbd0efbb77a666014502448b5f36 100644 (file)
@@ -86,7 +86,7 @@ uint32_t maxpath(const Skeleton &skel);
 void warn_undefined_control_flow(const Skeleton &skel);
 void fprint_default_path(FILE *f, const Skeleton &skel, const path_t &p);
 void warn_unreachable_nullable_rules(const Skeleton &skel);
-void emit_data(const Skeleton &skel, const char *fname);
+void emit_data(const Skeleton &skel, const std::string &fname);
 void emit_prolog(OutputFile & o);
 void emit_start(const Skeleton &skel, OutputFile &o, size_t maxfill,
        bool backup, bool backupctx, bool accept, bool base_ctxmarker,
index 03b6ee291267cef6305d5757e52aec378082ba0b..6d1288b4f5e85abbd227dbfc654515e55e22c2ba 100644 (file)
@@ -44,12 +44,12 @@ int main(int, char *argv[])
        re2c::Output output (opts.output_file, opts->header_file);
        if (!output.source.open ())
        {
-               error ("cannot open output file: %s", opts.output_file);
+               error ("cannot open output file: %s", opts.output_file.c_str());
                return 1;
        }
        if (opts->tFlag && !output.header.open ())
        {
-               error ("cannot open header file: %s", opts->header_file);
+               error ("cannot open header file: %s", opts->header_file.c_str());
                return 1;
        }
 
index 0f906c60db6d5877d9b7bf62384640ffce94a0ae..066185d9bfc348c3bd888a97021262f89fe6c30f 100644 (file)
@@ -41,37 +41,44 @@ void Scanner::lex_conf ()
 /*!re2c
        * { fatal ((tok - pos) - tchar, "unrecognized configuration"); }
 
-       "flags:" [ewxu8]
-       {
-               Enc::type_t enc = Enc::ASCII;
-               switch (cur[-1])
-               {
-                       case 'e': enc = Enc::EBCDIC; break;
-                       case 'w': enc = Enc::UCS2;   break;
-                       case 'x': enc = Enc::UTF16;  break;
-                       case 'u': enc = Enc::UTF32;  break;
-                       case '8': enc = Enc::UTF8;   break;
-               }
-               const int32_t n = lex_conf_number ();
-               if (n == 0)
-               {
-                       opts.unset_encoding (enc);
-               }
-               else if (!opts.set_encoding (enc))
-               {
-                       fatalf ("Cannot set %s encoding: please reset %s encoding first"
-                               , Enc::name (enc)
-                               , Enc::name (opts->encoding.type ()));
-               }
-               return;
-       }
+       "flags:" ("D" | "emit-dot") { opts.set_target(opt_t::DOT);      lex_conf_semicolon(); return; }
+       "flags:" ("S" | "skeleton") { opts.set_target(opt_t::SKELETON); lex_conf_semicolon(); return; }
+
+       "flags:" ("b" | "bit-vectors")       { opts.set_bFlag(lex_conf_bool());             return; }
+       "flags:" ("c" | "start-conditions")  { opts.set_cFlag(lex_conf_bool());             return; }
+       "flags:" ("C" | "contexts")          { opts.set_contexts(lex_conf_bool());          return; }
+       "flags:" ("d" | "debug-output")      { opts.set_dFlag(lex_conf_bool());             return; }
+       "flags:" ("f" | "storable-state")    { opts.set_fFlag(lex_conf_bool());             return; }
+       "flags:" ("F" | "flex-syntax")       { opts.set_FFlag(lex_conf_bool());             return; }
+       "flags:" ("g" | "computed-gotos")    { opts.set_gFlag(lex_conf_bool());             return; }
+       "flags:" ("i" | "no-debug-info")     { opts.set_iFlag(lex_conf_bool());             return; }
+       "flags:" ("r" | "reusable")          { opts.set_rFlag(lex_conf_bool());             return; }
+       "flags:" ("s" | "nested-ifs")        { opts.set_sFlag(lex_conf_bool());             return; }
+       "flags:no-generation-date"           { opts.set_bNoGenerationDate(lex_conf_bool()); return; }
+       "flags:no-version"                   { opts.set_version(!lex_conf_bool());          return; }
+       "flags:case-insensitive"             { opts.set_bCaseInsensitive(lex_conf_bool());  return; }
+       "flags:case-inverted"                { opts.set_bCaseInverted(lex_conf_bool());     return; }
+
+       "flags:" ("e" | "ecb")        { lex_conf_enc(Enc::EBCDIC); return; }
+       "flags:" ("u" | "unicode")    { lex_conf_enc(Enc::UTF32);  return; }
+       "flags:" ("w" | "wide-chars") { lex_conf_enc(Enc::UCS2);   return; }
+       "flags:" ("x" | "utf-16")     { lex_conf_enc(Enc::UTF16);  return; }
+       "flags:" ("8" | "utf-8")      { lex_conf_enc(Enc::UTF8);   return; }
+
+       "flags:" ("o" | "output")      { if (!opts.output(lex_conf_string())) exit(1); return; }
+       "flags:" ("t" | "type-header") { opts.set_header_file(lex_conf_string()); return; }
+
+       "flags:encoding-policy"  { lex_conf_encoding_policy();  return; }
+       "flags:input"            { lex_conf_input();            return; }
+       "flags:empty-class"      { lex_conf_empty_class();      return; }
+       "flags:dfa-minimization" { lex_conf_dfa_minimization(); return; }
 
        "define:YYCONDTYPE"           { opts.set_yycondtype       (lex_conf_string ()); return; }
        "define:YYGETCONDITION"       { opts.set_cond_get         (lex_conf_string ()); return; }
-       "define:YYGETCONDITION:naked" { opts.set_cond_get_naked   (lex_conf_number () != 0); return; }
+       "define:YYGETCONDITION:naked" { opts.set_cond_get_naked   (lex_conf_bool()); return; }
        "define:YYSETCONDITION"       { opts.set_cond_set         (lex_conf_string ()); return; }
        "define:YYSETCONDITION@cond"  { opts.set_cond_set_arg     (lex_conf_string ()); return; }
-       "define:YYSETCONDITION:naked" { opts.set_cond_set_naked   (lex_conf_number () != 0); return; }
+       "define:YYSETCONDITION:naked" { opts.set_cond_set_naked   (lex_conf_bool()); return; }
        "condprefix"                  { opts.set_condPrefix       (lex_conf_string ()); return; }
        "condenumprefix"              { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
        "cond:divider"                { opts.set_condDivider      (lex_conf_string ()); return; }
@@ -81,18 +88,18 @@ void Scanner::lex_conf ()
        "variable:yyctable"           { opts.set_yyctable         (lex_conf_string ()); return; }
 
        "define:YYGETSTATE"       { opts.set_state_get       (lex_conf_string ()); return; }
-       "define:YYGETSTATE:naked" { opts.set_state_get_naked (lex_conf_number () != 0); return; }
+       "define:YYGETSTATE:naked" { opts.set_state_get_naked (lex_conf_bool()); return; }
        "define:YYSETSTATE"       { opts.set_state_set       (lex_conf_string ()); return; }
-       "define:YYSETSTATE:naked" { opts.set_state_set_naked (lex_conf_number () != 0); return; }
+       "define:YYSETSTATE:naked" { opts.set_state_set_naked (lex_conf_bool()); return; }
        "define:YYSETSTATE@state" { opts.set_state_set_arg   (lex_conf_string ()); return; }
        "label:yyFillLabel"       { opts.set_yyfilllabel     (lex_conf_string ()); return; }
        "label:yyNext"            { opts.set_yynext          (lex_conf_string ()); return; }
-       "state:abort"             { opts.set_bUseStateAbort  (lex_conf_number () != 0); return; }
-       "state:nextlabel"         { opts.set_bUseStateNext   (lex_conf_number () != 0); return; }
+       "state:abort"             { opts.set_bUseStateAbort  (lex_conf_bool()); return; }
+       "state:nextlabel"         { opts.set_bUseStateNext   (lex_conf_bool()); return; }
        "variable:yyaccept"       { opts.set_yyaccept        (lex_conf_string ()); return; }
 
        "variable:yybm"     { opts.set_yybm         (lex_conf_string ()); return; }
-       "yybm:hex"          { opts.set_yybmHexTable (lex_conf_number () != 0); return; }
+       "yybm:hex"          { opts.set_yybmHexTable (lex_conf_bool()); return; }
        "cgoto:threshold"
        {
                const int32_t n = lex_conf_number ();
@@ -139,20 +146,20 @@ void Scanner::lex_conf ()
 
        "define:YYCTYPE"  { opts.set_yyctype        (lex_conf_string ()); return; }
        "variable:yych"   { opts.set_yych           (lex_conf_string ()); return; }
-       "yych:conversion" { opts.set_yychConversion (lex_conf_number () != 0); return; }
-       "yych:emit"       { opts.set_bEmitYYCh      (lex_conf_number () != 0); return; }
+       "yych:conversion" { opts.set_yychConversion (lex_conf_bool()); return; }
+       "yych:emit"       { opts.set_bEmitYYCh      (lex_conf_bool()); return; }
 
        "define:YYFILL"       { opts.set_fill         (lex_conf_string ()); return; }
-       "yyfill:enable"       { opts.set_fill_use     (lex_conf_number () != 0); return; }
+       "yyfill:enable"       { opts.set_fill_use     (lex_conf_bool()); return; }
        "define:YYFILL@len"   { opts.set_fill_arg     (lex_conf_string ()); return; }
-       "yyfill:parameter"    { opts.set_fill_arg_use (lex_conf_number () != 0); return; }
-       "define:YYFILL:naked" { opts.set_fill_naked   (lex_conf_number () != 0); return; }
-       "yyfill:check"        { opts.set_fill_check   (lex_conf_number () != 0); return; }
+       "yyfill:parameter"    { opts.set_fill_arg_use (lex_conf_bool()); return; }
+       "define:YYFILL:naked" { opts.set_fill_naked   (lex_conf_bool()); return; }
+       "yyfill:check"        { opts.set_fill_check   (lex_conf_bool()); return; }
 
        "labelprefix" { opts.set_labelPrefix (lex_conf_string ()); return; }
 
        // try to lex number first, otherwize it would be lexed as a naked string
-       "startlabel" / conf_assign number { out.set_force_start_label (lex_conf_number () != 0); return; }
+       "startlabel" / conf_assign number { out.set_force_start_label (lex_conf_bool()); return; }
        "startlabel"                      { out.set_user_start_label (lex_conf_string ()); return; }
 
        // deprecated
@@ -160,6 +167,64 @@ void Scanner::lex_conf ()
 */
 }
 
+void Scanner::lex_conf_encoding_policy()
+{
+       lex_conf_assign ();
+/*!re2c
+       * { fatal("bad configuration value"
+               " (expected: 'ignore', 'substitute', 'fail')"); }
+       "ignore"     { opts.set_encoding_policy(Enc::POLICY_IGNORE);     return; }
+       "substitute" { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); return; }
+       "fail"       { opts.set_encoding_policy(Enc::POLICY_FAIL);       return; }
+*/
+}
+
+void Scanner::lex_conf_input()
+{
+       lex_conf_assign ();
+/*!re2c
+       * { fatal("bad configuration value"
+               " (expected: 'default', 'custom')"); }
+       "default" { opts.set_input_api(InputAPI::DEFAULT); return; }
+       "custom"  { opts.set_input_api(InputAPI::CUSTOM);  return; }
+*/
+}
+
+void Scanner::lex_conf_empty_class()
+{
+       lex_conf_assign ();
+/*!re2c
+       * { fatal("bad configuration value"
+               " (expected: 'match-empty', 'match-none', 'error')"); }
+       "match-empty" { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); return; }
+       "match-none"  { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE);  return; }
+       "error"       { opts.set_empty_class_policy(EMPTY_CLASS_ERROR);       return; }
+*/
+}
+
+void Scanner::lex_conf_dfa_minimization()
+{
+       lex_conf_assign ();
+/*!re2c
+       * { fatal("bad configuration value"
+               " (expected: 'table', 'moore')"); }
+       "table" { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); return; }
+       "moore" { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); return; }
+*/
+}
+
+void Scanner::lex_conf_enc(Enc::type_t enc)
+{
+       const bool off = !lex_conf_bool();
+       if (off) {
+               opts.unset_encoding(enc);
+       } else if (!opts.set_encoding(enc)) {
+               fatalf ("Cannot set %s encoding: please reset %s encoding first"
+                       , Enc::name(enc)
+                       , Enc::name(opts->encoding.type()));
+       }
+}
+
 void Scanner::lex_conf_assign ()
 {
 /*!re2c
@@ -176,6 +241,11 @@ void Scanner::lex_conf_semicolon ()
 */
 }
 
+bool Scanner::lex_conf_bool()
+{
+       return lex_conf_number() != 0;
+}
+
 int32_t Scanner::lex_conf_number ()
 {
        lex_conf_assign ();
index bf5929757a46809d9812a3584ae145dbb573cff6..ef9f0c29b34d2f100ce7ba98f189b2254b615b65 100644 (file)
@@ -71,10 +71,16 @@ private:
        const RegExp *cls(const Range *r) const;
 
        void lex_conf ();
-       void lex_conf_assign ();
-       void lex_conf_semicolon ();
-       int32_t lex_conf_number ();
-       std::string lex_conf_string ();
+       void lex_conf_encoding_policy();
+       void lex_conf_input();
+       void lex_conf_empty_class();
+       void lex_conf_dfa_minimization();
+       void lex_conf_enc(Enc::type_t enc);
+       void lex_conf_assign();
+       void lex_conf_semicolon();
+       int32_t lex_conf_number();
+       bool lex_conf_bool();
+       std::string lex_conf_string();
 
        size_t tok_len () const;