bison-patches
[Top][All Lists]
Advanced

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

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


From: Theophile Ranquet
Subject: [PATCH 1/4] getargs: add support for --flags/-f
Date: Tue, 4 Dec 2012 15:26:05 +0100

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;
 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::"
   "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]