From 3f66fb7bbac4b708f02e8993787eda2e96e44b66 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Wed, 13 Feb 2019 14:33:39 +0000 Subject: [PATCH] Tweaked error messages for misused option arguments, added some tests for them. --- re2c/bootstrap/src/options/parse_opts.cc | 592 +++++++++--------- re2c/src/options/parse_opts.re | 56 +- .../messages/msg_04.--location-format(xxx).c | 1 + .../messages/msg_04.--location-format(xxx).re | 1 + .../messages/msg_05.--dfa-minimization(xxx).c | 1 + .../msg_05.--dfa-minimization(xxx).re | 1 + .../messages/msg_06.--posix-closure(xxx).c | 1 + .../messages/msg_06.--posix-closure(xxx).re | 1 + .../test/messages/msg_07.--empty-class(xxx).c | 1 + .../messages/msg_07.--empty-class(xxx).re | 1 + re2c/test/messages/msg_08.--input(xxx).c | 1 + re2c/test/messages/msg_08.--input(xxx).re | 1 + .../messages/msg_09.--encoding-policy(xxx).c | 1 + .../messages/msg_09.--encoding-policy(xxx).re | 1 + re2c/test/messages/msg_10.--output(-).c | 1 + re2c/test/messages/msg_10.--output(-).re | 1 + re2c/test/messages/msg_11.--type-header(-).c | 1 + re2c/test/messages/msg_11.--type-header(-).re | 1 + 18 files changed, 330 insertions(+), 334 deletions(-) create mode 100644 re2c/test/messages/msg_04.--location-format(xxx).c create mode 100644 re2c/test/messages/msg_04.--location-format(xxx).re create mode 100644 re2c/test/messages/msg_05.--dfa-minimization(xxx).c create mode 100644 re2c/test/messages/msg_05.--dfa-minimization(xxx).re create mode 100644 re2c/test/messages/msg_06.--posix-closure(xxx).c create mode 100644 re2c/test/messages/msg_06.--posix-closure(xxx).re create mode 100644 re2c/test/messages/msg_07.--empty-class(xxx).c create mode 100644 re2c/test/messages/msg_07.--empty-class(xxx).re create mode 100644 re2c/test/messages/msg_08.--input(xxx).c create mode 100644 re2c/test/messages/msg_08.--input(xxx).re create mode 100644 re2c/test/messages/msg_09.--encoding-policy(xxx).c create mode 100644 re2c/test/messages/msg_09.--encoding-policy(xxx).re create mode 100644 re2c/test/messages/msg_10.--output(-).c create mode 100644 re2c/test/messages/msg_10.--output(-).re create mode 100644 re2c/test/messages/msg_11.--type-header(-).c create mode 100644 re2c/test/messages/msg_11.--type-header(-).re diff --git a/re2c/bootstrap/src/options/parse_opts.cc b/re2c/bootstrap/src/options/parse_opts.cc index 6b25ac45..04b8a143 100644 --- a/re2c/bootstrap/src/options/parse_opts.cc +++ b/re2c/bootstrap/src/options/parse_opts.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 1.1.1 on Wed Feb 13 13:22:04 2019 */ +/* Generated by re2c 1.1.1 on Wed Feb 13 14:27:39 2019 */ #line 1 "../src/options/parse_opts.re" #include "src/codegen/input_api.h" #include "src/options/opt.h" @@ -19,25 +19,31 @@ parse_opts_t parse_opts(char **argv, conopt_t &globopts, Opt &opts, Msg &msg) { #define YYCTYPE unsigned char -#define NEXT_ARG(option, label) \ - do { \ - if (next (YYCURSOR, argv)) goto label; \ - else { error_arg(option); return EXIT_FAIL; } \ - } while(0) +#define NEXT_ARG(option, label) do { \ + if (next (YYCURSOR, argv)) goto label; \ + else { error_arg(option); return EXIT_FAIL; } \ +} while(0) -#define ERROR(msg, arg) \ - do { error(msg, arg); return EXIT_FAIL; } while(0) +#define ERROR(msg, arg) do { \ + error(msg, arg); \ + return EXIT_FAIL; \ +} while(0) + +#define ERRARG(opt, exp, arg) do { \ + error("bad argument '%s' to option %s <%s>", arg, opt, exp); \ + return EXIT_FAIL; \ +} while(0) char *YYCURSOR, *YYMARKER; Warn::option_t option; -#line 38 "../src/options/parse_opts.re" +#line 44 "../src/options/parse_opts.re" opt: if (!next (YYCURSOR, argv)) goto end; -#line 41 "src/options/parse_opts.cc" +#line 47 "src/options/parse_opts.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -81,9 +87,9 @@ opt: goto yy4; yy2: ++YYCURSOR; -#line 43 "../src/options/parse_opts.re" +#line 49 "../src/options/parse_opts.re" { ERROR("bad option: %s", *argv); } -#line 87 "src/options/parse_opts.cc" +#line 93 "src/options/parse_opts.cc" yy4: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { @@ -98,25 +104,25 @@ yy6: } else { if (yych == 'W') goto yy14; } -#line 57 "../src/options/parse_opts.re" +#line 63 "../src/options/parse_opts.re" { goto opt_short; } -#line 104 "src/options/parse_opts.cc" +#line 110 "src/options/parse_opts.cc" yy8: ++YYCURSOR; -#line 55 "../src/options/parse_opts.re" +#line 61 "../src/options/parse_opts.re" { if (!opts.source (*argv)) return EXIT_FAIL; goto opt; } -#line 109 "src/options/parse_opts.cc" +#line 115 "src/options/parse_opts.cc" yy10: ++YYCURSOR; -#line 54 "../src/options/parse_opts.re" +#line 60 "../src/options/parse_opts.re" { if (!opts.source ("")) return EXIT_FAIL; goto opt; } -#line 114 "src/options/parse_opts.cc" +#line 120 "src/options/parse_opts.cc" yy12: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy16; -#line 58 "../src/options/parse_opts.re" +#line 64 "../src/options/parse_opts.re" { goto opt_long; } -#line 120 "src/options/parse_opts.cc" +#line 126 "src/options/parse_opts.cc" yy14: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); @@ -127,12 +133,12 @@ yy14: if (yych == 'n') goto yy22; } yy15: -#line 62 "../src/options/parse_opts.re" +#line 68 "../src/options/parse_opts.re" { option = Warn::W; goto opt_warn; } -#line 133 "src/options/parse_opts.cc" +#line 139 "src/options/parse_opts.cc" yy16: ++YYCURSOR; -#line 45 "../src/options/parse_opts.re" +#line 51 "../src/options/parse_opts.re" { // remaining args are non-options, so they must be input files // re2c expects exactly one input file @@ -141,12 +147,12 @@ yy16: } goto end; } -#line 145 "src/options/parse_opts.cc" +#line 151 "src/options/parse_opts.cc" yy18: ++YYCURSOR; -#line 60 "../src/options/parse_opts.re" +#line 66 "../src/options/parse_opts.re" { msg.warn.set_all (); goto opt; } -#line 150 "src/options/parse_opts.cc" +#line 156 "src/options/parse_opts.cc" yy20: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy23; @@ -178,9 +184,9 @@ yy26: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy29; yy27: -#line 63 "../src/options/parse_opts.re" +#line 69 "../src/options/parse_opts.re" { option = Warn::WNO; goto opt_warn; } -#line 184 "src/options/parse_opts.cc" +#line 190 "src/options/parse_opts.cc" yy28: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy30; @@ -200,14 +206,14 @@ yy31: goto yy21; yy32: ++YYCURSOR; -#line 61 "../src/options/parse_opts.re" +#line 67 "../src/options/parse_opts.re" { msg.warn.set_all_error (); goto opt; } -#line 206 "src/options/parse_opts.cc" +#line 212 "src/options/parse_opts.cc" yy34: ++YYCURSOR; -#line 64 "../src/options/parse_opts.re" +#line 70 "../src/options/parse_opts.re" { option = Warn::WERROR; goto opt_warn; } -#line 211 "src/options/parse_opts.cc" +#line 217 "src/options/parse_opts.cc" yy36: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'o') goto yy21; @@ -216,16 +222,16 @@ yy36: yych = (YYCTYPE)*++YYCURSOR; if (yych != '-') goto yy21; ++YYCURSOR; -#line 65 "../src/options/parse_opts.re" +#line 71 "../src/options/parse_opts.re" { option = Warn::WNOERROR; goto opt_warn; } -#line 222 "src/options/parse_opts.cc" +#line 228 "src/options/parse_opts.cc" } -#line 66 "../src/options/parse_opts.re" +#line 72 "../src/options/parse_opts.re" opt_warn: -#line 229 "src/options/parse_opts.cc" +#line 235 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -241,9 +247,9 @@ opt_warn: yy43: ++YYCURSOR; yy44: -#line 70 "../src/options/parse_opts.re" +#line 76 "../src/options/parse_opts.re" { ERROR("bad warning: %s", *argv); } -#line 247 "src/options/parse_opts.cc" +#line 253 "src/options/parse_opts.cc" yy45: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy51; @@ -670,9 +676,9 @@ yy150: goto yy52; yy151: ++YYCURSOR; -#line 76 "../src/options/parse_opts.re" +#line 82 "../src/options/parse_opts.re" { msg.warn.set (Warn::SWAPPED_RANGE, option); goto opt; } -#line 676 "src/options/parse_opts.cc" +#line 682 "src/options/parse_opts.cc" yy153: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy160; @@ -711,14 +717,14 @@ yy161: goto yy52; yy162: ++YYCURSOR; -#line 79 "../src/options/parse_opts.re" +#line 85 "../src/options/parse_opts.re" { msg.warn.set (Warn::USELESS_ESCAPE, option); goto opt; } -#line 717 "src/options/parse_opts.cc" +#line 723 "src/options/parse_opts.cc" yy164: ++YYCURSOR; -#line 72 "../src/options/parse_opts.re" +#line 78 "../src/options/parse_opts.re" { msg.warn.set (Warn::CONDITION_ORDER, option); goto opt; } -#line 722 "src/options/parse_opts.cc" +#line 728 "src/options/parse_opts.cc" yy166: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy171; @@ -777,18 +783,18 @@ yy179: goto yy52; yy180: ++YYCURSOR; -#line 78 "../src/options/parse_opts.re" +#line 84 "../src/options/parse_opts.re" { msg.warn.set (Warn::UNREACHABLE_RULES, option); goto opt; } -#line 783 "src/options/parse_opts.cc" +#line 789 "src/options/parse_opts.cc" yy182: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy187; goto yy52; yy183: ++YYCURSOR; -#line 74 "../src/options/parse_opts.re" +#line 80 "../src/options/parse_opts.re" { msg.warn.set (Warn::MATCH_EMPTY_STRING, option); goto opt; } -#line 792 "src/options/parse_opts.cc" +#line 798 "src/options/parse_opts.cc" yy185: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy188; @@ -823,28 +829,28 @@ yy192: goto yy52; yy193: ++YYCURSOR; -#line 73 "../src/options/parse_opts.re" +#line 79 "../src/options/parse_opts.re" { msg.warn.set (Warn::EMPTY_CHARACTER_CLASS, option); goto opt; } -#line 829 "src/options/parse_opts.cc" +#line 835 "src/options/parse_opts.cc" yy195: ++YYCURSOR; -#line 75 "../src/options/parse_opts.re" +#line 81 "../src/options/parse_opts.re" { msg.warn.set (Warn::NONDETERMINISTIC_TAGS, option); goto opt; } -#line 834 "src/options/parse_opts.cc" +#line 840 "src/options/parse_opts.cc" yy197: yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy52; ++YYCURSOR; -#line 77 "../src/options/parse_opts.re" +#line 83 "../src/options/parse_opts.re" { msg.warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; } -#line 841 "src/options/parse_opts.cc" +#line 847 "src/options/parse_opts.cc" } -#line 80 "../src/options/parse_opts.re" +#line 86 "../src/options/parse_opts.re" opt_short: -#line 848 "src/options/parse_opts.cc" +#line 854 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -932,168 +938,168 @@ opt_short: } } ++YYCURSOR; -#line 86 "../src/options/parse_opts.re" +#line 92 "../src/options/parse_opts.re" { goto opt; } -#line 938 "src/options/parse_opts.cc" +#line 944 "src/options/parse_opts.cc" yy204: ++YYCURSOR; -#line 84 "../src/options/parse_opts.re" +#line 90 "../src/options/parse_opts.re" { ERROR("bad short option: %s", *argv); } -#line 943 "src/options/parse_opts.cc" +#line 949 "src/options/parse_opts.cc" yy206: ++YYCURSOR; -#line 125 "../src/options/parse_opts.re" +#line 131 "../src/options/parse_opts.re" { goto opt_short; } -#line 948 "src/options/parse_opts.cc" +#line 954 "src/options/parse_opts.cc" yy208: ++YYCURSOR; -#line 108 "../src/options/parse_opts.re" +#line 114 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UTF8); goto opt_short; } -#line 953 "src/options/parse_opts.cc" +#line 959 "src/options/parse_opts.cc" yy210: ++YYCURSOR; -#line 87 "../src/options/parse_opts.re" +#line 93 "../src/options/parse_opts.re" { usage (); return EXIT_OK; } -#line 958 "src/options/parse_opts.cc" +#line 964 "src/options/parse_opts.cc" yy212: ++YYCURSOR; -#line 92 "../src/options/parse_opts.re" +#line 98 "../src/options/parse_opts.re" { globopts.target = TARGET_DOT; goto opt_short; } -#line 963 "src/options/parse_opts.cc" +#line 969 "src/options/parse_opts.cc" yy214: ++YYCURSOR; -#line 94 "../src/options/parse_opts.re" +#line 100 "../src/options/parse_opts.re" { globopts.FFlag = true; goto opt_short; } -#line 968 "src/options/parse_opts.cc" +#line 974 "src/options/parse_opts.cc" yy216: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy256; -#line 117 "../src/options/parse_opts.re" +#line 123 "../src/options/parse_opts.re" { *argv = YYCURSOR; goto opt_incpath; } -#line 974 "src/options/parse_opts.cc" +#line 980 "src/options/parse_opts.cc" yy218: ++YYCURSOR; -#line 110 "../src/options/parse_opts.re" +#line 116 "../src/options/parse_opts.re" { opts.set_posix_syntax(true); opts.set_posix_semantics(true); goto opt_short; } -#line 983 "src/options/parse_opts.cc" +#line 989 "src/options/parse_opts.cc" yy220: ++YYCURSOR; -#line 96 "../src/options/parse_opts.re" +#line 102 "../src/options/parse_opts.re" { globopts.target = TARGET_SKELETON; goto opt_short; } -#line 988 "src/options/parse_opts.cc" +#line 994 "src/options/parse_opts.cc" yy222: ++YYCURSOR; -#line 103 "../src/options/parse_opts.re" +#line 109 "../src/options/parse_opts.re" { opts.set_tags(true); goto opt_short; } -#line 993 "src/options/parse_opts.cc" +#line 999 "src/options/parse_opts.cc" yy224: ++YYCURSOR; -#line 89 "../src/options/parse_opts.re" +#line 95 "../src/options/parse_opts.re" { vernum (); return EXIT_OK; } -#line 998 "src/options/parse_opts.cc" +#line 1004 "src/options/parse_opts.cc" yy226: ++YYCURSOR; -#line 98 "../src/options/parse_opts.re" +#line 104 "../src/options/parse_opts.re" { opts.set_bFlag(true); goto opt_short; } -#line 1003 "src/options/parse_opts.cc" +#line 1009 "src/options/parse_opts.cc" yy228: ++YYCURSOR; -#line 91 "../src/options/parse_opts.re" +#line 97 "../src/options/parse_opts.re" { globopts.cFlag = true; goto opt_short; } -#line 1008 "src/options/parse_opts.cc" +#line 1014 "src/options/parse_opts.cc" yy230: ++YYCURSOR; -#line 99 "../src/options/parse_opts.re" +#line 105 "../src/options/parse_opts.re" { opts.set_dFlag(true); goto opt_short; } -#line 1013 "src/options/parse_opts.cc" +#line 1019 "src/options/parse_opts.cc" yy232: ++YYCURSOR; -#line 104 "../src/options/parse_opts.re" +#line 110 "../src/options/parse_opts.re" { opts.set_encoding(Enc::EBCDIC); goto opt_short; } -#line 1018 "src/options/parse_opts.cc" +#line 1024 "src/options/parse_opts.cc" yy234: ++YYCURSOR; -#line 93 "../src/options/parse_opts.re" +#line 99 "../src/options/parse_opts.re" { globopts.fFlag = true; goto opt_short; } -#line 1023 "src/options/parse_opts.cc" +#line 1029 "src/options/parse_opts.cc" yy236: ++YYCURSOR; -#line 100 "../src/options/parse_opts.re" +#line 106 "../src/options/parse_opts.re" { opts.set_gFlag(true); goto opt_short; } -#line 1028 "src/options/parse_opts.cc" +#line 1034 "src/options/parse_opts.cc" yy238: ++YYCURSOR; -#line 101 "../src/options/parse_opts.re" +#line 107 "../src/options/parse_opts.re" { opts.set_iFlag(true); goto opt_short; } -#line 1033 "src/options/parse_opts.cc" +#line 1039 "src/options/parse_opts.cc" yy240: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy258; -#line 120 "../src/options/parse_opts.re" +#line 126 "../src/options/parse_opts.re" { *argv = YYCURSOR; goto opt_output; } -#line 1039 "src/options/parse_opts.cc" +#line 1045 "src/options/parse_opts.cc" yy242: ++YYCURSOR; -#line 95 "../src/options/parse_opts.re" +#line 101 "../src/options/parse_opts.re" { globopts.rFlag = true; goto opt_short; } -#line 1044 "src/options/parse_opts.cc" +#line 1050 "src/options/parse_opts.cc" yy244: ++YYCURSOR; -#line 102 "../src/options/parse_opts.re" +#line 108 "../src/options/parse_opts.re" { opts.set_sFlag(true); goto opt_short; } -#line 1049 "src/options/parse_opts.cc" +#line 1055 "src/options/parse_opts.cc" yy246: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy260; -#line 123 "../src/options/parse_opts.re" +#line 129 "../src/options/parse_opts.re" { *argv = YYCURSOR; goto opt_header; } -#line 1055 "src/options/parse_opts.cc" +#line 1061 "src/options/parse_opts.cc" yy248: ++YYCURSOR; -#line 105 "../src/options/parse_opts.re" +#line 111 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UTF32); goto opt_short; } -#line 1060 "src/options/parse_opts.cc" +#line 1066 "src/options/parse_opts.cc" yy250: ++YYCURSOR; -#line 88 "../src/options/parse_opts.re" +#line 94 "../src/options/parse_opts.re" { version (); return EXIT_OK; } -#line 1065 "src/options/parse_opts.cc" +#line 1071 "src/options/parse_opts.cc" yy252: ++YYCURSOR; -#line 106 "../src/options/parse_opts.re" +#line 112 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UCS2); goto opt_short; } -#line 1070 "src/options/parse_opts.cc" +#line 1076 "src/options/parse_opts.cc" yy254: ++YYCURSOR; -#line 107 "../src/options/parse_opts.re" +#line 113 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UTF16); goto opt_short; } -#line 1075 "src/options/parse_opts.cc" +#line 1081 "src/options/parse_opts.cc" yy256: ++YYCURSOR; -#line 116 "../src/options/parse_opts.re" +#line 122 "../src/options/parse_opts.re" { NEXT_ARG("-I", opt_incpath); } -#line 1080 "src/options/parse_opts.cc" +#line 1086 "src/options/parse_opts.cc" yy258: ++YYCURSOR; -#line 119 "../src/options/parse_opts.re" +#line 125 "../src/options/parse_opts.re" { NEXT_ARG("-o, --output", opt_output); } -#line 1085 "src/options/parse_opts.cc" +#line 1091 "src/options/parse_opts.cc" yy260: ++YYCURSOR; -#line 122 "../src/options/parse_opts.re" +#line 128 "../src/options/parse_opts.re" { NEXT_ARG("-t, --type-header", opt_header); } -#line 1090 "src/options/parse_opts.cc" +#line 1096 "src/options/parse_opts.cc" } -#line 126 "../src/options/parse_opts.re" +#line 132 "../src/options/parse_opts.re" opt_long: -#line 1097 "src/options/parse_opts.cc" +#line 1103 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -1120,9 +1126,9 @@ opt_long: yy264: ++YYCURSOR; yy265: -#line 130 "../src/options/parse_opts.re" +#line 136 "../src/options/parse_opts.re" { ERROR("bad long option: %s", *argv); } -#line 1126 "src/options/parse_opts.cc" +#line 1132 "src/options/parse_opts.cc" yy266: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'i') goto yy283; @@ -1498,9 +1504,9 @@ yy350: goto yy284; yy351: ++YYCURSOR; -#line 153 "../src/options/parse_opts.re" +#line 159 "../src/options/parse_opts.re" { opts.set_encoding(Enc::EBCDIC); goto opt; } -#line 1504 "src/options/parse_opts.cc" +#line 1510 "src/options/parse_opts.cc" yy353: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy388; @@ -1666,9 +1672,9 @@ yy391: goto yy284; yy392: ++YYCURSOR; -#line 132 "../src/options/parse_opts.re" +#line 138 "../src/options/parse_opts.re" { usage (); return EXIT_OK; } -#line 1672 "src/options/parse_opts.cc" +#line 1678 "src/options/parse_opts.cc" yy394: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy434; @@ -1731,9 +1737,9 @@ yy408: goto yy284; yy409: ++YYCURSOR; -#line 152 "../src/options/parse_opts.re" +#line 158 "../src/options/parse_opts.re" { opts.set_tags (true); goto opt; } -#line 1737 "src/options/parse_opts.cc" +#line 1743 "src/options/parse_opts.cc" yy411: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy450; @@ -1829,9 +1835,9 @@ yy433: goto yy284; yy434: ++YYCURSOR; -#line 168 "../src/options/parse_opts.re" +#line 174 "../src/options/parse_opts.re" { NEXT_ARG("--input", opt_input); } -#line 1835 "src/options/parse_opts.cc" +#line 1841 "src/options/parse_opts.cc" yy436: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy475; @@ -1902,9 +1908,9 @@ yy452: goto yy284; yy453: ++YYCURSOR; -#line 157 "../src/options/parse_opts.re" +#line 163 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UTF8); goto opt; } -#line 1908 "src/options/parse_opts.cc" +#line 1914 "src/options/parse_opts.cc" yy455: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy494; @@ -2016,9 +2022,9 @@ yy481: goto yy284; yy482: ++YYCURSOR; -#line 165 "../src/options/parse_opts.re" +#line 171 "../src/options/parse_opts.re" { NEXT_ARG("-o, --output", opt_output); } -#line 2022 "src/options/parse_opts.cc" +#line 2028 "src/options/parse_opts.cc" yy484: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy523; @@ -2054,14 +2060,14 @@ yy491: goto yy284; yy492: ++YYCURSOR; -#line 156 "../src/options/parse_opts.re" +#line 162 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UTF16); goto opt; } -#line 2060 "src/options/parse_opts.cc" +#line 2066 "src/options/parse_opts.cc" yy494: ++YYCURSOR; -#line 134 "../src/options/parse_opts.re" +#line 140 "../src/options/parse_opts.re" { vernum (); return EXIT_OK; } -#line 2065 "src/options/parse_opts.cc" +#line 2071 "src/options/parse_opts.cc" yy496: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy533; @@ -2204,14 +2210,14 @@ yy530: goto yy284; yy531: ++YYCURSOR; -#line 154 "../src/options/parse_opts.re" +#line 160 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UTF32); goto opt; } -#line 2210 "src/options/parse_opts.cc" +#line 2216 "src/options/parse_opts.cc" yy533: ++YYCURSOR; -#line 133 "../src/options/parse_opts.re" +#line 139 "../src/options/parse_opts.re" { version (); return EXIT_OK; } -#line 2215 "src/options/parse_opts.cc" +#line 2221 "src/options/parse_opts.cc" yy535: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy573; @@ -2250,9 +2256,9 @@ yy543: goto yy284; yy544: ++YYCURSOR; -#line 188 "../src/options/parse_opts.re" +#line 194 "../src/options/parse_opts.re" { globopts.dump_cfg = true; goto opt; } -#line 2256 "src/options/parse_opts.cc" +#line 2262 "src/options/parse_opts.cc" yy546: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy583; @@ -2272,18 +2278,18 @@ yy548: goto yy284; yy549: ++YYCURSOR; -#line 182 "../src/options/parse_opts.re" +#line 188 "../src/options/parse_opts.re" { globopts.dump_nfa = true; goto opt; } -#line 2278 "src/options/parse_opts.cc" +#line 2284 "src/options/parse_opts.cc" yy551: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy589; goto yy284; yy552: ++YYCURSOR; -#line 137 "../src/options/parse_opts.re" +#line 143 "../src/options/parse_opts.re" { globopts.target = TARGET_DOT; goto opt; } -#line 2287 "src/options/parse_opts.cc" +#line 2293 "src/options/parse_opts.cc" yy554: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy590; @@ -2334,18 +2340,18 @@ yy565: goto yy284; yy566: ++YYCURSOR; -#line 140 "../src/options/parse_opts.re" +#line 146 "../src/options/parse_opts.re" { globopts.rFlag = true; goto opt; } -#line 2340 "src/options/parse_opts.cc" +#line 2346 "src/options/parse_opts.cc" yy568: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy602; goto yy284; yy569: ++YYCURSOR; -#line 143 "../src/options/parse_opts.re" +#line 149 "../src/options/parse_opts.re" { globopts.target = TARGET_SKELETON; goto opt; } -#line 2349 "src/options/parse_opts.cc" +#line 2355 "src/options/parse_opts.cc" yy571: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy603; @@ -2388,9 +2394,9 @@ yy580: goto yy284; yy581: ++YYCURSOR; -#line 187 "../src/options/parse_opts.re" +#line 193 "../src/options/parse_opts.re" { globopts.dump_adfa = true; goto opt; } -#line 2394 "src/options/parse_opts.cc" +#line 2400 "src/options/parse_opts.cc" yy583: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy614; @@ -2501,9 +2507,9 @@ yy609: goto yy284; yy610: ++YYCURSOR; -#line 136 "../src/options/parse_opts.re" +#line 142 "../src/options/parse_opts.re" { globopts.cFlag = true; goto opt; } -#line 2507 "src/options/parse_opts.cc" +#line 2513 "src/options/parse_opts.cc" yy612: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy646; @@ -2538,9 +2544,9 @@ yy619: goto yy284; yy620: ++YYCURSOR; -#line 179 "../src/options/parse_opts.re" +#line 185 "../src/options/parse_opts.re" { globopts.eager_skip = true; goto opt; } -#line 2544 "src/options/parse_opts.cc" +#line 2550 "src/options/parse_opts.cc" yy622: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy655; @@ -2559,9 +2565,9 @@ yy625: goto yy284; yy626: ++YYCURSOR; -#line 149 "../src/options/parse_opts.re" +#line 155 "../src/options/parse_opts.re" { opts.set_sFlag (true); goto opt; } -#line 2565 "src/options/parse_opts.cc" +#line 2571 "src/options/parse_opts.cc" yy628: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy661; @@ -2580,9 +2586,9 @@ yy631: goto yy284; yy632: ++YYCURSOR; -#line 142 "../src/options/parse_opts.re" +#line 148 "../src/options/parse_opts.re" { globopts.version = false; goto opt; } -#line 2586 "src/options/parse_opts.cc" +#line 2592 "src/options/parse_opts.cc" yy634: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy665; @@ -2605,14 +2611,14 @@ yy638: goto yy284; yy639: ++YYCURSOR; -#line 155 "../src/options/parse_opts.re" +#line 161 "../src/options/parse_opts.re" { opts.set_encoding(Enc::UCS2); goto opt; } -#line 2611 "src/options/parse_opts.cc" +#line 2617 "src/options/parse_opts.cc" yy641: ++YYCURSOR; -#line 145 "../src/options/parse_opts.re" +#line 151 "../src/options/parse_opts.re" { opts.set_bFlag (true); goto opt; } -#line 2616 "src/options/parse_opts.cc" +#line 2622 "src/options/parse_opts.cc" yy643: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy672; @@ -2655,23 +2661,23 @@ yy652: goto yy284; yy653: ++YYCURSOR; -#line 189 "../src/options/parse_opts.re" +#line 195 "../src/options/parse_opts.re" { globopts.dump_interf = true; goto opt; } -#line 2661 "src/options/parse_opts.cc" +#line 2667 "src/options/parse_opts.cc" yy655: ++YYCURSOR; -#line 169 "../src/options/parse_opts.re" +#line 175 "../src/options/parse_opts.re" { NEXT_ARG("--empty-class", opt_empty_class); } -#line 2666 "src/options/parse_opts.cc" +#line 2672 "src/options/parse_opts.cc" yy657: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy686; goto yy284; yy658: ++YYCURSOR; -#line 139 "../src/options/parse_opts.re" +#line 145 "../src/options/parse_opts.re" { globopts.FFlag = true; goto opt; } -#line 2675 "src/options/parse_opts.cc" +#line 2681 "src/options/parse_opts.cc" yy660: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy687; @@ -2702,18 +2708,18 @@ yy666: goto yy284; yy667: ++YYCURSOR; -#line 172 "../src/options/parse_opts.re" +#line 178 "../src/options/parse_opts.re" { goto opt; } -#line 2708 "src/options/parse_opts.cc" +#line 2714 "src/options/parse_opts.cc" yy669: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy695; goto yy284; yy670: ++YYCURSOR; -#line 166 "../src/options/parse_opts.re" +#line 172 "../src/options/parse_opts.re" { NEXT_ARG("-t, --type-header", opt_header); } -#line 2717 "src/options/parse_opts.cc" +#line 2723 "src/options/parse_opts.cc" yy672: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy696; @@ -2728,9 +2734,9 @@ yy674: goto yy284; yy675: ++YYCURSOR; -#line 146 "../src/options/parse_opts.re" +#line 152 "../src/options/parse_opts.re" { opts.set_dFlag (true); goto opt; } -#line 2734 "src/options/parse_opts.cc" +#line 2740 "src/options/parse_opts.cc" yy677: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy700; @@ -2741,19 +2747,19 @@ yy678: goto yy284; yy679: ++YYCURSOR; -#line 184 "../src/options/parse_opts.re" +#line 190 "../src/options/parse_opts.re" { globopts.dump_dfa_det = true; goto opt; } -#line 2747 "src/options/parse_opts.cc" +#line 2753 "src/options/parse_opts.cc" yy681: ++YYCURSOR; -#line 186 "../src/options/parse_opts.re" +#line 192 "../src/options/parse_opts.re" { globopts.dump_dfa_min = true; goto opt; } -#line 2752 "src/options/parse_opts.cc" +#line 2758 "src/options/parse_opts.cc" yy683: ++YYCURSOR; -#line 183 "../src/options/parse_opts.re" +#line 189 "../src/options/parse_opts.re" { globopts.dump_dfa_raw = true; goto opt; } -#line 2757 "src/options/parse_opts.cc" +#line 2763 "src/options/parse_opts.cc" yy685: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy702; @@ -2776,9 +2782,9 @@ yy689: goto yy284; yy690: ++YYCURSOR; -#line 177 "../src/options/parse_opts.re" +#line 183 "../src/options/parse_opts.re" { globopts.lookahead = false; goto opt; } -#line 2782 "src/options/parse_opts.cc" +#line 2788 "src/options/parse_opts.cc" yy692: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy708; @@ -2801,9 +2807,9 @@ yy696: goto yy284; yy697: ++YYCURSOR; -#line 151 "../src/options/parse_opts.re" +#line 157 "../src/options/parse_opts.re" { opts.set_bCaseInverted (true); goto opt; } -#line 2807 "src/options/parse_opts.cc" +#line 2813 "src/options/parse_opts.cc" yy699: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy714; @@ -2830,9 +2836,9 @@ yy704: goto yy284; yy705: ++YYCURSOR; -#line 148 "../src/options/parse_opts.re" +#line 154 "../src/options/parse_opts.re" { opts.set_iFlag (true); goto opt; } -#line 2836 "src/options/parse_opts.cc" +#line 2842 "src/options/parse_opts.cc" yy707: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy721; @@ -2847,9 +2853,9 @@ yy709: goto yy284; yy710: ++YYCURSOR; -#line 176 "../src/options/parse_opts.re" +#line 182 "../src/options/parse_opts.re" { NEXT_ARG("--posix-closure", opt_posix_closure); } -#line 2853 "src/options/parse_opts.cc" +#line 2859 "src/options/parse_opts.cc" yy712: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy725; @@ -2860,9 +2866,9 @@ yy713: goto yy284; yy714: ++YYCURSOR; -#line 147 "../src/options/parse_opts.re" +#line 153 "../src/options/parse_opts.re" { opts.set_gFlag (true); goto opt; } -#line 2866 "src/options/parse_opts.cc" +#line 2872 "src/options/parse_opts.cc" yy716: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy728; @@ -2893,18 +2899,18 @@ yy722: goto yy284; yy723: ++YYCURSOR; -#line 159 "../src/options/parse_opts.re" +#line 165 "../src/options/parse_opts.re" { opts.set_posix_syntax(true); opts.set_posix_semantics(true); goto opt; } -#line 2903 "src/options/parse_opts.cc" +#line 2909 "src/options/parse_opts.cc" yy725: ++YYCURSOR; -#line 138 "../src/options/parse_opts.re" +#line 144 "../src/options/parse_opts.re" { globopts.fFlag = true; goto opt; } -#line 2908 "src/options/parse_opts.cc" +#line 2914 "src/options/parse_opts.cc" yy727: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy738; @@ -2919,19 +2925,19 @@ yy729: goto yy284; yy730: ++YYCURSOR; -#line 185 "../src/options/parse_opts.re" +#line 191 "../src/options/parse_opts.re" { globopts.dump_dfa_tagopt = true; goto opt; } -#line 2925 "src/options/parse_opts.cc" +#line 2931 "src/options/parse_opts.cc" yy732: ++YYCURSOR; -#line 167 "../src/options/parse_opts.re" +#line 173 "../src/options/parse_opts.re" { NEXT_ARG("--encoding-policy", opt_encoding_policy); } -#line 2930 "src/options/parse_opts.cc" +#line 2936 "src/options/parse_opts.cc" yy734: ++YYCURSOR; -#line 170 "../src/options/parse_opts.re" +#line 176 "../src/options/parse_opts.re" { NEXT_ARG("--location-format", opt_location_format); } -#line 2935 "src/options/parse_opts.cc" +#line 2941 "src/options/parse_opts.cc" yy736: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy743; @@ -2942,14 +2948,14 @@ yy737: goto yy284; yy738: ++YYCURSOR; -#line 150 "../src/options/parse_opts.re" +#line 156 "../src/options/parse_opts.re" { opts.set_bCaseInsensitive (true); goto opt; } -#line 2948 "src/options/parse_opts.cc" +#line 2954 "src/options/parse_opts.cc" yy740: ++YYCURSOR; -#line 175 "../src/options/parse_opts.re" +#line 181 "../src/options/parse_opts.re" { NEXT_ARG("--dfa-minimization", opt_dfa_minimization); } -#line 2953 "src/options/parse_opts.cc" +#line 2959 "src/options/parse_opts.cc" yy742: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy746; @@ -2960,9 +2966,9 @@ yy743: goto yy284; yy744: ++YYCURSOR; -#line 178 "../src/options/parse_opts.re" +#line 184 "../src/options/parse_opts.re" { globopts.optimize_tags = false; goto opt; } -#line 2966 "src/options/parse_opts.cc" +#line 2972 "src/options/parse_opts.cc" yy746: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy748; @@ -2973,21 +2979,21 @@ yy747: goto yy284; yy748: ++YYCURSOR; -#line 190 "../src/options/parse_opts.re" +#line 196 "../src/options/parse_opts.re" { globopts.dump_closure_stats = true; goto opt; } -#line 2979 "src/options/parse_opts.cc" +#line 2985 "src/options/parse_opts.cc" yy750: ++YYCURSOR; -#line 141 "../src/options/parse_opts.re" +#line 147 "../src/options/parse_opts.re" { globopts.bNoGenerationDate = true; goto opt; } -#line 2984 "src/options/parse_opts.cc" +#line 2990 "src/options/parse_opts.cc" } -#line 191 "../src/options/parse_opts.re" +#line 197 "../src/options/parse_opts.re" opt_output: -#line 2991 "src/options/parse_opts.cc" +#line 2997 "src/options/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -3029,25 +3035,25 @@ opt_output: if (yych != '-') goto yy756; yy754: ++YYCURSOR; -#line 195 "../src/options/parse_opts.re" - { ERROR("bad argument to option -o, --output: %s", *argv); } -#line 3035 "src/options/parse_opts.cc" +#line 201 "../src/options/parse_opts.re" + { ERRARG("-o, --output", "filename", *argv); } +#line 3041 "src/options/parse_opts.cc" yy756: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { goto yy756; } ++YYCURSOR; -#line 196 "../src/options/parse_opts.re" +#line 202 "../src/options/parse_opts.re" { opts.set_output_file (*argv); goto opt; } -#line 3044 "src/options/parse_opts.cc" +#line 3050 "src/options/parse_opts.cc" } -#line 197 "../src/options/parse_opts.re" +#line 203 "../src/options/parse_opts.re" opt_header: -#line 3051 "src/options/parse_opts.cc" +#line 3057 "src/options/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -3089,25 +3095,25 @@ opt_header: if (yych != '-') goto yy764; yy762: ++YYCURSOR; -#line 201 "../src/options/parse_opts.re" - { ERROR("bad argument to option -t, --type-header: %s", *argv); } -#line 3095 "src/options/parse_opts.cc" +#line 207 "../src/options/parse_opts.re" + { ERRARG("-t, --type-header", "filename", *argv); } +#line 3101 "src/options/parse_opts.cc" yy764: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { goto yy764; } ++YYCURSOR; -#line 202 "../src/options/parse_opts.re" +#line 208 "../src/options/parse_opts.re" { opts.set_header_file (*argv); goto opt; } -#line 3104 "src/options/parse_opts.cc" +#line 3110 "src/options/parse_opts.cc" } -#line 203 "../src/options/parse_opts.re" +#line 209 "../src/options/parse_opts.re" opt_incpath: -#line 3111 "src/options/parse_opts.cc" +#line 3117 "src/options/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -3149,25 +3155,25 @@ opt_incpath: if (yych != '-') goto yy772; yy770: ++YYCURSOR; -#line 207 "../src/options/parse_opts.re" - { ERROR("bad argument to option -I: %s", *argv); } -#line 3155 "src/options/parse_opts.cc" +#line 213 "../src/options/parse_opts.re" + { ERRARG("-I", "filename", *argv); } +#line 3161 "src/options/parse_opts.cc" yy772: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { goto yy772; } ++YYCURSOR; -#line 208 "../src/options/parse_opts.re" +#line 214 "../src/options/parse_opts.re" { globopts.incpaths.push_back(*argv); goto opt; } -#line 3164 "src/options/parse_opts.cc" +#line 3170 "src/options/parse_opts.cc" } -#line 209 "../src/options/parse_opts.re" +#line 215 "../src/options/parse_opts.re" opt_encoding_policy: -#line 3171 "src/options/parse_opts.cc" +#line 3177 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -3179,12 +3185,9 @@ opt_encoding_policy: } ++YYCURSOR; yy779: -#line 213 "../src/options/parse_opts.re" - { - ERROR("bad argument to option --encoding-policy " - "(expected: ignore | substitute | fail): %s", *argv); - } -#line 3188 "src/options/parse_opts.cc" +#line 219 "../src/options/parse_opts.re" + { ERRARG("--encoding-policy", "ignore | substitute | fail", *argv); } +#line 3191 "src/options/parse_opts.cc" yy780: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy783; @@ -3237,9 +3240,9 @@ yy792: goto yy784; yy793: ++YYCURSOR; -#line 219 "../src/options/parse_opts.re" +#line 222 "../src/options/parse_opts.re" { opts.set_encoding_policy (Enc::POLICY_FAIL); goto opt; } -#line 3243 "src/options/parse_opts.cc" +#line 3246 "src/options/parse_opts.cc" yy795: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy797; @@ -3258,9 +3261,9 @@ yy798: goto yy784; yy799: ++YYCURSOR; -#line 217 "../src/options/parse_opts.re" +#line 220 "../src/options/parse_opts.re" { opts.set_encoding_policy (Enc::POLICY_IGNORE); goto opt; } -#line 3264 "src/options/parse_opts.cc" +#line 3267 "src/options/parse_opts.cc" yy801: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'u') goto yy784; @@ -3271,16 +3274,16 @@ yy801: yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy784; ++YYCURSOR; -#line 218 "../src/options/parse_opts.re" +#line 221 "../src/options/parse_opts.re" { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; } -#line 3277 "src/options/parse_opts.cc" +#line 3280 "src/options/parse_opts.cc" } -#line 220 "../src/options/parse_opts.re" +#line 223 "../src/options/parse_opts.re" opt_input: -#line 3284 "src/options/parse_opts.cc" +#line 3287 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -3290,11 +3293,8 @@ opt_input: yy809: ++YYCURSOR; yy810: -#line 224 "../src/options/parse_opts.re" - { - ERROR("bad argument to option --input " - "(expected: default | custom): %s", *argv); - } +#line 227 "../src/options/parse_opts.re" + { ERRARG("--input", "default | custom", *argv); } #line 3299 "src/options/parse_opts.cc" yy811: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); @@ -3373,11 +3373,8 @@ opt_empty_class: ++YYCURSOR; yy832: #line 234 "../src/options/parse_opts.re" - { - ERROR("bad argument to option --empty-class " - "(expected: match-empty | match-none | error): %s", *argv); - } -#line 3381 "src/options/parse_opts.cc" + { ERRARG("--empty-class", "match-empty | match-none | error", *argv); } +#line 3378 "src/options/parse_opts.cc" yy833: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'r') goto yy835; @@ -3422,9 +3419,9 @@ yy843: goto yy836; yy844: ++YYCURSOR; -#line 240 "../src/options/parse_opts.re" +#line 237 "../src/options/parse_opts.re" { opts.set_empty_class_policy (EMPTY_CLASS_ERROR); goto opt; } -#line 3428 "src/options/parse_opts.cc" +#line 3425 "src/options/parse_opts.cc" yy846: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy847; @@ -3468,21 +3465,21 @@ yy855: goto yy836; yy856: ++YYCURSOR; -#line 239 "../src/options/parse_opts.re" +#line 236 "../src/options/parse_opts.re" { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE); goto opt; } -#line 3474 "src/options/parse_opts.cc" +#line 3471 "src/options/parse_opts.cc" yy858: ++YYCURSOR; -#line 238 "../src/options/parse_opts.re" +#line 235 "../src/options/parse_opts.re" { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; } -#line 3479 "src/options/parse_opts.cc" +#line 3476 "src/options/parse_opts.cc" } -#line 241 "../src/options/parse_opts.re" +#line 238 "../src/options/parse_opts.re" opt_location_format: -#line 3486 "src/options/parse_opts.cc" +#line 3483 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -3490,11 +3487,9 @@ opt_location_format: if (yych == 'm') goto yy865; ++YYCURSOR; yy863: -#line 245 "../src/options/parse_opts.re" - { - ERROR("bad argument to option --location-format (expected: gnu | msvc): %s", *argv); - } -#line 3498 "src/options/parse_opts.cc" +#line 242 "../src/options/parse_opts.re" + { ERRARG("--location-format", "gnu | msvc", *argv); } +#line 3493 "src/options/parse_opts.cc" yy864: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'n') goto yy866; @@ -3523,23 +3518,23 @@ yy870: goto yy867; yy871: ++YYCURSOR; -#line 248 "../src/options/parse_opts.re" +#line 243 "../src/options/parse_opts.re" { msg.locfmt = LOCFMT_GNU; goto opt; } -#line 3529 "src/options/parse_opts.cc" +#line 3524 "src/options/parse_opts.cc" yy873: yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy867; ++YYCURSOR; -#line 249 "../src/options/parse_opts.re" +#line 244 "../src/options/parse_opts.re" { msg.locfmt = LOCFMT_MSVC; goto opt; } -#line 3536 "src/options/parse_opts.cc" +#line 3531 "src/options/parse_opts.cc" } -#line 250 "../src/options/parse_opts.re" +#line 245 "../src/options/parse_opts.re" opt_dfa_minimization: -#line 3543 "src/options/parse_opts.cc" +#line 3538 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; @@ -3547,12 +3542,9 @@ opt_dfa_minimization: if (yych == 't') goto yy881; ++YYCURSOR; yy879: -#line 254 "../src/options/parse_opts.re" - { - ERROR("bad argument to option --dfa-minimization " - "(expected: table | moore): %s", *argv); - } -#line 3556 "src/options/parse_opts.cc" +#line 249 "../src/options/parse_opts.re" + { ERRARG("--dfa-minimization", "table | moore", *argv); } +#line 3548 "src/options/parse_opts.cc" yy880: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy882; @@ -3597,33 +3589,30 @@ yy890: goto yy883; yy891: ++YYCURSOR; -#line 259 "../src/options/parse_opts.re" +#line 251 "../src/options/parse_opts.re" { globopts.dfa_minimization = DFA_MINIMIZATION_MOORE; goto opt; } -#line 3603 "src/options/parse_opts.cc" +#line 3595 "src/options/parse_opts.cc" yy893: ++YYCURSOR; -#line 258 "../src/options/parse_opts.re" +#line 250 "../src/options/parse_opts.re" { globopts.dfa_minimization = DFA_MINIMIZATION_TABLE; goto opt; } -#line 3608 "src/options/parse_opts.cc" +#line 3600 "src/options/parse_opts.cc" } -#line 260 "../src/options/parse_opts.re" +#line 252 "../src/options/parse_opts.re" opt_posix_closure: -#line 3615 "src/options/parse_opts.cc" +#line 3607 "src/options/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych == 'g') goto yy899; ++YYCURSOR; yy898: -#line 264 "../src/options/parse_opts.re" - { - ERROR("bad argument to option --posix_closure " - "(expected: gor1 | gtop): %s", *argv); - } -#line 3627 "src/options/parse_opts.cc" +#line 256 "../src/options/parse_opts.re" + { ERRARG("--posix-closure", "gor1 | gtop", *argv); } +#line 3616 "src/options/parse_opts.cc" yy899: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy900; @@ -3657,16 +3646,16 @@ yy906: goto yy901; yy907: ++YYCURSOR; -#line 268 "../src/options/parse_opts.re" +#line 257 "../src/options/parse_opts.re" { globopts.posix_closure = POSIX_CLOSURE_GOR1; goto opt; } -#line 3663 "src/options/parse_opts.cc" +#line 3652 "src/options/parse_opts.cc" yy909: ++YYCURSOR; -#line 269 "../src/options/parse_opts.re" +#line 258 "../src/options/parse_opts.re" { globopts.posix_closure = POSIX_CLOSURE_GTOP; goto opt; } -#line 3668 "src/options/parse_opts.cc" +#line 3657 "src/options/parse_opts.cc" } -#line 270 "../src/options/parse_opts.re" +#line 259 "../src/options/parse_opts.re" end: @@ -3680,6 +3669,7 @@ end: #undef NEXT_ARG #undef ERROR +#undef ERRARG #undef YYCTYPE } diff --git a/re2c/src/options/parse_opts.re b/re2c/src/options/parse_opts.re index 94257f6d..3ce79510 100644 --- a/re2c/src/options/parse_opts.re +++ b/re2c/src/options/parse_opts.re @@ -17,14 +17,20 @@ parse_opts_t parse_opts(char **argv, conopt_t &globopts, Opt &opts, Msg &msg) { #define YYCTYPE unsigned char -#define NEXT_ARG(option, label) \ - do { \ - if (next (YYCURSOR, argv)) goto label; \ - else { error_arg(option); return EXIT_FAIL; } \ - } while(0) +#define NEXT_ARG(option, label) do { \ + if (next (YYCURSOR, argv)) goto label; \ + else { error_arg(option); return EXIT_FAIL; } \ +} while(0) -#define ERROR(msg, arg) \ - do { error(msg, arg); return EXIT_FAIL; } while(0) +#define ERROR(msg, arg) do { \ + error(msg, arg); \ + return EXIT_FAIL; \ +} while(0) + +#define ERRARG(opt, exp, arg) do { \ + error("bad argument '%s' to option %s <%s>", arg, opt, exp); \ + return EXIT_FAIL; \ +} while(0) char *YYCURSOR, *YYMARKER; Warn::option_t option; @@ -192,28 +198,25 @@ opt_long: opt_output: /*!re2c - * { ERROR("bad argument to option -o, --output: %s", *argv); } + * { ERRARG("-o, --output", "filename", *argv); } filename end { opts.set_output_file (*argv); goto opt; } */ opt_header: /*!re2c - * { ERROR("bad argument to option -t, --type-header: %s", *argv); } + * { ERRARG("-t, --type-header", "filename", *argv); } filename end { opts.set_header_file (*argv); goto opt; } */ opt_incpath: /*!re2c - * { ERROR("bad argument to option -I: %s", *argv); } + * { ERRARG("-I", "filename", *argv); } filename end { globopts.incpaths.push_back(*argv); goto opt; } */ opt_encoding_policy: /*!re2c - * { - ERROR("bad argument to option --encoding-policy " - "(expected: ignore | substitute | fail): %s", *argv); - } + * { ERRARG("--encoding-policy", "ignore | substitute | fail", *argv); } "ignore" end { opts.set_encoding_policy (Enc::POLICY_IGNORE); goto opt; } "substitute" end { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; } "fail" end { opts.set_encoding_policy (Enc::POLICY_FAIL); goto opt; } @@ -221,20 +224,14 @@ opt_encoding_policy: opt_input: /*!re2c - * { - ERROR("bad argument to option --input " - "(expected: default | custom): %s", *argv); - } + * { ERRARG("--input", "default | custom", *argv); } "default" end { opts.set_input_api(INPUT_DEFAULT); goto opt; } "custom" end { opts.set_input_api(INPUT_CUSTOM); goto opt; } */ opt_empty_class: /*!re2c - * { - ERROR("bad argument to option --empty-class " - "(expected: match-empty | match-none | error): %s", *argv); - } + * { ERRARG("--empty-class", "match-empty | match-none | error", *argv); } "match-empty" end { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; } "match-none" end { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE); goto opt; } "error" end { opts.set_empty_class_policy (EMPTY_CLASS_ERROR); goto opt; } @@ -242,29 +239,21 @@ opt_empty_class: opt_location_format: /*!re2c - * { - ERROR("bad argument to option --location-format (expected: gnu | msvc): %s", *argv); - } + * { ERRARG("--location-format", "gnu | msvc", *argv); } "gnu" end { msg.locfmt = LOCFMT_GNU; goto opt; } "msvc" end { msg.locfmt = LOCFMT_MSVC; goto opt; } */ opt_dfa_minimization: /*!re2c - * { - ERROR("bad argument to option --dfa-minimization " - "(expected: table | moore): %s", *argv); - } + * { ERRARG("--dfa-minimization", "table | moore", *argv); } "table" end { globopts.dfa_minimization = DFA_MINIMIZATION_TABLE; goto opt; } "moore" end { globopts.dfa_minimization = DFA_MINIMIZATION_MOORE; goto opt; } */ opt_posix_closure: /*!re2c - * { - ERROR("bad argument to option --posix_closure " - "(expected: gor1 | gtop): %s", *argv); - } + * { ERRARG("--posix-closure", "gor1 | gtop", *argv); } "gor1" end { globopts.posix_closure = POSIX_CLOSURE_GOR1; goto opt; } "gtop" end { globopts.posix_closure = POSIX_CLOSURE_GTOP; goto opt; } */ @@ -280,6 +269,7 @@ end: #undef NEXT_ARG #undef ERROR +#undef ERRARG #undef YYCTYPE } diff --git a/re2c/test/messages/msg_04.--location-format(xxx).c b/re2c/test/messages/msg_04.--location-format(xxx).c new file mode 100644 index 00000000..4be670db --- /dev/null +++ b/re2c/test/messages/msg_04.--location-format(xxx).c @@ -0,0 +1 @@ +re2c: error: bad argument 'xxx' to option --location-format diff --git a/re2c/test/messages/msg_04.--location-format(xxx).re b/re2c/test/messages/msg_04.--location-format(xxx).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_04.--location-format(xxx).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_05.--dfa-minimization(xxx).c b/re2c/test/messages/msg_05.--dfa-minimization(xxx).c new file mode 100644 index 00000000..1bfabf13 --- /dev/null +++ b/re2c/test/messages/msg_05.--dfa-minimization(xxx).c @@ -0,0 +1 @@ +re2c: error: bad argument 'xxx' to option --dfa-minimization diff --git a/re2c/test/messages/msg_05.--dfa-minimization(xxx).re b/re2c/test/messages/msg_05.--dfa-minimization(xxx).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_05.--dfa-minimization(xxx).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_06.--posix-closure(xxx).c b/re2c/test/messages/msg_06.--posix-closure(xxx).c new file mode 100644 index 00000000..756f233c --- /dev/null +++ b/re2c/test/messages/msg_06.--posix-closure(xxx).c @@ -0,0 +1 @@ +re2c: error: bad argument 'xxx' to option --posix-closure diff --git a/re2c/test/messages/msg_06.--posix-closure(xxx).re b/re2c/test/messages/msg_06.--posix-closure(xxx).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_06.--posix-closure(xxx).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_07.--empty-class(xxx).c b/re2c/test/messages/msg_07.--empty-class(xxx).c new file mode 100644 index 00000000..650ce8fd --- /dev/null +++ b/re2c/test/messages/msg_07.--empty-class(xxx).c @@ -0,0 +1 @@ +re2c: error: bad argument 'xxx' to option --empty-class diff --git a/re2c/test/messages/msg_07.--empty-class(xxx).re b/re2c/test/messages/msg_07.--empty-class(xxx).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_07.--empty-class(xxx).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_08.--input(xxx).c b/re2c/test/messages/msg_08.--input(xxx).c new file mode 100644 index 00000000..39657489 --- /dev/null +++ b/re2c/test/messages/msg_08.--input(xxx).c @@ -0,0 +1 @@ +re2c: error: bad argument 'xxx' to option --input diff --git a/re2c/test/messages/msg_08.--input(xxx).re b/re2c/test/messages/msg_08.--input(xxx).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_08.--input(xxx).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_09.--encoding-policy(xxx).c b/re2c/test/messages/msg_09.--encoding-policy(xxx).c new file mode 100644 index 00000000..5876ff21 --- /dev/null +++ b/re2c/test/messages/msg_09.--encoding-policy(xxx).c @@ -0,0 +1 @@ +re2c: error: bad argument 'xxx' to option --encoding-policy diff --git a/re2c/test/messages/msg_09.--encoding-policy(xxx).re b/re2c/test/messages/msg_09.--encoding-policy(xxx).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_09.--encoding-policy(xxx).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_10.--output(-).c b/re2c/test/messages/msg_10.--output(-).c new file mode 100644 index 00000000..22f56680 --- /dev/null +++ b/re2c/test/messages/msg_10.--output(-).c @@ -0,0 +1 @@ +re2c: error: bad argument '-' to option -o, --output diff --git a/re2c/test/messages/msg_10.--output(-).re b/re2c/test/messages/msg_10.--output(-).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_10.--output(-).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file diff --git a/re2c/test/messages/msg_11.--type-header(-).c b/re2c/test/messages/msg_11.--type-header(-).c new file mode 100644 index 00000000..66c34aab --- /dev/null +++ b/re2c/test/messages/msg_11.--type-header(-).c @@ -0,0 +1 @@ +re2c: error: bad argument '-' to option -t, --type-header diff --git a/re2c/test/messages/msg_11.--type-header(-).re b/re2c/test/messages/msg_11.--type-header(-).re new file mode 100644 index 00000000..83cfcec0 --- /dev/null +++ b/re2c/test/messages/msg_11.--type-header(-).re @@ -0,0 +1 @@ +/*!re2c "a" { \ No newline at end of file -- 2.40.0