]> granicus.if.org Git - re2c/commitdiff
Renamed and fixed warning about undefined control flow in generated lexer.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 1 Sep 2015 14:27:48 +0000 (15:27 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 1 Sep 2015 14:27:48 +0000 (15:27 +0100)
Renamed '-Wnaked-default' to '-Wundefined-control-flow': the latter sounds
much scarier. :D

Completely changed the algorithm that is used to determine if default case
is not handled properly. Prior to this commit a simple and incorrent criterion
was used: whether there are code units that (alone) do not match any rule.
This gived false positives in cases like this:
    [^] [^] { rule }
here all code units meet the criterion: no single code unit matches a rule.
But obviously, default case is handled properly, because any input string
matches 'rule' (strictly speaking, any input string of length 2 or more, but
that's YYFILL's problem).

The new algorithm is more complex (in terms of time and space), yet it is
less heuristic: re2c parforms exhaustive deep-first-search on graph skeleton
and collects all bad paths.

126 files changed:
re2c/Makefile.am
re2c/bootstrap/src/conf/parse_opts.cc
re2c/src/codegen/emit_dfa.cc
re2c/src/codegen/prepare_dfa.cc
re2c/src/codegen/skeleton/control_flow.cc [new file with mode: 0644]
re2c/src/codegen/skeleton/multipath.cc [new file with mode: 0644]
re2c/src/codegen/skeleton/multipath.h [new file with mode: 0644]
re2c/src/codegen/skeleton/path.cc
re2c/src/codegen/skeleton/path.h
re2c/src/codegen/skeleton/skeleton.cc
re2c/src/codegen/skeleton/skeleton.h
re2c/src/conf/msg.cc
re2c/src/conf/msg.h
re2c/src/conf/parse_opts.re
re2c/src/conf/warn.cc
re2c/src/conf/warn.h
re2c/src/ir/bytecode/bytecode.cc
re2c/src/ir/dfa/dfa.h
re2c/test/bug1454253b.s.c
re2c/test/bug47_dot_escapes.D.c
re2c/test/bug59_bogus_yyaccept.ci.c
re2c/test/bug60_redundant_yymarker.ci.c
re2c/test/bug61.i--empty-class(match-none).c
re2c/test/bug61_difference_full.i--empty-class(match-none).c
re2c/test/bug61_difference_negative.i--empty-class(match-none).c
re2c/test/bug61_difference_positive.i--empty-class(match-none).c
re2c/test/bug61_negative.i--empty-class(match-none).c
re2c/test/bug61_positive.i--empty-class(match-none).c
re2c/test/casing-flags.i--case-insensitive.c
re2c/test/casing-flags.i--case-inverted.c
re2c/test/casing-flags.i.c
re2c/test/code_points.8.c
re2c/test/code_points.c
re2c/test/code_points.e.c
re2c/test/code_points.u.c
re2c/test/code_points.w.c
re2c/test/code_points.x.c
re2c/test/cond_error_10.c.c
re2c/test/cond_error_11.c.c
re2c/test/condition_01.c.c
re2c/test/condition_01a.c.c
re2c/test/condition_01b.c.c
re2c/test/condition_02.c.c
re2c/test/condition_02.cg.c
re2c/test/condition_03.cg.c
re2c/test/condition_04.cg.c
re2c/test/condition_11.cg.c
re2c/test/condition_13.cg.c
re2c/test/condtype.c.c
re2c/test/condtype.cg.c
re2c/test/condtype.cgtcondtype.cg.h.c
re2c/test/condtype.cs.c
re2c/test/condtype.cstcondtype.cs.h.c
re2c/test/condtype.ctcondtype.c.h.c
re2c/test/condtype_decl.c.c
re2c/test/condtype_decl.cg.c
re2c/test/condtype_decl.cs.c
re2c/test/condtype_forwdecl.cg.c
re2c/test/condtype_forwdecl.cs.c
re2c/test/condtype_single.c.c
re2c/test/condtype_single.cg.c
re2c/test/condtype_single.cs.c
re2c/test/condtype_yysetcondition.cg.c
re2c/test/condtype_yysetcondition.cs.c
re2c/test/config11.ei.c
re2c/test/control_flow_fail.c [new file with mode: 0644]
re2c/test/control_flow_fail.re [new file with mode: 0644]
re2c/test/control_flow_ok.c [new file with mode: 0644]
re2c/test/control_flow_ok.re [new file with mode: 0644]
re2c/test/control_flow_yymarker_fail.c [new file with mode: 0644]
re2c/test/control_flow_yymarker_fail.re [new file with mode: 0644]
re2c/test/control_flow_yymarker_ok.c [new file with mode: 0644]
re2c/test/control_flow_yymarker_ok.re [new file with mode: 0644]
re2c/test/control_flow_yymarker_yyaccept_fail.c [new file with mode: 0644]
re2c/test/control_flow_yymarker_yyaccept_fail.re [new file with mode: 0644]
re2c/test/control_flow_yymarker_yyaccept_ok.c [new file with mode: 0644]
re2c/test/control_flow_yymarker_yyaccept_ok.re [new file with mode: 0644]
re2c/test/dot_backslash.D.c
re2c/test/dot_conditions.Dc.c
re2c/test/empty_code.c.c
re2c/test/flex-01.iF.c
re2c/test/input12.boinput12.c.c
re2c/test/input12.oinput12.c.c
re2c/test/input2.c
re2c/test/input3.c
re2c/test/line-01.c
re2c/test/overflow-1.c
re2c/test/overflow-4.c
re2c/test/php20150211_pdo_sql_parser.ig.c
re2c/test/php20150211_phar_path_check.ig.c
re2c/test/range_dot.8.c
re2c/test/range_dot.c
re2c/test/range_dot.e.c
re2c/test/range_dot.u.c
re2c/test/range_dot.w.c
re2c/test/range_dot.x.c
re2c/test/range_full.8.c
re2c/test/range_neg_lf.8.c
re2c/test/range_neg_lf.c
re2c/test/range_neg_lf.e.c
re2c/test/range_neg_lf.u.c
re2c/test/range_neg_lf.w.c
re2c/test/range_neg_lf.x.c
re2c/test/repeat-01.cgir.c
re2c/test/repeat-02.cgir.c
re2c/test/repeat-03.cgir.c
re2c/test/repeat-04.cgir.c
re2c/test/repeat-06.gir.c
re2c/test/repeat-07.gir.c
re2c/test/repeat-07_error.gir.c
re2c/test/repeater2.c
re2c/test/reuse_conds_default_0.cgir.c
re2c/test/reuse_conds_default_1.cgir.c
re2c/test/reuse_conds_setup_0.cgir.c
re2c/test/reuse_conds_setup_1.cgir.c
re2c/test/rexx.--empty-class(match-none).c
re2c/test/utf32_0x10000.u.c
re2c/test/utf8-full_range-2.8.c
re2c/test/utf8-range_0x00_0x7f.8.c
re2c/test/utf8-range_0x100000_0x10ffff.8.c
re2c/test/utf8-range_0x10000_0x3ffff.8.c
re2c/test/utf8-range_0x1000_0xffff.8.c
re2c/test/utf8-range_0x40000_0xfffff.8.c
re2c/test/utf8-range_0x800_0xfff.8.c
re2c/test/utf8-range_0x80_0x7ff.8.c
re2c/test/utf8-range_single_symbol.8.c

index 93b0d8e2a70b4d65df93caa72110e7112edfaf8b..820a867f004bb08fe6fc463a2f8dd841a052b769 100644 (file)
@@ -19,6 +19,7 @@ SRC_HDR = \
        src/codegen/output.h \
        src/codegen/print.h \
        src/codegen/scc.h \
+       src/codegen/skeleton/multipath.h \
        src/codegen/skeleton/path.h \
        src/codegen/skeleton/skeleton.h \
        src/conf/msg.h \
@@ -85,6 +86,8 @@ SRC = \
        src/codegen/output.cc \
        src/codegen/print.cc \
        src/codegen/scc.cc \
+       src/codegen/skeleton/control_flow.cc \
+       src/codegen/skeleton/multipath.cc \
        src/codegen/skeleton/path.cc \
        src/codegen/skeleton/skeleton.cc \
        src/conf/msg.cc \
index 283b6dd0211115ef1083b75f4df04a123540891f..72eef21c8184bb8fc63df52907ee0462f5604e9c 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.14.3 on Wed Aug 26 15:05:25 2015 */
+/* Generated by re2c 0.14.3 on Mon Aug 31 14:38:31 2015 */
 #line 1 "../src/conf/parse_opts.re"
 #include <stdio.h>
 
@@ -228,9 +228,8 @@ opt_warn:
        case 'c':       goto yy46;
        case 'e':       goto yy47;
        case 'm':       goto yy48;
-       case 'n':       goto yy49;
-       case 's':       goto yy50;
-       case 'u':       goto yy51;
+       case 's':       goto yy49;
+       case 'u':       goto yy50;
        default:        goto yy44;
        }
 yy44:
@@ -241,1204 +240,1219 @@ yy45:
                error ("bad warning: %s", *argv);
                return EXIT_FAIL;
        }
-#line 245 "src/conf/parse_opts.cc"
+#line 244 "src/conf/parse_opts.cc"
 yy46:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'o') goto yy137;
+       if (yych == 'o') goto yy145;
        goto yy45;
 yy47:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'm') goto yy115;
+       if (yych == 'm') goto yy123;
        goto yy45;
 yy48:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy96;
+       if (yych == 'a') goto yy104;
        goto yy45;
 yy49:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy82;
+       if (yych == 'w') goto yy90;
        goto yy45;
 yy50:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'w') goto yy68;
-       goto yy45;
-yy51:
-       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+       if (yych == 'n') goto yy53;
        if (yych != 's') goto yy45;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy54;
-yy53:
+       if (yych == 'e') goto yy76;
+yy52:
        YYCURSOR = YYMARKER;
        goto yy45;
-yy54:
+yy53:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'd') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'e') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'f') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'i') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy53;
+       if (yych != 'n') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy53;
+       if (yych != 'd') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != 'c') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'o') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy53;
+       if (yych != 'n') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy53;
+       if (yych != 'o') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'l') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy53;
+       if (yych != '-') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'f') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'l') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'o') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'w') goto yy52;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych >= 0x01) goto yy52;
        ++YYCURSOR;
-#line 83 "../src/conf/parse_opts.re"
-       { warn.set (Warn::USELESS_ESCAPE,        option); goto opt; }
-#line 302 "src/conf/parse_opts.cc"
-yy68:
+#line 82 "../src/conf/parse_opts.re"
+       { warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; }
+#line 316 "src/conf/parse_opts.cc"
+yy76:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'l') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy53;
+       if (yych != 's') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 's') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy53;
+       if (yych != 's') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'c') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy53;
+       if (yych != 'a') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy53;
+       if (yych != 'p') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy53;
+       if (yych >= 0x01) goto yy52;
        ++YYCURSOR;
-#line 82 "../src/conf/parse_opts.re"
-       { warn.set (Warn::SWAPPED_RANGE,         option); goto opt; }
-#line 331 "src/conf/parse_opts.cc"
-yy82:
+#line 83 "../src/conf/parse_opts.re"
+       { warn.set (Warn::USELESS_ESCAPE,         option); goto opt; }
+#line 345 "src/conf/parse_opts.cc"
+yy90:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'k') goto yy53;
+       if (yych != 'a') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'p') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy53;
+       if (yych != 'p') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy53;
+       if (yych != 'd') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'f') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'a') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy53;
+       if (yych != 'n') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy53;
+       if (yych != 'g') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy53;
+       if (yych >= 0x01) goto yy52;
        ++YYCURSOR;
 #line 81 "../src/conf/parse_opts.re"
-       { warn.set (Warn::NAKED_DEFAULT,         option); goto opt; }
-#line 360 "src/conf/parse_opts.cc"
-yy96:
+       { warn.set (Warn::SWAPPED_RANGE,          option); goto opt; }
+#line 374 "src/conf/parse_opts.cc"
+yy104:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy53;
+       if (yych != 'c') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'h') goto yy53;
+       if (yych != 'h') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'm') goto yy53;
+       if (yych != 'm') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy53;
+       if (yych != 'p') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'y') goto yy53;
+       if (yych != 'y') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy53;
+       if (yych != 's') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy53;
+       if (yych != 'i') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy53;
+       if (yych != 'n') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy53;
+       if (yych != 'g') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy53;
+       if (yych >= 0x01) goto yy52;
        ++YYCURSOR;
 #line 80 "../src/conf/parse_opts.re"
-       { warn.set (Warn::MATCH_EMPTY_STRING,    option); goto opt; }
-#line 399 "src/conf/parse_opts.cc"
-yy115:
+       { warn.set (Warn::MATCH_EMPTY_STRING,     option); goto opt; }
+#line 413 "src/conf/parse_opts.cc"
+yy123:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy53;
+       if (yych != 'p') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'y') goto yy53;
+       if (yych != 'y') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy53;
+       if (yych != 'c') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'h') goto yy53;
+       if (yych != 'h') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'a') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'a') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy53;
+       if (yych != 'c') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy53;
+       if (yych != 'c') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy53;
+       if (yych != 'l') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy53;
+       if (yych != 'a') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy53;
+       if (yych != 's') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy53;
+       if (yych != 's') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy53;
+       if (yych >= 0x01) goto yy52;
        ++YYCURSOR;
 #line 79 "../src/conf/parse_opts.re"
-       { warn.set (Warn::EMPTY_CHARACTER_CLASS, option); goto opt; }
-#line 444 "src/conf/parse_opts.cc"
-yy137:
+       { warn.set (Warn::EMPTY_CHARACTER_CLASS,  option); goto opt; }
+#line 458 "src/conf/parse_opts.cc"
+yy145:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy53;
+       if (yych != 'n') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy53;
+       if (yych != 'd') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy53;
+       if (yych != 'i') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy53;
+       if (yych != 't') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy53;
+       if (yych != 'i') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy53;
+       if (yych != 'o') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy53;
+       if (yych != 'n') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy53;
+       if (yych != '-') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy53;
+       if (yych != 'o') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy53;
+       if (yych != 'd') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy53;
+       if (yych != 'e') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy53;
+       if (yych != 'r') goto yy52;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy53;
+       if (yych >= 0x01) goto yy52;
        ++YYCURSOR;
 #line 78 "../src/conf/parse_opts.re"
-       { warn.set (Warn::CONDITION_ORDER,       option); goto opt; }
-#line 477 "src/conf/parse_opts.cc"
+       { warn.set (Warn::CONDITION_ORDER,        option); goto opt; }
+#line 491 "src/conf/parse_opts.cc"
 }
 #line 84 "../src/conf/parse_opts.re"
 
 
 opt_short:
 
