]> git.saurik.com Git - bison.git/blobdiff - src/getargs.c
* configure.ac (AM_GNU_GETTEXT_VERSION): Lower it from 0.14.1 to 0.11.5.
[bison.git] / src / getargs.c
index 92e9ef4ea3bd701c2e1178c8699adfc02db12d33..ba7627efbeb1ca4eb7b717eb823eefc8c3eacdb9 100644 (file)
@@ -1,5 +1,6 @@
-/* Parse command line arguments for bison.
-   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002
+/* Parse command line arguments for Bison.
+
+   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    02111-1307, USA.  */
 
 #include "system.h"
    02111-1307, USA.  */
 
 #include "system.h"
-#include "getopt.h"
-#include "argmatch.h"
-#include "error.h"
+
+#include <argmatch.h>
+#include <error.h>
+
+/* Hack to get <getopt.h> to declare getopt with a prototype.  */
+#if lint && ! defined __GNU_LIBRARY__
+# define __GNU_LIBRARY__
+# define HACK_FOR___GNU_LIBRARY___PROTOTYPE 1
+#endif
+
+#include <getopt.h>
+
+#ifdef HACK_FOR___GNU_LIBRARY___PROTOTYPE
+# undef __GNU_LIBRARY__
+# undef HACK_FOR___GNU_LIBRARY___PROTOTYPE
+#endif
+
 #include "complain.h"
 #include "complain.h"
-#include "struniq.h"
-#include "getargs.h"
 #include "files.h"
 #include "files.h"
+#include "getargs.h"
+#include "uniqstr.h"
 
 
-int debug_flag = 0;
-int defines_flag = 0;
-int locations_flag = 0;
-int no_lines_flag = 0;
-int no_parser_flag = 0;
+bool debug_flag;
+bool defines_flag;
+bool locations_flag;
+bool no_lines_flag;
+bool no_parser_flag;
 int report_flag = report_none;
 int report_flag = report_none;
-int token_table_flag = 0;
-int yacc_flag = 0;     /* for -y */
-int graph_flag = 0;
+bool token_table_flag;
+bool yacc_flag;        /* for -y */
+bool graph_flag;
 int trace_flag = trace_none;
 
 int trace_flag = trace_none;
 
+bool nondeterministic_parser = false;
+bool glr_parser = false;
+bool pure_parser = false;
+
 const char *skeleton = NULL;
 const char *include = NULL;
 
 const char *skeleton = NULL;
 const char *include = NULL;
 
@@ -54,15 +73,16 @@ static const char * const trace_args[] =
   /* In a series of synonyms, present the most meaningful first, so
      that argmatch_valid be more readable.  */
   "none       - no report",
   /* In a series of synonyms, present the most meaningful first, so
      that argmatch_valid be more readable.  */
   "none       - no report",
-  "scan       - scanner traces",
-  "parse      - parser traces",
+  "scan       - grammar scanner traces",
+  "parse      - grammar parser traces",
   "automaton  - contruction of the automaton",
   "bitsets    - use of bitsets",
   "grammar    - reading, reducing of the grammar",
   "resource   - memory consumption (where available)",
   "sets       - grammar sets: firsts, nullable etc.",
   "automaton  - contruction of the automaton",
   "bitsets    - use of bitsets",
   "grammar    - reading, reducing of the grammar",
   "resource   - memory consumption (where available)",
   "sets       - grammar sets: firsts, nullable etc.",
-  "time       - time consumption",
   "tools      - m4 invocation and preserve the temporary file",
   "tools      - m4 invocation and preserve the temporary file",
+  "skeleton   - skeleton postprocessing",
+  "time       - time consumption",
   "all        - all of the above",
   0
 };
   "all        - all of the above",
   0
 };
@@ -77,8 +97,9 @@ static const int trace_types[] =
   trace_grammar,
   trace_resource,
   trace_sets,
   trace_grammar,
   trace_resource,
   trace_sets,
-  trace_time,
   trace_tools,
   trace_tools,
+  trace_skeleton,
+  trace_time,
   trace_all
 };
 
   trace_all
 };
 
