+
+/*------------------------------.
+| Display the version message. |
+`------------------------------*/
+
+static void
+version (FILE *stream)
+{
+ /* Some efforts were made to ease the translators' task, please
+ continue. */
+ fprintf (stream, _("bison (GNU Bison) %s"), VERSION);
+ putc ('\n', stream);
+ fputs (_("Written by Robert Corbett and Richard Stallman.\n"), stream);
+ putc ('\n', stream);
+
+ fprintf (stream,
+ _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2002);
+
+ fputs (_("\
+This is free software; see the source for copying conditions. There is NO\n\
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
+"),
+ stream);
+}
+
+
+/*----------------------.
+| Process the options. |
+`----------------------*/
+
+/* Shorts options. */
+const char *short_options = "yvegdhr:ltknVo:b:p:S:T::";
+
+static struct option const long_options[] =
+{
+ /* Operation modes. */
+ { "help", no_argument, 0, 'h' },
+ { "version", no_argument, 0, 'V' },
+
+ /* Parser. */
+ { "name-prefix", required_argument, 0, 'p' },
+ { "include", required_argument, 0, 'I' },
+
+ /* Output. */
+ { "file-prefix", required_argument, 0, 'b' },
+ { "output", required_argument, 0, 'o' },
+ { "output-file", required_argument, 0, 'o' },
+ { "graph", optional_argument, 0, 'g' },
+ { "report", required_argument, 0, 'r' },
+ { "verbose", no_argument, 0, 'v' },
+
+ /* 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' },
+
+ /* Operation modes. */
+ { "fixed-output-files", no_argument, 0, 'y' },
+ { "yacc", no_argument, 0, 'y' },
+
+ /* Parser. */
+ { "debug", no_argument, 0, 't' },
+ { "locations", no_argument, &locations_flag, 1 },
+ { "no-lines", no_argument, 0, 'l' },
+ { "no-parser", no_argument, 0, 'n' },
+ { "raw", no_argument, 0, 0 },
+ { "skeleton", required_argument, 0, 'S' },
+ { "token-table", no_argument, 0, 'k' },
+
+ {0, 0, 0, 0}
+};
+
+/* Under DOS, there is no difference on the case. This can be
+ troublesome when looking for `.tab' etc. */
+#ifdef MSDOS
+# define AS_FILE_NAME(File) (strlwr (File), (File))
+#else
+# define AS_FILE_NAME(File) (File)
+#endif
+