-#line 484 "src/conf/parse_opts.cc"
+#line 498 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'c') {
                if (yych <= 'C') {
                        if (yych <= '7') {
-                               if (yych <= 0x00) goto yy155;
-                               if (yych == '1') goto yy159;
-                               goto yy157;
+                               if (yych <= 0x00) goto yy163;
+                               if (yych == '1') goto yy167;
+                               goto yy165;
                        } else {
-                               if (yych <= '8') goto yy161;
-                               if (yych == '?') goto yy163;
-                               goto yy157;
+                               if (yych <= '8') goto yy169;
+                               if (yych == '?') goto yy171;
+                               goto yy165;
                        }
                } else {
                        if (yych <= 'U') {
-                               if (yych <= 'D') goto yy165;
-                               if (yych == 'F') goto yy167;
-                               goto yy157;
+                               if (yych <= 'D') goto yy173;
+                               if (yych == 'F') goto yy175;
+                               goto yy165;
                        } else {
-                               if (yych <= 'V') goto yy169;
-                               if (yych <= 'a') goto yy157;
-                               if (yych <= 'b') goto yy171;
-                               goto yy173;
+                               if (yych <= 'V') goto yy177;
+                               if (yych <= 'a') goto yy165;
+                               if (yych <= 'b') goto yy179;
+                               goto yy181;
                        }
                }
        } else {
                if (yych <= 'o') {
                        if (yych <= 'g') {
-                               if (yych <= 'd') goto yy175;
-                               if (yych <= 'e') goto yy177;
-                               if (yych <= 'f') goto yy179;
-                               goto yy181;
+                               if (yych <= 'd') goto yy183;
+                               if (yych <= 'e') goto yy185;
+                               if (yych <= 'f') goto yy187;
+                               goto yy189;
                        } else {
-                               if (yych <= 'h') goto yy163;
-                               if (yych <= 'i') goto yy183;
-                               if (yych <= 'n') goto yy157;
-                               goto yy185;
+                               if (yych <= 'h') goto yy171;
+                               if (yych <= 'i') goto yy191;
+                               if (yych <= 'n') goto yy165;
+                               goto yy193;
                        }
                } else {
                        if (yych <= 't') {
-                               if (yych <= 'q') goto yy157;
-                               if (yych <= 'r') goto yy187;
-                               if (yych <= 's') goto yy189;
-                               goto yy191;
+                               if (yych <= 'q') goto yy165;
+                               if (yych <= 'r') goto yy195;
+                               if (yych <= 's') goto yy197;
+                               goto yy199;
                        } else {
                                if (yych <= 'v') {
-                                       if (yych <= 'u') goto yy193;
-                                       goto yy195;
+                                       if (yych <= 'u') goto yy201;
+                                       goto yy203;
                                } else {
-                                       if (yych <= 'w') goto yy197;
-                                       if (yych <= 'x') goto yy199;
-                                       goto yy157;
+                                       if (yych <= 'w') goto yy205;
+                                       if (yych <= 'x') goto yy207;
+                                       goto yy165;
                                }
                        }
                }
        }
-yy155:
+yy163:
        ++YYCURSOR;
 #line 93 "../src/conf/parse_opts.re"
        { goto opt; }
-#line 546 "src/conf/parse_opts.cc"
-yy157:
+#line 560 "src/conf/parse_opts.cc"
+yy165:
        ++YYCURSOR;
 #line 89 "../src/conf/parse_opts.re"
        {
                error ("bad short option: %s", *argv);
                return EXIT_FAIL;
        }
-#line 554 "src/conf/parse_opts.cc"
-yy159:
+#line 568 "src/conf/parse_opts.cc"
+yy167:
        ++YYCURSOR;
 #line 116 "../src/conf/parse_opts.re"
        { goto opt_short; }
-#line 559 "src/conf/parse_opts.cc"
-yy161:
+#line 573 "src/conf/parse_opts.cc"
+yy169:
        ++YYCURSOR;
 #line 111 "../src/conf/parse_opts.re"
        { if (!opts.utf_8 ())      { error_encoding (); return EXIT_FAIL; } goto opt_short; }
-#line 564 "src/conf/parse_opts.cc"
-yy163:
+#line 578 "src/conf/parse_opts.cc"
+yy171:
        ++YYCURSOR;
 #line 94 "../src/conf/parse_opts.re"
        { usage ();   return EXIT_OK; }
-#line 569 "src/conf/parse_opts.cc"
-yy165:
+#line 583 "src/conf/parse_opts.cc"
+yy173:
        ++YYCURSOR;
 #line 100 "../src/conf/parse_opts.re"
        { opts.emit_dot ();         goto opt_short; }
-#line 574 "src/conf/parse_opts.cc"
-yy167:
+#line 588 "src/conf/parse_opts.cc"
+yy175:
        ++YYCURSOR;
 #line 102 "../src/conf/parse_opts.re"
        { opts.flex_syntax ();      goto opt_short; }
-#line 579 "src/conf/parse_opts.cc"
-yy169:
+#line 593 "src/conf/parse_opts.cc"
+yy177:
        ++YYCURSOR;
 #line 96 "../src/conf/parse_opts.re"
        { vernum ();  return EXIT_OK; }
-#line 584 "src/conf/parse_opts.cc"
-yy171:
+#line 598 "src/conf/parse_opts.cc"
+yy179:
        ++YYCURSOR;
 #line 97 "../src/conf/parse_opts.re"
        { opts.bit_vectors ();      goto opt_short; }
-#line 589 "src/conf/parse_opts.cc"
-yy173:
+#line 603 "src/conf/parse_opts.cc"
+yy181:
        ++YYCURSOR;
 #line 98 "../src/conf/parse_opts.re"
        { opts.start_conditions (); goto opt_short; }
-#line 594 "src/conf/parse_opts.cc"
-yy175:
+#line 608 "src/conf/parse_opts.cc"
+yy183:
        ++YYCURSOR;
 #line 99 "../src/conf/parse_opts.re"
        { opts.debug_output ();     goto opt_short; }
-#line 599 "src/conf/parse_opts.cc"
-yy177:
+#line 613 "src/conf/parse_opts.cc"
+yy185:
        ++YYCURSOR;
 #line 107 "../src/conf/parse_opts.re"
        { if (!opts.ecb ())        { error_encoding (); return EXIT_FAIL; } goto opt_short; }
-#line 604 "src/conf/parse_opts.cc"
-yy179:
+#line 618 "src/conf/parse_opts.cc"
+yy187:
        ++YYCURSOR;
 #line 101 "../src/conf/parse_opts.re"
        { opts.storable_state ();   goto opt_short; }
-#line 609 "src/conf/parse_opts.cc"
-yy181:
+#line 623 "src/conf/parse_opts.cc"
+yy189:
        ++YYCURSOR;
 #line 103 "../src/conf/parse_opts.re"
        { opts.computed_gotos ();   goto opt_short; }
-#line 614 "src/conf/parse_opts.cc"
-yy183:
+#line 628 "src/conf/parse_opts.cc"
+yy191:
        ++YYCURSOR;
 #line 104 "../src/conf/parse_opts.re"
        { opts.no_debug_info ();    goto opt_short; }
-#line 619 "src/conf/parse_opts.cc"
-yy185:
+#line 633 "src/conf/parse_opts.cc"
+yy193:
        ++YYCURSOR;
-       if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy203;
+       if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy211;
 #line 113 "../src/conf/parse_opts.re"
        { *argv = YYCURSOR;                                                             goto opt_output; }
-#line 625 "src/conf/parse_opts.cc"
-yy187:
+#line 639 "src/conf/parse_opts.cc"
+yy195:
        ++YYCURSOR;
 #line 105 "../src/conf/parse_opts.re"
        { opts.reusable ();         goto opt_short; }
-#line 630 "src/conf/parse_opts.cc"
-yy189:
+#line 644 "src/conf/parse_opts.cc"
+yy197:
        ++YYCURSOR;
 #line 106 "../src/conf/parse_opts.re"
        { opts.nested_ifs ();       goto opt_short; }
-#line 635 "src/conf/parse_opts.cc"
-yy191:
+#line 649 "src/conf/parse_opts.cc"
+yy199:
        ++YYCURSOR;
-       if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy201;
+       if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy209;
 #line 115 "../src/conf/parse_opts.re"
        { *argv = YYCURSOR;                                                                  goto opt_header; }
-#line 641 "src/conf/parse_opts.cc"
-yy193:
+#line 655 "src/conf/parse_opts.cc"
+yy201:
        ++YYCURSOR;
 #line 108 "../src/conf/parse_opts.re"
        { if (!opts.unicode ())    { error_encoding (); return EXIT_FAIL; } goto opt_short; }
-#line 646 "src/conf/parse_opts.cc"
-yy195:
+#line 660 "src/conf/parse_opts.cc"
+yy203:
        ++YYCURSOR;
 #line 95 "../src/conf/parse_opts.re"
        { version (); return EXIT_OK; }
-#line 651 "src/conf/parse_opts.cc"
-yy197:
+#line 665 "src/conf/parse_opts.cc"
+yy205:
        ++YYCURSOR;
 #line 109 "../src/conf/parse_opts.re"
        { if (!opts.wide_chars ()) { error_encoding (); return EXIT_FAIL; } goto opt_short; }
-#line 656 "src/conf/parse_opts.cc"
-yy199:
+#line 670 "src/conf/parse_opts.cc"
+yy207:
        ++YYCURSOR;
 #line 110 "../src/conf/parse_opts.re"
        { if (!opts.utf_16 ())     { error_encoding (); return EXIT_FAIL; } goto opt_short; }
-#line 661 "src/conf/parse_opts.cc"
-yy201:
+#line 675 "src/conf/parse_opts.cc"
+yy209:
        ++YYCURSOR;
 #line 114 "../src/conf/parse_opts.re"
        { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
-#line 666 "src/conf/parse_opts.cc"
-yy203:
+#line 680 "src/conf/parse_opts.cc"
+yy211:
        ++YYCURSOR;
 #line 112 "../src/conf/parse_opts.re"
        { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
-#line 671 "src/conf/parse_opts.cc"
+#line 685 "src/conf/parse_opts.cc"
 }
 #line 117 "../src/conf/parse_opts.re"
 
 
 opt_long:
 
-#line 678 "src/conf/parse_opts.cc"
+#line 692 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
        switch (yych) {
-       case 'b':       goto yy209;
-       case 'c':       goto yy210;
-       case 'd':       goto yy211;
-       case 'e':       goto yy212;
-       case 'f':       goto yy213;
-       case 'h':       goto yy214;
-       case 'i':       goto yy215;
-       case 'n':       goto yy216;
-       case 'o':       goto yy217;
-       case 'r':       goto yy218;
-       case 's':       goto yy219;
-       case 't':       goto yy220;
-       case 'u':       goto yy221;
-       case 'v':       goto yy222;
-       case 'w':       goto yy223;
-       default:        goto yy207;
+       case 'b':       goto yy217;
+       case 'c':       goto yy218;
+       case 'd':       goto yy219;
+       case 'e':       goto yy220;
+       case 'f':       goto yy221;
+       case 'h':       goto yy222;
+       case 'i':       goto yy223;
+       case 'n':       goto yy224;
+       case 'o':       goto yy225;
+       case 'r':       goto yy226;
+       case 's':       goto yy227;
+       case 't':       goto yy228;
+       case 'u':       goto yy229;
+       case 'v':       goto yy230;
+       case 'w':       goto yy231;
+       default:        goto yy215;
        }
-yy207:
+yy215:
        ++YYCURSOR;
-yy208:
+yy216:
 #line 122 "../src/conf/parse_opts.re"
        {
                error ("bad long option: %s", *argv);
                return EXIT_FAIL;
        }
-#line 708 "src/conf/parse_opts.cc"
-yy209:
+#line 722 "src/conf/parse_opts.cc"
+yy217:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'i') goto yy505;
-       goto yy208;
-yy210:
+       if (yych == 'i') goto yy513;
+       goto yy216;
+yy218:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy465;
-       if (yych == 'o') goto yy466;
-       goto yy208;
-yy211:
+       if (yych == 'a') goto yy473;
+       if (yych == 'o') goto yy474;
+       goto yy216;
+yy219:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy452;
-       goto yy208;
-yy212:
+       if (yych == 'e') goto yy460;
+       goto yy216;
+yy220:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 'l') {
-               if (yych == 'c') goto yy414;
-               goto yy208;
+               if (yych == 'c') goto yy422;
+               goto yy216;
        } else {
-               if (yych <= 'm') goto yy412;
-               if (yych <= 'n') goto yy413;
-               goto yy208;
+               if (yych <= 'm') goto yy420;
+               if (yych <= 'n') goto yy421;
+               goto yy216;
        }
-yy213:
+yy221:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'l') goto yy400;
-       goto yy208;
-yy214:
+       if (yych == 'l') goto yy408;
+       goto yy216;
+yy222:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy395;
-       goto yy208;
-yy215:
+       if (yych == 'e') goto yy403;
+       goto yy216;
+yy223:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'n') goto yy389;
-       goto yy208;
-yy216:
+       if (yych == 'n') goto yy397;
+       goto yy216;
+yy224:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy348;
-       if (yych == 'o') goto yy347;
-       goto yy208;
-yy217:
+       if (yych == 'e') goto yy356;
+       if (yych == 'o') goto yy355;
+       goto yy216;
+yy225:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'u') goto yy340;
-       goto yy208;
-yy218:
+       if (yych == 'u') goto yy348;
+       goto yy216;
+yy226:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy331;
-       goto yy208;
-yy219:
+       if (yych == 'e') goto yy339;
+       goto yy216;
+yy227:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 'j') {
-               if (yych == 'i') goto yy279;
-               goto yy208;
+               if (yych == 'i') goto yy287;
+               goto yy216;
        } else {
-               if (yych <= 'k') goto yy280;
-               if (yych == 't') goto yy281;
-               goto yy208;
+               if (yych <= 'k') goto yy288;
+               if (yych == 't') goto yy289;
+               goto yy216;
        }
-yy220:
+yy228:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'y') goto yy267;
-       goto yy208;
-yy221:
+       if (yych == 'y') goto yy275;
+       goto yy216;
+yy229:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'n') goto yy250;
-       if (yych == 't') goto yy249;
-       goto yy208;
-yy222:
+       if (yych == 'n') goto yy258;
+       if (yych == 't') goto yy257;
+       goto yy216;
+yy230:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'e') goto yy236;
-       goto yy208;
-yy223:
+       if (yych == 'e') goto yy244;
+       goto yy216;
+yy231:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych != 'i') goto yy208;
+       if (yych != 'i') goto yy216;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy226;
-yy225:
+       if (yych == 'd') goto yy234;
+yy233:
        YYCURSOR = YYMARKER;
-       goto yy208;
-yy226:
+       goto yy216;
+yy234:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy225;
+       if (yych != 'c') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'h') goto yy225;
+       if (yych != 'h') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 145 "../src/conf/parse_opts.re"
        { if (!opts.wide_chars ()) { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 808 "src/conf/parse_opts.cc"
-yy236:
+#line 822 "src/conf/parse_opts.cc"
+yy244:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy238;
-       if (yych == 's') goto yy239;
-       goto yy225;
-yy238:
+       if (yych == 'n') goto yy246;
+       if (yych == 's') goto yy247;
+       goto yy233;
+yy246:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'u') goto yy245;
-       goto yy225;
-yy239:
+       if (yych == 'u') goto yy253;
+       goto yy233;
+yy247:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 127 "../src/conf/parse_opts.re"
        { version (); return EXIT_OK; }
-#line 832 "src/conf/parse_opts.cc"
-yy245:
+#line 846 "src/conf/parse_opts.cc"
+yy253:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'm') goto yy225;
+       if (yych != 'm') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 128 "../src/conf/parse_opts.re"
        { vernum ();  return EXIT_OK; }
