bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/4] getargs: add support for --flags/-f


From: Akim Demaille
Subject: Re: [PATCH 1/4] getargs: add support for --flags/-f
Date: Tue, 4 Dec 2012 15:12:28 +0100

Le 4 déc. 2012 à 15:26, Theophile Ranquet <address@hidden> a écrit :

> Introduce -fdiagnostics-show-caret
> 
> * src/getargs.c (flag_flag): New global.
> * src/getargs.h (flag): New enum.
> ---
> src/getargs.c | 40 ++++++++++++++++++++++++++++++++++++++--
> src/getargs.h | 12 ++++++++++++
> 2 files changed, 50 insertions(+), 2 deletions(-)
> 
> diff --git a/src/getargs.c b/src/getargs.c
> index c480649..547d533 100644
> --- a/src/getargs.c
> +++ b/src/getargs.c
> @@ -63,6 +63,7 @@ bool error_verbose = false;
> bool nondeterministic_parser = false;
> bool glr_parser = false;
> 
> +int flag_flag = flag_none;

Well, at least I can say that I am not fond on this name.
I prefer feature_flag.  So I guess we're heading to --feature.

> int report_flag = report_none;
> int trace_flag = trace_none;
> int warnings_flag = warnings_conflicts_sr | warnings_conflicts_rr
> @@ -257,6 +258,26 @@ static const int warnings_types[] =
> 
> ARGMATCH_VERIFY (warnings_args, warnings_types);
> 
> +/*---------------------.
> +| --flags's handling.  |
> +`---------------------*/
> +
> +static const char * const flag_args[] =
> +{
> +  "none",
> +  "caret", "diagnostics-show-caret",
> +  "all",
> +  0
> +};
> +
> +static const int flag_types[] =
> +{
> +  flag_none,
> +  flag_caret, flag_caret,
> +  flag_all
> +};
> +
> +ARGMATCH_VERIFY (flag_args, flag_types);
> 
> /*-------------------------------------------.
> | Display the help message and exit STATUS.  |
> @@ -301,6 +322,7 @@ Operation modes:\n\
>       --print-datadir        output directory containing skeletons and XSLT\n\
>   -y, --yacc                 emulate POSIX Yacc\n\
>   -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n\
> +  -f, --flags[=FLAGS]        activate miscellaneous features\n\
> \n\
> "), stdout);
> 
> @@ -316,8 +338,8 @@ Parser:\n\
>                                    deprecated by '-Dapi.prefix=PREFIX'\n\
>   -l, --no-lines                   don't generate '#line' directives\n\
>   -k, --token-table                include a table of token names\n\
> -\n\
> "), stdout);
> +      putc ('\n', stdout);
> 
>       /* Keep -d and --defines separate so that ../build-aux/cross-options.pl
>        * 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\
>   -x, --xml[=FILE]           also output an XML report of the automaton\n\
>                              (the XML schema is experimental)\n\
> -\n\
> "), stdout);
> +      putc ('\n', stdout);
> 
>       fputs (_("\
> Warning categories include:\n\
> @@ -360,6 +382,14 @@ THINGS is a list of comma separated words that can 
> include:\n\
>   `all'          include all the above information\n\
>   `none'         disable the report\n\
> "), stdout);
> +      putc ('\n', stdout);
> +
> +      fputs (_("\
> +FLAGS 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);
> 
>       putc ('\n', stdout);
>       printf (_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
> @@ -469,6 +499,7 @@ static char const short_options[] =
>   "W::"
>   "b:"
>   "d"
> +  "f::"

Do we really want to support -f without argument?  That would
mean "all" IIUC?  Why not actually.

>   "e"
>   "g::"
>   "h"
> @@ -521,6 +552,7 @@ static struct option const long_options[] =
> 
>   /* Output.  */
>   { "defines",     optional_argument,   0,   'd' },
> +  { "flag",        optional_argument,   0,   'f' },
> 
>   /* Operation modes.  */
>   { "fixed-output-files", no_argument,  0,   'y' },
> @@ -613,6 +645,10 @@ getargs (int argc, char *argv[])
>       version ();
>       exit (EXIT_SUCCESS);
> 
> +      case 'f':
> +        FLAGS_ARGMATCH (flag, optarg);
> +        break;
> +
>       case 'W':
>       FLAGS_ARGMATCH (warnings, optarg);
>       break;
> diff --git a/src/getargs.h b/src/getargs.h
> index ef97822..9b0c1c9 100644
> --- a/src/getargs.h
> +++ b/src/getargs.h
> @@ -130,6 +130,18 @@ enum warnings
> /** What warnings are issued.  */
> extern int warnings_flag;
> 
> +/*----------.
> +| --flags.  |
> +`----------*/
> +
> +enum flag
> +  {
> +    flag_none  = 0,
> +    flag_caret = 1 << 0,
> +    flag_all   = ~0
> +  };
> +
> +extern int flag_flag;
> 
> /** Process the command line arguments.
>  *
> -- 
> 1.8.0
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]