mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
getargs: add support for --flags/-f
Introduce -fdiagnostics-show-caret * src/getargs.c (flag_flag): New global. * src/getargs.h (flag): New enum.
This commit is contained in:
@@ -63,6 +63,7 @@ bool error_verbose = false;
|
|||||||
bool nondeterministic_parser = false;
|
bool nondeterministic_parser = false;
|
||||||
bool glr_parser = false;
|
bool glr_parser = false;
|
||||||
|
|
||||||
|
int feature_flag = feature_none;
|
||||||
int report_flag = report_none;
|
int report_flag = report_none;
|
||||||
int trace_flag = trace_none;
|
int trace_flag = trace_none;
|
||||||
int warnings_flag = warnings_conflicts_sr | warnings_conflicts_rr
|
int warnings_flag = warnings_conflicts_sr | warnings_conflicts_rr
|
||||||
@@ -257,6 +258,26 @@ static const int warnings_types[] =
|
|||||||
|
|
||||||
ARGMATCH_VERIFY (warnings_args, warnings_types);
|
ARGMATCH_VERIFY (warnings_args, warnings_types);
|
||||||
|
|
||||||
|
/*-----------------------.
|
||||||
|
| --feature's handling. |
|
||||||
|
`-----------------------*/
|
||||||
|
|
||||||
|
static const char * const feature_args[] =
|
||||||
|
{
|
||||||
|
"none",
|
||||||
|
"caret", "diagnostics-show-caret",
|
||||||
|
"all",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const int feature_types[] =
|
||||||
|
{
|
||||||
|
feature_none,
|
||||||
|
feature_caret, feature_caret,
|
||||||
|
feature_all
|
||||||
|
};
|
||||||
|
|
||||||
|
ARGMATCH_VERIFY (feature_args, feature_types);
|
||||||
|
|
||||||
/*-------------------------------------------.
|
/*-------------------------------------------.
|
||||||
| Display the help message and exit STATUS. |
|
| Display the help message and exit STATUS. |
|
||||||
@@ -301,6 +322,7 @@ Operation modes:\n\
|
|||||||
--print-datadir output directory containing skeletons and XSLT\n\
|
--print-datadir output directory containing skeletons and XSLT\n\
|
||||||
-y, --yacc emulate POSIX Yacc\n\
|
-y, --yacc emulate POSIX Yacc\n\
|
||||||
-W, --warnings[=CATEGORY] report the warnings falling in CATEGORY\n\
|
-W, --warnings[=CATEGORY] report the warnings falling in CATEGORY\n\
|
||||||
|
-f, --feature[=FEATURE] activate miscellaneous features\n\
|
||||||
\n\
|
\n\
|
||||||
"), stdout);
|
"), stdout);
|
||||||
|
|
||||||
@@ -316,8 +338,8 @@ Parser:\n\
|
|||||||
deprecated by '-Dapi.prefix=PREFIX'\n\
|
deprecated by '-Dapi.prefix=PREFIX'\n\
|
||||||
-l, --no-lines don't generate '#line' directives\n\
|
-l, --no-lines don't generate '#line' directives\n\
|
||||||
-k, --token-table include a table of token names\n\
|
-k, --token-table include a table of token names\n\
|
||||||
\n\
|
|
||||||
"), stdout);
|
"), stdout);
|
||||||
|
putc ('\n', stdout);
|
||||||
|
|
||||||
/* Keep -d and --defines separate so that ../build-aux/cross-options.pl
|
/* Keep -d and --defines separate so that ../build-aux/cross-options.pl
|
||||||
* won't assume that -d also takes an argument. */
|
* won't assume that -d also takes an argument. */
|
||||||
@@ -333,8 +355,8 @@ Output:\n\
|
|||||||
-g, --graph[=FILE] also output a graph of the automaton\n\
|
-g, --graph[=FILE] also output a graph of the automaton\n\
|
||||||
-x, --xml[=FILE] also output an XML report of the automaton\n\
|
-x, --xml[=FILE] also output an XML report of the automaton\n\
|
||||||
(the XML schema is experimental)\n\
|
(the XML schema is experimental)\n\
|
||||||
\n\
|
|
||||||
"), stdout);
|
"), stdout);
|
||||||
|
putc ('\n', stdout);
|
||||||
|
|
||||||
fputs (_("\
|
fputs (_("\
|
||||||
Warning categories include:\n\
|
Warning categories include:\n\
|
||||||
@@ -359,6 +381,14 @@ THINGS is a list of comma separated words that can include:\n\
|
|||||||
`solved' describe shift/reduce conflicts solving\n\
|
`solved' describe shift/reduce conflicts solving\n\
|
||||||
`all' include all the above information\n\
|
`all' include all the above information\n\
|
||||||
`none' disable the report\n\
|
`none' disable the report\n\
|
||||||
|
"), stdout);
|
||||||
|
putc ('\n', stdout);
|
||||||
|
|
||||||
|
fputs (_("\
|
||||||
|
FEATURE is a list of comma separated words that can include:\n\
|
||||||
|
`caret' show errors with carets\n\
|
||||||
|
`all' all of the above\n\
|
||||||
|
`none' disable all of the above\n\
|
||||||
"), stdout);
|
"), stdout);
|
||||||
|
|
||||||
putc ('\n', stdout);
|
putc ('\n', stdout);
|
||||||
@@ -469,6 +499,7 @@ static char const short_options[] =
|
|||||||
"W::"
|
"W::"
|
||||||
"b:"
|
"b:"
|
||||||
"d"
|
"d"
|
||||||
|
"f::"
|
||||||
"e"
|
"e"
|
||||||
"g::"
|
"g::"
|
||||||
"h"
|
"h"
|
||||||
@@ -521,6 +552,7 @@ static struct option const long_options[] =
|
|||||||
|
|
||||||
/* Output. */
|
/* Output. */
|
||||||
{ "defines", optional_argument, 0, 'd' },
|
{ "defines", optional_argument, 0, 'd' },
|
||||||
|
{ "flag", optional_argument, 0, 'f' },
|
||||||
|
|
||||||
/* Operation modes. */
|
/* Operation modes. */
|
||||||
{ "fixed-output-files", no_argument, 0, 'y' },
|
{ "fixed-output-files", no_argument, 0, 'y' },
|
||||||
@@ -613,6 +645,10 @@ getargs (int argc, char *argv[])
|
|||||||
version ();
|
version ();
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
|
|
||||||
|
case 'f':
|
||||||
|
FLAGS_ARGMATCH (flag, optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'W':
|
case 'W':
|
||||||
FLAGS_ARGMATCH (warnings, optarg);
|
FLAGS_ARGMATCH (warnings, optarg);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -130,6 +130,18 @@ enum warnings
|
|||||||
/** What warnings are issued. */
|
/** What warnings are issued. */
|
||||||
extern int warnings_flag;
|
extern int warnings_flag;
|
||||||
|
|
||||||
|
/*-------------.
|
||||||
|
| --features. |
|
||||||
|
`-------------*/
|
||||||
|
|
||||||
|
enum feature
|
||||||
|
{
|
||||||
|
feature_none = 0, /**< No additional feature. */
|
||||||
|
feature_caret = 1 << 0, /**< Enhance the output of errors with carets. */
|
||||||
|
feature_all = ~0 /**< All above features. */
|
||||||
|
};
|
||||||
|
/** What additional features to use. */
|
||||||
|
extern int feature_flag;
|
||||||
|
|
||||||
/** Process the command line arguments.
|
/** Process the command line arguments.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user