-#line 841 "src/conf/parse_opts.cc"
-yy249:
+#line 855 "src/conf/parse_opts.cc"
+yy257:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy258;
-       goto yy225;
-yy250:
+       if (yych == 'f') goto yy266;
+       goto yy233;
+yy258:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy225;
+       if (yych != 'c') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 144 "../src/conf/parse_opts.re"
        { if (!opts.unicode ())    { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 862 "src/conf/parse_opts.cc"
-yy258:
+#line 876 "src/conf/parse_opts.cc"
+yy266:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '1') goto yy260;
-       if (yych == '8') goto yy261;
-       goto yy225;
-yy260:
+       if (yych == '1') goto yy268;
+       if (yych == '8') goto yy269;
+       goto yy233;
+yy268:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '6') goto yy264;
-       goto yy225;
-yy261:
+       if (yych == '6') goto yy272;
+       goto yy233;
+yy269:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 147 "../src/conf/parse_opts.re"
        { if (!opts.utf_8 ())      { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 880 "src/conf/parse_opts.cc"
-yy264:
+#line 894 "src/conf/parse_opts.cc"
+yy272:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 146 "../src/conf/parse_opts.re"
        { if (!opts.utf_16 ())     { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 887 "src/conf/parse_opts.cc"
-yy267:
+#line 901 "src/conf/parse_opts.cc"
+yy275:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'h') goto yy225;
+       if (yych != 'h') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 149 "../src/conf/parse_opts.re"
        { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
-#line 912 "src/conf/parse_opts.cc"
-yy279:
+#line 926 "src/conf/parse_opts.cc"
+yy287:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy320;
-       goto yy225;
-yy280:
+       if (yych == 'n') goto yy328;
+       goto yy233;
+yy288:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy312;
-       goto yy225;
-yy281:
+       if (yych == 'e') goto yy320;
+       goto yy233;
+yy289:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'a') goto yy282;
-       if (yych == 'o') goto yy283;
-       goto yy225;
-yy282:
+       if (yych == 'a') goto yy290;
+       if (yych == 'o') goto yy291;
+       goto yy233;
+yy290:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'r') goto yy297;
-       goto yy225;
-yy283:
+       if (yych == 'r') goto yy305;
+       goto yy233;
+yy291:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'b') goto yy225;
+       if (yych != 'b') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 133 "../src/conf/parse_opts.re"
        { opts.storable_state ();     goto opt; }
-#line 958 "src/conf/parse_opts.cc"
-yy297:
+#line 972 "src/conf/parse_opts.cc"
+yy305:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy225;
+       if (yych != 'c') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 130 "../src/conf/parse_opts.re"
        { opts.start_conditions ();   goto opt; }
-#line 989 "src/conf/parse_opts.cc"
-yy312:
+#line 1003 "src/conf/parse_opts.cc"
+yy320:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 142 "../src/conf/parse_opts.re"
        { opts.skeleton ();           goto opt; }
-#line 1006 "src/conf/parse_opts.cc"
-yy320:
+#line 1020 "src/conf/parse_opts.cc"
+yy328:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy225;
+       if (yych != 'g') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 153 "../src/conf/parse_opts.re"
        { goto opt; }
-#line 1029 "src/conf/parse_opts.cc"
-yy331:
+#line 1043 "src/conf/parse_opts.cc"
+yy339:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'b') goto yy225;
+       if (yych != 'b') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 137 "../src/conf/parse_opts.re"
        { opts.reusable ();           goto opt; }
-#line 1048 "src/conf/parse_opts.cc"
-yy340:
+#line 1062 "src/conf/parse_opts.cc"
+yy348:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 148 "../src/conf/parse_opts.re"
        { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
-#line 1063 "src/conf/parse_opts.cc"
-yy347:
+#line 1077 "src/conf/parse_opts.cc"
+yy355:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '-') goto yy359;
-       goto yy225;
-yy348:
+       if (yych == '-') goto yy367;
+       goto yy233;
+yy356:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'f') goto yy225;
+       if (yych != 'f') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 138 "../src/conf/parse_opts.re"
        { opts.nested_ifs ();         goto opt; }
-#line 1090 "src/conf/parse_opts.cc"
-yy359:
+#line 1104 "src/conf/parse_opts.cc"
+yy367:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'd') goto yy361;
-       if (yych != 'g') goto yy225;
+       if (yych == 'd') goto yy369;
+       if (yych != 'g') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy373;
-       goto yy225;
-yy361:
+       if (yych == 'e') goto yy381;
+       goto yy233;
+yy369:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'b') goto yy225;
+       if (yych != 'b') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy225;
+       if (yych != 'g') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'f') goto yy225;
+       if (yych != 'f') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 136 "../src/conf/parse_opts.re"
        { opts.no_debug_info ();      goto opt; }
-#line 1122 "src/conf/parse_opts.cc"
-yy373:
+#line 1136 "src/conf/parse_opts.cc"
+yy381:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 139 "../src/conf/parse_opts.re"
        { opts.no_generation_date (); goto opt; }
-#line 1155 "src/conf/parse_opts.cc"
-yy389:
+#line 1169 "src/conf/parse_opts.cc"
+yy397:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 151 "../src/conf/parse_opts.re"
        { goto opt_input; }
-#line 1168 "src/conf/parse_opts.cc"
-yy395:
+#line 1182 "src/conf/parse_opts.cc"
+yy403:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 126 "../src/conf/parse_opts.re"
        { usage ();   return EXIT_OK; }
-#line 1179 "src/conf/parse_opts.cc"
-yy400:
+#line 1193 "src/conf/parse_opts.cc"
+yy408:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'x') goto yy225;
+       if (yych != 'x') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'y') goto yy225;
+       if (yych != 'y') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'x') goto yy225;
+       if (yych != 'x') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 134 "../src/conf/parse_opts.re"
        { opts.flex_syntax ();        goto opt; }
-#line 1204 "src/conf/parse_opts.cc"
-yy412:
+#line 1218 "src/conf/parse_opts.cc"
+yy420:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy433;
-       if (yych == 'p') goto yy434;
-       goto yy225;
-yy413:
+       if (yych == 'i') goto yy441;
+       if (yych == 'p') goto yy442;
+       goto yy233;
+yy421:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy418;
-       goto yy225;
-yy414:
+       if (yych == 'c') goto yy426;
+       goto yy233;
+yy422:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'b') goto yy225;
+       if (yych != 'b') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 143 "../src/conf/parse_opts.re"
        { if (!opts.ecb ())        { error_encoding (); return EXIT_FAIL; } goto opt; }
-#line 1222 "src/conf/parse_opts.cc"
-yy418:
+#line 1236 "src/conf/parse_opts.cc"
+yy426:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy225;
+       if (yych != 'g') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy225;
+       if (yych != 'c') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'y') goto yy225;
+       if (yych != 'y') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 150 "../src/conf/parse_opts.re"
        { goto opt_encoding_policy; }
-#line 1253 "src/conf/parse_opts.cc"
-yy433:
+#line 1267 "src/conf/parse_opts.cc"
+yy441:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy445;
-       goto yy225;
-yy434:
+       if (yych == 't') goto yy453;
+       goto yy233;
+yy442:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'y') goto yy225;
+       if (yych != 'y') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy225;
+       if (yych != 'c') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy225;
+       if (yych != 'l') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy225;
+       if (yych != 'a') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 152 "../src/conf/parse_opts.re"
        { goto opt_empty_class; }
-#line 1280 "src/conf/parse_opts.cc"
-yy445:
+#line 1294 "src/conf/parse_opts.cc"
+yy453:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 132 "../src/conf/parse_opts.re"
        { opts.emit_dot ();           goto opt; }
-#line 1295 "src/conf/parse_opts.cc"
-yy452:
+#line 1309 "src/conf/parse_opts.cc"
+yy460:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'b') goto yy225;
+       if (yych != 'b') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy225;
+       if (yych != 'g') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 131 "../src/conf/parse_opts.re"
        { opts.debug_output ();       goto opt; }
-#line 1322 "src/conf/parse_opts.cc"
-yy465:
+#line 1336 "src/conf/parse_opts.cc"
+yy473:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy481;
-       goto yy225;
-yy466:
+       if (yych == 's') goto yy489;
+       goto yy233;
+yy474:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'm') goto yy225;
+       if (yych != 'm') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy225;
+       if (yych != 'p') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy225;
+       if (yych != 'u') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'g') goto yy225;
+       if (yych != 'g') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 135 "../src/conf/parse_opts.re"
        { opts.computed_gotos ();     goto opt; }
-#line 1357 "src/conf/parse_opts.cc"
-yy481:
+#line 1371 "src/conf/parse_opts.cc"
+yy489:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 's') goto yy487;
-       if (yych != 'v') goto yy225;
+       if (yych == 's') goto yy495;
+       if (yych != 'v') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy498;
-       goto yy225;
-yy487:
+       if (yych == 'e') goto yy506;
+       goto yy233;
+yy495:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy225;
+       if (yych != 'n') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy225;
+       if (yych != 'i') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'v') goto yy225;
+       if (yych != 'v') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 140 "../src/conf/parse_opts.re"
        { opts.case_insensitive ();   goto opt; }
-#line 1395 "src/conf/parse_opts.cc"
-yy498:
+#line 1409 "src/conf/parse_opts.cc"
+yy506:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'd') goto yy225;
+       if (yych != 'd') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 141 "../src/conf/parse_opts.re"
        { opts.case_inverted ();      goto opt; }
-#line 1410 "src/conf/parse_opts.cc"
-yy505:
+#line 1424 "src/conf/parse_opts.cc"
+yy513:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy225;
+       if (yych != '-') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'v') goto yy225;
+       if (yych != 'v') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy225;
+       if (yych != 'e') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy225;
+       if (yych != 'c') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy225;
+       if (yych != 't') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy225;
+       if (yych != 'o') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy225;
+       if (yych != 'r') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy225;
+       if (yych != 's') goto yy233;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy225;
+       if (yych >= 0x01) goto yy233;
        ++YYCURSOR;
 #line 129 "../src/conf/parse_opts.re"
        { opts.bit_vectors ();        goto opt; }
-#line 1435 "src/conf/parse_opts.cc"
+#line 1449 "src/conf/parse_opts.cc"
 }
 #line 154 "../src/conf/parse_opts.re"
 
 
 opt_output:
 
-#line 1442 "src/conf/parse_opts.cc"
+#line 1456 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1476,37 +1490,37 @@ opt_output:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy519;
-       if (yych != '-') goto yy521;
-yy519:
+       if (yych <= 0x00) goto yy527;
+       if (yych != '-') goto yy529;
+yy527:
        ++YYCURSOR;
 #line 159 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option -o, --output: %s", *argv);
                return EXIT_FAIL;
        }
-#line 1489 "src/conf/parse_opts.cc"
-yy521:
+#line 1503 "src/conf/parse_opts.cc"
+yy529:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       goto yy523;
-yy522:
+       goto yy531;
+yy530:
        ++YYCURSOR;
        yych = (YYCTYPE)*YYCURSOR;
-yy523:
+yy531:
        if (yybm[0+yych] & 128) {
-               goto yy522;
+               goto yy530;
        }
        ++YYCURSOR;
 #line 163 "../src/conf/parse_opts.re"
        { if (!opts.output (*argv)) return EXIT_FAIL; goto opt; }
-#line 1503 "src/conf/parse_opts.cc"
+#line 1517 "src/conf/parse_opts.cc"
 }
 #line 164 "../src/conf/parse_opts.re"
 
 
 opt_header:
 
-#line 1510 "src/conf/parse_opts.cc"
+#line 1524 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1544,30 +1558,30 @@ opt_header:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 0x00) goto yy528;
-       if (yych != '-') goto yy530;
-yy528:
+       if (yych <= 0x00) goto yy536;
+       if (yych != '-') goto yy538;
+yy536:
        ++YYCURSOR;
 #line 169 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option -t, --type-header: %s", *argv);
                return EXIT_FAIL;
        }
-#line 1557 "src/conf/parse_opts.cc"
-yy530:
+#line 1571 "src/conf/parse_opts.cc"
+yy538:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       goto yy532;
-yy531:
+       goto yy540;
+yy539:
        ++YYCURSOR;
        yych = (YYCTYPE)*YYCURSOR;
-yy532:
+yy540:
        if (yybm[0+yych] & 128) {
-               goto yy531;
+               goto yy539;
        }
        ++YYCURSOR;
 #line 173 "../src/conf/parse_opts.re"
        { if (!opts.type_header (*argv)) return EXIT_FAIL; goto opt; }
-#line 1571 "src/conf/parse_opts.cc"
+#line 1585 "src/conf/parse_opts.cc"
 }
 #line 174 "../src/conf/parse_opts.re"
 
@@ -1579,87 +1593,87 @@ opt_encoding_policy:
                return EXIT_FAIL;
        }
 
-#line 1583 "src/conf/parse_opts.cc"
+#line 1597 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'h') {
-               if (yych == 'f') goto yy539;
+               if (yych == 'f') goto yy547;
        } else {
-               if (yych <= 'i') goto yy540;
-               if (yych == 's') goto yy541;
+               if (yych <= 'i') goto yy548;
+               if (yych == 's') goto yy549;
        }
        ++YYCURSOR;
-yy538:
+yy546:
 #line 184 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv);
                return EXIT_FAIL;
        }
-#line 1600 "src/conf/parse_opts.cc"
-yy539:
+#line 1614 "src/conf/parse_opts.cc"
+yy547:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'a') goto yy561;
-       goto yy538;
-yy540:
+       if (yych == 'a') goto yy569;
+       goto yy546;
+yy548:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'g') goto yy554;
-       goto yy538;
-yy541:
+       if (yych == 'g') goto yy562;
+       goto yy546;
+yy549:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych != 'u') goto yy538;
+       if (yych != 'u') goto yy546;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'b') goto yy544;
-yy543:
+       if (yych == 'b') goto yy552;
+yy551:
        YYCURSOR = YYMARKER;
-       goto yy538;
-yy544:
+       goto yy546;
+yy552:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy543;
+       if (yych != 's') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy543;
+       if (yych != 't') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy543;
+       if (yych != 'i') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy543;
+       if (yych != 't') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy543;
+       if (yych != 'u') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy543;
+       if (yych != 't') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy543;
+       if (yych != 'e') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy543;
+       if (yych >= 0x01) goto yy551;
        ++YYCURSOR;
 #line 189 "../src/conf/parse_opts.re"
        { opts.encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; }
-#line 1637 "src/conf/parse_opts.cc"
-yy554:
+#line 1651 "src/conf/parse_opts.cc"
+yy562:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy543;
+       if (yych != 'n') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy543;
+       if (yych != 'o') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy543;
+       if (yych != 'r') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy543;
+       if (yych != 'e') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy543;
+       if (yych >= 0x01) goto yy551;
        ++YYCURSOR;
 #line 188 "../src/conf/parse_opts.re"
        { opts.encoding_policy (Enc::POLICY_IGNORE);     goto opt; }
-#line 1652 "src/conf/parse_opts.cc"
-yy561:
+#line 1666 "src/conf/parse_opts.cc"
+yy569:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy543;
+       if (yych != 'i') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy543;
+       if (yych != 'l') goto yy551;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy543;
+       if (yych >= 0x01) goto yy551;
        ++YYCURSOR;
 #line 190 "../src/conf/parse_opts.re"
        { opts.encoding_policy (Enc::POLICY_FAIL);       goto opt; }
-#line 1663 "src/conf/parse_opts.cc"
+#line 1677 "src/conf/parse_opts.cc"
 }
 #line 191 "../src/conf/parse_opts.re"
 
@@ -1671,64 +1685,64 @@ opt_input:
                return EXIT_FAIL;
        }
 
-#line 1675 "src/conf/parse_opts.cc"
+#line 1689 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= 'b') goto yy568;
-       if (yych <= 'c') goto yy570;
-       if (yych <= 'd') goto yy571;
-yy568:
+       if (yych <= 'b') goto yy576;
+       if (yych <= 'c') goto yy578;
+       if (yych <= 'd') goto yy579;
+yy576:
        ++YYCURSOR;
