]> git.saurik.com Git - bison.git/blobdiff - src/getargs.c
(nullable_compute): Use abort rather than assert.
[bison.git] / src / getargs.c
index fc8ac9b996e3ba6723670968254bfef821e11694..b9a30698e5db7ffbec5d7dae978bd027433e4920 100644 (file)
@@ -1,5 +1,5 @@
 /* Parse command line arguments for bison.
 /* Parse command line arguments for bison.
-   Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002
+   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002
    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.
@@ -24,6 +24,7 @@
 #include "argmatch.h"
 #include "error.h"
 #include "complain.h"
 #include "argmatch.h"
 #include "error.h"
 #include "complain.h"
+#include "struniq.h"
 #include "getargs.h"
 #include "files.h"
 
 #include "getargs.h"
 #include "files.h"
 
@@ -53,15 +54,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
 };
@@ -76,8 +78,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
 };
 
@@ -85,7 +88,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, ",");
@@ -136,7 +139,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
     {
@@ -155,6 +158,8 @@ report_argmatch (char *args)
 | Display the help message and exit STATUS.  |
 `-------------------------------------------*/
 
 | Display the help message and exit STATUS.  |
 `-------------------------------------------*/
 
+static void usage (int) ATTRIBUTE_NORETURN;
+
 static void
 usage (int status)
 {
 static void
 usage (int status)
 {
@@ -281,18 +286,6 @@ static struct option const long_options[] =
   /* Hidden. */
   { "trace",         optional_argument,   0,     'T' },
 
   /* Hidden. */
   { "trace",         optional_argument,   0,     'T' },
 
-  /* FIXME: semantic parsers will output an `include' of an
-     output file: be sure that the naem included is indeed the name of
-     the output file.  */ /* FIXME Should we activate this options ?
-     */
-  { "output",      required_argument,     0, 'o' },
-  { "file-prefix", required_argument,     0, 'b' },
-  { "name-prefix", required_argument,     0, 'p' },
-
-  /*
-   * Percent and command line declarations.
-   */
-
   /* Output.  */
   { "defines",     optional_argument,   0,   'd' },
 
   /* Output.  */
   { "defines",     optional_argument,   0,   'd' },
 
@@ -337,11 +330,11 @@ getargs (int argc, char *argv[])
        break;
 
       case 'h':
        break;
 
       case 'h':
-       usage (0);
+       usage (EXIT_SUCCESS);
 
       case 'V':
        version ();
 
       case 'V':
        version ();
-       exit (0);
+       exit (EXIT_SUCCESS);
 
       case 'g':
        /* Here, the -g and --graph=FILE options are differentiated.  */
 
       case 'g':
        /* Here, the -g and --graph=FILE options are differentiated.  */
@@ -405,18 +398,17 @@ getargs (int argc, char *argv[])
        break;
 
       default:
        break;
 
       default:
-       fprintf (stderr, _("Try `%s --help' for more information.\n"),
-                program_name);
-       exit (1);
+       usage (EXIT_FAILURE);
       }
 
       }
 
-  if (optind != argc - 1)
+  if (argc - optind != 1)
     {
     {
-      error (0, 0,
-            (optind == argc
-             ? _("too few arguments") : _("too many arguments")));
+      if (argc - optind < 1)
+       error (0, 0, _("missing operand after `%s'"), argv[argc - 1]);
+      else
+       error (0, 0, _("extra operand `%s'"), argv[optind + 1]);
       usage (EXIT_FAILURE);
     }
 
       usage (EXIT_FAILURE);
     }
 
-  infile = argv[optind];
+  current_file = grammar_file = struniq_new (argv[optind]);
 }
 }