-/* Parse command line arguments for bison.
- Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002
+/* Parse command line arguments for Bison.
+
+ Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
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 "getargs.h"
#include "files.h"
+#include "getargs.h"
+#include "uniqstr.h"
int debug_flag = 0;
int defines_flag = 0;
/* 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.",
- "time - time consumption",
"tools - m4 invocation and preserve the temporary file",
+ "skeleton - skeleton postprocessing",
+ "time - time consumption",
"all - all of the above",
0
};
trace_grammar,
trace_resource,
trace_sets,
- trace_time,
trace_tools,
+ trace_skeleton,
+ trace_time,
trace_all
};
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, ",");
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
{
| Display the help message and exit STATUS. |
`-------------------------------------------*/
+static void usage (int) ATTRIBUTE_NORETURN;
+
static void
usage (int status)
{
putc ('\n', stdout);
fprintf (stdout,
- _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2002);
+ _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2003);
fputs (_("\
This is free software; see the source for copying conditions. There is NO\n\
/* 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' },
{
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:
break;
case 'h':
- usage (0);
+ usage (EXIT_SUCCESS);
case 'V':
version ();
- exit (0);
+ exit (EXIT_SUCCESS);
case 'g':
/* Here, the -g and --graph=FILE options are differentiated. */
graph_flag = 1;
- spec_graph_file = AS_FILE_NAME (optarg);
+ if (optarg)
+ spec_graph_file = AS_FILE_NAME (optarg);
break;
case 'v':
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);
}
- infile = argv[optind];
+ current_file = grammar_file = uniqstr_new (argv[optind]);
}