From b47045247a66157d97bd43ea9936371461fc818c Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Thu, 27 Aug 2015 12:42:24 +0100 Subject: [PATCH] Added warning '-Wcondition-order'. See parent commit 8c1fe4f0113685b599bf906360814e4715e05447 "Simplified tracking of condition order." for details. --- re2c/bootstrap/src/conf/parse_opts.cc | 1632 +++++++++-------- re2c/src/codegen/emit_action.cc | 1 + re2c/src/codegen/emit_dfa.cc | 71 +- re2c/src/codegen/output.cc | 2 + re2c/src/codegen/output.h | 1 + re2c/src/conf/parse_opts.re | 1 + re2c/src/conf/warn.cc | 13 + re2c/src/conf/warn.h | 2 + re2c/test/condition_02.cg.c | 1 + re2c/test/condition_03.cg.c | 1 + re2c/test/condition_04.cg.c | 1 + re2c/test/condition_05.cg.c | 1 + re2c/test/condition_05.cs.c | 1 + re2c/test/condition_11.cg.c | 1 + re2c/test/condition_13.cg.c | 1 + re2c/test/condtype.c.c | 48 + re2c/test/condtype.c.re | 13 + re2c/test/condtype.cg.c | 42 + re2c/test/condtype.cg.re | 13 + re2c/test/condtype.cgtcondtype.cg.h.c | 41 + re2c/test/condtype.cgtcondtype.cg.h.h | 7 + re2c/test/condtype.cgtcondtype.cg.h.re | 13 + re2c/test/condtype.cs.c | 42 + re2c/test/condtype.cs.re | 13 + re2c/test/condtype.cstcondtype.cs.h.c | 41 + re2c/test/condtype.cstcondtype.cs.h.h | 7 + re2c/test/condtype.cstcondtype.cs.h.re | 13 + re2c/test/condtype.ctcondtype.c.h.c | 48 + re2c/test/condtype.ctcondtype.c.h.h | 7 + re2c/test/condtype.ctcondtype.c.h.re | 13 + re2c/test/condtype_decl.c.c | 57 + re2c/test/condtype_decl.c.re | 15 + re2c/test/condtype_decl.cg.c | 50 + re2c/test/condtype_decl.cg.re | 15 + re2c/test/condtype_decl.cs.c | 50 + re2c/test/condtype_decl.cs.re | 15 + re2c/test/condtype_single.c.c | 27 + re2c/test/condtype_single.c.re | 3 + re2c/test/condtype_single.cg.c | 25 + re2c/test/condtype_single.cg.re | 3 + re2c/test/condtype_single.cs.c | 21 + re2c/test/condtype_single.cs.re | 3 + .../php20140822_zend_language_scanner.igcFd.c | 1 + ...0140822_zend_language_scanner_crlf.igcFd.c | 1 + re2c/test/php20150211_json_scanner.igc.c | 1 + re2c/test/php20150211_phpdbg_lexer.igcFd.c | 1 + ...11_zend_ini_scanner.igcFd--case-inverted.c | 1 + ...p20150211_zend_ini_scanner_trimmed.icFwb.c | 1 + ...nd_language_scanner.igcFd--case-inverted.c | 1 + 49 files changed, 1564 insertions(+), 818 deletions(-) create mode 100644 re2c/test/condtype.c.c create mode 100644 re2c/test/condtype.c.re create mode 100644 re2c/test/condtype.cg.c create mode 100644 re2c/test/condtype.cg.re create mode 100644 re2c/test/condtype.cgtcondtype.cg.h.c create mode 100644 re2c/test/condtype.cgtcondtype.cg.h.h create mode 100644 re2c/test/condtype.cgtcondtype.cg.h.re create mode 100644 re2c/test/condtype.cs.c create mode 100644 re2c/test/condtype.cs.re create mode 100644 re2c/test/condtype.cstcondtype.cs.h.c create mode 100644 re2c/test/condtype.cstcondtype.cs.h.h create mode 100644 re2c/test/condtype.cstcondtype.cs.h.re create mode 100644 re2c/test/condtype.ctcondtype.c.h.c create mode 100644 re2c/test/condtype.ctcondtype.c.h.h create mode 100644 re2c/test/condtype.ctcondtype.c.h.re create mode 100644 re2c/test/condtype_decl.c.c create mode 100644 re2c/test/condtype_decl.c.re create mode 100644 re2c/test/condtype_decl.cg.c create mode 100644 re2c/test/condtype_decl.cg.re create mode 100644 re2c/test/condtype_decl.cs.c create mode 100644 re2c/test/condtype_decl.cs.re create mode 100644 re2c/test/condtype_single.c.c create mode 100644 re2c/test/condtype_single.c.re create mode 100644 re2c/test/condtype_single.cg.c create mode 100644 re2c/test/condtype_single.cg.re create mode 100644 re2c/test/condtype_single.cs.c create mode 100644 re2c/test/condtype_single.cs.re diff --git a/re2c/bootstrap/src/conf/parse_opts.cc b/re2c/bootstrap/src/conf/parse_opts.cc index eaa9cc6e..283b6dd0 100644 --- a/re2c/bootstrap/src/conf/parse_opts.cc +++ b/re2c/bootstrap/src/conf/parse_opts.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 on Tue Aug 18 17:43:02 2015 */ +/* Generated by re2c 0.14.3 on Wed Aug 26 15:05:25 2015 */ #line 1 "../src/conf/parse_opts.re" #include @@ -225,11 +225,12 @@ opt_warn: YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; switch (yych) { - case 'e': goto yy46; - case 'm': goto yy47; - case 'n': goto yy48; - case 's': goto yy49; - case 'u': goto yy50; + case 'c': goto yy46; + case 'e': goto yy47; + case 'm': goto yy48; + case 'n': goto yy49; + case 's': goto yy50; + case 'u': goto yy51; default: goto yy44; } yy44: @@ -240,1167 +241,1204 @@ yy45: error ("bad warning: %s", *argv); return EXIT_FAIL; } -#line 244 "src/conf/parse_opts.cc" +#line 245 "src/conf/parse_opts.cc" yy46: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'm') goto yy114; + if (yych == 'o') goto yy137; goto yy45; yy47: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy95; + if (yych == 'm') goto yy115; goto yy45; yy48: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy81; + if (yych == 'a') goto yy96; goto yy45; yy49: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'w') goto yy67; + if (yych == 'a') goto yy82; goto yy45; yy50: + yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); + if (yych == 'w') goto yy68; + goto yy45; +yy51: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych != 's') goto yy45; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy53; -yy52: + if (yych == 'e') goto yy54; +yy53: YYCURSOR = YYMARKER; goto yy45; -yy53: +yy54: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy52; + if (yych != 'l') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy52; + if (yych != 's') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy52; + if (yych != 's') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy52; + if (yych != 's') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy52; + if (yych != 'c') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy52; + if (yych != 'p') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy52; + if (yych >= 0x01) goto yy53; ++YYCURSOR; -#line 82 "../src/conf/parse_opts.re" +#line 83 "../src/conf/parse_opts.re" { warn.set (Warn::USELESS_ESCAPE, option); goto opt; } -#line 297 "src/conf/parse_opts.cc" -yy67: +#line 302 "src/conf/parse_opts.cc" +yy68: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy52; + if (yych != 'p') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy52; + if (yych != 'p') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy52; + if (yych != 'd') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy52; + if (yych != 'r') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy52; + if (yych != 'n') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy52; + if (yych != 'g') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy52; + if (yych >= 0x01) goto yy53; ++YYCURSOR; -#line 81 "../src/conf/parse_opts.re" +#line 82 "../src/conf/parse_opts.re" { warn.set (Warn::SWAPPED_RANGE, option); goto opt; } -#line 326 "src/conf/parse_opts.cc" -yy81: +#line 331 "src/conf/parse_opts.cc" +yy82: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'k') goto yy52; + if (yych != 'k') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy52; + if (yych != 'd') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy52; + if (yych != 'd') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'f') goto yy52; + if (yych != 'f') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy52; + if (yych != 'u') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy52; + if (yych != 'l') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy52; + if (yych != 't') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy52; + if (yych >= 0x01) goto yy53; ++YYCURSOR; -#line 80 "../src/conf/parse_opts.re" +#line 81 "../src/conf/parse_opts.re" { warn.set (Warn::NAKED_DEFAULT, option); goto opt; } -#line 355 "src/conf/parse_opts.cc" -yy95: +#line 360 "src/conf/parse_opts.cc" +yy96: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy52; + if (yych != 't') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy52; + if (yych != 'c') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'h') goto yy52; + if (yych != 'h') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'm') goto yy52; + if (yych != 'm') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy52; + if (yych != 'p') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy52; + if (yych != 't') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'y') goto yy52; + if (yych != 'y') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy52; + if (yych != 's') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy52; + if (yych != 't') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy52; + if (yych != 'r') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy52; + if (yych != 'i') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy52; + if (yych != 'n') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy52; + if (yych != 'g') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy52; + if (yych >= 0x01) goto yy53; ++YYCURSOR; -#line 79 "../src/conf/parse_opts.re" +#line 80 "../src/conf/parse_opts.re" { warn.set (Warn::MATCH_EMPTY_STRING, option); goto opt; } -#line 394 "src/conf/parse_opts.cc" -yy114: +#line 399 "src/conf/parse_opts.cc" +yy115: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy52; + if (yych != 'p') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy52; + if (yych != 't') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'y') goto yy52; + if (yych != 'y') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy52; + if (yych != 'c') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'h') goto yy52; + if (yych != 'h') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy52; + if (yych != 'r') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy52; + if (yych != 'c') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy52; + if (yych != 't') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy52; + if (yych != 'e') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy52; + if (yych != 'r') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy52; + if (yych != '-') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy52; + if (yych != 'c') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy52; + if (yych != 'l') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy52; + if (yych != 'a') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy52; + if (yych != 's') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy52; + if (yych != 's') goto yy53; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy52; + if (yych >= 0x01) goto yy53; ++YYCURSOR; -#line 78 "../src/conf/parse_opts.re" +#line 79 "../src/conf/parse_opts.re" { warn.set (Warn::EMPTY_CHARACTER_CLASS, option); goto opt; } -#line 439 "src/conf/parse_opts.cc" +#line 444 "src/conf/parse_opts.cc" +yy137: + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'n') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'd') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'i') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 't') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'i') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'o') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'n') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != '-') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'o') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'r') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'd') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'e') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych != 'r') goto yy53; + yych = (YYCTYPE)*++YYCURSOR; + if (yych >= 0x01) goto yy53; + ++YYCURSOR; +#line 78 "../src/conf/parse_opts.re" + { warn.set (Warn::CONDITION_ORDER, option); goto opt; } +#line 477 "src/conf/parse_opts.cc" } -#line 83 "../src/conf/parse_opts.re" +#line 84 "../src/conf/parse_opts.re" opt_short: -#line 446 "src/conf/parse_opts.cc" +#line 484 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych <= 'c') { if (yych <= 'C') { if (yych <= '7') { - if (yych <= 0x00) goto yy138; - if (yych == '1') goto yy142; - goto yy140; + if (yych <= 0x00) goto yy155; + if (yych == '1') goto yy159; + goto yy157; } else { - if (yych <= '8') goto yy144; - if (yych == '?') goto yy146; - goto yy140; + if (yych <= '8') goto yy161; + if (yych == '?') goto yy163; + goto yy157; } } else { if (yych <= 'U') { - if (yych <= 'D') goto yy148; - if (yych == 'F') goto yy150; - goto yy140; + if (yych <= 'D') goto yy165; + if (yych == 'F') goto yy167; + goto yy157; } else { - if (yych <= 'V') goto yy152; - if (yych <= 'a') goto yy140; - if (yych <= 'b') goto yy154; - goto yy156; + if (yych <= 'V') goto yy169; + if (yych <= 'a') goto yy157; + if (yych <= 'b') goto yy171; + goto yy173; } } } else { if (yych <= 'o') { if (yych <= 'g') { - if (yych <= 'd') goto yy158; - if (yych <= 'e') goto yy160; - if (yych <= 'f') goto yy162; - goto yy164; + if (yych <= 'd') goto yy175; + if (yych <= 'e') goto yy177; + if (yych <= 'f') goto yy179; + goto yy181; } else { - if (yych <= 'h') goto yy146; - if (yych <= 'i') goto yy166; - if (yych <= 'n') goto yy140; - goto yy168; + if (yych <= 'h') goto yy163; + if (yych <= 'i') goto yy183; + if (yych <= 'n') goto yy157; + goto yy185; } } else { if (yych <= 't') { - if (yych <= 'q') goto yy140; - if (yych <= 'r') goto yy170; - if (yych <= 's') goto yy172; - goto yy174; + if (yych <= 'q') goto yy157; + if (yych <= 'r') goto yy187; + if (yych <= 's') goto yy189; + goto yy191; } else { if (yych <= 'v') { - if (yych <= 'u') goto yy176; - goto yy178; + if (yych <= 'u') goto yy193; + goto yy195; } else { - if (yych <= 'w') goto yy180; - if (yych <= 'x') goto yy182; - goto yy140; + if (yych <= 'w') goto yy197; + if (yych <= 'x') goto yy199; + goto yy157; } } } } -yy138: +yy155: ++YYCURSOR; -#line 92 "../src/conf/parse_opts.re" +#line 93 "../src/conf/parse_opts.re" { goto opt; } -#line 508 "src/conf/parse_opts.cc" -yy140: +#line 546 "src/conf/parse_opts.cc" +yy157: ++YYCURSOR; -#line 88 "../src/conf/parse_opts.re" +#line 89 "../src/conf/parse_opts.re" { error ("bad short option: %s", *argv); return EXIT_FAIL; } -#line 516 "src/conf/parse_opts.cc" -yy142: +#line 554 "src/conf/parse_opts.cc" +yy159: ++YYCURSOR; -#line 115 "../src/conf/parse_opts.re" +#line 116 "../src/conf/parse_opts.re" { goto opt_short; } -#line 521 "src/conf/parse_opts.cc" -yy144: +#line 559 "src/conf/parse_opts.cc" +yy161: ++YYCURSOR; -#line 110 "../src/conf/parse_opts.re" +#line 111 "../src/conf/parse_opts.re" { if (!opts.utf_8 ()) { error_encoding (); return EXIT_FAIL; } goto opt_short; } -#line 526 "src/conf/parse_opts.cc" -yy146: +#line 564 "src/conf/parse_opts.cc" +yy163: ++YYCURSOR; -#line 93 "../src/conf/parse_opts.re" +#line 94 "../src/conf/parse_opts.re" { usage (); return EXIT_OK; } -#line 531 "src/conf/parse_opts.cc" -yy148: +#line 569 "src/conf/parse_opts.cc" +yy165: ++YYCURSOR; -#line 99 "../src/conf/parse_opts.re" +#line 100 "../src/conf/parse_opts.re" { opts.emit_dot (); goto opt_short; } -#line 536 "src/conf/parse_opts.cc" -yy150: +#line 574 "src/conf/parse_opts.cc" +yy167: ++YYCURSOR; -#line 101 "../src/conf/parse_opts.re" +#line 102 "../src/conf/parse_opts.re" { opts.flex_syntax (); goto opt_short; } -#line 541 "src/conf/parse_opts.cc" -yy152: +#line 579 "src/conf/parse_opts.cc" +yy169: ++YYCURSOR; -#line 95 "../src/conf/parse_opts.re" +#line 96 "../src/conf/parse_opts.re" { vernum (); return EXIT_OK; } -#line 546 "src/conf/parse_opts.cc" -yy154: +#line 584 "src/conf/parse_opts.cc" +yy171: ++YYCURSOR; -#line 96 "../src/conf/parse_opts.re" +#line 97 "../src/conf/parse_opts.re" { opts.bit_vectors (); goto opt_short; } -#line 551 "src/conf/parse_opts.cc" -yy156: +#line 589 "src/conf/parse_opts.cc" +yy173: ++YYCURSOR; -#line 97 "../src/conf/parse_opts.re" +#line 98 "../src/conf/parse_opts.re" { opts.start_conditions (); goto opt_short; } -#line 556 "src/conf/parse_opts.cc" -yy158: +#line 594 "src/conf/parse_opts.cc" +yy175: ++YYCURSOR; -#line 98 "../src/conf/parse_opts.re" +#line 99 "../src/conf/parse_opts.re" { opts.debug_output (); goto opt_short; } -#line 561 "src/conf/parse_opts.cc" -yy160: +#line 599 "src/conf/parse_opts.cc" +yy177: ++YYCURSOR; -#line 106 "../src/conf/parse_opts.re" +#line 107 "../src/conf/parse_opts.re" { if (!opts.ecb ()) { error_encoding (); return EXIT_FAIL; } goto opt_short; } -#line 566 "src/conf/parse_opts.cc" -yy162: +#line 604 "src/conf/parse_opts.cc" +yy179: ++YYCURSOR; -#line 100 "../src/conf/parse_opts.re" +#line 101 "../src/conf/parse_opts.re" { opts.storable_state (); goto opt_short; } -#line 571 "src/conf/parse_opts.cc" -yy164: +#line 609 "src/conf/parse_opts.cc" +yy181: ++YYCURSOR; -#line 102 "../src/conf/parse_opts.re" +#line 103 "../src/conf/parse_opts.re" { opts.computed_gotos (); goto opt_short; } -#line 576 "src/conf/parse_opts.cc" -yy166: +#line 614 "src/conf/parse_opts.cc" +yy183: ++YYCURSOR; -#line 103 "../src/conf/parse_opts.re" +#line 104 "../src/conf/parse_opts.re" { opts.no_debug_info (); goto opt_short; } -#line 581 "src/conf/parse_opts.cc" -yy168: +#line 619 "src/conf/parse_opts.cc" +yy185: ++YYCURSOR; - if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy186; -#line 112 "../src/conf/parse_opts.re" + if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy203; +#line 113 "../src/conf/parse_opts.re" { *argv = YYCURSOR; goto opt_output; } -#line 587 "src/conf/parse_opts.cc" -yy170: +#line 625 "src/conf/parse_opts.cc" +yy187: ++YYCURSOR; -#line 104 "../src/conf/parse_opts.re" +#line 105 "../src/conf/parse_opts.re" { opts.reusable (); goto opt_short; } -#line 592 "src/conf/parse_opts.cc" -yy172: +#line 630 "src/conf/parse_opts.cc" +yy189: ++YYCURSOR; -#line 105 "../src/conf/parse_opts.re" +#line 106 "../src/conf/parse_opts.re" { opts.nested_ifs (); goto opt_short; } -#line 597 "src/conf/parse_opts.cc" -yy174: +#line 635 "src/conf/parse_opts.cc" +yy191: ++YYCURSOR; - if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy184; -#line 114 "../src/conf/parse_opts.re" + if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy201; +#line 115 "../src/conf/parse_opts.re" { *argv = YYCURSOR; goto opt_header; } -#line 603 "src/conf/parse_opts.cc" -yy176: +#line 641 "src/conf/parse_opts.cc" +yy193: ++YYCURSOR; -#line 107 "../src/conf/parse_opts.re" +#line 108 "../src/conf/parse_opts.re" { if (!opts.unicode ()) { error_encoding (); return EXIT_FAIL; } goto opt_short; } -#line 608 "src/conf/parse_opts.cc" -yy178: +#line 646 "src/conf/parse_opts.cc" +yy195: ++YYCURSOR; -#line 94 "../src/conf/parse_opts.re" +#line 95 "../src/conf/parse_opts.re" { version (); return EXIT_OK; } -#line 613 "src/conf/parse_opts.cc" -yy180: +#line 651 "src/conf/parse_opts.cc" +yy197: ++YYCURSOR; -#line 108 "../src/conf/parse_opts.re" +#line 109 "../src/conf/parse_opts.re" { if (!opts.wide_chars ()) { error_encoding (); return EXIT_FAIL; } goto opt_short; } -#line 618 "src/conf/parse_opts.cc" -yy182: +#line 656 "src/conf/parse_opts.cc" +yy199: ++YYCURSOR; -#line 109 "../src/conf/parse_opts.re" +#line 110 "../src/conf/parse_opts.re" { if (!opts.utf_16 ()) { error_encoding (); return EXIT_FAIL; } goto opt_short; } -#line 623 "src/conf/parse_opts.cc" -yy184: +#line 661 "src/conf/parse_opts.cc" +yy201: ++YYCURSOR; -#line 113 "../src/conf/parse_opts.re" +#line 114 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; } -#line 628 "src/conf/parse_opts.cc" -yy186: +#line 666 "src/conf/parse_opts.cc" +yy203: ++YYCURSOR; -#line 111 "../src/conf/parse_opts.re" +#line 112 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; } -#line 633 "src/conf/parse_opts.cc" +#line 671 "src/conf/parse_opts.cc" } -#line 116 "../src/conf/parse_opts.re" +#line 117 "../src/conf/parse_opts.re" opt_long: -#line 640 "src/conf/parse_opts.cc" +#line 678 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; switch (yych) { - case 'b': goto yy192; - case 'c': goto yy193; - case 'd': goto yy194; - case 'e': goto yy195; - case 'f': goto yy196; - case 'h': goto yy197; - case 'i': goto yy198; - case 'n': goto yy199; - case 'o': goto yy200; - case 'r': goto yy201; - case 's': goto yy202; - case 't': goto yy203; - case 'u': goto yy204; - case 'v': goto yy205; - case 'w': goto yy206; - default: goto yy190; + 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; } -yy190: +yy207: ++YYCURSOR; -yy191: -#line 121 "../src/conf/parse_opts.re" +yy208: +#line 122 "../src/conf/parse_opts.re" { error ("bad long option: %s", *argv); return EXIT_FAIL; } -#line 670 "src/conf/parse_opts.cc" -yy192: +#line 708 "src/conf/parse_opts.cc" +yy209: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'i') goto yy488; - goto yy191; -yy193: + if (yych == 'i') goto yy505; + goto yy208; +yy210: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy448; - if (yych == 'o') goto yy449; - goto yy191; -yy194: + if (yych == 'a') goto yy465; + if (yych == 'o') goto yy466; + goto yy208; +yy211: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy435; - goto yy191; -yy195: + if (yych == 'e') goto yy452; + goto yy208; +yy212: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 'l') { - if (yych == 'c') goto yy397; - goto yy191; + if (yych == 'c') goto yy414; + goto yy208; } else { - if (yych <= 'm') goto yy395; - if (yych <= 'n') goto yy396; - goto yy191; + if (yych <= 'm') goto yy412; + if (yych <= 'n') goto yy413; + goto yy208; } -yy196: +yy213: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'l') goto yy383; - goto yy191; -yy197: + if (yych == 'l') goto yy400; + goto yy208; +yy214: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy378; - goto yy191; -yy198: + if (yych == 'e') goto yy395; + goto yy208; +yy215: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'n') goto yy372; - goto yy191; -yy199: + if (yych == 'n') goto yy389; + goto yy208; +yy216: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy331; - if (yych == 'o') goto yy330; - goto yy191; -yy200: + if (yych == 'e') goto yy348; + if (yych == 'o') goto yy347; + goto yy208; +yy217: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy323; - goto yy191; -yy201: + if (yych == 'u') goto yy340; + goto yy208; +yy218: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy314; - goto yy191; -yy202: + if (yych == 'e') goto yy331; + goto yy208; +yy219: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 'j') { - if (yych == 'i') goto yy262; - goto yy191; + if (yych == 'i') goto yy279; + goto yy208; } else { - if (yych <= 'k') goto yy263; - if (yych == 't') goto yy264; - goto yy191; + if (yych <= 'k') goto yy280; + if (yych == 't') goto yy281; + goto yy208; } -yy203: +yy220: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'y') goto yy250; - goto yy191; -yy204: + if (yych == 'y') goto yy267; + goto yy208; +yy221: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'n') goto yy233; - if (yych == 't') goto yy232; - goto yy191; -yy205: + if (yych == 'n') goto yy250; + if (yych == 't') goto yy249; + goto yy208; +yy222: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy219; - goto yy191; -yy206: + if (yych == 'e') goto yy236; + goto yy208; +yy223: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych != 'i') goto yy191; + if (yych != 'i') goto yy208; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'd') goto yy209; -yy208: + if (yych == 'd') goto yy226; +yy225: YYCURSOR = YYMARKER; - goto yy191; -yy209: + goto yy208; +yy226: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy208; + if (yych != 'c') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'h') goto yy208; + if (yych != 'h') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 144 "../src/conf/parse_opts.re" +#line 145 "../src/conf/parse_opts.re" { if (!opts.wide_chars ()) { error_encoding (); return EXIT_FAIL; } goto opt; } -#line 770 "src/conf/parse_opts.cc" -yy219: +#line 808 "src/conf/parse_opts.cc" +yy236: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'n') goto yy221; - if (yych == 's') goto yy222; - goto yy208; -yy221: + if (yych == 'n') goto yy238; + if (yych == 's') goto yy239; + goto yy225; +yy238: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'u') goto yy228; - goto yy208; -yy222: + if (yych == 'u') goto yy245; + goto yy225; +yy239: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 126 "../src/conf/parse_opts.re" +#line 127 "../src/conf/parse_opts.re" { version (); return EXIT_OK; } -#line 794 "src/conf/parse_opts.cc" -yy228: +#line 832 "src/conf/parse_opts.cc" +yy245: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'm') goto yy208; + if (yych != 'm') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 127 "../src/conf/parse_opts.re" +#line 128 "../src/conf/parse_opts.re" { vernum (); return EXIT_OK; } -#line 803 "src/conf/parse_opts.cc" -yy232: +#line 841 "src/conf/parse_opts.cc" +yy249: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'f') goto yy241; - goto yy208; -yy233: + if (yych == 'f') goto yy258; + goto yy225; +yy250: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy208; + if (yych != 'c') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 143 "../src/conf/parse_opts.re" +#line 144 "../src/conf/parse_opts.re" { if (!opts.unicode ()) { error_encoding (); return EXIT_FAIL; } goto opt; } -#line 824 "src/conf/parse_opts.cc" -yy241: +#line 862 "src/conf/parse_opts.cc" +yy258: yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych == '1') goto yy243; - if (yych == '8') goto yy244; - goto yy208; -yy243: + if (yych == '1') goto yy260; + if (yych == '8') goto yy261; + goto yy225; +yy260: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '6') goto yy247; - goto yy208; -yy244: + if (yych == '6') goto yy264; + goto yy225; +yy261: yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 146 "../src/conf/parse_opts.re" +#line 147 "../src/conf/parse_opts.re" { if (!opts.utf_8 ()) { error_encoding (); return EXIT_FAIL; } goto opt; } -#line 842 "src/conf/parse_opts.cc" -yy247: +#line 880 "src/conf/parse_opts.cc" +yy264: yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 145 "../src/conf/parse_opts.re" +#line 146 "../src/conf/parse_opts.re" { if (!opts.utf_16 ()) { error_encoding (); return EXIT_FAIL; } goto opt; } -#line 849 "src/conf/parse_opts.cc" -yy250: +#line 887 "src/conf/parse_opts.cc" +yy267: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'h') goto yy208; + if (yych != 'h') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 148 "../src/conf/parse_opts.re" +#line 149 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; } -#line 874 "src/conf/parse_opts.cc" -yy262: +#line 912 "src/conf/parse_opts.cc" +yy279: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'n') goto yy303; - goto yy208; -yy263: + if (yych == 'n') goto yy320; + goto yy225; +yy280: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy295; - goto yy208; -yy264: + if (yych == 'e') goto yy312; + goto yy225; +yy281: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'a') goto yy265; - if (yych == 'o') goto yy266; - goto yy208; -yy265: + if (yych == 'a') goto yy282; + if (yych == 'o') goto yy283; + goto yy225; +yy282: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'r') goto yy280; - goto yy208; -yy266: + if (yych == 'r') goto yy297; + goto yy225; +yy283: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'b') goto yy208; + if (yych != 'b') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 132 "../src/conf/parse_opts.re" +#line 133 "../src/conf/parse_opts.re" { opts.storable_state (); goto opt; } -#line 920 "src/conf/parse_opts.cc" -yy280: +#line 958 "src/conf/parse_opts.cc" +yy297: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy208; + if (yych != 'c') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 129 "../src/conf/parse_opts.re" +#line 130 "../src/conf/parse_opts.re" { opts.start_conditions (); goto opt; } -#line 951 "src/conf/parse_opts.cc" -yy295: +#line 989 "src/conf/parse_opts.cc" +yy312: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 141 "../src/conf/parse_opts.re" +#line 142 "../src/conf/parse_opts.re" { opts.skeleton (); goto opt; } -#line 968 "src/conf/parse_opts.cc" -yy303: +#line 1006 "src/conf/parse_opts.cc" +yy320: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy208; + if (yych != 'g') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 152 "../src/conf/parse_opts.re" +#line 153 "../src/conf/parse_opts.re" { goto opt; } -#line 991 "src/conf/parse_opts.cc" -yy314: +#line 1029 "src/conf/parse_opts.cc" +yy331: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'b') goto yy208; + if (yych != 'b') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 136 "../src/conf/parse_opts.re" +#line 137 "../src/conf/parse_opts.re" { opts.reusable (); goto opt; } -#line 1010 "src/conf/parse_opts.cc" -yy323: +#line 1048 "src/conf/parse_opts.cc" +yy340: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 147 "../src/conf/parse_opts.re" +#line 148 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; } -#line 1025 "src/conf/parse_opts.cc" -yy330: +#line 1063 "src/conf/parse_opts.cc" +yy347: yych = (YYCTYPE)*++YYCURSOR; - if (yych == '-') goto yy342; - goto yy208; -yy331: + if (yych == '-') goto yy359; + goto yy225; +yy348: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'f') goto yy208; + if (yych != 'f') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 137 "../src/conf/parse_opts.re" +#line 138 "../src/conf/parse_opts.re" { opts.nested_ifs (); goto opt; } -#line 1052 "src/conf/parse_opts.cc" -yy342: +#line 1090 "src/conf/parse_opts.cc" +yy359: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'd') goto yy344; - if (yych != 'g') goto yy208; + if (yych == 'd') goto yy361; + if (yych != 'g') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy356; - goto yy208; -yy344: + if (yych == 'e') goto yy373; + goto yy225; +yy361: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'b') goto yy208; + if (yych != 'b') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy208; + if (yych != 'g') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'f') goto yy208; + if (yych != 'f') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 135 "../src/conf/parse_opts.re" +#line 136 "../src/conf/parse_opts.re" { opts.no_debug_info (); goto opt; } -#line 1084 "src/conf/parse_opts.cc" -yy356: +#line 1122 "src/conf/parse_opts.cc" +yy373: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 138 "../src/conf/parse_opts.re" +#line 139 "../src/conf/parse_opts.re" { opts.no_generation_date (); goto opt; } -#line 1117 "src/conf/parse_opts.cc" -yy372: +#line 1155 "src/conf/parse_opts.cc" +yy389: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 150 "../src/conf/parse_opts.re" +#line 151 "../src/conf/parse_opts.re" { goto opt_input; } -#line 1130 "src/conf/parse_opts.cc" -yy378: +#line 1168 "src/conf/parse_opts.cc" +yy395: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 125 "../src/conf/parse_opts.re" +#line 126 "../src/conf/parse_opts.re" { usage (); return EXIT_OK; } -#line 1141 "src/conf/parse_opts.cc" -yy383: +#line 1179 "src/conf/parse_opts.cc" +yy400: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'x') goto yy208; + if (yych != 'x') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'y') goto yy208; + if (yych != 'y') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'x') goto yy208; + if (yych != 'x') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 133 "../src/conf/parse_opts.re" +#line 134 "../src/conf/parse_opts.re" { opts.flex_syntax (); goto opt; } -#line 1166 "src/conf/parse_opts.cc" -yy395: +#line 1204 "src/conf/parse_opts.cc" +yy412: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'i') goto yy416; - if (yych == 'p') goto yy417; - goto yy208; -yy396: + if (yych == 'i') goto yy433; + if (yych == 'p') goto yy434; + goto yy225; +yy413: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'c') goto yy401; - goto yy208; -yy397: + if (yych == 'c') goto yy418; + goto yy225; +yy414: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'b') goto yy208; + if (yych != 'b') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 142 "../src/conf/parse_opts.re" +#line 143 "../src/conf/parse_opts.re" { if (!opts.ecb ()) { error_encoding (); return EXIT_FAIL; } goto opt; } -#line 1184 "src/conf/parse_opts.cc" -yy401: +#line 1222 "src/conf/parse_opts.cc" +yy418: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy208; + if (yych != 'g') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy208; + if (yych != 'c') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'y') goto yy208; + if (yych != 'y') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 149 "../src/conf/parse_opts.re" +#line 150 "../src/conf/parse_opts.re" { goto opt_encoding_policy; } -#line 1215 "src/conf/parse_opts.cc" -yy416: +#line 1253 "src/conf/parse_opts.cc" +yy433: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 't') goto yy428; - goto yy208; -yy417: + if (yych == 't') goto yy445; + goto yy225; +yy434: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'y') goto yy208; + if (yych != 'y') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy208; + if (yych != 'c') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy208; + if (yych != 'l') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy208; + if (yych != 'a') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 151 "../src/conf/parse_opts.re" +#line 152 "../src/conf/parse_opts.re" { goto opt_empty_class; } -#line 1242 "src/conf/parse_opts.cc" -yy428: +#line 1280 "src/conf/parse_opts.cc" +yy445: yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 131 "../src/conf/parse_opts.re" +#line 132 "../src/conf/parse_opts.re" { opts.emit_dot (); goto opt; } -#line 1257 "src/conf/parse_opts.cc" -yy435: +#line 1295 "src/conf/parse_opts.cc" +yy452: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'b') goto yy208; + if (yych != 'b') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy208; + if (yych != 'g') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 130 "../src/conf/parse_opts.re" +#line 131 "../src/conf/parse_opts.re" { opts.debug_output (); goto opt; } -#line 1284 "src/conf/parse_opts.cc" -yy448: +#line 1322 "src/conf/parse_opts.cc" +yy465: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 's') goto yy464; - goto yy208; -yy449: + if (yych == 's') goto yy481; + goto yy225; +yy466: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'm') goto yy208; + if (yych != 'm') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy208; + if (yych != 'p') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy208; + if (yych != 'u') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'g') goto yy208; + if (yych != 'g') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 134 "../src/conf/parse_opts.re" +#line 135 "../src/conf/parse_opts.re" { opts.computed_gotos (); goto opt; } -#line 1319 "src/conf/parse_opts.cc" -yy464: +#line 1357 "src/conf/parse_opts.cc" +yy481: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 's') goto yy470; - if (yych != 'v') goto yy208; + if (yych == 's') goto yy487; + if (yych != 'v') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy481; - goto yy208; -yy470: + if (yych == 'e') goto yy498; + goto yy225; +yy487: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy208; + if (yych != 'n') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy208; + if (yych != 'i') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'v') goto yy208; + if (yych != 'v') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 139 "../src/conf/parse_opts.re" +#line 140 "../src/conf/parse_opts.re" { opts.case_insensitive (); goto opt; } -#line 1357 "src/conf/parse_opts.cc" -yy481: +#line 1395 "src/conf/parse_opts.cc" +yy498: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'd') goto yy208; + if (yych != 'd') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 140 "../src/conf/parse_opts.re" +#line 141 "../src/conf/parse_opts.re" { opts.case_inverted (); goto opt; } -#line 1372 "src/conf/parse_opts.cc" -yy488: +#line 1410 "src/conf/parse_opts.cc" +yy505: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy208; + if (yych != '-') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'v') goto yy208; + if (yych != 'v') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy208; + if (yych != 'e') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy208; + if (yych != 'c') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy208; + if (yych != 't') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy208; + if (yych != 'o') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy208; + if (yych != 'r') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy208; + if (yych != 's') goto yy225; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy208; + if (yych >= 0x01) goto yy225; ++YYCURSOR; -#line 128 "../src/conf/parse_opts.re" +#line 129 "../src/conf/parse_opts.re" { opts.bit_vectors (); goto opt; } -#line 1397 "src/conf/parse_opts.cc" +#line 1435 "src/conf/parse_opts.cc" } -#line 153 "../src/conf/parse_opts.re" +#line 154 "../src/conf/parse_opts.re" opt_output: -#line 1404 "src/conf/parse_opts.cc" +#line 1442 "src/conf/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1438,37 +1476,37 @@ opt_output: 128, 128, 128, 128, 128, 128, 128, 128, }; yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy502; - if (yych != '-') goto yy504; -yy502: + if (yych <= 0x00) goto yy519; + if (yych != '-') goto yy521; +yy519: ++YYCURSOR; -#line 158 "../src/conf/parse_opts.re" +#line 159 "../src/conf/parse_opts.re" { error ("bad argument to option -o, --output: %s", *argv); return EXIT_FAIL; } -#line 1451 "src/conf/parse_opts.cc" -yy504: +#line 1489 "src/conf/parse_opts.cc" +yy521: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - goto yy506; -yy505: + goto yy523; +yy522: ++YYCURSOR; yych = (YYCTYPE)*YYCURSOR; -yy506: +yy523: if (yybm[0+yych] & 128) { - goto yy505; + goto yy522; } ++YYCURSOR; -#line 162 "../src/conf/parse_opts.re" +#line 163 "../src/conf/parse_opts.re" { if (!opts.output (*argv)) return EXIT_FAIL; goto opt; } -#line 1465 "src/conf/parse_opts.cc" +#line 1503 "src/conf/parse_opts.cc" } -#line 163 "../src/conf/parse_opts.re" +#line 164 "../src/conf/parse_opts.re" opt_header: -#line 1472 "src/conf/parse_opts.cc" +#line 1510 "src/conf/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -1506,32 +1544,32 @@ opt_header: 128, 128, 128, 128, 128, 128, 128, 128, }; yych = (YYCTYPE)*YYCURSOR; - if (yych <= 0x00) goto yy511; - if (yych != '-') goto yy513; -yy511: + if (yych <= 0x00) goto yy528; + if (yych != '-') goto yy530; +yy528: ++YYCURSOR; -#line 168 "../src/conf/parse_opts.re" +#line 169 "../src/conf/parse_opts.re" { error ("bad argument to option -t, --type-header: %s", *argv); return EXIT_FAIL; } -#line 1519 "src/conf/parse_opts.cc" -yy513: +#line 1557 "src/conf/parse_opts.cc" +yy530: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - goto yy515; -yy514: + goto yy532; +yy531: ++YYCURSOR; yych = (YYCTYPE)*YYCURSOR; -yy515: +yy532: if (yybm[0+yych] & 128) { - goto yy514; + goto yy531; } ++YYCURSOR; -#line 172 "../src/conf/parse_opts.re" +#line 173 "../src/conf/parse_opts.re" { if (!opts.type_header (*argv)) return EXIT_FAIL; goto opt; } -#line 1533 "src/conf/parse_opts.cc" +#line 1571 "src/conf/parse_opts.cc" } -#line 173 "../src/conf/parse_opts.re" +#line 174 "../src/conf/parse_opts.re" opt_encoding_policy: @@ -1541,89 +1579,89 @@ opt_encoding_policy: return EXIT_FAIL; } -#line 1545 "src/conf/parse_opts.cc" +#line 1583 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych <= 'h') { - if (yych == 'f') goto yy522; + if (yych == 'f') goto yy539; } else { - if (yych <= 'i') goto yy523; - if (yych == 's') goto yy524; + if (yych <= 'i') goto yy540; + if (yych == 's') goto yy541; } ++YYCURSOR; -yy521: -#line 183 "../src/conf/parse_opts.re" +yy538: +#line 184 "../src/conf/parse_opts.re" { error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv); return EXIT_FAIL; } -#line 1562 "src/conf/parse_opts.cc" -yy522: +#line 1600 "src/conf/parse_opts.cc" +yy539: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy544; - goto yy521; -yy523: + if (yych == 'a') goto yy561; + goto yy538; +yy540: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'g') goto yy537; - goto yy521; -yy524: + if (yych == 'g') goto yy554; + goto yy538; +yy541: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych != 'u') goto yy521; + if (yych != 'u') goto yy538; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'b') goto yy527; -yy526: + if (yych == 'b') goto yy544; +yy543: YYCURSOR = YYMARKER; - goto yy521; -yy527: + goto yy538; +yy544: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy526; + if (yych != 's') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy526; + if (yych != 't') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy526; + if (yych != 'i') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy526; + if (yych != 't') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy526; + if (yych != 'u') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy526; + if (yych != 't') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy526; + if (yych != 'e') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy526; + if (yych >= 0x01) goto yy543; ++YYCURSOR; -#line 188 "../src/conf/parse_opts.re" +#line 189 "../src/conf/parse_opts.re" { opts.encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; } -#line 1599 "src/conf/parse_opts.cc" -yy537: +#line 1637 "src/conf/parse_opts.cc" +yy554: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy526; + if (yych != 'n') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy526; + if (yych != 'o') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy526; + if (yych != 'r') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy526; + if (yych != 'e') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy526; + if (yych >= 0x01) goto yy543; ++YYCURSOR; -#line 187 "../src/conf/parse_opts.re" +#line 188 "../src/conf/parse_opts.re" { opts.encoding_policy (Enc::POLICY_IGNORE); goto opt; } -#line 1614 "src/conf/parse_opts.cc" -yy544: +#line 1652 "src/conf/parse_opts.cc" +yy561: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'i') goto yy526; + if (yych != 'i') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy526; + if (yych != 'l') goto yy543; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy526; + if (yych >= 0x01) goto yy543; ++YYCURSOR; -#line 189 "../src/conf/parse_opts.re" +#line 190 "../src/conf/parse_opts.re" { opts.encoding_policy (Enc::POLICY_FAIL); goto opt; } -#line 1625 "src/conf/parse_opts.cc" +#line 1663 "src/conf/parse_opts.cc" } -#line 190 "../src/conf/parse_opts.re" +#line 191 "../src/conf/parse_opts.re" opt_input: @@ -1633,66 +1671,66 @@ opt_input: return EXIT_FAIL; } -#line 1637 "src/conf/parse_opts.cc" +#line 1675 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; - if (yych <= 'b') goto yy551; - if (yych <= 'c') goto yy553; - if (yych <= 'd') goto yy554; -yy551: + if (yych <= 'b') goto yy568; + if (yych <= 'c') goto yy570; + if (yych <= 'd') goto yy571; +yy568: ++YYCURSOR; -yy552: -#line 200 "../src/conf/parse_opts.re" +yy569: +#line 201 "../src/conf/parse_opts.re" { error ("bad argument to option --input (expected: default | custom): %s", *argv); return EXIT_FAIL; } -#line 1652 "src/conf/parse_opts.cc" -yy553: +#line 1690 "src/conf/parse_opts.cc" +yy570: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy564; - goto yy552; -yy554: + if (yych == 'u') goto yy581; + goto yy569; +yy571: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych != 'e') goto yy552; + if (yych != 'e') goto yy569; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'f') goto yy557; -yy556: + if (yych == 'f') goto yy574; +yy573: YYCURSOR = YYMARKER; - goto yy552; -yy557: + goto yy569; +yy574: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'a') goto yy556; + if (yych != 'a') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'u') goto yy556; + if (yych != 'u') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'l') goto yy556; + if (yych != 'l') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy556; + if (yych != 't') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy556; + if (yych >= 0x01) goto yy573; ++YYCURSOR; -#line 204 "../src/conf/parse_opts.re" +#line 205 "../src/conf/parse_opts.re" { opts.input (InputAPI::DEFAULT); goto opt; } -#line 1679 "src/conf/parse_opts.cc" -yy564: +#line 1717 "src/conf/parse_opts.cc" +yy581: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 's') goto yy556; + if (yych != 's') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy556; + if (yych != 't') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy556; + if (yych != 'o') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'm') goto yy556; + if (yych != 'm') goto yy573; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy556; + if (yych >= 0x01) goto yy573; ++YYCURSOR; -#line 205 "../src/conf/parse_opts.re" +#line 206 "../src/conf/parse_opts.re" { opts.input (InputAPI::CUSTOM); goto opt; } -#line 1694 "src/conf/parse_opts.cc" +#line 1732 "src/conf/parse_opts.cc" } -#line 206 "../src/conf/parse_opts.re" +#line 207 "../src/conf/parse_opts.re" opt_empty_class: @@ -1702,88 +1740,88 @@ opt_empty_class: return EXIT_FAIL; } -#line 1706 "src/conf/parse_opts.cc" +#line 1744 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; - if (yych == 'e') goto yy575; - if (yych == 'm') goto yy576; + if (yych == 'e') goto yy592; + if (yych == 'm') goto yy593; ++YYCURSOR; -yy574: -#line 216 "../src/conf/parse_opts.re" +yy591: +#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 1719 "src/conf/parse_opts.cc" -yy575: +#line 1757 "src/conf/parse_opts.cc" +yy592: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych == 'r') goto yy596; - goto yy574; -yy576: + if (yych == 'r') goto yy613; + goto yy591; +yy593: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); - if (yych != 'a') goto yy574; + if (yych != 'a') goto yy591; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 't') goto yy579; -yy578: + if (yych == 't') goto yy596; +yy595: YYCURSOR = YYMARKER; - goto yy574; -yy579: + goto yy591; +yy596: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'c') goto yy578; + if (yych != 'c') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'h') goto yy578; + if (yych != 'h') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != '-') goto yy578; + if (yych != '-') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'e') goto yy583; - if (yych == 'n') goto yy584; - goto yy578; -yy583: + if (yych == 'e') goto yy600; + if (yych == 'n') goto yy601; + goto yy595; +yy600: yych = (YYCTYPE)*++YYCURSOR; - if (yych == 'm') goto yy590; - goto yy578; -yy584: + if (yych == 'm') goto yy607; + goto yy595; +yy601: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy578; + if (yych != 'o') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'n') goto yy578; + if (yych != 'n') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'e') goto yy578; + if (yych != 'e') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy578; + if (yych >= 0x01) goto yy595; ++YYCURSOR; -#line 221 "../src/conf/parse_opts.re" +#line 222 "../src/conf/parse_opts.re" { opts.empty_class (EMPTY_CLASS_MATCH_NONE); goto opt; } -#line 1759 "src/conf/parse_opts.cc" -yy590: +#line 1797 "src/conf/parse_opts.cc" +yy607: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'p') goto yy578; + if (yych != 'p') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 't') goto yy578; + if (yych != 't') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'y') goto yy578; + if (yych != 'y') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy578; + if (yych >= 0x01) goto yy595; ++YYCURSOR; -#line 220 "../src/conf/parse_opts.re" +#line 221 "../src/conf/parse_opts.re" { opts.empty_class (EMPTY_CLASS_MATCH_EMPTY); goto opt; } -#line 1772 "src/conf/parse_opts.cc" -yy596: +#line 1810 "src/conf/parse_opts.cc" +yy613: yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy578; + if (yych != 'r') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'o') goto yy578; + if (yych != 'o') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych != 'r') goto yy578; + if (yych != 'r') goto yy595; yych = (YYCTYPE)*++YYCURSOR; - if (yych >= 0x01) goto yy578; + if (yych >= 0x01) goto yy595; ++YYCURSOR; -#line 222 "../src/conf/parse_opts.re" +#line 223 "../src/conf/parse_opts.re" { opts.empty_class (EMPTY_CLASS_ERROR); goto opt; } -#line 1785 "src/conf/parse_opts.cc" +#line 1823 "src/conf/parse_opts.cc" } -#line 223 "../src/conf/parse_opts.re" +#line 224 "../src/conf/parse_opts.re" end: diff --git a/re2c/src/codegen/emit_action.cc b/re2c/src/codegen/emit_action.cc index 20212711..81eb9147 100644 --- a/re2c/src/codegen/emit_action.cc +++ b/re2c/src/codegen/emit_action.cc @@ -364,6 +364,7 @@ void genYYFill(OutputFile & o, uint32_t need) void genSetCondition(OutputFile & o, uint32_t ind, const std::string& newcond) { + o.warn_condition_order = false; // see note [condition order] if (bUseYYSetConditionParam) { o << indent(ind) << mapCodeName["YYSETCONDITION"] << "(" << condEnumPrefix << newcond << ");\n"; diff --git a/re2c/src/codegen/emit_dfa.cc b/re2c/src/codegen/emit_dfa.cc index fa35858f..ef54d162 100644 --- a/re2c/src/codegen/emit_dfa.cc +++ b/re2c/src/codegen/emit_dfa.cc @@ -269,37 +269,66 @@ void genCondGotoSub(OutputFile & o, uint32_t ind, const std::vector } } +/* + * note [condition order] + * + * In theory re2c makes no guarantee about the order of conditions in + * the generated lexer. Users should define condition type 'YYCONDTYPE' + * and use values of this type with 'YYGETCONDITION' and 'YYSETCONDITION'. + * This way code is independent of internal re2c condition numbering. + * + * However, it is possible to manually hardcode condition numbers and make + * re2c generate condition dispatch without explicit use of condition names + * (nested 'if' statements with '-b' or computed 'goto' table with '-g'). + * This code is syntactically valid (compiles), but unsafe: + * - change of re2c options may break compilation + * - change of internal re2c condition numbering may break runtime + * + * re2c has to preserve the existing numbering scheme. + * + * re2c warns about implicit assumptions about condition order, unless: + * - condition type is defined with 'types:re2c' or '-t, --type-header' + * - condition names are explicitly used in dispatch or YYSETCONDITION + * - dispatch shrinks to single unconditional jump + */ void genCondGoto(OutputFile & o, uint32_t ind, const std::vector & condnames) { - if (gFlag) + const size_t conds = condnames.size (); + if (DFlag) + { + o.warn_condition_order = false; // see note [condition order] + for (size_t i = 0; i < conds; ++i) + { + const std::string cond = condnames[i]; + o << "0 -> " << cond << " [label=\"state=" << cond << "\"]\n"; + } + } + else if (gFlag) { o << indent(ind) << "goto *" << mapCodeName["yyctable"] << "[" << genGetCondition() << "];\n"; } - else + else if (sFlag) { - const size_t conds = condnames.size (); - if (sFlag) + if (conds == 1) { - genCondGotoSub(o, ind, condnames, 0, static_cast (conds) - 1); - } - else if (DFlag) - { - for (size_t i = 0; i < conds; ++i) - { - const std::string cond = condnames[i]; - o << "0 -> " << cond << " [label=\"state=" << cond << "\"]\n"; - } + o.warn_condition_order = false; // see note [condition order] } - else + genCondGotoSub(o, ind, condnames, 0, static_cast (conds) - 1); + } + else + { + o.warn_condition_order = false; // see note [condition order] + o << indent(ind) << "switch (" << genGetCondition() << ") {\n"; + for (size_t i = 0; i < conds; ++i) { - o << indent(ind) << "switch (" << genGetCondition() << ") {\n"; - for (size_t i = 0; i < conds; ++i) - { - const std::string & cond = condnames[i]; - o << indent(ind) << "case " << condEnumPrefix << cond << ": goto " << condPrefix << cond << ";\n"; - } - o << indent(ind) << "}\n"; + const std::string & cond = condnames[i]; + o << indent(ind) << "case " << condEnumPrefix << cond << ": goto " << condPrefix << cond << ";\n"; } + o << indent(ind) << "}\n"; + } + if (o.warn_condition_order) // see note [condition order] + { + warn.condition_order (o.get_block_line ()); } bWroteCondCheck = true; } diff --git a/re2c/src/codegen/output.cc b/re2c/src/codegen/output.cc index 71357e87..b429bf2c 100644 --- a/re2c/src/codegen/output.cc +++ b/re2c/src/codegen/output.cc @@ -55,6 +55,7 @@ OutputFile::OutputFile (const char * fn) , file (NULL) , blocks () , label_counter () + , warn_condition_order (!tFlag) // see note [condition order] { new_block (); } @@ -199,6 +200,7 @@ void OutputFile::insert_state_goto (uint32_t ind) void OutputFile::insert_types () { + warn_condition_order = false; // see note [condition order] blocks.back ()->fragments.push_back (new OutputFragment (OutputFragment::TYPES, 0)); insert_code (); } diff --git a/re2c/src/codegen/output.h b/re2c/src/codegen/output.h index cc79d4b8..d667706b 100644 --- a/re2c/src/codegen/output.h +++ b/re2c/src/codegen/output.h @@ -55,6 +55,7 @@ private: public: counter_t label_counter; + bool warn_condition_order; private: std::ostream & stream (); diff --git a/re2c/src/conf/parse_opts.re b/re2c/src/conf/parse_opts.re index 009c6558..e3e8aa52 100644 --- a/re2c/src/conf/parse_opts.re +++ b/re2c/src/conf/parse_opts.re @@ -75,6 +75,7 @@ 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; } diff --git a/re2c/src/conf/warn.cc b/re2c/src/conf/warn.cc index 25b5633b..3d16da92 100644 --- a/re2c/src/conf/warn.cc +++ b/re2c/src/conf/warn.cc @@ -73,6 +73,19 @@ void Warn::set_all_error () } } +void Warn::condition_order (uint32_t line) +{ + if (mask[CONDITION_ORDER] & WARNING) + { + const bool e = mask[CONDITION_ORDER] & ERROR; + error_accuml |= e; + warning (names[CONDITION_ORDER], line, e, + "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."); + } +} + void Warn::empty_class (uint32_t line) { if (mask[EMPTY_CHARACTER_CLASS] & WARNING) diff --git a/re2c/src/conf/warn.h b/re2c/src/conf/warn.h index 74633c76..1c52c314 100644 --- a/re2c/src/conf/warn.h +++ b/re2c/src/conf/warn.h @@ -8,6 +8,7 @@ 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"), \ @@ -46,6 +47,7 @@ public: void set (type_t t, option_t o); void set_all (); void set_all_error (); + 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 > & stray_cunits, const std::string & cond); diff --git a/re2c/test/condition_02.cg.c b/re2c/test/condition_02.cg.c index f96e8f5a..2babe704 100644 --- a/re2c/test/condition_02.cg.c +++ b/re2c/test/condition_02.cg.c @@ -1,4 +1,5 @@ re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string] +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] 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] /* Generated by re2c */ diff --git a/re2c/test/condition_03.cg.c b/re2c/test/condition_03.cg.c index ab76e9f0..4a72336f 100644 --- a/re2c/test/condition_03.cg.c +++ b/re2c/test/condition_03.cg.c @@ -1,4 +1,5 @@ re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string] +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] 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] /* Generated by re2c */ diff --git a/re2c/test/condition_04.cg.c b/re2c/test/condition_04.cg.c index c1fd98c3..7e40ba86 100644 --- a/re2c/test/condition_04.cg.c +++ b/re2c/test/condition_04.cg.c @@ -1,4 +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: 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] 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] /* Generated by re2c */ #line 1 "condition_04.cg.re" diff --git a/re2c/test/condition_05.cg.c b/re2c/test/condition_05.cg.c index 00ff442c..5865f8ad 100644 --- a/re2c/test/condition_05.cg.c +++ b/re2c/test/condition_05.cg.c @@ -1,3 +1,4 @@ +re2c: warning: line 87: 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_05.cg.re" #include diff --git a/re2c/test/condition_05.cs.c b/re2c/test/condition_05.cs.c index 0eb81c48..52387f51 100644 --- a/re2c/test/condition_05.cs.c +++ b/re2c/test/condition_05.cs.c @@ -1,3 +1,4 @@ +re2c: warning: line 87: 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_05.cs.re" #include diff --git a/re2c/test/condition_11.cg.c b/re2c/test/condition_11.cg.c index 84f4e1c8..94bf2b98 100644 --- a/re2c/test/condition_11.cg.c +++ b/re2c/test/condition_11.cg.c @@ -1,4 +1,5 @@ re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string] +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] 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] /* Generated by re2c */ diff --git a/re2c/test/condition_13.cg.c b/re2c/test/condition_13.cg.c index f456b226..dc4a3e9d 100644 --- a/re2c/test/condition_13.cg.c +++ b/re2c/test/condition_13.cg.c @@ -1,4 +1,5 @@ re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string] +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] 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] /* Generated by re2c */ diff --git a/re2c/test/condtype.c.c b/re2c/test/condtype.c.c new file mode 100644 index 00000000..bdd426f4 --- /dev/null +++ b/re2c/test/condtype.c.c @@ -0,0 +1,48 @@ +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] +/* Generated by re2c */ +#line 1 "condtype.c.re" +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 10 "" +{ + unsigned char yych; + switch (YYGETCONDITION()) { + case yyca: goto yyc_a; + case yycb: goto yyc_b; + } +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + switch (yych) { + case 'a': goto yy4; + default: goto yy3; + } +yy3: +yy4: + ++YYCURSOR; +#line 9 "condtype.c.re" + {} +#line 29 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + switch (yych) { + case 'b': goto yy9; + default: goto yy8; + } +yy8: +yy9: + ++YYCURSOR; +#line 10 "condtype.c.re" + {} +#line 42 "" +} +#line 11 "condtype.c.re" + + return 0; +} diff --git a/re2c/test/condtype.c.re b/re2c/test/condtype.c.re new file mode 100644 index 00000000..2bad7760 --- /dev/null +++ b/re2c/test/condtype.c.re @@ -0,0 +1,13 @@ +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype.cg.c b/re2c/test/condtype.cg.c new file mode 100644 index 00000000..cd6ce5de --- /dev/null +++ b/re2c/test/condtype.cg.c @@ -0,0 +1,42 @@ +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: 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] +re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default] +/* Generated by re2c */ +#line 1 "condtype.cg.re" +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 10 "" +{ + unsigned char yych; + static void *yyctable[2] = { + &&yyc_a, + &&yyc_b, + }; + goto *yyctable[YYGETCONDITION()]; +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 9 "condtype.cg.re" + {} +#line 26 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + if (yych == 'b') goto yy9; +yy9: + ++YYCURSOR; +#line 10 "condtype.cg.re" + {} +#line 35 "" +} +#line 11 "condtype.cg.re" + + return 0; +} diff --git a/re2c/test/condtype.cg.re b/re2c/test/condtype.cg.re new file mode 100644 index 00000000..2bad7760 --- /dev/null +++ b/re2c/test/condtype.cg.re @@ -0,0 +1,13 @@ +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype.cgtcondtype.cg.h.c b/re2c/test/condtype.cgtcondtype.cg.h.c new file mode 100644 index 00000000..8827a85b --- /dev/null +++ b/re2c/test/condtype.cgtcondtype.cg.h.c @@ -0,0 +1,41 @@ +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] +/* Generated by re2c */ +#line 1 "condtype.cgtcondtype.cg.h.re" +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 10 "" +{ + unsigned char yych; + static void *yyctable[2] = { + &&yyc_a, + &&yyc_b, + }; + goto *yyctable[YYGETCONDITION()]; +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 9 "condtype.cgtcondtype.cg.h.re" + {} +#line 26 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + if (yych == 'b') goto yy9; +yy9: + ++YYCURSOR; +#line 10 "condtype.cgtcondtype.cg.h.re" + {} +#line 35 "" +} +#line 11 "condtype.cgtcondtype.cg.h.re" + + return 0; +} diff --git a/re2c/test/condtype.cgtcondtype.cg.h.h b/re2c/test/condtype.cgtcondtype.cg.h.h new file mode 100644 index 00000000..2968e382 --- /dev/null +++ b/re2c/test/condtype.cgtcondtype.cg.h.h @@ -0,0 +1,7 @@ +/* Generated by re2c */ +#line 3 "condtype.cg.h" + +enum YYCONDTYPE { + yyca, + yycb, +}; diff --git a/re2c/test/condtype.cgtcondtype.cg.h.re b/re2c/test/condtype.cgtcondtype.cg.h.re new file mode 100644 index 00000000..2bad7760 --- /dev/null +++ b/re2c/test/condtype.cgtcondtype.cg.h.re @@ -0,0 +1,13 @@ +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype.cs.c b/re2c/test/condtype.cs.c new file mode 100644 index 00000000..8aebde13 --- /dev/null +++ b/re2c/test/condtype.cs.c @@ -0,0 +1,42 @@ +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: 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] +re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default] +/* Generated by re2c */ +#line 1 "condtype.cs.re" +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 10 "" +{ + unsigned char yych; + if (YYGETCONDITION() < 1) { + goto yyc_a; + } else { + goto yyc_b; + } +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 9 "condtype.cs.re" + {} +#line 26 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + if (yych == 'b') goto yy9; +yy9: + ++YYCURSOR; +#line 10 "condtype.cs.re" + {} +#line 35 "" +} +#line 11 "condtype.cs.re" + + return 0; +} diff --git a/re2c/test/condtype.cs.re b/re2c/test/condtype.cs.re new file mode 100644 index 00000000..2bad7760 --- /dev/null +++ b/re2c/test/condtype.cs.re @@ -0,0 +1,13 @@ +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype.cstcondtype.cs.h.c b/re2c/test/condtype.cstcondtype.cs.h.c new file mode 100644 index 00000000..4d91ae24 --- /dev/null +++ b/re2c/test/condtype.cstcondtype.cs.h.c @@ -0,0 +1,41 @@ +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] +/* Generated by re2c */ +#line 1 "condtype.cstcondtype.cs.h.re" +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 10 "" +{ + unsigned char yych; + if (YYGETCONDITION() < 1) { + goto yyc_a; + } else { + goto yyc_b; + } +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 9 "condtype.cstcondtype.cs.h.re" + {} +#line 26 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + if (yych == 'b') goto yy9; +yy9: + ++YYCURSOR; +#line 10 "condtype.cstcondtype.cs.h.re" + {} +#line 35 "" +} +#line 11 "condtype.cstcondtype.cs.h.re" + + return 0; +} diff --git a/re2c/test/condtype.cstcondtype.cs.h.h b/re2c/test/condtype.cstcondtype.cs.h.h new file mode 100644 index 00000000..200c172c --- /dev/null +++ b/re2c/test/condtype.cstcondtype.cs.h.h @@ -0,0 +1,7 @@ +/* Generated by re2c */ +#line 3 "condtype.cs.h" + +enum YYCONDTYPE { + yyca, + yycb, +}; diff --git a/re2c/test/condtype.cstcondtype.cs.h.re b/re2c/test/condtype.cstcondtype.cs.h.re new file mode 100644 index 00000000..2bad7760 --- /dev/null +++ b/re2c/test/condtype.cstcondtype.cs.h.re @@ -0,0 +1,13 @@ +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype.ctcondtype.c.h.c b/re2c/test/condtype.ctcondtype.c.h.c new file mode 100644 index 00000000..b787389f --- /dev/null +++ b/re2c/test/condtype.ctcondtype.c.h.c @@ -0,0 +1,48 @@ +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] +/* Generated by re2c */ +#line 1 "condtype.ctcondtype.c.h.re" +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 10 "" +{ + unsigned char yych; + switch (YYGETCONDITION()) { + case yyca: goto yyc_a; + case yycb: goto yyc_b; + } +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + switch (yych) { + case 'a': goto yy4; + default: goto yy3; + } +yy3: +yy4: + ++YYCURSOR; +#line 9 "condtype.ctcondtype.c.h.re" + {} +#line 29 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + switch (yych) { + case 'b': goto yy9; + default: goto yy8; + } +yy8: +yy9: + ++YYCURSOR; +#line 10 "condtype.ctcondtype.c.h.re" + {} +#line 42 "" +} +#line 11 "condtype.ctcondtype.c.h.re" + + return 0; +} diff --git a/re2c/test/condtype.ctcondtype.c.h.h b/re2c/test/condtype.ctcondtype.c.h.h new file mode 100644 index 00000000..691d86d2 --- /dev/null +++ b/re2c/test/condtype.ctcondtype.c.h.h @@ -0,0 +1,7 @@ +/* Generated by re2c */ +#line 3 "condtype.c.h" + +enum YYCONDTYPE { + yyca, + yycb, +}; diff --git a/re2c/test/condtype.ctcondtype.c.h.re b/re2c/test/condtype.ctcondtype.c.h.re new file mode 100644 index 00000000..2bad7760 --- /dev/null +++ b/re2c/test/condtype.ctcondtype.c.h.re @@ -0,0 +1,13 @@ +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype_decl.c.c b/re2c/test/condtype_decl.c.c new file mode 100644 index 00000000..792e396b --- /dev/null +++ b/re2c/test/condtype_decl.c.c @@ -0,0 +1,57 @@ +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] +/* Generated by re2c */ +#line 1 "condtype_decl.c.re" +#line 4 "" + +enum YYCONDTYPE { + yyca, + yycb, +}; + +#line 1 "condtype_decl.c.re" + +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 19 "" +{ + unsigned char yych; + switch (YYGETCONDITION()) { + case yyca: goto yyc_a; + case yycb: goto yyc_b; + } +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + switch (yych) { + case 'a': goto yy4; + default: goto yy3; + } +yy3: +yy4: + ++YYCURSOR; +#line 11 "condtype_decl.c.re" + {} +#line 38 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + switch (yych) { + case 'b': goto yy9; + default: goto yy8; + } +yy8: +yy9: + ++YYCURSOR; +#line 12 "condtype_decl.c.re" + {} +#line 51 "" +} +#line 13 "condtype_decl.c.re" + + return 0; +} diff --git a/re2c/test/condtype_decl.c.re b/re2c/test/condtype_decl.c.re new file mode 100644 index 00000000..08f86f3a --- /dev/null +++ b/re2c/test/condtype_decl.c.re @@ -0,0 +1,15 @@ +/*!types:re2c*/ + +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype_decl.cg.c b/re2c/test/condtype_decl.cg.c new file mode 100644 index 00000000..50b45b8f --- /dev/null +++ b/re2c/test/condtype_decl.cg.c @@ -0,0 +1,50 @@ +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] +/* Generated by re2c */ +#line 1 "condtype_decl.cg.re" +#line 4 "" + +enum YYCONDTYPE { + yyca, + yycb, +}; + +#line 1 "condtype_decl.cg.re" + +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 19 "" +{ + unsigned char yych; + static void *yyctable[2] = { + &&yyc_a, + &&yyc_b, + }; + goto *yyctable[YYGETCONDITION()]; +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 11 "condtype_decl.cg.re" + {} +#line 35 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + if (yych == 'b') goto yy9; +yy9: + ++YYCURSOR; +#line 12 "condtype_decl.cg.re" + {} +#line 44 "" +} +#line 13 "condtype_decl.cg.re" + + return 0; +} diff --git a/re2c/test/condtype_decl.cg.re b/re2c/test/condtype_decl.cg.re new file mode 100644 index 00000000..08f86f3a --- /dev/null +++ b/re2c/test/condtype_decl.cg.re @@ -0,0 +1,15 @@ +/*!types:re2c*/ + +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype_decl.cs.c b/re2c/test/condtype_decl.cs.c new file mode 100644 index 00000000..29bac287 --- /dev/null +++ b/re2c/test/condtype_decl.cs.c @@ -0,0 +1,50 @@ +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] +/* Generated by re2c */ +#line 1 "condtype_decl.cs.re" +#line 4 "" + +enum YYCONDTYPE { + yyca, + yycb, +}; + +#line 1 "condtype_decl.cs.re" + +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond + +#line 19 "" +{ + unsigned char yych; + if (YYGETCONDITION() < 1) { + goto yyc_a; + } else { + goto yyc_b; + } +/* *********************************** */ +yyc_a: + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 11 "condtype_decl.cs.re" + {} +#line 35 "" +/* *********************************** */ +yyc_b: + yych = *YYCURSOR; + if (yych == 'b') goto yy9; +yy9: + ++YYCURSOR; +#line 12 "condtype_decl.cs.re" + {} +#line 44 "" +} +#line 13 "condtype_decl.cs.re" + + return 0; +} diff --git a/re2c/test/condtype_decl.cs.re b/re2c/test/condtype_decl.cs.re new file mode 100644 index 00000000..08f86f3a --- /dev/null +++ b/re2c/test/condtype_decl.cs.re @@ -0,0 +1,15 @@ +/*!types:re2c*/ + +int main () +{ + YYCONDTYPE cond; + char * YYCURSOR; +#define YYGETCONDITION() cond +/*!re2c + re2c:yyfill:enable = 0; + re2c:define:YYCTYPE = "unsigned char"; + "a" {} + "b" {} +*/ + return 0; +} diff --git a/re2c/test/condtype_single.c.c b/re2c/test/condtype_single.c.c new file mode 100644 index 00000000..4ac7755e --- /dev/null +++ b/re2c/test/condtype_single.c.c @@ -0,0 +1,27 @@ +re2c: warning: line 3: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default] +/* Generated by re2c */ +#line 1 "condtype_single.c.re" + +#line 5 "" +{ + YYCTYPE yych; + switch (YYGETCONDITION()) { + case yyca: goto yyc_a; + } +/* *********************************** */ +yyc_a: + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case 'a': goto yy4; + default: goto yy3; + } +yy3: +yy4: + ++YYCURSOR; +#line 2 "condtype_single.c.re" + {} +#line 24 "" +} +#line 3 "condtype_single.c.re" + diff --git a/re2c/test/condtype_single.c.re b/re2c/test/condtype_single.c.re new file mode 100644 index 00000000..053c3d09 --- /dev/null +++ b/re2c/test/condtype_single.c.re @@ -0,0 +1,3 @@ +/*!re2c + "a" {} +*/ diff --git a/re2c/test/condtype_single.cg.c b/re2c/test/condtype_single.cg.c new file mode 100644 index 00000000..75fbdfa5 --- /dev/null +++ b/re2c/test/condtype_single.cg.c @@ -0,0 +1,25 @@ +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: 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" + +#line 5 "" +{ + YYCTYPE yych; + static void *yyctable[1] = { + &&yyc_a, + }; + goto *yyctable[YYGETCONDITION()]; +/* *********************************** */ +yyc_a: + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 2 "condtype_single.cg.re" + {} +#line 21 "" +} +#line 3 "condtype_single.cg.re" + diff --git a/re2c/test/condtype_single.cg.re b/re2c/test/condtype_single.cg.re new file mode 100644 index 00000000..053c3d09 --- /dev/null +++ b/re2c/test/condtype_single.cg.re @@ -0,0 +1,3 @@ +/*!re2c + "a" {} +*/ diff --git a/re2c/test/condtype_single.cs.c b/re2c/test/condtype_single.cs.c new file mode 100644 index 00000000..e8499e22 --- /dev/null +++ b/re2c/test/condtype_single.cs.c @@ -0,0 +1,21 @@ +re2c: warning: line 3: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default] +/* Generated by re2c */ +#line 1 "condtype_single.cs.re" + +#line 5 "" +{ + YYCTYPE yych; + goto yyc_a; +/* *********************************** */ +yyc_a: + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych == 'a') goto yy4; +yy4: + ++YYCURSOR; +#line 2 "condtype_single.cs.re" + {} +#line 18 "" +} +#line 3 "condtype_single.cs.re" + diff --git a/re2c/test/condtype_single.cs.re b/re2c/test/condtype_single.cs.re new file mode 100644 index 00000000..053c3d09 --- /dev/null +++ b/re2c/test/condtype_single.cs.re @@ -0,0 +1,3 @@ +/*!re2c + "a" {} +*/ diff --git a/re2c/test/php20140822_zend_language_scanner.igcFd.c b/re2c/test/php20140822_zend_language_scanner.igcFd.c index c61b3c41..65c5e86e 100644 --- a/re2c/test/php20140822_zend_language_scanner.igcFd.c +++ b/re2c/test/php20140822_zend_language_scanner.igcFd.c @@ -1,4 +1,5 @@ re2c: warning: line 1016: column 12: escape has no effect: '\[' [-Wuseless-escape] +re2c: warning: line 2441: 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 */ /* +----------------------------------------------------------------------+ diff --git a/re2c/test/php20140822_zend_language_scanner_crlf.igcFd.c b/re2c/test/php20140822_zend_language_scanner_crlf.igcFd.c index 17b7a2f9..bd9301bf 100644 --- a/re2c/test/php20140822_zend_language_scanner_crlf.igcFd.c +++ b/re2c/test/php20140822_zend_language_scanner_crlf.igcFd.c @@ -1,4 +1,5 @@ re2c: warning: line 1016: column 12: escape has no effect: '\[' [-Wuseless-escape] +re2c: warning: line 2441: 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 */ /* +----------------------------------------------------------------------+ diff --git a/re2c/test/php20150211_json_scanner.igc.c b/re2c/test/php20150211_json_scanner.igc.c index aa1765f4..296bac31 100644 --- a/re2c/test/php20150211_json_scanner.igc.c +++ b/re2c/test/php20150211_json_scanner.igc.c @@ -1,3 +1,4 @@ +re2c: warning: line 340: 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 */ /* +----------------------------------------------------------------------+ diff --git a/re2c/test/php20150211_phpdbg_lexer.igcFd.c b/re2c/test/php20150211_phpdbg_lexer.igcFd.c index bac9be34..0911c226 100644 --- a/re2c/test/php20150211_phpdbg_lexer.igcFd.c +++ b/re2c/test/php20150211_phpdbg_lexer.igcFd.c @@ -1,4 +1,5 @@ re2c: warning: line 60: column 20: escape has no effect: '\.' [-Wuseless-escape] +re2c: warning: line 182: 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 */ /* * phpdbg_lexer.l diff --git a/re2c/test/php20150211_zend_ini_scanner.igcFd--case-inverted.c b/re2c/test/php20150211_zend_ini_scanner.igcFd--case-inverted.c index eb04b395..281c2ddb 100644 --- a/re2c/test/php20150211_zend_ini_scanner.igcFd--case-inverted.c +++ b/re2c/test/php20150211_zend_ini_scanner.igcFd--case-inverted.c @@ -2,6 +2,7 @@ re2c: warning: line 384: column 13: escape has no effect: '\.' [-Wuseless-escape re2c: warning: line 384: column 32: escape has no effect: '\.' [-Wuseless-escape] re2c: warning: line 391: column 27: escape has no effect: '\[' [-Wuseless-escape] re2c: warning: line 392: column 11: escape has no effect: '\[' [-Wuseless-escape] +re2c: warning: line 652: 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 */ /* +----------------------------------------------------------------------+ diff --git a/re2c/test/php20150211_zend_ini_scanner_trimmed.icFwb.c b/re2c/test/php20150211_zend_ini_scanner_trimmed.icFwb.c index 8e8e1214..c52580c4 100644 --- a/re2c/test/php20150211_zend_ini_scanner_trimmed.icFwb.c +++ b/re2c/test/php20150211_zend_ini_scanner_trimmed.icFwb.c @@ -2,6 +2,7 @@ re2c: warning: line 4: column 13: escape has no effect: '\.' [-Wuseless-escape] re2c: warning: line 4: column 32: escape has no effect: '\.' [-Wuseless-escape] re2c: warning: line 11: column 27: escape has no effect: '\[' [-Wuseless-escape] re2c: warning: line 12: column 11: escape has no effect: '\[' [-Wuseless-escape] +re2c: warning: line 56: 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 */ { diff --git a/re2c/test/php20150211_zend_language_scanner.igcFd--case-inverted.c b/re2c/test/php20150211_zend_language_scanner.igcFd--case-inverted.c index 1936b8f4..e74de710 100644 --- a/re2c/test/php20150211_zend_language_scanner.igcFd--case-inverted.c +++ b/re2c/test/php20150211_zend_language_scanner.igcFd--case-inverted.c @@ -1,6 +1,7 @@ re2c: warning: line 1095: column 12: escape has no effect: '\[' [-Wuseless-escape] re2c: warning: line 1476: column 19: escape has no effect: '\*' [-Wuseless-escape] re2c: warning: line 1480: column 19: escape has no effect: '\*' [-Wuseless-escape] +re2c: warning: line 2358: 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 */ /* +----------------------------------------------------------------------+ -- 2.40.0