-yy569:
+yy577:
 #line 201 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --input (expected: default | custom): %s", *argv);
                return EXIT_FAIL;
        }
-#line 1690 "src/conf/parse_opts.cc"
-yy570:
+#line 1704 "src/conf/parse_opts.cc"
+yy578:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'u') goto yy581;
-       goto yy569;
-yy571:
+       if (yych == 'u') goto yy589;
+       goto yy577;
+yy579:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych != 'e') goto yy569;
+       if (yych != 'e') goto yy577;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'f') goto yy574;
-yy573:
+       if (yych == 'f') goto yy582;
+yy581:
        YYCURSOR = YYMARKER;
-       goto yy569;
-yy574:
+       goto yy577;
+yy582:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'a') goto yy573;
+       if (yych != 'a') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'u') goto yy573;
+       if (yych != 'u') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'l') goto yy573;
+       if (yych != 'l') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy573;
+       if (yych != 't') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy573;
+       if (yych >= 0x01) goto yy581;
        ++YYCURSOR;
 #line 205 "../src/conf/parse_opts.re"
        { opts.input (InputAPI::DEFAULT); goto opt; }
-#line 1717 "src/conf/parse_opts.cc"
-yy581:
+#line 1731 "src/conf/parse_opts.cc"
+yy589:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 's') goto yy573;
+       if (yych != 's') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy573;
+       if (yych != 't') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy573;
+       if (yych != 'o') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'm') goto yy573;
+       if (yych != 'm') goto yy581;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy573;
+       if (yych >= 0x01) goto yy581;
        ++YYCURSOR;
 #line 206 "../src/conf/parse_opts.re"
        { opts.input (InputAPI::CUSTOM);  goto opt; }
-#line 1732 "src/conf/parse_opts.cc"
+#line 1746 "src/conf/parse_opts.cc"
 }
 #line 207 "../src/conf/parse_opts.re"
 
@@ -1740,86 +1754,86 @@ opt_empty_class:
                return EXIT_FAIL;
        }
 
-#line 1744 "src/conf/parse_opts.cc"
+#line 1758 "src/conf/parse_opts.cc"
 {
        YYCTYPE yych;
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == 'e') goto yy592;
-       if (yych == 'm') goto yy593;
+       if (yych == 'e') goto yy600;
+       if (yych == 'm') goto yy601;
        ++YYCURSOR;
-yy591:
+yy599:
 #line 217 "../src/conf/parse_opts.re"
        {
                error ("bad argument to option --empty-class (expected: match-empty | match-none | error): %s", *argv);
                return EXIT_FAIL;
        }
-#line 1757 "src/conf/parse_opts.cc"
-yy592:
+#line 1771 "src/conf/parse_opts.cc"
+yy600:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'r') goto yy613;
-       goto yy591;
-yy593:
+       if (yych == 'r') goto yy621;
+       goto yy599;
+yy601:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych != 'a') goto yy591;
+       if (yych != 'a') goto yy599;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 't') goto yy596;
-yy595:
+       if (yych == 't') goto yy604;
+yy603:
        YYCURSOR = YYMARKER;
-       goto yy591;
-yy596:
+       goto yy599;
+yy604:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'c') goto yy595;
+       if (yych != 'c') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'h') goto yy595;
+       if (yych != 'h') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '-') goto yy595;
+       if (yych != '-') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy600;
-       if (yych == 'n') goto yy601;
-       goto yy595;
-yy600:
+       if (yych == 'e') goto yy608;
+       if (yych == 'n') goto yy609;
+       goto yy603;
+yy608:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'm') goto yy607;
-       goto yy595;
-yy601:
+       if (yych == 'm') goto yy615;
+       goto yy603;
+yy609:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy595;
+       if (yych != 'o') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy595;
+       if (yych != 'n') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy595;
+       if (yych != 'e') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy595;
+       if (yych >= 0x01) goto yy603;
        ++YYCURSOR;
 #line 222 "../src/conf/parse_opts.re"
        { opts.empty_class (EMPTY_CLASS_MATCH_NONE);  goto opt; }
-#line 1797 "src/conf/parse_opts.cc"
-yy607:
+#line 1811 "src/conf/parse_opts.cc"
+yy615:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'p') goto yy595;
+       if (yych != 'p') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 't') goto yy595;
+       if (yych != 't') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'y') goto yy595;
+       if (yych != 'y') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy595;
+       if (yych >= 0x01) goto yy603;
        ++YYCURSOR;
 #line 221 "../src/conf/parse_opts.re"
        { opts.empty_class (EMPTY_CLASS_MATCH_EMPTY); goto opt; }
-#line 1810 "src/conf/parse_opts.cc"
-yy613:
+#line 1824 "src/conf/parse_opts.cc"
+yy621:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy595;
+       if (yych != 'r') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'o') goto yy595;
+       if (yych != 'o') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'r') goto yy595;
+       if (yych != 'r') goto yy603;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych >= 0x01) goto yy595;
+       if (yych >= 0x01) goto yy603;
        ++YYCURSOR;
 #line 223 "../src/conf/parse_opts.re"
        { opts.empty_class (EMPTY_CLASS_ERROR);       goto opt; }
-#line 1823 "src/conf/parse_opts.cc"
+#line 1837 "src/conf/parse_opts.cc"
 }
 #line 224 "../src/conf/parse_opts.re"
 
index b971fa864bafd4f6a9ef6e69409d7d10fa75d466..e6be4915e323bf40fd877b3c04b55695593544d0 100644 (file)
@@ -229,7 +229,7 @@ void DFA::emit(Output & output, uint32_t& ind, const std::string& condName, bool
        }
        if (flag_skeleton)
        {
-               skeleton::emit_epilog (o, ind);
+               emit_epilog (o, ind);
        }
 
        // Cleanup
index cbe2c4f0791c81550e0adac01a87cd288df1a00b..397ab4bb5381fa2f4d93c92a09af3f799fa671cb 100644 (file)
@@ -154,7 +154,7 @@ void DFA::findBaseState()
        operator delete (span);
 }
 
-void DFA::prepare(OutputFile & o, uint32_t & max_fill, const std::string & cond)
+void DFA::prepare(OutputFile & o, uint32_t & max_fill)
 {
        bUsedYYBitmap = false;
 
@@ -248,12 +248,6 @@ void DFA::prepare(OutputFile & o, uint32_t & max_fill, const std::string & cond)
                lb = head->go.span[i].ub;
        }
 
-       // warn if default case is not handled
-       if (default_state && !stray_cunits.empty () && !empty_rule)
-       {
-               warn.naked_default (o.get_block_line (), stray_cunits, cond);
-       }
-
        // warn about not shadowed rule that matches empty string
        if (empty_rule && !stray_cunits.empty ())
        {
diff --git a/re2c/src/codegen/skeleton/control_flow.cc b/re2c/src/codegen/skeleton/control_flow.cc
new file mode 100644 (file)
index 0000000..19e1919
--- /dev/null
@@ -0,0 +1,57 @@
+#include "src/codegen/skeleton/skeleton.h"
+
+namespace re2c
+{
+
+// see note [estimating total size of paths in skeleton]
+// neither do we need all default paths, nor default path cover:
+// just one path per each default final state, the shorter the better
+arccount_t Node::generate_paths_default (const multipath_t & prefix, std::vector<multipath_t> & paths)
+{
+       if (!rule.is_none ())
+       {
+               return arccount_t (0u);
+       }
+       else if (end ())
+       {
+               paths.push_back (prefix);
+               return arccount_t (prefix.len ());
+       }
+       else if (loop < 2)
+       {
+               local_inc _ (loop);
+               arccount_t size (0u);
+               for (arcsets_t::iterator i = arcsets.begin (); i != arcsets.end (); ++i)
+               {
+                       multipath_t p = prefix;
+                       p.extend (&i->second);
+                       size = size + i->first->generate_paths_default (p, paths);
+                       if (size.overflow ())
+                       {
+                               return arccount_t::limit ();
+                       }
+               }
+               return size;
+       }
+       else
+       {
+               return arccount_t (0u);
+       }
+}
+
+void Skeleton::warn_undefined_control_flow (uint32_t line, const std::string & cond)
+{
+       multipath_t prefix;
+       std::vector<multipath_t> paths;
+       const bool overflow = nodes->generate_paths_default (prefix, paths).overflow ();
+       if (!paths.empty ())
+       {
+               warn.undefined_control_flow (line, cond, paths, overflow);
+       }
+       else if (overflow)
+       {
+               warn.fail (Warn::UNDEFINED_CONTROL_FLOW, line, "DFA is too large to check undefined control flow");
+       }
+}
+
+} // namespace re2c
diff --git a/re2c/src/codegen/skeleton/multipath.cc b/re2c/src/codegen/skeleton/multipath.cc
new file mode 100644 (file)
index 0000000..aad4ab7
--- /dev/null
@@ -0,0 +1,71 @@
+#include "src/codegen/skeleton/multipath.h"
+
+namespace re2c
+{
+
+multipath_t::multipath_t ()
+       : arcs ()
+{}
+
+size_t multipath_t::len () const
+{
+       return arcs.size ();
+}
+
+void multipath_t::extend (const arc_t * arc)
+{
+       arcs.push_back (arc);
+}
+
+void multipath_t::fprint_arc (FILE * f, const arc_t & arc)
+{
+       const size_t ranges = arc.size ();
+       if (ranges == 1 && arc[0].first == arc[0].second)
+       {
+               fprintf (f, "\\x%X", arc[0].first);
+       }
+       else
+       {
+               fprintf (f, "[");
+               for (size_t i = 0; i < ranges; ++i)
+               {
+                       const uint32_t l = arc[i].first;
+                       const uint32_t u = arc[i].second;
+                       fprintf (f, "\\x%X", l);
+                       if (l != u)
+                       {
+                               fprintf (f, "-\\x%X", u);
+                       }
+               }
+               fprintf (f, "]");
+       }
+}
+
+void multipath_t::fprint (FILE * f) const
+{
+       fprintf (f, "'");
+       const size_t len = arcs.size ();
+       for (size_t i = 0 ; i < len; ++i)
+       {
+               if (i > 0)
+               {
+                       fprintf (f, " ");
+               }
+               if (arcs[i] == NULL)
+               {
+                       fprintf (stderr, "(nil)");
+               }
+               else
+               {
+                       fprint_arc (stderr, *arcs[i]);
+               }
+       }
+       fprintf (f, "'");
+}
+
+bool multipath_t::compare (const multipath_t & x, const multipath_t & y)
+{
+       return x.arcs.size () < y.arcs.size ();
+}
+
+} // namespace re2c
diff --git a/re2c/src/codegen/skeleton/multipath.h b/re2c/src/codegen/skeleton/multipath.h
new file mode 100644 (file)
index 0000000..ab6a30f
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef _RE2C_CODEGEN_SKELETON_MULTIPATH_
+#define _RE2C_CODEGEN_SKELETON_MULTIPATH_
+
+#include <stdio.h>
+#include <vector>
+
+#include "src/util/c99_stdint.h"
+
+namespace re2c
+{
+
+class multipath_t
+{
+public:
+       typedef std::vector<std::pair<uint32_t, uint32_t> > arc_t;
+
+private:
+       std::vector<const arc_t *> arcs;
+
+public:
+       multipath_t ();
+       size_t len () const;
+       void extend (const arc_t * arc);
+       void fprint (FILE * f) const;
+       static bool compare (const multipath_t & x, const multipath_t & y);
+
+private:
+       static void fprint_arc (FILE * f, const arc_t & arc);
+};
+
+} // namespace re2c
+
+#endif // _RE2C_CODEGEN_SKELETON_MULTIPATH_
index 750e8aea43fc66dd84d08d300ad54e4f64d94818..e83b507e6a2ddd3653a165910c525cf185a1732a 100644 (file)
@@ -3,9 +3,6 @@
 namespace re2c
 {
 
-namespace skeleton
-{
-
 Path::Path (const chars_t & cs, size_t l, rule_rank_t r)
        : chars (cs)
        , length (l)
@@ -41,6 +38,4 @@ void Path::append (const Path * p)
        }
 }
 
-} // namespace skeleton
-
 } // namespace re2c
index 9fc2cbf7aec49bc33742369245147c075a83f9ec..6aaa4a836bdfcd57694c1cbec62b2594351fa607 100644 (file)
@@ -9,9 +9,6 @@
 namespace re2c
 {
 
-namespace skeleton
-{
-
 struct Path
 {
        typedef std::vector<uint32_t> chars_t;
@@ -26,8 +23,6 @@ struct Path
        void append (const Path * p);
 };
 
-} // namespace skeleton
-
 } // namespace re2c
 
 #endif // _RE2C_CODEGEN_SKELETON_PATH_
index a974c978b8e6f38163dc6c8aaeb38acf39470209..6cb75bff5e9395aa6ed9a9d9bc52ffa8f827d2ab 100644 (file)
@@ -7,11 +7,9 @@
 namespace re2c
 {
 
-namespace skeleton
-{
-
 Node::Node (const State * s, const s2n_map & s2n)
        : arcs ()
+       , arcsets ()
        , loop (0)
        , rule (rule_rank_t::none ())
        , path_len_init (false)
@@ -37,11 +35,13 @@ Node::Node (const State * s, const s2n_map & s2n)
                {
                        const Span & span = s->go.span[i];
                        Node * n = s2n.find (span.to)->second;
+                       const uint32_t ub = span.ub - 1;
                        arcs[n].push_back (lb);
-                       if (lb != span.ub - 1)
+                       if (lb != ub)
                        {
-                               arcs[n].push_back (span.ub - 1);
+                               arcs[n].push_back (ub);
                        }
+                       arcsets[n].push_back (std::make_pair (lb, ub));
                        lb = span.ub;
                }
        }
@@ -371,6 +371,4 @@ void emit_epilog (OutputFile & o, uint32_t ind)
        o << indent (ind) << "}\n";
 }
 
-} // namespace skeleton
-
 } // namespace re2c
index b4f05a71e76e65559cbcf88eee65a77da9957f14..3a624db25b62e381fe49f63777b46cc49e13131f 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <map>
 
+#include "src/codegen/skeleton/multipath.h"
 #include "src/codegen/skeleton/path.h"
 #include "src/ir/dfa/dfa.h"
 #include "src/util/c99_stdint.h"
@@ -14,9 +15,6 @@
 namespace re2c
 {
 
-namespace skeleton
-{
-
 static const uint32_t ARC_LIMIT = 1024 * 1024 * 1024; // ~1Gb
 typedef u32lim_t<ARC_LIMIT> arccount_t;
 
@@ -24,11 +22,13 @@ struct Node
 {
        typedef std::map<const State *, Node *> s2n_map;
        typedef std::map<Node *, std::vector<uint32_t> > arcs_t;
+       typedef std::map<Node *, multipath_t::arc_t> arcsets_t;
        typedef local_increment_t<uint8_t> local_inc;
        typedef wrap_iterator_t<arcs_t> wrap_iter;
 
        // outgoing arcs
        arcs_t arcs;
+       arcsets_t arcsets;
 
        // how many times this node has been visited
        // (controls looping in graph traversals)
@@ -49,6 +49,7 @@ struct Node
        arccount_t estimate_size_cover (arccount_t inarcs, arccount_t len);
        void generate_paths_all (const std::vector<Path> & prefixes, std::vector<Path> & results);
        void generate_paths_cover (const std::vector<Path> & prefixes, std::vector<Path> & results);
+       arccount_t generate_paths_default (const multipath_t & prefix, std::vector<multipath_t> & paths);
 
        FORBID_COPY (Node);
 };
@@ -60,6 +61,7 @@ struct Skeleton
        Skeleton (const DFA & dfa);
        ~Skeleton ();
        void generate_paths (std::vector<Path> & results);
+       void warn_undefined_control_flow (uint32_t line, const std::string & cond);
        void emit_data (DataFile & o);
 
        FORBID_COPY (Skeleton);
@@ -68,8 +70,6 @@ struct Skeleton
 void emit_prolog (OutputFile & o, uint32_t ind, const char * data_name);
 void emit_epilog (OutputFile & o, uint32_t ind);
 
-} // namespace skeleton
-
 } // namespace re2c
 
 #endif // _RE2C_CODEGEN_SKELETON_SKELETON_