@@ -86,7 +107,7 @@ static const int trace_types[] =
 static void
 trace_argmatch (char *args)
 {
 static void
 trace_argmatch (char *args)
 {
-  ARGMATCH_ASSERT (trace_args, trace_types);
+  verify (trace_constraint, ARGMATCH_CONSTRAINT (trace_args, trace_types));
   if (args)
     {
       args = strtok (args, ",");
   if (args)
     {
       args = strtok (args, ",");
@@ -137,7 +158,7 @@ static const int report_types[] =
 static void
 report_argmatch (char *args)
 {
 static void
 report_argmatch (char *args)
 {
-  ARGMATCH_ASSERT (report_args, report_types);
+  verify (report_constraint, ARGMATCH_CONSTRAINT (report_args, report_types));
   args = strtok (args, ",");
   do
     {
   args = strtok (args, ",");
   do
     {
@@ -246,7 +267,7 @@ version (void)
   putc ('\n', stdout);
 
   fprintf (stdout,
   putc ('\n', stdout);
 
   fprintf (stdout,
-          _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2002);
+          _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2004);
 
   fputs (_("\
 This is free software; see the source for copying conditions.  There is NO\n\
 
   fputs (_("\
 This is free software; see the source for copying conditions.  There is NO\n\
@@ -263,6 +284,12 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
 /* Shorts options.  */
 const char *short_options = "yvegdhr:ltknVo:b:p:S:T::";
 
 /* Shorts options.  */
 const char *short_options = "yvegdhr:ltknVo:b:p:S:T::";
 
+/* Values for long options that do not have single-letter equivalents.  */
+enum
+{
+  LOCATIONS_OPTION = CHAR_MAX + 1
+};
+
 static struct option const long_options[] =
 {
   /* Operation modes. */
 static struct option const long_options[] =
 {
   /* Operation modes. */
@@ -293,7 +320,7 @@ static struct option const long_options[] =
 
   /* Parser.  */
   { "debug",         no_argument,               0,   't' },
 
   /* Parser.  */
   { "debug",         no_argument,               0,   't' },
-  { "locations",      no_argument, &locations_flag,     1 },
+  { "locations",      no_argument,              0, LOCATIONS_OPTION },
   { "no-lines",       no_argument,               0,   'l' },
   { "no-parser",      no_argument,               0,   'n' },
   { "raw",            no_argument,               0,     0 },
   { "no-lines",       no_argument,               0,   'l' },
   { "no-parser",      no_argument,               0,   'n' },
   { "raw",            no_argument,               0,     0 },
@@ -316,7 +343,8 @@ getargs (int argc, char *argv[])
 {
   int c;
 
 {
   int c;
 
-  while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != EOF)
+  while ((c = getopt_long (argc, argv, short_options, long_options, NULL))
+        != -1)
     switch (c)
       {
       case 0:
     switch (c)
       {
       case 0:
@@ -324,7 +352,7 @@ getargs (int argc, char *argv[])
        break;
 
       case 'y':
        break;
 
       case 'y':
-       yacc_flag = 1;
+       yacc_flag = true;
        break;
 
       case 'h':
        break;
 
       case 'h':
@@ -336,8 +364,9 @@ getargs (int argc, char *argv[])
 
       case 'g':
        /* Here, the -g and --graph=FILE options are differentiated.  */
 
       case 'g':
        /* Here, the -g and --graph=FILE options are differentiated.  */
-       graph_flag = 1;
-       spec_graph_file = AS_FILE_NAME (optarg);
+       graph_flag = true;
+       if (optarg)
+         spec_graph_file = AS_FILE_NAME (optarg);
        break;
 
       case 'v':
        break;
 
       case 'v':
@@ -354,25 +383,29 @@ getargs (int argc, char *argv[])
 
       case 'd':
        /* Here, the -d and --defines options are differentiated.  */
 
       case 'd':
        /* Here, the -d and --defines options are differentiated.  */
-       defines_flag = 1;
+       defines_flag = true;
        if (optarg)
          spec_defines_file = AS_FILE_NAME (optarg);
        break;
 
       case 'l':
        if (optarg)
          spec_defines_file = AS_FILE_NAME (optarg);
        break;
 
       case 'l':
-       no_lines_flag = 1;
+       no_lines_flag = true;
+       break;
+
+      case LOCATIONS_OPTION:
+       locations_flag = true;
        break;
 
       case 'k':
        break;
 
       case 'k':
-       token_table_flag = 1;
+       token_table_flag = true;
        break;
 
       case 'n':
        break;
 
       case 'n':
-       no_parser_flag = 1;
+       no_parser_flag = true;
        break;
 
       case 't':
        break;
 
       case 't':
-       debug_flag = 1;
+       debug_flag = true;
        break;
 
       case 'o':
        break;
 
       case 'o':
@@ -408,5 +441,5 @@ getargs (int argc, char *argv[])
       usage (EXIT_FAILURE);
     }
 
       usage (EXIT_FAILURE);
     }
 
-  current_file = grammar_file = struniq_new (argv[optind]);
+  current_file = grammar_file = uniqstr_new (argv[optind]);
 }
 }