index ca89cce655ab05d5f261002e602f41079d523311..a23abaa4f564a6c56029c40cabedcc2431b53945 100644 (file)
@@ -29,18 +29,28 @@ void error_arg (const char * option)
        error ("expected argument to option %s", option);
 }
 
-void warning (const char * type, uint32_t line, bool error, const char * fmt, ...)
+void warning_start (uint32_t line, bool error)
 {
        static const char * msg = error ? "error" : "warning";
        fprintf (stderr, "re2c: %s: line %u: ", msg, line);
+}
+
+void warning_end (const char * type, bool error)
+{
+       const char * prefix = error ? "error-" : "";
+       fprintf (stderr, " [-W%s%s]\n", prefix, type);
+}
+
+void warning (const char * type, uint32_t line, bool error, const char * fmt, ...)
+{
+       warning_start (line, error);
 
        va_list args;
        va_start (args, fmt);
        vfprintf (stderr, fmt, args);
        va_end (args);
 
-       const char * prefix = error ? "error-" : "";
-       fprintf (stderr, " [-W%s%s]\n", prefix, type);
+       warning_end (type, error);
 }
 
 void usage ()
index f3397d7cab6f25638f372ddeb504f147793c64b2..d9a4b3267e614babc1788bc421eb316307399b22 100644 (file)
@@ -9,6 +9,8 @@ namespace re2c {
 void error (const char * fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 1, 2)));
 void error_encoding ();
 void error_arg (const char * option);
+void warning_start (uint32_t line, bool error);
+void warning_end (const char * type, bool error);
 void warning (const char * type, uint32_t line, bool error, const char * fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 4, 5)));
 void usage ();
 void vernum ();
index e3e8aa5215ffa5871d2a1ab29c343131b50224af..5cc208effc036002657fff388ddef6d6d412a202 100644 (file)
@@ -75,12 +75,12 @@ opt_warn:
                error ("bad warning: %s", *argv);
                return EXIT_FAIL;
        }
-       "condition-order"       end { warn.set (Warn::CONDITION_ORDER,       option); goto opt; }
-       "empty-character-class" end { warn.set (Warn::EMPTY_CHARACTER_CLASS, option); goto opt; }
-       "match-empty-string"    end { warn.set (Warn::MATCH_EMPTY_STRING,    option); goto opt; }
-       "naked-default"         end { warn.set (Warn::NAKED_DEFAULT,         option); goto opt; }
-       "swapped-range"         end { warn.set (Warn::SWAPPED_RANGE,         option); goto opt; }
-       "useless-escape"        end { warn.set (Warn::USELESS_ESCAPE,        option); goto opt; }
+       "condition-order"        end { warn.set (Warn::CONDITION_ORDER,        option); goto opt; }
+       "empty-character-class"  end { warn.set (Warn::EMPTY_CHARACTER_CLASS,  option); goto opt; }
+       "match-empty-string"     end { warn.set (Warn::MATCH_EMPTY_STRING,     option); goto opt; }
+       "swapped-range"          end { warn.set (Warn::SWAPPED_RANGE,          option); goto opt; }
+       "undefined-control-flow" end { warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; }
+       "useless-escape"         end { warn.set (Warn::USELESS_ESCAPE,         option); goto opt; }
 */
 
 opt_short:
index 3d16da9222f0e0abae9618db38b684e101aa1d10..f96cb61c219d8c0f9ae5c95ae2b952f17b48f515 100644 (file)
@@ -1,5 +1,6 @@
-#include <iostream>
-#include <sstream>
+#include <algorithm>
+#include <stdio.h>
+#include <string>
 
 #include "src/codegen/print.h"
 #include "src/conf/msg.h"
@@ -73,6 +74,15 @@ void Warn::set_all_error ()
        }
 }
 
+void Warn::fail (type_t t, uint32_t line, const char * s)
+{
+       if (mask[t] & WARNING)
+       {
+               // -Werror has no effect
+               warning (names[t], line, false, "%s", s);
+       }
+}
+
 void Warn::condition_order (uint32_t line)
 {
        if (mask[CONDITION_ORDER] & WARNING)
@@ -106,39 +116,63 @@ void Warn::match_empty_string (uint32_t line)
        }
 }
 
-void Warn::naked_default (uint32_t line, const std::vector<std::pair<uint32_t, uint32_t> > & stray_cunits, const std::string & cond)
+void Warn::swapped_range (uint32_t line, uint32_t l, uint32_t u)
 {
-       if (mask[NAKED_DEFAULT] & WARNING)
+       if (mask[SWAPPED_RANGE] & WARNING)
        {
-               const bool e = mask[NAKED_DEFAULT] & ERROR;
+               const bool e = mask[SWAPPED_RANGE] & ERROR;
                error_accuml |= e;
-               std::ostringstream cunits;
-               for (uint32_t i = 0; i < stray_cunits.size (); ++i)
-               {
-                       printSpan (cunits, stray_cunits[i].first, stray_cunits[i].second);
-               }
-               const char * cond_prefix = cond == ""
-                       ? ""
-                       : " in condition ";
-               warning
-                       ( names[NAKED_DEFAULT]
-                       , line
-                       , e
-                       , "naked default case%s%s (stray code units: %s), better add default rule *"
-                       , cond_prefix
-                       , cond.c_str ()
-                       , cunits.str ().c_str ()
-                       );
+               warning (names[SWAPPED_RANGE], line, e, "range lower bound (0x%X) is greater than upper bound (0x%X), swapping", l, u);
        }
 }
 
-void Warn::swapped_range (uint32_t line, uint32_t l, uint32_t u)
+void Warn::undefined_control_flow (uint32_t line, const std::string & cond, std::vector<multipath_t> & paths, bool overflow)
 {
-       if (mask[SWAPPED_RANGE] & WARNING)
+       if (mask[UNDEFINED_CONTROL_FLOW] & WARNING)
        {
-               const bool e = mask[SWAPPED_RANGE] & ERROR;
+               const bool e = mask[UNDEFINED_CONTROL_FLOW] & ERROR;
                error_accuml |= e;
-               warning (names[SWAPPED_RANGE], line, e, "range lower bound (0x%X) is greater than upper bound (0x%X), swapping", l, u);
+
+               // limit the number of patterns reported
+               static const size_t MAX = 8;
+               const size_t all = paths.size ();
+               const size_t some = std::min (MAX, all);
+               const size_t rest = all - some;
+
+               // report shorter patterns first
+               std::vector<multipath_t>::iterator middle = paths.begin ();
+               std::advance (middle, some);
+               std::partial_sort (paths.begin (), middle, paths.end (), multipath_t::compare);
+
+               warning_start (line, e);
+               fprintf (stderr, "control flow ");
+               if (!cond.empty ())
+               {
+                       fprintf (stderr, "in condition '%s' ", cond.c_str ());
+               }
+               fprintf (stderr, "is undefined for strings that match ");
+               if (some == 1)
+               {
+                       paths[0].fprint (stderr);
+               }
+               else
+               {
+                       for (size_t i = 0; i < some; ++i)
+                       {
+                               fprintf (stderr, "\n\t");
+                               paths[i].fprint (stderr);
+                       }
+                       fprintf (stderr, "\n");
+               }
+               if (rest > 0)
+               {
+                       const char * at_least = overflow
+                               ? "at least "
+                               : "";
+                       fprintf (stderr, " ... and %s%lu more", at_least, rest);
+               }
+               fprintf (stderr, ", use default rule '*'");
+               warning_end (names[UNDEFINED_CONTROL_FLOW], e);
        }
 }
 
index 1c52c31400a4d18bc29bf8d533b91862145f5e92..ecfec094a92c717ba1615cec73354e507c3662c1 100644 (file)
@@ -3,17 +3,18 @@
 
 #include <vector>
 
+#include "src/codegen/skeleton/multipath.h"
 #include "src/util/c99_stdint.h"
 
 namespace re2c {
 
 #define RE2C_WARNING_TYPES \
-       W (CONDITION_ORDER,       "condition-order"), \
-       W (EMPTY_CHARACTER_CLASS, "empty-character-class"), \
-       W (MATCH_EMPTY_STRING,    "match-empty-string"), \
-       W (NAKED_DEFAULT,         "naked-default"), \
-       W (SWAPPED_RANGE,         "swapped-range"), \
-       W (USELESS_ESCAPE,        "useless-escape"),
+       W (CONDITION_ORDER,        "condition-order"), \
+       W (EMPTY_CHARACTER_CLASS,  "empty-character-class"), \
+       W (MATCH_EMPTY_STRING,     "match-empty-string"), \
+       W (SWAPPED_RANGE,          "swapped-range"), \
+       W (UNDEFINED_CONTROL_FLOW, "undefined-control-flow"), \
+       W (USELESS_ESCAPE,         "useless-escape"),
 
 class Warn
 {
@@ -47,11 +48,13 @@ public:
        void set (type_t t, option_t o);
        void set_all ();
        void set_all_error ();
+       void fail (type_t t, uint32_t line, const char * s);
+
        void condition_order (uint32_t line);
        void empty_class (uint32_t line);
        void match_empty_string (uint32_t line);
-       void naked_default (uint32_t line, const std::vector<std::pair<uint32_t, uint32_t> > & stray_cunits, const std::string & cond);
        void swapped_range (uint32_t line, uint32_t l, uint32_t u);
+       void undefined_control_flow (uint32_t line, const std::string & cond, std::vector<multipath_t> & paths, bool overflow);
        void useless_escape (uint32_t line, uint32_t col, char c);
 };
 
index a14b2d5868dcb7ba3652e1d7c5d93557f2268c84..b38ff8c2281d46ae7c4255b6d1e7ba13c991761c 100644 (file)
@@ -55,13 +55,17 @@ smart_ptr<DFA> genCode (RegExp *re, Output & output, uint32_t ind, const std::st
        }
 
        smart_ptr<DFA> dfa = make_smart_ptr(new DFA(ins, size, 0, encoding.nCodeUnits(), rep));
+
+       Skeleton skeleton (*dfa);
+       skeleton.warn_undefined_control_flow (output.source.get_block_line (), cond);
+
        if (flag_skeleton)
        {
-               skeleton::Skeleton skeleton (*dfa);
                skeleton.emit_data (output.data);
-               skeleton::emit_prolog (output.source, ind, output.data.file_name.c_str ());
+               emit_prolog (output.source, ind, output.data.file_name.c_str ());
        }
-       dfa->prepare (output.source, output.max_fill, cond);
+
+       dfa->prepare (output.source, output.max_fill);
 
        return dfa;
 }
index 59d96a106300fa8d416430c53e5883733502d20c..90acd5f7606a069bc729e24010e6f588a2cefd7c 100644 (file)
@@ -32,7 +32,7 @@ public:
 
        void findSCCs ();
        void findBaseState ();
-       void prepare (OutputFile & o, uint32_t &, const std::string & cond);
+       void prepare (OutputFile & o, uint32_t &);
        void count_used_labels (std::set<label_t> & used, label_t prolog, label_t start, bool force_start) const;
        void emit (Output &, uint32_t &, const std::string &, bool, bool &);
 
index a88578fa800029ce868dc5717ecdfda31c06ccab..efc01dc088c926d1347be6f71ccc091a938dfff5 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 38: naked default case (stray code units: [?]), better add default rule * [-Wnaked-default]
+re2c: warning: line 38: control flow is undefined for strings that match '\x3F [\x0-\x20\x22-\x2F\x3A-\x40\x5B-\x60\x7B-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "bug1454253b.s.re"
 #include <stdlib.h>
index f862fcf657072ffb2ef0435c28e10d01cba6a722..8c0577ced7194114630479502f7da3652ee555c5 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 14: naked default case (stray code units: [0x00-0x06][0x0E-!][#-&][(-[][0x5D-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow is undefined for strings that match '[\x0-\x6\xE-\x21\x23-\x26\x28-\x5B\x5D-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 digraph re2c {
index d6ba3b46a463690916cccdbbf27f3c20e6cb18e2..86fc9829e86c9b5f6e9306d43ac84e5b76ed2a7a 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 10: naked default case in condition c1 (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 10: naked default case in condition c2 (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 10: control flow in condition 'c1' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 10: control flow in condition 'c2' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index 418671ab925d544fe924ae16e1232a43d5a49ce0..ca8c8e0a0500e9c2ad92945ddd543edcc8fc46ed 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 9: naked default case in condition c2 (stray code units: [0x00-c][e-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow in condition 'c2' is undefined for strings that match '[\x0-\x63\x65-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index d35fe94c00611525dd5b301f2c4264b5d2153d32..298f8d096e19959d97964fa902d2ef2587e29f84 100644 (file)
@@ -1,17 +1,17 @@
 re2c: warning: line 2: empty character class [-Wempty-character-class]
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 6: empty character class [-Wempty-character-class]
-re2c: warning: line 7: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 7: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 10: empty character class [-Wempty-character-class]
-re2c: warning: line 11: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 14: empty character class [-Wempty-character-class]
 re2c: warning: line 14: empty character class [-Wempty-character-class]
 re2c: warning: line 14: empty character class [-Wempty-character-class]
-re2c: warning: line 15: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 15: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 18: empty character class [-Wempty-character-class]
 re2c: warning: line 18: empty character class [-Wempty-character-class]
 re2c: warning: line 18: empty character class [-Wempty-character-class]
-re2c: warning: line 19: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 19: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index 7f095d576d18945626a2140366e2ba1dcdc56f1e..5da7b28cd801a7e1bd8ef114da118907b288cc0a 100644 (file)
@@ -1,5 +1,5 @@
 re2c: warning: line 2: empty character class [-Wempty-character-class]
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index e4fed2deee4cf9abca0ec554870f85f56e3d9278..64e78ff0850d31ebd9bfa23326e4b995bf107d51 100644 (file)
@@ -1,7 +1,7 @@
 re2c: warning: line 2: empty character class [-Wempty-character-class]
 re2c: warning: line 2: empty character class [-Wempty-character-class]
 re2c: warning: line 2: empty character class [-Wempty-character-class]
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index e4fed2deee4cf9abca0ec554870f85f56e3d9278..64e78ff0850d31ebd9bfa23326e4b995bf107d51 100644 (file)
@@ -1,7 +1,7 @@
 re2c: warning: line 2: empty character class [-Wempty-character-class]
 re2c: warning: line 2: empty character class [-Wempty-character-class]
 re2c: warning: line 2: empty character class [-Wempty-character-class]
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index 7f095d576d18945626a2140366e2ba1dcdc56f1e..5da7b28cd801a7e1bd8ef114da118907b288cc0a 100644 (file)
@@ -1,5 +1,5 @@
 re2c: warning: line 2: empty character class [-Wempty-character-class]
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index 7f095d576d18945626a2140366e2ba1dcdc56f1e..5da7b28cd801a7e1bd8ef114da118907b288cc0a 100644 (file)
@@ -1,5 +1,5 @@
 re2c: warning: line 2: empty character class [-Wempty-character-class]
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index b7f046433f8cf6f6ca9190cce8b3cc3a7b0dad95..d9adb194ff93bfa23a32f69c8c2b19967fb060a7 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 4: naked default case (stray code units: [0x00-@][C-`][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 4: control flow is undefined for strings that match '[\x0-\x40\x43-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index 95613eef2d9beedf7e45072d2b2913aeae2992a6..26aa5cdc923bab5b1d894004bd7c3386751bd553 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 4: naked default case (stray code units: [0x00-@][B-`][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 4: control flow is undefined for strings that match '[\x0-\x40\x42-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index 8d27779176a4fa267a56d3e5b8c691dbc426501c..cc31ef38d2b6068dc51c502f330655195fee32df 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 4: naked default case (stray code units: [0x00-A][C-`][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 4: control flow is undefined for strings that match '[\x0-\x41\x43-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index e0d8496d03e880a9029e7f67e6f7dd393b407793..3b5f9097b25be6d1d6ae56e928f8da72b38567fd 100644 (file)
@@ -1,7 +1,37 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00][0x01][0x02-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case (stray code units: [0x00][0x01][0x02-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x00][0x0A][0x80-0xC1][0xC2-0xC3][0xC4-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 15: naked default case (stray code units: [0x01-0x09][0x0B-0xC3][0xC4-0xDF][0xE0][0xE1-0xEF][0xF0][0xF1-0xF3][0xF4][0xF5-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0\x2-\xFF]'
+       '\x1 [\x0-\x1\x3-\xFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFF]'
+ ... and 374 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow is undefined for strings that match 
+       '[\x0\x2-\xFF]'
+       '\x1 [\x0-\x1\x3-\xFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFF]'
+ ... and 374 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match 
+       '[\x0\xA\x80-\xC1\xC4-\xFF]'
+       '[\xC2-\xC3] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 15: control flow is undefined for strings that match 
+       '[\x1-\x9\xB-\xC3\xF5-\xFF]'
+       '\xF0 [\x0-\x8F\xC0-\xFF]'
+       '[\xE1-\xEF] [\x0-\x7F\xC0-\xFF]'
+       '\xF4 [\x0-\x7F\x90-\xFF]'
+       '\xE0 [\x0-\x9F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x0-\x7F\xC0-\xFF]'
+       '[\xC4-\xDF] [\x0-\x7F\xC0-\xFF]'
+       '\xE0 [\xA0-\xBF] [\x0-\x7F\xC0-\xFF]'
+ ... and 7 more, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "code_points.8.re"
 
index 71d0ea0c30328efdd0413ce78913b0db3f72d54b..f2f03a9085fd62420472504b05110481a08ac4f9 100644 (file)
@@ -1,7 +1,25 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00][0x01][0x02-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case (stray code units: [0x00][0x01][0x02-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x00][0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 15: naked default case (stray code units: [0x01-0x09][0x0B-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0\x2-\xFF]'
+       '\x1 [\x0-\x1\x3-\xFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow is undefined for strings that match 
+       '[\x0\x2-\xFF]'
+       '\x1 [\x0-\x1\x3-\xFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match '[\x0\xA]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 15: control flow is undefined for strings that match '[\x1-\x9\xB-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "code_points.re"
 
index 249466ca2cdba2e340bc6db6edcaf8c065400e24..8ff72a56a75687b6e0796562675797a13e1c93bb 100644 (file)
@@ -1,7 +1,25 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00][0x01][0x02-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case (stray code units: [0x00][0x01][0x02-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x00][0x25]), better add default rule * [-Wnaked-default]
-re2c: warning: line 15: naked default case (stray code units: [0x01-0x24][0x26-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0\x2-\xFF]'
+       '\x1 [\x0-\x1\x3-\xFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFF]'
+       '\x1 \x2 \x3 [\x0-\x36\x38-\xFF]'
+       '\x1 \x2 \x3 \x37 [\x0-\x2C\x2E-\xFF]'
+       '\x1 \x2 \x3 \x37 \x2D [\x0-\x2D\x2F-\xFF]'
+       '\x1 \x2 \x3 \x37 \x2D \x2E [\x0-\x2E\x30-\xFF]'
+       '\x1 \x2 \x3 \x37 \x2D \x2E \x2F [\x0-\x15\x17-\xFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow is undefined for strings that match 
+       '[\x0\x2-\xFF]'
+       '\x1 [\x0-\x1\x3-\xFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFF]'
+       '\x1 \x2 \x3 [\x0-\x36\x38-\xFF]'
+       '\x1 \x2 \x3 \x37 [\x0-\x2C\x2E-\xFF]'
+       '\x1 \x2 \x3 \x37 \x2D [\x0-\x2D\x2F-\xFF]'
+       '\x1 \x2 \x3 \x37 \x2D \x2E [\x0-\x2E\x30-\xFF]'
+       '\x1 \x2 \x3 \x37 \x2D \x2E \x2F [\x0-\x15\x17-\xFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match '[\x0\x25]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 15: control flow is undefined for strings that match '[\x1-\x24\x26-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "code_points.e.re"
 
index ca149304fc1ffa8b37a008188d13d4de17e62ee9..570f6281868fd8b0c73a468fc658ae3a45c5de10 100644 (file)
@@ -1,7 +1,25 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00000000][0x00000001][0x00000002-0x0010FFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case (stray code units: [0x00000000][0x00000001][0x00000002-0x0010FFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x00000000][0x0000000A][0x00000100-0x0010FFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 15: naked default case (stray code units: [0x00000001-0x00000009][0x0000000B-0x000000FF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0\x2-\x10FFFF]'
+       '\x1 [\x0-\x1\x3-\x10FFFF]'
+       '\x1 \x2 [\x0-\x2\x4-\x10FFFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\x10FFFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow is undefined for strings that match 
+       '[\x0\x2-\x10FFFF]'
+       '\x1 [\x0-\x1\x3-\x10FFFF]'
+       '\x1 \x2 [\x0-\x2\x4-\x10FFFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\x10FFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\x10FFFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match '[\x0\xA\x100-\x10FFFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 15: control flow is undefined for strings that match '[\x1-\x9\xB-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "code_points.u.re"
 
index c36af7a20517c12d12b5f3df0356d2dc8a626dcc..c721a01132982e33302ca904c2d1f0e728393c58 100644 (file)
@@ -1,7 +1,25 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0000][0x0001][0x0002-0xFFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case (stray code units: [0x0000][0x0001][0x0002-0xFFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x0000][0x000A][0x0100-0xFFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 15: naked default case (stray code units: [0x0001-0x0009][0x000B-0x00FF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0\x2-\xFFFF]'
+       '\x1 [\x0-\x1\x3-\xFFFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFFFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFFFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFFFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow is undefined for strings that match 
+       '[\x0\x2-\xFFFF]'
+       '\x1 [\x0-\x1\x3-\xFFFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFFFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFFFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFFFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match '[\x0\xA\x100-\xFFFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 15: control flow is undefined for strings that match '[\x1-\x9\xB-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "code_points.w.re"
 
index 58fb54d1b22ade4d507083af736893717d2e08f4..2aafa4aa164d461c08342cb9c730083582aae4eb 100644 (file)
@@ -1,7 +1,25 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0000][0x0001][0x0002-0xFFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case (stray code units: [0x0000][0x0001][0x0002-0xFFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x0000][0x000A][0x0100-0xFFFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 15: naked default case (stray code units: [0x0001-0x0009][0x000B-0x00FF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0\x2-\xFFFF]'
+       '\x1 [\x0-\x1\x3-\xFFFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFFFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFFFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFFFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow is undefined for strings that match 
+       '[\x0\x2-\xFFFF]'
+       '\x1 [\x0-\x1\x3-\xFFFF]'
+       '\x1 \x2 [\x0-\x2\x4-\xFFFF]'
+       '\x1 \x2 \x3 [\x0-\x3\x5-\xFFFF]'
+       '\x1 \x2 \x3 \x4 [\x0-\x4\x6-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 [\x0-\x5\x7-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 [\x0-\x6\x8-\xFFFF]'
+       '\x1 \x2 \x3 \x4 \x5 \x6 \x7 [\x0-\x7\x9-\xFFFF]'
+ ... and 246 more, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match '[\x0\xA\x100-\xFFFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 15: control flow is undefined for strings that match '[\x1-\x9\xB-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "code_points.x.re"
 
index 9f1b573d73643dc03e74bc8ed83d4d05eda882ec..44e90a1c1e8501db194c70e3332c982340d062ae 100644 (file)
@@ -1,3 +1,3 @@
-re2c: warning: line 8: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 8: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 8: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 8: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 6, column 1: setup for non existing rule 'c' found
index cfd13f217763bd8386a05fd66f6bc17e963f77e1..90c177b6d42c4eeef7bc8c65a8e3d6bdc421e6e3 100644 (file)
@@ -1,3 +1,3 @@
-re2c: warning: line 9: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 9: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 9: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 7, column 1: setup for all rules with '*' not possible when all rules are setup explicitly
index 935e08d1782520205c9227b55ec0522af94df8f4..556be794c25be5769e21f93f1b0ae9d413e8ebcd 100644 (file)
@@ -1,5 +1,11 @@
-re2c: warning: line 5: naked default case in condition a (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 5: naked default case in condition b (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow in condition 'a' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 5: control flow in condition 'b' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condition_01.c.re"
 
index e296a92aa2a13bf084d52bb43492985cb2532254..14ea2934ec0eb48f71bd093ea5389e47a3e71592 100644 (file)
@@ -1,6 +1,12 @@
 re2c: warning: line 2: column 39: escape has no effect: '\/' [-Wuseless-escape]
-re2c: warning: line 5: naked default case in condition a (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 5: naked default case in condition b (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow in condition 'a' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 5: control flow in condition 'b' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condition_01a.c.re"
 
index 9d7384c4fdf4e107d366a7ec7b42e5360969ca22..e448ef30ec849b5f0860b10383ad8d7f915f4bb1 100644 (file)
@@ -1,5 +1,11 @@
-re2c: warning: line 5: naked default case in condition a (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 5: naked default case in condition b (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow in condition 'a' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 5: control flow in condition 'b' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condition_01b.c.re"
 
index 07cf5e600608eba0709ff48c613d6eaad5daf40a..28feb3d9a4f94af472e8acf93fe6fc0b165003a3 100644 (file)
@@ -1,6 +1,6 @@
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 7: naked default case in condition r1 (stray code units: [0x00-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case in condition r2 (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 7: control flow in condition 'r1' is undefined for strings that match '[\x0-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow in condition 'r2' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condition_02.c.re"
 
index 63a84c2debb5693d5cf5c7334ac8355de9aac6e7..82188eca37b50197f67a224ff934c662cad3487b 100644 (file)
@@ -1,6 +1,6 @@
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 7: naked default case in condition r1 (stray code units: [0x00-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 7: naked default case in condition r2 (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 7: control flow in condition 'r1' is undefined for strings that match '[\x0-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 7: control flow in condition 'r2' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 7: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
 /* Generated by re2c */
 #line 1 "condition_02.cg.re"
index 603afd15cb059336db5e253f92495793fe955d81..9ef2e4eedbaa129dba54c94753f9ec4fd430dec1 100644 (file)
@@ -1,6 +1,6 @@
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 9: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 9: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 9: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 9: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
 /* Generated by re2c */
 #line 1 "condition_03.cg.re"
index 6b70a598e4af70098e451f57f2fc12ed3385761f..6bdbafbfb67778ab52980c5026e666dcf5e1c978 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 8: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 8: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 8: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 8: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 8: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
 /* Generated by re2c */
 #line 1 "condition_04.cg.re"
index 84f4e1c87e9cb41d1b388f4cbdfb752f2034e106..e7745afb42e86021ab2403996d39f09924f27cee 100644 (file)
@@ -1,6 +1,6 @@
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 9: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 9: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 9: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condition_11.cg.re"
 
index f456b2265a828b0658c58bbd0026fda296077bff..09f198a2cbecd0f0fc4a4d501d825ff37f3d82df 100644 (file)
@@ -1,6 +1,6 @@
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 9: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 9: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 9: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condition_13.cg.re"
 
index bdd426f49040e0baf82fdac367f21cf5ba03259c..6e42f587c097ee206f5df69662d5672855ce0747 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype.c.re"
 int main ()
index 42cfb76cef65c393744a16674e9f9503f41b008a..f03cc4d3322c95dc9af18c1272510afcf175b2c3 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 11: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
 /* Generated by re2c */
 #line 1 "condtype.cg.re"
index 8827a85bf31fb1b10ff8ffbde6687369c5b187b8..8b714e15a5bec98a61a588786f3a78c918234fe2 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype.cgtcondtype.cg.h.re"
 int main ()
index 838aaf4bb76ebfc7cacfba01cd49277d44ab043f..919443cbdc9380848df14b774f7fafbdcd419910 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 11: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
 /* Generated by re2c */
 #line 1 "condtype.cs.re"
index 4d91ae24b2bf1a4007b15593847e8d9d85e18a4b..c84d1087181c743e564592cd14bac08e78f209b8 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype.cstcondtype.cs.h.re"
 int main ()
index b787389fda7114f6ce52c3c766b8d501d144bf5c..e6fbd57a97d3cb9d254fbc5b8bf58908bddc4038 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype.ctcondtype.c.h.re"
 int main ()
index 792e396b7c90161a4923f2c1addb93c68bc7a5b6..6d98baa2e18051b3ba5646b9c298707b1c9866c2 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 13: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 13: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 13: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 13: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_decl.c.re"
 #line 4 "<stdout>"
index 50b45b8feabf281ef608543ae14bfef7c9886901..7bc8de3e9a30adb5b027c2e0c65c9ad5d1a738dc 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 13: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 13: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 13: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 13: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_decl.cg.re"
 #line 4 "<stdout>"
index 29bac287e60c866e3c0eb98b52dd5316e672e725..a5159a93f4440e10cc5e216b67544cbade13911b 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 13: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 13: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 13: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 13: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_decl.cs.re"
 #line 4 "<stdout>"
index 8182f9e92edc7e9e792c0a1cdf161ba5b184db11..377fdbc82adae35777b8ab715eabf796d9405111 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 14: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 14: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 14: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_forwdecl.cg.re"
 enum cond_t : int;
index 37a727715ee8c1b4a3771feef47722cdf767e737..1e45991245413809965cb611032cfc0cf90643da 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 14: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 14: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 14: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_forwdecl.cs.re"
 enum cond_t : int;
index 4ac7755e78d618ce81c9b89b919ff8c08fb7d502..080954ec784cb5be6fae14b50ddbfe6a693d01d7 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_single.c.re"
 
index 75fbdfa591c4650785a905e100797394f5e4bb0e..f8167d9a2acb1bb50701d53605ceea53a0ead041 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 3: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
 /* Generated by re2c */
 #line 1 "condtype_single.cg.re"
index e8499e22be054792a0723d425de666e0570cb33d..e1d191b807220a4a3188c761b6150863c0951626 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_single.cs.re"
 
index 66aee2f9168d072ddfdf8154347b4afd85b90928..b8ba95819f0d17fd697c4038062bb76e2cc6c168 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_yysetcondition.cg.re"
 int main ()
index c41af5494513c3f461fefe9f189ccb86970678ca..867334b5304b607b5d4610e7f8cbd4331b82ba14 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow in condition 'b' is undefined for strings that match '[\x0-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "condtype_yysetcondition.cs.re"
 int main ()
index 559880aa970032a718b55723e73f1b13589954e9..7c86b104853182746bb5d9cd0c5ad768e0f6a927 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 16: naked default case (stray code units: [0x00-0x80][0x83-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 16: control flow is undefined for strings that match '[\x0-\x80\x83-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 unsigned char scan(const unsigned char *s)
 {
diff --git a/re2c/test/control_flow_fail.c b/re2c/test/control_flow_fail.c
new file mode 100644 (file)
index 0000000..a974a32
--- /dev/null
@@ -0,0 +1,39 @@
+re2c: warning: line 6: control flow is undefined for strings that match '[\x0-\xFF] \x61 [\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+/* Generated by re2c */
+#line 1 "control_flow_fail.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy5;
+       default:        goto yy3;
+       }
+yy3:
+       ++YYCURSOR;
+       switch ((yych = *YYCURSOR)) {
+       case 'a':       goto yy7;
+       default:        goto yy4;
+       }
+yy4:
+#line 4 "control_flow_fail.re"
+       { action2 }
+#line 24 "<stdout>"
+yy5:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy7;
+       default:        goto yy6;
+       }
+yy6:
+yy7:
+       ++YYCURSOR;
+#line 3 "control_flow_fail.re"
+       { action1 }
+#line 36 "<stdout>"
+}
+#line 6 "control_flow_fail.re"
+
diff --git a/re2c/test/control_flow_fail.re b/re2c/test/control_flow_fail.re
new file mode 100644 (file)
index 0000000..fcb0a35
--- /dev/null
@@ -0,0 +1,6 @@
+/*!re2c
+
+       [^] [^] "a" { action1 }
+       [^] [^a]    { action2 }
+
+*/
diff --git a/re2c/test/control_flow_ok.c b/re2c/test/control_flow_ok.c
new file mode 100644 (file)
index 0000000..81a6b12
--- /dev/null
@@ -0,0 +1,26 @@
+/* Generated by re2c */
+#line 1 "control_flow_ok.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       ++YYCURSOR;
+       switch ((yych = *YYCURSOR)) {
+       case 'a':       goto yy5;
+       default:        goto yy4;
+       }
+yy4:
+#line 4 "control_flow_ok.re"
+       { action2 }
+#line 19 "<stdout>"
+yy5:
+       ++YYCURSOR;
+#line 3 "control_flow_ok.re"
+       { action1 }
+#line 24 "<stdout>"
+}
+#line 6 "control_flow_ok.re"
+
diff --git a/re2c/test/control_flow_ok.re b/re2c/test/control_flow_ok.re
new file mode 100644 (file)
index 0000000..74982f7
--- /dev/null
@@ -0,0 +1,6 @@
+/*!re2c
+
+       [^] [^] "a" { action1 }
+       [^] [^]     { action2 }
+
+*/
diff --git a/re2c/test/control_flow_yymarker_fail.c b/re2c/test/control_flow_yymarker_fail.c
new file mode 100644 (file)
index 0000000..fce4e4c
--- /dev/null
@@ -0,0 +1,40 @@
+re2c: warning: line 6: control flow is undefined for strings that match '[\x0-\xFF] \x61 [\x0-\xFF] [\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+/* Generated by re2c */
+#line 1 "control_flow_yymarker_fail.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy5;
+       default:        goto yy3;
+       }
+yy3:
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy6;
+yy4:
+#line 4 "control_flow_yymarker_fail.re"
+       { action2 }
+#line 21 "<stdout>"
+yy5:
+       yych = *++YYCURSOR;
+yy6:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy8;
+       default:        goto yy7;
+       }
+yy7:
+       YYCURSOR = YYMARKER;
+       goto yy4;
+yy8:
+       ++YYCURSOR;
+#line 3 "control_flow_yymarker_fail.re"
+       { action1 }
+#line 37 "<stdout>"
+}
+#line 6 "control_flow_yymarker_fail.re"
+
diff --git a/re2c/test/control_flow_yymarker_fail.re b/re2c/test/control_flow_yymarker_fail.re
new file mode 100644 (file)
index 0000000..055b9d7
--- /dev/null
@@ -0,0 +1,6 @@
+/*!re2c
+
+       [^] [^] [^] "a" { action1 }
+       [^] [^a]        { action2 }
+
+*/
diff --git a/re2c/test/control_flow_yymarker_ok.c b/re2c/test/control_flow_yymarker_ok.c
new file mode 100644 (file)
index 0000000..a5b0697
--- /dev/null
@@ -0,0 +1,32 @@
+/* Generated by re2c */
+#line 1 "control_flow_yymarker_ok.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy5;
+yy4:
+#line 4 "control_flow_yymarker_ok.re"
+       { action2 }
+#line 16 "<stdout>"
+yy5:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy7;
+       default:        goto yy6;
+       }
+yy6:
+       YYCURSOR = YYMARKER;
+       goto yy4;
+yy7:
+       ++YYCURSOR;
+#line 3 "control_flow_yymarker_ok.re"
+       { action1 }
+#line 30 "<stdout>"
+}
+#line 6 "control_flow_yymarker_ok.re"
+
diff --git a/re2c/test/control_flow_yymarker_ok.re b/re2c/test/control_flow_yymarker_ok.re
new file mode 100644 (file)
index 0000000..41aa98f
--- /dev/null
@@ -0,0 +1,6 @@
+/*!re2c
+
+       [^] [^] [^] "a" { action1 }
+       [^] [^]         { action2 }
+
+*/
diff --git a/re2c/test/control_flow_yymarker_yyaccept_fail.c b/re2c/test/control_flow_yymarker_yyaccept_fail.c
new file mode 100644 (file)
index 0000000..fa6db61
--- /dev/null
@@ -0,0 +1,62 @@
+re2c: warning: line 7: control flow is undefined for strings that match '[\x0-\xFF] \x61 [\x0-\xFF] [\x0-\x60\x62-\xFF] [\x0-\xFF] [\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+/* Generated by re2c */
+#line 1 "control_flow_yymarker_yyaccept_fail.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       unsigned int yyaccept = 0;
+       if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
+       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy5;
+       default:        goto yy3;
+       }
+yy3:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy6;
+yy4:
+#line 5 "control_flow_yymarker_yyaccept_fail.re"
+       { action3 }
+#line 23 "<stdout>"
+yy5:
+       yych = *++YYCURSOR;
+yy6:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy7;
+       default:        goto yy9;
+       }
+yy7:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy10;
+yy8:
+#line 4 "control_flow_yymarker_yyaccept_fail.re"
+       { action2 }
+#line 39 "<stdout>"
+yy9:
+       yych = *++YYCURSOR;
+yy10:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy12;
+       default:        goto yy11;
+       }
+yy11:
+       YYCURSOR = YYMARKER;
+       if (yyaccept == 0) {
+               goto yy4;
+       } else {
+               goto yy8;
+       }
+yy12:
+       ++YYCURSOR;
+#line 3 "control_flow_yymarker_yyaccept_fail.re"
+       { action1 }
+#line 59 "<stdout>"
+}
+#line 7 "control_flow_yymarker_yyaccept_fail.re"
+
diff --git a/re2c/test/control_flow_yymarker_yyaccept_fail.re b/re2c/test/control_flow_yymarker_yyaccept_fail.re
new file mode 100644 (file)
index 0000000..e6dbf6a
--- /dev/null
@@ -0,0 +1,7 @@
+/*!re2c
+
+       [^] [^] [^] [^] [^] "a" { action1 }
+       [^] [^] [^] "a"         { action2 }
+       [^] [^a]                { action3 }
+
+*/
diff --git a/re2c/test/control_flow_yymarker_yyaccept_ok.c b/re2c/test/control_flow_yymarker_yyaccept_ok.c
new file mode 100644 (file)
index 0000000..174c663
--- /dev/null
@@ -0,0 +1,54 @@
+/* Generated by re2c */
+#line 1 "control_flow_yymarker_yyaccept_ok.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       unsigned int yyaccept = 0;
+       if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
+       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy5;
+yy4:
+#line 5 "control_flow_yymarker_yyaccept_ok.re"
+       { action3 }
+#line 18 "<stdout>"
+yy5:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy6;
+       default:        goto yy8;
+       }
+yy6:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy9;
+yy7:
+#line 4 "control_flow_yymarker_yyaccept_ok.re"
+       { action2 }
+#line 32 "<stdout>"
+yy8:
+       yych = *++YYCURSOR;
+yy9:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy11;
+       default:        goto yy10;
+       }
+yy10:
+       YYCURSOR = YYMARKER;
+       if (yyaccept == 0) {
+               goto yy4;
+       } else {
+               goto yy7;
+       }
+yy11:
+       ++YYCURSOR;
+#line 3 "control_flow_yymarker_yyaccept_ok.re"
+       { action1 }
+#line 52 "<stdout>"
+}
+#line 7 "control_flow_yymarker_yyaccept_ok.re"
+
diff --git a/re2c/test/control_flow_yymarker_yyaccept_ok.re b/re2c/test/control_flow_yymarker_yyaccept_ok.re
new file mode 100644 (file)
index 0000000..d067e26
--- /dev/null
@@ -0,0 +1,7 @@
+/*!re2c
+
+       [^] [^] [^] [^] [^] "a" { action1 }
+       [^] [^] [^] "a"         { action2 }
+       [^] [^]                 { action3 }
+
+*/
index e3452fecde5bda0749b2044d06e27217b60048a3..37b94fb177c00c0b1a7df44024388d6e29b3574f 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 5: naked default case (stray code units: [0x00-[][0x5D-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow is undefined for strings that match '[\x0-\x5B\x5D-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 digraph re2c {
index d7e41b7e50517c4368e08a6a943e202e5fbe69e3..c5a4dd2b99f529bb820db2a1a91b8823c9c7e86c 100644 (file)
@@ -1,5 +1,15 @@
-re2c: warning: line 10: naked default case in condition state1 (stray code units: [0x00-`][a][b-e][f][g-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 10: naked default case in condition state2 (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 10: control flow in condition 'state1' is undefined for strings that match 
+       '[\x0-\x60\x62-\x65\x67-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+       '\x66 [\x0-\x6E\x70-\xFF]'
+       '\x61 \x62 [\x0-\x62\x64-\xFF]'
+       '\x66 \x6F [\x0-\x6E\x70-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 10: control flow in condition 'state2' is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x61\x63-\xFF]'
+       '\x61 \x62 [\x0-\x62\x64-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 digraph re2c {
index a59ac5aa2a169d44fe76133dc8ea74fb1532b3e6..4c85986ea250b40add342cc65fc5a614828a584d 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow in condition 'a' is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "empty_code.c.re"
 
index 6b182eda4cb8b9c90c17b282484b59b84a2b6e53..aee245d9f61df041d16ea9910cf1e53770ed0f30 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 9: naked default case (stray code units: [0x00-`][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow is undefined for strings that match '[\x0-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 
 {
index c8f2c9e67ed8475f02f37546c542b66b3814995c..1a9c8a7e617e59c79417173f52b25bf74e7a664e 100644 (file)
@@ -1,4 +1,10 @@
-re2c: warning: line 5: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x62 [\x0-\x61\x63-\xFF]'
+       '\x61 \x61 \x62 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "input12.boinput12.c.re"
 
index 411db52d5e306df4257a52997f809f81d78a7e06..b2ac4bc2805142ada33b11512c1e4672ed69af26 100644 (file)
@@ -1,4 +1,10 @@
-re2c: warning: line 5: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x62 [\x0-\x61\x63-\xFF]'
+       '\x61 \x61 \x62 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "input12.oinput12.c.re"
 
index f7c107a537e9b8964b9e829e542e996ab53cddc7..4c1dffc6b1190364de536f0c9d8b5cf962d4d3e1 100644 (file)
@@ -1,4 +1,10 @@
-re2c: warning: line 5: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x62 [\x0-\x61\x63-\xFF]'
+       '\x61 \x61 \x62 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "input2.re"
 
index 155aa5cf0295a061721a0e5c4f970ea5788a18af..7e7cbc71dfa9cdaf5278949c4325b4a0fbfb2387 100644 (file)
@@ -1,4 +1,10 @@
-re2c: warning: line 5: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 5: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x61 [\x0-\x60\x63-\xFF]'
+       '\x61 \x62 [\x0-\x61\x63-\xFF]'
+       '\x61 \x61 \x62 [\x0-\x61\x63-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "input3.re"
 
index b074ae498500cb165c63deb7b764e4b11b4daee3..f3c540d47ce36279ad660035d76d44ad93949757 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 1: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 1: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "line-01.re"
 const char* scan(unsigned char* in)
index 4e2e98d0b29c45f0728656aff3f2da441f93fe78..dbbe9a3ed49e451bd0b7df54d68efcc529662d65 100644 (file)
@@ -1,4 +1,13 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-/][0][1-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\x2F\x31-\xFF]'
+       '\x30 [\x0-\x2F\x31-\xFF]'
+       '\x30 \x30 [\x0-\x2F\x31-\xFF]'
+       '\x30 \x30 \x30 [\x0-\x2F\x31-\xFF]'
+       '\x30 \x30 \x30 \x30 [\x0-\x2F\x31-\xFF]'
+       '\x30 \x30 \x30 \x30 \x30 [\x0-\x5E\x60-\xFF]'
+       '\x30 \x30 \x30 \x30 \x30 \x5F [\x0-\x60\x62-\xFF]'
+       '\x30 \x30 \x30 \x30 \x30 \x5F \x61 [\x0-\x60\x62-\xFF]'
+ ... and 8209 more, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "overflow-1.re"
 
index 8b927f3c825ad65b57bdc33d844cc2d314f3465b..7cdcdea0dd4ed9b8506d007c94910f0566a121e4 100644 (file)
@@ -1,4 +1,8 @@
-re2c: warning: line 6: naked default case (stray code units: [0x00-a][b][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 6: control flow is undefined for strings that match 
+       '[\x0-\x61\x63-\xFF]'
+       '\x62 [\x0-\x6B\x6D-\xFF]'
+       '\x62 \x6C [\x0-\x60\x62-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "overflow-4.re"
 
index 07d83355503c01e4bc29d2e6bae70485416fc1c7..88b27b4a61a93a251e39612537b42f9ce4c1097d 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 66: naked default case (stray code units: [0x00]), better add default rule * [-Wnaked-default]
+re2c: warning: line 66: control flow is undefined for strings that match '\x0', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 /*
   +----------------------------------------------------------------------+
index f29e8dc5ad485c0048065fc76d48517e7eae3ea1..0676b666f7d9cbe91ecf6b9969bdbb062526bb06 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 108: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 108: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 /*
   +----------------------------------------------------------------------+
index 531328167ecedd312c0827937df9e03380967715..4b6a78e51197ef433b17510c959cff6ed8cfd452 100644 (file)
@@ -1,4 +1,13 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0A][0x80-0xC1][0xC2-0xDF][0xE0][0xE1-0xEF][0xF0][0xF1-0xF3][0xF4][0xF5-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\xA\x80-\xC1\xF5-\xFF]'
+       '\xF0 [\x0-\x8F\xC0-\xFF]'
+       '[\xE1-\xEF] [\x0-\x7F\xC0-\xFF]'
+       '\xF4 [\x0-\x7F\x90-\xFF]'
+       '\xE0 [\x0-\x9F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x0-\x7F\xC0-\xFF]'
+       '[\xC2-\xDF] [\x0-\x7F\xC0-\xFF]'
+       '\xE0 [\xA0-\xBF] [\x0-\x7F\xC0-\xFF]'
+ ... and 7 more, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_dot.8.re"
 
index 1d01c4b60433013523a914a0e5d7f998f3a903a7..b35560d43ccce81a115d61405718abe4855bae58 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_dot.re"
 
index a35782a7fd22242a4974da104c880f035bacf852..10082792934a04fd3ea4ecd85122a370b9e9edd1 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x25]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\x25', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_dot.e.re"
 
index c5f1ea1259399c028965c7f8019cdecca48ed9c7..ca3f72689fa1e63fa818e1931ce9f5449976195a 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0000000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_dot.u.re"
 
index 10a178766ca8c0b735953d8a6924faa5c362069c..2f37734a9801ba3336538d5ccaeddf338ec6f763 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_dot.w.re"
 
index 5b60f0f3fb511d8e2294a98ce9035d06eff1e98c..a3579cee3273d00002642c2e66a6098ccc4aba5c 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_dot.x.re"
 
index 465f855aaf5f77452052ccefe5991f39410a79ab..cc3eb6db6ca849de83df021bb7d6dfb988b84291 100644 (file)
@@ -1,4 +1,13 @@
-re2c: warning: line 3: naked default case (stray code units: [0x80-0xC1][0xC2-0xDF][0xE0][0xE1-0xEF][0xF0][0xF1-0xF3][0xF4][0xF5-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x80-\xC1\xF5-\xFF]'
+       '\xF0 [\x0-\x8F\xC0-\xFF]'
+       '[\xE1-\xEF] [\x0-\x7F\xC0-\xFF]'
+       '\xF4 [\x0-\x7F\x90-\xFF]'
+       '\xE0 [\x0-\x9F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x0-\x7F\xC0-\xFF]'
+       '[\xC2-\xDF] [\x0-\x7F\xC0-\xFF]'
+       '\xE0 [\xA0-\xBF] [\x0-\x7F\xC0-\xFF]'
+ ... and 7 more, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_full.8.re"
 
index 4c3afc3ae9ecb4566e4999b7c025880110129c5d..c9456145350dec6c1f6bd145e0eabb90c0444b8b 100644 (file)
@@ -1,4 +1,13 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0A][0x80-0xC1][0xC2-0xDF][0xE0][0xE1-0xEF][0xF0][0xF1-0xF3][0xF4][0xF5-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\xA\x80-\xC1\xF5-\xFF]'
+       '\xF0 [\x0-\x8F\xC0-\xFF]'
+       '[\xE1-\xEF] [\x0-\x7F\xC0-\xFF]'
+       '\xF4 [\x0-\x7F\x90-\xFF]'
+       '\xE0 [\x0-\x9F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x0-\x7F\xC0-\xFF]'
+       '[\xC2-\xDF] [\x0-\x7F\xC0-\xFF]'
+       '\xE0 [\xA0-\xBF] [\x0-\x7F\xC0-\xFF]'
+ ... and 7 more, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_neg_lf.8.re"
 
index 048876c49516eb05c990be7897bb845ccae18551..d2cc4837df2897870f7353f9c3b572a048ef9f72 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_neg_lf.re"
 
index a576051757086dd1a02295f887539800460edf60..a804fb89afa838b8344271462c9a0c961274ccff 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x25]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\x25', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_neg_lf.e.re"
 
index 8f25a1c517eb2e97b5fcfbf60b0cd52d59be9b57..d3fcc0460c3f6af0e23cdb2f5c7c1b26fddace12 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x0000000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_neg_lf.u.re"
 
index dbc2facb5c26f7d464e789355ccaf926dbf63ff0..a6db529273f7f9527d7e60d22ad576dd27e72627 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_neg_lf.w.re"
 
index c824e7bf60f161b2c2e3fcaeaf6d5cd58b11496d..1f8aa8bebd99911cc1e91b4631fdcfa099ab78ad 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "range_neg_lf.x.re"
 
index a24c92a430a5e9ac64dbe35cb41fbfd114ee1fda..88c9b718c960bb2c3fdb32d9a29e9d98fbdc69ac 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 13: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 13: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 13: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 13: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 // multiple scanners
 
index a37dfd088ce1bd2cc914e66c19e15f6a41768e24..fd22eaa5b67885c2756d7f24b30eb53f56202b58 100644 (file)
@@ -1,5 +1,5 @@
-re2c: warning: line 13: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 13: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 13: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 13: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 // multiple scanners
 
index fd30485520b38046a199d13ef89412321bf19f6e..d6d021db9865e8f7eba6d7a6e5de1bd9e2802013 100644 (file)
@@ -1,9 +1,9 @@
-re2c: warning: line 14: naked default case in condition r1 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 14: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 18: naked default case in condition r1 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 18: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 28: naked default case in condition r1 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 28: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow in condition 'r1' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 14: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 18: control flow in condition 'r1' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 18: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 28: control flow in condition 'r1' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 28: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 // multiple scanners
 
index 7ee373abcad1342bd6355b10ea3f54bb9c72a643..c4e18734ae0688576030cf21b74ec7cbf042632d 100644 (file)
@@ -1,3 +1,3 @@
-re2c: warning: line 14: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 14: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow in condition 'r1' is undefined for strings that match '[\x0-\x30\x33-\x60\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 14: control flow in condition 'r2' is undefined for strings that match '[\x0-\x30\x33-\x61\x63-\xFF]', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 20, column 1: cannot have a second 'rules:re2c' block
index 5566196c3de5da60af565d3a6f040cd5d9d5f762..3d4b6b1874329034294a67f7d47384dc949c73d5 100644 (file)
@@ -1,7 +1,7 @@
-re2c: warning: line 14: naked default case (stray code units: [0x00-`][e-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 24: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 39: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 54: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow is undefined for strings that match '[\x0-\x60\x65-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 24: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 39: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 54: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 // multiple scanners, additional rules, no char width change
 
index 89cb3bba186c003b6510fe7ca10b8d18f0bcb9fa..384698c025abd68eaf1255f310aed23fc3b22bac 100644 (file)
@@ -1,7 +1,7 @@
-re2c: warning: line 14: naked default case (stray code units: [0x00-`][e-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 27: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 45: naked default case (stray code units: [0x000A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 63: naked default case (stray code units: [0x0000000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow is undefined for strings that match '[\x0-\x60\x65-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 27: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 45: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 63: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 // multiple scanners, additional rules, char width change
 
index ad74b451e15f2c821942dc2573d35e9b5724ecb5..63daf4a70898fd04af49de6f43e0fbd9e2779b91 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 14: naked default case (stray code units: [0x00-`][e-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 27: naked default case (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 45: naked default case (stray code units: [0x000A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: control flow is undefined for strings that match '[\x0-\x60\x65-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 27: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 45: control flow is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 52, column 17: Cannot set UTF32 encoding: please reset USC2 encoding first
index 4b7022978b7389ffb923a9ed73c374d3222df911..057ae553d04172f424d4921671723c437112a064 100644 (file)
@@ -1,16 +1,39 @@
 re2c: warning: line 2: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 7: naked default case (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 7: control flow is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 11: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 [\x0-\x60\x62-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 14: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 19: naked default case (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 23: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 19: control flow is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 23: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 [\x0-\x60\x62-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 re2c: warning: line 26: rule matches empty string [-Wmatch-empty-string]
 re2c: warning: line 30: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 35: naked default case (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 39: naked default case (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 43: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 47: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 51: naked default case (stray code units: [0x00-`][a][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 35: control flow is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 39: control flow is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 43: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x62-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 47: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 \x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 \x61 \x61 [\x0-\x60\x62-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 51: control flow is undefined for strings that match 
+       '[\x0-\x60\x62-\xFF]'
+       '\x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 \x61 [\x0-\x60\x62-\xFF]'
+       '\x61 \x61 \x61 \x61 [\x0-\x60\x62-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "repeater2.re"
 
index 751d2fb093b71174ed4506c2c602596f66aa8ec8..acf7550efbb8b3646f14c83f6d4aacaea10847b7 100644 (file)
@@ -1,3 +1,3 @@
-re2c: warning: line 10: naked default case in condition r1 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 10: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 10: control flow in condition 'r1' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 10: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 13, column 9: code to default rule 'r1' is already defined
index fde830437486b4d0fd0edcd14a5eb21ef9aa8f1c..82f773046c5652dac2731e4fa444929f25794007 100644 (file)
@@ -1,2 +1,2 @@
-re2c: warning: line 17: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 17: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 11, column 9: code to default rule 'r1' is already defined
index 41c8b1e7073961e0303f2039545bb28b7749a744..47807d229a73dd38f12995bd9b8b619f5f88b162 100644 (file)
@@ -1,3 +1,3 @@
-re2c: warning: line 10: naked default case in condition r1 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 10: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 10: control flow in condition 'r1' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 10: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 13, column 9: code to setup rule 'r1' is already defined
index ee31e769e0213bcd34c89101ae7bb3a03e5e9cac..f39bb25e6033d3df614f15dbab2e2763ab9018a2 100644 (file)
@@ -1,3 +1,3 @@
-re2c: warning: line 17: naked default case in condition r1 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
-re2c: warning: line 17: naked default case in condition r2 (stray code units: [0x0A]), better add default rule * [-Wnaked-default]
+re2c: warning: line 17: control flow in condition 'r1' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
+re2c: warning: line 17: control flow in condition 'r2' is undefined for strings that match '\xA', use default rule '*' [-Wundefined-control-flow]
 re2c: error: line 11, column 9: code to setup rule 'r1' is already defined
index 215bf6fd1bc091aea6cbdc45ca2b8c6d7b4562f1..1a66bfd6a6f421eeeef3d836aa2d1e66b6d0424d 100644 (file)
@@ -1,5 +1,8 @@
 re2c: warning: line 288: empty character class [-Wempty-character-class]
-re2c: warning: line 290: naked default case (stray code units: [0x00-0x08][0x0A-0x0C][0x0E-0x1F][!-.][/][0-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 290: control flow is undefined for strings that match 
+       '[\x0-\x8\xA-\xC\xE-\x1F\x21-\x2E\x30-\xFF]'
+       '\x2F [\x0-\x29\x2B-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "rexx.--empty-class(match-none).re"
 #include "scanio.h"
index 424633e31ef5ed9267e6d62d4d7cee02185212ef..5f5cc02da014d6c212b162ee25d91e4551535642 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00000000-0x0000FFFF][0x00010001-0x0010FFFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '[\x0-\xFFFF\x10001-\x10FFFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf32_0x10000.u.re"
 
index 98072d4e34df70ad189e79187ab16b722115e15e..2e34bb645c34bb923ab86c685bc0dd41e87ba644 100644 (file)
@@ -1,4 +1,13 @@
-re2c: warning: line 9: naked default case (stray code units: [0x80-0xC1][0xC2-0xDF][0xE0][0xE1-0xEF][0xF0][0xF1-0xF3][0xF4][0xF5-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: control flow is undefined for strings that match 
+       '[\x80-\xC1\xF5-\xFF]'
+       '\xF0 [\x0-\x8F\xC0-\xFF]'
+       '[\xE1-\xEF] [\x0-\x7F\xC0-\xFF]'
+       '\xF4 [\x0-\x7F\x90-\xFF]'
+       '\xE0 [\x0-\x9F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x0-\x7F\xC0-\xFF]'
+       '[\xC2-\xDF] [\x0-\x7F\xC0-\xFF]'
+       '\xE0 [\xA0-\xBF] [\x0-\x7F\xC0-\xFF]'
+ ... and 7 more, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-full_range-2.8.re"
 
index 7248bacb38146ff46f60d3012b5c51fa433042c5..5057b53b30b6a68491c400d2b138f5109d648662 100644 (file)
@@ -1,4 +1,4 @@
-re2c: warning: line 3: naked default case (stray code units: [0x80-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match '[\x80-\xFF]', use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x00_0x7f.8.re"
 
index eeff2915527f75fd359ceeab163d0ea59ff2cb41..ad0f70d84c1f77a989a0d71f592bf4bec47cedb9 100644 (file)
@@ -1,4 +1,9 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xF3][0xF4][0xF5-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xF3\xF5-\xFF]'
+       '\xF4 [\x0-\x7F\x90-\xFF]'
+       '\xF4 [\x80-\x8F] [\x0-\x7F\xC0-\xFF]'
+       '\xF4 [\x80-\x8F] [\x80-\xBF] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x100000_0x10ffff.8.re"
 
index 628cc07b5f80ec274929bf8bf0690364df405518..65cf8d873c876707a6357997719768643c42be4c 100644 (file)
@@ -1,4 +1,9 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xEF][0xF0][0xF1-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xEF\xF1-\xFF]'
+       '\xF0 [\x0-\x8F\xC0-\xFF]'
+       '\xF0 [\x90-\xBF] [\x0-\x7F\xC0-\xFF]'
+       '\xF0 [\x90-\xBF] [\x80-\xBF] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x10000_0x3ffff.8.re"
 
index abe9e8ac60e7aadafb7ddcafe84801615d853803..bea482d49b0129db6ce811709ba3503c48944b5e 100644 (file)
@@ -1,4 +1,8 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xE0][0xE1-0xEF][0xF0-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xE0\xF0-\xFF]'
+       '[\xE1-\xEF] [\x0-\x7F\xC0-\xFF]'
+       '[\xE1-\xEF] [\x80-\xBF] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x1000_0xffff.8.re"
 
index 2358224565710b85a6ef34469ea4c00c54543149..a134353b0fa0f9d2678d3ac04c9f912d7c1dab10 100644 (file)
@@ -1,4 +1,9 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xF0][0xF1-0xF3][0xF4-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xF0\xF4-\xFF]'
+       '[\xF1-\xF3] [\x0-\x7F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x80-\xBF] [\x0-\x7F\xC0-\xFF]'
+       '[\xF1-\xF3] [\x80-\xBF] [\x80-\xBF] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x40000_0xfffff.8.re"
 
index 9a4be791db825ba73fa4ddc3f28814c4d6e1ec4d..94172e3e564818dbf960e9309fd6127a952b602b 100644 (file)
@@ -1,4 +1,8 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xDF][0xE0][0xE1-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xDF\xE1-\xFF]'
+       '\xE0 [\x0-\x9F\xC0-\xFF]'
+       '\xE0 [\xA0-\xBF] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x800_0xfff.8.re"
 
index d8d4f7e8392db84e89310fe63404c2c55a8d8079..4ec8f43b327d1098d12ee722388c7c7964d45dd5 100644 (file)
@@ -1,4 +1,7 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xC1][0xC2-0xDF][0xE0-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xC1\xE0-\xFF]'
+       '[\xC2-\xDF] [\x0-\x7F\xC0-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_0x80_0x7ff.8.re"
 
index 451d008af61830b145eae97f1b1ecbde4041374c..18ba9a9641e97e2c8ccf027b404712ab7c1b18b8 100644 (file)
@@ -1,4 +1,7 @@
-re2c: warning: line 3: naked default case (stray code units: [0x00-0xCF][0xD0][0xD1-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 3: control flow is undefined for strings that match 
+       '[\x0-\xCF\xD1-\xFF]'
+       '\xD0 [\x0-\xAF\xB1-\xFF]'
+, use default rule '*' [-Wundefined-control-flow]
 /* Generated by re2c */
 #line 1 "utf8-range_single_symbol.8.re"